From 9e1c02838ed6fba1d492d1c22a86018d2342695d Mon Sep 17 00:00:00 2001 From: lotodore Date: Tue, 30 Apr 2013 12:14:23 +0200 Subject: [PATCH 001/128] Remove forward declaration, as the include is there anyway... --- src/gui/qt/sound/sdlplayer.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/gui/qt/sound/sdlplayer.h b/src/gui/qt/sound/sdlplayer.h index 61760c5d..eaae9859 100644 --- a/src/gui/qt/sound/sdlplayer.h +++ b/src/gui/qt/sound/sdlplayer.h @@ -42,8 +42,6 @@ #include #endif -struct Mix_Chunk; - /** @author FThauer FHammer */ From f739c20cc5b04ccc24af185a2b70ed86d5479841 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 8 Jun 2013 19:36:04 +0200 Subject: [PATCH 002/128] Updating to newer release of protobuf. --- src/third_party/protobuf/pokerth.pb.cc | 3869 +- src/third_party/protobuf/pokerth.pb.h | 6531 +- tests/src/de/pokerth/protocol/ProtoBuf.java | 56828 +++++++++++------- 3 files changed, 42385 insertions(+), 24843 deletions(-) diff --git a/src/third_party/protobuf/pokerth.pb.cc b/src/third_party/protobuf/pokerth.pb.cc index 4a32f390..43921e79 100644 --- a/src/third_party/protobuf/pokerth.pb.cc +++ b/src/third_party/protobuf/pokerth.pb.cc @@ -1,10 +1,12 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! +// source: pokerth.proto #define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION #include "pokerth.pb.h" #include +#include #include #include #include @@ -104,12 +106,18 @@ void protobuf_ShutdownFile_pokerth_2eproto() { delete PokerTHMessage::default_instance_; } +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER +void protobuf_AddDesc_pokerth_2eproto_impl() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + +#else void protobuf_AddDesc_pokerth_2eproto() { static bool already_here = false; if (already_here) return; already_here = true; GOOGLE_PROTOBUF_VERIFY_VERSION; +#endif NetGameInfo::default_instance_ = new NetGameInfo(); PlayerResult::default_instance_ = new PlayerResult(); AnnounceMessage::default_instance_ = new AnnounceMessage(); @@ -295,13 +303,20 @@ void protobuf_AddDesc_pokerth_2eproto() { ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_pokerth_2eproto); } +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER +GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AddDesc_pokerth_2eproto_once_); +void protobuf_AddDesc_pokerth_2eproto() { + ::google::protobuf::::google::protobuf::GoogleOnceInit(&protobuf_AddDesc_pokerth_2eproto_once_, + &protobuf_AddDesc_pokerth_2eproto_impl); +} +#else // Force AddDescriptors() to be called at static initialization time. struct StaticDescriptorInitializer_pokerth_2eproto { StaticDescriptorInitializer_pokerth_2eproto() { protobuf_AddDesc_pokerth_2eproto(); } } static_descriptor_initializer_pokerth_2eproto_; - +#endif bool NetGameMode_IsValid(int value) { switch(value) { case 1: @@ -492,7 +507,11 @@ void NetGameInfo::SharedDtor() { if (gamename_ != &::google::protobuf::internal::kEmptyString) { delete gamename_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -502,7 +521,12 @@ void NetGameInfo::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const NetGameInfo& NetGameInfo::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } NetGameInfo* NetGameInfo::default_instance_ = NULL; @@ -555,7 +579,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_netGameType; break; } - + // required .NetGameInfo.NetGameType netGameType = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -574,7 +598,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_maxNumPlayers; break; } - + // required uint32 maxNumPlayers = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -590,7 +614,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_raiseIntervalMode; break; } - + // required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -609,7 +633,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectTag(40)) goto parse_raiseEveryHands; break; } - + // optional uint32 raiseEveryHands = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -625,7 +649,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectTag(48)) goto parse_raiseEveryMinutes; break; } - + // optional uint32 raiseEveryMinutes = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -641,7 +665,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectTag(56)) goto parse_endRaiseMode; break; } - + // required .NetGameInfo.EndRaiseMode endRaiseMode = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -660,7 +684,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectTag(64)) goto parse_endRaiseSmallBlindValue; break; } - + // optional uint32 endRaiseSmallBlindValue = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -676,7 +700,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectTag(72)) goto parse_proposedGuiSpeed; break; } - + // required uint32 proposedGuiSpeed = 9; case 9: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -692,7 +716,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectTag(80)) goto parse_delayBetweenHands; break; } - + // required uint32 delayBetweenHands = 10; case 10: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -708,7 +732,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectTag(88)) goto parse_playerActionTimeout; break; } - + // required uint32 playerActionTimeout = 11; case 11: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -724,7 +748,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectTag(96)) goto parse_firstSmallBlind; break; } - + // required uint32 firstSmallBlind = 12; case 12: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -740,7 +764,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectTag(104)) goto parse_startMoney; break; } - + // required uint32 startMoney = 13; case 13: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -756,7 +780,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectTag(114)) goto parse_manualBlinds; break; } - + // repeated uint32 manualBlinds = 14 [packed = true]; case 14: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -777,7 +801,7 @@ bool NetGameInfo::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -800,70 +824,70 @@ void NetGameInfo::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->gamename(), output); } - + // required .NetGameInfo.NetGameType netGameType = 2; if (has_netgametype()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->netgametype(), output); } - + // required uint32 maxNumPlayers = 3; if (has_maxnumplayers()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->maxnumplayers(), output); } - + // required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; if (has_raiseintervalmode()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 4, this->raiseintervalmode(), output); } - + // optional uint32 raiseEveryHands = 5; if (has_raiseeveryhands()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->raiseeveryhands(), output); } - + // optional uint32 raiseEveryMinutes = 6; if (has_raiseeveryminutes()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(6, this->raiseeveryminutes(), output); } - + // required .NetGameInfo.EndRaiseMode endRaiseMode = 7; if (has_endraisemode()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 7, this->endraisemode(), output); } - + // optional uint32 endRaiseSmallBlindValue = 8; if (has_endraisesmallblindvalue()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(8, this->endraisesmallblindvalue(), output); } - + // required uint32 proposedGuiSpeed = 9; if (has_proposedguispeed()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(9, this->proposedguispeed(), output); } - + // required uint32 delayBetweenHands = 10; if (has_delaybetweenhands()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(10, this->delaybetweenhands(), output); } - + // required uint32 playerActionTimeout = 11; if (has_playeractiontimeout()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(11, this->playeractiontimeout(), output); } - + // required uint32 firstSmallBlind = 12; if (has_firstsmallblind()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(12, this->firstsmallblind(), output); } - + // required uint32 startMoney = 13; if (has_startmoney()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(13, this->startmoney(), output); } - + // repeated uint32 manualBlinds = 14 [packed = true]; if (this->manualblinds_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(14, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); @@ -873,12 +897,12 @@ void NetGameInfo::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag( this->manualblinds(i), output); } - + } int NetGameInfo::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string gameName = 1; if (has_gamename()) { @@ -886,53 +910,53 @@ int NetGameInfo::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->gamename()); } - + // required .NetGameInfo.NetGameType netGameType = 2; if (has_netgametype()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->netgametype()); } - + // required uint32 maxNumPlayers = 3; if (has_maxnumplayers()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->maxnumplayers()); } - + // required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; if (has_raiseintervalmode()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->raiseintervalmode()); } - + // optional uint32 raiseEveryHands = 5; if (has_raiseeveryhands()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->raiseeveryhands()); } - + // optional uint32 raiseEveryMinutes = 6; if (has_raiseeveryminutes()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->raiseeveryminutes()); } - + // required .NetGameInfo.EndRaiseMode endRaiseMode = 7; if (has_endraisemode()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->endraisemode()); } - + // optional uint32 endRaiseSmallBlindValue = 8; if (has_endraisesmallblindvalue()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->endraisesmallblindvalue()); } - + } if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { // required uint32 proposedGuiSpeed = 9; @@ -941,35 +965,35 @@ int NetGameInfo::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->proposedguispeed()); } - + // required uint32 delayBetweenHands = 10; if (has_delaybetweenhands()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->delaybetweenhands()); } - + // required uint32 playerActionTimeout = 11; if (has_playeractiontimeout()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playeractiontimeout()); } - + // required uint32 firstSmallBlind = 12; if (has_firstsmallblind()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->firstsmallblind()); } - + // required uint32 startMoney = 13; if (has_startmoney()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->startmoney()); } - + } // repeated uint32 manualBlinds = 14 [packed = true]; { @@ -982,10 +1006,12 @@ int NetGameInfo::ByteSize() const { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _manualblinds_cached_byte_size_ = data_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); total_size += data_size; } - + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -1053,7 +1079,7 @@ void NetGameInfo::CopyFrom(const NetGameInfo& from) { bool NetGameInfo::IsInitialized() const { if ((_has_bits_[0] & 0x00001f4f) != 0x00001f4f) return false; - + return true; } @@ -1125,7 +1151,11 @@ PlayerResult::~PlayerResult() { } void PlayerResult::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -1135,7 +1165,12 @@ void PlayerResult::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const PlayerResult& PlayerResult::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } PlayerResult* PlayerResult::default_instance_ = NULL; @@ -1177,7 +1212,7 @@ bool PlayerResult::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_resultCard1; break; } - + // required uint32 resultCard1 = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1193,7 +1228,7 @@ bool PlayerResult::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_resultCard2; break; } - + // required uint32 resultCard2 = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1209,7 +1244,7 @@ bool PlayerResult::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_bestHandPosition; break; } - + // repeated uint32 bestHandPosition = 4 [packed = true]; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1230,7 +1265,7 @@ bool PlayerResult::MergePartialFromCodedStream( if (input->ExpectTag(40)) goto parse_moneyWon; break; } - + // required uint32 moneyWon = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1246,7 +1281,7 @@ bool PlayerResult::MergePartialFromCodedStream( if (input->ExpectTag(48)) goto parse_playerMoney; break; } - + // required uint32 playerMoney = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1262,7 +1297,7 @@ bool PlayerResult::MergePartialFromCodedStream( if (input->ExpectTag(56)) goto parse_cardsValue; break; } - + // optional uint32 cardsValue = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1278,7 +1313,7 @@ bool PlayerResult::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1300,17 +1335,17 @@ void PlayerResult::SerializeWithCachedSizes( if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->playerid(), output); } - + // required uint32 resultCard1 = 2; if (has_resultcard1()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->resultcard1(), output); } - + // required uint32 resultCard2 = 3; if (has_resultcard2()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->resultcard2(), output); } - + // repeated uint32 bestHandPosition = 4 [packed = true]; if (this->besthandposition_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(4, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); @@ -1320,27 +1355,27 @@ void PlayerResult::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag( this->besthandposition(i), output); } - + // required uint32 moneyWon = 5; if (has_moneywon()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->moneywon(), output); } - + // required uint32 playerMoney = 6; if (has_playermoney()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(6, this->playermoney(), output); } - + // optional uint32 cardsValue = 7; if (has_cardsvalue()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(7, this->cardsvalue(), output); } - + } int PlayerResult::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 playerId = 1; if (has_playerid()) { @@ -1348,42 +1383,42 @@ int PlayerResult::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // required uint32 resultCard1 = 2; if (has_resultcard1()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->resultcard1()); } - + // required uint32 resultCard2 = 3; if (has_resultcard2()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->resultcard2()); } - + // required uint32 moneyWon = 5; if (has_moneywon()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->moneywon()); } - + // required uint32 playerMoney = 6; if (has_playermoney()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playermoney()); } - + // optional uint32 cardsValue = 7; if (has_cardsvalue()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->cardsvalue()); } - + } // repeated uint32 bestHandPosition = 4 [packed = true]; { @@ -1396,10 +1431,12 @@ int PlayerResult::ByteSize() const { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _besthandposition_cached_byte_size_ = data_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); total_size += data_size; } - + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -1444,7 +1481,7 @@ void PlayerResult::CopyFrom(const PlayerResult& from) { bool PlayerResult::IsInitialized() const { if ((_has_bits_[0] & 0x00000037) != 0x00000037) return false; - + return true; } @@ -1519,7 +1556,11 @@ AnnounceMessage_Version::~AnnounceMessage_Version() { } void AnnounceMessage_Version::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -1529,7 +1570,12 @@ void AnnounceMessage_Version::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AnnounceMessage_Version& AnnounceMessage_Version::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AnnounceMessage_Version* AnnounceMessage_Version::default_instance_ = NULL; @@ -1566,7 +1612,7 @@ bool AnnounceMessage_Version::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_minorVersion; break; } - + // required uint32 minorVersion = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1582,7 +1628,7 @@ bool AnnounceMessage_Version::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1604,17 +1650,17 @@ void AnnounceMessage_Version::SerializeWithCachedSizes( if (has_majorversion()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->majorversion(), output); } - + // required uint32 minorVersion = 2; if (has_minorversion()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->minorversion(), output); } - + } int AnnounceMessage_Version::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 majorVersion = 1; if (has_majorversion()) { @@ -1622,14 +1668,14 @@ int AnnounceMessage_Version::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->majorversion()); } - + // required uint32 minorVersion = 2; if (has_minorversion()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->minorversion()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -1662,7 +1708,7 @@ void AnnounceMessage_Version::CopyFrom(const AnnounceMessage_Version& from) { bool AnnounceMessage_Version::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -1696,8 +1742,18 @@ AnnounceMessage::AnnounceMessage() } void AnnounceMessage::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protocolversion_ = const_cast< ::AnnounceMessage_Version*>( + ::AnnounceMessage_Version::internal_default_instance()); +#else protocolversion_ = const_cast< ::AnnounceMessage_Version*>(&::AnnounceMessage_Version::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + latestgameversion_ = const_cast< ::AnnounceMessage_Version*>( + ::AnnounceMessage_Version::internal_default_instance()); +#else latestgameversion_ = const_cast< ::AnnounceMessage_Version*>(&::AnnounceMessage_Version::default_instance()); +#endif } AnnounceMessage::AnnounceMessage(const AnnounceMessage& from) @@ -1721,7 +1777,11 @@ AnnounceMessage::~AnnounceMessage() { } void AnnounceMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif delete protocolversion_; delete latestgameversion_; } @@ -1733,7 +1793,12 @@ void AnnounceMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AnnounceMessage& AnnounceMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AnnounceMessage* AnnounceMessage::default_instance_ = NULL; @@ -1775,7 +1840,7 @@ bool AnnounceMessage::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_latestGameVersion; break; } - + // required .AnnounceMessage.Version latestGameVersion = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1789,7 +1854,7 @@ bool AnnounceMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_latestBetaRevision; break; } - + // required uint32 latestBetaRevision = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1805,7 +1870,7 @@ bool AnnounceMessage::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_serverType; break; } - + // required .AnnounceMessage.ServerType serverType = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1824,7 +1889,7 @@ bool AnnounceMessage::MergePartialFromCodedStream( if (input->ExpectTag(40)) goto parse_numPlayersOnServer; break; } - + // required uint32 numPlayersOnServer = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1840,7 +1905,7 @@ bool AnnounceMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -1863,34 +1928,34 @@ void AnnounceMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessage( 1, this->protocolversion(), output); } - + // required .AnnounceMessage.Version latestGameVersion = 2; if (has_latestgameversion()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 2, this->latestgameversion(), output); } - + // required uint32 latestBetaRevision = 3; if (has_latestbetarevision()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->latestbetarevision(), output); } - + // required .AnnounceMessage.ServerType serverType = 4; if (has_servertype()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 4, this->servertype(), output); } - + // required uint32 numPlayersOnServer = 5; if (has_numplayersonserver()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->numplayersonserver(), output); } - + } int AnnounceMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .AnnounceMessage.Version protocolVersion = 1; if (has_protocolversion()) { @@ -1898,34 +1963,34 @@ int AnnounceMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->protocolversion()); } - + // required .AnnounceMessage.Version latestGameVersion = 2; if (has_latestgameversion()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->latestgameversion()); } - + // required uint32 latestBetaRevision = 3; if (has_latestbetarevision()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->latestbetarevision()); } - + // required .AnnounceMessage.ServerType serverType = 4; if (has_servertype()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->servertype()); } - + // required uint32 numPlayersOnServer = 5; if (has_numplayersonserver()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->numplayersonserver()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -1967,7 +2032,7 @@ void AnnounceMessage::CopyFrom(const AnnounceMessage& from) { bool AnnounceMessage::IsInitialized() const { if ((_has_bits_[0] & 0x0000001f) != 0x0000001f) return false; - + if (has_protocolversion()) { if (!this->protocolversion().IsInitialized()) return false; } @@ -2032,7 +2097,12 @@ InitMessage::InitMessage() } void InitMessage::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + requestedversion_ = const_cast< ::AnnounceMessage_Version*>( + ::AnnounceMessage_Version::internal_default_instance()); +#else requestedversion_ = const_cast< ::AnnounceMessage_Version*>(&::AnnounceMessage_Version::default_instance()); +#endif } InitMessage::InitMessage(const InitMessage& from) @@ -2074,7 +2144,11 @@ void InitMessage::SharedDtor() { if (avatarhash_ != &::google::protobuf::internal::kEmptyString) { delete avatarhash_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif delete requestedversion_; } } @@ -2085,7 +2159,12 @@ void InitMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const InitMessage& InitMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } InitMessage* InitMessage::default_instance_ = NULL; @@ -2148,7 +2227,7 @@ bool InitMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_buildId; break; } - + // required uint32 buildId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2164,7 +2243,7 @@ bool InitMessage::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_myLastSessionId; break; } - + // optional bytes myLastSessionId = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2178,7 +2257,7 @@ bool InitMessage::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_authServerPassword; break; } - + // optional string authServerPassword = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2192,7 +2271,7 @@ bool InitMessage::MergePartialFromCodedStream( if (input->ExpectTag(40)) goto parse_login; break; } - + // required .InitMessage.LoginType login = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2211,7 +2290,7 @@ bool InitMessage::MergePartialFromCodedStream( if (input->ExpectTag(50)) goto parse_nickName; break; } - + // optional string nickName = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2225,7 +2304,7 @@ bool InitMessage::MergePartialFromCodedStream( if (input->ExpectTag(58)) goto parse_clientUserData; break; } - + // optional bytes clientUserData = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2239,7 +2318,7 @@ bool InitMessage::MergePartialFromCodedStream( if (input->ExpectTag(66)) goto parse_avatarHash; break; } - + // optional bytes avatarHash = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2253,7 +2332,7 @@ bool InitMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2276,53 +2355,53 @@ void InitMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessage( 1, this->requestedversion(), output); } - + // required uint32 buildId = 2; if (has_buildid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->buildid(), output); } - + // optional bytes myLastSessionId = 3; if (has_mylastsessionid()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 3, this->mylastsessionid(), output); } - + // optional string authServerPassword = 4; if (has_authserverpassword()) { ::google::protobuf::internal::WireFormatLite::WriteString( 4, this->authserverpassword(), output); } - + // required .InitMessage.LoginType login = 5; if (has_login()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 5, this->login(), output); } - + // optional string nickName = 6; if (has_nickname()) { ::google::protobuf::internal::WireFormatLite::WriteString( 6, this->nickname(), output); } - + // optional bytes clientUserData = 7; if (has_clientuserdata()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 7, this->clientuserdata(), output); } - + // optional bytes avatarHash = 8; if (has_avatarhash()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 8, this->avatarhash(), output); } - + } int InitMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .AnnounceMessage.Version requestedVersion = 1; if (has_requestedversion()) { @@ -2330,55 +2409,55 @@ int InitMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->requestedversion()); } - + // required uint32 buildId = 2; if (has_buildid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->buildid()); } - + // optional bytes myLastSessionId = 3; if (has_mylastsessionid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->mylastsessionid()); } - + // optional string authServerPassword = 4; if (has_authserverpassword()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->authserverpassword()); } - + // required .InitMessage.LoginType login = 5; if (has_login()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->login()); } - + // optional string nickName = 6; if (has_nickname()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->nickname()); } - + // optional bytes clientUserData = 7; if (has_clientuserdata()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->clientuserdata()); } - + // optional bytes avatarHash = 8; if (has_avatarhash()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->avatarhash()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -2429,7 +2508,7 @@ void InitMessage::CopyFrom(const InitMessage& from) { bool InitMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000013) != 0x00000013) return false; - + if (has_requestedversion()) { if (!this->requestedversion().IsInitialized()) return false; } @@ -2490,7 +2569,11 @@ void AuthServerChallengeMessage::SharedDtor() { if (serverchallenge_ != &::google::protobuf::internal::kEmptyString) { delete serverchallenge_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -2500,7 +2583,12 @@ void AuthServerChallengeMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AuthServerChallengeMessage& AuthServerChallengeMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AuthServerChallengeMessage* AuthServerChallengeMessage::default_instance_ = NULL; @@ -2538,7 +2626,7 @@ bool AuthServerChallengeMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2561,12 +2649,12 @@ void AuthServerChallengeMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteBytes( 1, this->serverchallenge(), output); } - + } int AuthServerChallengeMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required bytes serverChallenge = 1; if (has_serverchallenge()) { @@ -2574,7 +2662,7 @@ int AuthServerChallengeMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::BytesSize( this->serverchallenge()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -2604,7 +2692,7 @@ void AuthServerChallengeMessage::CopyFrom(const AuthServerChallengeMessage& from bool AuthServerChallengeMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -2655,7 +2743,11 @@ void AuthClientResponseMessage::SharedDtor() { if (clientresponse_ != &::google::protobuf::internal::kEmptyString) { delete clientresponse_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -2665,7 +2757,12 @@ void AuthClientResponseMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AuthClientResponseMessage& AuthClientResponseMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AuthClientResponseMessage* AuthClientResponseMessage::default_instance_ = NULL; @@ -2703,7 +2800,7 @@ bool AuthClientResponseMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2726,12 +2823,12 @@ void AuthClientResponseMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteBytes( 1, this->clientresponse(), output); } - + } int AuthClientResponseMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required bytes clientResponse = 1; if (has_clientresponse()) { @@ -2739,7 +2836,7 @@ int AuthClientResponseMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::BytesSize( this->clientresponse()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -2769,7 +2866,7 @@ void AuthClientResponseMessage::CopyFrom(const AuthClientResponseMessage& from) bool AuthClientResponseMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -2820,7 +2917,11 @@ void AuthServerVerificationMessage::SharedDtor() { if (serververification_ != &::google::protobuf::internal::kEmptyString) { delete serververification_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -2830,7 +2931,12 @@ void AuthServerVerificationMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AuthServerVerificationMessage& AuthServerVerificationMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AuthServerVerificationMessage* AuthServerVerificationMessage::default_instance_ = NULL; @@ -2868,7 +2974,7 @@ bool AuthServerVerificationMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -2891,12 +2997,12 @@ void AuthServerVerificationMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteBytes( 1, this->serververification(), output); } - + } int AuthServerVerificationMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required bytes serverVerification = 1; if (has_serververification()) { @@ -2904,7 +3010,7 @@ int AuthServerVerificationMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::BytesSize( this->serververification()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -2934,7 +3040,7 @@ void AuthServerVerificationMessage::CopyFrom(const AuthServerVerificationMessage bool AuthServerVerificationMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -2994,7 +3100,11 @@ void InitAckMessage::SharedDtor() { if (youravatarhash_ != &::google::protobuf::internal::kEmptyString) { delete youravatarhash_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -3004,7 +3114,12 @@ void InitAckMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const InitAckMessage& InitAckMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } InitAckMessage* InitAckMessage::default_instance_ = NULL; @@ -3049,7 +3164,7 @@ bool InitAckMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_yourPlayerId; break; } - + // required uint32 yourPlayerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3065,7 +3180,7 @@ bool InitAckMessage::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_yourAvatarHash; break; } - + // optional bytes yourAvatarHash = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3079,7 +3194,7 @@ bool InitAckMessage::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_rejoinGameId; break; } - + // optional uint32 rejoinGameId = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3095,7 +3210,7 @@ bool InitAckMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3118,28 +3233,28 @@ void InitAckMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteBytes( 1, this->yoursessionid(), output); } - + // required uint32 yourPlayerId = 2; if (has_yourplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->yourplayerid(), output); } - + // optional bytes yourAvatarHash = 3; if (has_youravatarhash()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 3, this->youravatarhash(), output); } - + // optional uint32 rejoinGameId = 4; if (has_rejoingameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->rejoingameid(), output); } - + } int InitAckMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required bytes yourSessionId = 1; if (has_yoursessionid()) { @@ -3147,28 +3262,28 @@ int InitAckMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::BytesSize( this->yoursessionid()); } - + // required uint32 yourPlayerId = 2; if (has_yourplayerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->yourplayerid()); } - + // optional bytes yourAvatarHash = 3; if (has_youravatarhash()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->youravatarhash()); } - + // optional uint32 rejoinGameId = 4; if (has_rejoingameid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->rejoingameid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -3207,7 +3322,7 @@ void InitAckMessage::CopyFrom(const InitAckMessage& from) { bool InitAckMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -3263,7 +3378,11 @@ void AvatarRequestMessage::SharedDtor() { if (avatarhash_ != &::google::protobuf::internal::kEmptyString) { delete avatarhash_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -3273,7 +3392,12 @@ void AvatarRequestMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AvatarRequestMessage& AvatarRequestMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AvatarRequestMessage* AvatarRequestMessage::default_instance_ = NULL; @@ -3314,7 +3438,7 @@ bool AvatarRequestMessage::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_avatarHash; break; } - + // required bytes avatarHash = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3328,7 +3452,7 @@ bool AvatarRequestMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3350,18 +3474,18 @@ void AvatarRequestMessage::SerializeWithCachedSizes( if (has_requestid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->requestid(), output); } - + // required bytes avatarHash = 2; if (has_avatarhash()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 2, this->avatarhash(), output); } - + } int AvatarRequestMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 requestId = 1; if (has_requestid()) { @@ -3369,14 +3493,14 @@ int AvatarRequestMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->requestid()); } - + // required bytes avatarHash = 2; if (has_avatarhash()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->avatarhash()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -3409,7 +3533,7 @@ void AvatarRequestMessage::CopyFrom(const AvatarRequestMessage& from) { bool AvatarRequestMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -3462,7 +3586,11 @@ AvatarHeaderMessage::~AvatarHeaderMessage() { } void AvatarHeaderMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -3472,7 +3600,12 @@ void AvatarHeaderMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AvatarHeaderMessage& AvatarHeaderMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AvatarHeaderMessage* AvatarHeaderMessage::default_instance_ = NULL; @@ -3510,7 +3643,7 @@ bool AvatarHeaderMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_avatarType; break; } - + // required .NetAvatarType avatarType = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3520,8 +3653,8 @@ bool AvatarHeaderMessage::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (NetAvatarType_IsValid(value)) { - set_avatartype(static_cast< NetAvatarType >(value)); + if (::NetAvatarType_IsValid(value)) { + set_avatartype(static_cast< ::NetAvatarType >(value)); } } else { goto handle_uninterpreted; @@ -3529,7 +3662,7 @@ bool AvatarHeaderMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_avatarSize; break; } - + // required uint32 avatarSize = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3545,7 +3678,7 @@ bool AvatarHeaderMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3567,23 +3700,23 @@ void AvatarHeaderMessage::SerializeWithCachedSizes( if (has_requestid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->requestid(), output); } - + // required .NetAvatarType avatarType = 2; if (has_avatartype()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->avatartype(), output); } - + // required uint32 avatarSize = 3; if (has_avatarsize()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->avatarsize(), output); } - + } int AvatarHeaderMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 requestId = 1; if (has_requestid()) { @@ -3591,20 +3724,20 @@ int AvatarHeaderMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->requestid()); } - + // required .NetAvatarType avatarType = 2; if (has_avatartype()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->avatartype()); } - + // required uint32 avatarSize = 3; if (has_avatarsize()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->avatarsize()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -3640,7 +3773,7 @@ void AvatarHeaderMessage::CopyFrom(const AvatarHeaderMessage& from) { bool AvatarHeaderMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -3695,7 +3828,11 @@ void AvatarDataMessage::SharedDtor() { if (avatarblock_ != &::google::protobuf::internal::kEmptyString) { delete avatarblock_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -3705,7 +3842,12 @@ void AvatarDataMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AvatarDataMessage& AvatarDataMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AvatarDataMessage* AvatarDataMessage::default_instance_ = NULL; @@ -3746,7 +3888,7 @@ bool AvatarDataMessage::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_avatarBlock; break; } - + // required bytes avatarBlock = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3760,7 +3902,7 @@ bool AvatarDataMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3782,18 +3924,18 @@ void AvatarDataMessage::SerializeWithCachedSizes( if (has_requestid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->requestid(), output); } - + // required bytes avatarBlock = 2; if (has_avatarblock()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 2, this->avatarblock(), output); } - + } int AvatarDataMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 requestId = 1; if (has_requestid()) { @@ -3801,14 +3943,14 @@ int AvatarDataMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->requestid()); } - + // required bytes avatarBlock = 2; if (has_avatarblock()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->avatarblock()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -3841,7 +3983,7 @@ void AvatarDataMessage::CopyFrom(const AvatarDataMessage& from) { bool AvatarDataMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -3890,7 +4032,11 @@ AvatarEndMessage::~AvatarEndMessage() { } void AvatarEndMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -3900,7 +4046,12 @@ void AvatarEndMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AvatarEndMessage& AvatarEndMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AvatarEndMessage* AvatarEndMessage::default_instance_ = NULL; @@ -3936,7 +4087,7 @@ bool AvatarEndMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -3958,12 +4109,12 @@ void AvatarEndMessage::SerializeWithCachedSizes( if (has_requestid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->requestid(), output); } - + } int AvatarEndMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 requestId = 1; if (has_requestid()) { @@ -3971,7 +4122,7 @@ int AvatarEndMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->requestid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -4001,7 +4152,7 @@ void AvatarEndMessage::CopyFrom(const AvatarEndMessage& from) { bool AvatarEndMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -4049,7 +4200,11 @@ UnknownAvatarMessage::~UnknownAvatarMessage() { } void UnknownAvatarMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -4059,7 +4214,12 @@ void UnknownAvatarMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const UnknownAvatarMessage& UnknownAvatarMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } UnknownAvatarMessage* UnknownAvatarMessage::default_instance_ = NULL; @@ -4095,7 +4255,7 @@ bool UnknownAvatarMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4117,12 +4277,12 @@ void UnknownAvatarMessage::SerializeWithCachedSizes( if (has_requestid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->requestid(), output); } - + } int UnknownAvatarMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 requestId = 1; if (has_requestid()) { @@ -4130,7 +4290,7 @@ int UnknownAvatarMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->requestid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -4160,7 +4320,7 @@ void UnknownAvatarMessage::CopyFrom(const UnknownAvatarMessage& from) { bool UnknownAvatarMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -4227,7 +4387,11 @@ PlayerListMessage::~PlayerListMessage() { } void PlayerListMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -4237,7 +4401,12 @@ void PlayerListMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const PlayerListMessage& PlayerListMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } PlayerListMessage* PlayerListMessage::default_instance_ = NULL; @@ -4274,7 +4443,7 @@ bool PlayerListMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerListNotification; break; } - + // required .PlayerListMessage.PlayerListNotification playerListNotification = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4293,7 +4462,7 @@ bool PlayerListMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4315,18 +4484,18 @@ void PlayerListMessage::SerializeWithCachedSizes( if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->playerid(), output); } - + // required .PlayerListMessage.PlayerListNotification playerListNotification = 2; if (has_playerlistnotification()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->playerlistnotification(), output); } - + } int PlayerListMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 playerId = 1; if (has_playerid()) { @@ -4334,13 +4503,13 @@ int PlayerListMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // required .PlayerListMessage.PlayerListNotification playerListNotification = 2; if (has_playerlistnotification()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->playerlistnotification()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -4373,7 +4542,7 @@ void PlayerListMessage::CopyFrom(const PlayerListMessage& from) { bool PlayerListMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -4408,7 +4577,12 @@ GameListNewMessage::GameListNewMessage() } void GameListNewMessage::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gameinfo_ = const_cast< ::NetGameInfo*>( + ::NetGameInfo::internal_default_instance()); +#else gameinfo_ = const_cast< ::NetGameInfo*>(&::NetGameInfo::default_instance()); +#endif } GameListNewMessage::GameListNewMessage(const GameListNewMessage& from) @@ -4432,7 +4606,11 @@ GameListNewMessage::~GameListNewMessage() { } void GameListNewMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif delete gameinfo_; } } @@ -4443,7 +4621,12 @@ void GameListNewMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GameListNewMessage& GameListNewMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GameListNewMessage* GameListNewMessage::default_instance_ = NULL; @@ -4486,7 +4669,7 @@ bool GameListNewMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_gameMode; break; } - + // required .NetGameMode gameMode = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4496,8 +4679,8 @@ bool GameListNewMessage::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (NetGameMode_IsValid(value)) { - set_gamemode(static_cast< NetGameMode >(value)); + if (::NetGameMode_IsValid(value)) { + set_gamemode(static_cast< ::NetGameMode >(value)); } } else { goto handle_uninterpreted; @@ -4505,7 +4688,7 @@ bool GameListNewMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_isPrivate; break; } - + // required bool isPrivate = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4521,7 +4704,7 @@ bool GameListNewMessage::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_playerIds; break; } - + // repeated uint32 playerIds = 4 [packed = true]; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4542,7 +4725,7 @@ bool GameListNewMessage::MergePartialFromCodedStream( if (input->ExpectTag(40)) goto parse_adminPlayerId; break; } - + // required uint32 adminPlayerId = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4558,7 +4741,7 @@ bool GameListNewMessage::MergePartialFromCodedStream( if (input->ExpectTag(50)) goto parse_gameInfo; break; } - + // required .NetGameInfo gameInfo = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4572,7 +4755,7 @@ bool GameListNewMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4594,18 +4777,18 @@ void GameListNewMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required .NetGameMode gameMode = 2; if (has_gamemode()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->gamemode(), output); } - + // required bool isPrivate = 3; if (has_isprivate()) { ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->isprivate(), output); } - + // repeated uint32 playerIds = 4 [packed = true]; if (this->playerids_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(4, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); @@ -4615,23 +4798,23 @@ void GameListNewMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag( this->playerids(i), output); } - + // required uint32 adminPlayerId = 5; if (has_adminplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->adminplayerid(), output); } - + // required .NetGameInfo gameInfo = 6; if (has_gameinfo()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 6, this->gameinfo(), output); } - + } int GameListNewMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -4639,32 +4822,32 @@ int GameListNewMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required .NetGameMode gameMode = 2; if (has_gamemode()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->gamemode()); } - + // required bool isPrivate = 3; if (has_isprivate()) { total_size += 1 + 1; } - + // required uint32 adminPlayerId = 5; if (has_adminplayerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->adminplayerid()); } - + // required .NetGameInfo gameInfo = 6; if (has_gameinfo()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gameinfo()); } - + } // repeated uint32 playerIds = 4 [packed = true]; { @@ -4677,10 +4860,12 @@ int GameListNewMessage::ByteSize() const { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _playerids_cached_byte_size_ = data_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); total_size += data_size; } - + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -4722,7 +4907,7 @@ void GameListNewMessage::CopyFrom(const GameListNewMessage& from) { bool GameListNewMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000037) != 0x00000037) return false; - + if (has_gameinfo()) { if (!this->gameinfo().IsInitialized()) return false; } @@ -4780,7 +4965,11 @@ GameListUpdateMessage::~GameListUpdateMessage() { } void GameListUpdateMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -4790,7 +4979,12 @@ void GameListUpdateMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GameListUpdateMessage& GameListUpdateMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GameListUpdateMessage* GameListUpdateMessage::default_instance_ = NULL; @@ -4827,7 +5021,7 @@ bool GameListUpdateMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_gameMode; break; } - + // required .NetGameMode gameMode = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4837,8 +5031,8 @@ bool GameListUpdateMessage::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (NetGameMode_IsValid(value)) { - set_gamemode(static_cast< NetGameMode >(value)); + if (::NetGameMode_IsValid(value)) { + set_gamemode(static_cast< ::NetGameMode >(value)); } } else { goto handle_uninterpreted; @@ -4846,7 +5040,7 @@ bool GameListUpdateMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -4868,18 +5062,18 @@ void GameListUpdateMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required .NetGameMode gameMode = 2; if (has_gamemode()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->gamemode(), output); } - + } int GameListUpdateMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -4887,13 +5081,13 @@ int GameListUpdateMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required .NetGameMode gameMode = 2; if (has_gamemode()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->gamemode()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -4926,7 +5120,7 @@ void GameListUpdateMessage::CopyFrom(const GameListUpdateMessage& from) { bool GameListUpdateMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -4977,7 +5171,11 @@ GameListPlayerJoinedMessage::~GameListPlayerJoinedMessage() { } void GameListPlayerJoinedMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -4987,7 +5185,12 @@ void GameListPlayerJoinedMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GameListPlayerJoinedMessage& GameListPlayerJoinedMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GameListPlayerJoinedMessage* GameListPlayerJoinedMessage::default_instance_ = NULL; @@ -5024,7 +5227,7 @@ bool GameListPlayerJoinedMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5040,7 +5243,7 @@ bool GameListPlayerJoinedMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5062,17 +5265,17 @@ void GameListPlayerJoinedMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + } int GameListPlayerJoinedMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -5080,14 +5283,14 @@ int GameListPlayerJoinedMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -5120,7 +5323,7 @@ void GameListPlayerJoinedMessage::CopyFrom(const GameListPlayerJoinedMessage& fr bool GameListPlayerJoinedMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -5171,7 +5374,11 @@ GameListPlayerLeftMessage::~GameListPlayerLeftMessage() { } void GameListPlayerLeftMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -5181,7 +5388,12 @@ void GameListPlayerLeftMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GameListPlayerLeftMessage& GameListPlayerLeftMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GameListPlayerLeftMessage* GameListPlayerLeftMessage::default_instance_ = NULL; @@ -5218,7 +5430,7 @@ bool GameListPlayerLeftMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5234,7 +5446,7 @@ bool GameListPlayerLeftMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5256,17 +5468,17 @@ void GameListPlayerLeftMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + } int GameListPlayerLeftMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -5274,14 +5486,14 @@ int GameListPlayerLeftMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -5314,7 +5526,7 @@ void GameListPlayerLeftMessage::CopyFrom(const GameListPlayerLeftMessage& from) bool GameListPlayerLeftMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -5365,7 +5577,11 @@ GameListSpectatorJoinedMessage::~GameListSpectatorJoinedMessage() { } void GameListSpectatorJoinedMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -5375,7 +5591,12 @@ void GameListSpectatorJoinedMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GameListSpectatorJoinedMessage& GameListSpectatorJoinedMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GameListSpectatorJoinedMessage* GameListSpectatorJoinedMessage::default_instance_ = NULL; @@ -5412,7 +5633,7 @@ bool GameListSpectatorJoinedMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5428,7 +5649,7 @@ bool GameListSpectatorJoinedMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5450,17 +5671,17 @@ void GameListSpectatorJoinedMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + } int GameListSpectatorJoinedMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -5468,14 +5689,14 @@ int GameListSpectatorJoinedMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -5508,7 +5729,7 @@ void GameListSpectatorJoinedMessage::CopyFrom(const GameListSpectatorJoinedMessa bool GameListSpectatorJoinedMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -5559,7 +5780,11 @@ GameListSpectatorLeftMessage::~GameListSpectatorLeftMessage() { } void GameListSpectatorLeftMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -5569,7 +5794,12 @@ void GameListSpectatorLeftMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GameListSpectatorLeftMessage& GameListSpectatorLeftMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GameListSpectatorLeftMessage* GameListSpectatorLeftMessage::default_instance_ = NULL; @@ -5606,7 +5836,7 @@ bool GameListSpectatorLeftMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5622,7 +5852,7 @@ bool GameListSpectatorLeftMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5644,17 +5874,17 @@ void GameListSpectatorLeftMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + } int GameListSpectatorLeftMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -5662,14 +5892,14 @@ int GameListSpectatorLeftMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -5702,7 +5932,7 @@ void GameListSpectatorLeftMessage::CopyFrom(const GameListSpectatorLeftMessage& bool GameListSpectatorLeftMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -5753,7 +5983,11 @@ GameListAdminChangedMessage::~GameListAdminChangedMessage() { } void GameListAdminChangedMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -5763,7 +5997,12 @@ void GameListAdminChangedMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GameListAdminChangedMessage& GameListAdminChangedMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GameListAdminChangedMessage* GameListAdminChangedMessage::default_instance_ = NULL; @@ -5800,7 +6039,7 @@ bool GameListAdminChangedMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_newAdminPlayerId; break; } - + // required uint32 newAdminPlayerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5816,7 +6055,7 @@ bool GameListAdminChangedMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -5838,17 +6077,17 @@ void GameListAdminChangedMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 newAdminPlayerId = 2; if (has_newadminplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->newadminplayerid(), output); } - + } int GameListAdminChangedMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -5856,14 +6095,14 @@ int GameListAdminChangedMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 newAdminPlayerId = 2; if (has_newadminplayerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->newadminplayerid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -5896,7 +6135,7 @@ void GameListAdminChangedMessage::CopyFrom(const GameListAdminChangedMessage& fr bool GameListAdminChangedMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -5944,7 +6183,11 @@ PlayerInfoRequestMessage::~PlayerInfoRequestMessage() { } void PlayerInfoRequestMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -5954,7 +6197,12 @@ void PlayerInfoRequestMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const PlayerInfoRequestMessage& PlayerInfoRequestMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } PlayerInfoRequestMessage* PlayerInfoRequestMessage::default_instance_ = NULL; @@ -5993,7 +6241,7 @@ bool PlayerInfoRequestMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6020,12 +6268,12 @@ void PlayerInfoRequestMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag( this->playerid(i), output); } - + } int PlayerInfoRequestMessage::ByteSize() const { int total_size = 0; - + // repeated uint32 playerId = 1 [packed = true]; { int data_size = 0; @@ -6037,10 +6285,12 @@ int PlayerInfoRequestMessage::ByteSize() const { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _playerid_cached_byte_size_ = data_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); total_size += data_size; } - + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -6064,7 +6314,7 @@ void PlayerInfoRequestMessage::CopyFrom(const PlayerInfoRequestMessage& from) { } bool PlayerInfoRequestMessage::IsInitialized() const { - + return true; } @@ -6117,7 +6367,11 @@ void PlayerInfoReplyMessage_PlayerInfoData_AvatarData::SharedDtor() { if (avatarhash_ != &::google::protobuf::internal::kEmptyString) { delete avatarhash_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -6127,7 +6381,12 @@ void PlayerInfoReplyMessage_PlayerInfoData_AvatarData::SetCachedSize(int size) c GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const PlayerInfoReplyMessage_PlayerInfoData_AvatarData& PlayerInfoReplyMessage_PlayerInfoData_AvatarData::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } PlayerInfoReplyMessage_PlayerInfoData_AvatarData* PlayerInfoReplyMessage_PlayerInfoData_AvatarData::default_instance_ = NULL; @@ -6162,8 +6421,8 @@ bool PlayerInfoReplyMessage_PlayerInfoData_AvatarData::MergePartialFromCodedStre DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (NetAvatarType_IsValid(value)) { - set_avatartype(static_cast< NetAvatarType >(value)); + if (::NetAvatarType_IsValid(value)) { + set_avatartype(static_cast< ::NetAvatarType >(value)); } } else { goto handle_uninterpreted; @@ -6171,7 +6430,7 @@ bool PlayerInfoReplyMessage_PlayerInfoData_AvatarData::MergePartialFromCodedStre if (input->ExpectTag(18)) goto parse_avatarHash; break; } - + // required bytes avatarHash = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6185,7 +6444,7 @@ bool PlayerInfoReplyMessage_PlayerInfoData_AvatarData::MergePartialFromCodedStre if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6208,32 +6467,32 @@ void PlayerInfoReplyMessage_PlayerInfoData_AvatarData::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteEnum( 1, this->avatartype(), output); } - + // required bytes avatarHash = 2; if (has_avatarhash()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 2, this->avatarhash(), output); } - + } int PlayerInfoReplyMessage_PlayerInfoData_AvatarData::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .NetAvatarType avatarType = 1; if (has_avatartype()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->avatartype()); } - + // required bytes avatarHash = 2; if (has_avatarhash()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->avatarhash()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -6266,7 +6525,7 @@ void PlayerInfoReplyMessage_PlayerInfoData_AvatarData::CopyFrom(const PlayerInfo bool PlayerInfoReplyMessage_PlayerInfoData_AvatarData::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -6300,7 +6559,12 @@ PlayerInfoReplyMessage_PlayerInfoData::PlayerInfoReplyMessage_PlayerInfoData() } void PlayerInfoReplyMessage_PlayerInfoData::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + avatardata_ = const_cast< ::PlayerInfoReplyMessage_PlayerInfoData_AvatarData*>( + ::PlayerInfoReplyMessage_PlayerInfoData_AvatarData::internal_default_instance()); +#else avatardata_ = const_cast< ::PlayerInfoReplyMessage_PlayerInfoData_AvatarData*>(&::PlayerInfoReplyMessage_PlayerInfoData_AvatarData::default_instance()); +#endif } PlayerInfoReplyMessage_PlayerInfoData::PlayerInfoReplyMessage_PlayerInfoData(const PlayerInfoReplyMessage_PlayerInfoData& from) @@ -6330,7 +6594,11 @@ void PlayerInfoReplyMessage_PlayerInfoData::SharedDtor() { if (countrycode_ != &::google::protobuf::internal::kEmptyString) { delete countrycode_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif delete avatardata_; } } @@ -6341,7 +6609,12 @@ void PlayerInfoReplyMessage_PlayerInfoData::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const PlayerInfoReplyMessage_PlayerInfoData& PlayerInfoReplyMessage_PlayerInfoData::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } PlayerInfoReplyMessage_PlayerInfoData* PlayerInfoReplyMessage_PlayerInfoData::default_instance_ = NULL; @@ -6389,7 +6662,7 @@ bool PlayerInfoReplyMessage_PlayerInfoData::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_isHuman; break; } - + // required bool isHuman = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6405,7 +6678,7 @@ bool PlayerInfoReplyMessage_PlayerInfoData::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_playerRights; break; } - + // required .NetPlayerInfoRights playerRights = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6415,8 +6688,8 @@ bool PlayerInfoReplyMessage_PlayerInfoData::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (NetPlayerInfoRights_IsValid(value)) { - set_playerrights(static_cast< NetPlayerInfoRights >(value)); + if (::NetPlayerInfoRights_IsValid(value)) { + set_playerrights(static_cast< ::NetPlayerInfoRights >(value)); } } else { goto handle_uninterpreted; @@ -6424,7 +6697,7 @@ bool PlayerInfoReplyMessage_PlayerInfoData::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_countryCode; break; } - + // optional string countryCode = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6438,7 +6711,7 @@ bool PlayerInfoReplyMessage_PlayerInfoData::MergePartialFromCodedStream( if (input->ExpectTag(42)) goto parse_avatarData; break; } - + // optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6452,7 +6725,7 @@ bool PlayerInfoReplyMessage_PlayerInfoData::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6475,35 +6748,35 @@ void PlayerInfoReplyMessage_PlayerInfoData::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->playername(), output); } - + // required bool isHuman = 2; if (has_ishuman()) { ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->ishuman(), output); } - + // required .NetPlayerInfoRights playerRights = 3; if (has_playerrights()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 3, this->playerrights(), output); } - + // optional string countryCode = 4; if (has_countrycode()) { ::google::protobuf::internal::WireFormatLite::WriteString( 4, this->countrycode(), output); } - + // optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; if (has_avatardata()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 5, this->avatardata(), output); } - + } int PlayerInfoReplyMessage_PlayerInfoData::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string playerName = 1; if (has_playername()) { @@ -6511,32 +6784,32 @@ int PlayerInfoReplyMessage_PlayerInfoData::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->playername()); } - + // required bool isHuman = 2; if (has_ishuman()) { total_size += 1 + 1; } - + // required .NetPlayerInfoRights playerRights = 3; if (has_playerrights()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->playerrights()); } - + // optional string countryCode = 4; if (has_countrycode()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->countrycode()); } - + // optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; if (has_avatardata()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->avatardata()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -6578,7 +6851,7 @@ void PlayerInfoReplyMessage_PlayerInfoData::CopyFrom(const PlayerInfoReplyMessag bool PlayerInfoReplyMessage_PlayerInfoData::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + if (has_avatardata()) { if (!this->avatardata().IsInitialized()) return false; } @@ -6615,7 +6888,12 @@ PlayerInfoReplyMessage::PlayerInfoReplyMessage() } void PlayerInfoReplyMessage::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + playerinfodata_ = const_cast< ::PlayerInfoReplyMessage_PlayerInfoData*>( + ::PlayerInfoReplyMessage_PlayerInfoData::internal_default_instance()); +#else playerinfodata_ = const_cast< ::PlayerInfoReplyMessage_PlayerInfoData*>(&::PlayerInfoReplyMessage_PlayerInfoData::default_instance()); +#endif } PlayerInfoReplyMessage::PlayerInfoReplyMessage(const PlayerInfoReplyMessage& from) @@ -6636,7 +6914,11 @@ PlayerInfoReplyMessage::~PlayerInfoReplyMessage() { } void PlayerInfoReplyMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif delete playerinfodata_; } } @@ -6647,7 +6929,12 @@ void PlayerInfoReplyMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const PlayerInfoReplyMessage& PlayerInfoReplyMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } PlayerInfoReplyMessage* PlayerInfoReplyMessage::default_instance_ = NULL; @@ -6686,7 +6973,7 @@ bool PlayerInfoReplyMessage::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_playerInfoData; break; } - + // optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6700,7 +6987,7 @@ bool PlayerInfoReplyMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6722,18 +7009,18 @@ void PlayerInfoReplyMessage::SerializeWithCachedSizes( if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->playerid(), output); } - + // optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; if (has_playerinfodata()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 2, this->playerinfodata(), output); } - + } int PlayerInfoReplyMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 playerId = 1; if (has_playerid()) { @@ -6741,14 +7028,14 @@ int PlayerInfoReplyMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; if (has_playerinfodata()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->playerinfodata()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -6781,7 +7068,7 @@ void PlayerInfoReplyMessage::CopyFrom(const PlayerInfoReplyMessage& from) { bool PlayerInfoReplyMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + if (has_playerinfodata()) { if (!this->playerinfodata().IsInitialized()) return false; } @@ -6850,7 +7137,11 @@ SubscriptionRequestMessage::~SubscriptionRequestMessage() { } void SubscriptionRequestMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -6860,7 +7151,12 @@ void SubscriptionRequestMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const SubscriptionRequestMessage& SubscriptionRequestMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } SubscriptionRequestMessage* SubscriptionRequestMessage::default_instance_ = NULL; @@ -6899,7 +7195,7 @@ bool SubscriptionRequestMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -6922,19 +7218,19 @@ void SubscriptionRequestMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteEnum( 1, this->subscriptionaction(), output); } - + } int SubscriptionRequestMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; if (has_subscriptionaction()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->subscriptionaction()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -6964,7 +7260,7 @@ void SubscriptionRequestMessage::CopyFrom(const SubscriptionRequestMessage& from bool SubscriptionRequestMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -7021,7 +7317,11 @@ void JoinExistingGameMessage::SharedDtor() { if (password_ != &::google::protobuf::internal::kEmptyString) { delete password_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -7031,7 +7331,12 @@ void JoinExistingGameMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const JoinExistingGameMessage& JoinExistingGameMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } JoinExistingGameMessage* JoinExistingGameMessage::default_instance_ = NULL; @@ -7074,7 +7379,7 @@ bool JoinExistingGameMessage::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_password; break; } - + // optional string password = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7088,7 +7393,7 @@ bool JoinExistingGameMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_autoLeave; break; } - + // optional bool autoLeave = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7104,7 +7409,7 @@ bool JoinExistingGameMessage::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_spectateOnly; break; } - + // optional bool spectateOnly = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7120,7 +7425,7 @@ bool JoinExistingGameMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7142,28 +7447,28 @@ void JoinExistingGameMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // optional string password = 2; if (has_password()) { ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->password(), output); } - + // optional bool autoLeave = 3; if (has_autoleave()) { ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->autoleave(), output); } - + // optional bool spectateOnly = 4; if (has_spectateonly()) { ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->spectateonly(), output); } - + } int JoinExistingGameMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -7171,24 +7476,24 @@ int JoinExistingGameMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // optional string password = 2; if (has_password()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->password()); } - + // optional bool autoLeave = 3; if (has_autoleave()) { total_size += 1 + 1; } - + // optional bool spectateOnly = 4; if (has_spectateonly()) { total_size += 1 + 1; } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -7227,7 +7532,7 @@ void JoinExistingGameMessage::CopyFrom(const JoinExistingGameMessage& from) { bool JoinExistingGameMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -7261,7 +7566,12 @@ JoinNewGameMessage::JoinNewGameMessage() } void JoinNewGameMessage::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gameinfo_ = const_cast< ::NetGameInfo*>( + ::NetGameInfo::internal_default_instance()); +#else gameinfo_ = const_cast< ::NetGameInfo*>(&::NetGameInfo::default_instance()); +#endif } JoinNewGameMessage::JoinNewGameMessage(const JoinNewGameMessage& from) @@ -7286,7 +7596,11 @@ void JoinNewGameMessage::SharedDtor() { if (password_ != &::google::protobuf::internal::kEmptyString) { delete password_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif delete gameinfo_; } } @@ -7297,7 +7611,12 @@ void JoinNewGameMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const JoinNewGameMessage& JoinNewGameMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } JoinNewGameMessage* JoinNewGameMessage::default_instance_ = NULL; @@ -7339,7 +7658,7 @@ bool JoinNewGameMessage::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_password; break; } - + // optional string password = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7353,7 +7672,7 @@ bool JoinNewGameMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_autoLeave; break; } - + // optional bool autoLeave = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7369,7 +7688,7 @@ bool JoinNewGameMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7392,23 +7711,23 @@ void JoinNewGameMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessage( 1, this->gameinfo(), output); } - + // optional string password = 2; if (has_password()) { ::google::protobuf::internal::WireFormatLite::WriteString( 2, this->password(), output); } - + // optional bool autoLeave = 3; if (has_autoleave()) { ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->autoleave(), output); } - + } int JoinNewGameMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .NetGameInfo gameInfo = 1; if (has_gameinfo()) { @@ -7416,19 +7735,19 @@ int JoinNewGameMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gameinfo()); } - + // optional string password = 2; if (has_password()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->password()); } - + // optional bool autoLeave = 3; if (has_autoleave()) { total_size += 1 + 1; } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -7464,7 +7783,7 @@ void JoinNewGameMessage::CopyFrom(const JoinNewGameMessage& from) { bool JoinNewGameMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + if (has_gameinfo()) { if (!this->gameinfo().IsInitialized()) return false; } @@ -7519,7 +7838,11 @@ RejoinExistingGameMessage::~RejoinExistingGameMessage() { } void RejoinExistingGameMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -7529,7 +7852,12 @@ void RejoinExistingGameMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const RejoinExistingGameMessage& RejoinExistingGameMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } RejoinExistingGameMessage* RejoinExistingGameMessage::default_instance_ = NULL; @@ -7566,7 +7894,7 @@ bool RejoinExistingGameMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_autoLeave; break; } - + // optional bool autoLeave = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7582,7 +7910,7 @@ bool RejoinExistingGameMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7604,17 +7932,17 @@ void RejoinExistingGameMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // optional bool autoLeave = 2; if (has_autoleave()) { ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->autoleave(), output); } - + } int RejoinExistingGameMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -7622,12 +7950,12 @@ int RejoinExistingGameMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // optional bool autoLeave = 2; if (has_autoleave()) { total_size += 1 + 1; } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -7660,7 +7988,7 @@ void RejoinExistingGameMessage::CopyFrom(const RejoinExistingGameMessage& from) bool RejoinExistingGameMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -7692,7 +8020,12 @@ JoinGameAckMessage::JoinGameAckMessage() } void JoinGameAckMessage::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gameinfo_ = const_cast< ::NetGameInfo*>( + ::NetGameInfo::internal_default_instance()); +#else gameinfo_ = const_cast< ::NetGameInfo*>(&::NetGameInfo::default_instance()); +#endif } JoinGameAckMessage::JoinGameAckMessage(const JoinGameAckMessage& from) @@ -7714,7 +8047,11 @@ JoinGameAckMessage::~JoinGameAckMessage() { } void JoinGameAckMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif delete gameinfo_; } } @@ -7725,7 +8062,12 @@ void JoinGameAckMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const JoinGameAckMessage& JoinGameAckMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } JoinGameAckMessage* JoinGameAckMessage::default_instance_ = NULL; @@ -7765,7 +8107,7 @@ bool JoinGameAckMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_areYouGameAdmin; break; } - + // required bool areYouGameAdmin = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7781,7 +8123,7 @@ bool JoinGameAckMessage::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_gameInfo; break; } - + // required .NetGameInfo gameInfo = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7795,7 +8137,7 @@ bool JoinGameAckMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -7817,23 +8159,23 @@ void JoinGameAckMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required bool areYouGameAdmin = 2; if (has_areyougameadmin()) { ::google::protobuf::internal::WireFormatLite::WriteBool(2, this->areyougameadmin(), output); } - + // required .NetGameInfo gameInfo = 3; if (has_gameinfo()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 3, this->gameinfo(), output); } - + } int JoinGameAckMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -7841,19 +8183,19 @@ int JoinGameAckMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required bool areYouGameAdmin = 2; if (has_areyougameadmin()) { total_size += 1 + 1; } - + // required .NetGameInfo gameInfo = 3; if (has_gameinfo()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gameinfo()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -7889,7 +8231,7 @@ void JoinGameAckMessage::CopyFrom(const JoinGameAckMessage& from) { bool JoinGameAckMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + if (has_gameinfo()) { if (!this->gameinfo().IsInitialized()) return false; } @@ -7979,7 +8321,11 @@ JoinGameFailedMessage::~JoinGameFailedMessage() { } void JoinGameFailedMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -7989,7 +8335,12 @@ void JoinGameFailedMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const JoinGameFailedMessage& JoinGameFailedMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } JoinGameFailedMessage* JoinGameFailedMessage::default_instance_ = NULL; @@ -8026,7 +8377,7 @@ bool JoinGameFailedMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_joinGameFailureReason; break; } - + // required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8045,7 +8396,7 @@ bool JoinGameFailedMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8067,18 +8418,18 @@ void JoinGameFailedMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; if (has_joingamefailurereason()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->joingamefailurereason(), output); } - + } int JoinGameFailedMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -8086,13 +8437,13 @@ int JoinGameFailedMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; if (has_joingamefailurereason()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->joingamefailurereason()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -8125,7 +8476,7 @@ void JoinGameFailedMessage::CopyFrom(const JoinGameFailedMessage& from) { bool JoinGameFailedMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -8178,7 +8529,11 @@ GamePlayerJoinedMessage::~GamePlayerJoinedMessage() { } void GamePlayerJoinedMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -8188,7 +8543,12 @@ void GamePlayerJoinedMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GamePlayerJoinedMessage& GamePlayerJoinedMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GamePlayerJoinedMessage* GamePlayerJoinedMessage::default_instance_ = NULL; @@ -8226,7 +8586,7 @@ bool GamePlayerJoinedMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8242,7 +8602,7 @@ bool GamePlayerJoinedMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_isGameAdmin; break; } - + // required bool isGameAdmin = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8258,7 +8618,7 @@ bool GamePlayerJoinedMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8280,22 +8640,22 @@ void GamePlayerJoinedMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + // required bool isGameAdmin = 3; if (has_isgameadmin()) { ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->isgameadmin(), output); } - + } int GamePlayerJoinedMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -8303,19 +8663,19 @@ int GamePlayerJoinedMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // required bool isGameAdmin = 3; if (has_isgameadmin()) { total_size += 1 + 1; } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -8351,7 +8711,7 @@ void GamePlayerJoinedMessage::CopyFrom(const GamePlayerJoinedMessage& from) { bool GamePlayerJoinedMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -8424,7 +8784,11 @@ GamePlayerLeftMessage::~GamePlayerLeftMessage() { } void GamePlayerLeftMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -8434,7 +8798,12 @@ void GamePlayerLeftMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GamePlayerLeftMessage& GamePlayerLeftMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GamePlayerLeftMessage* GamePlayerLeftMessage::default_instance_ = NULL; @@ -8472,7 +8841,7 @@ bool GamePlayerLeftMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8488,7 +8857,7 @@ bool GamePlayerLeftMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_gamePlayerLeftReason; break; } - + // required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8507,7 +8876,7 @@ bool GamePlayerLeftMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8529,23 +8898,23 @@ void GamePlayerLeftMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + // required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; if (has_gameplayerleftreason()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 3, this->gameplayerleftreason(), output); } - + } int GamePlayerLeftMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -8553,20 +8922,20 @@ int GamePlayerLeftMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; if (has_gameplayerleftreason()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->gameplayerleftreason()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -8602,7 +8971,7 @@ void GamePlayerLeftMessage::CopyFrom(const GamePlayerLeftMessage& from) { bool GamePlayerLeftMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -8654,7 +9023,11 @@ GameSpectatorJoinedMessage::~GameSpectatorJoinedMessage() { } void GameSpectatorJoinedMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -8664,7 +9037,12 @@ void GameSpectatorJoinedMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GameSpectatorJoinedMessage& GameSpectatorJoinedMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GameSpectatorJoinedMessage* GameSpectatorJoinedMessage::default_instance_ = NULL; @@ -8701,7 +9079,7 @@ bool GameSpectatorJoinedMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8717,7 +9095,7 @@ bool GameSpectatorJoinedMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8739,17 +9117,17 @@ void GameSpectatorJoinedMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + } int GameSpectatorJoinedMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -8757,14 +9135,14 @@ int GameSpectatorJoinedMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -8797,7 +9175,7 @@ void GameSpectatorJoinedMessage::CopyFrom(const GameSpectatorJoinedMessage& from bool GameSpectatorJoinedMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -8850,7 +9228,11 @@ GameSpectatorLeftMessage::~GameSpectatorLeftMessage() { } void GameSpectatorLeftMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -8860,7 +9242,12 @@ void GameSpectatorLeftMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GameSpectatorLeftMessage& GameSpectatorLeftMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GameSpectatorLeftMessage* GameSpectatorLeftMessage::default_instance_ = NULL; @@ -8898,7 +9285,7 @@ bool GameSpectatorLeftMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8914,7 +9301,7 @@ bool GameSpectatorLeftMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_gameSpectatorLeftReason; break; } - + // required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8933,7 +9320,7 @@ bool GameSpectatorLeftMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -8955,23 +9342,23 @@ void GameSpectatorLeftMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + // required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; if (has_gamespectatorleftreason()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 3, this->gamespectatorleftreason(), output); } - + } int GameSpectatorLeftMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -8979,20 +9366,20 @@ int GameSpectatorLeftMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; if (has_gamespectatorleftreason()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->gamespectatorleftreason()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -9028,7 +9415,7 @@ void GameSpectatorLeftMessage::CopyFrom(const GameSpectatorLeftMessage& from) { bool GameSpectatorLeftMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -9080,7 +9467,11 @@ GameAdminChangedMessage::~GameAdminChangedMessage() { } void GameAdminChangedMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -9090,7 +9481,12 @@ void GameAdminChangedMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GameAdminChangedMessage& GameAdminChangedMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GameAdminChangedMessage* GameAdminChangedMessage::default_instance_ = NULL; @@ -9127,7 +9523,7 @@ bool GameAdminChangedMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_newAdminPlayerId; break; } - + // required uint32 newAdminPlayerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9143,7 +9539,7 @@ bool GameAdminChangedMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9165,17 +9561,17 @@ void GameAdminChangedMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 newAdminPlayerId = 2; if (has_newadminplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->newadminplayerid(), output); } - + } int GameAdminChangedMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -9183,14 +9579,14 @@ int GameAdminChangedMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 newAdminPlayerId = 2; if (has_newadminplayerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->newadminplayerid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -9223,7 +9619,7 @@ void GameAdminChangedMessage::CopyFrom(const GameAdminChangedMessage& from) { bool GameAdminChangedMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -9299,7 +9695,11 @@ RemovedFromGameMessage::~RemovedFromGameMessage() { } void RemovedFromGameMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -9309,7 +9709,12 @@ void RemovedFromGameMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const RemovedFromGameMessage& RemovedFromGameMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } RemovedFromGameMessage* RemovedFromGameMessage::default_instance_ = NULL; @@ -9346,7 +9751,7 @@ bool RemovedFromGameMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_removedFromGameReason; break; } - + // required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9365,7 +9770,7 @@ bool RemovedFromGameMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9387,18 +9792,18 @@ void RemovedFromGameMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; if (has_removedfromgamereason()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->removedfromgamereason(), output); } - + } int RemovedFromGameMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -9406,13 +9811,13 @@ int RemovedFromGameMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; if (has_removedfromgamereason()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->removedfromgamereason()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -9445,7 +9850,7 @@ void RemovedFromGameMessage::CopyFrom(const RemovedFromGameMessage& from) { bool RemovedFromGameMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -9496,7 +9901,11 @@ KickPlayerRequestMessage::~KickPlayerRequestMessage() { } void KickPlayerRequestMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -9506,7 +9915,12 @@ void KickPlayerRequestMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const KickPlayerRequestMessage& KickPlayerRequestMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } KickPlayerRequestMessage* KickPlayerRequestMessage::default_instance_ = NULL; @@ -9543,7 +9957,7 @@ bool KickPlayerRequestMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9559,7 +9973,7 @@ bool KickPlayerRequestMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9581,17 +9995,17 @@ void KickPlayerRequestMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + } int KickPlayerRequestMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -9599,14 +10013,14 @@ int KickPlayerRequestMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -9639,7 +10053,7 @@ void KickPlayerRequestMessage::CopyFrom(const KickPlayerRequestMessage& from) { bool KickPlayerRequestMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -9688,7 +10102,11 @@ LeaveGameRequestMessage::~LeaveGameRequestMessage() { } void LeaveGameRequestMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -9698,7 +10116,12 @@ void LeaveGameRequestMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const LeaveGameRequestMessage& LeaveGameRequestMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } LeaveGameRequestMessage* LeaveGameRequestMessage::default_instance_ = NULL; @@ -9734,7 +10157,7 @@ bool LeaveGameRequestMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9756,12 +10179,12 @@ void LeaveGameRequestMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + } int LeaveGameRequestMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -9769,7 +10192,7 @@ int LeaveGameRequestMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -9799,7 +10222,7 @@ void LeaveGameRequestMessage::CopyFrom(const LeaveGameRequestMessage& from) { bool LeaveGameRequestMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -9849,7 +10272,11 @@ InvitePlayerToGameMessage::~InvitePlayerToGameMessage() { } void InvitePlayerToGameMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -9859,7 +10286,12 @@ void InvitePlayerToGameMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const InvitePlayerToGameMessage& InvitePlayerToGameMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } InvitePlayerToGameMessage* InvitePlayerToGameMessage::default_instance_ = NULL; @@ -9896,7 +10328,7 @@ bool InvitePlayerToGameMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9912,7 +10344,7 @@ bool InvitePlayerToGameMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -9934,17 +10366,17 @@ void InvitePlayerToGameMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + } int InvitePlayerToGameMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -9952,14 +10384,14 @@ int InvitePlayerToGameMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -9992,7 +10424,7 @@ void InvitePlayerToGameMessage::CopyFrom(const InvitePlayerToGameMessage& from) bool InvitePlayerToGameMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -10045,7 +10477,11 @@ InviteNotifyMessage::~InviteNotifyMessage() { } void InviteNotifyMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -10055,7 +10491,12 @@ void InviteNotifyMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const InviteNotifyMessage& InviteNotifyMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } InviteNotifyMessage* InviteNotifyMessage::default_instance_ = NULL; @@ -10093,7 +10534,7 @@ bool InviteNotifyMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerIdWho; break; } - + // required uint32 playerIdWho = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10109,7 +10550,7 @@ bool InviteNotifyMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_playerIdByWhom; break; } - + // required uint32 playerIdByWhom = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10125,7 +10566,7 @@ bool InviteNotifyMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10147,22 +10588,22 @@ void InviteNotifyMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerIdWho = 2; if (has_playeridwho()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playeridwho(), output); } - + // required uint32 playerIdByWhom = 3; if (has_playeridbywhom()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->playeridbywhom(), output); } - + } int InviteNotifyMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -10170,21 +10611,21 @@ int InviteNotifyMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerIdWho = 2; if (has_playeridwho()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playeridwho()); } - + // required uint32 playerIdByWhom = 3; if (has_playeridbywhom()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playeridbywhom()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -10220,7 +10661,7 @@ void InviteNotifyMessage::CopyFrom(const InviteNotifyMessage& from) { bool InviteNotifyMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -10289,7 +10730,11 @@ RejectGameInvitationMessage::~RejectGameInvitationMessage() { } void RejectGameInvitationMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -10299,7 +10744,12 @@ void RejectGameInvitationMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const RejectGameInvitationMessage& RejectGameInvitationMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } RejectGameInvitationMessage* RejectGameInvitationMessage::default_instance_ = NULL; @@ -10336,7 +10786,7 @@ bool RejectGameInvitationMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_myRejectReason; break; } - + // required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10355,7 +10805,7 @@ bool RejectGameInvitationMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10377,18 +10827,18 @@ void RejectGameInvitationMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; if (has_myrejectreason()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->myrejectreason(), output); } - + } int RejectGameInvitationMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -10396,13 +10846,13 @@ int RejectGameInvitationMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; if (has_myrejectreason()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->myrejectreason()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -10435,7 +10885,7 @@ void RejectGameInvitationMessage::CopyFrom(const RejectGameInvitationMessage& fr bool RejectGameInvitationMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -10488,7 +10938,11 @@ RejectInvNotifyMessage::~RejectInvNotifyMessage() { } void RejectInvNotifyMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -10498,7 +10952,12 @@ void RejectInvNotifyMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const RejectInvNotifyMessage& RejectInvNotifyMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } RejectInvNotifyMessage* RejectInvNotifyMessage::default_instance_ = NULL; @@ -10536,7 +10995,7 @@ bool RejectInvNotifyMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10552,7 +11011,7 @@ bool RejectInvNotifyMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_playerRejectReason; break; } - + // required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10571,7 +11030,7 @@ bool RejectInvNotifyMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10593,23 +11052,23 @@ void RejectInvNotifyMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + // required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; if (has_playerrejectreason()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 3, this->playerrejectreason(), output); } - + } int RejectInvNotifyMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -10617,20 +11076,20 @@ int RejectInvNotifyMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; if (has_playerrejectreason()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->playerrejectreason()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -10666,7 +11125,7 @@ void RejectInvNotifyMessage::CopyFrom(const RejectInvNotifyMessage& from) { bool RejectInvNotifyMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -10737,7 +11196,11 @@ StartEventMessage::~StartEventMessage() { } void StartEventMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -10747,7 +11210,12 @@ void StartEventMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const StartEventMessage& StartEventMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } StartEventMessage* StartEventMessage::default_instance_ = NULL; @@ -10785,7 +11253,7 @@ bool StartEventMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_startEventType; break; } - + // required .StartEventMessage.StartEventType startEventType = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10804,7 +11272,7 @@ bool StartEventMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_fillWithComputerPlayers; break; } - + // optional bool fillWithComputerPlayers = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10820,7 +11288,7 @@ bool StartEventMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -10842,23 +11310,23 @@ void StartEventMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required .StartEventMessage.StartEventType startEventType = 2; if (has_starteventtype()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->starteventtype(), output); } - + // optional bool fillWithComputerPlayers = 3; if (has_fillwithcomputerplayers()) { ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->fillwithcomputerplayers(), output); } - + } int StartEventMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -10866,18 +11334,18 @@ int StartEventMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required .StartEventMessage.StartEventType startEventType = 2; if (has_starteventtype()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->starteventtype()); } - + // optional bool fillWithComputerPlayers = 3; if (has_fillwithcomputerplayers()) { total_size += 1 + 1; } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -10913,7 +11381,7 @@ void StartEventMessage::CopyFrom(const StartEventMessage& from) { bool StartEventMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -10963,7 +11431,11 @@ StartEventAckMessage::~StartEventAckMessage() { } void StartEventAckMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -10973,7 +11445,12 @@ void StartEventAckMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const StartEventAckMessage& StartEventAckMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } StartEventAckMessage* StartEventAckMessage::default_instance_ = NULL; @@ -11009,7 +11486,7 @@ bool StartEventAckMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11031,12 +11508,12 @@ void StartEventAckMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + } int StartEventAckMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -11044,7 +11521,7 @@ int StartEventAckMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -11074,7 +11551,7 @@ void StartEventAckMessage::CopyFrom(const StartEventAckMessage& from) { bool StartEventAckMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -11125,7 +11602,11 @@ GameStartInitialMessage::~GameStartInitialMessage() { } void GameStartInitialMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -11135,7 +11616,12 @@ void GameStartInitialMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GameStartInitialMessage& GameStartInitialMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GameStartInitialMessage* GameStartInitialMessage::default_instance_ = NULL; @@ -11173,7 +11659,7 @@ bool GameStartInitialMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_startDealerPlayerId; break; } - + // required uint32 startDealerPlayerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11189,7 +11675,7 @@ bool GameStartInitialMessage::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_playerSeats; break; } - + // repeated uint32 playerSeats = 3 [packed = true]; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11210,7 +11696,7 @@ bool GameStartInitialMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11232,12 +11718,12 @@ void GameStartInitialMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 startDealerPlayerId = 2; if (has_startdealerplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->startdealerplayerid(), output); } - + // repeated uint32 playerSeats = 3 [packed = true]; if (this->playerseats_size() > 0) { ::google::protobuf::internal::WireFormatLite::WriteTag(3, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); @@ -11247,12 +11733,12 @@ void GameStartInitialMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag( this->playerseats(i), output); } - + } int GameStartInitialMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -11260,14 +11746,14 @@ int GameStartInitialMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 startDealerPlayerId = 2; if (has_startdealerplayerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->startdealerplayerid()); } - + } // repeated uint32 playerSeats = 3 [packed = true]; { @@ -11280,10 +11766,12 @@ int GameStartInitialMessage::ByteSize() const { total_size += 1 + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _playerseats_cached_byte_size_ = data_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); total_size += data_size; } - + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -11316,7 +11804,7 @@ void GameStartInitialMessage::CopyFrom(const GameStartInitialMessage& from) { bool GameStartInitialMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -11368,7 +11856,11 @@ GameStartRejoinMessage_RejoinPlayerData::~GameStartRejoinMessage_RejoinPlayerDat } void GameStartRejoinMessage_RejoinPlayerData::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -11378,7 +11870,12 @@ void GameStartRejoinMessage_RejoinPlayerData::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GameStartRejoinMessage_RejoinPlayerData& GameStartRejoinMessage_RejoinPlayerData::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GameStartRejoinMessage_RejoinPlayerData* GameStartRejoinMessage_RejoinPlayerData::default_instance_ = NULL; @@ -11415,7 +11912,7 @@ bool GameStartRejoinMessage_RejoinPlayerData::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerMoney; break; } - + // required uint32 playerMoney = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11431,7 +11928,7 @@ bool GameStartRejoinMessage_RejoinPlayerData::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11453,17 +11950,17 @@ void GameStartRejoinMessage_RejoinPlayerData::SerializeWithCachedSizes( if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->playerid(), output); } - + // required uint32 playerMoney = 2; if (has_playermoney()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playermoney(), output); } - + } int GameStartRejoinMessage_RejoinPlayerData::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 playerId = 1; if (has_playerid()) { @@ -11471,14 +11968,14 @@ int GameStartRejoinMessage_RejoinPlayerData::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // required uint32 playerMoney = 2; if (has_playermoney()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playermoney()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -11511,7 +12008,7 @@ void GameStartRejoinMessage_RejoinPlayerData::CopyFrom(const GameStartRejoinMess bool GameStartRejoinMessage_RejoinPlayerData::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -11565,7 +12062,11 @@ GameStartRejoinMessage::~GameStartRejoinMessage() { } void GameStartRejoinMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -11575,7 +12076,12 @@ void GameStartRejoinMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const GameStartRejoinMessage& GameStartRejoinMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } GameStartRejoinMessage* GameStartRejoinMessage::default_instance_ = NULL; @@ -11614,7 +12120,7 @@ bool GameStartRejoinMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_startDealerPlayerId; break; } - + // required uint32 startDealerPlayerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11630,7 +12136,7 @@ bool GameStartRejoinMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_handNum; break; } - + // required uint32 handNum = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11646,7 +12152,7 @@ bool GameStartRejoinMessage::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_rejoinPlayerData; break; } - + // repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11661,7 +12167,7 @@ bool GameStartRejoinMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11683,28 +12189,28 @@ void GameStartRejoinMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 startDealerPlayerId = 2; if (has_startdealerplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->startdealerplayerid(), output); } - + // required uint32 handNum = 3; if (has_handnum()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->handnum(), output); } - + // repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; for (int i = 0; i < this->rejoinplayerdata_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 4, this->rejoinplayerdata(i), output); } - + } int GameStartRejoinMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -11712,21 +12218,21 @@ int GameStartRejoinMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 startDealerPlayerId = 2; if (has_startdealerplayerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->startdealerplayerid()); } - + // required uint32 handNum = 3; if (has_handnum()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->handnum()); } - + } // repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; total_size += 1 * this->rejoinplayerdata_size(); @@ -11735,7 +12241,7 @@ int GameStartRejoinMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->rejoinplayerdata(i)); } - + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -11771,7 +12277,7 @@ void GameStartRejoinMessage::CopyFrom(const GameStartRejoinMessage& from) { bool GameStartRejoinMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + for (int i = 0; i < rejoinplayerdata_size(); i++) { if (!this->rejoinplayerdata(i).IsInitialized()) return false; } @@ -11827,7 +12333,11 @@ HandStartMessage_PlainCards::~HandStartMessage_PlainCards() { } void HandStartMessage_PlainCards::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -11837,7 +12347,12 @@ void HandStartMessage_PlainCards::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const HandStartMessage_PlainCards& HandStartMessage_PlainCards::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } HandStartMessage_PlainCards* HandStartMessage_PlainCards::default_instance_ = NULL; @@ -11874,7 +12389,7 @@ bool HandStartMessage_PlainCards::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_plainCard2; break; } - + // required uint32 plainCard2 = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11890,7 +12405,7 @@ bool HandStartMessage_PlainCards::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -11912,17 +12427,17 @@ void HandStartMessage_PlainCards::SerializeWithCachedSizes( if (has_plaincard1()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->plaincard1(), output); } - + // required uint32 plainCard2 = 2; if (has_plaincard2()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->plaincard2(), output); } - + } int HandStartMessage_PlainCards::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 plainCard1 = 1; if (has_plaincard1()) { @@ -11930,14 +12445,14 @@ int HandStartMessage_PlainCards::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->plaincard1()); } - + // required uint32 plainCard2 = 2; if (has_plaincard2()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->plaincard2()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -11970,7 +12485,7 @@ void HandStartMessage_PlainCards::CopyFrom(const HandStartMessage_PlainCards& fr bool HandStartMessage_PlainCards::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -12004,7 +12519,12 @@ HandStartMessage::HandStartMessage() } void HandStartMessage::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + plaincards_ = const_cast< ::HandStartMessage_PlainCards*>( + ::HandStartMessage_PlainCards::internal_default_instance()); +#else plaincards_ = const_cast< ::HandStartMessage_PlainCards*>(&::HandStartMessage_PlainCards::default_instance()); +#endif } HandStartMessage::HandStartMessage(const HandStartMessage& from) @@ -12030,7 +12550,11 @@ void HandStartMessage::SharedDtor() { if (encryptedcards_ != &::google::protobuf::internal::kEmptyString) { delete encryptedcards_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif delete plaincards_; } } @@ -12041,7 +12565,12 @@ void HandStartMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const HandStartMessage& HandStartMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } HandStartMessage* HandStartMessage::default_instance_ = NULL; @@ -12087,7 +12616,7 @@ bool HandStartMessage::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_plainCards; break; } - + // optional .HandStartMessage.PlainCards plainCards = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12101,7 +12630,7 @@ bool HandStartMessage::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_encryptedCards; break; } - + // optional bytes encryptedCards = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12115,7 +12644,7 @@ bool HandStartMessage::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_smallBlind; break; } - + // required uint32 smallBlind = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12131,7 +12660,7 @@ bool HandStartMessage::MergePartialFromCodedStream( if (input->ExpectTag(40)) goto parse_seatStates; break; } - + // repeated .NetPlayerState seatStates = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12141,15 +12670,15 @@ bool HandStartMessage::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (NetPlayerState_IsValid(value)) { - add_seatstates(static_cast< NetPlayerState >(value)); + if (::NetPlayerState_IsValid(value)) { + add_seatstates(static_cast< ::NetPlayerState >(value)); } } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite:: WIRETYPE_LENGTH_DELIMITED) { DO_((::google::protobuf::internal::WireFormatLite::ReadPackedEnumNoInline( input, - &NetPlayerState_IsValid, + &::NetPlayerState_IsValid, this->mutable_seatstates()))); } else { goto handle_uninterpreted; @@ -12158,7 +12687,7 @@ bool HandStartMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12180,35 +12709,35 @@ void HandStartMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // optional .HandStartMessage.PlainCards plainCards = 2; if (has_plaincards()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 2, this->plaincards(), output); } - + // optional bytes encryptedCards = 3; if (has_encryptedcards()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 3, this->encryptedcards(), output); } - + // required uint32 smallBlind = 4; if (has_smallblind()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->smallblind(), output); } - + // repeated .NetPlayerState seatStates = 5; for (int i = 0; i < this->seatstates_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 5, this->seatstates(i), output); } - + } int HandStartMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -12216,28 +12745,28 @@ int HandStartMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // optional .HandStartMessage.PlainCards plainCards = 2; if (has_plaincards()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->plaincards()); } - + // optional bytes encryptedCards = 3; if (has_encryptedcards()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->encryptedcards()); } - + // required uint32 smallBlind = 4; if (has_smallblind()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->smallblind()); } - + } // repeated .NetPlayerState seatStates = 5; { @@ -12248,7 +12777,7 @@ int HandStartMessage::ByteSize() const { } total_size += 1 * this->seatstates_size() + data_size; } - + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -12287,7 +12816,7 @@ void HandStartMessage::CopyFrom(const HandStartMessage& from) { bool HandStartMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000009) != 0x00000009) return false; - + if (has_plaincards()) { if (!this->plaincards().IsInitialized()) return false; } @@ -12346,7 +12875,11 @@ PlayersTurnMessage::~PlayersTurnMessage() { } void PlayersTurnMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -12356,7 +12889,12 @@ void PlayersTurnMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const PlayersTurnMessage& PlayersTurnMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } PlayersTurnMessage* PlayersTurnMessage::default_instance_ = NULL; @@ -12394,7 +12932,7 @@ bool PlayersTurnMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12410,7 +12948,7 @@ bool PlayersTurnMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_gameState; break; } - + // required .NetGameState gameState = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12420,8 +12958,8 @@ bool PlayersTurnMessage::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (NetGameState_IsValid(value)) { - set_gamestate(static_cast< NetGameState >(value)); + if (::NetGameState_IsValid(value)) { + set_gamestate(static_cast< ::NetGameState >(value)); } } else { goto handle_uninterpreted; @@ -12429,7 +12967,7 @@ bool PlayersTurnMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12451,23 +12989,23 @@ void PlayersTurnMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + // required .NetGameState gameState = 3; if (has_gamestate()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 3, this->gamestate(), output); } - + } int PlayersTurnMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -12475,20 +13013,20 @@ int PlayersTurnMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // required .NetGameState gameState = 3; if (has_gamestate()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->gamestate()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -12524,7 +13062,7 @@ void PlayersTurnMessage::CopyFrom(const PlayersTurnMessage& from) { bool PlayersTurnMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -12582,7 +13120,11 @@ MyActionRequestMessage::~MyActionRequestMessage() { } void MyActionRequestMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -12592,7 +13134,12 @@ void MyActionRequestMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const MyActionRequestMessage& MyActionRequestMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } MyActionRequestMessage* MyActionRequestMessage::default_instance_ = NULL; @@ -12632,7 +13179,7 @@ bool MyActionRequestMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_handNum; break; } - + // required uint32 handNum = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12648,7 +13195,7 @@ bool MyActionRequestMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_gameState; break; } - + // required .NetGameState gameState = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12658,8 +13205,8 @@ bool MyActionRequestMessage::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (NetGameState_IsValid(value)) { - set_gamestate(static_cast< NetGameState >(value)); + if (::NetGameState_IsValid(value)) { + set_gamestate(static_cast< ::NetGameState >(value)); } } else { goto handle_uninterpreted; @@ -12667,7 +13214,7 @@ bool MyActionRequestMessage::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_myAction; break; } - + // required .NetPlayerAction myAction = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12677,8 +13224,8 @@ bool MyActionRequestMessage::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (NetPlayerAction_IsValid(value)) { - set_myaction(static_cast< NetPlayerAction >(value)); + if (::NetPlayerAction_IsValid(value)) { + set_myaction(static_cast< ::NetPlayerAction >(value)); } } else { goto handle_uninterpreted; @@ -12686,7 +13233,7 @@ bool MyActionRequestMessage::MergePartialFromCodedStream( if (input->ExpectTag(40)) goto parse_myRelativeBet; break; } - + // required uint32 myRelativeBet = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12702,7 +13249,7 @@ bool MyActionRequestMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12724,34 +13271,34 @@ void MyActionRequestMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 handNum = 2; if (has_handnum()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->handnum(), output); } - + // required .NetGameState gameState = 3; if (has_gamestate()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 3, this->gamestate(), output); } - + // required .NetPlayerAction myAction = 4; if (has_myaction()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 4, this->myaction(), output); } - + // required uint32 myRelativeBet = 5; if (has_myrelativebet()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->myrelativebet(), output); } - + } int MyActionRequestMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -12759,33 +13306,33 @@ int MyActionRequestMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 handNum = 2; if (has_handnum()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->handnum()); } - + // required .NetGameState gameState = 3; if (has_gamestate()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->gamestate()); } - + // required .NetPlayerAction myAction = 4; if (has_myaction()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->myaction()); } - + // required uint32 myRelativeBet = 5; if (has_myrelativebet()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->myrelativebet()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -12827,7 +13374,7 @@ void MyActionRequestMessage::CopyFrom(const MyActionRequestMessage& from) { bool MyActionRequestMessage::IsInitialized() const { if ((_has_bits_[0] & 0x0000001f) != 0x0000001f) return false; - + return true; } @@ -12906,7 +13453,11 @@ YourActionRejectedMessage::~YourActionRejectedMessage() { } void YourActionRejectedMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -12916,7 +13467,12 @@ void YourActionRejectedMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const YourActionRejectedMessage& YourActionRejectedMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } YourActionRejectedMessage* YourActionRejectedMessage::default_instance_ = NULL; @@ -12956,7 +13512,7 @@ bool YourActionRejectedMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_gameState; break; } - + // required .NetGameState gameState = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12966,8 +13522,8 @@ bool YourActionRejectedMessage::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (NetGameState_IsValid(value)) { - set_gamestate(static_cast< NetGameState >(value)); + if (::NetGameState_IsValid(value)) { + set_gamestate(static_cast< ::NetGameState >(value)); } } else { goto handle_uninterpreted; @@ -12975,7 +13531,7 @@ bool YourActionRejectedMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_yourAction; break; } - + // required .NetPlayerAction yourAction = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -12985,8 +13541,8 @@ bool YourActionRejectedMessage::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (NetPlayerAction_IsValid(value)) { - set_youraction(static_cast< NetPlayerAction >(value)); + if (::NetPlayerAction_IsValid(value)) { + set_youraction(static_cast< ::NetPlayerAction >(value)); } } else { goto handle_uninterpreted; @@ -12994,7 +13550,7 @@ bool YourActionRejectedMessage::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_yourRelativeBet; break; } - + // required uint32 yourRelativeBet = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13010,7 +13566,7 @@ bool YourActionRejectedMessage::MergePartialFromCodedStream( if (input->ExpectTag(40)) goto parse_rejectionReason; break; } - + // required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13029,7 +13585,7 @@ bool YourActionRejectedMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13051,35 +13607,35 @@ void YourActionRejectedMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required .NetGameState gameState = 2; if (has_gamestate()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->gamestate(), output); } - + // required .NetPlayerAction yourAction = 3; if (has_youraction()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 3, this->youraction(), output); } - + // required uint32 yourRelativeBet = 4; if (has_yourrelativebet()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->yourrelativebet(), output); } - + // required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; if (has_rejectionreason()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 5, this->rejectionreason(), output); } - + } int YourActionRejectedMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -13087,32 +13643,32 @@ int YourActionRejectedMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required .NetGameState gameState = 2; if (has_gamestate()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->gamestate()); } - + // required .NetPlayerAction yourAction = 3; if (has_youraction()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->youraction()); } - + // required uint32 yourRelativeBet = 4; if (has_yourrelativebet()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->yourrelativebet()); } - + // required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; if (has_rejectionreason()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->rejectionreason()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -13154,7 +13710,7 @@ void YourActionRejectedMessage::CopyFrom(const YourActionRejectedMessage& from) bool YourActionRejectedMessage::IsInitialized() const { if ((_has_bits_[0] & 0x0000001f) != 0x0000001f) return false; - + return true; } @@ -13220,7 +13776,11 @@ PlayersActionDoneMessage::~PlayersActionDoneMessage() { } void PlayersActionDoneMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -13230,7 +13790,12 @@ void PlayersActionDoneMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const PlayersActionDoneMessage& PlayersActionDoneMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } PlayersActionDoneMessage* PlayersActionDoneMessage::default_instance_ = NULL; @@ -13273,7 +13838,7 @@ bool PlayersActionDoneMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13289,7 +13854,7 @@ bool PlayersActionDoneMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_gameState; break; } - + // required .NetGameState gameState = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13299,8 +13864,8 @@ bool PlayersActionDoneMessage::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (NetGameState_IsValid(value)) { - set_gamestate(static_cast< NetGameState >(value)); + if (::NetGameState_IsValid(value)) { + set_gamestate(static_cast< ::NetGameState >(value)); } } else { goto handle_uninterpreted; @@ -13308,7 +13873,7 @@ bool PlayersActionDoneMessage::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_playerAction; break; } - + // required .NetPlayerAction playerAction = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13318,8 +13883,8 @@ bool PlayersActionDoneMessage::MergePartialFromCodedStream( DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( input, &value))); - if (NetPlayerAction_IsValid(value)) { - set_playeraction(static_cast< NetPlayerAction >(value)); + if (::NetPlayerAction_IsValid(value)) { + set_playeraction(static_cast< ::NetPlayerAction >(value)); } } else { goto handle_uninterpreted; @@ -13327,7 +13892,7 @@ bool PlayersActionDoneMessage::MergePartialFromCodedStream( if (input->ExpectTag(40)) goto parse_totalPlayerBet; break; } - + // required uint32 totalPlayerBet = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13343,7 +13908,7 @@ bool PlayersActionDoneMessage::MergePartialFromCodedStream( if (input->ExpectTag(48)) goto parse_playerMoney; break; } - + // required uint32 playerMoney = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13359,7 +13924,7 @@ bool PlayersActionDoneMessage::MergePartialFromCodedStream( if (input->ExpectTag(56)) goto parse_highestSet; break; } - + // required uint32 highestSet = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13375,7 +13940,7 @@ bool PlayersActionDoneMessage::MergePartialFromCodedStream( if (input->ExpectTag(64)) goto parse_minimumRaise; break; } - + // required uint32 minimumRaise = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13391,7 +13956,7 @@ bool PlayersActionDoneMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13413,49 +13978,49 @@ void PlayersActionDoneMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + // required .NetGameState gameState = 3; if (has_gamestate()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 3, this->gamestate(), output); } - + // required .NetPlayerAction playerAction = 4; if (has_playeraction()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 4, this->playeraction(), output); } - + // required uint32 totalPlayerBet = 5; if (has_totalplayerbet()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->totalplayerbet(), output); } - + // required uint32 playerMoney = 6; if (has_playermoney()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(6, this->playermoney(), output); } - + // required uint32 highestSet = 7; if (has_highestset()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(7, this->highestset(), output); } - + // required uint32 minimumRaise = 8; if (has_minimumraise()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(8, this->minimumraise(), output); } - + } int PlayersActionDoneMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -13463,54 +14028,54 @@ int PlayersActionDoneMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // required .NetGameState gameState = 3; if (has_gamestate()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->gamestate()); } - + // required .NetPlayerAction playerAction = 4; if (has_playeraction()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->playeraction()); } - + // required uint32 totalPlayerBet = 5; if (has_totalplayerbet()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->totalplayerbet()); } - + // required uint32 playerMoney = 6; if (has_playermoney()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playermoney()); } - + // required uint32 highestSet = 7; if (has_highestset()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->highestset()); } - + // required uint32 minimumRaise = 8; if (has_minimumraise()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->minimumraise()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -13561,7 +14126,7 @@ void PlayersActionDoneMessage::CopyFrom(const PlayersActionDoneMessage& from) { bool PlayersActionDoneMessage::IsInitialized() const { if ((_has_bits_[0] & 0x000000ff) != 0x000000ff) return false; - + return true; } @@ -13622,7 +14187,11 @@ DealFlopCardsMessage::~DealFlopCardsMessage() { } void DealFlopCardsMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -13632,7 +14201,12 @@ void DealFlopCardsMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const DealFlopCardsMessage& DealFlopCardsMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } DealFlopCardsMessage* DealFlopCardsMessage::default_instance_ = NULL; @@ -13671,7 +14245,7 @@ bool DealFlopCardsMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_flopCard1; break; } - + // required uint32 flopCard1 = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13687,7 +14261,7 @@ bool DealFlopCardsMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_flopCard2; break; } - + // required uint32 flopCard2 = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13703,7 +14277,7 @@ bool DealFlopCardsMessage::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_flopCard3; break; } - + // required uint32 flopCard3 = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13719,7 +14293,7 @@ bool DealFlopCardsMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13741,27 +14315,27 @@ void DealFlopCardsMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 flopCard1 = 2; if (has_flopcard1()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->flopcard1(), output); } - + // required uint32 flopCard2 = 3; if (has_flopcard2()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->flopcard2(), output); } - + // required uint32 flopCard3 = 4; if (has_flopcard3()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->flopcard3(), output); } - + } int DealFlopCardsMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -13769,28 +14343,28 @@ int DealFlopCardsMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 flopCard1 = 2; if (has_flopcard1()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->flopcard1()); } - + // required uint32 flopCard2 = 3; if (has_flopcard2()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->flopcard2()); } - + // required uint32 flopCard3 = 4; if (has_flopcard3()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->flopcard3()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -13829,7 +14403,7 @@ void DealFlopCardsMessage::CopyFrom(const DealFlopCardsMessage& from) { bool DealFlopCardsMessage::IsInitialized() const { if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false; - + return true; } @@ -13882,7 +14456,11 @@ DealTurnCardMessage::~DealTurnCardMessage() { } void DealTurnCardMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -13892,7 +14470,12 @@ void DealTurnCardMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const DealTurnCardMessage& DealTurnCardMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } DealTurnCardMessage* DealTurnCardMessage::default_instance_ = NULL; @@ -13929,7 +14512,7 @@ bool DealTurnCardMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_turnCard; break; } - + // required uint32 turnCard = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13945,7 +14528,7 @@ bool DealTurnCardMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -13967,17 +14550,17 @@ void DealTurnCardMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 turnCard = 2; if (has_turncard()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->turncard(), output); } - + } int DealTurnCardMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -13985,14 +14568,14 @@ int DealTurnCardMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 turnCard = 2; if (has_turncard()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->turncard()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -14025,7 +14608,7 @@ void DealTurnCardMessage::CopyFrom(const DealTurnCardMessage& from) { bool DealTurnCardMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -14076,7 +14659,11 @@ DealRiverCardMessage::~DealRiverCardMessage() { } void DealRiverCardMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -14086,7 +14673,12 @@ void DealRiverCardMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const DealRiverCardMessage& DealRiverCardMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } DealRiverCardMessage* DealRiverCardMessage::default_instance_ = NULL; @@ -14123,7 +14715,7 @@ bool DealRiverCardMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_riverCard; break; } - + // required uint32 riverCard = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14139,7 +14731,7 @@ bool DealRiverCardMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14161,17 +14753,17 @@ void DealRiverCardMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 riverCard = 2; if (has_rivercard()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->rivercard(), output); } - + } int DealRiverCardMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -14179,14 +14771,14 @@ int DealRiverCardMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 riverCard = 2; if (has_rivercard()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->rivercard()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -14219,7 +14811,7 @@ void DealRiverCardMessage::CopyFrom(const DealRiverCardMessage& from) { bool DealRiverCardMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -14272,7 +14864,11 @@ AllInShowCardsMessage_PlayerAllIn::~AllInShowCardsMessage_PlayerAllIn() { } void AllInShowCardsMessage_PlayerAllIn::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -14282,7 +14878,12 @@ void AllInShowCardsMessage_PlayerAllIn::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AllInShowCardsMessage_PlayerAllIn& AllInShowCardsMessage_PlayerAllIn::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AllInShowCardsMessage_PlayerAllIn* AllInShowCardsMessage_PlayerAllIn::default_instance_ = NULL; @@ -14320,7 +14921,7 @@ bool AllInShowCardsMessage_PlayerAllIn::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_allInCard1; break; } - + // required uint32 allInCard1 = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14336,7 +14937,7 @@ bool AllInShowCardsMessage_PlayerAllIn::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_allInCard2; break; } - + // required uint32 allInCard2 = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14352,7 +14953,7 @@ bool AllInShowCardsMessage_PlayerAllIn::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14374,22 +14975,22 @@ void AllInShowCardsMessage_PlayerAllIn::SerializeWithCachedSizes( if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->playerid(), output); } - + // required uint32 allInCard1 = 2; if (has_allincard1()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->allincard1(), output); } - + // required uint32 allInCard2 = 3; if (has_allincard2()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->allincard2(), output); } - + } int AllInShowCardsMessage_PlayerAllIn::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 playerId = 1; if (has_playerid()) { @@ -14397,21 +14998,21 @@ int AllInShowCardsMessage_PlayerAllIn::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // required uint32 allInCard1 = 2; if (has_allincard1()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->allincard1()); } - + // required uint32 allInCard2 = 3; if (has_allincard2()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->allincard2()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -14447,7 +15048,7 @@ void AllInShowCardsMessage_PlayerAllIn::CopyFrom(const AllInShowCardsMessage_Pla bool AllInShowCardsMessage_PlayerAllIn::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -14498,7 +15099,11 @@ AllInShowCardsMessage::~AllInShowCardsMessage() { } void AllInShowCardsMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -14508,7 +15113,12 @@ void AllInShowCardsMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AllInShowCardsMessage& AllInShowCardsMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AllInShowCardsMessage* AllInShowCardsMessage::default_instance_ = NULL; @@ -14545,7 +15155,7 @@ bool AllInShowCardsMessage::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_playersAllIn; break; } - + // repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14560,7 +15170,7 @@ bool AllInShowCardsMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14582,18 +15192,18 @@ void AllInShowCardsMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; for (int i = 0; i < this->playersallin_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 2, this->playersallin(i), output); } - + } int AllInShowCardsMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -14601,7 +15211,7 @@ int AllInShowCardsMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + } // repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; total_size += 1 * this->playersallin_size(); @@ -14610,7 +15220,7 @@ int AllInShowCardsMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->playersallin(i)); } - + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -14640,7 +15250,7 @@ void AllInShowCardsMessage::CopyFrom(const AllInShowCardsMessage& from) { bool AllInShowCardsMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + for (int i = 0; i < playersallin_size(); i++) { if (!this->playersallin(i).IsInitialized()) return false; } @@ -14693,7 +15303,11 @@ EndOfHandShowCardsMessage::~EndOfHandShowCardsMessage() { } void EndOfHandShowCardsMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -14703,7 +15317,12 @@ void EndOfHandShowCardsMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const EndOfHandShowCardsMessage& EndOfHandShowCardsMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } EndOfHandShowCardsMessage* EndOfHandShowCardsMessage::default_instance_ = NULL; @@ -14740,7 +15359,7 @@ bool EndOfHandShowCardsMessage::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_playerResults; break; } - + // repeated .PlayerResult playerResults = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14755,7 +15374,7 @@ bool EndOfHandShowCardsMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14777,18 +15396,18 @@ void EndOfHandShowCardsMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // repeated .PlayerResult playerResults = 2; for (int i = 0; i < this->playerresults_size(); i++) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 2, this->playerresults(i), output); } - + } int EndOfHandShowCardsMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -14796,7 +15415,7 @@ int EndOfHandShowCardsMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + } // repeated .PlayerResult playerResults = 2; total_size += 1 * this->playerresults_size(); @@ -14805,7 +15424,7 @@ int EndOfHandShowCardsMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->playerresults(i)); } - + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -14835,7 +15454,7 @@ void EndOfHandShowCardsMessage::CopyFrom(const EndOfHandShowCardsMessage& from) bool EndOfHandShowCardsMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + for (int i = 0; i < playerresults_size(); i++) { if (!this->playerresults(i).IsInitialized()) return false; } @@ -14893,7 +15512,11 @@ EndOfHandHideCardsMessage::~EndOfHandHideCardsMessage() { } void EndOfHandHideCardsMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -14903,7 +15526,12 @@ void EndOfHandHideCardsMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const EndOfHandHideCardsMessage& EndOfHandHideCardsMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } EndOfHandHideCardsMessage* EndOfHandHideCardsMessage::default_instance_ = NULL; @@ -14942,7 +15570,7 @@ bool EndOfHandHideCardsMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14958,7 +15586,7 @@ bool EndOfHandHideCardsMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_moneyWon; break; } - + // required uint32 moneyWon = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14974,7 +15602,7 @@ bool EndOfHandHideCardsMessage::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_playerMoney; break; } - + // required uint32 playerMoney = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -14990,7 +15618,7 @@ bool EndOfHandHideCardsMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15012,27 +15640,27 @@ void EndOfHandHideCardsMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + // required uint32 moneyWon = 3; if (has_moneywon()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->moneywon(), output); } - + // required uint32 playerMoney = 4; if (has_playermoney()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->playermoney(), output); } - + } int EndOfHandHideCardsMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -15040,28 +15668,28 @@ int EndOfHandHideCardsMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // required uint32 moneyWon = 3; if (has_moneywon()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->moneywon()); } - + // required uint32 playerMoney = 4; if (has_playermoney()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playermoney()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -15100,7 +15728,7 @@ void EndOfHandHideCardsMessage::CopyFrom(const EndOfHandHideCardsMessage& from) bool EndOfHandHideCardsMessage::IsInitialized() const { if ((_has_bits_[0] & 0x0000000f) != 0x0000000f) return false; - + return true; } @@ -15149,7 +15777,11 @@ ShowMyCardsRequestMessage::~ShowMyCardsRequestMessage() { } void ShowMyCardsRequestMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -15159,7 +15791,12 @@ void ShowMyCardsRequestMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const ShowMyCardsRequestMessage& ShowMyCardsRequestMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } ShowMyCardsRequestMessage* ShowMyCardsRequestMessage::default_instance_ = NULL; @@ -15193,7 +15830,7 @@ void ShowMyCardsRequestMessage::SerializeWithCachedSizes( int ShowMyCardsRequestMessage::ByteSize() const { int total_size = 0; - + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -15216,7 +15853,7 @@ void ShowMyCardsRequestMessage::CopyFrom(const ShowMyCardsRequestMessage& from) } bool ShowMyCardsRequestMessage::IsInitialized() const { - + return true; } @@ -15243,7 +15880,12 @@ AfterHandShowCardsMessage::AfterHandShowCardsMessage() } void AfterHandShowCardsMessage::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + playerresult_ = const_cast< ::PlayerResult*>( + ::PlayerResult::internal_default_instance()); +#else playerresult_ = const_cast< ::PlayerResult*>(&::PlayerResult::default_instance()); +#endif } AfterHandShowCardsMessage::AfterHandShowCardsMessage(const AfterHandShowCardsMessage& from) @@ -15263,7 +15905,11 @@ AfterHandShowCardsMessage::~AfterHandShowCardsMessage() { } void AfterHandShowCardsMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif delete playerresult_; } } @@ -15274,7 +15920,12 @@ void AfterHandShowCardsMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AfterHandShowCardsMessage& AfterHandShowCardsMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AfterHandShowCardsMessage* AfterHandShowCardsMessage::default_instance_ = NULL; @@ -15310,7 +15961,7 @@ bool AfterHandShowCardsMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15333,12 +15984,12 @@ void AfterHandShowCardsMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessage( 1, this->playerresult(), output); } - + } int AfterHandShowCardsMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .PlayerResult playerResult = 1; if (has_playerresult()) { @@ -15346,7 +15997,7 @@ int AfterHandShowCardsMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->playerresult()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -15376,7 +16027,7 @@ void AfterHandShowCardsMessage::CopyFrom(const AfterHandShowCardsMessage& from) bool AfterHandShowCardsMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + if (has_playerresult()) { if (!this->playerresult().IsInitialized()) return false; } @@ -15429,7 +16080,11 @@ EndOfGameMessage::~EndOfGameMessage() { } void EndOfGameMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -15439,7 +16094,12 @@ void EndOfGameMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const EndOfGameMessage& EndOfGameMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } EndOfGameMessage* EndOfGameMessage::default_instance_ = NULL; @@ -15476,7 +16136,7 @@ bool EndOfGameMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_winnerPlayerId; break; } - + // required uint32 winnerPlayerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15492,7 +16152,7 @@ bool EndOfGameMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15514,17 +16174,17 @@ void EndOfGameMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 winnerPlayerId = 2; if (has_winnerplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->winnerplayerid(), output); } - + } int EndOfGameMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -15532,14 +16192,14 @@ int EndOfGameMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 winnerPlayerId = 2; if (has_winnerplayerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->winnerplayerid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -15572,7 +16232,7 @@ void EndOfGameMessage::CopyFrom(const EndOfGameMessage& from) { bool EndOfGameMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -15623,7 +16283,11 @@ PlayerIdChangedMessage::~PlayerIdChangedMessage() { } void PlayerIdChangedMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -15633,7 +16297,12 @@ void PlayerIdChangedMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const PlayerIdChangedMessage& PlayerIdChangedMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } PlayerIdChangedMessage* PlayerIdChangedMessage::default_instance_ = NULL; @@ -15670,7 +16339,7 @@ bool PlayerIdChangedMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_newPlayerId; break; } - + // required uint32 newPlayerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15686,7 +16355,7 @@ bool PlayerIdChangedMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15708,17 +16377,17 @@ void PlayerIdChangedMessage::SerializeWithCachedSizes( if (has_oldplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->oldplayerid(), output); } - + // required uint32 newPlayerId = 2; if (has_newplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->newplayerid(), output); } - + } int PlayerIdChangedMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 oldPlayerId = 1; if (has_oldplayerid()) { @@ -15726,14 +16395,14 @@ int PlayerIdChangedMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->oldplayerid()); } - + // required uint32 newPlayerId = 2; if (has_newplayerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->newplayerid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -15766,7 +16435,7 @@ void PlayerIdChangedMessage::CopyFrom(const PlayerIdChangedMessage& from) { bool PlayerIdChangedMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -15817,7 +16486,11 @@ AskKickPlayerMessage::~AskKickPlayerMessage() { } void AskKickPlayerMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -15827,7 +16500,12 @@ void AskKickPlayerMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AskKickPlayerMessage& AskKickPlayerMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AskKickPlayerMessage* AskKickPlayerMessage::default_instance_ = NULL; @@ -15864,7 +16542,7 @@ bool AskKickPlayerMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15880,7 +16558,7 @@ bool AskKickPlayerMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -15902,17 +16580,17 @@ void AskKickPlayerMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + } int AskKickPlayerMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -15920,14 +16598,14 @@ int AskKickPlayerMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -15960,7 +16638,7 @@ void AskKickPlayerMessage::CopyFrom(const AskKickPlayerMessage& from) { bool AskKickPlayerMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -16036,7 +16714,11 @@ AskKickDeniedMessage::~AskKickDeniedMessage() { } void AskKickDeniedMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -16046,7 +16728,12 @@ void AskKickDeniedMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AskKickDeniedMessage& AskKickDeniedMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AskKickDeniedMessage* AskKickDeniedMessage::default_instance_ = NULL; @@ -16084,7 +16771,7 @@ bool AskKickDeniedMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // required uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16100,7 +16787,7 @@ bool AskKickDeniedMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_kickDeniedReason; break; } - + // required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16119,7 +16806,7 @@ bool AskKickDeniedMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16141,23 +16828,23 @@ void AskKickDeniedMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + // required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; if (has_kickdeniedreason()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 3, this->kickdeniedreason(), output); } - + } int AskKickDeniedMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -16165,20 +16852,20 @@ int AskKickDeniedMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; if (has_kickdeniedreason()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->kickdeniedreason()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -16214,7 +16901,7 @@ void AskKickDeniedMessage::CopyFrom(const AskKickDeniedMessage& from) { bool AskKickDeniedMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -16274,7 +16961,11 @@ StartKickPetitionMessage::~StartKickPetitionMessage() { } void StartKickPetitionMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -16284,7 +16975,12 @@ void StartKickPetitionMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const StartKickPetitionMessage& StartKickPetitionMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } StartKickPetitionMessage* StartKickPetitionMessage::default_instance_ = NULL; @@ -16325,7 +17021,7 @@ bool StartKickPetitionMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_petitionId; break; } - + // required uint32 petitionId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16341,7 +17037,7 @@ bool StartKickPetitionMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_proposingPlayerId; break; } - + // required uint32 proposingPlayerId = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16357,7 +17053,7 @@ bool StartKickPetitionMessage::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_kickPlayerId; break; } - + // required uint32 kickPlayerId = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16373,7 +17069,7 @@ bool StartKickPetitionMessage::MergePartialFromCodedStream( if (input->ExpectTag(40)) goto parse_kickTimeoutSec; break; } - + // required uint32 kickTimeoutSec = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16389,7 +17085,7 @@ bool StartKickPetitionMessage::MergePartialFromCodedStream( if (input->ExpectTag(48)) goto parse_numVotesNeededToKick; break; } - + // required uint32 numVotesNeededToKick = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16405,7 +17101,7 @@ bool StartKickPetitionMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16427,37 +17123,37 @@ void StartKickPetitionMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 petitionId = 2; if (has_petitionid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->petitionid(), output); } - + // required uint32 proposingPlayerId = 3; if (has_proposingplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->proposingplayerid(), output); } - + // required uint32 kickPlayerId = 4; if (has_kickplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->kickplayerid(), output); } - + // required uint32 kickTimeoutSec = 5; if (has_kicktimeoutsec()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->kicktimeoutsec(), output); } - + // required uint32 numVotesNeededToKick = 6; if (has_numvotesneededtokick()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(6, this->numvotesneededtokick(), output); } - + } int StartKickPetitionMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -16465,42 +17161,42 @@ int StartKickPetitionMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 petitionId = 2; if (has_petitionid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->petitionid()); } - + // required uint32 proposingPlayerId = 3; if (has_proposingplayerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->proposingplayerid()); } - + // required uint32 kickPlayerId = 4; if (has_kickplayerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->kickplayerid()); } - + // required uint32 kickTimeoutSec = 5; if (has_kicktimeoutsec()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->kicktimeoutsec()); } - + // required uint32 numVotesNeededToKick = 6; if (has_numvotesneededtokick()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->numvotesneededtokick()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -16545,7 +17241,7 @@ void StartKickPetitionMessage::CopyFrom(const StartKickPetitionMessage& from) { bool StartKickPetitionMessage::IsInitialized() const { if ((_has_bits_[0] & 0x0000003f) != 0x0000003f) return false; - + return true; } @@ -16602,7 +17298,11 @@ VoteKickRequestMessage::~VoteKickRequestMessage() { } void VoteKickRequestMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -16612,7 +17312,12 @@ void VoteKickRequestMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const VoteKickRequestMessage& VoteKickRequestMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } VoteKickRequestMessage* VoteKickRequestMessage::default_instance_ = NULL; @@ -16650,7 +17355,7 @@ bool VoteKickRequestMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_petitionId; break; } - + // required uint32 petitionId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16666,7 +17371,7 @@ bool VoteKickRequestMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_voteKick; break; } - + // required bool voteKick = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16682,7 +17387,7 @@ bool VoteKickRequestMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16704,22 +17409,22 @@ void VoteKickRequestMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 petitionId = 2; if (has_petitionid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->petitionid(), output); } - + // required bool voteKick = 3; if (has_votekick()) { ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->votekick(), output); } - + } int VoteKickRequestMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -16727,19 +17432,19 @@ int VoteKickRequestMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 petitionId = 2; if (has_petitionid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->petitionid()); } - + // required bool voteKick = 3; if (has_votekick()) { total_size += 1 + 1; } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -16775,7 +17480,7 @@ void VoteKickRequestMessage::CopyFrom(const VoteKickRequestMessage& from) { bool VoteKickRequestMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -16848,7 +17553,11 @@ VoteKickReplyMessage::~VoteKickReplyMessage() { } void VoteKickReplyMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -16858,7 +17567,12 @@ void VoteKickReplyMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const VoteKickReplyMessage& VoteKickReplyMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } VoteKickReplyMessage* VoteKickReplyMessage::default_instance_ = NULL; @@ -16896,7 +17610,7 @@ bool VoteKickReplyMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_petitionId; break; } - + // required uint32 petitionId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16912,7 +17626,7 @@ bool VoteKickReplyMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_voteKickReplyType; break; } - + // required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16931,7 +17645,7 @@ bool VoteKickReplyMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -16953,23 +17667,23 @@ void VoteKickReplyMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 petitionId = 2; if (has_petitionid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->petitionid(), output); } - + // required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; if (has_votekickreplytype()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 3, this->votekickreplytype(), output); } - + } int VoteKickReplyMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -16977,20 +17691,20 @@ int VoteKickReplyMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 petitionId = 2; if (has_petitionid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->petitionid()); } - + // required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; if (has_votekickreplytype()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->votekickreplytype()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -17026,7 +17740,7 @@ void VoteKickReplyMessage::CopyFrom(const VoteKickReplyMessage& from) { bool VoteKickReplyMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000007) != 0x00000007) return false; - + return true; } @@ -17084,7 +17798,11 @@ KickPetitionUpdateMessage::~KickPetitionUpdateMessage() { } void KickPetitionUpdateMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -17094,7 +17812,12 @@ void KickPetitionUpdateMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const KickPetitionUpdateMessage& KickPetitionUpdateMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } KickPetitionUpdateMessage* KickPetitionUpdateMessage::default_instance_ = NULL; @@ -17134,7 +17857,7 @@ bool KickPetitionUpdateMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_petitionId; break; } - + // required uint32 petitionId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17150,7 +17873,7 @@ bool KickPetitionUpdateMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_numVotesAgainstKicking; break; } - + // required uint32 numVotesAgainstKicking = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17166,7 +17889,7 @@ bool KickPetitionUpdateMessage::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_numVotesInFavourOfKicking; break; } - + // required uint32 numVotesInFavourOfKicking = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17182,7 +17905,7 @@ bool KickPetitionUpdateMessage::MergePartialFromCodedStream( if (input->ExpectTag(40)) goto parse_numVotesNeededToKick; break; } - + // required uint32 numVotesNeededToKick = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17198,7 +17921,7 @@ bool KickPetitionUpdateMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17220,32 +17943,32 @@ void KickPetitionUpdateMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 petitionId = 2; if (has_petitionid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->petitionid(), output); } - + // required uint32 numVotesAgainstKicking = 3; if (has_numvotesagainstkicking()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->numvotesagainstkicking(), output); } - + // required uint32 numVotesInFavourOfKicking = 4; if (has_numvotesinfavourofkicking()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->numvotesinfavourofkicking(), output); } - + // required uint32 numVotesNeededToKick = 5; if (has_numvotesneededtokick()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->numvotesneededtokick(), output); } - + } int KickPetitionUpdateMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -17253,35 +17976,35 @@ int KickPetitionUpdateMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 petitionId = 2; if (has_petitionid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->petitionid()); } - + // required uint32 numVotesAgainstKicking = 3; if (has_numvotesagainstkicking()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->numvotesagainstkicking()); } - + // required uint32 numVotesInFavourOfKicking = 4; if (has_numvotesinfavourofkicking()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->numvotesinfavourofkicking()); } - + // required uint32 numVotesNeededToKick = 5; if (has_numvotesneededtokick()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->numvotesneededtokick()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -17323,7 +18046,7 @@ void KickPetitionUpdateMessage::CopyFrom(const KickPetitionUpdateMessage& from) bool KickPetitionUpdateMessage::IsInitialized() const { if ((_has_bits_[0] & 0x0000001f) != 0x0000001f) return false; - + return true; } @@ -17406,7 +18129,11 @@ EndKickPetitionMessage::~EndKickPetitionMessage() { } void EndKickPetitionMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -17416,7 +18143,12 @@ void EndKickPetitionMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const EndKickPetitionMessage& EndKickPetitionMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } EndKickPetitionMessage* EndKickPetitionMessage::default_instance_ = NULL; @@ -17457,7 +18189,7 @@ bool EndKickPetitionMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_petitionId; break; } - + // required uint32 petitionId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17473,7 +18205,7 @@ bool EndKickPetitionMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_numVotesAgainstKicking; break; } - + // required uint32 numVotesAgainstKicking = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17489,7 +18221,7 @@ bool EndKickPetitionMessage::MergePartialFromCodedStream( if (input->ExpectTag(32)) goto parse_numVotesInFavourOfKicking; break; } - + // required uint32 numVotesInFavourOfKicking = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17505,7 +18237,7 @@ bool EndKickPetitionMessage::MergePartialFromCodedStream( if (input->ExpectTag(40)) goto parse_resultPlayerKicked; break; } - + // required uint32 resultPlayerKicked = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17521,7 +18253,7 @@ bool EndKickPetitionMessage::MergePartialFromCodedStream( if (input->ExpectTag(48)) goto parse_petitionEndReason; break; } - + // required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17540,7 +18272,7 @@ bool EndKickPetitionMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17562,38 +18294,38 @@ void EndKickPetitionMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // required uint32 petitionId = 2; if (has_petitionid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->petitionid(), output); } - + // required uint32 numVotesAgainstKicking = 3; if (has_numvotesagainstkicking()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->numvotesagainstkicking(), output); } - + // required uint32 numVotesInFavourOfKicking = 4; if (has_numvotesinfavourofkicking()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->numvotesinfavourofkicking(), output); } - + // required uint32 resultPlayerKicked = 5; if (has_resultplayerkicked()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(5, this->resultplayerkicked(), output); } - + // required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; if (has_petitionendreason()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 6, this->petitionendreason(), output); } - + } int EndKickPetitionMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 gameId = 1; if (has_gameid()) { @@ -17601,41 +18333,41 @@ int EndKickPetitionMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // required uint32 petitionId = 2; if (has_petitionid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->petitionid()); } - + // required uint32 numVotesAgainstKicking = 3; if (has_numvotesagainstkicking()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->numvotesagainstkicking()); } - + // required uint32 numVotesInFavourOfKicking = 4; if (has_numvotesinfavourofkicking()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->numvotesinfavourofkicking()); } - + // required uint32 resultPlayerKicked = 5; if (has_resultplayerkicked()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->resultplayerkicked()); } - + // required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; if (has_petitionendreason()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->petitionendreason()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -17680,7 +18412,7 @@ void EndKickPetitionMessage::CopyFrom(const EndKickPetitionMessage& from) { bool EndKickPetitionMessage::IsInitialized() const { if ((_has_bits_[0] & 0x0000003f) != 0x0000003f) return false; - + return true; } @@ -17750,7 +18482,11 @@ StatisticsMessage_StatisticsData::~StatisticsMessage_StatisticsData() { } void StatisticsMessage_StatisticsData::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -17760,7 +18496,12 @@ void StatisticsMessage_StatisticsData::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const StatisticsMessage_StatisticsData& StatisticsMessage_StatisticsData::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } StatisticsMessage_StatisticsData* StatisticsMessage_StatisticsData::default_instance_ = NULL; @@ -17800,7 +18541,7 @@ bool StatisticsMessage_StatisticsData::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_statisticsValue; break; } - + // required uint32 statisticsValue = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17816,7 +18557,7 @@ bool StatisticsMessage_StatisticsData::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -17839,31 +18580,31 @@ void StatisticsMessage_StatisticsData::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteEnum( 1, this->statisticstype(), output); } - + // required uint32 statisticsValue = 2; if (has_statisticsvalue()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->statisticsvalue(), output); } - + } int StatisticsMessage_StatisticsData::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; if (has_statisticstype()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->statisticstype()); } - + // required uint32 statisticsValue = 2; if (has_statisticsvalue()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->statisticsvalue()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -17896,7 +18637,7 @@ void StatisticsMessage_StatisticsData::CopyFrom(const StatisticsMessage_Statisti bool StatisticsMessage_StatisticsData::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -17944,7 +18685,11 @@ StatisticsMessage::~StatisticsMessage() { } void StatisticsMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -17954,7 +18699,12 @@ void StatisticsMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const StatisticsMessage& StatisticsMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } StatisticsMessage* StatisticsMessage::default_instance_ = NULL; @@ -17988,7 +18738,7 @@ bool StatisticsMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -18011,12 +18761,12 @@ void StatisticsMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteMessage( 1, this->statisticsdata(i), output); } - + } int StatisticsMessage::ByteSize() const { int total_size = 0; - + // repeated .StatisticsMessage.StatisticsData statisticsData = 1; total_size += 1 * this->statisticsdata_size(); for (int i = 0; i < this->statisticsdata_size(); i++) { @@ -18024,7 +18774,7 @@ int StatisticsMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->statisticsdata(i)); } - + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -18048,7 +18798,7 @@ void StatisticsMessage::CopyFrom(const StatisticsMessage& from) { } bool StatisticsMessage::IsInitialized() const { - + for (int i = 0; i < statisticsdata_size(); i++) { if (!this->statisticsdata(i).IsInitialized()) return false; } @@ -18106,7 +18856,11 @@ void ChatRequestMessage::SharedDtor() { if (chattext_ != &::google::protobuf::internal::kEmptyString) { delete chattext_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -18116,7 +18870,12 @@ void ChatRequestMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const ChatRequestMessage& ChatRequestMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } ChatRequestMessage* ChatRequestMessage::default_instance_ = NULL; @@ -18158,7 +18917,7 @@ bool ChatRequestMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_targetPlayerId; break; } - + // optional uint32 targetPlayerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -18174,7 +18933,7 @@ bool ChatRequestMessage::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_chatText; break; } - + // required string chatText = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -18188,7 +18947,7 @@ bool ChatRequestMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -18210,23 +18969,23 @@ void ChatRequestMessage::SerializeWithCachedSizes( if (has_targetgameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->targetgameid(), output); } - + // optional uint32 targetPlayerId = 2; if (has_targetplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->targetplayerid(), output); } - + // required string chatText = 3; if (has_chattext()) { ::google::protobuf::internal::WireFormatLite::WriteString( 3, this->chattext(), output); } - + } int ChatRequestMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional uint32 targetGameId = 1; if (has_targetgameid()) { @@ -18234,21 +18993,21 @@ int ChatRequestMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->targetgameid()); } - + // optional uint32 targetPlayerId = 2; if (has_targetplayerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->targetplayerid()); } - + // required string chatText = 3; if (has_chattext()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->chattext()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -18284,7 +19043,7 @@ void ChatRequestMessage::CopyFrom(const ChatRequestMessage& from) { bool ChatRequestMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000004) != 0x00000004) return false; - + return true; } @@ -18366,7 +19125,11 @@ void ChatMessage::SharedDtor() { if (chattext_ != &::google::protobuf::internal::kEmptyString) { delete chattext_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -18376,7 +19139,12 @@ void ChatMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const ChatMessage& ChatMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } ChatMessage* ChatMessage::default_instance_ = NULL; @@ -18419,7 +19187,7 @@ bool ChatMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_playerId; break; } - + // optional uint32 playerId = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -18435,7 +19203,7 @@ bool ChatMessage::MergePartialFromCodedStream( if (input->ExpectTag(24)) goto parse_chatType; break; } - + // required .ChatMessage.ChatType chatType = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -18454,7 +19222,7 @@ bool ChatMessage::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_chatText; break; } - + // required string chatText = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -18468,7 +19236,7 @@ bool ChatMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -18490,29 +19258,29 @@ void ChatMessage::SerializeWithCachedSizes( if (has_gameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->gameid(), output); } - + // optional uint32 playerId = 2; if (has_playerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->playerid(), output); } - + // required .ChatMessage.ChatType chatType = 3; if (has_chattype()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 3, this->chattype(), output); } - + // required string chatText = 4; if (has_chattext()) { ::google::protobuf::internal::WireFormatLite::WriteString( 4, this->chattext(), output); } - + } int ChatMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // optional uint32 gameId = 1; if (has_gameid()) { @@ -18520,27 +19288,27 @@ int ChatMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->gameid()); } - + // optional uint32 playerId = 2; if (has_playerid()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->playerid()); } - + // required .ChatMessage.ChatType chatType = 3; if (has_chattype()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->chattype()); } - + // required string chatText = 4; if (has_chattext()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::StringSize( this->chattext()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -18579,7 +19347,7 @@ void ChatMessage::CopyFrom(const ChatMessage& from) { bool ChatMessage::IsInitialized() const { if ((_has_bits_[0] & 0x0000000c) != 0x0000000c) return false; - + return true; } @@ -18633,7 +19401,11 @@ void ChatRejectMessage::SharedDtor() { if (chattext_ != &::google::protobuf::internal::kEmptyString) { delete chattext_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -18643,7 +19415,12 @@ void ChatRejectMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const ChatRejectMessage& ChatRejectMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } ChatRejectMessage* ChatRejectMessage::default_instance_ = NULL; @@ -18681,7 +19458,7 @@ bool ChatRejectMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -18704,12 +19481,12 @@ void ChatRejectMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->chattext(), output); } - + } int ChatRejectMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string chatText = 1; if (has_chattext()) { @@ -18717,7 +19494,7 @@ int ChatRejectMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->chattext()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -18747,7 +19524,7 @@ void ChatRejectMessage::CopyFrom(const ChatRejectMessage& from) { bool ChatRejectMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -18798,7 +19575,11 @@ void DialogMessage::SharedDtor() { if (notificationtext_ != &::google::protobuf::internal::kEmptyString) { delete notificationtext_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -18808,7 +19589,12 @@ void DialogMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const DialogMessage& DialogMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } DialogMessage* DialogMessage::default_instance_ = NULL; @@ -18846,7 +19632,7 @@ bool DialogMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -18869,12 +19655,12 @@ void DialogMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteString( 1, this->notificationtext(), output); } - + } int DialogMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required string notificationText = 1; if (has_notificationtext()) { @@ -18882,7 +19668,7 @@ int DialogMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::StringSize( this->notificationtext()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -18912,7 +19698,7 @@ void DialogMessage::CopyFrom(const DialogMessage& from) { bool DialogMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -18981,7 +19767,11 @@ TimeoutWarningMessage::~TimeoutWarningMessage() { } void TimeoutWarningMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -18991,7 +19781,12 @@ void TimeoutWarningMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const TimeoutWarningMessage& TimeoutWarningMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } TimeoutWarningMessage* TimeoutWarningMessage::default_instance_ = NULL; @@ -19031,7 +19826,7 @@ bool TimeoutWarningMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_remainingSeconds; break; } - + // required uint32 remainingSeconds = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -19047,7 +19842,7 @@ bool TimeoutWarningMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -19070,31 +19865,31 @@ void TimeoutWarningMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteEnum( 1, this->timeoutreason(), output); } - + // required uint32 remainingSeconds = 2; if (has_remainingseconds()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->remainingseconds(), output); } - + } int TimeoutWarningMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; if (has_timeoutreason()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->timeoutreason()); } - + // required uint32 remainingSeconds = 2; if (has_remainingseconds()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::UInt32Size( this->remainingseconds()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -19127,7 +19922,7 @@ void TimeoutWarningMessage::CopyFrom(const TimeoutWarningMessage& from) { bool TimeoutWarningMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -19174,7 +19969,11 @@ ResetTimeoutMessage::~ResetTimeoutMessage() { } void ResetTimeoutMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -19184,7 +19983,12 @@ void ResetTimeoutMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const ResetTimeoutMessage& ResetTimeoutMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } ResetTimeoutMessage* ResetTimeoutMessage::default_instance_ = NULL; @@ -19218,7 +20022,7 @@ void ResetTimeoutMessage::SerializeWithCachedSizes( int ResetTimeoutMessage::ByteSize() const { int total_size = 0; - + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -19241,7 +20045,7 @@ void ResetTimeoutMessage::CopyFrom(const ResetTimeoutMessage& from) { } bool ResetTimeoutMessage::IsInitialized() const { - + return true; } @@ -19292,7 +20096,11 @@ void ReportAvatarMessage::SharedDtor() { if (reportedavatarhash_ != &::google::protobuf::internal::kEmptyString) { delete reportedavatarhash_; } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -19302,7 +20110,12 @@ void ReportAvatarMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const ReportAvatarMessage& ReportAvatarMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } ReportAvatarMessage* ReportAvatarMessage::default_instance_ = NULL; @@ -19343,7 +20156,7 @@ bool ReportAvatarMessage::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_reportedAvatarHash; break; } - + // required bytes reportedAvatarHash = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -19357,7 +20170,7 @@ bool ReportAvatarMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -19379,18 +20192,18 @@ void ReportAvatarMessage::SerializeWithCachedSizes( if (has_reportedplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->reportedplayerid(), output); } - + // required bytes reportedAvatarHash = 2; if (has_reportedavatarhash()) { ::google::protobuf::internal::WireFormatLite::WriteBytes( 2, this->reportedavatarhash(), output); } - + } int ReportAvatarMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 reportedPlayerId = 1; if (has_reportedplayerid()) { @@ -19398,14 +20211,14 @@ int ReportAvatarMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->reportedplayerid()); } - + // required bytes reportedAvatarHash = 2; if (has_reportedavatarhash()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::BytesSize( this->reportedavatarhash()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -19438,7 +20251,7 @@ void ReportAvatarMessage::CopyFrom(const ReportAvatarMessage& from) { bool ReportAvatarMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -19508,7 +20321,11 @@ ReportAvatarAckMessage::~ReportAvatarAckMessage() { } void ReportAvatarAckMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -19518,7 +20335,12 @@ void ReportAvatarAckMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const ReportAvatarAckMessage& ReportAvatarAckMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } ReportAvatarAckMessage* ReportAvatarAckMessage::default_instance_ = NULL; @@ -19555,7 +20377,7 @@ bool ReportAvatarAckMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_reportAvatarResult; break; } - + // required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -19574,7 +20396,7 @@ bool ReportAvatarAckMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -19596,18 +20418,18 @@ void ReportAvatarAckMessage::SerializeWithCachedSizes( if (has_reportedplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->reportedplayerid(), output); } - + // required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; if (has_reportavatarresult()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->reportavatarresult(), output); } - + } int ReportAvatarAckMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 reportedPlayerId = 1; if (has_reportedplayerid()) { @@ -19615,13 +20437,13 @@ int ReportAvatarAckMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->reportedplayerid()); } - + // required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; if (has_reportavatarresult()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->reportavatarresult()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -19654,7 +20476,7 @@ void ReportAvatarAckMessage::CopyFrom(const ReportAvatarAckMessage& from) { bool ReportAvatarAckMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -19703,7 +20525,11 @@ ReportGameMessage::~ReportGameMessage() { } void ReportGameMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -19713,7 +20539,12 @@ void ReportGameMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const ReportGameMessage& ReportGameMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } ReportGameMessage* ReportGameMessage::default_instance_ = NULL; @@ -19749,7 +20580,7 @@ bool ReportGameMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -19771,12 +20602,12 @@ void ReportGameMessage::SerializeWithCachedSizes( if (has_reportedgameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->reportedgameid(), output); } - + } int ReportGameMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 reportedGameId = 1; if (has_reportedgameid()) { @@ -19784,7 +20615,7 @@ int ReportGameMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->reportedgameid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -19814,7 +20645,7 @@ void ReportGameMessage::CopyFrom(const ReportGameMessage& from) { bool ReportGameMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -19883,7 +20714,11 @@ ReportGameAckMessage::~ReportGameAckMessage() { } void ReportGameAckMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -19893,7 +20728,12 @@ void ReportGameAckMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const ReportGameAckMessage& ReportGameAckMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } ReportGameAckMessage* ReportGameAckMessage::default_instance_ = NULL; @@ -19930,7 +20770,7 @@ bool ReportGameAckMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_reportGameResult; break; } - + // required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -19949,7 +20789,7 @@ bool ReportGameAckMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -19971,18 +20811,18 @@ void ReportGameAckMessage::SerializeWithCachedSizes( if (has_reportedgameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->reportedgameid(), output); } - + // required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; if (has_reportgameresult()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->reportgameresult(), output); } - + } int ReportGameAckMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 reportedGameId = 1; if (has_reportedgameid()) { @@ -19990,13 +20830,13 @@ int ReportGameAckMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->reportedgameid()); } - + // required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; if (has_reportgameresult()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->reportgameresult()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -20029,7 +20869,7 @@ void ReportGameAckMessage::CopyFrom(const ReportGameAckMessage& from) { bool ReportGameAckMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -20121,7 +20961,11 @@ ErrorMessage::~ErrorMessage() { } void ErrorMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -20131,7 +20975,12 @@ void ErrorMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const ErrorMessage& ErrorMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } ErrorMessage* ErrorMessage::default_instance_ = NULL; @@ -20170,7 +21019,7 @@ bool ErrorMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -20193,19 +21042,19 @@ void ErrorMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteEnum( 1, this->errorreason(), output); } - + } int ErrorMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .ErrorMessage.ErrorReason errorReason = 1; if (has_errorreason()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->errorreason()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -20235,7 +21084,7 @@ void ErrorMessage::CopyFrom(const ErrorMessage& from) { bool ErrorMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -20283,7 +21132,11 @@ AdminRemoveGameMessage::~AdminRemoveGameMessage() { } void AdminRemoveGameMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -20293,7 +21146,12 @@ void AdminRemoveGameMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AdminRemoveGameMessage& AdminRemoveGameMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AdminRemoveGameMessage* AdminRemoveGameMessage::default_instance_ = NULL; @@ -20329,7 +21187,7 @@ bool AdminRemoveGameMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -20351,12 +21209,12 @@ void AdminRemoveGameMessage::SerializeWithCachedSizes( if (has_removegameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->removegameid(), output); } - + } int AdminRemoveGameMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 removeGameId = 1; if (has_removegameid()) { @@ -20364,7 +21222,7 @@ int AdminRemoveGameMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->removegameid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -20394,7 +21252,7 @@ void AdminRemoveGameMessage::CopyFrom(const AdminRemoveGameMessage& from) { bool AdminRemoveGameMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -20461,7 +21319,11 @@ AdminRemoveGameAckMessage::~AdminRemoveGameAckMessage() { } void AdminRemoveGameAckMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -20471,7 +21333,12 @@ void AdminRemoveGameAckMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AdminRemoveGameAckMessage& AdminRemoveGameAckMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AdminRemoveGameAckMessage* AdminRemoveGameAckMessage::default_instance_ = NULL; @@ -20508,7 +21375,7 @@ bool AdminRemoveGameAckMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_removeGameResult; break; } - + // required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -20527,7 +21394,7 @@ bool AdminRemoveGameAckMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -20549,18 +21416,18 @@ void AdminRemoveGameAckMessage::SerializeWithCachedSizes( if (has_removegameid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->removegameid(), output); } - + // required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; if (has_removegameresult()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->removegameresult(), output); } - + } int AdminRemoveGameAckMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 removeGameId = 1; if (has_removegameid()) { @@ -20568,13 +21435,13 @@ int AdminRemoveGameAckMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->removegameid()); } - + // required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; if (has_removegameresult()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->removegameresult()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -20607,7 +21474,7 @@ void AdminRemoveGameAckMessage::CopyFrom(const AdminRemoveGameAckMessage& from) bool AdminRemoveGameAckMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -20656,7 +21523,11 @@ AdminBanPlayerMessage::~AdminBanPlayerMessage() { } void AdminBanPlayerMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -20666,7 +21537,12 @@ void AdminBanPlayerMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AdminBanPlayerMessage& AdminBanPlayerMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AdminBanPlayerMessage* AdminBanPlayerMessage::default_instance_ = NULL; @@ -20702,7 +21578,7 @@ bool AdminBanPlayerMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -20724,12 +21600,12 @@ void AdminBanPlayerMessage::SerializeWithCachedSizes( if (has_banplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->banplayerid(), output); } - + } int AdminBanPlayerMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 banPlayerId = 1; if (has_banplayerid()) { @@ -20737,7 +21613,7 @@ int AdminBanPlayerMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->banplayerid()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -20767,7 +21643,7 @@ void AdminBanPlayerMessage::CopyFrom(const AdminBanPlayerMessage& from) { bool AdminBanPlayerMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + return true; } @@ -20840,7 +21716,11 @@ AdminBanPlayerAckMessage::~AdminBanPlayerAckMessage() { } void AdminBanPlayerAckMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif } } @@ -20850,7 +21730,12 @@ void AdminBanPlayerAckMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const AdminBanPlayerAckMessage& AdminBanPlayerAckMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } AdminBanPlayerAckMessage* AdminBanPlayerAckMessage::default_instance_ = NULL; @@ -20887,7 +21772,7 @@ bool AdminBanPlayerAckMessage::MergePartialFromCodedStream( if (input->ExpectTag(16)) goto parse_banPlayerResult; break; } - + // required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -20906,7 +21791,7 @@ bool AdminBanPlayerAckMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -20928,18 +21813,18 @@ void AdminBanPlayerAckMessage::SerializeWithCachedSizes( if (has_banplayerid()) { ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->banplayerid(), output); } - + // required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; if (has_banplayerresult()) { ::google::protobuf::internal::WireFormatLite::WriteEnum( 2, this->banplayerresult(), output); } - + } int AdminBanPlayerAckMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required uint32 banPlayerId = 1; if (has_banplayerid()) { @@ -20947,13 +21832,13 @@ int AdminBanPlayerAckMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::UInt32Size( this->banplayerid()); } - + // required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; if (has_banplayerresult()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->banplayerresult()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -20986,7 +21871,7 @@ void AdminBanPlayerAckMessage::CopyFrom(const AdminBanPlayerAckMessage& from) { bool AdminBanPlayerAckMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; - + return true; } @@ -21272,87 +22157,492 @@ PokerTHMessage::PokerTHMessage() } void PokerTHMessage::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + announcemessage_ = const_cast< ::AnnounceMessage*>( + ::AnnounceMessage::internal_default_instance()); +#else announcemessage_ = const_cast< ::AnnounceMessage*>(&::AnnounceMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + initmessage_ = const_cast< ::InitMessage*>( + ::InitMessage::internal_default_instance()); +#else initmessage_ = const_cast< ::InitMessage*>(&::InitMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + authserverchallengemessage_ = const_cast< ::AuthServerChallengeMessage*>( + ::AuthServerChallengeMessage::internal_default_instance()); +#else authserverchallengemessage_ = const_cast< ::AuthServerChallengeMessage*>(&::AuthServerChallengeMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + authclientresponsemessage_ = const_cast< ::AuthClientResponseMessage*>( + ::AuthClientResponseMessage::internal_default_instance()); +#else authclientresponsemessage_ = const_cast< ::AuthClientResponseMessage*>(&::AuthClientResponseMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + authserververificationmessage_ = const_cast< ::AuthServerVerificationMessage*>( + ::AuthServerVerificationMessage::internal_default_instance()); +#else authserververificationmessage_ = const_cast< ::AuthServerVerificationMessage*>(&::AuthServerVerificationMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + initackmessage_ = const_cast< ::InitAckMessage*>( + ::InitAckMessage::internal_default_instance()); +#else initackmessage_ = const_cast< ::InitAckMessage*>(&::InitAckMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + avatarrequestmessage_ = const_cast< ::AvatarRequestMessage*>( + ::AvatarRequestMessage::internal_default_instance()); +#else avatarrequestmessage_ = const_cast< ::AvatarRequestMessage*>(&::AvatarRequestMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + avatarheadermessage_ = const_cast< ::AvatarHeaderMessage*>( + ::AvatarHeaderMessage::internal_default_instance()); +#else avatarheadermessage_ = const_cast< ::AvatarHeaderMessage*>(&::AvatarHeaderMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + avatardatamessage_ = const_cast< ::AvatarDataMessage*>( + ::AvatarDataMessage::internal_default_instance()); +#else avatardatamessage_ = const_cast< ::AvatarDataMessage*>(&::AvatarDataMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + avatarendmessage_ = const_cast< ::AvatarEndMessage*>( + ::AvatarEndMessage::internal_default_instance()); +#else avatarendmessage_ = const_cast< ::AvatarEndMessage*>(&::AvatarEndMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + unknownavatarmessage_ = const_cast< ::UnknownAvatarMessage*>( + ::UnknownAvatarMessage::internal_default_instance()); +#else unknownavatarmessage_ = const_cast< ::UnknownAvatarMessage*>(&::UnknownAvatarMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + playerlistmessage_ = const_cast< ::PlayerListMessage*>( + ::PlayerListMessage::internal_default_instance()); +#else playerlistmessage_ = const_cast< ::PlayerListMessage*>(&::PlayerListMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gamelistnewmessage_ = const_cast< ::GameListNewMessage*>( + ::GameListNewMessage::internal_default_instance()); +#else gamelistnewmessage_ = const_cast< ::GameListNewMessage*>(&::GameListNewMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gamelistupdatemessage_ = const_cast< ::GameListUpdateMessage*>( + ::GameListUpdateMessage::internal_default_instance()); +#else gamelistupdatemessage_ = const_cast< ::GameListUpdateMessage*>(&::GameListUpdateMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gamelistplayerjoinedmessage_ = const_cast< ::GameListPlayerJoinedMessage*>( + ::GameListPlayerJoinedMessage::internal_default_instance()); +#else gamelistplayerjoinedmessage_ = const_cast< ::GameListPlayerJoinedMessage*>(&::GameListPlayerJoinedMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gamelistplayerleftmessage_ = const_cast< ::GameListPlayerLeftMessage*>( + ::GameListPlayerLeftMessage::internal_default_instance()); +#else gamelistplayerleftmessage_ = const_cast< ::GameListPlayerLeftMessage*>(&::GameListPlayerLeftMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gamelistadminchangedmessage_ = const_cast< ::GameListAdminChangedMessage*>( + ::GameListAdminChangedMessage::internal_default_instance()); +#else gamelistadminchangedmessage_ = const_cast< ::GameListAdminChangedMessage*>(&::GameListAdminChangedMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + playerinforequestmessage_ = const_cast< ::PlayerInfoRequestMessage*>( + ::PlayerInfoRequestMessage::internal_default_instance()); +#else playerinforequestmessage_ = const_cast< ::PlayerInfoRequestMessage*>(&::PlayerInfoRequestMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + playerinforeplymessage_ = const_cast< ::PlayerInfoReplyMessage*>( + ::PlayerInfoReplyMessage::internal_default_instance()); +#else playerinforeplymessage_ = const_cast< ::PlayerInfoReplyMessage*>(&::PlayerInfoReplyMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + subscriptionrequestmessage_ = const_cast< ::SubscriptionRequestMessage*>( + ::SubscriptionRequestMessage::internal_default_instance()); +#else subscriptionrequestmessage_ = const_cast< ::SubscriptionRequestMessage*>(&::SubscriptionRequestMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + joinexistinggamemessage_ = const_cast< ::JoinExistingGameMessage*>( + ::JoinExistingGameMessage::internal_default_instance()); +#else joinexistinggamemessage_ = const_cast< ::JoinExistingGameMessage*>(&::JoinExistingGameMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + joinnewgamemessage_ = const_cast< ::JoinNewGameMessage*>( + ::JoinNewGameMessage::internal_default_instance()); +#else joinnewgamemessage_ = const_cast< ::JoinNewGameMessage*>(&::JoinNewGameMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + rejoinexistinggamemessage_ = const_cast< ::RejoinExistingGameMessage*>( + ::RejoinExistingGameMessage::internal_default_instance()); +#else rejoinexistinggamemessage_ = const_cast< ::RejoinExistingGameMessage*>(&::RejoinExistingGameMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + joingameackmessage_ = const_cast< ::JoinGameAckMessage*>( + ::JoinGameAckMessage::internal_default_instance()); +#else joingameackmessage_ = const_cast< ::JoinGameAckMessage*>(&::JoinGameAckMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + joingamefailedmessage_ = const_cast< ::JoinGameFailedMessage*>( + ::JoinGameFailedMessage::internal_default_instance()); +#else joingamefailedmessage_ = const_cast< ::JoinGameFailedMessage*>(&::JoinGameFailedMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gameplayerjoinedmessage_ = const_cast< ::GamePlayerJoinedMessage*>( + ::GamePlayerJoinedMessage::internal_default_instance()); +#else gameplayerjoinedmessage_ = const_cast< ::GamePlayerJoinedMessage*>(&::GamePlayerJoinedMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gameplayerleftmessage_ = const_cast< ::GamePlayerLeftMessage*>( + ::GamePlayerLeftMessage::internal_default_instance()); +#else gameplayerleftmessage_ = const_cast< ::GamePlayerLeftMessage*>(&::GamePlayerLeftMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gameadminchangedmessage_ = const_cast< ::GameAdminChangedMessage*>( + ::GameAdminChangedMessage::internal_default_instance()); +#else gameadminchangedmessage_ = const_cast< ::GameAdminChangedMessage*>(&::GameAdminChangedMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + removedfromgamemessage_ = const_cast< ::RemovedFromGameMessage*>( + ::RemovedFromGameMessage::internal_default_instance()); +#else removedfromgamemessage_ = const_cast< ::RemovedFromGameMessage*>(&::RemovedFromGameMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + kickplayerrequestmessage_ = const_cast< ::KickPlayerRequestMessage*>( + ::KickPlayerRequestMessage::internal_default_instance()); +#else kickplayerrequestmessage_ = const_cast< ::KickPlayerRequestMessage*>(&::KickPlayerRequestMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + leavegamerequestmessage_ = const_cast< ::LeaveGameRequestMessage*>( + ::LeaveGameRequestMessage::internal_default_instance()); +#else leavegamerequestmessage_ = const_cast< ::LeaveGameRequestMessage*>(&::LeaveGameRequestMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + inviteplayertogamemessage_ = const_cast< ::InvitePlayerToGameMessage*>( + ::InvitePlayerToGameMessage::internal_default_instance()); +#else inviteplayertogamemessage_ = const_cast< ::InvitePlayerToGameMessage*>(&::InvitePlayerToGameMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + invitenotifymessage_ = const_cast< ::InviteNotifyMessage*>( + ::InviteNotifyMessage::internal_default_instance()); +#else invitenotifymessage_ = const_cast< ::InviteNotifyMessage*>(&::InviteNotifyMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + rejectgameinvitationmessage_ = const_cast< ::RejectGameInvitationMessage*>( + ::RejectGameInvitationMessage::internal_default_instance()); +#else rejectgameinvitationmessage_ = const_cast< ::RejectGameInvitationMessage*>(&::RejectGameInvitationMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + rejectinvnotifymessage_ = const_cast< ::RejectInvNotifyMessage*>( + ::RejectInvNotifyMessage::internal_default_instance()); +#else rejectinvnotifymessage_ = const_cast< ::RejectInvNotifyMessage*>(&::RejectInvNotifyMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + starteventmessage_ = const_cast< ::StartEventMessage*>( + ::StartEventMessage::internal_default_instance()); +#else starteventmessage_ = const_cast< ::StartEventMessage*>(&::StartEventMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + starteventackmessage_ = const_cast< ::StartEventAckMessage*>( + ::StartEventAckMessage::internal_default_instance()); +#else starteventackmessage_ = const_cast< ::StartEventAckMessage*>(&::StartEventAckMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gamestartinitialmessage_ = const_cast< ::GameStartInitialMessage*>( + ::GameStartInitialMessage::internal_default_instance()); +#else gamestartinitialmessage_ = const_cast< ::GameStartInitialMessage*>(&::GameStartInitialMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gamestartrejoinmessage_ = const_cast< ::GameStartRejoinMessage*>( + ::GameStartRejoinMessage::internal_default_instance()); +#else gamestartrejoinmessage_ = const_cast< ::GameStartRejoinMessage*>(&::GameStartRejoinMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + handstartmessage_ = const_cast< ::HandStartMessage*>( + ::HandStartMessage::internal_default_instance()); +#else handstartmessage_ = const_cast< ::HandStartMessage*>(&::HandStartMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + playersturnmessage_ = const_cast< ::PlayersTurnMessage*>( + ::PlayersTurnMessage::internal_default_instance()); +#else playersturnmessage_ = const_cast< ::PlayersTurnMessage*>(&::PlayersTurnMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + myactionrequestmessage_ = const_cast< ::MyActionRequestMessage*>( + ::MyActionRequestMessage::internal_default_instance()); +#else myactionrequestmessage_ = const_cast< ::MyActionRequestMessage*>(&::MyActionRequestMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + youractionrejectedmessage_ = const_cast< ::YourActionRejectedMessage*>( + ::YourActionRejectedMessage::internal_default_instance()); +#else youractionrejectedmessage_ = const_cast< ::YourActionRejectedMessage*>(&::YourActionRejectedMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + playersactiondonemessage_ = const_cast< ::PlayersActionDoneMessage*>( + ::PlayersActionDoneMessage::internal_default_instance()); +#else playersactiondonemessage_ = const_cast< ::PlayersActionDoneMessage*>(&::PlayersActionDoneMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + dealflopcardsmessage_ = const_cast< ::DealFlopCardsMessage*>( + ::DealFlopCardsMessage::internal_default_instance()); +#else dealflopcardsmessage_ = const_cast< ::DealFlopCardsMessage*>(&::DealFlopCardsMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + dealturncardmessage_ = const_cast< ::DealTurnCardMessage*>( + ::DealTurnCardMessage::internal_default_instance()); +#else dealturncardmessage_ = const_cast< ::DealTurnCardMessage*>(&::DealTurnCardMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + dealrivercardmessage_ = const_cast< ::DealRiverCardMessage*>( + ::DealRiverCardMessage::internal_default_instance()); +#else dealrivercardmessage_ = const_cast< ::DealRiverCardMessage*>(&::DealRiverCardMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + allinshowcardsmessage_ = const_cast< ::AllInShowCardsMessage*>( + ::AllInShowCardsMessage::internal_default_instance()); +#else allinshowcardsmessage_ = const_cast< ::AllInShowCardsMessage*>(&::AllInShowCardsMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + endofhandshowcardsmessage_ = const_cast< ::EndOfHandShowCardsMessage*>( + ::EndOfHandShowCardsMessage::internal_default_instance()); +#else endofhandshowcardsmessage_ = const_cast< ::EndOfHandShowCardsMessage*>(&::EndOfHandShowCardsMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + endofhandhidecardsmessage_ = const_cast< ::EndOfHandHideCardsMessage*>( + ::EndOfHandHideCardsMessage::internal_default_instance()); +#else endofhandhidecardsmessage_ = const_cast< ::EndOfHandHideCardsMessage*>(&::EndOfHandHideCardsMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + showmycardsrequestmessage_ = const_cast< ::ShowMyCardsRequestMessage*>( + ::ShowMyCardsRequestMessage::internal_default_instance()); +#else showmycardsrequestmessage_ = const_cast< ::ShowMyCardsRequestMessage*>(&::ShowMyCardsRequestMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + afterhandshowcardsmessage_ = const_cast< ::AfterHandShowCardsMessage*>( + ::AfterHandShowCardsMessage::internal_default_instance()); +#else afterhandshowcardsmessage_ = const_cast< ::AfterHandShowCardsMessage*>(&::AfterHandShowCardsMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + endofgamemessage_ = const_cast< ::EndOfGameMessage*>( + ::EndOfGameMessage::internal_default_instance()); +#else endofgamemessage_ = const_cast< ::EndOfGameMessage*>(&::EndOfGameMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + playeridchangedmessage_ = const_cast< ::PlayerIdChangedMessage*>( + ::PlayerIdChangedMessage::internal_default_instance()); +#else playeridchangedmessage_ = const_cast< ::PlayerIdChangedMessage*>(&::PlayerIdChangedMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + askkickplayermessage_ = const_cast< ::AskKickPlayerMessage*>( + ::AskKickPlayerMessage::internal_default_instance()); +#else askkickplayermessage_ = const_cast< ::AskKickPlayerMessage*>(&::AskKickPlayerMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + askkickdeniedmessage_ = const_cast< ::AskKickDeniedMessage*>( + ::AskKickDeniedMessage::internal_default_instance()); +#else askkickdeniedmessage_ = const_cast< ::AskKickDeniedMessage*>(&::AskKickDeniedMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + startkickpetitionmessage_ = const_cast< ::StartKickPetitionMessage*>( + ::StartKickPetitionMessage::internal_default_instance()); +#else startkickpetitionmessage_ = const_cast< ::StartKickPetitionMessage*>(&::StartKickPetitionMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + votekickrequestmessage_ = const_cast< ::VoteKickRequestMessage*>( + ::VoteKickRequestMessage::internal_default_instance()); +#else votekickrequestmessage_ = const_cast< ::VoteKickRequestMessage*>(&::VoteKickRequestMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + votekickreplymessage_ = const_cast< ::VoteKickReplyMessage*>( + ::VoteKickReplyMessage::internal_default_instance()); +#else votekickreplymessage_ = const_cast< ::VoteKickReplyMessage*>(&::VoteKickReplyMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + kickpetitionupdatemessage_ = const_cast< ::KickPetitionUpdateMessage*>( + ::KickPetitionUpdateMessage::internal_default_instance()); +#else kickpetitionupdatemessage_ = const_cast< ::KickPetitionUpdateMessage*>(&::KickPetitionUpdateMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + endkickpetitionmessage_ = const_cast< ::EndKickPetitionMessage*>( + ::EndKickPetitionMessage::internal_default_instance()); +#else endkickpetitionmessage_ = const_cast< ::EndKickPetitionMessage*>(&::EndKickPetitionMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + statisticsmessage_ = const_cast< ::StatisticsMessage*>( + ::StatisticsMessage::internal_default_instance()); +#else statisticsmessage_ = const_cast< ::StatisticsMessage*>(&::StatisticsMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + chatrequestmessage_ = const_cast< ::ChatRequestMessage*>( + ::ChatRequestMessage::internal_default_instance()); +#else chatrequestmessage_ = const_cast< ::ChatRequestMessage*>(&::ChatRequestMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + chatmessage_ = const_cast< ::ChatMessage*>( + ::ChatMessage::internal_default_instance()); +#else chatmessage_ = const_cast< ::ChatMessage*>(&::ChatMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + chatrejectmessage_ = const_cast< ::ChatRejectMessage*>( + ::ChatRejectMessage::internal_default_instance()); +#else chatrejectmessage_ = const_cast< ::ChatRejectMessage*>(&::ChatRejectMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + dialogmessage_ = const_cast< ::DialogMessage*>( + ::DialogMessage::internal_default_instance()); +#else dialogmessage_ = const_cast< ::DialogMessage*>(&::DialogMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + timeoutwarningmessage_ = const_cast< ::TimeoutWarningMessage*>( + ::TimeoutWarningMessage::internal_default_instance()); +#else timeoutwarningmessage_ = const_cast< ::TimeoutWarningMessage*>(&::TimeoutWarningMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + resettimeoutmessage_ = const_cast< ::ResetTimeoutMessage*>( + ::ResetTimeoutMessage::internal_default_instance()); +#else resettimeoutmessage_ = const_cast< ::ResetTimeoutMessage*>(&::ResetTimeoutMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + reportavatarmessage_ = const_cast< ::ReportAvatarMessage*>( + ::ReportAvatarMessage::internal_default_instance()); +#else reportavatarmessage_ = const_cast< ::ReportAvatarMessage*>(&::ReportAvatarMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + reportavatarackmessage_ = const_cast< ::ReportAvatarAckMessage*>( + ::ReportAvatarAckMessage::internal_default_instance()); +#else reportavatarackmessage_ = const_cast< ::ReportAvatarAckMessage*>(&::ReportAvatarAckMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + reportgamemessage_ = const_cast< ::ReportGameMessage*>( + ::ReportGameMessage::internal_default_instance()); +#else reportgamemessage_ = const_cast< ::ReportGameMessage*>(&::ReportGameMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + reportgameackmessage_ = const_cast< ::ReportGameAckMessage*>( + ::ReportGameAckMessage::internal_default_instance()); +#else reportgameackmessage_ = const_cast< ::ReportGameAckMessage*>(&::ReportGameAckMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + errormessage_ = const_cast< ::ErrorMessage*>( + ::ErrorMessage::internal_default_instance()); +#else errormessage_ = const_cast< ::ErrorMessage*>(&::ErrorMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + adminremovegamemessage_ = const_cast< ::AdminRemoveGameMessage*>( + ::AdminRemoveGameMessage::internal_default_instance()); +#else adminremovegamemessage_ = const_cast< ::AdminRemoveGameMessage*>(&::AdminRemoveGameMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + adminremovegameackmessage_ = const_cast< ::AdminRemoveGameAckMessage*>( + ::AdminRemoveGameAckMessage::internal_default_instance()); +#else adminremovegameackmessage_ = const_cast< ::AdminRemoveGameAckMessage*>(&::AdminRemoveGameAckMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + adminbanplayermessage_ = const_cast< ::AdminBanPlayerMessage*>( + ::AdminBanPlayerMessage::internal_default_instance()); +#else adminbanplayermessage_ = const_cast< ::AdminBanPlayerMessage*>(&::AdminBanPlayerMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + adminbanplayerackmessage_ = const_cast< ::AdminBanPlayerAckMessage*>( + ::AdminBanPlayerAckMessage::internal_default_instance()); +#else adminbanplayerackmessage_ = const_cast< ::AdminBanPlayerAckMessage*>(&::AdminBanPlayerAckMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gamelistspectatorjoinedmessage_ = const_cast< ::GameListSpectatorJoinedMessage*>( + ::GameListSpectatorJoinedMessage::internal_default_instance()); +#else gamelistspectatorjoinedmessage_ = const_cast< ::GameListSpectatorJoinedMessage*>(&::GameListSpectatorJoinedMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gamelistspectatorleftmessage_ = const_cast< ::GameListSpectatorLeftMessage*>( + ::GameListSpectatorLeftMessage::internal_default_instance()); +#else gamelistspectatorleftmessage_ = const_cast< ::GameListSpectatorLeftMessage*>(&::GameListSpectatorLeftMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gamespectatorjoinedmessage_ = const_cast< ::GameSpectatorJoinedMessage*>( + ::GameSpectatorJoinedMessage::internal_default_instance()); +#else gamespectatorjoinedmessage_ = const_cast< ::GameSpectatorJoinedMessage*>(&::GameSpectatorJoinedMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + gamespectatorleftmessage_ = const_cast< ::GameSpectatorLeftMessage*>( + ::GameSpectatorLeftMessage::internal_default_instance()); +#else gamespectatorleftmessage_ = const_cast< ::GameSpectatorLeftMessage*>(&::GameSpectatorLeftMessage::default_instance()); +#endif } PokerTHMessage::PokerTHMessage(const PokerTHMessage& from) @@ -21453,7 +22743,11 @@ PokerTHMessage::~PokerTHMessage() { } void PokerTHMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else if (this != default_instance_) { + #endif delete announcemessage_; delete initmessage_; delete authserverchallengemessage_; @@ -21544,7 +22838,12 @@ void PokerTHMessage::SetCachedSize(int size) const { GOOGLE_SAFE_CONCURRENT_WRITES_END(); } const PokerTHMessage& PokerTHMessage::default_instance() { - if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); return *default_instance_; +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_pokerth_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_pokerth_2eproto(); +#endif + return *default_instance_; } PokerTHMessage* PokerTHMessage::default_instance_ = NULL; @@ -21846,7 +23145,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(18)) goto parse_announceMessage; break; } - + // optional .AnnounceMessage announceMessage = 2; case 2: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -21860,7 +23159,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(26)) goto parse_initMessage; break; } - + // optional .InitMessage initMessage = 3; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -21874,7 +23173,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(34)) goto parse_authServerChallengeMessage; break; } - + // optional .AuthServerChallengeMessage authServerChallengeMessage = 4; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -21888,7 +23187,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(42)) goto parse_authClientResponseMessage; break; } - + // optional .AuthClientResponseMessage authClientResponseMessage = 5; case 5: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -21902,7 +23201,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(50)) goto parse_authServerVerificationMessage; break; } - + // optional .AuthServerVerificationMessage authServerVerificationMessage = 6; case 6: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -21916,7 +23215,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(58)) goto parse_initAckMessage; break; } - + // optional .InitAckMessage initAckMessage = 7; case 7: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -21930,7 +23229,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(66)) goto parse_avatarRequestMessage; break; } - + // optional .AvatarRequestMessage avatarRequestMessage = 8; case 8: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -21944,7 +23243,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(74)) goto parse_avatarHeaderMessage; break; } - + // optional .AvatarHeaderMessage avatarHeaderMessage = 9; case 9: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -21958,7 +23257,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(82)) goto parse_avatarDataMessage; break; } - + // optional .AvatarDataMessage avatarDataMessage = 10; case 10: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -21972,7 +23271,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(90)) goto parse_avatarEndMessage; break; } - + // optional .AvatarEndMessage avatarEndMessage = 11; case 11: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -21986,7 +23285,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(98)) goto parse_unknownAvatarMessage; break; } - + // optional .UnknownAvatarMessage unknownAvatarMessage = 12; case 12: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22000,7 +23299,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(106)) goto parse_playerListMessage; break; } - + // optional .PlayerListMessage playerListMessage = 13; case 13: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22014,7 +23313,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(114)) goto parse_gameListNewMessage; break; } - + // optional .GameListNewMessage gameListNewMessage = 14; case 14: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22028,7 +23327,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(122)) goto parse_gameListUpdateMessage; break; } - + // optional .GameListUpdateMessage gameListUpdateMessage = 15; case 15: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22042,7 +23341,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(130)) goto parse_gameListPlayerJoinedMessage; break; } - + // optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; case 16: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22056,7 +23355,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(138)) goto parse_gameListPlayerLeftMessage; break; } - + // optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; case 17: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22070,7 +23369,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(146)) goto parse_gameListAdminChangedMessage; break; } - + // optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; case 18: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22084,7 +23383,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(154)) goto parse_playerInfoRequestMessage; break; } - + // optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; case 19: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22098,7 +23397,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(162)) goto parse_playerInfoReplyMessage; break; } - + // optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; case 20: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22112,7 +23411,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(170)) goto parse_subscriptionRequestMessage; break; } - + // optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; case 21: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22126,7 +23425,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(178)) goto parse_joinExistingGameMessage; break; } - + // optional .JoinExistingGameMessage joinExistingGameMessage = 22; case 22: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22140,7 +23439,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(186)) goto parse_joinNewGameMessage; break; } - + // optional .JoinNewGameMessage joinNewGameMessage = 23; case 23: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22154,7 +23453,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(194)) goto parse_rejoinExistingGameMessage; break; } - + // optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; case 24: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22168,7 +23467,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(202)) goto parse_joinGameAckMessage; break; } - + // optional .JoinGameAckMessage joinGameAckMessage = 25; case 25: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22182,7 +23481,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(210)) goto parse_joinGameFailedMessage; break; } - + // optional .JoinGameFailedMessage joinGameFailedMessage = 26; case 26: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22196,7 +23495,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(218)) goto parse_gamePlayerJoinedMessage; break; } - + // optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; case 27: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22210,7 +23509,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(226)) goto parse_gamePlayerLeftMessage; break; } - + // optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; case 28: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22224,7 +23523,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(234)) goto parse_gameAdminChangedMessage; break; } - + // optional .GameAdminChangedMessage gameAdminChangedMessage = 29; case 29: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22238,7 +23537,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(242)) goto parse_removedFromGameMessage; break; } - + // optional .RemovedFromGameMessage removedFromGameMessage = 30; case 30: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22252,7 +23551,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(250)) goto parse_kickPlayerRequestMessage; break; } - + // optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; case 31: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22266,7 +23565,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(258)) goto parse_leaveGameRequestMessage; break; } - + // optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; case 32: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22280,7 +23579,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(266)) goto parse_invitePlayerToGameMessage; break; } - + // optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; case 33: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22294,7 +23593,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(274)) goto parse_inviteNotifyMessage; break; } - + // optional .InviteNotifyMessage inviteNotifyMessage = 34; case 34: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22308,7 +23607,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(282)) goto parse_rejectGameInvitationMessage; break; } - + // optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; case 35: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22322,7 +23621,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(290)) goto parse_rejectInvNotifyMessage; break; } - + // optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; case 36: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22336,7 +23635,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(298)) goto parse_startEventMessage; break; } - + // optional .StartEventMessage startEventMessage = 37; case 37: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22350,7 +23649,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(306)) goto parse_startEventAckMessage; break; } - + // optional .StartEventAckMessage startEventAckMessage = 38; case 38: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22364,7 +23663,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(314)) goto parse_gameStartInitialMessage; break; } - + // optional .GameStartInitialMessage gameStartInitialMessage = 39; case 39: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22378,7 +23677,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(322)) goto parse_gameStartRejoinMessage; break; } - + // optional .GameStartRejoinMessage gameStartRejoinMessage = 40; case 40: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22392,7 +23691,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(330)) goto parse_handStartMessage; break; } - + // optional .HandStartMessage handStartMessage = 41; case 41: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22406,7 +23705,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(338)) goto parse_playersTurnMessage; break; } - + // optional .PlayersTurnMessage playersTurnMessage = 42; case 42: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22420,7 +23719,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(346)) goto parse_myActionRequestMessage; break; } - + // optional .MyActionRequestMessage myActionRequestMessage = 43; case 43: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22434,7 +23733,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(354)) goto parse_yourActionRejectedMessage; break; } - + // optional .YourActionRejectedMessage yourActionRejectedMessage = 44; case 44: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22448,7 +23747,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(362)) goto parse_playersActionDoneMessage; break; } - + // optional .PlayersActionDoneMessage playersActionDoneMessage = 45; case 45: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22462,7 +23761,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(370)) goto parse_dealFlopCardsMessage; break; } - + // optional .DealFlopCardsMessage dealFlopCardsMessage = 46; case 46: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22476,7 +23775,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(378)) goto parse_dealTurnCardMessage; break; } - + // optional .DealTurnCardMessage dealTurnCardMessage = 47; case 47: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22490,7 +23789,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(386)) goto parse_dealRiverCardMessage; break; } - + // optional .DealRiverCardMessage dealRiverCardMessage = 48; case 48: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22504,7 +23803,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(394)) goto parse_allInShowCardsMessage; break; } - + // optional .AllInShowCardsMessage allInShowCardsMessage = 49; case 49: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22518,7 +23817,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(402)) goto parse_endOfHandShowCardsMessage; break; } - + // optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; case 50: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22532,7 +23831,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(410)) goto parse_endOfHandHideCardsMessage; break; } - + // optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; case 51: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22546,7 +23845,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(418)) goto parse_showMyCardsRequestMessage; break; } - + // optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; case 52: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22560,7 +23859,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(426)) goto parse_afterHandShowCardsMessage; break; } - + // optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; case 53: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22574,7 +23873,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(434)) goto parse_endOfGameMessage; break; } - + // optional .EndOfGameMessage endOfGameMessage = 54; case 54: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22588,7 +23887,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(442)) goto parse_playerIdChangedMessage; break; } - + // optional .PlayerIdChangedMessage playerIdChangedMessage = 55; case 55: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22602,7 +23901,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(450)) goto parse_askKickPlayerMessage; break; } - + // optional .AskKickPlayerMessage askKickPlayerMessage = 56; case 56: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22616,7 +23915,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(458)) goto parse_askKickDeniedMessage; break; } - + // optional .AskKickDeniedMessage askKickDeniedMessage = 57; case 57: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22630,7 +23929,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(466)) goto parse_startKickPetitionMessage; break; } - + // optional .StartKickPetitionMessage startKickPetitionMessage = 58; case 58: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22644,7 +23943,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(474)) goto parse_voteKickRequestMessage; break; } - + // optional .VoteKickRequestMessage voteKickRequestMessage = 59; case 59: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22658,7 +23957,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(482)) goto parse_voteKickReplyMessage; break; } - + // optional .VoteKickReplyMessage voteKickReplyMessage = 60; case 60: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22672,7 +23971,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(490)) goto parse_kickPetitionUpdateMessage; break; } - + // optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; case 61: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22686,7 +23985,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(498)) goto parse_endKickPetitionMessage; break; } - + // optional .EndKickPetitionMessage endKickPetitionMessage = 62; case 62: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22700,7 +23999,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(506)) goto parse_statisticsMessage; break; } - + // optional .StatisticsMessage statisticsMessage = 63; case 63: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22714,7 +24013,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(514)) goto parse_chatRequestMessage; break; } - + // optional .ChatRequestMessage chatRequestMessage = 64; case 64: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22728,7 +24027,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(522)) goto parse_chatMessage; break; } - + // optional .ChatMessage chatMessage = 65; case 65: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22742,7 +24041,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(530)) goto parse_chatRejectMessage; break; } - + // optional .ChatRejectMessage chatRejectMessage = 66; case 66: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22756,7 +24055,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(538)) goto parse_dialogMessage; break; } - + // optional .DialogMessage dialogMessage = 67; case 67: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22770,7 +24069,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(546)) goto parse_timeoutWarningMessage; break; } - + // optional .TimeoutWarningMessage timeoutWarningMessage = 68; case 68: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22784,7 +24083,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(554)) goto parse_resetTimeoutMessage; break; } - + // optional .ResetTimeoutMessage resetTimeoutMessage = 69; case 69: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22798,7 +24097,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(562)) goto parse_reportAvatarMessage; break; } - + // optional .ReportAvatarMessage reportAvatarMessage = 70; case 70: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22812,7 +24111,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(570)) goto parse_reportAvatarAckMessage; break; } - + // optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; case 71: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22826,7 +24125,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(578)) goto parse_reportGameMessage; break; } - + // optional .ReportGameMessage reportGameMessage = 72; case 72: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22840,7 +24139,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(586)) goto parse_reportGameAckMessage; break; } - + // optional .ReportGameAckMessage reportGameAckMessage = 73; case 73: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22854,7 +24153,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(594)) goto parse_errorMessage; break; } - + // optional .ErrorMessage errorMessage = 74; case 74: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22868,7 +24167,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(602)) goto parse_adminRemoveGameMessage; break; } - + // optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; case 75: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22882,7 +24181,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(610)) goto parse_adminRemoveGameAckMessage; break; } - + // optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; case 76: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22896,7 +24195,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(618)) goto parse_adminBanPlayerMessage; break; } - + // optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; case 77: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22910,7 +24209,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(626)) goto parse_adminBanPlayerAckMessage; break; } - + // optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; case 78: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22924,7 +24223,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(634)) goto parse_gameListSpectatorJoinedMessage; break; } - + // optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; case 79: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22938,7 +24237,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(642)) goto parse_gameListSpectatorLeftMessage; break; } - + // optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; case 80: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22952,7 +24251,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(650)) goto parse_gameSpectatorJoinedMessage; break; } - + // optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; case 81: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22966,7 +24265,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectTag(658)) goto parse_gameSpectatorLeftMessage; break; } - + // optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; case 82: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -22980,7 +24279,7 @@ bool PokerTHMessage::MergePartialFromCodedStream( if (input->ExpectAtEnd()) return true; break; } - + default: { handle_uninterpreted: if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == @@ -23003,554 +24302,554 @@ void PokerTHMessage::SerializeWithCachedSizes( ::google::protobuf::internal::WireFormatLite::WriteEnum( 1, this->messagetype(), output); } - + // optional .AnnounceMessage announceMessage = 2; if (has_announcemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 2, this->announcemessage(), output); } - + // optional .InitMessage initMessage = 3; if (has_initmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 3, this->initmessage(), output); } - + // optional .AuthServerChallengeMessage authServerChallengeMessage = 4; if (has_authserverchallengemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 4, this->authserverchallengemessage(), output); } - + // optional .AuthClientResponseMessage authClientResponseMessage = 5; if (has_authclientresponsemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 5, this->authclientresponsemessage(), output); } - + // optional .AuthServerVerificationMessage authServerVerificationMessage = 6; if (has_authserververificationmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 6, this->authserververificationmessage(), output); } - + // optional .InitAckMessage initAckMessage = 7; if (has_initackmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 7, this->initackmessage(), output); } - + // optional .AvatarRequestMessage avatarRequestMessage = 8; if (has_avatarrequestmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 8, this->avatarrequestmessage(), output); } - + // optional .AvatarHeaderMessage avatarHeaderMessage = 9; if (has_avatarheadermessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 9, this->avatarheadermessage(), output); } - + // optional .AvatarDataMessage avatarDataMessage = 10; if (has_avatardatamessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 10, this->avatardatamessage(), output); } - + // optional .AvatarEndMessage avatarEndMessage = 11; if (has_avatarendmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 11, this->avatarendmessage(), output); } - + // optional .UnknownAvatarMessage unknownAvatarMessage = 12; if (has_unknownavatarmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 12, this->unknownavatarmessage(), output); } - + // optional .PlayerListMessage playerListMessage = 13; if (has_playerlistmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 13, this->playerlistmessage(), output); } - + // optional .GameListNewMessage gameListNewMessage = 14; if (has_gamelistnewmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 14, this->gamelistnewmessage(), output); } - + // optional .GameListUpdateMessage gameListUpdateMessage = 15; if (has_gamelistupdatemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 15, this->gamelistupdatemessage(), output); } - + // optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; if (has_gamelistplayerjoinedmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 16, this->gamelistplayerjoinedmessage(), output); } - + // optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; if (has_gamelistplayerleftmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 17, this->gamelistplayerleftmessage(), output); } - + // optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; if (has_gamelistadminchangedmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 18, this->gamelistadminchangedmessage(), output); } - + // optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; if (has_playerinforequestmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 19, this->playerinforequestmessage(), output); } - + // optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; if (has_playerinforeplymessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 20, this->playerinforeplymessage(), output); } - + // optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; if (has_subscriptionrequestmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 21, this->subscriptionrequestmessage(), output); } - + // optional .JoinExistingGameMessage joinExistingGameMessage = 22; if (has_joinexistinggamemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 22, this->joinexistinggamemessage(), output); } - + // optional .JoinNewGameMessage joinNewGameMessage = 23; if (has_joinnewgamemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 23, this->joinnewgamemessage(), output); } - + // optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; if (has_rejoinexistinggamemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 24, this->rejoinexistinggamemessage(), output); } - + // optional .JoinGameAckMessage joinGameAckMessage = 25; if (has_joingameackmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 25, this->joingameackmessage(), output); } - + // optional .JoinGameFailedMessage joinGameFailedMessage = 26; if (has_joingamefailedmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 26, this->joingamefailedmessage(), output); } - + // optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; if (has_gameplayerjoinedmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 27, this->gameplayerjoinedmessage(), output); } - + // optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; if (has_gameplayerleftmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 28, this->gameplayerleftmessage(), output); } - + // optional .GameAdminChangedMessage gameAdminChangedMessage = 29; if (has_gameadminchangedmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 29, this->gameadminchangedmessage(), output); } - + // optional .RemovedFromGameMessage removedFromGameMessage = 30; if (has_removedfromgamemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 30, this->removedfromgamemessage(), output); } - + // optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; if (has_kickplayerrequestmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 31, this->kickplayerrequestmessage(), output); } - + // optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; if (has_leavegamerequestmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 32, this->leavegamerequestmessage(), output); } - + // optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; if (has_inviteplayertogamemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 33, this->inviteplayertogamemessage(), output); } - + // optional .InviteNotifyMessage inviteNotifyMessage = 34; if (has_invitenotifymessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 34, this->invitenotifymessage(), output); } - + // optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; if (has_rejectgameinvitationmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 35, this->rejectgameinvitationmessage(), output); } - + // optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; if (has_rejectinvnotifymessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 36, this->rejectinvnotifymessage(), output); } - + // optional .StartEventMessage startEventMessage = 37; if (has_starteventmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 37, this->starteventmessage(), output); } - + // optional .StartEventAckMessage startEventAckMessage = 38; if (has_starteventackmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 38, this->starteventackmessage(), output); } - + // optional .GameStartInitialMessage gameStartInitialMessage = 39; if (has_gamestartinitialmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 39, this->gamestartinitialmessage(), output); } - + // optional .GameStartRejoinMessage gameStartRejoinMessage = 40; if (has_gamestartrejoinmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 40, this->gamestartrejoinmessage(), output); } - + // optional .HandStartMessage handStartMessage = 41; if (has_handstartmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 41, this->handstartmessage(), output); } - + // optional .PlayersTurnMessage playersTurnMessage = 42; if (has_playersturnmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 42, this->playersturnmessage(), output); } - + // optional .MyActionRequestMessage myActionRequestMessage = 43; if (has_myactionrequestmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 43, this->myactionrequestmessage(), output); } - + // optional .YourActionRejectedMessage yourActionRejectedMessage = 44; if (has_youractionrejectedmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 44, this->youractionrejectedmessage(), output); } - + // optional .PlayersActionDoneMessage playersActionDoneMessage = 45; if (has_playersactiondonemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 45, this->playersactiondonemessage(), output); } - + // optional .DealFlopCardsMessage dealFlopCardsMessage = 46; if (has_dealflopcardsmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 46, this->dealflopcardsmessage(), output); } - + // optional .DealTurnCardMessage dealTurnCardMessage = 47; if (has_dealturncardmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 47, this->dealturncardmessage(), output); } - + // optional .DealRiverCardMessage dealRiverCardMessage = 48; if (has_dealrivercardmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 48, this->dealrivercardmessage(), output); } - + // optional .AllInShowCardsMessage allInShowCardsMessage = 49; if (has_allinshowcardsmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 49, this->allinshowcardsmessage(), output); } - + // optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; if (has_endofhandshowcardsmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 50, this->endofhandshowcardsmessage(), output); } - + // optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; if (has_endofhandhidecardsmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 51, this->endofhandhidecardsmessage(), output); } - + // optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; if (has_showmycardsrequestmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 52, this->showmycardsrequestmessage(), output); } - + // optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; if (has_afterhandshowcardsmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 53, this->afterhandshowcardsmessage(), output); } - + // optional .EndOfGameMessage endOfGameMessage = 54; if (has_endofgamemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 54, this->endofgamemessage(), output); } - + // optional .PlayerIdChangedMessage playerIdChangedMessage = 55; if (has_playeridchangedmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 55, this->playeridchangedmessage(), output); } - + // optional .AskKickPlayerMessage askKickPlayerMessage = 56; if (has_askkickplayermessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 56, this->askkickplayermessage(), output); } - + // optional .AskKickDeniedMessage askKickDeniedMessage = 57; if (has_askkickdeniedmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 57, this->askkickdeniedmessage(), output); } - + // optional .StartKickPetitionMessage startKickPetitionMessage = 58; if (has_startkickpetitionmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 58, this->startkickpetitionmessage(), output); } - + // optional .VoteKickRequestMessage voteKickRequestMessage = 59; if (has_votekickrequestmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 59, this->votekickrequestmessage(), output); } - + // optional .VoteKickReplyMessage voteKickReplyMessage = 60; if (has_votekickreplymessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 60, this->votekickreplymessage(), output); } - + // optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; if (has_kickpetitionupdatemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 61, this->kickpetitionupdatemessage(), output); } - + // optional .EndKickPetitionMessage endKickPetitionMessage = 62; if (has_endkickpetitionmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 62, this->endkickpetitionmessage(), output); } - + // optional .StatisticsMessage statisticsMessage = 63; if (has_statisticsmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 63, this->statisticsmessage(), output); } - + // optional .ChatRequestMessage chatRequestMessage = 64; if (has_chatrequestmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 64, this->chatrequestmessage(), output); } - + // optional .ChatMessage chatMessage = 65; if (has_chatmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 65, this->chatmessage(), output); } - + // optional .ChatRejectMessage chatRejectMessage = 66; if (has_chatrejectmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 66, this->chatrejectmessage(), output); } - + // optional .DialogMessage dialogMessage = 67; if (has_dialogmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 67, this->dialogmessage(), output); } - + // optional .TimeoutWarningMessage timeoutWarningMessage = 68; if (has_timeoutwarningmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 68, this->timeoutwarningmessage(), output); } - + // optional .ResetTimeoutMessage resetTimeoutMessage = 69; if (has_resettimeoutmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 69, this->resettimeoutmessage(), output); } - + // optional .ReportAvatarMessage reportAvatarMessage = 70; if (has_reportavatarmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 70, this->reportavatarmessage(), output); } - + // optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; if (has_reportavatarackmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 71, this->reportavatarackmessage(), output); } - + // optional .ReportGameMessage reportGameMessage = 72; if (has_reportgamemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 72, this->reportgamemessage(), output); } - + // optional .ReportGameAckMessage reportGameAckMessage = 73; if (has_reportgameackmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 73, this->reportgameackmessage(), output); } - + // optional .ErrorMessage errorMessage = 74; if (has_errormessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 74, this->errormessage(), output); } - + // optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; if (has_adminremovegamemessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 75, this->adminremovegamemessage(), output); } - + // optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; if (has_adminremovegameackmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 76, this->adminremovegameackmessage(), output); } - + // optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; if (has_adminbanplayermessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 77, this->adminbanplayermessage(), output); } - + // optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; if (has_adminbanplayerackmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 78, this->adminbanplayerackmessage(), output); } - + // optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; if (has_gamelistspectatorjoinedmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 79, this->gamelistspectatorjoinedmessage(), output); } - + // optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; if (has_gamelistspectatorleftmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 80, this->gamelistspectatorleftmessage(), output); } - + // optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; if (has_gamespectatorjoinedmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 81, this->gamespectatorjoinedmessage(), output); } - + // optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; if (has_gamespectatorleftmessage()) { ::google::protobuf::internal::WireFormatLite::WriteMessage( 82, this->gamespectatorleftmessage(), output); } - + } int PokerTHMessage::ByteSize() const { int total_size = 0; - + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { // required .PokerTHMessage.PokerTHMessageType messageType = 1; if (has_messagetype()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::EnumSize(this->messagetype()); } - + // optional .AnnounceMessage announceMessage = 2; if (has_announcemessage()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->announcemessage()); } - + // optional .InitMessage initMessage = 3; if (has_initmessage()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->initmessage()); } - + // optional .AuthServerChallengeMessage authServerChallengeMessage = 4; if (has_authserverchallengemessage()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->authserverchallengemessage()); } - + // optional .AuthClientResponseMessage authClientResponseMessage = 5; if (has_authclientresponsemessage()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->authclientresponsemessage()); } - + // optional .AuthServerVerificationMessage authServerVerificationMessage = 6; if (has_authserververificationmessage()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->authserververificationmessage()); } - + // optional .InitAckMessage initAckMessage = 7; if (has_initackmessage()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->initackmessage()); } - + // optional .AvatarRequestMessage avatarRequestMessage = 8; if (has_avatarrequestmessage()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->avatarrequestmessage()); } - + } if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) { // optional .AvatarHeaderMessage avatarHeaderMessage = 9; @@ -23559,56 +24858,56 @@ int PokerTHMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->avatarheadermessage()); } - + // optional .AvatarDataMessage avatarDataMessage = 10; if (has_avatardatamessage()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->avatardatamessage()); } - + // optional .AvatarEndMessage avatarEndMessage = 11; if (has_avatarendmessage()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->avatarendmessage()); } - + // optional .UnknownAvatarMessage unknownAvatarMessage = 12; if (has_unknownavatarmessage()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->unknownavatarmessage()); } - + // optional .PlayerListMessage playerListMessage = 13; if (has_playerlistmessage()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->playerlistmessage()); } - + // optional .GameListNewMessage gameListNewMessage = 14; if (has_gamelistnewmessage()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gamelistnewmessage()); } - + // optional .GameListUpdateMessage gameListUpdateMessage = 15; if (has_gamelistupdatemessage()) { total_size += 1 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gamelistupdatemessage()); } - + // optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; if (has_gamelistplayerjoinedmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gamelistplayerjoinedmessage()); } - + } if (_has_bits_[16 / 32] & (0xffu << (16 % 32))) { // optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; @@ -23617,56 +24916,56 @@ int PokerTHMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gamelistplayerleftmessage()); } - + // optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; if (has_gamelistadminchangedmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gamelistadminchangedmessage()); } - + // optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; if (has_playerinforequestmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->playerinforequestmessage()); } - + // optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; if (has_playerinforeplymessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->playerinforeplymessage()); } - + // optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; if (has_subscriptionrequestmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->subscriptionrequestmessage()); } - + // optional .JoinExistingGameMessage joinExistingGameMessage = 22; if (has_joinexistinggamemessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->joinexistinggamemessage()); } - + // optional .JoinNewGameMessage joinNewGameMessage = 23; if (has_joinnewgamemessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->joinnewgamemessage()); } - + // optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; if (has_rejoinexistinggamemessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->rejoinexistinggamemessage()); } - + } if (_has_bits_[24 / 32] & (0xffu << (24 % 32))) { // optional .JoinGameAckMessage joinGameAckMessage = 25; @@ -23675,56 +24974,56 @@ int PokerTHMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->joingameackmessage()); } - + // optional .JoinGameFailedMessage joinGameFailedMessage = 26; if (has_joingamefailedmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->joingamefailedmessage()); } - + // optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; if (has_gameplayerjoinedmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gameplayerjoinedmessage()); } - + // optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; if (has_gameplayerleftmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gameplayerleftmessage()); } - + // optional .GameAdminChangedMessage gameAdminChangedMessage = 29; if (has_gameadminchangedmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gameadminchangedmessage()); } - + // optional .RemovedFromGameMessage removedFromGameMessage = 30; if (has_removedfromgamemessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->removedfromgamemessage()); } - + // optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; if (has_kickplayerrequestmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->kickplayerrequestmessage()); } - + // optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; if (has_leavegamerequestmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->leavegamerequestmessage()); } - + } if (_has_bits_[32 / 32] & (0xffu << (32 % 32))) { // optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; @@ -23733,56 +25032,56 @@ int PokerTHMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->inviteplayertogamemessage()); } - + // optional .InviteNotifyMessage inviteNotifyMessage = 34; if (has_invitenotifymessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->invitenotifymessage()); } - + // optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; if (has_rejectgameinvitationmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->rejectgameinvitationmessage()); } - + // optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; if (has_rejectinvnotifymessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->rejectinvnotifymessage()); } - + // optional .StartEventMessage startEventMessage = 37; if (has_starteventmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->starteventmessage()); } - + // optional .StartEventAckMessage startEventAckMessage = 38; if (has_starteventackmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->starteventackmessage()); } - + // optional .GameStartInitialMessage gameStartInitialMessage = 39; if (has_gamestartinitialmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gamestartinitialmessage()); } - + // optional .GameStartRejoinMessage gameStartRejoinMessage = 40; if (has_gamestartrejoinmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gamestartrejoinmessage()); } - + } if (_has_bits_[40 / 32] & (0xffu << (40 % 32))) { // optional .HandStartMessage handStartMessage = 41; @@ -23791,56 +25090,56 @@ int PokerTHMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->handstartmessage()); } - + // optional .PlayersTurnMessage playersTurnMessage = 42; if (has_playersturnmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->playersturnmessage()); } - + // optional .MyActionRequestMessage myActionRequestMessage = 43; if (has_myactionrequestmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->myactionrequestmessage()); } - + // optional .YourActionRejectedMessage yourActionRejectedMessage = 44; if (has_youractionrejectedmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->youractionrejectedmessage()); } - + // optional .PlayersActionDoneMessage playersActionDoneMessage = 45; if (has_playersactiondonemessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->playersactiondonemessage()); } - + // optional .DealFlopCardsMessage dealFlopCardsMessage = 46; if (has_dealflopcardsmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->dealflopcardsmessage()); } - + // optional .DealTurnCardMessage dealTurnCardMessage = 47; if (has_dealturncardmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->dealturncardmessage()); } - + // optional .DealRiverCardMessage dealRiverCardMessage = 48; if (has_dealrivercardmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->dealrivercardmessage()); } - + } if (_has_bits_[48 / 32] & (0xffu << (48 % 32))) { // optional .AllInShowCardsMessage allInShowCardsMessage = 49; @@ -23849,56 +25148,56 @@ int PokerTHMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->allinshowcardsmessage()); } - + // optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; if (has_endofhandshowcardsmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->endofhandshowcardsmessage()); } - + // optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; if (has_endofhandhidecardsmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->endofhandhidecardsmessage()); } - + // optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; if (has_showmycardsrequestmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->showmycardsrequestmessage()); } - + // optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; if (has_afterhandshowcardsmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->afterhandshowcardsmessage()); } - + // optional .EndOfGameMessage endOfGameMessage = 54; if (has_endofgamemessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->endofgamemessage()); } - + // optional .PlayerIdChangedMessage playerIdChangedMessage = 55; if (has_playeridchangedmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->playeridchangedmessage()); } - + // optional .AskKickPlayerMessage askKickPlayerMessage = 56; if (has_askkickplayermessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->askkickplayermessage()); } - + } if (_has_bits_[56 / 32] & (0xffu << (56 % 32))) { // optional .AskKickDeniedMessage askKickDeniedMessage = 57; @@ -23907,56 +25206,56 @@ int PokerTHMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->askkickdeniedmessage()); } - + // optional .StartKickPetitionMessage startKickPetitionMessage = 58; if (has_startkickpetitionmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->startkickpetitionmessage()); } - + // optional .VoteKickRequestMessage voteKickRequestMessage = 59; if (has_votekickrequestmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->votekickrequestmessage()); } - + // optional .VoteKickReplyMessage voteKickReplyMessage = 60; if (has_votekickreplymessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->votekickreplymessage()); } - + // optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; if (has_kickpetitionupdatemessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->kickpetitionupdatemessage()); } - + // optional .EndKickPetitionMessage endKickPetitionMessage = 62; if (has_endkickpetitionmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->endkickpetitionmessage()); } - + // optional .StatisticsMessage statisticsMessage = 63; if (has_statisticsmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->statisticsmessage()); } - + // optional .ChatRequestMessage chatRequestMessage = 64; if (has_chatrequestmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->chatrequestmessage()); } - + } if (_has_bits_[64 / 32] & (0xffu << (64 % 32))) { // optional .ChatMessage chatMessage = 65; @@ -23965,56 +25264,56 @@ int PokerTHMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->chatmessage()); } - + // optional .ChatRejectMessage chatRejectMessage = 66; if (has_chatrejectmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->chatrejectmessage()); } - + // optional .DialogMessage dialogMessage = 67; if (has_dialogmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->dialogmessage()); } - + // optional .TimeoutWarningMessage timeoutWarningMessage = 68; if (has_timeoutwarningmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->timeoutwarningmessage()); } - + // optional .ResetTimeoutMessage resetTimeoutMessage = 69; if (has_resettimeoutmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->resettimeoutmessage()); } - + // optional .ReportAvatarMessage reportAvatarMessage = 70; if (has_reportavatarmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->reportavatarmessage()); } - + // optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; if (has_reportavatarackmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->reportavatarackmessage()); } - + // optional .ReportGameMessage reportGameMessage = 72; if (has_reportgamemessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->reportgamemessage()); } - + } if (_has_bits_[72 / 32] & (0xffu << (72 % 32))) { // optional .ReportGameAckMessage reportGameAckMessage = 73; @@ -24023,56 +25322,56 @@ int PokerTHMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->reportgameackmessage()); } - + // optional .ErrorMessage errorMessage = 74; if (has_errormessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->errormessage()); } - + // optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; if (has_adminremovegamemessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->adminremovegamemessage()); } - + // optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; if (has_adminremovegameackmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->adminremovegameackmessage()); } - + // optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; if (has_adminbanplayermessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->adminbanplayermessage()); } - + // optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; if (has_adminbanplayerackmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->adminbanplayerackmessage()); } - + // optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; if (has_gamelistspectatorjoinedmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gamelistspectatorjoinedmessage()); } - + // optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; if (has_gamelistspectatorleftmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gamelistspectatorleftmessage()); } - + } if (_has_bits_[80 / 32] & (0xffu << (80 % 32))) { // optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; @@ -24081,14 +25380,14 @@ int PokerTHMessage::ByteSize() const { ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gamespectatorjoinedmessage()); } - + // optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; if (has_gamespectatorleftmessage()) { total_size += 2 + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( this->gamespectatorleftmessage()); } - + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -24381,7 +25680,7 @@ void PokerTHMessage::CopyFrom(const PokerTHMessage& from) { bool PokerTHMessage::IsInitialized() const { if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; - + if (has_announcemessage()) { if (!this->announcemessage().IsInitialized()) return false; } diff --git a/src/third_party/protobuf/pokerth.pb.h b/src/third_party/protobuf/pokerth.pb.h index feb0c9a9..c8e237b3 100644 --- a/src/third_party/protobuf/pokerth.pb.h +++ b/src/third_party/protobuf/pokerth.pb.h @@ -8,18 +8,19 @@ #include -#if GOOGLE_PROTOBUF_VERSION < 2004000 +#if GOOGLE_PROTOBUF_VERSION < 2005000 #error This file was generated by a newer version of protoc which is #error incompatible with your Protocol Buffer headers. Please update #error your headers. #endif -#if 2004001 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION #error This file was generated by an older version of protoc which is #error incompatible with your Protocol Buffer headers. Please #error regenerate this file with a newer version of protoc. #endif #include +#include #include #include // @@protoc_insertion_point(includes) @@ -545,27 +546,37 @@ class NetGameInfo : public ::google::protobuf::MessageLite { public: NetGameInfo(); virtual ~NetGameInfo(); - + NetGameInfo(const NetGameInfo& from); - + inline NetGameInfo& operator=(const NetGameInfo& from) { CopyFrom(from); return *this; } - + static const NetGameInfo& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const NetGameInfo* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(NetGameInfo* other); - + // implements Message ---------------------------------------------- - + NetGameInfo* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const NetGameInfo& from); void MergeFrom(const NetGameInfo& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -577,11 +588,11 @@ class NetGameInfo : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef NetGameInfo_NetGameType NetGameType; static const NetGameType normalGame = NetGameInfo_NetGameType_normalGame; static const NetGameType registeredOnlyGame = NetGameInfo_NetGameType_registeredOnlyGame; @@ -596,7 +607,7 @@ class NetGameInfo : public ::google::protobuf::MessageLite { NetGameInfo_NetGameType_NetGameType_MAX; static const int NetGameType_ARRAYSIZE = NetGameInfo_NetGameType_NetGameType_ARRAYSIZE; - + typedef NetGameInfo_RaiseIntervalMode RaiseIntervalMode; static const RaiseIntervalMode raiseOnHandNum = NetGameInfo_RaiseIntervalMode_raiseOnHandNum; static const RaiseIntervalMode raiseOnMinutes = NetGameInfo_RaiseIntervalMode_raiseOnMinutes; @@ -609,7 +620,7 @@ class NetGameInfo : public ::google::protobuf::MessageLite { NetGameInfo_RaiseIntervalMode_RaiseIntervalMode_MAX; static const int RaiseIntervalMode_ARRAYSIZE = NetGameInfo_RaiseIntervalMode_RaiseIntervalMode_ARRAYSIZE; - + typedef NetGameInfo_EndRaiseMode EndRaiseMode; static const EndRaiseMode doubleBlinds = NetGameInfo_EndRaiseMode_doubleBlinds; static const EndRaiseMode raiseByEndValue = NetGameInfo_EndRaiseMode_raiseByEndValue; @@ -623,9 +634,9 @@ class NetGameInfo : public ::google::protobuf::MessageLite { NetGameInfo_EndRaiseMode_EndRaiseMode_MAX; static const int EndRaiseMode_ARRAYSIZE = NetGameInfo_EndRaiseMode_EndRaiseMode_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required string gameName = 1; inline bool has_gamename() const; inline void clear_gamename(); @@ -636,91 +647,92 @@ class NetGameInfo : public ::google::protobuf::MessageLite { inline void set_gamename(const char* value, size_t size); inline ::std::string* mutable_gamename(); inline ::std::string* release_gamename(); - + inline void set_allocated_gamename(::std::string* gamename); + // required .NetGameInfo.NetGameType netGameType = 2; inline bool has_netgametype() const; inline void clear_netgametype(); static const int kNetGameTypeFieldNumber = 2; inline ::NetGameInfo_NetGameType netgametype() const; inline void set_netgametype(::NetGameInfo_NetGameType value); - + // required uint32 maxNumPlayers = 3; inline bool has_maxnumplayers() const; inline void clear_maxnumplayers(); static const int kMaxNumPlayersFieldNumber = 3; inline ::google::protobuf::uint32 maxnumplayers() const; inline void set_maxnumplayers(::google::protobuf::uint32 value); - + // required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; inline bool has_raiseintervalmode() const; inline void clear_raiseintervalmode(); static const int kRaiseIntervalModeFieldNumber = 4; inline ::NetGameInfo_RaiseIntervalMode raiseintervalmode() const; inline void set_raiseintervalmode(::NetGameInfo_RaiseIntervalMode value); - + // optional uint32 raiseEveryHands = 5; inline bool has_raiseeveryhands() const; inline void clear_raiseeveryhands(); static const int kRaiseEveryHandsFieldNumber = 5; inline ::google::protobuf::uint32 raiseeveryhands() const; inline void set_raiseeveryhands(::google::protobuf::uint32 value); - + // optional uint32 raiseEveryMinutes = 6; inline bool has_raiseeveryminutes() const; inline void clear_raiseeveryminutes(); static const int kRaiseEveryMinutesFieldNumber = 6; inline ::google::protobuf::uint32 raiseeveryminutes() const; inline void set_raiseeveryminutes(::google::protobuf::uint32 value); - + // required .NetGameInfo.EndRaiseMode endRaiseMode = 7; inline bool has_endraisemode() const; inline void clear_endraisemode(); static const int kEndRaiseModeFieldNumber = 7; inline ::NetGameInfo_EndRaiseMode endraisemode() const; inline void set_endraisemode(::NetGameInfo_EndRaiseMode value); - + // optional uint32 endRaiseSmallBlindValue = 8; inline bool has_endraisesmallblindvalue() const; inline void clear_endraisesmallblindvalue(); static const int kEndRaiseSmallBlindValueFieldNumber = 8; inline ::google::protobuf::uint32 endraisesmallblindvalue() const; inline void set_endraisesmallblindvalue(::google::protobuf::uint32 value); - + // required uint32 proposedGuiSpeed = 9; inline bool has_proposedguispeed() const; inline void clear_proposedguispeed(); static const int kProposedGuiSpeedFieldNumber = 9; inline ::google::protobuf::uint32 proposedguispeed() const; inline void set_proposedguispeed(::google::protobuf::uint32 value); - + // required uint32 delayBetweenHands = 10; inline bool has_delaybetweenhands() const; inline void clear_delaybetweenhands(); static const int kDelayBetweenHandsFieldNumber = 10; inline ::google::protobuf::uint32 delaybetweenhands() const; inline void set_delaybetweenhands(::google::protobuf::uint32 value); - + // required uint32 playerActionTimeout = 11; inline bool has_playeractiontimeout() const; inline void clear_playeractiontimeout(); static const int kPlayerActionTimeoutFieldNumber = 11; inline ::google::protobuf::uint32 playeractiontimeout() const; inline void set_playeractiontimeout(::google::protobuf::uint32 value); - + // required uint32 firstSmallBlind = 12; inline bool has_firstsmallblind() const; inline void clear_firstsmallblind(); static const int kFirstSmallBlindFieldNumber = 12; inline ::google::protobuf::uint32 firstsmallblind() const; inline void set_firstsmallblind(::google::protobuf::uint32 value); - + // required uint32 startMoney = 13; inline bool has_startmoney() const; inline void clear_startmoney(); static const int kStartMoneyFieldNumber = 13; inline ::google::protobuf::uint32 startmoney() const; inline void set_startmoney(::google::protobuf::uint32 value); - + // repeated uint32 manualBlinds = 14 [packed = true]; inline int manualblinds_size() const; inline void clear_manualblinds(); @@ -732,7 +744,7 @@ class NetGameInfo : public ::google::protobuf::MessageLite { manualblinds() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* mutable_manualblinds(); - + // @@protoc_insertion_point(class_scope:NetGameInfo) private: inline void set_has_gamename(); @@ -761,7 +773,7 @@ class NetGameInfo : public ::google::protobuf::MessageLite { inline void clear_has_firstsmallblind(); inline void set_has_startmoney(); inline void clear_has_startmoney(); - + ::std::string* gamename_; int netgametype_; ::google::protobuf::uint32 maxnumplayers_; @@ -777,14 +789,18 @@ class NetGameInfo : public ::google::protobuf::MessageLite { ::google::protobuf::uint32 startmoney_; ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > manualblinds_; mutable int _manualblinds_cached_byte_size_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(14 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static NetGameInfo* default_instance_; }; @@ -794,27 +810,37 @@ class PlayerResult : public ::google::protobuf::MessageLite { public: PlayerResult(); virtual ~PlayerResult(); - + PlayerResult(const PlayerResult& from); - + inline PlayerResult& operator=(const PlayerResult& from) { CopyFrom(from); return *this; } - + static const PlayerResult& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const PlayerResult* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(PlayerResult* other); - + // implements Message ---------------------------------------------- - + PlayerResult* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const PlayerResult& from); void MergeFrom(const PlayerResult& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -826,34 +852,34 @@ class PlayerResult : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 playerId = 1; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 1; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // required uint32 resultCard1 = 2; inline bool has_resultcard1() const; inline void clear_resultcard1(); static const int kResultCard1FieldNumber = 2; inline ::google::protobuf::uint32 resultcard1() const; inline void set_resultcard1(::google::protobuf::uint32 value); - + // required uint32 resultCard2 = 3; inline bool has_resultcard2() const; inline void clear_resultcard2(); static const int kResultCard2FieldNumber = 3; inline ::google::protobuf::uint32 resultcard2() const; inline void set_resultcard2(::google::protobuf::uint32 value); - + // repeated uint32 bestHandPosition = 4 [packed = true]; inline int besthandposition_size() const; inline void clear_besthandposition(); @@ -865,28 +891,28 @@ class PlayerResult : public ::google::protobuf::MessageLite { besthandposition() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* mutable_besthandposition(); - + // required uint32 moneyWon = 5; inline bool has_moneywon() const; inline void clear_moneywon(); static const int kMoneyWonFieldNumber = 5; inline ::google::protobuf::uint32 moneywon() const; inline void set_moneywon(::google::protobuf::uint32 value); - + // required uint32 playerMoney = 6; inline bool has_playermoney() const; inline void clear_playermoney(); static const int kPlayerMoneyFieldNumber = 6; inline ::google::protobuf::uint32 playermoney() const; inline void set_playermoney(::google::protobuf::uint32 value); - + // optional uint32 cardsValue = 7; inline bool has_cardsvalue() const; inline void clear_cardsvalue(); static const int kCardsValueFieldNumber = 7; inline ::google::protobuf::uint32 cardsvalue() const; inline void set_cardsvalue(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:PlayerResult) private: inline void set_has_playerid(); @@ -901,7 +927,7 @@ class PlayerResult : public ::google::protobuf::MessageLite { inline void clear_has_playermoney(); inline void set_has_cardsvalue(); inline void clear_has_cardsvalue(); - + ::google::protobuf::uint32 playerid_; ::google::protobuf::uint32 resultcard1_; ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > besthandposition_; @@ -910,14 +936,18 @@ class PlayerResult : public ::google::protobuf::MessageLite { ::google::protobuf::uint32 moneywon_; ::google::protobuf::uint32 playermoney_; ::google::protobuf::uint32 cardsvalue_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static PlayerResult* default_instance_; }; @@ -927,27 +957,37 @@ class AnnounceMessage_Version : public ::google::protobuf::MessageLite { public: AnnounceMessage_Version(); virtual ~AnnounceMessage_Version(); - + AnnounceMessage_Version(const AnnounceMessage_Version& from); - + inline AnnounceMessage_Version& operator=(const AnnounceMessage_Version& from) { CopyFrom(from); return *this; } - + static const AnnounceMessage_Version& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AnnounceMessage_Version* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AnnounceMessage_Version* other); - + // implements Message ---------------------------------------------- - + AnnounceMessage_Version* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AnnounceMessage_Version& from); void MergeFrom(const AnnounceMessage_Version& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -959,44 +999,48 @@ class AnnounceMessage_Version : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 majorVersion = 1; inline bool has_majorversion() const; inline void clear_majorversion(); static const int kMajorVersionFieldNumber = 1; inline ::google::protobuf::uint32 majorversion() const; inline void set_majorversion(::google::protobuf::uint32 value); - + // required uint32 minorVersion = 2; inline bool has_minorversion() const; inline void clear_minorversion(); static const int kMinorVersionFieldNumber = 2; inline ::google::protobuf::uint32 minorversion() const; inline void set_minorversion(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:AnnounceMessage.Version) private: inline void set_has_majorversion(); inline void clear_has_majorversion(); inline void set_has_minorversion(); inline void clear_has_minorversion(); - + ::google::protobuf::uint32 majorversion_; ::google::protobuf::uint32 minorversion_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AnnounceMessage_Version* default_instance_; }; @@ -1006,27 +1050,37 @@ class AnnounceMessage : public ::google::protobuf::MessageLite { public: AnnounceMessage(); virtual ~AnnounceMessage(); - + AnnounceMessage(const AnnounceMessage& from); - + inline AnnounceMessage& operator=(const AnnounceMessage& from) { CopyFrom(from); return *this; } - + static const AnnounceMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AnnounceMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AnnounceMessage* other); - + // implements Message ---------------------------------------------- - + AnnounceMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AnnounceMessage& from); void MergeFrom(const AnnounceMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1038,13 +1092,13 @@ class AnnounceMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef AnnounceMessage_Version Version; - + typedef AnnounceMessage_ServerType ServerType; static const ServerType serverTypeLAN = AnnounceMessage_ServerType_serverTypeLAN; static const ServerType serverTypeInternetNoAuth = AnnounceMessage_ServerType_serverTypeInternetNoAuth; @@ -1058,9 +1112,9 @@ class AnnounceMessage : public ::google::protobuf::MessageLite { AnnounceMessage_ServerType_ServerType_MAX; static const int ServerType_ARRAYSIZE = AnnounceMessage_ServerType_ServerType_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required .AnnounceMessage.Version protocolVersion = 1; inline bool has_protocolversion() const; inline void clear_protocolversion(); @@ -1068,7 +1122,8 @@ class AnnounceMessage : public ::google::protobuf::MessageLite { inline const ::AnnounceMessage_Version& protocolversion() const; inline ::AnnounceMessage_Version* mutable_protocolversion(); inline ::AnnounceMessage_Version* release_protocolversion(); - + inline void set_allocated_protocolversion(::AnnounceMessage_Version* protocolversion); + // required .AnnounceMessage.Version latestGameVersion = 2; inline bool has_latestgameversion() const; inline void clear_latestgameversion(); @@ -1076,28 +1131,29 @@ class AnnounceMessage : public ::google::protobuf::MessageLite { inline const ::AnnounceMessage_Version& latestgameversion() const; inline ::AnnounceMessage_Version* mutable_latestgameversion(); inline ::AnnounceMessage_Version* release_latestgameversion(); - + inline void set_allocated_latestgameversion(::AnnounceMessage_Version* latestgameversion); + // required uint32 latestBetaRevision = 3; inline bool has_latestbetarevision() const; inline void clear_latestbetarevision(); static const int kLatestBetaRevisionFieldNumber = 3; inline ::google::protobuf::uint32 latestbetarevision() const; inline void set_latestbetarevision(::google::protobuf::uint32 value); - + // required .AnnounceMessage.ServerType serverType = 4; inline bool has_servertype() const; inline void clear_servertype(); static const int kServerTypeFieldNumber = 4; inline ::AnnounceMessage_ServerType servertype() const; inline void set_servertype(::AnnounceMessage_ServerType value); - + // required uint32 numPlayersOnServer = 5; inline bool has_numplayersonserver() const; inline void clear_numplayersonserver(); static const int kNumPlayersOnServerFieldNumber = 5; inline ::google::protobuf::uint32 numplayersonserver() const; inline void set_numplayersonserver(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:AnnounceMessage) private: inline void set_has_protocolversion(); @@ -1110,20 +1166,24 @@ class AnnounceMessage : public ::google::protobuf::MessageLite { inline void clear_has_servertype(); inline void set_has_numplayersonserver(); inline void clear_has_numplayersonserver(); - + ::AnnounceMessage_Version* protocolversion_; ::AnnounceMessage_Version* latestgameversion_; ::google::protobuf::uint32 latestbetarevision_; int servertype_; ::google::protobuf::uint32 numplayersonserver_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AnnounceMessage* default_instance_; }; @@ -1133,27 +1193,37 @@ class InitMessage : public ::google::protobuf::MessageLite { public: InitMessage(); virtual ~InitMessage(); - + InitMessage(const InitMessage& from); - + inline InitMessage& operator=(const InitMessage& from) { CopyFrom(from); return *this; } - + static const InitMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const InitMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(InitMessage* other); - + // implements Message ---------------------------------------------- - + InitMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const InitMessage& from); void MergeFrom(const InitMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1165,11 +1235,11 @@ class InitMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef InitMessage_LoginType LoginType; static const LoginType guestLogin = InitMessage_LoginType_guestLogin; static const LoginType authenticatedLogin = InitMessage_LoginType_authenticatedLogin; @@ -1183,9 +1253,9 @@ class InitMessage : public ::google::protobuf::MessageLite { InitMessage_LoginType_LoginType_MAX; static const int LoginType_ARRAYSIZE = InitMessage_LoginType_LoginType_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required .AnnounceMessage.Version requestedVersion = 1; inline bool has_requestedversion() const; inline void clear_requestedversion(); @@ -1193,14 +1263,15 @@ class InitMessage : public ::google::protobuf::MessageLite { inline const ::AnnounceMessage_Version& requestedversion() const; inline ::AnnounceMessage_Version* mutable_requestedversion(); inline ::AnnounceMessage_Version* release_requestedversion(); - + inline void set_allocated_requestedversion(::AnnounceMessage_Version* requestedversion); + // required uint32 buildId = 2; inline bool has_buildid() const; inline void clear_buildid(); static const int kBuildIdFieldNumber = 2; inline ::google::protobuf::uint32 buildid() const; inline void set_buildid(::google::protobuf::uint32 value); - + // optional bytes myLastSessionId = 3; inline bool has_mylastsessionid() const; inline void clear_mylastsessionid(); @@ -1211,7 +1282,8 @@ class InitMessage : public ::google::protobuf::MessageLite { inline void set_mylastsessionid(const void* value, size_t size); inline ::std::string* mutable_mylastsessionid(); inline ::std::string* release_mylastsessionid(); - + inline void set_allocated_mylastsessionid(::std::string* mylastsessionid); + // optional string authServerPassword = 4; inline bool has_authserverpassword() const; inline void clear_authserverpassword(); @@ -1222,14 +1294,15 @@ class InitMessage : public ::google::protobuf::MessageLite { inline void set_authserverpassword(const char* value, size_t size); inline ::std::string* mutable_authserverpassword(); inline ::std::string* release_authserverpassword(); - + inline void set_allocated_authserverpassword(::std::string* authserverpassword); + // required .InitMessage.LoginType login = 5; inline bool has_login() const; inline void clear_login(); static const int kLoginFieldNumber = 5; inline ::InitMessage_LoginType login() const; inline void set_login(::InitMessage_LoginType value); - + // optional string nickName = 6; inline bool has_nickname() const; inline void clear_nickname(); @@ -1240,7 +1313,8 @@ class InitMessage : public ::google::protobuf::MessageLite { inline void set_nickname(const char* value, size_t size); inline ::std::string* mutable_nickname(); inline ::std::string* release_nickname(); - + inline void set_allocated_nickname(::std::string* nickname); + // optional bytes clientUserData = 7; inline bool has_clientuserdata() const; inline void clear_clientuserdata(); @@ -1251,7 +1325,8 @@ class InitMessage : public ::google::protobuf::MessageLite { inline void set_clientuserdata(const void* value, size_t size); inline ::std::string* mutable_clientuserdata(); inline ::std::string* release_clientuserdata(); - + inline void set_allocated_clientuserdata(::std::string* clientuserdata); + // optional bytes avatarHash = 8; inline bool has_avatarhash() const; inline void clear_avatarhash(); @@ -1262,7 +1337,8 @@ class InitMessage : public ::google::protobuf::MessageLite { inline void set_avatarhash(const void* value, size_t size); inline ::std::string* mutable_avatarhash(); inline ::std::string* release_avatarhash(); - + inline void set_allocated_avatarhash(::std::string* avatarhash); + // @@protoc_insertion_point(class_scope:InitMessage) private: inline void set_has_requestedversion(); @@ -1281,7 +1357,7 @@ class InitMessage : public ::google::protobuf::MessageLite { inline void clear_has_clientuserdata(); inline void set_has_avatarhash(); inline void clear_has_avatarhash(); - + ::AnnounceMessage_Version* requestedversion_; ::std::string* mylastsessionid_; ::google::protobuf::uint32 buildid_; @@ -1290,14 +1366,18 @@ class InitMessage : public ::google::protobuf::MessageLite { ::std::string* nickname_; ::std::string* clientuserdata_; ::std::string* avatarhash_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static InitMessage* default_instance_; }; @@ -1307,27 +1387,37 @@ class AuthServerChallengeMessage : public ::google::protobuf::MessageLite { public: AuthServerChallengeMessage(); virtual ~AuthServerChallengeMessage(); - + AuthServerChallengeMessage(const AuthServerChallengeMessage& from); - + inline AuthServerChallengeMessage& operator=(const AuthServerChallengeMessage& from) { CopyFrom(from); return *this; } - + static const AuthServerChallengeMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AuthServerChallengeMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AuthServerChallengeMessage* other); - + // implements Message ---------------------------------------------- - + AuthServerChallengeMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AuthServerChallengeMessage& from); void MergeFrom(const AuthServerChallengeMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1339,13 +1429,13 @@ class AuthServerChallengeMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required bytes serverChallenge = 1; inline bool has_serverchallenge() const; inline void clear_serverchallenge(); @@ -1356,21 +1446,26 @@ class AuthServerChallengeMessage : public ::google::protobuf::MessageLite { inline void set_serverchallenge(const void* value, size_t size); inline ::std::string* mutable_serverchallenge(); inline ::std::string* release_serverchallenge(); - + inline void set_allocated_serverchallenge(::std::string* serverchallenge); + // @@protoc_insertion_point(class_scope:AuthServerChallengeMessage) private: inline void set_has_serverchallenge(); inline void clear_has_serverchallenge(); - + ::std::string* serverchallenge_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AuthServerChallengeMessage* default_instance_; }; @@ -1380,27 +1475,37 @@ class AuthClientResponseMessage : public ::google::protobuf::MessageLite { public: AuthClientResponseMessage(); virtual ~AuthClientResponseMessage(); - + AuthClientResponseMessage(const AuthClientResponseMessage& from); - + inline AuthClientResponseMessage& operator=(const AuthClientResponseMessage& from) { CopyFrom(from); return *this; } - + static const AuthClientResponseMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AuthClientResponseMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AuthClientResponseMessage* other); - + // implements Message ---------------------------------------------- - + AuthClientResponseMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AuthClientResponseMessage& from); void MergeFrom(const AuthClientResponseMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1412,13 +1517,13 @@ class AuthClientResponseMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required bytes clientResponse = 1; inline bool has_clientresponse() const; inline void clear_clientresponse(); @@ -1429,21 +1534,26 @@ class AuthClientResponseMessage : public ::google::protobuf::MessageLite { inline void set_clientresponse(const void* value, size_t size); inline ::std::string* mutable_clientresponse(); inline ::std::string* release_clientresponse(); - + inline void set_allocated_clientresponse(::std::string* clientresponse); + // @@protoc_insertion_point(class_scope:AuthClientResponseMessage) private: inline void set_has_clientresponse(); inline void clear_has_clientresponse(); - + ::std::string* clientresponse_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AuthClientResponseMessage* default_instance_; }; @@ -1453,27 +1563,37 @@ class AuthServerVerificationMessage : public ::google::protobuf::MessageLite { public: AuthServerVerificationMessage(); virtual ~AuthServerVerificationMessage(); - + AuthServerVerificationMessage(const AuthServerVerificationMessage& from); - + inline AuthServerVerificationMessage& operator=(const AuthServerVerificationMessage& from) { CopyFrom(from); return *this; } - + static const AuthServerVerificationMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AuthServerVerificationMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AuthServerVerificationMessage* other); - + // implements Message ---------------------------------------------- - + AuthServerVerificationMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AuthServerVerificationMessage& from); void MergeFrom(const AuthServerVerificationMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1485,13 +1605,13 @@ class AuthServerVerificationMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required bytes serverVerification = 1; inline bool has_serververification() const; inline void clear_serververification(); @@ -1502,21 +1622,26 @@ class AuthServerVerificationMessage : public ::google::protobuf::MessageLite { inline void set_serververification(const void* value, size_t size); inline ::std::string* mutable_serververification(); inline ::std::string* release_serververification(); - + inline void set_allocated_serververification(::std::string* serververification); + // @@protoc_insertion_point(class_scope:AuthServerVerificationMessage) private: inline void set_has_serververification(); inline void clear_has_serververification(); - + ::std::string* serververification_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AuthServerVerificationMessage* default_instance_; }; @@ -1526,27 +1651,37 @@ class InitAckMessage : public ::google::protobuf::MessageLite { public: InitAckMessage(); virtual ~InitAckMessage(); - + InitAckMessage(const InitAckMessage& from); - + inline InitAckMessage& operator=(const InitAckMessage& from) { CopyFrom(from); return *this; } - + static const InitAckMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const InitAckMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(InitAckMessage* other); - + // implements Message ---------------------------------------------- - + InitAckMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const InitAckMessage& from); void MergeFrom(const InitAckMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1558,13 +1693,13 @@ class InitAckMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required bytes yourSessionId = 1; inline bool has_yoursessionid() const; inline void clear_yoursessionid(); @@ -1575,14 +1710,15 @@ class InitAckMessage : public ::google::protobuf::MessageLite { inline void set_yoursessionid(const void* value, size_t size); inline ::std::string* mutable_yoursessionid(); inline ::std::string* release_yoursessionid(); - + inline void set_allocated_yoursessionid(::std::string* yoursessionid); + // required uint32 yourPlayerId = 2; inline bool has_yourplayerid() const; inline void clear_yourplayerid(); static const int kYourPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 yourplayerid() const; inline void set_yourplayerid(::google::protobuf::uint32 value); - + // optional bytes yourAvatarHash = 3; inline bool has_youravatarhash() const; inline void clear_youravatarhash(); @@ -1593,14 +1729,15 @@ class InitAckMessage : public ::google::protobuf::MessageLite { inline void set_youravatarhash(const void* value, size_t size); inline ::std::string* mutable_youravatarhash(); inline ::std::string* release_youravatarhash(); - + inline void set_allocated_youravatarhash(::std::string* youravatarhash); + // optional uint32 rejoinGameId = 4; inline bool has_rejoingameid() const; inline void clear_rejoingameid(); static const int kRejoinGameIdFieldNumber = 4; inline ::google::protobuf::uint32 rejoingameid() const; inline void set_rejoingameid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:InitAckMessage) private: inline void set_has_yoursessionid(); @@ -1611,19 +1748,23 @@ class InitAckMessage : public ::google::protobuf::MessageLite { inline void clear_has_youravatarhash(); inline void set_has_rejoingameid(); inline void clear_has_rejoingameid(); - + ::std::string* yoursessionid_; ::std::string* youravatarhash_; ::google::protobuf::uint32 yourplayerid_; ::google::protobuf::uint32 rejoingameid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static InitAckMessage* default_instance_; }; @@ -1633,27 +1774,37 @@ class AvatarRequestMessage : public ::google::protobuf::MessageLite { public: AvatarRequestMessage(); virtual ~AvatarRequestMessage(); - + AvatarRequestMessage(const AvatarRequestMessage& from); - + inline AvatarRequestMessage& operator=(const AvatarRequestMessage& from) { CopyFrom(from); return *this; } - + static const AvatarRequestMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AvatarRequestMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AvatarRequestMessage* other); - + // implements Message ---------------------------------------------- - + AvatarRequestMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AvatarRequestMessage& from); void MergeFrom(const AvatarRequestMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1665,20 +1816,20 @@ class AvatarRequestMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 requestId = 1; inline bool has_requestid() const; inline void clear_requestid(); static const int kRequestIdFieldNumber = 1; inline ::google::protobuf::uint32 requestid() const; inline void set_requestid(::google::protobuf::uint32 value); - + // required bytes avatarHash = 2; inline bool has_avatarhash() const; inline void clear_avatarhash(); @@ -1689,24 +1840,29 @@ class AvatarRequestMessage : public ::google::protobuf::MessageLite { inline void set_avatarhash(const void* value, size_t size); inline ::std::string* mutable_avatarhash(); inline ::std::string* release_avatarhash(); - + inline void set_allocated_avatarhash(::std::string* avatarhash); + // @@protoc_insertion_point(class_scope:AvatarRequestMessage) private: inline void set_has_requestid(); inline void clear_has_requestid(); inline void set_has_avatarhash(); inline void clear_has_avatarhash(); - + ::std::string* avatarhash_; ::google::protobuf::uint32 requestid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AvatarRequestMessage* default_instance_; }; @@ -1716,27 +1872,37 @@ class AvatarHeaderMessage : public ::google::protobuf::MessageLite { public: AvatarHeaderMessage(); virtual ~AvatarHeaderMessage(); - + AvatarHeaderMessage(const AvatarHeaderMessage& from); - + inline AvatarHeaderMessage& operator=(const AvatarHeaderMessage& from) { CopyFrom(from); return *this; } - + static const AvatarHeaderMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AvatarHeaderMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AvatarHeaderMessage* other); - + // implements Message ---------------------------------------------- - + AvatarHeaderMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AvatarHeaderMessage& from); void MergeFrom(const AvatarHeaderMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1748,34 +1914,34 @@ class AvatarHeaderMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 requestId = 1; inline bool has_requestid() const; inline void clear_requestid(); static const int kRequestIdFieldNumber = 1; inline ::google::protobuf::uint32 requestid() const; inline void set_requestid(::google::protobuf::uint32 value); - + // required .NetAvatarType avatarType = 2; inline bool has_avatartype() const; inline void clear_avatartype(); static const int kAvatarTypeFieldNumber = 2; - inline NetAvatarType avatartype() const; - inline void set_avatartype(NetAvatarType value); - + inline ::NetAvatarType avatartype() const; + inline void set_avatartype(::NetAvatarType value); + // required uint32 avatarSize = 3; inline bool has_avatarsize() const; inline void clear_avatarsize(); static const int kAvatarSizeFieldNumber = 3; inline ::google::protobuf::uint32 avatarsize() const; inline void set_avatarsize(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:AvatarHeaderMessage) private: inline void set_has_requestid(); @@ -1784,18 +1950,22 @@ class AvatarHeaderMessage : public ::google::protobuf::MessageLite { inline void clear_has_avatartype(); inline void set_has_avatarsize(); inline void clear_has_avatarsize(); - + ::google::protobuf::uint32 requestid_; int avatartype_; ::google::protobuf::uint32 avatarsize_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AvatarHeaderMessage* default_instance_; }; @@ -1805,27 +1975,37 @@ class AvatarDataMessage : public ::google::protobuf::MessageLite { public: AvatarDataMessage(); virtual ~AvatarDataMessage(); - + AvatarDataMessage(const AvatarDataMessage& from); - + inline AvatarDataMessage& operator=(const AvatarDataMessage& from) { CopyFrom(from); return *this; } - + static const AvatarDataMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AvatarDataMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AvatarDataMessage* other); - + // implements Message ---------------------------------------------- - + AvatarDataMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AvatarDataMessage& from); void MergeFrom(const AvatarDataMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1837,20 +2017,20 @@ class AvatarDataMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 requestId = 1; inline bool has_requestid() const; inline void clear_requestid(); static const int kRequestIdFieldNumber = 1; inline ::google::protobuf::uint32 requestid() const; inline void set_requestid(::google::protobuf::uint32 value); - + // required bytes avatarBlock = 2; inline bool has_avatarblock() const; inline void clear_avatarblock(); @@ -1861,24 +2041,29 @@ class AvatarDataMessage : public ::google::protobuf::MessageLite { inline void set_avatarblock(const void* value, size_t size); inline ::std::string* mutable_avatarblock(); inline ::std::string* release_avatarblock(); - + inline void set_allocated_avatarblock(::std::string* avatarblock); + // @@protoc_insertion_point(class_scope:AvatarDataMessage) private: inline void set_has_requestid(); inline void clear_has_requestid(); inline void set_has_avatarblock(); inline void clear_has_avatarblock(); - + ::std::string* avatarblock_; ::google::protobuf::uint32 requestid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AvatarDataMessage* default_instance_; }; @@ -1888,27 +2073,37 @@ class AvatarEndMessage : public ::google::protobuf::MessageLite { public: AvatarEndMessage(); virtual ~AvatarEndMessage(); - + AvatarEndMessage(const AvatarEndMessage& from); - + inline AvatarEndMessage& operator=(const AvatarEndMessage& from) { CopyFrom(from); return *this; } - + static const AvatarEndMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AvatarEndMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AvatarEndMessage* other); - + // implements Message ---------------------------------------------- - + AvatarEndMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AvatarEndMessage& from); void MergeFrom(const AvatarEndMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1920,34 +2115,38 @@ class AvatarEndMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 requestId = 1; inline bool has_requestid() const; inline void clear_requestid(); static const int kRequestIdFieldNumber = 1; inline ::google::protobuf::uint32 requestid() const; inline void set_requestid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:AvatarEndMessage) private: inline void set_has_requestid(); inline void clear_has_requestid(); - + ::google::protobuf::uint32 requestid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AvatarEndMessage* default_instance_; }; @@ -1957,27 +2156,37 @@ class UnknownAvatarMessage : public ::google::protobuf::MessageLite { public: UnknownAvatarMessage(); virtual ~UnknownAvatarMessage(); - + UnknownAvatarMessage(const UnknownAvatarMessage& from); - + inline UnknownAvatarMessage& operator=(const UnknownAvatarMessage& from) { CopyFrom(from); return *this; } - + static const UnknownAvatarMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const UnknownAvatarMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(UnknownAvatarMessage* other); - + // implements Message ---------------------------------------------- - + UnknownAvatarMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const UnknownAvatarMessage& from); void MergeFrom(const UnknownAvatarMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -1989,34 +2198,38 @@ class UnknownAvatarMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 requestId = 1; inline bool has_requestid() const; inline void clear_requestid(); static const int kRequestIdFieldNumber = 1; inline ::google::protobuf::uint32 requestid() const; inline void set_requestid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:UnknownAvatarMessage) private: inline void set_has_requestid(); inline void clear_has_requestid(); - + ::google::protobuf::uint32 requestid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static UnknownAvatarMessage* default_instance_; }; @@ -2026,27 +2239,37 @@ class PlayerListMessage : public ::google::protobuf::MessageLite { public: PlayerListMessage(); virtual ~PlayerListMessage(); - + PlayerListMessage(const PlayerListMessage& from); - + inline PlayerListMessage& operator=(const PlayerListMessage& from) { CopyFrom(from); return *this; } - + static const PlayerListMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const PlayerListMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(PlayerListMessage* other); - + // implements Message ---------------------------------------------- - + PlayerListMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const PlayerListMessage& from); void MergeFrom(const PlayerListMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2058,11 +2281,11 @@ class PlayerListMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef PlayerListMessage_PlayerListNotification PlayerListNotification; static const PlayerListNotification playerListNew = PlayerListMessage_PlayerListNotification_playerListNew; static const PlayerListNotification playerListLeft = PlayerListMessage_PlayerListNotification_playerListLeft; @@ -2075,40 +2298,44 @@ class PlayerListMessage : public ::google::protobuf::MessageLite { PlayerListMessage_PlayerListNotification_PlayerListNotification_MAX; static const int PlayerListNotification_ARRAYSIZE = PlayerListMessage_PlayerListNotification_PlayerListNotification_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 playerId = 1; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 1; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // required .PlayerListMessage.PlayerListNotification playerListNotification = 2; inline bool has_playerlistnotification() const; inline void clear_playerlistnotification(); static const int kPlayerListNotificationFieldNumber = 2; inline ::PlayerListMessage_PlayerListNotification playerlistnotification() const; inline void set_playerlistnotification(::PlayerListMessage_PlayerListNotification value); - + // @@protoc_insertion_point(class_scope:PlayerListMessage) private: inline void set_has_playerid(); inline void clear_has_playerid(); inline void set_has_playerlistnotification(); inline void clear_has_playerlistnotification(); - + ::google::protobuf::uint32 playerid_; int playerlistnotification_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static PlayerListMessage* default_instance_; }; @@ -2118,27 +2345,37 @@ class GameListNewMessage : public ::google::protobuf::MessageLite { public: GameListNewMessage(); virtual ~GameListNewMessage(); - + GameListNewMessage(const GameListNewMessage& from); - + inline GameListNewMessage& operator=(const GameListNewMessage& from) { CopyFrom(from); return *this; } - + static const GameListNewMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GameListNewMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GameListNewMessage* other); - + // implements Message ---------------------------------------------- - + GameListNewMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GameListNewMessage& from); void MergeFrom(const GameListNewMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2150,34 +2387,34 @@ class GameListNewMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required .NetGameMode gameMode = 2; inline bool has_gamemode() const; inline void clear_gamemode(); static const int kGameModeFieldNumber = 2; - inline NetGameMode gamemode() const; - inline void set_gamemode(NetGameMode value); - + inline ::NetGameMode gamemode() const; + inline void set_gamemode(::NetGameMode value); + // required bool isPrivate = 3; inline bool has_isprivate() const; inline void clear_isprivate(); static const int kIsPrivateFieldNumber = 3; inline bool isprivate() const; inline void set_isprivate(bool value); - + // repeated uint32 playerIds = 4 [packed = true]; inline int playerids_size() const; inline void clear_playerids(); @@ -2189,14 +2426,14 @@ class GameListNewMessage : public ::google::protobuf::MessageLite { playerids() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* mutable_playerids(); - + // required uint32 adminPlayerId = 5; inline bool has_adminplayerid() const; inline void clear_adminplayerid(); static const int kAdminPlayerIdFieldNumber = 5; inline ::google::protobuf::uint32 adminplayerid() const; inline void set_adminplayerid(::google::protobuf::uint32 value); - + // required .NetGameInfo gameInfo = 6; inline bool has_gameinfo() const; inline void clear_gameinfo(); @@ -2204,7 +2441,8 @@ class GameListNewMessage : public ::google::protobuf::MessageLite { inline const ::NetGameInfo& gameinfo() const; inline ::NetGameInfo* mutable_gameinfo(); inline ::NetGameInfo* release_gameinfo(); - + inline void set_allocated_gameinfo(::NetGameInfo* gameinfo); + // @@protoc_insertion_point(class_scope:GameListNewMessage) private: inline void set_has_gameid(); @@ -2217,7 +2455,7 @@ class GameListNewMessage : public ::google::protobuf::MessageLite { inline void clear_has_adminplayerid(); inline void set_has_gameinfo(); inline void clear_has_gameinfo(); - + ::google::protobuf::uint32 gameid_; int gamemode_; ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > playerids_; @@ -2225,14 +2463,18 @@ class GameListNewMessage : public ::google::protobuf::MessageLite { bool isprivate_; ::google::protobuf::uint32 adminplayerid_; ::NetGameInfo* gameinfo_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GameListNewMessage* default_instance_; }; @@ -2242,27 +2484,37 @@ class GameListUpdateMessage : public ::google::protobuf::MessageLite { public: GameListUpdateMessage(); virtual ~GameListUpdateMessage(); - + GameListUpdateMessage(const GameListUpdateMessage& from); - + inline GameListUpdateMessage& operator=(const GameListUpdateMessage& from) { CopyFrom(from); return *this; } - + static const GameListUpdateMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GameListUpdateMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GameListUpdateMessage* other); - + // implements Message ---------------------------------------------- - + GameListUpdateMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GameListUpdateMessage& from); void MergeFrom(const GameListUpdateMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2274,44 +2526,48 @@ class GameListUpdateMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required .NetGameMode gameMode = 2; inline bool has_gamemode() const; inline void clear_gamemode(); static const int kGameModeFieldNumber = 2; - inline NetGameMode gamemode() const; - inline void set_gamemode(NetGameMode value); - + inline ::NetGameMode gamemode() const; + inline void set_gamemode(::NetGameMode value); + // @@protoc_insertion_point(class_scope:GameListUpdateMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_gamemode(); inline void clear_has_gamemode(); - + ::google::protobuf::uint32 gameid_; int gamemode_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GameListUpdateMessage* default_instance_; }; @@ -2321,27 +2577,37 @@ class GameListPlayerJoinedMessage : public ::google::protobuf::MessageLite { public: GameListPlayerJoinedMessage(); virtual ~GameListPlayerJoinedMessage(); - + GameListPlayerJoinedMessage(const GameListPlayerJoinedMessage& from); - + inline GameListPlayerJoinedMessage& operator=(const GameListPlayerJoinedMessage& from) { CopyFrom(from); return *this; } - + static const GameListPlayerJoinedMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GameListPlayerJoinedMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GameListPlayerJoinedMessage* other); - + // implements Message ---------------------------------------------- - + GameListPlayerJoinedMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GameListPlayerJoinedMessage& from); void MergeFrom(const GameListPlayerJoinedMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2353,44 +2619,48 @@ class GameListPlayerJoinedMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:GameListPlayerJoinedMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_playerid(); inline void clear_has_playerid(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GameListPlayerJoinedMessage* default_instance_; }; @@ -2400,27 +2670,37 @@ class GameListPlayerLeftMessage : public ::google::protobuf::MessageLite { public: GameListPlayerLeftMessage(); virtual ~GameListPlayerLeftMessage(); - + GameListPlayerLeftMessage(const GameListPlayerLeftMessage& from); - + inline GameListPlayerLeftMessage& operator=(const GameListPlayerLeftMessage& from) { CopyFrom(from); return *this; } - + static const GameListPlayerLeftMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GameListPlayerLeftMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GameListPlayerLeftMessage* other); - + // implements Message ---------------------------------------------- - + GameListPlayerLeftMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GameListPlayerLeftMessage& from); void MergeFrom(const GameListPlayerLeftMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2432,44 +2712,48 @@ class GameListPlayerLeftMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:GameListPlayerLeftMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_playerid(); inline void clear_has_playerid(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GameListPlayerLeftMessage* default_instance_; }; @@ -2479,27 +2763,37 @@ class GameListSpectatorJoinedMessage : public ::google::protobuf::MessageLite { public: GameListSpectatorJoinedMessage(); virtual ~GameListSpectatorJoinedMessage(); - + GameListSpectatorJoinedMessage(const GameListSpectatorJoinedMessage& from); - + inline GameListSpectatorJoinedMessage& operator=(const GameListSpectatorJoinedMessage& from) { CopyFrom(from); return *this; } - + static const GameListSpectatorJoinedMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GameListSpectatorJoinedMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GameListSpectatorJoinedMessage* other); - + // implements Message ---------------------------------------------- - + GameListSpectatorJoinedMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GameListSpectatorJoinedMessage& from); void MergeFrom(const GameListSpectatorJoinedMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2511,44 +2805,48 @@ class GameListSpectatorJoinedMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:GameListSpectatorJoinedMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_playerid(); inline void clear_has_playerid(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GameListSpectatorJoinedMessage* default_instance_; }; @@ -2558,27 +2856,37 @@ class GameListSpectatorLeftMessage : public ::google::protobuf::MessageLite { public: GameListSpectatorLeftMessage(); virtual ~GameListSpectatorLeftMessage(); - + GameListSpectatorLeftMessage(const GameListSpectatorLeftMessage& from); - + inline GameListSpectatorLeftMessage& operator=(const GameListSpectatorLeftMessage& from) { CopyFrom(from); return *this; } - + static const GameListSpectatorLeftMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GameListSpectatorLeftMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GameListSpectatorLeftMessage* other); - + // implements Message ---------------------------------------------- - + GameListSpectatorLeftMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GameListSpectatorLeftMessage& from); void MergeFrom(const GameListSpectatorLeftMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2590,44 +2898,48 @@ class GameListSpectatorLeftMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:GameListSpectatorLeftMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_playerid(); inline void clear_has_playerid(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GameListSpectatorLeftMessage* default_instance_; }; @@ -2637,27 +2949,37 @@ class GameListAdminChangedMessage : public ::google::protobuf::MessageLite { public: GameListAdminChangedMessage(); virtual ~GameListAdminChangedMessage(); - + GameListAdminChangedMessage(const GameListAdminChangedMessage& from); - + inline GameListAdminChangedMessage& operator=(const GameListAdminChangedMessage& from) { CopyFrom(from); return *this; } - + static const GameListAdminChangedMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GameListAdminChangedMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GameListAdminChangedMessage* other); - + // implements Message ---------------------------------------------- - + GameListAdminChangedMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GameListAdminChangedMessage& from); void MergeFrom(const GameListAdminChangedMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2669,44 +2991,48 @@ class GameListAdminChangedMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 newAdminPlayerId = 2; inline bool has_newadminplayerid() const; inline void clear_newadminplayerid(); static const int kNewAdminPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 newadminplayerid() const; inline void set_newadminplayerid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:GameListAdminChangedMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_newadminplayerid(); inline void clear_has_newadminplayerid(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 newadminplayerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GameListAdminChangedMessage* default_instance_; }; @@ -2716,27 +3042,37 @@ class PlayerInfoRequestMessage : public ::google::protobuf::MessageLite { public: PlayerInfoRequestMessage(); virtual ~PlayerInfoRequestMessage(); - + PlayerInfoRequestMessage(const PlayerInfoRequestMessage& from); - + inline PlayerInfoRequestMessage& operator=(const PlayerInfoRequestMessage& from) { CopyFrom(from); return *this; } - + static const PlayerInfoRequestMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const PlayerInfoRequestMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(PlayerInfoRequestMessage* other); - + // implements Message ---------------------------------------------- - + PlayerInfoRequestMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const PlayerInfoRequestMessage& from); void MergeFrom(const PlayerInfoRequestMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2748,13 +3084,13 @@ class PlayerInfoRequestMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // repeated uint32 playerId = 1 [packed = true]; inline int playerid_size() const; inline void clear_playerid(); @@ -2766,20 +3102,24 @@ class PlayerInfoRequestMessage : public ::google::protobuf::MessageLite { playerid() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* mutable_playerid(); - + // @@protoc_insertion_point(class_scope:PlayerInfoRequestMessage) private: - + ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > playerid_; mutable int _playerid_cached_byte_size_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static PlayerInfoRequestMessage* default_instance_; }; @@ -2789,27 +3129,37 @@ class PlayerInfoReplyMessage_PlayerInfoData_AvatarData : public ::google::protob public: PlayerInfoReplyMessage_PlayerInfoData_AvatarData(); virtual ~PlayerInfoReplyMessage_PlayerInfoData_AvatarData(); - + PlayerInfoReplyMessage_PlayerInfoData_AvatarData(const PlayerInfoReplyMessage_PlayerInfoData_AvatarData& from); - + inline PlayerInfoReplyMessage_PlayerInfoData_AvatarData& operator=(const PlayerInfoReplyMessage_PlayerInfoData_AvatarData& from) { CopyFrom(from); return *this; } - + static const PlayerInfoReplyMessage_PlayerInfoData_AvatarData& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const PlayerInfoReplyMessage_PlayerInfoData_AvatarData* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(PlayerInfoReplyMessage_PlayerInfoData_AvatarData* other); - + // implements Message ---------------------------------------------- - + PlayerInfoReplyMessage_PlayerInfoData_AvatarData* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const PlayerInfoReplyMessage_PlayerInfoData_AvatarData& from); void MergeFrom(const PlayerInfoReplyMessage_PlayerInfoData_AvatarData& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2821,20 +3171,20 @@ class PlayerInfoReplyMessage_PlayerInfoData_AvatarData : public ::google::protob void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .NetAvatarType avatarType = 1; inline bool has_avatartype() const; inline void clear_avatartype(); static const int kAvatarTypeFieldNumber = 1; - inline NetAvatarType avatartype() const; - inline void set_avatartype(NetAvatarType value); - + inline ::NetAvatarType avatartype() const; + inline void set_avatartype(::NetAvatarType value); + // required bytes avatarHash = 2; inline bool has_avatarhash() const; inline void clear_avatarhash(); @@ -2845,24 +3195,29 @@ class PlayerInfoReplyMessage_PlayerInfoData_AvatarData : public ::google::protob inline void set_avatarhash(const void* value, size_t size); inline ::std::string* mutable_avatarhash(); inline ::std::string* release_avatarhash(); - + inline void set_allocated_avatarhash(::std::string* avatarhash); + // @@protoc_insertion_point(class_scope:PlayerInfoReplyMessage.PlayerInfoData.AvatarData) private: inline void set_has_avatartype(); inline void clear_has_avatartype(); inline void set_has_avatarhash(); inline void clear_has_avatarhash(); - + ::std::string* avatarhash_; int avatartype_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static PlayerInfoReplyMessage_PlayerInfoData_AvatarData* default_instance_; }; @@ -2872,27 +3227,37 @@ class PlayerInfoReplyMessage_PlayerInfoData : public ::google::protobuf::Message public: PlayerInfoReplyMessage_PlayerInfoData(); virtual ~PlayerInfoReplyMessage_PlayerInfoData(); - + PlayerInfoReplyMessage_PlayerInfoData(const PlayerInfoReplyMessage_PlayerInfoData& from); - + inline PlayerInfoReplyMessage_PlayerInfoData& operator=(const PlayerInfoReplyMessage_PlayerInfoData& from) { CopyFrom(from); return *this; } - + static const PlayerInfoReplyMessage_PlayerInfoData& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const PlayerInfoReplyMessage_PlayerInfoData* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(PlayerInfoReplyMessage_PlayerInfoData* other); - + // implements Message ---------------------------------------------- - + PlayerInfoReplyMessage_PlayerInfoData* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const PlayerInfoReplyMessage_PlayerInfoData& from); void MergeFrom(const PlayerInfoReplyMessage_PlayerInfoData& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -2904,15 +3269,15 @@ class PlayerInfoReplyMessage_PlayerInfoData : public ::google::protobuf::Message void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef PlayerInfoReplyMessage_PlayerInfoData_AvatarData AvatarData; - + // accessors ------------------------------------------------------- - + // required string playerName = 1; inline bool has_playername() const; inline void clear_playername(); @@ -2923,21 +3288,22 @@ class PlayerInfoReplyMessage_PlayerInfoData : public ::google::protobuf::Message inline void set_playername(const char* value, size_t size); inline ::std::string* mutable_playername(); inline ::std::string* release_playername(); - + inline void set_allocated_playername(::std::string* playername); + // required bool isHuman = 2; inline bool has_ishuman() const; inline void clear_ishuman(); static const int kIsHumanFieldNumber = 2; inline bool ishuman() const; inline void set_ishuman(bool value); - + // required .NetPlayerInfoRights playerRights = 3; inline bool has_playerrights() const; inline void clear_playerrights(); static const int kPlayerRightsFieldNumber = 3; - inline NetPlayerInfoRights playerrights() const; - inline void set_playerrights(NetPlayerInfoRights value); - + inline ::NetPlayerInfoRights playerrights() const; + inline void set_playerrights(::NetPlayerInfoRights value); + // optional string countryCode = 4; inline bool has_countrycode() const; inline void clear_countrycode(); @@ -2948,7 +3314,8 @@ class PlayerInfoReplyMessage_PlayerInfoData : public ::google::protobuf::Message inline void set_countrycode(const char* value, size_t size); inline ::std::string* mutable_countrycode(); inline ::std::string* release_countrycode(); - + inline void set_allocated_countrycode(::std::string* countrycode); + // optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; inline bool has_avatardata() const; inline void clear_avatardata(); @@ -2956,7 +3323,8 @@ class PlayerInfoReplyMessage_PlayerInfoData : public ::google::protobuf::Message inline const ::PlayerInfoReplyMessage_PlayerInfoData_AvatarData& avatardata() const; inline ::PlayerInfoReplyMessage_PlayerInfoData_AvatarData* mutable_avatardata(); inline ::PlayerInfoReplyMessage_PlayerInfoData_AvatarData* release_avatardata(); - + inline void set_allocated_avatardata(::PlayerInfoReplyMessage_PlayerInfoData_AvatarData* avatardata); + // @@protoc_insertion_point(class_scope:PlayerInfoReplyMessage.PlayerInfoData) private: inline void set_has_playername(); @@ -2969,20 +3337,24 @@ class PlayerInfoReplyMessage_PlayerInfoData : public ::google::protobuf::Message inline void clear_has_countrycode(); inline void set_has_avatardata(); inline void clear_has_avatardata(); - + ::std::string* playername_; bool ishuman_; int playerrights_; ::std::string* countrycode_; ::PlayerInfoReplyMessage_PlayerInfoData_AvatarData* avatardata_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static PlayerInfoReplyMessage_PlayerInfoData* default_instance_; }; @@ -2992,27 +3364,37 @@ class PlayerInfoReplyMessage : public ::google::protobuf::MessageLite { public: PlayerInfoReplyMessage(); virtual ~PlayerInfoReplyMessage(); - + PlayerInfoReplyMessage(const PlayerInfoReplyMessage& from); - + inline PlayerInfoReplyMessage& operator=(const PlayerInfoReplyMessage& from) { CopyFrom(from); return *this; } - + static const PlayerInfoReplyMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const PlayerInfoReplyMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(PlayerInfoReplyMessage* other); - + // implements Message ---------------------------------------------- - + PlayerInfoReplyMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const PlayerInfoReplyMessage& from); void MergeFrom(const PlayerInfoReplyMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3024,22 +3406,22 @@ class PlayerInfoReplyMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef PlayerInfoReplyMessage_PlayerInfoData PlayerInfoData; - + // accessors ------------------------------------------------------- - + // required uint32 playerId = 1; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 1; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; inline bool has_playerinfodata() const; inline void clear_playerinfodata(); @@ -3047,24 +3429,29 @@ class PlayerInfoReplyMessage : public ::google::protobuf::MessageLite { inline const ::PlayerInfoReplyMessage_PlayerInfoData& playerinfodata() const; inline ::PlayerInfoReplyMessage_PlayerInfoData* mutable_playerinfodata(); inline ::PlayerInfoReplyMessage_PlayerInfoData* release_playerinfodata(); - + inline void set_allocated_playerinfodata(::PlayerInfoReplyMessage_PlayerInfoData* playerinfodata); + // @@protoc_insertion_point(class_scope:PlayerInfoReplyMessage) private: inline void set_has_playerid(); inline void clear_has_playerid(); inline void set_has_playerinfodata(); inline void clear_has_playerinfodata(); - + ::PlayerInfoReplyMessage_PlayerInfoData* playerinfodata_; ::google::protobuf::uint32 playerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static PlayerInfoReplyMessage* default_instance_; }; @@ -3074,27 +3461,37 @@ class SubscriptionRequestMessage : public ::google::protobuf::MessageLite { public: SubscriptionRequestMessage(); virtual ~SubscriptionRequestMessage(); - + SubscriptionRequestMessage(const SubscriptionRequestMessage& from); - + inline SubscriptionRequestMessage& operator=(const SubscriptionRequestMessage& from) { CopyFrom(from); return *this; } - + static const SubscriptionRequestMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const SubscriptionRequestMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(SubscriptionRequestMessage* other); - + // implements Message ---------------------------------------------- - + SubscriptionRequestMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const SubscriptionRequestMessage& from); void MergeFrom(const SubscriptionRequestMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3106,11 +3503,11 @@ class SubscriptionRequestMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef SubscriptionRequestMessage_SubscriptionAction SubscriptionAction; static const SubscriptionAction unsubscribeGameList = SubscriptionRequestMessage_SubscriptionAction_unsubscribeGameList; static const SubscriptionAction resubscribeGameList = SubscriptionRequestMessage_SubscriptionAction_resubscribeGameList; @@ -3123,30 +3520,34 @@ class SubscriptionRequestMessage : public ::google::protobuf::MessageLite { SubscriptionRequestMessage_SubscriptionAction_SubscriptionAction_MAX; static const int SubscriptionAction_ARRAYSIZE = SubscriptionRequestMessage_SubscriptionAction_SubscriptionAction_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; inline bool has_subscriptionaction() const; inline void clear_subscriptionaction(); static const int kSubscriptionActionFieldNumber = 1; inline ::SubscriptionRequestMessage_SubscriptionAction subscriptionaction() const; inline void set_subscriptionaction(::SubscriptionRequestMessage_SubscriptionAction value); - + // @@protoc_insertion_point(class_scope:SubscriptionRequestMessage) private: inline void set_has_subscriptionaction(); inline void clear_has_subscriptionaction(); - + int subscriptionaction_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static SubscriptionRequestMessage* default_instance_; }; @@ -3156,27 +3557,37 @@ class JoinExistingGameMessage : public ::google::protobuf::MessageLite { public: JoinExistingGameMessage(); virtual ~JoinExistingGameMessage(); - + JoinExistingGameMessage(const JoinExistingGameMessage& from); - + inline JoinExistingGameMessage& operator=(const JoinExistingGameMessage& from) { CopyFrom(from); return *this; } - + static const JoinExistingGameMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const JoinExistingGameMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(JoinExistingGameMessage* other); - + // implements Message ---------------------------------------------- - + JoinExistingGameMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const JoinExistingGameMessage& from); void MergeFrom(const JoinExistingGameMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3188,20 +3599,20 @@ class JoinExistingGameMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // optional string password = 2; inline bool has_password() const; inline void clear_password(); @@ -3212,21 +3623,22 @@ class JoinExistingGameMessage : public ::google::protobuf::MessageLite { inline void set_password(const char* value, size_t size); inline ::std::string* mutable_password(); inline ::std::string* release_password(); - + inline void set_allocated_password(::std::string* password); + // optional bool autoLeave = 3; inline bool has_autoleave() const; inline void clear_autoleave(); static const int kAutoLeaveFieldNumber = 3; inline bool autoleave() const; inline void set_autoleave(bool value); - + // optional bool spectateOnly = 4; inline bool has_spectateonly() const; inline void clear_spectateonly(); static const int kSpectateOnlyFieldNumber = 4; inline bool spectateonly() const; inline void set_spectateonly(bool value); - + // @@protoc_insertion_point(class_scope:JoinExistingGameMessage) private: inline void set_has_gameid(); @@ -3237,19 +3649,23 @@ class JoinExistingGameMessage : public ::google::protobuf::MessageLite { inline void clear_has_autoleave(); inline void set_has_spectateonly(); inline void clear_has_spectateonly(); - + ::std::string* password_; ::google::protobuf::uint32 gameid_; bool autoleave_; bool spectateonly_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static JoinExistingGameMessage* default_instance_; }; @@ -3259,27 +3675,37 @@ class JoinNewGameMessage : public ::google::protobuf::MessageLite { public: JoinNewGameMessage(); virtual ~JoinNewGameMessage(); - + JoinNewGameMessage(const JoinNewGameMessage& from); - + inline JoinNewGameMessage& operator=(const JoinNewGameMessage& from) { CopyFrom(from); return *this; } - + static const JoinNewGameMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const JoinNewGameMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(JoinNewGameMessage* other); - + // implements Message ---------------------------------------------- - + JoinNewGameMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const JoinNewGameMessage& from); void MergeFrom(const JoinNewGameMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3291,13 +3717,13 @@ class JoinNewGameMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .NetGameInfo gameInfo = 1; inline bool has_gameinfo() const; inline void clear_gameinfo(); @@ -3305,7 +3731,8 @@ class JoinNewGameMessage : public ::google::protobuf::MessageLite { inline const ::NetGameInfo& gameinfo() const; inline ::NetGameInfo* mutable_gameinfo(); inline ::NetGameInfo* release_gameinfo(); - + inline void set_allocated_gameinfo(::NetGameInfo* gameinfo); + // optional string password = 2; inline bool has_password() const; inline void clear_password(); @@ -3316,14 +3743,15 @@ class JoinNewGameMessage : public ::google::protobuf::MessageLite { inline void set_password(const char* value, size_t size); inline ::std::string* mutable_password(); inline ::std::string* release_password(); - + inline void set_allocated_password(::std::string* password); + // optional bool autoLeave = 3; inline bool has_autoleave() const; inline void clear_autoleave(); static const int kAutoLeaveFieldNumber = 3; inline bool autoleave() const; inline void set_autoleave(bool value); - + // @@protoc_insertion_point(class_scope:JoinNewGameMessage) private: inline void set_has_gameinfo(); @@ -3332,18 +3760,22 @@ class JoinNewGameMessage : public ::google::protobuf::MessageLite { inline void clear_has_password(); inline void set_has_autoleave(); inline void clear_has_autoleave(); - + ::NetGameInfo* gameinfo_; ::std::string* password_; bool autoleave_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static JoinNewGameMessage* default_instance_; }; @@ -3353,27 +3785,37 @@ class RejoinExistingGameMessage : public ::google::protobuf::MessageLite { public: RejoinExistingGameMessage(); virtual ~RejoinExistingGameMessage(); - + RejoinExistingGameMessage(const RejoinExistingGameMessage& from); - + inline RejoinExistingGameMessage& operator=(const RejoinExistingGameMessage& from) { CopyFrom(from); return *this; } - + static const RejoinExistingGameMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const RejoinExistingGameMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(RejoinExistingGameMessage* other); - + // implements Message ---------------------------------------------- - + RejoinExistingGameMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const RejoinExistingGameMessage& from); void MergeFrom(const RejoinExistingGameMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3385,44 +3827,48 @@ class RejoinExistingGameMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // optional bool autoLeave = 2; inline bool has_autoleave() const; inline void clear_autoleave(); static const int kAutoLeaveFieldNumber = 2; inline bool autoleave() const; inline void set_autoleave(bool value); - + // @@protoc_insertion_point(class_scope:RejoinExistingGameMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_autoleave(); inline void clear_has_autoleave(); - + ::google::protobuf::uint32 gameid_; bool autoleave_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static RejoinExistingGameMessage* default_instance_; }; @@ -3432,27 +3878,37 @@ class JoinGameAckMessage : public ::google::protobuf::MessageLite { public: JoinGameAckMessage(); virtual ~JoinGameAckMessage(); - + JoinGameAckMessage(const JoinGameAckMessage& from); - + inline JoinGameAckMessage& operator=(const JoinGameAckMessage& from) { CopyFrom(from); return *this; } - + static const JoinGameAckMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const JoinGameAckMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(JoinGameAckMessage* other); - + // implements Message ---------------------------------------------- - + JoinGameAckMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const JoinGameAckMessage& from); void MergeFrom(const JoinGameAckMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3464,27 +3920,27 @@ class JoinGameAckMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required bool areYouGameAdmin = 2; inline bool has_areyougameadmin() const; inline void clear_areyougameadmin(); static const int kAreYouGameAdminFieldNumber = 2; inline bool areyougameadmin() const; inline void set_areyougameadmin(bool value); - + // required .NetGameInfo gameInfo = 3; inline bool has_gameinfo() const; inline void clear_gameinfo(); @@ -3492,7 +3948,8 @@ class JoinGameAckMessage : public ::google::protobuf::MessageLite { inline const ::NetGameInfo& gameinfo() const; inline ::NetGameInfo* mutable_gameinfo(); inline ::NetGameInfo* release_gameinfo(); - + inline void set_allocated_gameinfo(::NetGameInfo* gameinfo); + // @@protoc_insertion_point(class_scope:JoinGameAckMessage) private: inline void set_has_gameid(); @@ -3501,18 +3958,22 @@ class JoinGameAckMessage : public ::google::protobuf::MessageLite { inline void clear_has_areyougameadmin(); inline void set_has_gameinfo(); inline void clear_has_gameinfo(); - + ::google::protobuf::uint32 gameid_; bool areyougameadmin_; ::NetGameInfo* gameinfo_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static JoinGameAckMessage* default_instance_; }; @@ -3522,27 +3983,37 @@ class JoinGameFailedMessage : public ::google::protobuf::MessageLite { public: JoinGameFailedMessage(); virtual ~JoinGameFailedMessage(); - + JoinGameFailedMessage(const JoinGameFailedMessage& from); - + inline JoinGameFailedMessage& operator=(const JoinGameFailedMessage& from) { CopyFrom(from); return *this; } - + static const JoinGameFailedMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const JoinGameFailedMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(JoinGameFailedMessage* other); - + // implements Message ---------------------------------------------- - + JoinGameFailedMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const JoinGameFailedMessage& from); void MergeFrom(const JoinGameFailedMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3554,11 +4025,11 @@ class JoinGameFailedMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef JoinGameFailedMessage_JoinGameFailureReason JoinGameFailureReason; static const JoinGameFailureReason invalidGame = JoinGameFailedMessage_JoinGameFailureReason_invalidGame; static const JoinGameFailureReason gameIsFull = JoinGameFailedMessage_JoinGameFailureReason_gameIsFull; @@ -3580,40 +4051,44 @@ class JoinGameFailedMessage : public ::google::protobuf::MessageLite { JoinGameFailedMessage_JoinGameFailureReason_JoinGameFailureReason_MAX; static const int JoinGameFailureReason_ARRAYSIZE = JoinGameFailedMessage_JoinGameFailureReason_JoinGameFailureReason_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; inline bool has_joingamefailurereason() const; inline void clear_joingamefailurereason(); static const int kJoinGameFailureReasonFieldNumber = 2; inline ::JoinGameFailedMessage_JoinGameFailureReason joingamefailurereason() const; inline void set_joingamefailurereason(::JoinGameFailedMessage_JoinGameFailureReason value); - + // @@protoc_insertion_point(class_scope:JoinGameFailedMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_joingamefailurereason(); inline void clear_has_joingamefailurereason(); - + ::google::protobuf::uint32 gameid_; int joingamefailurereason_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static JoinGameFailedMessage* default_instance_; }; @@ -3623,27 +4098,37 @@ class GamePlayerJoinedMessage : public ::google::protobuf::MessageLite { public: GamePlayerJoinedMessage(); virtual ~GamePlayerJoinedMessage(); - + GamePlayerJoinedMessage(const GamePlayerJoinedMessage& from); - + inline GamePlayerJoinedMessage& operator=(const GamePlayerJoinedMessage& from) { CopyFrom(from); return *this; } - + static const GamePlayerJoinedMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GamePlayerJoinedMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GamePlayerJoinedMessage* other); - + // implements Message ---------------------------------------------- - + GamePlayerJoinedMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GamePlayerJoinedMessage& from); void MergeFrom(const GamePlayerJoinedMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3655,34 +4140,34 @@ class GamePlayerJoinedMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // required bool isGameAdmin = 3; inline bool has_isgameadmin() const; inline void clear_isgameadmin(); static const int kIsGameAdminFieldNumber = 3; inline bool isgameadmin() const; inline void set_isgameadmin(bool value); - + // @@protoc_insertion_point(class_scope:GamePlayerJoinedMessage) private: inline void set_has_gameid(); @@ -3691,18 +4176,22 @@ class GamePlayerJoinedMessage : public ::google::protobuf::MessageLite { inline void clear_has_playerid(); inline void set_has_isgameadmin(); inline void clear_has_isgameadmin(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; bool isgameadmin_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GamePlayerJoinedMessage* default_instance_; }; @@ -3712,27 +4201,37 @@ class GamePlayerLeftMessage : public ::google::protobuf::MessageLite { public: GamePlayerLeftMessage(); virtual ~GamePlayerLeftMessage(); - + GamePlayerLeftMessage(const GamePlayerLeftMessage& from); - + inline GamePlayerLeftMessage& operator=(const GamePlayerLeftMessage& from) { CopyFrom(from); return *this; } - + static const GamePlayerLeftMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GamePlayerLeftMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GamePlayerLeftMessage* other); - + // implements Message ---------------------------------------------- - + GamePlayerLeftMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GamePlayerLeftMessage& from); void MergeFrom(const GamePlayerLeftMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3744,11 +4243,11 @@ class GamePlayerLeftMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef GamePlayerLeftMessage_GamePlayerLeftReason GamePlayerLeftReason; static const GamePlayerLeftReason leftOnRequest = GamePlayerLeftMessage_GamePlayerLeftReason_leftOnRequest; static const GamePlayerLeftReason leftKicked = GamePlayerLeftMessage_GamePlayerLeftReason_leftKicked; @@ -3762,30 +4261,30 @@ class GamePlayerLeftMessage : public ::google::protobuf::MessageLite { GamePlayerLeftMessage_GamePlayerLeftReason_GamePlayerLeftReason_MAX; static const int GamePlayerLeftReason_ARRAYSIZE = GamePlayerLeftMessage_GamePlayerLeftReason_GamePlayerLeftReason_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; inline bool has_gameplayerleftreason() const; inline void clear_gameplayerleftreason(); static const int kGamePlayerLeftReasonFieldNumber = 3; inline ::GamePlayerLeftMessage_GamePlayerLeftReason gameplayerleftreason() const; inline void set_gameplayerleftreason(::GamePlayerLeftMessage_GamePlayerLeftReason value); - + // @@protoc_insertion_point(class_scope:GamePlayerLeftMessage) private: inline void set_has_gameid(); @@ -3794,18 +4293,22 @@ class GamePlayerLeftMessage : public ::google::protobuf::MessageLite { inline void clear_has_playerid(); inline void set_has_gameplayerleftreason(); inline void clear_has_gameplayerleftreason(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; int gameplayerleftreason_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GamePlayerLeftMessage* default_instance_; }; @@ -3815,27 +4318,37 @@ class GameSpectatorJoinedMessage : public ::google::protobuf::MessageLite { public: GameSpectatorJoinedMessage(); virtual ~GameSpectatorJoinedMessage(); - + GameSpectatorJoinedMessage(const GameSpectatorJoinedMessage& from); - + inline GameSpectatorJoinedMessage& operator=(const GameSpectatorJoinedMessage& from) { CopyFrom(from); return *this; } - + static const GameSpectatorJoinedMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GameSpectatorJoinedMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GameSpectatorJoinedMessage* other); - + // implements Message ---------------------------------------------- - + GameSpectatorJoinedMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GameSpectatorJoinedMessage& from); void MergeFrom(const GameSpectatorJoinedMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3847,44 +4360,48 @@ class GameSpectatorJoinedMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:GameSpectatorJoinedMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_playerid(); inline void clear_has_playerid(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GameSpectatorJoinedMessage* default_instance_; }; @@ -3894,27 +4411,37 @@ class GameSpectatorLeftMessage : public ::google::protobuf::MessageLite { public: GameSpectatorLeftMessage(); virtual ~GameSpectatorLeftMessage(); - + GameSpectatorLeftMessage(const GameSpectatorLeftMessage& from); - + inline GameSpectatorLeftMessage& operator=(const GameSpectatorLeftMessage& from) { CopyFrom(from); return *this; } - + static const GameSpectatorLeftMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GameSpectatorLeftMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GameSpectatorLeftMessage* other); - + // implements Message ---------------------------------------------- - + GameSpectatorLeftMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GameSpectatorLeftMessage& from); void MergeFrom(const GameSpectatorLeftMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -3926,34 +4453,34 @@ class GameSpectatorLeftMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; inline bool has_gamespectatorleftreason() const; inline void clear_gamespectatorleftreason(); static const int kGameSpectatorLeftReasonFieldNumber = 3; inline ::GamePlayerLeftMessage_GamePlayerLeftReason gamespectatorleftreason() const; inline void set_gamespectatorleftreason(::GamePlayerLeftMessage_GamePlayerLeftReason value); - + // @@protoc_insertion_point(class_scope:GameSpectatorLeftMessage) private: inline void set_has_gameid(); @@ -3962,18 +4489,22 @@ class GameSpectatorLeftMessage : public ::google::protobuf::MessageLite { inline void clear_has_playerid(); inline void set_has_gamespectatorleftreason(); inline void clear_has_gamespectatorleftreason(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; int gamespectatorleftreason_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GameSpectatorLeftMessage* default_instance_; }; @@ -3983,27 +4514,37 @@ class GameAdminChangedMessage : public ::google::protobuf::MessageLite { public: GameAdminChangedMessage(); virtual ~GameAdminChangedMessage(); - + GameAdminChangedMessage(const GameAdminChangedMessage& from); - + inline GameAdminChangedMessage& operator=(const GameAdminChangedMessage& from) { CopyFrom(from); return *this; } - + static const GameAdminChangedMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GameAdminChangedMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GameAdminChangedMessage* other); - + // implements Message ---------------------------------------------- - + GameAdminChangedMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GameAdminChangedMessage& from); void MergeFrom(const GameAdminChangedMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4015,44 +4556,48 @@ class GameAdminChangedMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 newAdminPlayerId = 2; inline bool has_newadminplayerid() const; inline void clear_newadminplayerid(); static const int kNewAdminPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 newadminplayerid() const; inline void set_newadminplayerid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:GameAdminChangedMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_newadminplayerid(); inline void clear_has_newadminplayerid(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 newadminplayerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GameAdminChangedMessage* default_instance_; }; @@ -4062,27 +4607,37 @@ class RemovedFromGameMessage : public ::google::protobuf::MessageLite { public: RemovedFromGameMessage(); virtual ~RemovedFromGameMessage(); - + RemovedFromGameMessage(const RemovedFromGameMessage& from); - + inline RemovedFromGameMessage& operator=(const RemovedFromGameMessage& from) { CopyFrom(from); return *this; } - + static const RemovedFromGameMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const RemovedFromGameMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(RemovedFromGameMessage* other); - + // implements Message ---------------------------------------------- - + RemovedFromGameMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const RemovedFromGameMessage& from); void MergeFrom(const RemovedFromGameMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4094,11 +4649,11 @@ class RemovedFromGameMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameReason; static const RemovedFromGameReason removedOnRequest = RemovedFromGameMessage_RemovedFromGameReason_removedOnRequest; static const RemovedFromGameReason kickedFromGame = RemovedFromGameMessage_RemovedFromGameReason_kickedFromGame; @@ -4115,40 +4670,44 @@ class RemovedFromGameMessage : public ::google::protobuf::MessageLite { RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_MAX; static const int RemovedFromGameReason_ARRAYSIZE = RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; inline bool has_removedfromgamereason() const; inline void clear_removedfromgamereason(); static const int kRemovedFromGameReasonFieldNumber = 2; inline ::RemovedFromGameMessage_RemovedFromGameReason removedfromgamereason() const; inline void set_removedfromgamereason(::RemovedFromGameMessage_RemovedFromGameReason value); - + // @@protoc_insertion_point(class_scope:RemovedFromGameMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_removedfromgamereason(); inline void clear_has_removedfromgamereason(); - + ::google::protobuf::uint32 gameid_; int removedfromgamereason_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static RemovedFromGameMessage* default_instance_; }; @@ -4158,27 +4717,37 @@ class KickPlayerRequestMessage : public ::google::protobuf::MessageLite { public: KickPlayerRequestMessage(); virtual ~KickPlayerRequestMessage(); - + KickPlayerRequestMessage(const KickPlayerRequestMessage& from); - + inline KickPlayerRequestMessage& operator=(const KickPlayerRequestMessage& from) { CopyFrom(from); return *this; } - + static const KickPlayerRequestMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const KickPlayerRequestMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(KickPlayerRequestMessage* other); - + // implements Message ---------------------------------------------- - + KickPlayerRequestMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const KickPlayerRequestMessage& from); void MergeFrom(const KickPlayerRequestMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4190,44 +4759,48 @@ class KickPlayerRequestMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:KickPlayerRequestMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_playerid(); inline void clear_has_playerid(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static KickPlayerRequestMessage* default_instance_; }; @@ -4237,27 +4810,37 @@ class LeaveGameRequestMessage : public ::google::protobuf::MessageLite { public: LeaveGameRequestMessage(); virtual ~LeaveGameRequestMessage(); - + LeaveGameRequestMessage(const LeaveGameRequestMessage& from); - + inline LeaveGameRequestMessage& operator=(const LeaveGameRequestMessage& from) { CopyFrom(from); return *this; } - + static const LeaveGameRequestMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const LeaveGameRequestMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(LeaveGameRequestMessage* other); - + // implements Message ---------------------------------------------- - + LeaveGameRequestMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const LeaveGameRequestMessage& from); void MergeFrom(const LeaveGameRequestMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4269,34 +4852,38 @@ class LeaveGameRequestMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:LeaveGameRequestMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); - + ::google::protobuf::uint32 gameid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static LeaveGameRequestMessage* default_instance_; }; @@ -4306,27 +4893,37 @@ class InvitePlayerToGameMessage : public ::google::protobuf::MessageLite { public: InvitePlayerToGameMessage(); virtual ~InvitePlayerToGameMessage(); - + InvitePlayerToGameMessage(const InvitePlayerToGameMessage& from); - + inline InvitePlayerToGameMessage& operator=(const InvitePlayerToGameMessage& from) { CopyFrom(from); return *this; } - + static const InvitePlayerToGameMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const InvitePlayerToGameMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(InvitePlayerToGameMessage* other); - + // implements Message ---------------------------------------------- - + InvitePlayerToGameMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const InvitePlayerToGameMessage& from); void MergeFrom(const InvitePlayerToGameMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4338,44 +4935,48 @@ class InvitePlayerToGameMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:InvitePlayerToGameMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_playerid(); inline void clear_has_playerid(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static InvitePlayerToGameMessage* default_instance_; }; @@ -4385,27 +4986,37 @@ class InviteNotifyMessage : public ::google::protobuf::MessageLite { public: InviteNotifyMessage(); virtual ~InviteNotifyMessage(); - + InviteNotifyMessage(const InviteNotifyMessage& from); - + inline InviteNotifyMessage& operator=(const InviteNotifyMessage& from) { CopyFrom(from); return *this; } - + static const InviteNotifyMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const InviteNotifyMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(InviteNotifyMessage* other); - + // implements Message ---------------------------------------------- - + InviteNotifyMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const InviteNotifyMessage& from); void MergeFrom(const InviteNotifyMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4417,34 +5028,34 @@ class InviteNotifyMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerIdWho = 2; inline bool has_playeridwho() const; inline void clear_playeridwho(); static const int kPlayerIdWhoFieldNumber = 2; inline ::google::protobuf::uint32 playeridwho() const; inline void set_playeridwho(::google::protobuf::uint32 value); - + // required uint32 playerIdByWhom = 3; inline bool has_playeridbywhom() const; inline void clear_playeridbywhom(); static const int kPlayerIdByWhomFieldNumber = 3; inline ::google::protobuf::uint32 playeridbywhom() const; inline void set_playeridbywhom(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:InviteNotifyMessage) private: inline void set_has_gameid(); @@ -4453,18 +5064,22 @@ class InviteNotifyMessage : public ::google::protobuf::MessageLite { inline void clear_has_playeridwho(); inline void set_has_playeridbywhom(); inline void clear_has_playeridbywhom(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playeridwho_; ::google::protobuf::uint32 playeridbywhom_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static InviteNotifyMessage* default_instance_; }; @@ -4474,27 +5089,37 @@ class RejectGameInvitationMessage : public ::google::protobuf::MessageLite { public: RejectGameInvitationMessage(); virtual ~RejectGameInvitationMessage(); - + RejectGameInvitationMessage(const RejectGameInvitationMessage& from); - + inline RejectGameInvitationMessage& operator=(const RejectGameInvitationMessage& from) { CopyFrom(from); return *this; } - + static const RejectGameInvitationMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const RejectGameInvitationMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(RejectGameInvitationMessage* other); - + // implements Message ---------------------------------------------- - + RejectGameInvitationMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const RejectGameInvitationMessage& from); void MergeFrom(const RejectGameInvitationMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4506,11 +5131,11 @@ class RejectGameInvitationMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef RejectGameInvitationMessage_RejectGameInvReason RejectGameInvReason; static const RejectGameInvReason rejectReasonNo = RejectGameInvitationMessage_RejectGameInvReason_rejectReasonNo; static const RejectGameInvReason rejectReasonBusy = RejectGameInvitationMessage_RejectGameInvReason_rejectReasonBusy; @@ -4523,40 +5148,44 @@ class RejectGameInvitationMessage : public ::google::protobuf::MessageLite { RejectGameInvitationMessage_RejectGameInvReason_RejectGameInvReason_MAX; static const int RejectGameInvReason_ARRAYSIZE = RejectGameInvitationMessage_RejectGameInvReason_RejectGameInvReason_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; inline bool has_myrejectreason() const; inline void clear_myrejectreason(); static const int kMyRejectReasonFieldNumber = 2; inline ::RejectGameInvitationMessage_RejectGameInvReason myrejectreason() const; inline void set_myrejectreason(::RejectGameInvitationMessage_RejectGameInvReason value); - + // @@protoc_insertion_point(class_scope:RejectGameInvitationMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_myrejectreason(); inline void clear_has_myrejectreason(); - + ::google::protobuf::uint32 gameid_; int myrejectreason_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static RejectGameInvitationMessage* default_instance_; }; @@ -4566,27 +5195,37 @@ class RejectInvNotifyMessage : public ::google::protobuf::MessageLite { public: RejectInvNotifyMessage(); virtual ~RejectInvNotifyMessage(); - + RejectInvNotifyMessage(const RejectInvNotifyMessage& from); - + inline RejectInvNotifyMessage& operator=(const RejectInvNotifyMessage& from) { CopyFrom(from); return *this; } - + static const RejectInvNotifyMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const RejectInvNotifyMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(RejectInvNotifyMessage* other); - + // implements Message ---------------------------------------------- - + RejectInvNotifyMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const RejectInvNotifyMessage& from); void MergeFrom(const RejectInvNotifyMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4598,34 +5237,34 @@ class RejectInvNotifyMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; inline bool has_playerrejectreason() const; inline void clear_playerrejectreason(); static const int kPlayerRejectReasonFieldNumber = 3; inline ::RejectGameInvitationMessage_RejectGameInvReason playerrejectreason() const; inline void set_playerrejectreason(::RejectGameInvitationMessage_RejectGameInvReason value); - + // @@protoc_insertion_point(class_scope:RejectInvNotifyMessage) private: inline void set_has_gameid(); @@ -4634,18 +5273,22 @@ class RejectInvNotifyMessage : public ::google::protobuf::MessageLite { inline void clear_has_playerid(); inline void set_has_playerrejectreason(); inline void clear_has_playerrejectreason(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; int playerrejectreason_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static RejectInvNotifyMessage* default_instance_; }; @@ -4655,27 +5298,37 @@ class StartEventMessage : public ::google::protobuf::MessageLite { public: StartEventMessage(); virtual ~StartEventMessage(); - + StartEventMessage(const StartEventMessage& from); - + inline StartEventMessage& operator=(const StartEventMessage& from) { CopyFrom(from); return *this; } - + static const StartEventMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const StartEventMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(StartEventMessage* other); - + // implements Message ---------------------------------------------- - + StartEventMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const StartEventMessage& from); void MergeFrom(const StartEventMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4687,11 +5340,11 @@ class StartEventMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef StartEventMessage_StartEventType StartEventType; static const StartEventType startEvent = StartEventMessage_StartEventType_startEvent; static const StartEventType rejoinEvent = StartEventMessage_StartEventType_rejoinEvent; @@ -4704,30 +5357,30 @@ class StartEventMessage : public ::google::protobuf::MessageLite { StartEventMessage_StartEventType_StartEventType_MAX; static const int StartEventType_ARRAYSIZE = StartEventMessage_StartEventType_StartEventType_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required .StartEventMessage.StartEventType startEventType = 2; inline bool has_starteventtype() const; inline void clear_starteventtype(); static const int kStartEventTypeFieldNumber = 2; inline ::StartEventMessage_StartEventType starteventtype() const; inline void set_starteventtype(::StartEventMessage_StartEventType value); - + // optional bool fillWithComputerPlayers = 3; inline bool has_fillwithcomputerplayers() const; inline void clear_fillwithcomputerplayers(); static const int kFillWithComputerPlayersFieldNumber = 3; inline bool fillwithcomputerplayers() const; inline void set_fillwithcomputerplayers(bool value); - + // @@protoc_insertion_point(class_scope:StartEventMessage) private: inline void set_has_gameid(); @@ -4736,18 +5389,22 @@ class StartEventMessage : public ::google::protobuf::MessageLite { inline void clear_has_starteventtype(); inline void set_has_fillwithcomputerplayers(); inline void clear_has_fillwithcomputerplayers(); - + ::google::protobuf::uint32 gameid_; int starteventtype_; bool fillwithcomputerplayers_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static StartEventMessage* default_instance_; }; @@ -4757,27 +5414,37 @@ class StartEventAckMessage : public ::google::protobuf::MessageLite { public: StartEventAckMessage(); virtual ~StartEventAckMessage(); - + StartEventAckMessage(const StartEventAckMessage& from); - + inline StartEventAckMessage& operator=(const StartEventAckMessage& from) { CopyFrom(from); return *this; } - + static const StartEventAckMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const StartEventAckMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(StartEventAckMessage* other); - + // implements Message ---------------------------------------------- - + StartEventAckMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const StartEventAckMessage& from); void MergeFrom(const StartEventAckMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4789,34 +5456,38 @@ class StartEventAckMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:StartEventAckMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); - + ::google::protobuf::uint32 gameid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static StartEventAckMessage* default_instance_; }; @@ -4826,27 +5497,37 @@ class GameStartInitialMessage : public ::google::protobuf::MessageLite { public: GameStartInitialMessage(); virtual ~GameStartInitialMessage(); - + GameStartInitialMessage(const GameStartInitialMessage& from); - + inline GameStartInitialMessage& operator=(const GameStartInitialMessage& from) { CopyFrom(from); return *this; } - + static const GameStartInitialMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GameStartInitialMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GameStartInitialMessage* other); - + // implements Message ---------------------------------------------- - + GameStartInitialMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GameStartInitialMessage& from); void MergeFrom(const GameStartInitialMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4858,27 +5539,27 @@ class GameStartInitialMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 startDealerPlayerId = 2; inline bool has_startdealerplayerid() const; inline void clear_startdealerplayerid(); static const int kStartDealerPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 startdealerplayerid() const; inline void set_startdealerplayerid(::google::protobuf::uint32 value); - + // repeated uint32 playerSeats = 3 [packed = true]; inline int playerseats_size() const; inline void clear_playerseats(); @@ -4890,26 +5571,30 @@ class GameStartInitialMessage : public ::google::protobuf::MessageLite { playerseats() const; inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* mutable_playerseats(); - + // @@protoc_insertion_point(class_scope:GameStartInitialMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_startdealerplayerid(); inline void clear_has_startdealerplayerid(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 startdealerplayerid_; ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > playerseats_; mutable int _playerseats_cached_byte_size_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GameStartInitialMessage* default_instance_; }; @@ -4919,27 +5604,37 @@ class GameStartRejoinMessage_RejoinPlayerData : public ::google::protobuf::Messa public: GameStartRejoinMessage_RejoinPlayerData(); virtual ~GameStartRejoinMessage_RejoinPlayerData(); - + GameStartRejoinMessage_RejoinPlayerData(const GameStartRejoinMessage_RejoinPlayerData& from); - + inline GameStartRejoinMessage_RejoinPlayerData& operator=(const GameStartRejoinMessage_RejoinPlayerData& from) { CopyFrom(from); return *this; } - + static const GameStartRejoinMessage_RejoinPlayerData& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GameStartRejoinMessage_RejoinPlayerData* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GameStartRejoinMessage_RejoinPlayerData* other); - + // implements Message ---------------------------------------------- - + GameStartRejoinMessage_RejoinPlayerData* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GameStartRejoinMessage_RejoinPlayerData& from); void MergeFrom(const GameStartRejoinMessage_RejoinPlayerData& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -4951,44 +5646,48 @@ class GameStartRejoinMessage_RejoinPlayerData : public ::google::protobuf::Messa void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 playerId = 1; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 1; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // required uint32 playerMoney = 2; inline bool has_playermoney() const; inline void clear_playermoney(); static const int kPlayerMoneyFieldNumber = 2; inline ::google::protobuf::uint32 playermoney() const; inline void set_playermoney(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:GameStartRejoinMessage.RejoinPlayerData) private: inline void set_has_playerid(); inline void clear_has_playerid(); inline void set_has_playermoney(); inline void clear_has_playermoney(); - + ::google::protobuf::uint32 playerid_; ::google::protobuf::uint32 playermoney_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GameStartRejoinMessage_RejoinPlayerData* default_instance_; }; @@ -4998,27 +5697,37 @@ class GameStartRejoinMessage : public ::google::protobuf::MessageLite { public: GameStartRejoinMessage(); virtual ~GameStartRejoinMessage(); - + GameStartRejoinMessage(const GameStartRejoinMessage& from); - + inline GameStartRejoinMessage& operator=(const GameStartRejoinMessage& from) { CopyFrom(from); return *this; } - + static const GameStartRejoinMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const GameStartRejoinMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(GameStartRejoinMessage* other); - + // implements Message ---------------------------------------------- - + GameStartRejoinMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const GameStartRejoinMessage& from); void MergeFrom(const GameStartRejoinMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5030,36 +5739,36 @@ class GameStartRejoinMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef GameStartRejoinMessage_RejoinPlayerData RejoinPlayerData; - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 startDealerPlayerId = 2; inline bool has_startdealerplayerid() const; inline void clear_startdealerplayerid(); static const int kStartDealerPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 startdealerplayerid() const; inline void set_startdealerplayerid(::google::protobuf::uint32 value); - + // required uint32 handNum = 3; inline bool has_handnum() const; inline void clear_handnum(); static const int kHandNumFieldNumber = 3; inline ::google::protobuf::uint32 handnum() const; inline void set_handnum(::google::protobuf::uint32 value); - + // repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; inline int rejoinplayerdata_size() const; inline void clear_rejoinplayerdata(); @@ -5071,7 +5780,7 @@ class GameStartRejoinMessage : public ::google::protobuf::MessageLite { rejoinplayerdata() const; inline ::google::protobuf::RepeatedPtrField< ::GameStartRejoinMessage_RejoinPlayerData >* mutable_rejoinplayerdata(); - + // @@protoc_insertion_point(class_scope:GameStartRejoinMessage) private: inline void set_has_gameid(); @@ -5080,19 +5789,23 @@ class GameStartRejoinMessage : public ::google::protobuf::MessageLite { inline void clear_has_startdealerplayerid(); inline void set_has_handnum(); inline void clear_has_handnum(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 startdealerplayerid_; ::google::protobuf::RepeatedPtrField< ::GameStartRejoinMessage_RejoinPlayerData > rejoinplayerdata_; ::google::protobuf::uint32 handnum_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static GameStartRejoinMessage* default_instance_; }; @@ -5102,27 +5815,37 @@ class HandStartMessage_PlainCards : public ::google::protobuf::MessageLite { public: HandStartMessage_PlainCards(); virtual ~HandStartMessage_PlainCards(); - + HandStartMessage_PlainCards(const HandStartMessage_PlainCards& from); - + inline HandStartMessage_PlainCards& operator=(const HandStartMessage_PlainCards& from) { CopyFrom(from); return *this; } - + static const HandStartMessage_PlainCards& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const HandStartMessage_PlainCards* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(HandStartMessage_PlainCards* other); - + // implements Message ---------------------------------------------- - + HandStartMessage_PlainCards* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const HandStartMessage_PlainCards& from); void MergeFrom(const HandStartMessage_PlainCards& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5134,44 +5857,48 @@ class HandStartMessage_PlainCards : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 plainCard1 = 1; inline bool has_plaincard1() const; inline void clear_plaincard1(); static const int kPlainCard1FieldNumber = 1; inline ::google::protobuf::uint32 plaincard1() const; inline void set_plaincard1(::google::protobuf::uint32 value); - + // required uint32 plainCard2 = 2; inline bool has_plaincard2() const; inline void clear_plaincard2(); static const int kPlainCard2FieldNumber = 2; inline ::google::protobuf::uint32 plaincard2() const; inline void set_plaincard2(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:HandStartMessage.PlainCards) private: inline void set_has_plaincard1(); inline void clear_has_plaincard1(); inline void set_has_plaincard2(); inline void clear_has_plaincard2(); - + ::google::protobuf::uint32 plaincard1_; ::google::protobuf::uint32 plaincard2_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static HandStartMessage_PlainCards* default_instance_; }; @@ -5181,27 +5908,37 @@ class HandStartMessage : public ::google::protobuf::MessageLite { public: HandStartMessage(); virtual ~HandStartMessage(); - + HandStartMessage(const HandStartMessage& from); - + inline HandStartMessage& operator=(const HandStartMessage& from) { CopyFrom(from); return *this; } - + static const HandStartMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const HandStartMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(HandStartMessage* other); - + // implements Message ---------------------------------------------- - + HandStartMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const HandStartMessage& from); void MergeFrom(const HandStartMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5213,22 +5950,22 @@ class HandStartMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef HandStartMessage_PlainCards PlainCards; - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // optional .HandStartMessage.PlainCards plainCards = 2; inline bool has_plaincards() const; inline void clear_plaincards(); @@ -5236,7 +5973,8 @@ class HandStartMessage : public ::google::protobuf::MessageLite { inline const ::HandStartMessage_PlainCards& plaincards() const; inline ::HandStartMessage_PlainCards* mutable_plaincards(); inline ::HandStartMessage_PlainCards* release_plaincards(); - + inline void set_allocated_plaincards(::HandStartMessage_PlainCards* plaincards); + // optional bytes encryptedCards = 3; inline bool has_encryptedcards() const; inline void clear_encryptedcards(); @@ -5247,24 +5985,25 @@ class HandStartMessage : public ::google::protobuf::MessageLite { inline void set_encryptedcards(const void* value, size_t size); inline ::std::string* mutable_encryptedcards(); inline ::std::string* release_encryptedcards(); - + inline void set_allocated_encryptedcards(::std::string* encryptedcards); + // required uint32 smallBlind = 4; inline bool has_smallblind() const; inline void clear_smallblind(); static const int kSmallBlindFieldNumber = 4; inline ::google::protobuf::uint32 smallblind() const; inline void set_smallblind(::google::protobuf::uint32 value); - + // repeated .NetPlayerState seatStates = 5; inline int seatstates_size() const; inline void clear_seatstates(); static const int kSeatStatesFieldNumber = 5; - inline NetPlayerState seatstates(int index) const; - inline void set_seatstates(int index, NetPlayerState value); - inline void add_seatstates(NetPlayerState value); + inline ::NetPlayerState seatstates(int index) const; + inline void set_seatstates(int index, ::NetPlayerState value); + inline void add_seatstates(::NetPlayerState value); inline const ::google::protobuf::RepeatedField& seatstates() const; inline ::google::protobuf::RepeatedField* mutable_seatstates(); - + // @@protoc_insertion_point(class_scope:HandStartMessage) private: inline void set_has_gameid(); @@ -5275,20 +6014,24 @@ class HandStartMessage : public ::google::protobuf::MessageLite { inline void clear_has_encryptedcards(); inline void set_has_smallblind(); inline void clear_has_smallblind(); - + ::HandStartMessage_PlainCards* plaincards_; ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 smallblind_; ::std::string* encryptedcards_; ::google::protobuf::RepeatedField seatstates_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static HandStartMessage* default_instance_; }; @@ -5298,27 +6041,37 @@ class PlayersTurnMessage : public ::google::protobuf::MessageLite { public: PlayersTurnMessage(); virtual ~PlayersTurnMessage(); - + PlayersTurnMessage(const PlayersTurnMessage& from); - + inline PlayersTurnMessage& operator=(const PlayersTurnMessage& from) { CopyFrom(from); return *this; } - + static const PlayersTurnMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const PlayersTurnMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(PlayersTurnMessage* other); - + // implements Message ---------------------------------------------- - + PlayersTurnMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const PlayersTurnMessage& from); void MergeFrom(const PlayersTurnMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5330,34 +6083,34 @@ class PlayersTurnMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // required .NetGameState gameState = 3; inline bool has_gamestate() const; inline void clear_gamestate(); static const int kGameStateFieldNumber = 3; - inline NetGameState gamestate() const; - inline void set_gamestate(NetGameState value); - + inline ::NetGameState gamestate() const; + inline void set_gamestate(::NetGameState value); + // @@protoc_insertion_point(class_scope:PlayersTurnMessage) private: inline void set_has_gameid(); @@ -5366,18 +6119,22 @@ class PlayersTurnMessage : public ::google::protobuf::MessageLite { inline void clear_has_playerid(); inline void set_has_gamestate(); inline void clear_has_gamestate(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; int gamestate_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static PlayersTurnMessage* default_instance_; }; @@ -5387,27 +6144,37 @@ class MyActionRequestMessage : public ::google::protobuf::MessageLite { public: MyActionRequestMessage(); virtual ~MyActionRequestMessage(); - + MyActionRequestMessage(const MyActionRequestMessage& from); - + inline MyActionRequestMessage& operator=(const MyActionRequestMessage& from) { CopyFrom(from); return *this; } - + static const MyActionRequestMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const MyActionRequestMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(MyActionRequestMessage* other); - + // implements Message ---------------------------------------------- - + MyActionRequestMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const MyActionRequestMessage& from); void MergeFrom(const MyActionRequestMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5419,48 +6186,48 @@ class MyActionRequestMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 handNum = 2; inline bool has_handnum() const; inline void clear_handnum(); static const int kHandNumFieldNumber = 2; inline ::google::protobuf::uint32 handnum() const; inline void set_handnum(::google::protobuf::uint32 value); - + // required .NetGameState gameState = 3; inline bool has_gamestate() const; inline void clear_gamestate(); static const int kGameStateFieldNumber = 3; - inline NetGameState gamestate() const; - inline void set_gamestate(NetGameState value); - + inline ::NetGameState gamestate() const; + inline void set_gamestate(::NetGameState value); + // required .NetPlayerAction myAction = 4; inline bool has_myaction() const; inline void clear_myaction(); static const int kMyActionFieldNumber = 4; - inline NetPlayerAction myaction() const; - inline void set_myaction(NetPlayerAction value); - + inline ::NetPlayerAction myaction() const; + inline void set_myaction(::NetPlayerAction value); + // required uint32 myRelativeBet = 5; inline bool has_myrelativebet() const; inline void clear_myrelativebet(); static const int kMyRelativeBetFieldNumber = 5; inline ::google::protobuf::uint32 myrelativebet() const; inline void set_myrelativebet(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:MyActionRequestMessage) private: inline void set_has_gameid(); @@ -5473,20 +6240,24 @@ class MyActionRequestMessage : public ::google::protobuf::MessageLite { inline void clear_has_myaction(); inline void set_has_myrelativebet(); inline void clear_has_myrelativebet(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 handnum_; int gamestate_; int myaction_; ::google::protobuf::uint32 myrelativebet_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static MyActionRequestMessage* default_instance_; }; @@ -5496,27 +6267,37 @@ class YourActionRejectedMessage : public ::google::protobuf::MessageLite { public: YourActionRejectedMessage(); virtual ~YourActionRejectedMessage(); - + YourActionRejectedMessage(const YourActionRejectedMessage& from); - + inline YourActionRejectedMessage& operator=(const YourActionRejectedMessage& from) { CopyFrom(from); return *this; } - + static const YourActionRejectedMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const YourActionRejectedMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(YourActionRejectedMessage* other); - + // implements Message ---------------------------------------------- - + YourActionRejectedMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const YourActionRejectedMessage& from); void MergeFrom(const YourActionRejectedMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5528,11 +6309,11 @@ class YourActionRejectedMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef YourActionRejectedMessage_RejectionReason RejectionReason; static const RejectionReason rejectedInvalidGameState = YourActionRejectedMessage_RejectionReason_rejectedInvalidGameState; static const RejectionReason rejectedNotYourTurn = YourActionRejectedMessage_RejectionReason_rejectedNotYourTurn; @@ -5546,44 +6327,44 @@ class YourActionRejectedMessage : public ::google::protobuf::MessageLite { YourActionRejectedMessage_RejectionReason_RejectionReason_MAX; static const int RejectionReason_ARRAYSIZE = YourActionRejectedMessage_RejectionReason_RejectionReason_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required .NetGameState gameState = 2; inline bool has_gamestate() const; inline void clear_gamestate(); static const int kGameStateFieldNumber = 2; - inline NetGameState gamestate() const; - inline void set_gamestate(NetGameState value); - + inline ::NetGameState gamestate() const; + inline void set_gamestate(::NetGameState value); + // required .NetPlayerAction yourAction = 3; inline bool has_youraction() const; inline void clear_youraction(); static const int kYourActionFieldNumber = 3; - inline NetPlayerAction youraction() const; - inline void set_youraction(NetPlayerAction value); - + inline ::NetPlayerAction youraction() const; + inline void set_youraction(::NetPlayerAction value); + // required uint32 yourRelativeBet = 4; inline bool has_yourrelativebet() const; inline void clear_yourrelativebet(); static const int kYourRelativeBetFieldNumber = 4; inline ::google::protobuf::uint32 yourrelativebet() const; inline void set_yourrelativebet(::google::protobuf::uint32 value); - + // required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; inline bool has_rejectionreason() const; inline void clear_rejectionreason(); static const int kRejectionReasonFieldNumber = 5; inline ::YourActionRejectedMessage_RejectionReason rejectionreason() const; inline void set_rejectionreason(::YourActionRejectedMessage_RejectionReason value); - + // @@protoc_insertion_point(class_scope:YourActionRejectedMessage) private: inline void set_has_gameid(); @@ -5596,20 +6377,24 @@ class YourActionRejectedMessage : public ::google::protobuf::MessageLite { inline void clear_has_yourrelativebet(); inline void set_has_rejectionreason(); inline void clear_has_rejectionreason(); - + ::google::protobuf::uint32 gameid_; int gamestate_; int youraction_; ::google::protobuf::uint32 yourrelativebet_; int rejectionreason_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static YourActionRejectedMessage* default_instance_; }; @@ -5619,27 +6404,37 @@ class PlayersActionDoneMessage : public ::google::protobuf::MessageLite { public: PlayersActionDoneMessage(); virtual ~PlayersActionDoneMessage(); - + PlayersActionDoneMessage(const PlayersActionDoneMessage& from); - + inline PlayersActionDoneMessage& operator=(const PlayersActionDoneMessage& from) { CopyFrom(from); return *this; } - + static const PlayersActionDoneMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const PlayersActionDoneMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(PlayersActionDoneMessage* other); - + // implements Message ---------------------------------------------- - + PlayersActionDoneMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const PlayersActionDoneMessage& from); void MergeFrom(const PlayersActionDoneMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5651,69 +6446,69 @@ class PlayersActionDoneMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // required .NetGameState gameState = 3; inline bool has_gamestate() const; inline void clear_gamestate(); static const int kGameStateFieldNumber = 3; - inline NetGameState gamestate() const; - inline void set_gamestate(NetGameState value); - + inline ::NetGameState gamestate() const; + inline void set_gamestate(::NetGameState value); + // required .NetPlayerAction playerAction = 4; inline bool has_playeraction() const; inline void clear_playeraction(); static const int kPlayerActionFieldNumber = 4; - inline NetPlayerAction playeraction() const; - inline void set_playeraction(NetPlayerAction value); - + inline ::NetPlayerAction playeraction() const; + inline void set_playeraction(::NetPlayerAction value); + // required uint32 totalPlayerBet = 5; inline bool has_totalplayerbet() const; inline void clear_totalplayerbet(); static const int kTotalPlayerBetFieldNumber = 5; inline ::google::protobuf::uint32 totalplayerbet() const; inline void set_totalplayerbet(::google::protobuf::uint32 value); - + // required uint32 playerMoney = 6; inline bool has_playermoney() const; inline void clear_playermoney(); static const int kPlayerMoneyFieldNumber = 6; inline ::google::protobuf::uint32 playermoney() const; inline void set_playermoney(::google::protobuf::uint32 value); - + // required uint32 highestSet = 7; inline bool has_highestset() const; inline void clear_highestset(); static const int kHighestSetFieldNumber = 7; inline ::google::protobuf::uint32 highestset() const; inline void set_highestset(::google::protobuf::uint32 value); - + // required uint32 minimumRaise = 8; inline bool has_minimumraise() const; inline void clear_minimumraise(); static const int kMinimumRaiseFieldNumber = 8; inline ::google::protobuf::uint32 minimumraise() const; inline void set_minimumraise(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:PlayersActionDoneMessage) private: inline void set_has_gameid(); @@ -5732,7 +6527,7 @@ class PlayersActionDoneMessage : public ::google::protobuf::MessageLite { inline void clear_has_highestset(); inline void set_has_minimumraise(); inline void clear_has_minimumraise(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; int gamestate_; @@ -5741,14 +6536,18 @@ class PlayersActionDoneMessage : public ::google::protobuf::MessageLite { ::google::protobuf::uint32 playermoney_; ::google::protobuf::uint32 highestset_; ::google::protobuf::uint32 minimumraise_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(8 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static PlayersActionDoneMessage* default_instance_; }; @@ -5758,27 +6557,37 @@ class DealFlopCardsMessage : public ::google::protobuf::MessageLite { public: DealFlopCardsMessage(); virtual ~DealFlopCardsMessage(); - + DealFlopCardsMessage(const DealFlopCardsMessage& from); - + inline DealFlopCardsMessage& operator=(const DealFlopCardsMessage& from) { CopyFrom(from); return *this; } - + static const DealFlopCardsMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const DealFlopCardsMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(DealFlopCardsMessage* other); - + // implements Message ---------------------------------------------- - + DealFlopCardsMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const DealFlopCardsMessage& from); void MergeFrom(const DealFlopCardsMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5790,41 +6599,41 @@ class DealFlopCardsMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 flopCard1 = 2; inline bool has_flopcard1() const; inline void clear_flopcard1(); static const int kFlopCard1FieldNumber = 2; inline ::google::protobuf::uint32 flopcard1() const; inline void set_flopcard1(::google::protobuf::uint32 value); - + // required uint32 flopCard2 = 3; inline bool has_flopcard2() const; inline void clear_flopcard2(); static const int kFlopCard2FieldNumber = 3; inline ::google::protobuf::uint32 flopcard2() const; inline void set_flopcard2(::google::protobuf::uint32 value); - + // required uint32 flopCard3 = 4; inline bool has_flopcard3() const; inline void clear_flopcard3(); static const int kFlopCard3FieldNumber = 4; inline ::google::protobuf::uint32 flopcard3() const; inline void set_flopcard3(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:DealFlopCardsMessage) private: inline void set_has_gameid(); @@ -5835,19 +6644,23 @@ class DealFlopCardsMessage : public ::google::protobuf::MessageLite { inline void clear_has_flopcard2(); inline void set_has_flopcard3(); inline void clear_has_flopcard3(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 flopcard1_; ::google::protobuf::uint32 flopcard2_; ::google::protobuf::uint32 flopcard3_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static DealFlopCardsMessage* default_instance_; }; @@ -5857,27 +6670,37 @@ class DealTurnCardMessage : public ::google::protobuf::MessageLite { public: DealTurnCardMessage(); virtual ~DealTurnCardMessage(); - + DealTurnCardMessage(const DealTurnCardMessage& from); - + inline DealTurnCardMessage& operator=(const DealTurnCardMessage& from) { CopyFrom(from); return *this; } - + static const DealTurnCardMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const DealTurnCardMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(DealTurnCardMessage* other); - + // implements Message ---------------------------------------------- - + DealTurnCardMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const DealTurnCardMessage& from); void MergeFrom(const DealTurnCardMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5889,44 +6712,48 @@ class DealTurnCardMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 turnCard = 2; inline bool has_turncard() const; inline void clear_turncard(); static const int kTurnCardFieldNumber = 2; inline ::google::protobuf::uint32 turncard() const; inline void set_turncard(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:DealTurnCardMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_turncard(); inline void clear_has_turncard(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 turncard_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static DealTurnCardMessage* default_instance_; }; @@ -5936,27 +6763,37 @@ class DealRiverCardMessage : public ::google::protobuf::MessageLite { public: DealRiverCardMessage(); virtual ~DealRiverCardMessage(); - + DealRiverCardMessage(const DealRiverCardMessage& from); - + inline DealRiverCardMessage& operator=(const DealRiverCardMessage& from) { CopyFrom(from); return *this; } - + static const DealRiverCardMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const DealRiverCardMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(DealRiverCardMessage* other); - + // implements Message ---------------------------------------------- - + DealRiverCardMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const DealRiverCardMessage& from); void MergeFrom(const DealRiverCardMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -5968,44 +6805,48 @@ class DealRiverCardMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 riverCard = 2; inline bool has_rivercard() const; inline void clear_rivercard(); static const int kRiverCardFieldNumber = 2; inline ::google::protobuf::uint32 rivercard() const; inline void set_rivercard(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:DealRiverCardMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_rivercard(); inline void clear_has_rivercard(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 rivercard_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static DealRiverCardMessage* default_instance_; }; @@ -6015,27 +6856,37 @@ class AllInShowCardsMessage_PlayerAllIn : public ::google::protobuf::MessageLite public: AllInShowCardsMessage_PlayerAllIn(); virtual ~AllInShowCardsMessage_PlayerAllIn(); - + AllInShowCardsMessage_PlayerAllIn(const AllInShowCardsMessage_PlayerAllIn& from); - + inline AllInShowCardsMessage_PlayerAllIn& operator=(const AllInShowCardsMessage_PlayerAllIn& from) { CopyFrom(from); return *this; } - + static const AllInShowCardsMessage_PlayerAllIn& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AllInShowCardsMessage_PlayerAllIn* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AllInShowCardsMessage_PlayerAllIn* other); - + // implements Message ---------------------------------------------- - + AllInShowCardsMessage_PlayerAllIn* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AllInShowCardsMessage_PlayerAllIn& from); void MergeFrom(const AllInShowCardsMessage_PlayerAllIn& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -6047,34 +6898,34 @@ class AllInShowCardsMessage_PlayerAllIn : public ::google::protobuf::MessageLite void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 playerId = 1; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 1; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // required uint32 allInCard1 = 2; inline bool has_allincard1() const; inline void clear_allincard1(); static const int kAllInCard1FieldNumber = 2; inline ::google::protobuf::uint32 allincard1() const; inline void set_allincard1(::google::protobuf::uint32 value); - + // required uint32 allInCard2 = 3; inline bool has_allincard2() const; inline void clear_allincard2(); static const int kAllInCard2FieldNumber = 3; inline ::google::protobuf::uint32 allincard2() const; inline void set_allincard2(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:AllInShowCardsMessage.PlayerAllIn) private: inline void set_has_playerid(); @@ -6083,18 +6934,22 @@ class AllInShowCardsMessage_PlayerAllIn : public ::google::protobuf::MessageLite inline void clear_has_allincard1(); inline void set_has_allincard2(); inline void clear_has_allincard2(); - + ::google::protobuf::uint32 playerid_; ::google::protobuf::uint32 allincard1_; ::google::protobuf::uint32 allincard2_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AllInShowCardsMessage_PlayerAllIn* default_instance_; }; @@ -6104,27 +6959,37 @@ class AllInShowCardsMessage : public ::google::protobuf::MessageLite { public: AllInShowCardsMessage(); virtual ~AllInShowCardsMessage(); - + AllInShowCardsMessage(const AllInShowCardsMessage& from); - + inline AllInShowCardsMessage& operator=(const AllInShowCardsMessage& from) { CopyFrom(from); return *this; } - + static const AllInShowCardsMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AllInShowCardsMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AllInShowCardsMessage* other); - + // implements Message ---------------------------------------------- - + AllInShowCardsMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AllInShowCardsMessage& from); void MergeFrom(const AllInShowCardsMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -6136,22 +7001,22 @@ class AllInShowCardsMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef AllInShowCardsMessage_PlayerAllIn PlayerAllIn; - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; inline int playersallin_size() const; inline void clear_playersallin(); @@ -6163,22 +7028,26 @@ class AllInShowCardsMessage : public ::google::protobuf::MessageLite { playersallin() const; inline ::google::protobuf::RepeatedPtrField< ::AllInShowCardsMessage_PlayerAllIn >* mutable_playersallin(); - + // @@protoc_insertion_point(class_scope:AllInShowCardsMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); - + ::google::protobuf::RepeatedPtrField< ::AllInShowCardsMessage_PlayerAllIn > playersallin_; ::google::protobuf::uint32 gameid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AllInShowCardsMessage* default_instance_; }; @@ -6188,27 +7057,37 @@ class EndOfHandShowCardsMessage : public ::google::protobuf::MessageLite { public: EndOfHandShowCardsMessage(); virtual ~EndOfHandShowCardsMessage(); - + EndOfHandShowCardsMessage(const EndOfHandShowCardsMessage& from); - + inline EndOfHandShowCardsMessage& operator=(const EndOfHandShowCardsMessage& from) { CopyFrom(from); return *this; } - + static const EndOfHandShowCardsMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const EndOfHandShowCardsMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(EndOfHandShowCardsMessage* other); - + // implements Message ---------------------------------------------- - + EndOfHandShowCardsMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const EndOfHandShowCardsMessage& from); void MergeFrom(const EndOfHandShowCardsMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -6220,20 +7099,20 @@ class EndOfHandShowCardsMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // repeated .PlayerResult playerResults = 2; inline int playerresults_size() const; inline void clear_playerresults(); @@ -6245,22 +7124,26 @@ class EndOfHandShowCardsMessage : public ::google::protobuf::MessageLite { playerresults() const; inline ::google::protobuf::RepeatedPtrField< ::PlayerResult >* mutable_playerresults(); - + // @@protoc_insertion_point(class_scope:EndOfHandShowCardsMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); - + ::google::protobuf::RepeatedPtrField< ::PlayerResult > playerresults_; ::google::protobuf::uint32 gameid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static EndOfHandShowCardsMessage* default_instance_; }; @@ -6270,27 +7153,37 @@ class EndOfHandHideCardsMessage : public ::google::protobuf::MessageLite { public: EndOfHandHideCardsMessage(); virtual ~EndOfHandHideCardsMessage(); - + EndOfHandHideCardsMessage(const EndOfHandHideCardsMessage& from); - + inline EndOfHandHideCardsMessage& operator=(const EndOfHandHideCardsMessage& from) { CopyFrom(from); return *this; } - + static const EndOfHandHideCardsMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const EndOfHandHideCardsMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(EndOfHandHideCardsMessage* other); - + // implements Message ---------------------------------------------- - + EndOfHandHideCardsMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const EndOfHandHideCardsMessage& from); void MergeFrom(const EndOfHandHideCardsMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -6302,41 +7195,41 @@ class EndOfHandHideCardsMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // required uint32 moneyWon = 3; inline bool has_moneywon() const; inline void clear_moneywon(); static const int kMoneyWonFieldNumber = 3; inline ::google::protobuf::uint32 moneywon() const; inline void set_moneywon(::google::protobuf::uint32 value); - + // required uint32 playerMoney = 4; inline bool has_playermoney() const; inline void clear_playermoney(); static const int kPlayerMoneyFieldNumber = 4; inline ::google::protobuf::uint32 playermoney() const; inline void set_playermoney(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:EndOfHandHideCardsMessage) private: inline void set_has_gameid(); @@ -6347,19 +7240,23 @@ class EndOfHandHideCardsMessage : public ::google::protobuf::MessageLite { inline void clear_has_moneywon(); inline void set_has_playermoney(); inline void clear_has_playermoney(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; ::google::protobuf::uint32 moneywon_; ::google::protobuf::uint32 playermoney_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static EndOfHandHideCardsMessage* default_instance_; }; @@ -6369,27 +7266,37 @@ class ShowMyCardsRequestMessage : public ::google::protobuf::MessageLite { public: ShowMyCardsRequestMessage(); virtual ~ShowMyCardsRequestMessage(); - + ShowMyCardsRequestMessage(const ShowMyCardsRequestMessage& from); - + inline ShowMyCardsRequestMessage& operator=(const ShowMyCardsRequestMessage& from) { CopyFrom(from); return *this; } - + static const ShowMyCardsRequestMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ShowMyCardsRequestMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(ShowMyCardsRequestMessage* other); - + // implements Message ---------------------------------------------- - + ShowMyCardsRequestMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const ShowMyCardsRequestMessage& from); void MergeFrom(const ShowMyCardsRequestMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -6401,24 +7308,28 @@ class ShowMyCardsRequestMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // @@protoc_insertion_point(class_scope:ShowMyCardsRequestMessage) private: - - + + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[1]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static ShowMyCardsRequestMessage* default_instance_; }; @@ -6428,27 +7339,37 @@ class AfterHandShowCardsMessage : public ::google::protobuf::MessageLite { public: AfterHandShowCardsMessage(); virtual ~AfterHandShowCardsMessage(); - + AfterHandShowCardsMessage(const AfterHandShowCardsMessage& from); - + inline AfterHandShowCardsMessage& operator=(const AfterHandShowCardsMessage& from) { CopyFrom(from); return *this; } - + static const AfterHandShowCardsMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AfterHandShowCardsMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AfterHandShowCardsMessage* other); - + // implements Message ---------------------------------------------- - + AfterHandShowCardsMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AfterHandShowCardsMessage& from); void MergeFrom(const AfterHandShowCardsMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -6460,13 +7381,13 @@ class AfterHandShowCardsMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required .PlayerResult playerResult = 1; inline bool has_playerresult() const; inline void clear_playerresult(); @@ -6474,21 +7395,26 @@ class AfterHandShowCardsMessage : public ::google::protobuf::MessageLite { inline const ::PlayerResult& playerresult() const; inline ::PlayerResult* mutable_playerresult(); inline ::PlayerResult* release_playerresult(); - + inline void set_allocated_playerresult(::PlayerResult* playerresult); + // @@protoc_insertion_point(class_scope:AfterHandShowCardsMessage) private: inline void set_has_playerresult(); inline void clear_has_playerresult(); - + ::PlayerResult* playerresult_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AfterHandShowCardsMessage* default_instance_; }; @@ -6498,27 +7424,37 @@ class EndOfGameMessage : public ::google::protobuf::MessageLite { public: EndOfGameMessage(); virtual ~EndOfGameMessage(); - + EndOfGameMessage(const EndOfGameMessage& from); - + inline EndOfGameMessage& operator=(const EndOfGameMessage& from) { CopyFrom(from); return *this; } - + static const EndOfGameMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const EndOfGameMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(EndOfGameMessage* other); - + // implements Message ---------------------------------------------- - + EndOfGameMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const EndOfGameMessage& from); void MergeFrom(const EndOfGameMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -6530,44 +7466,48 @@ class EndOfGameMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 winnerPlayerId = 2; inline bool has_winnerplayerid() const; inline void clear_winnerplayerid(); static const int kWinnerPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 winnerplayerid() const; inline void set_winnerplayerid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:EndOfGameMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_winnerplayerid(); inline void clear_has_winnerplayerid(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 winnerplayerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static EndOfGameMessage* default_instance_; }; @@ -6577,27 +7517,37 @@ class PlayerIdChangedMessage : public ::google::protobuf::MessageLite { public: PlayerIdChangedMessage(); virtual ~PlayerIdChangedMessage(); - + PlayerIdChangedMessage(const PlayerIdChangedMessage& from); - + inline PlayerIdChangedMessage& operator=(const PlayerIdChangedMessage& from) { CopyFrom(from); return *this; } - + static const PlayerIdChangedMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const PlayerIdChangedMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(PlayerIdChangedMessage* other); - + // implements Message ---------------------------------------------- - + PlayerIdChangedMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const PlayerIdChangedMessage& from); void MergeFrom(const PlayerIdChangedMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -6609,44 +7559,48 @@ class PlayerIdChangedMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 oldPlayerId = 1; inline bool has_oldplayerid() const; inline void clear_oldplayerid(); static const int kOldPlayerIdFieldNumber = 1; inline ::google::protobuf::uint32 oldplayerid() const; inline void set_oldplayerid(::google::protobuf::uint32 value); - + // required uint32 newPlayerId = 2; inline bool has_newplayerid() const; inline void clear_newplayerid(); static const int kNewPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 newplayerid() const; inline void set_newplayerid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:PlayerIdChangedMessage) private: inline void set_has_oldplayerid(); inline void clear_has_oldplayerid(); inline void set_has_newplayerid(); inline void clear_has_newplayerid(); - + ::google::protobuf::uint32 oldplayerid_; ::google::protobuf::uint32 newplayerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static PlayerIdChangedMessage* default_instance_; }; @@ -6656,27 +7610,37 @@ class AskKickPlayerMessage : public ::google::protobuf::MessageLite { public: AskKickPlayerMessage(); virtual ~AskKickPlayerMessage(); - + AskKickPlayerMessage(const AskKickPlayerMessage& from); - + inline AskKickPlayerMessage& operator=(const AskKickPlayerMessage& from) { CopyFrom(from); return *this; } - + static const AskKickPlayerMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AskKickPlayerMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AskKickPlayerMessage* other); - + // implements Message ---------------------------------------------- - + AskKickPlayerMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AskKickPlayerMessage& from); void MergeFrom(const AskKickPlayerMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -6688,44 +7652,48 @@ class AskKickPlayerMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:AskKickPlayerMessage) private: inline void set_has_gameid(); inline void clear_has_gameid(); inline void set_has_playerid(); inline void clear_has_playerid(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AskKickPlayerMessage* default_instance_; }; @@ -6735,27 +7703,37 @@ class AskKickDeniedMessage : public ::google::protobuf::MessageLite { public: AskKickDeniedMessage(); virtual ~AskKickDeniedMessage(); - + AskKickDeniedMessage(const AskKickDeniedMessage& from); - + inline AskKickDeniedMessage& operator=(const AskKickDeniedMessage& from) { CopyFrom(from); return *this; } - + static const AskKickDeniedMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AskKickDeniedMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AskKickDeniedMessage* other); - + // implements Message ---------------------------------------------- - + AskKickDeniedMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AskKickDeniedMessage& from); void MergeFrom(const AskKickDeniedMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -6767,11 +7745,11 @@ class AskKickDeniedMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef AskKickDeniedMessage_KickDeniedReason KickDeniedReason; static const KickDeniedReason kickDeniedInvalidGameState = AskKickDeniedMessage_KickDeniedReason_kickDeniedInvalidGameState; static const KickDeniedReason kickDeniedNotPossible = AskKickDeniedMessage_KickDeniedReason_kickDeniedNotPossible; @@ -6787,30 +7765,30 @@ class AskKickDeniedMessage : public ::google::protobuf::MessageLite { AskKickDeniedMessage_KickDeniedReason_KickDeniedReason_MAX; static const int KickDeniedReason_ARRAYSIZE = AskKickDeniedMessage_KickDeniedReason_KickDeniedReason_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; inline bool has_kickdeniedreason() const; inline void clear_kickdeniedreason(); static const int kKickDeniedReasonFieldNumber = 3; inline ::AskKickDeniedMessage_KickDeniedReason kickdeniedreason() const; inline void set_kickdeniedreason(::AskKickDeniedMessage_KickDeniedReason value); - + // @@protoc_insertion_point(class_scope:AskKickDeniedMessage) private: inline void set_has_gameid(); @@ -6819,18 +7797,22 @@ class AskKickDeniedMessage : public ::google::protobuf::MessageLite { inline void clear_has_playerid(); inline void set_has_kickdeniedreason(); inline void clear_has_kickdeniedreason(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; int kickdeniedreason_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AskKickDeniedMessage* default_instance_; }; @@ -6840,27 +7822,37 @@ class StartKickPetitionMessage : public ::google::protobuf::MessageLite { public: StartKickPetitionMessage(); virtual ~StartKickPetitionMessage(); - + StartKickPetitionMessage(const StartKickPetitionMessage& from); - + inline StartKickPetitionMessage& operator=(const StartKickPetitionMessage& from) { CopyFrom(from); return *this; } - + static const StartKickPetitionMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const StartKickPetitionMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(StartKickPetitionMessage* other); - + // implements Message ---------------------------------------------- - + StartKickPetitionMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const StartKickPetitionMessage& from); void MergeFrom(const StartKickPetitionMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -6872,55 +7864,55 @@ class StartKickPetitionMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 petitionId = 2; inline bool has_petitionid() const; inline void clear_petitionid(); static const int kPetitionIdFieldNumber = 2; inline ::google::protobuf::uint32 petitionid() const; inline void set_petitionid(::google::protobuf::uint32 value); - + // required uint32 proposingPlayerId = 3; inline bool has_proposingplayerid() const; inline void clear_proposingplayerid(); static const int kProposingPlayerIdFieldNumber = 3; inline ::google::protobuf::uint32 proposingplayerid() const; inline void set_proposingplayerid(::google::protobuf::uint32 value); - + // required uint32 kickPlayerId = 4; inline bool has_kickplayerid() const; inline void clear_kickplayerid(); static const int kKickPlayerIdFieldNumber = 4; inline ::google::protobuf::uint32 kickplayerid() const; inline void set_kickplayerid(::google::protobuf::uint32 value); - + // required uint32 kickTimeoutSec = 5; inline bool has_kicktimeoutsec() const; inline void clear_kicktimeoutsec(); static const int kKickTimeoutSecFieldNumber = 5; inline ::google::protobuf::uint32 kicktimeoutsec() const; inline void set_kicktimeoutsec(::google::protobuf::uint32 value); - + // required uint32 numVotesNeededToKick = 6; inline bool has_numvotesneededtokick() const; inline void clear_numvotesneededtokick(); static const int kNumVotesNeededToKickFieldNumber = 6; inline ::google::protobuf::uint32 numvotesneededtokick() const; inline void set_numvotesneededtokick(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:StartKickPetitionMessage) private: inline void set_has_gameid(); @@ -6935,21 +7927,25 @@ class StartKickPetitionMessage : public ::google::protobuf::MessageLite { inline void clear_has_kicktimeoutsec(); inline void set_has_numvotesneededtokick(); inline void clear_has_numvotesneededtokick(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 petitionid_; ::google::protobuf::uint32 proposingplayerid_; ::google::protobuf::uint32 kickplayerid_; ::google::protobuf::uint32 kicktimeoutsec_; ::google::protobuf::uint32 numvotesneededtokick_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static StartKickPetitionMessage* default_instance_; }; @@ -6959,27 +7955,37 @@ class VoteKickRequestMessage : public ::google::protobuf::MessageLite { public: VoteKickRequestMessage(); virtual ~VoteKickRequestMessage(); - + VoteKickRequestMessage(const VoteKickRequestMessage& from); - + inline VoteKickRequestMessage& operator=(const VoteKickRequestMessage& from) { CopyFrom(from); return *this; } - + static const VoteKickRequestMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const VoteKickRequestMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(VoteKickRequestMessage* other); - + // implements Message ---------------------------------------------- - + VoteKickRequestMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const VoteKickRequestMessage& from); void MergeFrom(const VoteKickRequestMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -6991,34 +7997,34 @@ class VoteKickRequestMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 petitionId = 2; inline bool has_petitionid() const; inline void clear_petitionid(); static const int kPetitionIdFieldNumber = 2; inline ::google::protobuf::uint32 petitionid() const; inline void set_petitionid(::google::protobuf::uint32 value); - + // required bool voteKick = 3; inline bool has_votekick() const; inline void clear_votekick(); static const int kVoteKickFieldNumber = 3; inline bool votekick() const; inline void set_votekick(bool value); - + // @@protoc_insertion_point(class_scope:VoteKickRequestMessage) private: inline void set_has_gameid(); @@ -7027,18 +8033,22 @@ class VoteKickRequestMessage : public ::google::protobuf::MessageLite { inline void clear_has_petitionid(); inline void set_has_votekick(); inline void clear_has_votekick(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 petitionid_; bool votekick_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static VoteKickRequestMessage* default_instance_; }; @@ -7048,27 +8058,37 @@ class VoteKickReplyMessage : public ::google::protobuf::MessageLite { public: VoteKickReplyMessage(); virtual ~VoteKickReplyMessage(); - + VoteKickReplyMessage(const VoteKickReplyMessage& from); - + inline VoteKickReplyMessage& operator=(const VoteKickReplyMessage& from) { CopyFrom(from); return *this; } - + static const VoteKickReplyMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const VoteKickReplyMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(VoteKickReplyMessage* other); - + // implements Message ---------------------------------------------- - + VoteKickReplyMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const VoteKickReplyMessage& from); void MergeFrom(const VoteKickReplyMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -7080,11 +8100,11 @@ class VoteKickReplyMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef VoteKickReplyMessage_VoteKickReplyType VoteKickReplyType; static const VoteKickReplyType voteKickAck = VoteKickReplyMessage_VoteKickReplyType_voteKickAck; static const VoteKickReplyType voteKickDeniedInvalid = VoteKickReplyMessage_VoteKickReplyType_voteKickDeniedInvalid; @@ -7098,30 +8118,30 @@ class VoteKickReplyMessage : public ::google::protobuf::MessageLite { VoteKickReplyMessage_VoteKickReplyType_VoteKickReplyType_MAX; static const int VoteKickReplyType_ARRAYSIZE = VoteKickReplyMessage_VoteKickReplyType_VoteKickReplyType_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 petitionId = 2; inline bool has_petitionid() const; inline void clear_petitionid(); static const int kPetitionIdFieldNumber = 2; inline ::google::protobuf::uint32 petitionid() const; inline void set_petitionid(::google::protobuf::uint32 value); - + // required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; inline bool has_votekickreplytype() const; inline void clear_votekickreplytype(); static const int kVoteKickReplyTypeFieldNumber = 3; inline ::VoteKickReplyMessage_VoteKickReplyType votekickreplytype() const; inline void set_votekickreplytype(::VoteKickReplyMessage_VoteKickReplyType value); - + // @@protoc_insertion_point(class_scope:VoteKickReplyMessage) private: inline void set_has_gameid(); @@ -7130,18 +8150,22 @@ class VoteKickReplyMessage : public ::google::protobuf::MessageLite { inline void clear_has_petitionid(); inline void set_has_votekickreplytype(); inline void clear_has_votekickreplytype(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 petitionid_; int votekickreplytype_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static VoteKickReplyMessage* default_instance_; }; @@ -7151,27 +8175,37 @@ class KickPetitionUpdateMessage : public ::google::protobuf::MessageLite { public: KickPetitionUpdateMessage(); virtual ~KickPetitionUpdateMessage(); - + KickPetitionUpdateMessage(const KickPetitionUpdateMessage& from); - + inline KickPetitionUpdateMessage& operator=(const KickPetitionUpdateMessage& from) { CopyFrom(from); return *this; } - + static const KickPetitionUpdateMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const KickPetitionUpdateMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(KickPetitionUpdateMessage* other); - + // implements Message ---------------------------------------------- - + KickPetitionUpdateMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const KickPetitionUpdateMessage& from); void MergeFrom(const KickPetitionUpdateMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -7183,48 +8217,48 @@ class KickPetitionUpdateMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 petitionId = 2; inline bool has_petitionid() const; inline void clear_petitionid(); static const int kPetitionIdFieldNumber = 2; inline ::google::protobuf::uint32 petitionid() const; inline void set_petitionid(::google::protobuf::uint32 value); - + // required uint32 numVotesAgainstKicking = 3; inline bool has_numvotesagainstkicking() const; inline void clear_numvotesagainstkicking(); static const int kNumVotesAgainstKickingFieldNumber = 3; inline ::google::protobuf::uint32 numvotesagainstkicking() const; inline void set_numvotesagainstkicking(::google::protobuf::uint32 value); - + // required uint32 numVotesInFavourOfKicking = 4; inline bool has_numvotesinfavourofkicking() const; inline void clear_numvotesinfavourofkicking(); static const int kNumVotesInFavourOfKickingFieldNumber = 4; inline ::google::protobuf::uint32 numvotesinfavourofkicking() const; inline void set_numvotesinfavourofkicking(::google::protobuf::uint32 value); - + // required uint32 numVotesNeededToKick = 5; inline bool has_numvotesneededtokick() const; inline void clear_numvotesneededtokick(); static const int kNumVotesNeededToKickFieldNumber = 5; inline ::google::protobuf::uint32 numvotesneededtokick() const; inline void set_numvotesneededtokick(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:KickPetitionUpdateMessage) private: inline void set_has_gameid(); @@ -7237,20 +8271,24 @@ class KickPetitionUpdateMessage : public ::google::protobuf::MessageLite { inline void clear_has_numvotesinfavourofkicking(); inline void set_has_numvotesneededtokick(); inline void clear_has_numvotesneededtokick(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 petitionid_; ::google::protobuf::uint32 numvotesagainstkicking_; ::google::protobuf::uint32 numvotesinfavourofkicking_; ::google::protobuf::uint32 numvotesneededtokick_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static KickPetitionUpdateMessage* default_instance_; }; @@ -7260,27 +8298,37 @@ class EndKickPetitionMessage : public ::google::protobuf::MessageLite { public: EndKickPetitionMessage(); virtual ~EndKickPetitionMessage(); - + EndKickPetitionMessage(const EndKickPetitionMessage& from); - + inline EndKickPetitionMessage& operator=(const EndKickPetitionMessage& from) { CopyFrom(from); return *this; } - + static const EndKickPetitionMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const EndKickPetitionMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(EndKickPetitionMessage* other); - + // implements Message ---------------------------------------------- - + EndKickPetitionMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const EndKickPetitionMessage& from); void MergeFrom(const EndKickPetitionMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -7292,11 +8340,11 @@ class EndKickPetitionMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef EndKickPetitionMessage_PetitionEndReason PetitionEndReason; static const PetitionEndReason petitionEndEnoughVotes = EndKickPetitionMessage_PetitionEndReason_petitionEndEnoughVotes; static const PetitionEndReason petitionEndTooFewPlayers = EndKickPetitionMessage_PetitionEndReason_petitionEndTooFewPlayers; @@ -7311,51 +8359,51 @@ class EndKickPetitionMessage : public ::google::protobuf::MessageLite { EndKickPetitionMessage_PetitionEndReason_PetitionEndReason_MAX; static const int PetitionEndReason_ARRAYSIZE = EndKickPetitionMessage_PetitionEndReason_PetitionEndReason_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // required uint32 petitionId = 2; inline bool has_petitionid() const; inline void clear_petitionid(); static const int kPetitionIdFieldNumber = 2; inline ::google::protobuf::uint32 petitionid() const; inline void set_petitionid(::google::protobuf::uint32 value); - + // required uint32 numVotesAgainstKicking = 3; inline bool has_numvotesagainstkicking() const; inline void clear_numvotesagainstkicking(); static const int kNumVotesAgainstKickingFieldNumber = 3; inline ::google::protobuf::uint32 numvotesagainstkicking() const; inline void set_numvotesagainstkicking(::google::protobuf::uint32 value); - + // required uint32 numVotesInFavourOfKicking = 4; inline bool has_numvotesinfavourofkicking() const; inline void clear_numvotesinfavourofkicking(); static const int kNumVotesInFavourOfKickingFieldNumber = 4; inline ::google::protobuf::uint32 numvotesinfavourofkicking() const; inline void set_numvotesinfavourofkicking(::google::protobuf::uint32 value); - + // required uint32 resultPlayerKicked = 5; inline bool has_resultplayerkicked() const; inline void clear_resultplayerkicked(); static const int kResultPlayerKickedFieldNumber = 5; inline ::google::protobuf::uint32 resultplayerkicked() const; inline void set_resultplayerkicked(::google::protobuf::uint32 value); - + // required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; inline bool has_petitionendreason() const; inline void clear_petitionendreason(); static const int kPetitionEndReasonFieldNumber = 6; inline ::EndKickPetitionMessage_PetitionEndReason petitionendreason() const; inline void set_petitionendreason(::EndKickPetitionMessage_PetitionEndReason value); - + // @@protoc_insertion_point(class_scope:EndKickPetitionMessage) private: inline void set_has_gameid(); @@ -7370,21 +8418,25 @@ class EndKickPetitionMessage : public ::google::protobuf::MessageLite { inline void clear_has_resultplayerkicked(); inline void set_has_petitionendreason(); inline void clear_has_petitionendreason(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 petitionid_; ::google::protobuf::uint32 numvotesagainstkicking_; ::google::protobuf::uint32 numvotesinfavourofkicking_; ::google::protobuf::uint32 resultplayerkicked_; int petitionendreason_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static EndKickPetitionMessage* default_instance_; }; @@ -7394,27 +8446,37 @@ class StatisticsMessage_StatisticsData : public ::google::protobuf::MessageLite public: StatisticsMessage_StatisticsData(); virtual ~StatisticsMessage_StatisticsData(); - + StatisticsMessage_StatisticsData(const StatisticsMessage_StatisticsData& from); - + inline StatisticsMessage_StatisticsData& operator=(const StatisticsMessage_StatisticsData& from) { CopyFrom(from); return *this; } - + static const StatisticsMessage_StatisticsData& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const StatisticsMessage_StatisticsData* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(StatisticsMessage_StatisticsData* other); - + // implements Message ---------------------------------------------- - + StatisticsMessage_StatisticsData* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const StatisticsMessage_StatisticsData& from); void MergeFrom(const StatisticsMessage_StatisticsData& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -7426,11 +8488,11 @@ class StatisticsMessage_StatisticsData : public ::google::protobuf::MessageLite void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef StatisticsMessage_StatisticsData_StatisticsType StatisticsType; static const StatisticsType statNumberOfPlayers = StatisticsMessage_StatisticsData_StatisticsType_statNumberOfPlayers; static inline bool StatisticsType_IsValid(int value) { @@ -7442,40 +8504,44 @@ class StatisticsMessage_StatisticsData : public ::google::protobuf::MessageLite StatisticsMessage_StatisticsData_StatisticsType_StatisticsType_MAX; static const int StatisticsType_ARRAYSIZE = StatisticsMessage_StatisticsData_StatisticsType_StatisticsType_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; inline bool has_statisticstype() const; inline void clear_statisticstype(); static const int kStatisticsTypeFieldNumber = 1; inline ::StatisticsMessage_StatisticsData_StatisticsType statisticstype() const; inline void set_statisticstype(::StatisticsMessage_StatisticsData_StatisticsType value); - + // required uint32 statisticsValue = 2; inline bool has_statisticsvalue() const; inline void clear_statisticsvalue(); static const int kStatisticsValueFieldNumber = 2; inline ::google::protobuf::uint32 statisticsvalue() const; inline void set_statisticsvalue(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:StatisticsMessage.StatisticsData) private: inline void set_has_statisticstype(); inline void clear_has_statisticstype(); inline void set_has_statisticsvalue(); inline void clear_has_statisticsvalue(); - + int statisticstype_; ::google::protobuf::uint32 statisticsvalue_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static StatisticsMessage_StatisticsData* default_instance_; }; @@ -7485,27 +8551,37 @@ class StatisticsMessage : public ::google::protobuf::MessageLite { public: StatisticsMessage(); virtual ~StatisticsMessage(); - + StatisticsMessage(const StatisticsMessage& from); - + inline StatisticsMessage& operator=(const StatisticsMessage& from) { CopyFrom(from); return *this; } - + static const StatisticsMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const StatisticsMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(StatisticsMessage* other); - + // implements Message ---------------------------------------------- - + StatisticsMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const StatisticsMessage& from); void MergeFrom(const StatisticsMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -7517,15 +8593,15 @@ class StatisticsMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef StatisticsMessage_StatisticsData StatisticsData; - + // accessors ------------------------------------------------------- - + // repeated .StatisticsMessage.StatisticsData statisticsData = 1; inline int statisticsdata_size() const; inline void clear_statisticsdata(); @@ -7537,19 +8613,23 @@ class StatisticsMessage : public ::google::protobuf::MessageLite { statisticsdata() const; inline ::google::protobuf::RepeatedPtrField< ::StatisticsMessage_StatisticsData >* mutable_statisticsdata(); - + // @@protoc_insertion_point(class_scope:StatisticsMessage) private: - + ::google::protobuf::RepeatedPtrField< ::StatisticsMessage_StatisticsData > statisticsdata_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static StatisticsMessage* default_instance_; }; @@ -7559,27 +8639,37 @@ class ChatRequestMessage : public ::google::protobuf::MessageLite { public: ChatRequestMessage(); virtual ~ChatRequestMessage(); - + ChatRequestMessage(const ChatRequestMessage& from); - + inline ChatRequestMessage& operator=(const ChatRequestMessage& from) { CopyFrom(from); return *this; } - + static const ChatRequestMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ChatRequestMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(ChatRequestMessage* other); - + // implements Message ---------------------------------------------- - + ChatRequestMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const ChatRequestMessage& from); void MergeFrom(const ChatRequestMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -7591,27 +8681,27 @@ class ChatRequestMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // optional uint32 targetGameId = 1; inline bool has_targetgameid() const; inline void clear_targetgameid(); static const int kTargetGameIdFieldNumber = 1; inline ::google::protobuf::uint32 targetgameid() const; inline void set_targetgameid(::google::protobuf::uint32 value); - + // optional uint32 targetPlayerId = 2; inline bool has_targetplayerid() const; inline void clear_targetplayerid(); static const int kTargetPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 targetplayerid() const; inline void set_targetplayerid(::google::protobuf::uint32 value); - + // required string chatText = 3; inline bool has_chattext() const; inline void clear_chattext(); @@ -7622,7 +8712,8 @@ class ChatRequestMessage : public ::google::protobuf::MessageLite { inline void set_chattext(const char* value, size_t size); inline ::std::string* mutable_chattext(); inline ::std::string* release_chattext(); - + inline void set_allocated_chattext(::std::string* chattext); + // @@protoc_insertion_point(class_scope:ChatRequestMessage) private: inline void set_has_targetgameid(); @@ -7631,18 +8722,22 @@ class ChatRequestMessage : public ::google::protobuf::MessageLite { inline void clear_has_targetplayerid(); inline void set_has_chattext(); inline void clear_has_chattext(); - + ::google::protobuf::uint32 targetgameid_; ::google::protobuf::uint32 targetplayerid_; ::std::string* chattext_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static ChatRequestMessage* default_instance_; }; @@ -7652,27 +8747,37 @@ class ChatMessage : public ::google::protobuf::MessageLite { public: ChatMessage(); virtual ~ChatMessage(); - + ChatMessage(const ChatMessage& from); - + inline ChatMessage& operator=(const ChatMessage& from) { CopyFrom(from); return *this; } - + static const ChatMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ChatMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(ChatMessage* other); - + // implements Message ---------------------------------------------- - + ChatMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const ChatMessage& from); void MergeFrom(const ChatMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -7684,11 +8789,11 @@ class ChatMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef ChatMessage_ChatType ChatType; static const ChatType chatTypeLobby = ChatMessage_ChatType_chatTypeLobby; static const ChatType chatTypeGame = ChatMessage_ChatType_chatTypeGame; @@ -7704,30 +8809,30 @@ class ChatMessage : public ::google::protobuf::MessageLite { ChatMessage_ChatType_ChatType_MAX; static const int ChatType_ARRAYSIZE = ChatMessage_ChatType_ChatType_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // optional uint32 gameId = 1; inline bool has_gameid() const; inline void clear_gameid(); static const int kGameIdFieldNumber = 1; inline ::google::protobuf::uint32 gameid() const; inline void set_gameid(::google::protobuf::uint32 value); - + // optional uint32 playerId = 2; inline bool has_playerid() const; inline void clear_playerid(); static const int kPlayerIdFieldNumber = 2; inline ::google::protobuf::uint32 playerid() const; inline void set_playerid(::google::protobuf::uint32 value); - + // required .ChatMessage.ChatType chatType = 3; inline bool has_chattype() const; inline void clear_chattype(); static const int kChatTypeFieldNumber = 3; inline ::ChatMessage_ChatType chattype() const; inline void set_chattype(::ChatMessage_ChatType value); - + // required string chatText = 4; inline bool has_chattext() const; inline void clear_chattext(); @@ -7738,7 +8843,8 @@ class ChatMessage : public ::google::protobuf::MessageLite { inline void set_chattext(const char* value, size_t size); inline ::std::string* mutable_chattext(); inline ::std::string* release_chattext(); - + inline void set_allocated_chattext(::std::string* chattext); + // @@protoc_insertion_point(class_scope:ChatMessage) private: inline void set_has_gameid(); @@ -7749,19 +8855,23 @@ class ChatMessage : public ::google::protobuf::MessageLite { inline void clear_has_chattype(); inline void set_has_chattext(); inline void clear_has_chattext(); - + ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 playerid_; ::std::string* chattext_; int chattype_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static ChatMessage* default_instance_; }; @@ -7771,27 +8881,37 @@ class ChatRejectMessage : public ::google::protobuf::MessageLite { public: ChatRejectMessage(); virtual ~ChatRejectMessage(); - + ChatRejectMessage(const ChatRejectMessage& from); - + inline ChatRejectMessage& operator=(const ChatRejectMessage& from) { CopyFrom(from); return *this; } - + static const ChatRejectMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ChatRejectMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(ChatRejectMessage* other); - + // implements Message ---------------------------------------------- - + ChatRejectMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const ChatRejectMessage& from); void MergeFrom(const ChatRejectMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -7803,13 +8923,13 @@ class ChatRejectMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string chatText = 1; inline bool has_chattext() const; inline void clear_chattext(); @@ -7820,21 +8940,26 @@ class ChatRejectMessage : public ::google::protobuf::MessageLite { inline void set_chattext(const char* value, size_t size); inline ::std::string* mutable_chattext(); inline ::std::string* release_chattext(); - + inline void set_allocated_chattext(::std::string* chattext); + // @@protoc_insertion_point(class_scope:ChatRejectMessage) private: inline void set_has_chattext(); inline void clear_has_chattext(); - + ::std::string* chattext_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static ChatRejectMessage* default_instance_; }; @@ -7844,27 +8969,37 @@ class DialogMessage : public ::google::protobuf::MessageLite { public: DialogMessage(); virtual ~DialogMessage(); - + DialogMessage(const DialogMessage& from); - + inline DialogMessage& operator=(const DialogMessage& from) { CopyFrom(from); return *this; } - + static const DialogMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const DialogMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(DialogMessage* other); - + // implements Message ---------------------------------------------- - + DialogMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const DialogMessage& from); void MergeFrom(const DialogMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -7876,13 +9011,13 @@ class DialogMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required string notificationText = 1; inline bool has_notificationtext() const; inline void clear_notificationtext(); @@ -7893,21 +9028,26 @@ class DialogMessage : public ::google::protobuf::MessageLite { inline void set_notificationtext(const char* value, size_t size); inline ::std::string* mutable_notificationtext(); inline ::std::string* release_notificationtext(); - + inline void set_allocated_notificationtext(::std::string* notificationtext); + // @@protoc_insertion_point(class_scope:DialogMessage) private: inline void set_has_notificationtext(); inline void clear_has_notificationtext(); - + ::std::string* notificationtext_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static DialogMessage* default_instance_; }; @@ -7917,27 +9057,37 @@ class TimeoutWarningMessage : public ::google::protobuf::MessageLite { public: TimeoutWarningMessage(); virtual ~TimeoutWarningMessage(); - + TimeoutWarningMessage(const TimeoutWarningMessage& from); - + inline TimeoutWarningMessage& operator=(const TimeoutWarningMessage& from) { CopyFrom(from); return *this; } - + static const TimeoutWarningMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const TimeoutWarningMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(TimeoutWarningMessage* other); - + // implements Message ---------------------------------------------- - + TimeoutWarningMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const TimeoutWarningMessage& from); void MergeFrom(const TimeoutWarningMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -7949,11 +9099,11 @@ class TimeoutWarningMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef TimeoutWarningMessage_TimeoutReason TimeoutReason; static const TimeoutReason timeoutNoDataReceived = TimeoutWarningMessage_TimeoutReason_timeoutNoDataReceived; static const TimeoutReason timeoutInactiveGame = TimeoutWarningMessage_TimeoutReason_timeoutInactiveGame; @@ -7967,40 +9117,44 @@ class TimeoutWarningMessage : public ::google::protobuf::MessageLite { TimeoutWarningMessage_TimeoutReason_TimeoutReason_MAX; static const int TimeoutReason_ARRAYSIZE = TimeoutWarningMessage_TimeoutReason_TimeoutReason_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; inline bool has_timeoutreason() const; inline void clear_timeoutreason(); static const int kTimeoutReasonFieldNumber = 1; inline ::TimeoutWarningMessage_TimeoutReason timeoutreason() const; inline void set_timeoutreason(::TimeoutWarningMessage_TimeoutReason value); - + // required uint32 remainingSeconds = 2; inline bool has_remainingseconds() const; inline void clear_remainingseconds(); static const int kRemainingSecondsFieldNumber = 2; inline ::google::protobuf::uint32 remainingseconds() const; inline void set_remainingseconds(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:TimeoutWarningMessage) private: inline void set_has_timeoutreason(); inline void clear_has_timeoutreason(); inline void set_has_remainingseconds(); inline void clear_has_remainingseconds(); - + int timeoutreason_; ::google::protobuf::uint32 remainingseconds_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static TimeoutWarningMessage* default_instance_; }; @@ -8010,27 +9164,37 @@ class ResetTimeoutMessage : public ::google::protobuf::MessageLite { public: ResetTimeoutMessage(); virtual ~ResetTimeoutMessage(); - + ResetTimeoutMessage(const ResetTimeoutMessage& from); - + inline ResetTimeoutMessage& operator=(const ResetTimeoutMessage& from) { CopyFrom(from); return *this; } - + static const ResetTimeoutMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ResetTimeoutMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(ResetTimeoutMessage* other); - + // implements Message ---------------------------------------------- - + ResetTimeoutMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const ResetTimeoutMessage& from); void MergeFrom(const ResetTimeoutMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -8042,24 +9206,28 @@ class ResetTimeoutMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // @@protoc_insertion_point(class_scope:ResetTimeoutMessage) private: - - + + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[1]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static ResetTimeoutMessage* default_instance_; }; @@ -8069,27 +9237,37 @@ class ReportAvatarMessage : public ::google::protobuf::MessageLite { public: ReportAvatarMessage(); virtual ~ReportAvatarMessage(); - + ReportAvatarMessage(const ReportAvatarMessage& from); - + inline ReportAvatarMessage& operator=(const ReportAvatarMessage& from) { CopyFrom(from); return *this; } - + static const ReportAvatarMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ReportAvatarMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(ReportAvatarMessage* other); - + // implements Message ---------------------------------------------- - + ReportAvatarMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const ReportAvatarMessage& from); void MergeFrom(const ReportAvatarMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -8101,20 +9279,20 @@ class ReportAvatarMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 reportedPlayerId = 1; inline bool has_reportedplayerid() const; inline void clear_reportedplayerid(); static const int kReportedPlayerIdFieldNumber = 1; inline ::google::protobuf::uint32 reportedplayerid() const; inline void set_reportedplayerid(::google::protobuf::uint32 value); - + // required bytes reportedAvatarHash = 2; inline bool has_reportedavatarhash() const; inline void clear_reportedavatarhash(); @@ -8125,24 +9303,29 @@ class ReportAvatarMessage : public ::google::protobuf::MessageLite { inline void set_reportedavatarhash(const void* value, size_t size); inline ::std::string* mutable_reportedavatarhash(); inline ::std::string* release_reportedavatarhash(); - + inline void set_allocated_reportedavatarhash(::std::string* reportedavatarhash); + // @@protoc_insertion_point(class_scope:ReportAvatarMessage) private: inline void set_has_reportedplayerid(); inline void clear_has_reportedplayerid(); inline void set_has_reportedavatarhash(); inline void clear_has_reportedavatarhash(); - + ::std::string* reportedavatarhash_; ::google::protobuf::uint32 reportedplayerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static ReportAvatarMessage* default_instance_; }; @@ -8152,27 +9335,37 @@ class ReportAvatarAckMessage : public ::google::protobuf::MessageLite { public: ReportAvatarAckMessage(); virtual ~ReportAvatarAckMessage(); - + ReportAvatarAckMessage(const ReportAvatarAckMessage& from); - + inline ReportAvatarAckMessage& operator=(const ReportAvatarAckMessage& from) { CopyFrom(from); return *this; } - + static const ReportAvatarAckMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ReportAvatarAckMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(ReportAvatarAckMessage* other); - + // implements Message ---------------------------------------------- - + ReportAvatarAckMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const ReportAvatarAckMessage& from); void MergeFrom(const ReportAvatarAckMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -8184,11 +9377,11 @@ class ReportAvatarAckMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef ReportAvatarAckMessage_ReportAvatarResult ReportAvatarResult; static const ReportAvatarResult avatarReportAccepted = ReportAvatarAckMessage_ReportAvatarResult_avatarReportAccepted; static const ReportAvatarResult avatarReportDuplicate = ReportAvatarAckMessage_ReportAvatarResult_avatarReportDuplicate; @@ -8202,40 +9395,44 @@ class ReportAvatarAckMessage : public ::google::protobuf::MessageLite { ReportAvatarAckMessage_ReportAvatarResult_ReportAvatarResult_MAX; static const int ReportAvatarResult_ARRAYSIZE = ReportAvatarAckMessage_ReportAvatarResult_ReportAvatarResult_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 reportedPlayerId = 1; inline bool has_reportedplayerid() const; inline void clear_reportedplayerid(); static const int kReportedPlayerIdFieldNumber = 1; inline ::google::protobuf::uint32 reportedplayerid() const; inline void set_reportedplayerid(::google::protobuf::uint32 value); - + // required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; inline bool has_reportavatarresult() const; inline void clear_reportavatarresult(); static const int kReportAvatarResultFieldNumber = 2; inline ::ReportAvatarAckMessage_ReportAvatarResult reportavatarresult() const; inline void set_reportavatarresult(::ReportAvatarAckMessage_ReportAvatarResult value); - + // @@protoc_insertion_point(class_scope:ReportAvatarAckMessage) private: inline void set_has_reportedplayerid(); inline void clear_has_reportedplayerid(); inline void set_has_reportavatarresult(); inline void clear_has_reportavatarresult(); - + ::google::protobuf::uint32 reportedplayerid_; int reportavatarresult_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static ReportAvatarAckMessage* default_instance_; }; @@ -8245,27 +9442,37 @@ class ReportGameMessage : public ::google::protobuf::MessageLite { public: ReportGameMessage(); virtual ~ReportGameMessage(); - + ReportGameMessage(const ReportGameMessage& from); - + inline ReportGameMessage& operator=(const ReportGameMessage& from) { CopyFrom(from); return *this; } - + static const ReportGameMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ReportGameMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(ReportGameMessage* other); - + // implements Message ---------------------------------------------- - + ReportGameMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const ReportGameMessage& from); void MergeFrom(const ReportGameMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -8277,34 +9484,38 @@ class ReportGameMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 reportedGameId = 1; inline bool has_reportedgameid() const; inline void clear_reportedgameid(); static const int kReportedGameIdFieldNumber = 1; inline ::google::protobuf::uint32 reportedgameid() const; inline void set_reportedgameid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:ReportGameMessage) private: inline void set_has_reportedgameid(); inline void clear_has_reportedgameid(); - + ::google::protobuf::uint32 reportedgameid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static ReportGameMessage* default_instance_; }; @@ -8314,27 +9525,37 @@ class ReportGameAckMessage : public ::google::protobuf::MessageLite { public: ReportGameAckMessage(); virtual ~ReportGameAckMessage(); - + ReportGameAckMessage(const ReportGameAckMessage& from); - + inline ReportGameAckMessage& operator=(const ReportGameAckMessage& from) { CopyFrom(from); return *this; } - + static const ReportGameAckMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ReportGameAckMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(ReportGameAckMessage* other); - + // implements Message ---------------------------------------------- - + ReportGameAckMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const ReportGameAckMessage& from); void MergeFrom(const ReportGameAckMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -8346,11 +9567,11 @@ class ReportGameAckMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef ReportGameAckMessage_ReportGameResult ReportGameResult; static const ReportGameResult gameReportAccepted = ReportGameAckMessage_ReportGameResult_gameReportAccepted; static const ReportGameResult gameReportDuplicate = ReportGameAckMessage_ReportGameResult_gameReportDuplicate; @@ -8364,40 +9585,44 @@ class ReportGameAckMessage : public ::google::protobuf::MessageLite { ReportGameAckMessage_ReportGameResult_ReportGameResult_MAX; static const int ReportGameResult_ARRAYSIZE = ReportGameAckMessage_ReportGameResult_ReportGameResult_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 reportedGameId = 1; inline bool has_reportedgameid() const; inline void clear_reportedgameid(); static const int kReportedGameIdFieldNumber = 1; inline ::google::protobuf::uint32 reportedgameid() const; inline void set_reportedgameid(::google::protobuf::uint32 value); - + // required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; inline bool has_reportgameresult() const; inline void clear_reportgameresult(); static const int kReportGameResultFieldNumber = 2; inline ::ReportGameAckMessage_ReportGameResult reportgameresult() const; inline void set_reportgameresult(::ReportGameAckMessage_ReportGameResult value); - + // @@protoc_insertion_point(class_scope:ReportGameAckMessage) private: inline void set_has_reportedgameid(); inline void clear_has_reportedgameid(); inline void set_has_reportgameresult(); inline void clear_has_reportgameresult(); - + ::google::protobuf::uint32 reportedgameid_; int reportgameresult_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static ReportGameAckMessage* default_instance_; }; @@ -8407,27 +9632,37 @@ class ErrorMessage : public ::google::protobuf::MessageLite { public: ErrorMessage(); virtual ~ErrorMessage(); - + ErrorMessage(const ErrorMessage& from); - + inline ErrorMessage& operator=(const ErrorMessage& from) { CopyFrom(from); return *this; } - + static const ErrorMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ErrorMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(ErrorMessage* other); - + // implements Message ---------------------------------------------- - + ErrorMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const ErrorMessage& from); void MergeFrom(const ErrorMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -8439,11 +9674,11 @@ class ErrorMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef ErrorMessage_ErrorReason ErrorReason; static const ErrorReason reserved = ErrorMessage_ErrorReason_reserved; static const ErrorReason initVersionNotSupported = ErrorMessage_ErrorReason_initVersionNotSupported; @@ -8469,30 +9704,34 @@ class ErrorMessage : public ::google::protobuf::MessageLite { ErrorMessage_ErrorReason_ErrorReason_MAX; static const int ErrorReason_ARRAYSIZE = ErrorMessage_ErrorReason_ErrorReason_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required .ErrorMessage.ErrorReason errorReason = 1; inline bool has_errorreason() const; inline void clear_errorreason(); static const int kErrorReasonFieldNumber = 1; inline ::ErrorMessage_ErrorReason errorreason() const; inline void set_errorreason(::ErrorMessage_ErrorReason value); - + // @@protoc_insertion_point(class_scope:ErrorMessage) private: inline void set_has_errorreason(); inline void clear_has_errorreason(); - + int errorreason_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static ErrorMessage* default_instance_; }; @@ -8502,27 +9741,37 @@ class AdminRemoveGameMessage : public ::google::protobuf::MessageLite { public: AdminRemoveGameMessage(); virtual ~AdminRemoveGameMessage(); - + AdminRemoveGameMessage(const AdminRemoveGameMessage& from); - + inline AdminRemoveGameMessage& operator=(const AdminRemoveGameMessage& from) { CopyFrom(from); return *this; } - + static const AdminRemoveGameMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AdminRemoveGameMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AdminRemoveGameMessage* other); - + // implements Message ---------------------------------------------- - + AdminRemoveGameMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AdminRemoveGameMessage& from); void MergeFrom(const AdminRemoveGameMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -8534,34 +9783,38 @@ class AdminRemoveGameMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 removeGameId = 1; inline bool has_removegameid() const; inline void clear_removegameid(); static const int kRemoveGameIdFieldNumber = 1; inline ::google::protobuf::uint32 removegameid() const; inline void set_removegameid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:AdminRemoveGameMessage) private: inline void set_has_removegameid(); inline void clear_has_removegameid(); - + ::google::protobuf::uint32 removegameid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AdminRemoveGameMessage* default_instance_; }; @@ -8571,27 +9824,37 @@ class AdminRemoveGameAckMessage : public ::google::protobuf::MessageLite { public: AdminRemoveGameAckMessage(); virtual ~AdminRemoveGameAckMessage(); - + AdminRemoveGameAckMessage(const AdminRemoveGameAckMessage& from); - + inline AdminRemoveGameAckMessage& operator=(const AdminRemoveGameAckMessage& from) { CopyFrom(from); return *this; } - + static const AdminRemoveGameAckMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AdminRemoveGameAckMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AdminRemoveGameAckMessage* other); - + // implements Message ---------------------------------------------- - + AdminRemoveGameAckMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AdminRemoveGameAckMessage& from); void MergeFrom(const AdminRemoveGameAckMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -8603,11 +9866,11 @@ class AdminRemoveGameAckMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef AdminRemoveGameAckMessage_AdminRemoveGameResult AdminRemoveGameResult; static const AdminRemoveGameResult gameRemoveAccepted = AdminRemoveGameAckMessage_AdminRemoveGameResult_gameRemoveAccepted; static const AdminRemoveGameResult gameRemoveInvalid = AdminRemoveGameAckMessage_AdminRemoveGameResult_gameRemoveInvalid; @@ -8620,40 +9883,44 @@ class AdminRemoveGameAckMessage : public ::google::protobuf::MessageLite { AdminRemoveGameAckMessage_AdminRemoveGameResult_AdminRemoveGameResult_MAX; static const int AdminRemoveGameResult_ARRAYSIZE = AdminRemoveGameAckMessage_AdminRemoveGameResult_AdminRemoveGameResult_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 removeGameId = 1; inline bool has_removegameid() const; inline void clear_removegameid(); static const int kRemoveGameIdFieldNumber = 1; inline ::google::protobuf::uint32 removegameid() const; inline void set_removegameid(::google::protobuf::uint32 value); - + // required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; inline bool has_removegameresult() const; inline void clear_removegameresult(); static const int kRemoveGameResultFieldNumber = 2; inline ::AdminRemoveGameAckMessage_AdminRemoveGameResult removegameresult() const; inline void set_removegameresult(::AdminRemoveGameAckMessage_AdminRemoveGameResult value); - + // @@protoc_insertion_point(class_scope:AdminRemoveGameAckMessage) private: inline void set_has_removegameid(); inline void clear_has_removegameid(); inline void set_has_removegameresult(); inline void clear_has_removegameresult(); - + ::google::protobuf::uint32 removegameid_; int removegameresult_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AdminRemoveGameAckMessage* default_instance_; }; @@ -8663,27 +9930,37 @@ class AdminBanPlayerMessage : public ::google::protobuf::MessageLite { public: AdminBanPlayerMessage(); virtual ~AdminBanPlayerMessage(); - + AdminBanPlayerMessage(const AdminBanPlayerMessage& from); - + inline AdminBanPlayerMessage& operator=(const AdminBanPlayerMessage& from) { CopyFrom(from); return *this; } - + static const AdminBanPlayerMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AdminBanPlayerMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AdminBanPlayerMessage* other); - + // implements Message ---------------------------------------------- - + AdminBanPlayerMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AdminBanPlayerMessage& from); void MergeFrom(const AdminBanPlayerMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -8695,34 +9972,38 @@ class AdminBanPlayerMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + // accessors ------------------------------------------------------- - + // required uint32 banPlayerId = 1; inline bool has_banplayerid() const; inline void clear_banplayerid(); static const int kBanPlayerIdFieldNumber = 1; inline ::google::protobuf::uint32 banplayerid() const; inline void set_banplayerid(::google::protobuf::uint32 value); - + // @@protoc_insertion_point(class_scope:AdminBanPlayerMessage) private: inline void set_has_banplayerid(); inline void clear_has_banplayerid(); - + ::google::protobuf::uint32 banplayerid_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AdminBanPlayerMessage* default_instance_; }; @@ -8732,27 +10013,37 @@ class AdminBanPlayerAckMessage : public ::google::protobuf::MessageLite { public: AdminBanPlayerAckMessage(); virtual ~AdminBanPlayerAckMessage(); - + AdminBanPlayerAckMessage(const AdminBanPlayerAckMessage& from); - + inline AdminBanPlayerAckMessage& operator=(const AdminBanPlayerAckMessage& from) { CopyFrom(from); return *this; } - + static const AdminBanPlayerAckMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const AdminBanPlayerAckMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(AdminBanPlayerAckMessage* other); - + // implements Message ---------------------------------------------- - + AdminBanPlayerAckMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const AdminBanPlayerAckMessage& from); void MergeFrom(const AdminBanPlayerAckMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -8764,11 +10055,11 @@ class AdminBanPlayerAckMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerResult; static const AdminBanPlayerResult banPlayerAccepted = AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerAccepted; static const AdminBanPlayerResult banPlayerPending = AdminBanPlayerAckMessage_AdminBanPlayerResult_banPlayerPending; @@ -8784,40 +10075,44 @@ class AdminBanPlayerAckMessage : public ::google::protobuf::MessageLite { AdminBanPlayerAckMessage_AdminBanPlayerResult_AdminBanPlayerResult_MAX; static const int AdminBanPlayerResult_ARRAYSIZE = AdminBanPlayerAckMessage_AdminBanPlayerResult_AdminBanPlayerResult_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required uint32 banPlayerId = 1; inline bool has_banplayerid() const; inline void clear_banplayerid(); static const int kBanPlayerIdFieldNumber = 1; inline ::google::protobuf::uint32 banplayerid() const; inline void set_banplayerid(::google::protobuf::uint32 value); - + // required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; inline bool has_banplayerresult() const; inline void clear_banplayerresult(); static const int kBanPlayerResultFieldNumber = 2; inline ::AdminBanPlayerAckMessage_AdminBanPlayerResult banplayerresult() const; inline void set_banplayerresult(::AdminBanPlayerAckMessage_AdminBanPlayerResult value); - + // @@protoc_insertion_point(class_scope:AdminBanPlayerAckMessage) private: inline void set_has_banplayerid(); inline void clear_has_banplayerid(); inline void set_has_banplayerresult(); inline void clear_has_banplayerresult(); - + ::google::protobuf::uint32 banplayerid_; int banplayerresult_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static AdminBanPlayerAckMessage* default_instance_; }; @@ -8827,27 +10122,37 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { public: PokerTHMessage(); virtual ~PokerTHMessage(); - + PokerTHMessage(const PokerTHMessage& from); - + inline PokerTHMessage& operator=(const PokerTHMessage& from) { CopyFrom(from); return *this; } - + static const PokerTHMessage& default_instance(); - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const PokerTHMessage* internal_default_instance() { + return default_instance_; + } + #endif + void Swap(PokerTHMessage* other); - + // implements Message ---------------------------------------------- - + PokerTHMessage* New() const; void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); void CopyFrom(const PokerTHMessage& from); void MergeFrom(const PokerTHMessage& from); void Clear(); bool IsInitialized() const; - + int ByteSize() const; bool MergePartialFromCodedStream( ::google::protobuf::io::CodedInputStream* input); @@ -8859,11 +10164,11 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { void SharedDtor(); void SetCachedSize(int size) const; public: - + ::std::string GetTypeName() const; - + // nested types ---------------------------------------------------- - + typedef PokerTHMessage_PokerTHMessageType PokerTHMessageType; static const PokerTHMessageType Type_AnnounceMessage = PokerTHMessage_PokerTHMessageType_Type_AnnounceMessage; static const PokerTHMessageType Type_InitMessage = PokerTHMessage_PokerTHMessageType_Type_InitMessage; @@ -8955,16 +10260,16 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { PokerTHMessage_PokerTHMessageType_PokerTHMessageType_MAX; static const int PokerTHMessageType_ARRAYSIZE = PokerTHMessage_PokerTHMessageType_PokerTHMessageType_ARRAYSIZE; - + // accessors ------------------------------------------------------- - + // required .PokerTHMessage.PokerTHMessageType messageType = 1; inline bool has_messagetype() const; inline void clear_messagetype(); static const int kMessageTypeFieldNumber = 1; inline ::PokerTHMessage_PokerTHMessageType messagetype() const; inline void set_messagetype(::PokerTHMessage_PokerTHMessageType value); - + // optional .AnnounceMessage announceMessage = 2; inline bool has_announcemessage() const; inline void clear_announcemessage(); @@ -8972,7 +10277,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AnnounceMessage& announcemessage() const; inline ::AnnounceMessage* mutable_announcemessage(); inline ::AnnounceMessage* release_announcemessage(); - + inline void set_allocated_announcemessage(::AnnounceMessage* announcemessage); + // optional .InitMessage initMessage = 3; inline bool has_initmessage() const; inline void clear_initmessage(); @@ -8980,7 +10286,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::InitMessage& initmessage() const; inline ::InitMessage* mutable_initmessage(); inline ::InitMessage* release_initmessage(); - + inline void set_allocated_initmessage(::InitMessage* initmessage); + // optional .AuthServerChallengeMessage authServerChallengeMessage = 4; inline bool has_authserverchallengemessage() const; inline void clear_authserverchallengemessage(); @@ -8988,7 +10295,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AuthServerChallengeMessage& authserverchallengemessage() const; inline ::AuthServerChallengeMessage* mutable_authserverchallengemessage(); inline ::AuthServerChallengeMessage* release_authserverchallengemessage(); - + inline void set_allocated_authserverchallengemessage(::AuthServerChallengeMessage* authserverchallengemessage); + // optional .AuthClientResponseMessage authClientResponseMessage = 5; inline bool has_authclientresponsemessage() const; inline void clear_authclientresponsemessage(); @@ -8996,7 +10304,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AuthClientResponseMessage& authclientresponsemessage() const; inline ::AuthClientResponseMessage* mutable_authclientresponsemessage(); inline ::AuthClientResponseMessage* release_authclientresponsemessage(); - + inline void set_allocated_authclientresponsemessage(::AuthClientResponseMessage* authclientresponsemessage); + // optional .AuthServerVerificationMessage authServerVerificationMessage = 6; inline bool has_authserververificationmessage() const; inline void clear_authserververificationmessage(); @@ -9004,7 +10313,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AuthServerVerificationMessage& authserververificationmessage() const; inline ::AuthServerVerificationMessage* mutable_authserververificationmessage(); inline ::AuthServerVerificationMessage* release_authserververificationmessage(); - + inline void set_allocated_authserververificationmessage(::AuthServerVerificationMessage* authserververificationmessage); + // optional .InitAckMessage initAckMessage = 7; inline bool has_initackmessage() const; inline void clear_initackmessage(); @@ -9012,7 +10322,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::InitAckMessage& initackmessage() const; inline ::InitAckMessage* mutable_initackmessage(); inline ::InitAckMessage* release_initackmessage(); - + inline void set_allocated_initackmessage(::InitAckMessage* initackmessage); + // optional .AvatarRequestMessage avatarRequestMessage = 8; inline bool has_avatarrequestmessage() const; inline void clear_avatarrequestmessage(); @@ -9020,7 +10331,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AvatarRequestMessage& avatarrequestmessage() const; inline ::AvatarRequestMessage* mutable_avatarrequestmessage(); inline ::AvatarRequestMessage* release_avatarrequestmessage(); - + inline void set_allocated_avatarrequestmessage(::AvatarRequestMessage* avatarrequestmessage); + // optional .AvatarHeaderMessage avatarHeaderMessage = 9; inline bool has_avatarheadermessage() const; inline void clear_avatarheadermessage(); @@ -9028,7 +10340,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AvatarHeaderMessage& avatarheadermessage() const; inline ::AvatarHeaderMessage* mutable_avatarheadermessage(); inline ::AvatarHeaderMessage* release_avatarheadermessage(); - + inline void set_allocated_avatarheadermessage(::AvatarHeaderMessage* avatarheadermessage); + // optional .AvatarDataMessage avatarDataMessage = 10; inline bool has_avatardatamessage() const; inline void clear_avatardatamessage(); @@ -9036,7 +10349,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AvatarDataMessage& avatardatamessage() const; inline ::AvatarDataMessage* mutable_avatardatamessage(); inline ::AvatarDataMessage* release_avatardatamessage(); - + inline void set_allocated_avatardatamessage(::AvatarDataMessage* avatardatamessage); + // optional .AvatarEndMessage avatarEndMessage = 11; inline bool has_avatarendmessage() const; inline void clear_avatarendmessage(); @@ -9044,7 +10358,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AvatarEndMessage& avatarendmessage() const; inline ::AvatarEndMessage* mutable_avatarendmessage(); inline ::AvatarEndMessage* release_avatarendmessage(); - + inline void set_allocated_avatarendmessage(::AvatarEndMessage* avatarendmessage); + // optional .UnknownAvatarMessage unknownAvatarMessage = 12; inline bool has_unknownavatarmessage() const; inline void clear_unknownavatarmessage(); @@ -9052,7 +10367,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::UnknownAvatarMessage& unknownavatarmessage() const; inline ::UnknownAvatarMessage* mutable_unknownavatarmessage(); inline ::UnknownAvatarMessage* release_unknownavatarmessage(); - + inline void set_allocated_unknownavatarmessage(::UnknownAvatarMessage* unknownavatarmessage); + // optional .PlayerListMessage playerListMessage = 13; inline bool has_playerlistmessage() const; inline void clear_playerlistmessage(); @@ -9060,7 +10376,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::PlayerListMessage& playerlistmessage() const; inline ::PlayerListMessage* mutable_playerlistmessage(); inline ::PlayerListMessage* release_playerlistmessage(); - + inline void set_allocated_playerlistmessage(::PlayerListMessage* playerlistmessage); + // optional .GameListNewMessage gameListNewMessage = 14; inline bool has_gamelistnewmessage() const; inline void clear_gamelistnewmessage(); @@ -9068,7 +10385,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GameListNewMessage& gamelistnewmessage() const; inline ::GameListNewMessage* mutable_gamelistnewmessage(); inline ::GameListNewMessage* release_gamelistnewmessage(); - + inline void set_allocated_gamelistnewmessage(::GameListNewMessage* gamelistnewmessage); + // optional .GameListUpdateMessage gameListUpdateMessage = 15; inline bool has_gamelistupdatemessage() const; inline void clear_gamelistupdatemessage(); @@ -9076,7 +10394,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GameListUpdateMessage& gamelistupdatemessage() const; inline ::GameListUpdateMessage* mutable_gamelistupdatemessage(); inline ::GameListUpdateMessage* release_gamelistupdatemessage(); - + inline void set_allocated_gamelistupdatemessage(::GameListUpdateMessage* gamelistupdatemessage); + // optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; inline bool has_gamelistplayerjoinedmessage() const; inline void clear_gamelistplayerjoinedmessage(); @@ -9084,7 +10403,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GameListPlayerJoinedMessage& gamelistplayerjoinedmessage() const; inline ::GameListPlayerJoinedMessage* mutable_gamelistplayerjoinedmessage(); inline ::GameListPlayerJoinedMessage* release_gamelistplayerjoinedmessage(); - + inline void set_allocated_gamelistplayerjoinedmessage(::GameListPlayerJoinedMessage* gamelistplayerjoinedmessage); + // optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; inline bool has_gamelistplayerleftmessage() const; inline void clear_gamelistplayerleftmessage(); @@ -9092,7 +10412,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GameListPlayerLeftMessage& gamelistplayerleftmessage() const; inline ::GameListPlayerLeftMessage* mutable_gamelistplayerleftmessage(); inline ::GameListPlayerLeftMessage* release_gamelistplayerleftmessage(); - + inline void set_allocated_gamelistplayerleftmessage(::GameListPlayerLeftMessage* gamelistplayerleftmessage); + // optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; inline bool has_gamelistadminchangedmessage() const; inline void clear_gamelistadminchangedmessage(); @@ -9100,7 +10421,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GameListAdminChangedMessage& gamelistadminchangedmessage() const; inline ::GameListAdminChangedMessage* mutable_gamelistadminchangedmessage(); inline ::GameListAdminChangedMessage* release_gamelistadminchangedmessage(); - + inline void set_allocated_gamelistadminchangedmessage(::GameListAdminChangedMessage* gamelistadminchangedmessage); + // optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; inline bool has_playerinforequestmessage() const; inline void clear_playerinforequestmessage(); @@ -9108,7 +10430,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::PlayerInfoRequestMessage& playerinforequestmessage() const; inline ::PlayerInfoRequestMessage* mutable_playerinforequestmessage(); inline ::PlayerInfoRequestMessage* release_playerinforequestmessage(); - + inline void set_allocated_playerinforequestmessage(::PlayerInfoRequestMessage* playerinforequestmessage); + // optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; inline bool has_playerinforeplymessage() const; inline void clear_playerinforeplymessage(); @@ -9116,7 +10439,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::PlayerInfoReplyMessage& playerinforeplymessage() const; inline ::PlayerInfoReplyMessage* mutable_playerinforeplymessage(); inline ::PlayerInfoReplyMessage* release_playerinforeplymessage(); - + inline void set_allocated_playerinforeplymessage(::PlayerInfoReplyMessage* playerinforeplymessage); + // optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; inline bool has_subscriptionrequestmessage() const; inline void clear_subscriptionrequestmessage(); @@ -9124,7 +10448,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::SubscriptionRequestMessage& subscriptionrequestmessage() const; inline ::SubscriptionRequestMessage* mutable_subscriptionrequestmessage(); inline ::SubscriptionRequestMessage* release_subscriptionrequestmessage(); - + inline void set_allocated_subscriptionrequestmessage(::SubscriptionRequestMessage* subscriptionrequestmessage); + // optional .JoinExistingGameMessage joinExistingGameMessage = 22; inline bool has_joinexistinggamemessage() const; inline void clear_joinexistinggamemessage(); @@ -9132,7 +10457,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::JoinExistingGameMessage& joinexistinggamemessage() const; inline ::JoinExistingGameMessage* mutable_joinexistinggamemessage(); inline ::JoinExistingGameMessage* release_joinexistinggamemessage(); - + inline void set_allocated_joinexistinggamemessage(::JoinExistingGameMessage* joinexistinggamemessage); + // optional .JoinNewGameMessage joinNewGameMessage = 23; inline bool has_joinnewgamemessage() const; inline void clear_joinnewgamemessage(); @@ -9140,7 +10466,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::JoinNewGameMessage& joinnewgamemessage() const; inline ::JoinNewGameMessage* mutable_joinnewgamemessage(); inline ::JoinNewGameMessage* release_joinnewgamemessage(); - + inline void set_allocated_joinnewgamemessage(::JoinNewGameMessage* joinnewgamemessage); + // optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; inline bool has_rejoinexistinggamemessage() const; inline void clear_rejoinexistinggamemessage(); @@ -9148,7 +10475,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::RejoinExistingGameMessage& rejoinexistinggamemessage() const; inline ::RejoinExistingGameMessage* mutable_rejoinexistinggamemessage(); inline ::RejoinExistingGameMessage* release_rejoinexistinggamemessage(); - + inline void set_allocated_rejoinexistinggamemessage(::RejoinExistingGameMessage* rejoinexistinggamemessage); + // optional .JoinGameAckMessage joinGameAckMessage = 25; inline bool has_joingameackmessage() const; inline void clear_joingameackmessage(); @@ -9156,7 +10484,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::JoinGameAckMessage& joingameackmessage() const; inline ::JoinGameAckMessage* mutable_joingameackmessage(); inline ::JoinGameAckMessage* release_joingameackmessage(); - + inline void set_allocated_joingameackmessage(::JoinGameAckMessage* joingameackmessage); + // optional .JoinGameFailedMessage joinGameFailedMessage = 26; inline bool has_joingamefailedmessage() const; inline void clear_joingamefailedmessage(); @@ -9164,7 +10493,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::JoinGameFailedMessage& joingamefailedmessage() const; inline ::JoinGameFailedMessage* mutable_joingamefailedmessage(); inline ::JoinGameFailedMessage* release_joingamefailedmessage(); - + inline void set_allocated_joingamefailedmessage(::JoinGameFailedMessage* joingamefailedmessage); + // optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; inline bool has_gameplayerjoinedmessage() const; inline void clear_gameplayerjoinedmessage(); @@ -9172,7 +10502,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GamePlayerJoinedMessage& gameplayerjoinedmessage() const; inline ::GamePlayerJoinedMessage* mutable_gameplayerjoinedmessage(); inline ::GamePlayerJoinedMessage* release_gameplayerjoinedmessage(); - + inline void set_allocated_gameplayerjoinedmessage(::GamePlayerJoinedMessage* gameplayerjoinedmessage); + // optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; inline bool has_gameplayerleftmessage() const; inline void clear_gameplayerleftmessage(); @@ -9180,7 +10511,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GamePlayerLeftMessage& gameplayerleftmessage() const; inline ::GamePlayerLeftMessage* mutable_gameplayerleftmessage(); inline ::GamePlayerLeftMessage* release_gameplayerleftmessage(); - + inline void set_allocated_gameplayerleftmessage(::GamePlayerLeftMessage* gameplayerleftmessage); + // optional .GameAdminChangedMessage gameAdminChangedMessage = 29; inline bool has_gameadminchangedmessage() const; inline void clear_gameadminchangedmessage(); @@ -9188,7 +10520,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GameAdminChangedMessage& gameadminchangedmessage() const; inline ::GameAdminChangedMessage* mutable_gameadminchangedmessage(); inline ::GameAdminChangedMessage* release_gameadminchangedmessage(); - + inline void set_allocated_gameadminchangedmessage(::GameAdminChangedMessage* gameadminchangedmessage); + // optional .RemovedFromGameMessage removedFromGameMessage = 30; inline bool has_removedfromgamemessage() const; inline void clear_removedfromgamemessage(); @@ -9196,7 +10529,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::RemovedFromGameMessage& removedfromgamemessage() const; inline ::RemovedFromGameMessage* mutable_removedfromgamemessage(); inline ::RemovedFromGameMessage* release_removedfromgamemessage(); - + inline void set_allocated_removedfromgamemessage(::RemovedFromGameMessage* removedfromgamemessage); + // optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; inline bool has_kickplayerrequestmessage() const; inline void clear_kickplayerrequestmessage(); @@ -9204,7 +10538,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::KickPlayerRequestMessage& kickplayerrequestmessage() const; inline ::KickPlayerRequestMessage* mutable_kickplayerrequestmessage(); inline ::KickPlayerRequestMessage* release_kickplayerrequestmessage(); - + inline void set_allocated_kickplayerrequestmessage(::KickPlayerRequestMessage* kickplayerrequestmessage); + // optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; inline bool has_leavegamerequestmessage() const; inline void clear_leavegamerequestmessage(); @@ -9212,7 +10547,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::LeaveGameRequestMessage& leavegamerequestmessage() const; inline ::LeaveGameRequestMessage* mutable_leavegamerequestmessage(); inline ::LeaveGameRequestMessage* release_leavegamerequestmessage(); - + inline void set_allocated_leavegamerequestmessage(::LeaveGameRequestMessage* leavegamerequestmessage); + // optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; inline bool has_inviteplayertogamemessage() const; inline void clear_inviteplayertogamemessage(); @@ -9220,7 +10556,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::InvitePlayerToGameMessage& inviteplayertogamemessage() const; inline ::InvitePlayerToGameMessage* mutable_inviteplayertogamemessage(); inline ::InvitePlayerToGameMessage* release_inviteplayertogamemessage(); - + inline void set_allocated_inviteplayertogamemessage(::InvitePlayerToGameMessage* inviteplayertogamemessage); + // optional .InviteNotifyMessage inviteNotifyMessage = 34; inline bool has_invitenotifymessage() const; inline void clear_invitenotifymessage(); @@ -9228,7 +10565,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::InviteNotifyMessage& invitenotifymessage() const; inline ::InviteNotifyMessage* mutable_invitenotifymessage(); inline ::InviteNotifyMessage* release_invitenotifymessage(); - + inline void set_allocated_invitenotifymessage(::InviteNotifyMessage* invitenotifymessage); + // optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; inline bool has_rejectgameinvitationmessage() const; inline void clear_rejectgameinvitationmessage(); @@ -9236,7 +10574,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::RejectGameInvitationMessage& rejectgameinvitationmessage() const; inline ::RejectGameInvitationMessage* mutable_rejectgameinvitationmessage(); inline ::RejectGameInvitationMessage* release_rejectgameinvitationmessage(); - + inline void set_allocated_rejectgameinvitationmessage(::RejectGameInvitationMessage* rejectgameinvitationmessage); + // optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; inline bool has_rejectinvnotifymessage() const; inline void clear_rejectinvnotifymessage(); @@ -9244,7 +10583,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::RejectInvNotifyMessage& rejectinvnotifymessage() const; inline ::RejectInvNotifyMessage* mutable_rejectinvnotifymessage(); inline ::RejectInvNotifyMessage* release_rejectinvnotifymessage(); - + inline void set_allocated_rejectinvnotifymessage(::RejectInvNotifyMessage* rejectinvnotifymessage); + // optional .StartEventMessage startEventMessage = 37; inline bool has_starteventmessage() const; inline void clear_starteventmessage(); @@ -9252,7 +10592,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::StartEventMessage& starteventmessage() const; inline ::StartEventMessage* mutable_starteventmessage(); inline ::StartEventMessage* release_starteventmessage(); - + inline void set_allocated_starteventmessage(::StartEventMessage* starteventmessage); + // optional .StartEventAckMessage startEventAckMessage = 38; inline bool has_starteventackmessage() const; inline void clear_starteventackmessage(); @@ -9260,7 +10601,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::StartEventAckMessage& starteventackmessage() const; inline ::StartEventAckMessage* mutable_starteventackmessage(); inline ::StartEventAckMessage* release_starteventackmessage(); - + inline void set_allocated_starteventackmessage(::StartEventAckMessage* starteventackmessage); + // optional .GameStartInitialMessage gameStartInitialMessage = 39; inline bool has_gamestartinitialmessage() const; inline void clear_gamestartinitialmessage(); @@ -9268,7 +10610,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GameStartInitialMessage& gamestartinitialmessage() const; inline ::GameStartInitialMessage* mutable_gamestartinitialmessage(); inline ::GameStartInitialMessage* release_gamestartinitialmessage(); - + inline void set_allocated_gamestartinitialmessage(::GameStartInitialMessage* gamestartinitialmessage); + // optional .GameStartRejoinMessage gameStartRejoinMessage = 40; inline bool has_gamestartrejoinmessage() const; inline void clear_gamestartrejoinmessage(); @@ -9276,7 +10619,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GameStartRejoinMessage& gamestartrejoinmessage() const; inline ::GameStartRejoinMessage* mutable_gamestartrejoinmessage(); inline ::GameStartRejoinMessage* release_gamestartrejoinmessage(); - + inline void set_allocated_gamestartrejoinmessage(::GameStartRejoinMessage* gamestartrejoinmessage); + // optional .HandStartMessage handStartMessage = 41; inline bool has_handstartmessage() const; inline void clear_handstartmessage(); @@ -9284,7 +10628,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::HandStartMessage& handstartmessage() const; inline ::HandStartMessage* mutable_handstartmessage(); inline ::HandStartMessage* release_handstartmessage(); - + inline void set_allocated_handstartmessage(::HandStartMessage* handstartmessage); + // optional .PlayersTurnMessage playersTurnMessage = 42; inline bool has_playersturnmessage() const; inline void clear_playersturnmessage(); @@ -9292,7 +10637,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::PlayersTurnMessage& playersturnmessage() const; inline ::PlayersTurnMessage* mutable_playersturnmessage(); inline ::PlayersTurnMessage* release_playersturnmessage(); - + inline void set_allocated_playersturnmessage(::PlayersTurnMessage* playersturnmessage); + // optional .MyActionRequestMessage myActionRequestMessage = 43; inline bool has_myactionrequestmessage() const; inline void clear_myactionrequestmessage(); @@ -9300,7 +10646,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::MyActionRequestMessage& myactionrequestmessage() const; inline ::MyActionRequestMessage* mutable_myactionrequestmessage(); inline ::MyActionRequestMessage* release_myactionrequestmessage(); - + inline void set_allocated_myactionrequestmessage(::MyActionRequestMessage* myactionrequestmessage); + // optional .YourActionRejectedMessage yourActionRejectedMessage = 44; inline bool has_youractionrejectedmessage() const; inline void clear_youractionrejectedmessage(); @@ -9308,7 +10655,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::YourActionRejectedMessage& youractionrejectedmessage() const; inline ::YourActionRejectedMessage* mutable_youractionrejectedmessage(); inline ::YourActionRejectedMessage* release_youractionrejectedmessage(); - + inline void set_allocated_youractionrejectedmessage(::YourActionRejectedMessage* youractionrejectedmessage); + // optional .PlayersActionDoneMessage playersActionDoneMessage = 45; inline bool has_playersactiondonemessage() const; inline void clear_playersactiondonemessage(); @@ -9316,7 +10664,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::PlayersActionDoneMessage& playersactiondonemessage() const; inline ::PlayersActionDoneMessage* mutable_playersactiondonemessage(); inline ::PlayersActionDoneMessage* release_playersactiondonemessage(); - + inline void set_allocated_playersactiondonemessage(::PlayersActionDoneMessage* playersactiondonemessage); + // optional .DealFlopCardsMessage dealFlopCardsMessage = 46; inline bool has_dealflopcardsmessage() const; inline void clear_dealflopcardsmessage(); @@ -9324,7 +10673,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::DealFlopCardsMessage& dealflopcardsmessage() const; inline ::DealFlopCardsMessage* mutable_dealflopcardsmessage(); inline ::DealFlopCardsMessage* release_dealflopcardsmessage(); - + inline void set_allocated_dealflopcardsmessage(::DealFlopCardsMessage* dealflopcardsmessage); + // optional .DealTurnCardMessage dealTurnCardMessage = 47; inline bool has_dealturncardmessage() const; inline void clear_dealturncardmessage(); @@ -9332,7 +10682,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::DealTurnCardMessage& dealturncardmessage() const; inline ::DealTurnCardMessage* mutable_dealturncardmessage(); inline ::DealTurnCardMessage* release_dealturncardmessage(); - + inline void set_allocated_dealturncardmessage(::DealTurnCardMessage* dealturncardmessage); + // optional .DealRiverCardMessage dealRiverCardMessage = 48; inline bool has_dealrivercardmessage() const; inline void clear_dealrivercardmessage(); @@ -9340,7 +10691,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::DealRiverCardMessage& dealrivercardmessage() const; inline ::DealRiverCardMessage* mutable_dealrivercardmessage(); inline ::DealRiverCardMessage* release_dealrivercardmessage(); - + inline void set_allocated_dealrivercardmessage(::DealRiverCardMessage* dealrivercardmessage); + // optional .AllInShowCardsMessage allInShowCardsMessage = 49; inline bool has_allinshowcardsmessage() const; inline void clear_allinshowcardsmessage(); @@ -9348,7 +10700,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AllInShowCardsMessage& allinshowcardsmessage() const; inline ::AllInShowCardsMessage* mutable_allinshowcardsmessage(); inline ::AllInShowCardsMessage* release_allinshowcardsmessage(); - + inline void set_allocated_allinshowcardsmessage(::AllInShowCardsMessage* allinshowcardsmessage); + // optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; inline bool has_endofhandshowcardsmessage() const; inline void clear_endofhandshowcardsmessage(); @@ -9356,7 +10709,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::EndOfHandShowCardsMessage& endofhandshowcardsmessage() const; inline ::EndOfHandShowCardsMessage* mutable_endofhandshowcardsmessage(); inline ::EndOfHandShowCardsMessage* release_endofhandshowcardsmessage(); - + inline void set_allocated_endofhandshowcardsmessage(::EndOfHandShowCardsMessage* endofhandshowcardsmessage); + // optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; inline bool has_endofhandhidecardsmessage() const; inline void clear_endofhandhidecardsmessage(); @@ -9364,7 +10718,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::EndOfHandHideCardsMessage& endofhandhidecardsmessage() const; inline ::EndOfHandHideCardsMessage* mutable_endofhandhidecardsmessage(); inline ::EndOfHandHideCardsMessage* release_endofhandhidecardsmessage(); - + inline void set_allocated_endofhandhidecardsmessage(::EndOfHandHideCardsMessage* endofhandhidecardsmessage); + // optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; inline bool has_showmycardsrequestmessage() const; inline void clear_showmycardsrequestmessage(); @@ -9372,7 +10727,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::ShowMyCardsRequestMessage& showmycardsrequestmessage() const; inline ::ShowMyCardsRequestMessage* mutable_showmycardsrequestmessage(); inline ::ShowMyCardsRequestMessage* release_showmycardsrequestmessage(); - + inline void set_allocated_showmycardsrequestmessage(::ShowMyCardsRequestMessage* showmycardsrequestmessage); + // optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; inline bool has_afterhandshowcardsmessage() const; inline void clear_afterhandshowcardsmessage(); @@ -9380,7 +10736,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AfterHandShowCardsMessage& afterhandshowcardsmessage() const; inline ::AfterHandShowCardsMessage* mutable_afterhandshowcardsmessage(); inline ::AfterHandShowCardsMessage* release_afterhandshowcardsmessage(); - + inline void set_allocated_afterhandshowcardsmessage(::AfterHandShowCardsMessage* afterhandshowcardsmessage); + // optional .EndOfGameMessage endOfGameMessage = 54; inline bool has_endofgamemessage() const; inline void clear_endofgamemessage(); @@ -9388,7 +10745,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::EndOfGameMessage& endofgamemessage() const; inline ::EndOfGameMessage* mutable_endofgamemessage(); inline ::EndOfGameMessage* release_endofgamemessage(); - + inline void set_allocated_endofgamemessage(::EndOfGameMessage* endofgamemessage); + // optional .PlayerIdChangedMessage playerIdChangedMessage = 55; inline bool has_playeridchangedmessage() const; inline void clear_playeridchangedmessage(); @@ -9396,7 +10754,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::PlayerIdChangedMessage& playeridchangedmessage() const; inline ::PlayerIdChangedMessage* mutable_playeridchangedmessage(); inline ::PlayerIdChangedMessage* release_playeridchangedmessage(); - + inline void set_allocated_playeridchangedmessage(::PlayerIdChangedMessage* playeridchangedmessage); + // optional .AskKickPlayerMessage askKickPlayerMessage = 56; inline bool has_askkickplayermessage() const; inline void clear_askkickplayermessage(); @@ -9404,7 +10763,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AskKickPlayerMessage& askkickplayermessage() const; inline ::AskKickPlayerMessage* mutable_askkickplayermessage(); inline ::AskKickPlayerMessage* release_askkickplayermessage(); - + inline void set_allocated_askkickplayermessage(::AskKickPlayerMessage* askkickplayermessage); + // optional .AskKickDeniedMessage askKickDeniedMessage = 57; inline bool has_askkickdeniedmessage() const; inline void clear_askkickdeniedmessage(); @@ -9412,7 +10772,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AskKickDeniedMessage& askkickdeniedmessage() const; inline ::AskKickDeniedMessage* mutable_askkickdeniedmessage(); inline ::AskKickDeniedMessage* release_askkickdeniedmessage(); - + inline void set_allocated_askkickdeniedmessage(::AskKickDeniedMessage* askkickdeniedmessage); + // optional .StartKickPetitionMessage startKickPetitionMessage = 58; inline bool has_startkickpetitionmessage() const; inline void clear_startkickpetitionmessage(); @@ -9420,7 +10781,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::StartKickPetitionMessage& startkickpetitionmessage() const; inline ::StartKickPetitionMessage* mutable_startkickpetitionmessage(); inline ::StartKickPetitionMessage* release_startkickpetitionmessage(); - + inline void set_allocated_startkickpetitionmessage(::StartKickPetitionMessage* startkickpetitionmessage); + // optional .VoteKickRequestMessage voteKickRequestMessage = 59; inline bool has_votekickrequestmessage() const; inline void clear_votekickrequestmessage(); @@ -9428,7 +10790,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::VoteKickRequestMessage& votekickrequestmessage() const; inline ::VoteKickRequestMessage* mutable_votekickrequestmessage(); inline ::VoteKickRequestMessage* release_votekickrequestmessage(); - + inline void set_allocated_votekickrequestmessage(::VoteKickRequestMessage* votekickrequestmessage); + // optional .VoteKickReplyMessage voteKickReplyMessage = 60; inline bool has_votekickreplymessage() const; inline void clear_votekickreplymessage(); @@ -9436,7 +10799,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::VoteKickReplyMessage& votekickreplymessage() const; inline ::VoteKickReplyMessage* mutable_votekickreplymessage(); inline ::VoteKickReplyMessage* release_votekickreplymessage(); - + inline void set_allocated_votekickreplymessage(::VoteKickReplyMessage* votekickreplymessage); + // optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; inline bool has_kickpetitionupdatemessage() const; inline void clear_kickpetitionupdatemessage(); @@ -9444,7 +10808,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::KickPetitionUpdateMessage& kickpetitionupdatemessage() const; inline ::KickPetitionUpdateMessage* mutable_kickpetitionupdatemessage(); inline ::KickPetitionUpdateMessage* release_kickpetitionupdatemessage(); - + inline void set_allocated_kickpetitionupdatemessage(::KickPetitionUpdateMessage* kickpetitionupdatemessage); + // optional .EndKickPetitionMessage endKickPetitionMessage = 62; inline bool has_endkickpetitionmessage() const; inline void clear_endkickpetitionmessage(); @@ -9452,7 +10817,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::EndKickPetitionMessage& endkickpetitionmessage() const; inline ::EndKickPetitionMessage* mutable_endkickpetitionmessage(); inline ::EndKickPetitionMessage* release_endkickpetitionmessage(); - + inline void set_allocated_endkickpetitionmessage(::EndKickPetitionMessage* endkickpetitionmessage); + // optional .StatisticsMessage statisticsMessage = 63; inline bool has_statisticsmessage() const; inline void clear_statisticsmessage(); @@ -9460,7 +10826,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::StatisticsMessage& statisticsmessage() const; inline ::StatisticsMessage* mutable_statisticsmessage(); inline ::StatisticsMessage* release_statisticsmessage(); - + inline void set_allocated_statisticsmessage(::StatisticsMessage* statisticsmessage); + // optional .ChatRequestMessage chatRequestMessage = 64; inline bool has_chatrequestmessage() const; inline void clear_chatrequestmessage(); @@ -9468,7 +10835,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::ChatRequestMessage& chatrequestmessage() const; inline ::ChatRequestMessage* mutable_chatrequestmessage(); inline ::ChatRequestMessage* release_chatrequestmessage(); - + inline void set_allocated_chatrequestmessage(::ChatRequestMessage* chatrequestmessage); + // optional .ChatMessage chatMessage = 65; inline bool has_chatmessage() const; inline void clear_chatmessage(); @@ -9476,7 +10844,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::ChatMessage& chatmessage() const; inline ::ChatMessage* mutable_chatmessage(); inline ::ChatMessage* release_chatmessage(); - + inline void set_allocated_chatmessage(::ChatMessage* chatmessage); + // optional .ChatRejectMessage chatRejectMessage = 66; inline bool has_chatrejectmessage() const; inline void clear_chatrejectmessage(); @@ -9484,7 +10853,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::ChatRejectMessage& chatrejectmessage() const; inline ::ChatRejectMessage* mutable_chatrejectmessage(); inline ::ChatRejectMessage* release_chatrejectmessage(); - + inline void set_allocated_chatrejectmessage(::ChatRejectMessage* chatrejectmessage); + // optional .DialogMessage dialogMessage = 67; inline bool has_dialogmessage() const; inline void clear_dialogmessage(); @@ -9492,7 +10862,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::DialogMessage& dialogmessage() const; inline ::DialogMessage* mutable_dialogmessage(); inline ::DialogMessage* release_dialogmessage(); - + inline void set_allocated_dialogmessage(::DialogMessage* dialogmessage); + // optional .TimeoutWarningMessage timeoutWarningMessage = 68; inline bool has_timeoutwarningmessage() const; inline void clear_timeoutwarningmessage(); @@ -9500,7 +10871,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::TimeoutWarningMessage& timeoutwarningmessage() const; inline ::TimeoutWarningMessage* mutable_timeoutwarningmessage(); inline ::TimeoutWarningMessage* release_timeoutwarningmessage(); - + inline void set_allocated_timeoutwarningmessage(::TimeoutWarningMessage* timeoutwarningmessage); + // optional .ResetTimeoutMessage resetTimeoutMessage = 69; inline bool has_resettimeoutmessage() const; inline void clear_resettimeoutmessage(); @@ -9508,7 +10880,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::ResetTimeoutMessage& resettimeoutmessage() const; inline ::ResetTimeoutMessage* mutable_resettimeoutmessage(); inline ::ResetTimeoutMessage* release_resettimeoutmessage(); - + inline void set_allocated_resettimeoutmessage(::ResetTimeoutMessage* resettimeoutmessage); + // optional .ReportAvatarMessage reportAvatarMessage = 70; inline bool has_reportavatarmessage() const; inline void clear_reportavatarmessage(); @@ -9516,7 +10889,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::ReportAvatarMessage& reportavatarmessage() const; inline ::ReportAvatarMessage* mutable_reportavatarmessage(); inline ::ReportAvatarMessage* release_reportavatarmessage(); - + inline void set_allocated_reportavatarmessage(::ReportAvatarMessage* reportavatarmessage); + // optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; inline bool has_reportavatarackmessage() const; inline void clear_reportavatarackmessage(); @@ -9524,7 +10898,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::ReportAvatarAckMessage& reportavatarackmessage() const; inline ::ReportAvatarAckMessage* mutable_reportavatarackmessage(); inline ::ReportAvatarAckMessage* release_reportavatarackmessage(); - + inline void set_allocated_reportavatarackmessage(::ReportAvatarAckMessage* reportavatarackmessage); + // optional .ReportGameMessage reportGameMessage = 72; inline bool has_reportgamemessage() const; inline void clear_reportgamemessage(); @@ -9532,7 +10907,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::ReportGameMessage& reportgamemessage() const; inline ::ReportGameMessage* mutable_reportgamemessage(); inline ::ReportGameMessage* release_reportgamemessage(); - + inline void set_allocated_reportgamemessage(::ReportGameMessage* reportgamemessage); + // optional .ReportGameAckMessage reportGameAckMessage = 73; inline bool has_reportgameackmessage() const; inline void clear_reportgameackmessage(); @@ -9540,7 +10916,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::ReportGameAckMessage& reportgameackmessage() const; inline ::ReportGameAckMessage* mutable_reportgameackmessage(); inline ::ReportGameAckMessage* release_reportgameackmessage(); - + inline void set_allocated_reportgameackmessage(::ReportGameAckMessage* reportgameackmessage); + // optional .ErrorMessage errorMessage = 74; inline bool has_errormessage() const; inline void clear_errormessage(); @@ -9548,7 +10925,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::ErrorMessage& errormessage() const; inline ::ErrorMessage* mutable_errormessage(); inline ::ErrorMessage* release_errormessage(); - + inline void set_allocated_errormessage(::ErrorMessage* errormessage); + // optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; inline bool has_adminremovegamemessage() const; inline void clear_adminremovegamemessage(); @@ -9556,7 +10934,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AdminRemoveGameMessage& adminremovegamemessage() const; inline ::AdminRemoveGameMessage* mutable_adminremovegamemessage(); inline ::AdminRemoveGameMessage* release_adminremovegamemessage(); - + inline void set_allocated_adminremovegamemessage(::AdminRemoveGameMessage* adminremovegamemessage); + // optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; inline bool has_adminremovegameackmessage() const; inline void clear_adminremovegameackmessage(); @@ -9564,7 +10943,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AdminRemoveGameAckMessage& adminremovegameackmessage() const; inline ::AdminRemoveGameAckMessage* mutable_adminremovegameackmessage(); inline ::AdminRemoveGameAckMessage* release_adminremovegameackmessage(); - + inline void set_allocated_adminremovegameackmessage(::AdminRemoveGameAckMessage* adminremovegameackmessage); + // optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; inline bool has_adminbanplayermessage() const; inline void clear_adminbanplayermessage(); @@ -9572,7 +10952,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AdminBanPlayerMessage& adminbanplayermessage() const; inline ::AdminBanPlayerMessage* mutable_adminbanplayermessage(); inline ::AdminBanPlayerMessage* release_adminbanplayermessage(); - + inline void set_allocated_adminbanplayermessage(::AdminBanPlayerMessage* adminbanplayermessage); + // optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; inline bool has_adminbanplayerackmessage() const; inline void clear_adminbanplayerackmessage(); @@ -9580,7 +10961,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::AdminBanPlayerAckMessage& adminbanplayerackmessage() const; inline ::AdminBanPlayerAckMessage* mutable_adminbanplayerackmessage(); inline ::AdminBanPlayerAckMessage* release_adminbanplayerackmessage(); - + inline void set_allocated_adminbanplayerackmessage(::AdminBanPlayerAckMessage* adminbanplayerackmessage); + // optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; inline bool has_gamelistspectatorjoinedmessage() const; inline void clear_gamelistspectatorjoinedmessage(); @@ -9588,7 +10970,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GameListSpectatorJoinedMessage& gamelistspectatorjoinedmessage() const; inline ::GameListSpectatorJoinedMessage* mutable_gamelistspectatorjoinedmessage(); inline ::GameListSpectatorJoinedMessage* release_gamelistspectatorjoinedmessage(); - + inline void set_allocated_gamelistspectatorjoinedmessage(::GameListSpectatorJoinedMessage* gamelistspectatorjoinedmessage); + // optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; inline bool has_gamelistspectatorleftmessage() const; inline void clear_gamelistspectatorleftmessage(); @@ -9596,7 +10979,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GameListSpectatorLeftMessage& gamelistspectatorleftmessage() const; inline ::GameListSpectatorLeftMessage* mutable_gamelistspectatorleftmessage(); inline ::GameListSpectatorLeftMessage* release_gamelistspectatorleftmessage(); - + inline void set_allocated_gamelistspectatorleftmessage(::GameListSpectatorLeftMessage* gamelistspectatorleftmessage); + // optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; inline bool has_gamespectatorjoinedmessage() const; inline void clear_gamespectatorjoinedmessage(); @@ -9604,7 +10988,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GameSpectatorJoinedMessage& gamespectatorjoinedmessage() const; inline ::GameSpectatorJoinedMessage* mutable_gamespectatorjoinedmessage(); inline ::GameSpectatorJoinedMessage* release_gamespectatorjoinedmessage(); - + inline void set_allocated_gamespectatorjoinedmessage(::GameSpectatorJoinedMessage* gamespectatorjoinedmessage); + // optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; inline bool has_gamespectatorleftmessage() const; inline void clear_gamespectatorleftmessage(); @@ -9612,7 +10997,8 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline const ::GameSpectatorLeftMessage& gamespectatorleftmessage() const; inline ::GameSpectatorLeftMessage* mutable_gamespectatorleftmessage(); inline ::GameSpectatorLeftMessage* release_gamespectatorleftmessage(); - + inline void set_allocated_gamespectatorleftmessage(::GameSpectatorLeftMessage* gamespectatorleftmessage); + // @@protoc_insertion_point(class_scope:PokerTHMessage) private: inline void set_has_messagetype(); @@ -9779,7 +11165,7 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { inline void clear_has_gamespectatorjoinedmessage(); inline void set_has_gamespectatorleftmessage(); inline void clear_has_gamespectatorleftmessage(); - + ::AnnounceMessage* announcemessage_; ::InitMessage* initmessage_; ::AuthServerChallengeMessage* authserverchallengemessage_; @@ -9862,14 +11248,18 @@ class PokerTHMessage : public ::google::protobuf::MessageLite { ::GameSpectatorJoinedMessage* gamespectatorjoinedmessage_; ::GameSpectatorLeftMessage* gamespectatorleftmessage_; int messagetype_; - + mutable int _cached_size_; ::google::protobuf::uint32 _has_bits_[(82 + 31) / 32]; - + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_pokerth_2eproto_impl(); + #else friend void protobuf_AddDesc_pokerth_2eproto(); + #endif friend void protobuf_AssignDesc_pokerth_2eproto(); friend void protobuf_ShutdownFile_pokerth_2eproto(); - + void InitAsDefaultInstance(); static PokerTHMessage* default_instance_; }; @@ -9937,6 +11327,18 @@ inline ::std::string* NetGameInfo::release_gamename() { return temp; } } +inline void NetGameInfo::set_allocated_gamename(::std::string* gamename) { + if (gamename_ != &::google::protobuf::internal::kEmptyString) { + delete gamename_; + } + if (gamename) { + set_has_gamename(); + gamename_ = gamename; + } else { + clear_has_gamename(); + gamename_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required .NetGameInfo.NetGameType netGameType = 2; inline bool NetGameInfo::has_netgametype() const { @@ -9956,7 +11358,7 @@ inline ::NetGameInfo_NetGameType NetGameInfo::netgametype() const { return static_cast< ::NetGameInfo_NetGameType >(netgametype_); } inline void NetGameInfo::set_netgametype(::NetGameInfo_NetGameType value) { - GOOGLE_DCHECK(::NetGameInfo_NetGameType_IsValid(value)); + assert(::NetGameInfo_NetGameType_IsValid(value)); set_has_netgametype(); netgametype_ = value; } @@ -10001,7 +11403,7 @@ inline ::NetGameInfo_RaiseIntervalMode NetGameInfo::raiseintervalmode() const { return static_cast< ::NetGameInfo_RaiseIntervalMode >(raiseintervalmode_); } inline void NetGameInfo::set_raiseintervalmode(::NetGameInfo_RaiseIntervalMode value) { - GOOGLE_DCHECK(::NetGameInfo_RaiseIntervalMode_IsValid(value)); + assert(::NetGameInfo_RaiseIntervalMode_IsValid(value)); set_has_raiseintervalmode(); raiseintervalmode_ = value; } @@ -10068,7 +11470,7 @@ inline ::NetGameInfo_EndRaiseMode NetGameInfo::endraisemode() const { return static_cast< ::NetGameInfo_EndRaiseMode >(endraisemode_); } inline void NetGameInfo::set_endraisemode(::NetGameInfo_EndRaiseMode value) { - GOOGLE_DCHECK(::NetGameInfo_EndRaiseMode_IsValid(value)); + assert(::NetGameInfo_EndRaiseMode_IsValid(value)); set_has_endraisemode(); endraisemode_ = value; } @@ -10458,7 +11860,11 @@ inline void AnnounceMessage::clear_protocolversion() { clear_has_protocolversion(); } inline const ::AnnounceMessage_Version& AnnounceMessage::protocolversion() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return protocolversion_ != NULL ? *protocolversion_ : *default_instance().protocolversion_; +#else return protocolversion_ != NULL ? *protocolversion_ : *default_instance_->protocolversion_; +#endif } inline ::AnnounceMessage_Version* AnnounceMessage::mutable_protocolversion() { set_has_protocolversion(); @@ -10471,6 +11877,15 @@ inline ::AnnounceMessage_Version* AnnounceMessage::release_protocolversion() { protocolversion_ = NULL; return temp; } +inline void AnnounceMessage::set_allocated_protocolversion(::AnnounceMessage_Version* protocolversion) { + delete protocolversion_; + protocolversion_ = protocolversion; + if (protocolversion) { + set_has_protocolversion(); + } else { + clear_has_protocolversion(); + } +} // required .AnnounceMessage.Version latestGameVersion = 2; inline bool AnnounceMessage::has_latestgameversion() const { @@ -10487,7 +11902,11 @@ inline void AnnounceMessage::clear_latestgameversion() { clear_has_latestgameversion(); } inline const ::AnnounceMessage_Version& AnnounceMessage::latestgameversion() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return latestgameversion_ != NULL ? *latestgameversion_ : *default_instance().latestgameversion_; +#else return latestgameversion_ != NULL ? *latestgameversion_ : *default_instance_->latestgameversion_; +#endif } inline ::AnnounceMessage_Version* AnnounceMessage::mutable_latestgameversion() { set_has_latestgameversion(); @@ -10500,6 +11919,15 @@ inline ::AnnounceMessage_Version* AnnounceMessage::release_latestgameversion() { latestgameversion_ = NULL; return temp; } +inline void AnnounceMessage::set_allocated_latestgameversion(::AnnounceMessage_Version* latestgameversion) { + delete latestgameversion_; + latestgameversion_ = latestgameversion; + if (latestgameversion) { + set_has_latestgameversion(); + } else { + clear_has_latestgameversion(); + } +} // required uint32 latestBetaRevision = 3; inline bool AnnounceMessage::has_latestbetarevision() const { @@ -10541,7 +11969,7 @@ inline ::AnnounceMessage_ServerType AnnounceMessage::servertype() const { return static_cast< ::AnnounceMessage_ServerType >(servertype_); } inline void AnnounceMessage::set_servertype(::AnnounceMessage_ServerType value) { - GOOGLE_DCHECK(::AnnounceMessage_ServerType_IsValid(value)); + assert(::AnnounceMessage_ServerType_IsValid(value)); set_has_servertype(); servertype_ = value; } @@ -10587,7 +12015,11 @@ inline void InitMessage::clear_requestedversion() { clear_has_requestedversion(); } inline const ::AnnounceMessage_Version& InitMessage::requestedversion() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return requestedversion_ != NULL ? *requestedversion_ : *default_instance().requestedversion_; +#else return requestedversion_ != NULL ? *requestedversion_ : *default_instance_->requestedversion_; +#endif } inline ::AnnounceMessage_Version* InitMessage::mutable_requestedversion() { set_has_requestedversion(); @@ -10600,6 +12032,15 @@ inline ::AnnounceMessage_Version* InitMessage::release_requestedversion() { requestedversion_ = NULL; return temp; } +inline void InitMessage::set_allocated_requestedversion(::AnnounceMessage_Version* requestedversion) { + delete requestedversion_; + requestedversion_ = requestedversion; + if (requestedversion) { + set_has_requestedversion(); + } else { + clear_has_requestedversion(); + } +} // required uint32 buildId = 2; inline bool InitMessage::has_buildid() const { @@ -10680,6 +12121,18 @@ inline ::std::string* InitMessage::release_mylastsessionid() { return temp; } } +inline void InitMessage::set_allocated_mylastsessionid(::std::string* mylastsessionid) { + if (mylastsessionid_ != &::google::protobuf::internal::kEmptyString) { + delete mylastsessionid_; + } + if (mylastsessionid) { + set_has_mylastsessionid(); + mylastsessionid_ = mylastsessionid; + } else { + clear_has_mylastsessionid(); + mylastsessionid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional string authServerPassword = 4; inline bool InitMessage::has_authserverpassword() const { @@ -10738,6 +12191,18 @@ inline ::std::string* InitMessage::release_authserverpassword() { return temp; } } +inline void InitMessage::set_allocated_authserverpassword(::std::string* authserverpassword) { + if (authserverpassword_ != &::google::protobuf::internal::kEmptyString) { + delete authserverpassword_; + } + if (authserverpassword) { + set_has_authserverpassword(); + authserverpassword_ = authserverpassword; + } else { + clear_has_authserverpassword(); + authserverpassword_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required .InitMessage.LoginType login = 5; inline bool InitMessage::has_login() const { @@ -10757,7 +12222,7 @@ inline ::InitMessage_LoginType InitMessage::login() const { return static_cast< ::InitMessage_LoginType >(login_); } inline void InitMessage::set_login(::InitMessage_LoginType value) { - GOOGLE_DCHECK(::InitMessage_LoginType_IsValid(value)); + assert(::InitMessage_LoginType_IsValid(value)); set_has_login(); login_ = value; } @@ -10819,6 +12284,18 @@ inline ::std::string* InitMessage::release_nickname() { return temp; } } +inline void InitMessage::set_allocated_nickname(::std::string* nickname) { + if (nickname_ != &::google::protobuf::internal::kEmptyString) { + delete nickname_; + } + if (nickname) { + set_has_nickname(); + nickname_ = nickname; + } else { + clear_has_nickname(); + nickname_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional bytes clientUserData = 7; inline bool InitMessage::has_clientuserdata() const { @@ -10877,6 +12354,18 @@ inline ::std::string* InitMessage::release_clientuserdata() { return temp; } } +inline void InitMessage::set_allocated_clientuserdata(::std::string* clientuserdata) { + if (clientuserdata_ != &::google::protobuf::internal::kEmptyString) { + delete clientuserdata_; + } + if (clientuserdata) { + set_has_clientuserdata(); + clientuserdata_ = clientuserdata; + } else { + clear_has_clientuserdata(); + clientuserdata_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional bytes avatarHash = 8; inline bool InitMessage::has_avatarhash() const { @@ -10935,6 +12424,18 @@ inline ::std::string* InitMessage::release_avatarhash() { return temp; } } +inline void InitMessage::set_allocated_avatarhash(::std::string* avatarhash) { + if (avatarhash_ != &::google::protobuf::internal::kEmptyString) { + delete avatarhash_; + } + if (avatarhash) { + set_has_avatarhash(); + avatarhash_ = avatarhash; + } else { + clear_has_avatarhash(); + avatarhash_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -10997,6 +12498,18 @@ inline ::std::string* AuthServerChallengeMessage::release_serverchallenge() { return temp; } } +inline void AuthServerChallengeMessage::set_allocated_serverchallenge(::std::string* serverchallenge) { + if (serverchallenge_ != &::google::protobuf::internal::kEmptyString) { + delete serverchallenge_; + } + if (serverchallenge) { + set_has_serverchallenge(); + serverchallenge_ = serverchallenge; + } else { + clear_has_serverchallenge(); + serverchallenge_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -11059,6 +12572,18 @@ inline ::std::string* AuthClientResponseMessage::release_clientresponse() { return temp; } } +inline void AuthClientResponseMessage::set_allocated_clientresponse(::std::string* clientresponse) { + if (clientresponse_ != &::google::protobuf::internal::kEmptyString) { + delete clientresponse_; + } + if (clientresponse) { + set_has_clientresponse(); + clientresponse_ = clientresponse; + } else { + clear_has_clientresponse(); + clientresponse_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -11121,6 +12646,18 @@ inline ::std::string* AuthServerVerificationMessage::release_serververification( return temp; } } +inline void AuthServerVerificationMessage::set_allocated_serververification(::std::string* serververification) { + if (serververification_ != &::google::protobuf::internal::kEmptyString) { + delete serververification_; + } + if (serververification) { + set_has_serververification(); + serververification_ = serververification; + } else { + clear_has_serververification(); + serververification_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -11183,6 +12720,18 @@ inline ::std::string* InitAckMessage::release_yoursessionid() { return temp; } } +inline void InitAckMessage::set_allocated_yoursessionid(::std::string* yoursessionid) { + if (yoursessionid_ != &::google::protobuf::internal::kEmptyString) { + delete yoursessionid_; + } + if (yoursessionid) { + set_has_yoursessionid(); + yoursessionid_ = yoursessionid; + } else { + clear_has_yoursessionid(); + yoursessionid_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required uint32 yourPlayerId = 2; inline bool InitAckMessage::has_yourplayerid() const { @@ -11263,6 +12812,18 @@ inline ::std::string* InitAckMessage::release_youravatarhash() { return temp; } } +inline void InitAckMessage::set_allocated_youravatarhash(::std::string* youravatarhash) { + if (youravatarhash_ != &::google::protobuf::internal::kEmptyString) { + delete youravatarhash_; + } + if (youravatarhash) { + set_has_youravatarhash(); + youravatarhash_ = youravatarhash; + } else { + clear_has_youravatarhash(); + youravatarhash_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional uint32 rejoinGameId = 4; inline bool InitAckMessage::has_rejoingameid() const { @@ -11369,6 +12930,18 @@ inline ::std::string* AvatarRequestMessage::release_avatarhash() { return temp; } } +inline void AvatarRequestMessage::set_allocated_avatarhash(::std::string* avatarhash) { + if (avatarhash_ != &::google::protobuf::internal::kEmptyString) { + delete avatarhash_; + } + if (avatarhash) { + set_has_avatarhash(); + avatarhash_ = avatarhash; + } else { + clear_has_avatarhash(); + avatarhash_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -11410,11 +12983,11 @@ inline void AvatarHeaderMessage::clear_avatartype() { avatartype_ = 1; clear_has_avatartype(); } -inline NetAvatarType AvatarHeaderMessage::avatartype() const { - return static_cast< NetAvatarType >(avatartype_); +inline ::NetAvatarType AvatarHeaderMessage::avatartype() const { + return static_cast< ::NetAvatarType >(avatartype_); } -inline void AvatarHeaderMessage::set_avatartype(NetAvatarType value) { - GOOGLE_DCHECK(NetAvatarType_IsValid(value)); +inline void AvatarHeaderMessage::set_avatartype(::NetAvatarType value) { + assert(::NetAvatarType_IsValid(value)); set_has_avatartype(); avatartype_ = value; } @@ -11524,6 +13097,18 @@ inline ::std::string* AvatarDataMessage::release_avatarblock() { return temp; } } +inline void AvatarDataMessage::set_allocated_avatarblock(::std::string* avatarblock) { + if (avatarblock_ != &::google::protobuf::internal::kEmptyString) { + delete avatarblock_; + } + if (avatarblock) { + set_has_avatarblock(); + avatarblock_ = avatarblock; + } else { + clear_has_avatarblock(); + avatarblock_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -11621,7 +13206,7 @@ inline ::PlayerListMessage_PlayerListNotification PlayerListMessage::playerlistn return static_cast< ::PlayerListMessage_PlayerListNotification >(playerlistnotification_); } inline void PlayerListMessage::set_playerlistnotification(::PlayerListMessage_PlayerListNotification value) { - GOOGLE_DCHECK(::PlayerListMessage_PlayerListNotification_IsValid(value)); + assert(::PlayerListMessage_PlayerListNotification_IsValid(value)); set_has_playerlistnotification(); playerlistnotification_ = value; } @@ -11666,11 +13251,11 @@ inline void GameListNewMessage::clear_gamemode() { gamemode_ = 1; clear_has_gamemode(); } -inline NetGameMode GameListNewMessage::gamemode() const { - return static_cast< NetGameMode >(gamemode_); +inline ::NetGameMode GameListNewMessage::gamemode() const { + return static_cast< ::NetGameMode >(gamemode_); } -inline void GameListNewMessage::set_gamemode(NetGameMode value) { - GOOGLE_DCHECK(NetGameMode_IsValid(value)); +inline void GameListNewMessage::set_gamemode(::NetGameMode value) { + assert(::NetGameMode_IsValid(value)); set_has_gamemode(); gamemode_ = value; } @@ -11759,7 +13344,11 @@ inline void GameListNewMessage::clear_gameinfo() { clear_has_gameinfo(); } inline const ::NetGameInfo& GameListNewMessage::gameinfo() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gameinfo_ != NULL ? *gameinfo_ : *default_instance().gameinfo_; +#else return gameinfo_ != NULL ? *gameinfo_ : *default_instance_->gameinfo_; +#endif } inline ::NetGameInfo* GameListNewMessage::mutable_gameinfo() { set_has_gameinfo(); @@ -11772,6 +13361,15 @@ inline ::NetGameInfo* GameListNewMessage::release_gameinfo() { gameinfo_ = NULL; return temp; } +inline void GameListNewMessage::set_allocated_gameinfo(::NetGameInfo* gameinfo) { + delete gameinfo_; + gameinfo_ = gameinfo; + if (gameinfo) { + set_has_gameinfo(); + } else { + clear_has_gameinfo(); + } +} // ------------------------------------------------------------------- @@ -11813,11 +13411,11 @@ inline void GameListUpdateMessage::clear_gamemode() { gamemode_ = 1; clear_has_gamemode(); } -inline NetGameMode GameListUpdateMessage::gamemode() const { - return static_cast< NetGameMode >(gamemode_); +inline ::NetGameMode GameListUpdateMessage::gamemode() const { + return static_cast< ::NetGameMode >(gamemode_); } -inline void GameListUpdateMessage::set_gamemode(NetGameMode value) { - GOOGLE_DCHECK(NetGameMode_IsValid(value)); +inline void GameListUpdateMessage::set_gamemode(::NetGameMode value) { + assert(::NetGameMode_IsValid(value)); set_has_gamemode(); gamemode_ = value; } @@ -12109,11 +13707,11 @@ inline void PlayerInfoReplyMessage_PlayerInfoData_AvatarData::clear_avatartype() avatartype_ = 1; clear_has_avatartype(); } -inline NetAvatarType PlayerInfoReplyMessage_PlayerInfoData_AvatarData::avatartype() const { - return static_cast< NetAvatarType >(avatartype_); +inline ::NetAvatarType PlayerInfoReplyMessage_PlayerInfoData_AvatarData::avatartype() const { + return static_cast< ::NetAvatarType >(avatartype_); } -inline void PlayerInfoReplyMessage_PlayerInfoData_AvatarData::set_avatartype(NetAvatarType value) { - GOOGLE_DCHECK(NetAvatarType_IsValid(value)); +inline void PlayerInfoReplyMessage_PlayerInfoData_AvatarData::set_avatartype(::NetAvatarType value) { + assert(::NetAvatarType_IsValid(value)); set_has_avatartype(); avatartype_ = value; } @@ -12175,6 +13773,18 @@ inline ::std::string* PlayerInfoReplyMessage_PlayerInfoData_AvatarData::release_ return temp; } } +inline void PlayerInfoReplyMessage_PlayerInfoData_AvatarData::set_allocated_avatarhash(::std::string* avatarhash) { + if (avatarhash_ != &::google::protobuf::internal::kEmptyString) { + delete avatarhash_; + } + if (avatarhash) { + set_has_avatarhash(); + avatarhash_ = avatarhash; + } else { + clear_has_avatarhash(); + avatarhash_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -12237,6 +13847,18 @@ inline ::std::string* PlayerInfoReplyMessage_PlayerInfoData::release_playername( return temp; } } +inline void PlayerInfoReplyMessage_PlayerInfoData::set_allocated_playername(::std::string* playername) { + if (playername_ != &::google::protobuf::internal::kEmptyString) { + delete playername_; + } + if (playername) { + set_has_playername(); + playername_ = playername; + } else { + clear_has_playername(); + playername_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required bool isHuman = 2; inline bool PlayerInfoReplyMessage_PlayerInfoData::has_ishuman() const { @@ -12274,11 +13896,11 @@ inline void PlayerInfoReplyMessage_PlayerInfoData::clear_playerrights() { playerrights_ = 1; clear_has_playerrights(); } -inline NetPlayerInfoRights PlayerInfoReplyMessage_PlayerInfoData::playerrights() const { - return static_cast< NetPlayerInfoRights >(playerrights_); +inline ::NetPlayerInfoRights PlayerInfoReplyMessage_PlayerInfoData::playerrights() const { + return static_cast< ::NetPlayerInfoRights >(playerrights_); } -inline void PlayerInfoReplyMessage_PlayerInfoData::set_playerrights(NetPlayerInfoRights value) { - GOOGLE_DCHECK(NetPlayerInfoRights_IsValid(value)); +inline void PlayerInfoReplyMessage_PlayerInfoData::set_playerrights(::NetPlayerInfoRights value) { + assert(::NetPlayerInfoRights_IsValid(value)); set_has_playerrights(); playerrights_ = value; } @@ -12340,6 +13962,18 @@ inline ::std::string* PlayerInfoReplyMessage_PlayerInfoData::release_countrycode return temp; } } +inline void PlayerInfoReplyMessage_PlayerInfoData::set_allocated_countrycode(::std::string* countrycode) { + if (countrycode_ != &::google::protobuf::internal::kEmptyString) { + delete countrycode_; + } + if (countrycode) { + set_has_countrycode(); + countrycode_ = countrycode; + } else { + clear_has_countrycode(); + countrycode_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; inline bool PlayerInfoReplyMessage_PlayerInfoData::has_avatardata() const { @@ -12356,7 +13990,11 @@ inline void PlayerInfoReplyMessage_PlayerInfoData::clear_avatardata() { clear_has_avatardata(); } inline const ::PlayerInfoReplyMessage_PlayerInfoData_AvatarData& PlayerInfoReplyMessage_PlayerInfoData::avatardata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return avatardata_ != NULL ? *avatardata_ : *default_instance().avatardata_; +#else return avatardata_ != NULL ? *avatardata_ : *default_instance_->avatardata_; +#endif } inline ::PlayerInfoReplyMessage_PlayerInfoData_AvatarData* PlayerInfoReplyMessage_PlayerInfoData::mutable_avatardata() { set_has_avatardata(); @@ -12369,6 +14007,15 @@ inline ::PlayerInfoReplyMessage_PlayerInfoData_AvatarData* PlayerInfoReplyMessag avatardata_ = NULL; return temp; } +inline void PlayerInfoReplyMessage_PlayerInfoData::set_allocated_avatardata(::PlayerInfoReplyMessage_PlayerInfoData_AvatarData* avatardata) { + delete avatardata_; + avatardata_ = avatardata; + if (avatardata) { + set_has_avatardata(); + } else { + clear_has_avatardata(); + } +} // ------------------------------------------------------------------- @@ -12411,7 +14058,11 @@ inline void PlayerInfoReplyMessage::clear_playerinfodata() { clear_has_playerinfodata(); } inline const ::PlayerInfoReplyMessage_PlayerInfoData& PlayerInfoReplyMessage::playerinfodata() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return playerinfodata_ != NULL ? *playerinfodata_ : *default_instance().playerinfodata_; +#else return playerinfodata_ != NULL ? *playerinfodata_ : *default_instance_->playerinfodata_; +#endif } inline ::PlayerInfoReplyMessage_PlayerInfoData* PlayerInfoReplyMessage::mutable_playerinfodata() { set_has_playerinfodata(); @@ -12424,6 +14075,15 @@ inline ::PlayerInfoReplyMessage_PlayerInfoData* PlayerInfoReplyMessage::release_ playerinfodata_ = NULL; return temp; } +inline void PlayerInfoReplyMessage::set_allocated_playerinfodata(::PlayerInfoReplyMessage_PlayerInfoData* playerinfodata) { + delete playerinfodata_; + playerinfodata_ = playerinfodata; + if (playerinfodata) { + set_has_playerinfodata(); + } else { + clear_has_playerinfodata(); + } +} // ------------------------------------------------------------------- @@ -12447,7 +14107,7 @@ inline ::SubscriptionRequestMessage_SubscriptionAction SubscriptionRequestMessag return static_cast< ::SubscriptionRequestMessage_SubscriptionAction >(subscriptionaction_); } inline void SubscriptionRequestMessage::set_subscriptionaction(::SubscriptionRequestMessage_SubscriptionAction value) { - GOOGLE_DCHECK(::SubscriptionRequestMessage_SubscriptionAction_IsValid(value)); + assert(::SubscriptionRequestMessage_SubscriptionAction_IsValid(value)); set_has_subscriptionaction(); subscriptionaction_ = value; } @@ -12535,6 +14195,18 @@ inline ::std::string* JoinExistingGameMessage::release_password() { return temp; } } +inline void JoinExistingGameMessage::set_allocated_password(::std::string* password) { + if (password_ != &::google::protobuf::internal::kEmptyString) { + delete password_; + } + if (password) { + set_has_password(); + password_ = password; + } else { + clear_has_password(); + password_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional bool autoLeave = 3; inline bool JoinExistingGameMessage::has_autoleave() const { @@ -12599,7 +14271,11 @@ inline void JoinNewGameMessage::clear_gameinfo() { clear_has_gameinfo(); } inline const ::NetGameInfo& JoinNewGameMessage::gameinfo() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gameinfo_ != NULL ? *gameinfo_ : *default_instance().gameinfo_; +#else return gameinfo_ != NULL ? *gameinfo_ : *default_instance_->gameinfo_; +#endif } inline ::NetGameInfo* JoinNewGameMessage::mutable_gameinfo() { set_has_gameinfo(); @@ -12612,6 +14288,15 @@ inline ::NetGameInfo* JoinNewGameMessage::release_gameinfo() { gameinfo_ = NULL; return temp; } +inline void JoinNewGameMessage::set_allocated_gameinfo(::NetGameInfo* gameinfo) { + delete gameinfo_; + gameinfo_ = gameinfo; + if (gameinfo) { + set_has_gameinfo(); + } else { + clear_has_gameinfo(); + } +} // optional string password = 2; inline bool JoinNewGameMessage::has_password() const { @@ -12670,6 +14355,18 @@ inline ::std::string* JoinNewGameMessage::release_password() { return temp; } } +inline void JoinNewGameMessage::set_allocated_password(::std::string* password) { + if (password_ != &::google::protobuf::internal::kEmptyString) { + delete password_; + } + if (password) { + set_has_password(); + password_ = password; + } else { + clear_has_password(); + password_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // optional bool autoLeave = 3; inline bool JoinNewGameMessage::has_autoleave() const { @@ -12804,7 +14501,11 @@ inline void JoinGameAckMessage::clear_gameinfo() { clear_has_gameinfo(); } inline const ::NetGameInfo& JoinGameAckMessage::gameinfo() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gameinfo_ != NULL ? *gameinfo_ : *default_instance().gameinfo_; +#else return gameinfo_ != NULL ? *gameinfo_ : *default_instance_->gameinfo_; +#endif } inline ::NetGameInfo* JoinGameAckMessage::mutable_gameinfo() { set_has_gameinfo(); @@ -12817,6 +14518,15 @@ inline ::NetGameInfo* JoinGameAckMessage::release_gameinfo() { gameinfo_ = NULL; return temp; } +inline void JoinGameAckMessage::set_allocated_gameinfo(::NetGameInfo* gameinfo) { + delete gameinfo_; + gameinfo_ = gameinfo; + if (gameinfo) { + set_has_gameinfo(); + } else { + clear_has_gameinfo(); + } +} // ------------------------------------------------------------------- @@ -12862,7 +14572,7 @@ inline ::JoinGameFailedMessage_JoinGameFailureReason JoinGameFailedMessage::join return static_cast< ::JoinGameFailedMessage_JoinGameFailureReason >(joingamefailurereason_); } inline void JoinGameFailedMessage::set_joingamefailurereason(::JoinGameFailedMessage_JoinGameFailureReason value) { - GOOGLE_DCHECK(::JoinGameFailedMessage_JoinGameFailureReason_IsValid(value)); + assert(::JoinGameFailedMessage_JoinGameFailureReason_IsValid(value)); set_has_joingamefailurereason(); joingamefailurereason_ = value; } @@ -13003,7 +14713,7 @@ inline ::GamePlayerLeftMessage_GamePlayerLeftReason GamePlayerLeftMessage::gamep return static_cast< ::GamePlayerLeftMessage_GamePlayerLeftReason >(gameplayerleftreason_); } inline void GamePlayerLeftMessage::set_gameplayerleftreason(::GamePlayerLeftMessage_GamePlayerLeftReason value) { - GOOGLE_DCHECK(::GamePlayerLeftMessage_GamePlayerLeftReason_IsValid(value)); + assert(::GamePlayerLeftMessage_GamePlayerLeftReason_IsValid(value)); set_has_gameplayerleftreason(); gameplayerleftreason_ = value; } @@ -13122,7 +14832,7 @@ inline ::GamePlayerLeftMessage_GamePlayerLeftReason GameSpectatorLeftMessage::ga return static_cast< ::GamePlayerLeftMessage_GamePlayerLeftReason >(gamespectatorleftreason_); } inline void GameSpectatorLeftMessage::set_gamespectatorleftreason(::GamePlayerLeftMessage_GamePlayerLeftReason value) { - GOOGLE_DCHECK(::GamePlayerLeftMessage_GamePlayerLeftReason_IsValid(value)); + assert(::GamePlayerLeftMessage_GamePlayerLeftReason_IsValid(value)); set_has_gamespectatorleftreason(); gamespectatorleftreason_ = value; } @@ -13219,7 +14929,7 @@ inline ::RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::re return static_cast< ::RemovedFromGameMessage_RemovedFromGameReason >(removedfromgamereason_); } inline void RemovedFromGameMessage::set_removedfromgamereason(::RemovedFromGameMessage_RemovedFromGameReason value) { - GOOGLE_DCHECK(::RemovedFromGameMessage_RemovedFromGameReason_IsValid(value)); + assert(::RemovedFromGameMessage_RemovedFromGameReason_IsValid(value)); set_has_removedfromgamereason(); removedfromgamereason_ = value; } @@ -13460,7 +15170,7 @@ inline ::RejectGameInvitationMessage_RejectGameInvReason RejectGameInvitationMes return static_cast< ::RejectGameInvitationMessage_RejectGameInvReason >(myrejectreason_); } inline void RejectGameInvitationMessage::set_myrejectreason(::RejectGameInvitationMessage_RejectGameInvReason value) { - GOOGLE_DCHECK(::RejectGameInvitationMessage_RejectGameInvReason_IsValid(value)); + assert(::RejectGameInvitationMessage_RejectGameInvReason_IsValid(value)); set_has_myrejectreason(); myrejectreason_ = value; } @@ -13531,7 +15241,7 @@ inline ::RejectGameInvitationMessage_RejectGameInvReason RejectInvNotifyMessage: return static_cast< ::RejectGameInvitationMessage_RejectGameInvReason >(playerrejectreason_); } inline void RejectInvNotifyMessage::set_playerrejectreason(::RejectGameInvitationMessage_RejectGameInvReason value) { - GOOGLE_DCHECK(::RejectGameInvitationMessage_RejectGameInvReason_IsValid(value)); + assert(::RejectGameInvitationMessage_RejectGameInvReason_IsValid(value)); set_has_playerrejectreason(); playerrejectreason_ = value; } @@ -13580,7 +15290,7 @@ inline ::StartEventMessage_StartEventType StartEventMessage::starteventtype() co return static_cast< ::StartEventMessage_StartEventType >(starteventtype_); } inline void StartEventMessage::set_starteventtype(::StartEventMessage_StartEventType value) { - GOOGLE_DCHECK(::StartEventMessage_StartEventType_IsValid(value)); + assert(::StartEventMessage_StartEventType_IsValid(value)); set_has_starteventtype(); starteventtype_ = value; } @@ -13938,7 +15648,11 @@ inline void HandStartMessage::clear_plaincards() { clear_has_plaincards(); } inline const ::HandStartMessage_PlainCards& HandStartMessage::plaincards() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return plaincards_ != NULL ? *plaincards_ : *default_instance().plaincards_; +#else return plaincards_ != NULL ? *plaincards_ : *default_instance_->plaincards_; +#endif } inline ::HandStartMessage_PlainCards* HandStartMessage::mutable_plaincards() { set_has_plaincards(); @@ -13951,6 +15665,15 @@ inline ::HandStartMessage_PlainCards* HandStartMessage::release_plaincards() { plaincards_ = NULL; return temp; } +inline void HandStartMessage::set_allocated_plaincards(::HandStartMessage_PlainCards* plaincards) { + delete plaincards_; + plaincards_ = plaincards; + if (plaincards) { + set_has_plaincards(); + } else { + clear_has_plaincards(); + } +} // optional bytes encryptedCards = 3; inline bool HandStartMessage::has_encryptedcards() const { @@ -14009,6 +15732,18 @@ inline ::std::string* HandStartMessage::release_encryptedcards() { return temp; } } +inline void HandStartMessage::set_allocated_encryptedcards(::std::string* encryptedcards) { + if (encryptedcards_ != &::google::protobuf::internal::kEmptyString) { + delete encryptedcards_; + } + if (encryptedcards) { + set_has_encryptedcards(); + encryptedcards_ = encryptedcards; + } else { + clear_has_encryptedcards(); + encryptedcards_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // required uint32 smallBlind = 4; inline bool HandStartMessage::has_smallblind() const { @@ -14039,15 +15774,15 @@ inline int HandStartMessage::seatstates_size() const { inline void HandStartMessage::clear_seatstates() { seatstates_.Clear(); } -inline NetPlayerState HandStartMessage::seatstates(int index) const { - return static_cast< NetPlayerState >(seatstates_.Get(index)); +inline ::NetPlayerState HandStartMessage::seatstates(int index) const { + return static_cast< ::NetPlayerState >(seatstates_.Get(index)); } -inline void HandStartMessage::set_seatstates(int index, NetPlayerState value) { - GOOGLE_DCHECK(NetPlayerState_IsValid(value)); +inline void HandStartMessage::set_seatstates(int index, ::NetPlayerState value) { + assert(::NetPlayerState_IsValid(value)); seatstates_.Set(index, value); } -inline void HandStartMessage::add_seatstates(NetPlayerState value) { - GOOGLE_DCHECK(NetPlayerState_IsValid(value)); +inline void HandStartMessage::add_seatstates(::NetPlayerState value) { + assert(::NetPlayerState_IsValid(value)); seatstates_.Add(value); } inline const ::google::protobuf::RepeatedField& @@ -14121,11 +15856,11 @@ inline void PlayersTurnMessage::clear_gamestate() { gamestate_ = 0; clear_has_gamestate(); } -inline NetGameState PlayersTurnMessage::gamestate() const { - return static_cast< NetGameState >(gamestate_); +inline ::NetGameState PlayersTurnMessage::gamestate() const { + return static_cast< ::NetGameState >(gamestate_); } -inline void PlayersTurnMessage::set_gamestate(NetGameState value) { - GOOGLE_DCHECK(NetGameState_IsValid(value)); +inline void PlayersTurnMessage::set_gamestate(::NetGameState value) { + assert(::NetGameState_IsValid(value)); set_has_gamestate(); gamestate_ = value; } @@ -14192,11 +15927,11 @@ inline void MyActionRequestMessage::clear_gamestate() { gamestate_ = 0; clear_has_gamestate(); } -inline NetGameState MyActionRequestMessage::gamestate() const { - return static_cast< NetGameState >(gamestate_); +inline ::NetGameState MyActionRequestMessage::gamestate() const { + return static_cast< ::NetGameState >(gamestate_); } -inline void MyActionRequestMessage::set_gamestate(NetGameState value) { - GOOGLE_DCHECK(NetGameState_IsValid(value)); +inline void MyActionRequestMessage::set_gamestate(::NetGameState value) { + assert(::NetGameState_IsValid(value)); set_has_gamestate(); gamestate_ = value; } @@ -14215,11 +15950,11 @@ inline void MyActionRequestMessage::clear_myaction() { myaction_ = 0; clear_has_myaction(); } -inline NetPlayerAction MyActionRequestMessage::myaction() const { - return static_cast< NetPlayerAction >(myaction_); +inline ::NetPlayerAction MyActionRequestMessage::myaction() const { + return static_cast< ::NetPlayerAction >(myaction_); } -inline void MyActionRequestMessage::set_myaction(NetPlayerAction value) { - GOOGLE_DCHECK(NetPlayerAction_IsValid(value)); +inline void MyActionRequestMessage::set_myaction(::NetPlayerAction value) { + assert(::NetPlayerAction_IsValid(value)); set_has_myaction(); myaction_ = value; } @@ -14286,11 +16021,11 @@ inline void YourActionRejectedMessage::clear_gamestate() { gamestate_ = 0; clear_has_gamestate(); } -inline NetGameState YourActionRejectedMessage::gamestate() const { - return static_cast< NetGameState >(gamestate_); +inline ::NetGameState YourActionRejectedMessage::gamestate() const { + return static_cast< ::NetGameState >(gamestate_); } -inline void YourActionRejectedMessage::set_gamestate(NetGameState value) { - GOOGLE_DCHECK(NetGameState_IsValid(value)); +inline void YourActionRejectedMessage::set_gamestate(::NetGameState value) { + assert(::NetGameState_IsValid(value)); set_has_gamestate(); gamestate_ = value; } @@ -14309,11 +16044,11 @@ inline void YourActionRejectedMessage::clear_youraction() { youraction_ = 0; clear_has_youraction(); } -inline NetPlayerAction YourActionRejectedMessage::youraction() const { - return static_cast< NetPlayerAction >(youraction_); +inline ::NetPlayerAction YourActionRejectedMessage::youraction() const { + return static_cast< ::NetPlayerAction >(youraction_); } -inline void YourActionRejectedMessage::set_youraction(NetPlayerAction value) { - GOOGLE_DCHECK(NetPlayerAction_IsValid(value)); +inline void YourActionRejectedMessage::set_youraction(::NetPlayerAction value) { + assert(::NetPlayerAction_IsValid(value)); set_has_youraction(); youraction_ = value; } @@ -14358,7 +16093,7 @@ inline ::YourActionRejectedMessage_RejectionReason YourActionRejectedMessage::re return static_cast< ::YourActionRejectedMessage_RejectionReason >(rejectionreason_); } inline void YourActionRejectedMessage::set_rejectionreason(::YourActionRejectedMessage_RejectionReason value) { - GOOGLE_DCHECK(::YourActionRejectedMessage_RejectionReason_IsValid(value)); + assert(::YourActionRejectedMessage_RejectionReason_IsValid(value)); set_has_rejectionreason(); rejectionreason_ = value; } @@ -14425,11 +16160,11 @@ inline void PlayersActionDoneMessage::clear_gamestate() { gamestate_ = 0; clear_has_gamestate(); } -inline NetGameState PlayersActionDoneMessage::gamestate() const { - return static_cast< NetGameState >(gamestate_); +inline ::NetGameState PlayersActionDoneMessage::gamestate() const { + return static_cast< ::NetGameState >(gamestate_); } -inline void PlayersActionDoneMessage::set_gamestate(NetGameState value) { - GOOGLE_DCHECK(NetGameState_IsValid(value)); +inline void PlayersActionDoneMessage::set_gamestate(::NetGameState value) { + assert(::NetGameState_IsValid(value)); set_has_gamestate(); gamestate_ = value; } @@ -14448,11 +16183,11 @@ inline void PlayersActionDoneMessage::clear_playeraction() { playeraction_ = 0; clear_has_playeraction(); } -inline NetPlayerAction PlayersActionDoneMessage::playeraction() const { - return static_cast< NetPlayerAction >(playeraction_); +inline ::NetPlayerAction PlayersActionDoneMessage::playeraction() const { + return static_cast< ::NetPlayerAction >(playeraction_); } -inline void PlayersActionDoneMessage::set_playeraction(NetPlayerAction value) { - GOOGLE_DCHECK(NetPlayerAction_IsValid(value)); +inline void PlayersActionDoneMessage::set_playeraction(::NetPlayerAction value) { + assert(::NetPlayerAction_IsValid(value)); set_has_playeraction(); playeraction_ = value; } @@ -15020,7 +16755,11 @@ inline void AfterHandShowCardsMessage::clear_playerresult() { clear_has_playerresult(); } inline const ::PlayerResult& AfterHandShowCardsMessage::playerresult() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return playerresult_ != NULL ? *playerresult_ : *default_instance().playerresult_; +#else return playerresult_ != NULL ? *playerresult_ : *default_instance_->playerresult_; +#endif } inline ::PlayerResult* AfterHandShowCardsMessage::mutable_playerresult() { set_has_playerresult(); @@ -15033,6 +16772,15 @@ inline ::PlayerResult* AfterHandShowCardsMessage::release_playerresult() { playerresult_ = NULL; return temp; } +inline void AfterHandShowCardsMessage::set_allocated_playerresult(::PlayerResult* playerresult) { + delete playerresult_; + playerresult_ = playerresult; + if (playerresult) { + set_has_playerresult(); + } else { + clear_has_playerresult(); + } +} // ------------------------------------------------------------------- @@ -15244,7 +16992,7 @@ inline ::AskKickDeniedMessage_KickDeniedReason AskKickDeniedMessage::kickdeniedr return static_cast< ::AskKickDeniedMessage_KickDeniedReason >(kickdeniedreason_); } inline void AskKickDeniedMessage::set_kickdeniedreason(::AskKickDeniedMessage_KickDeniedReason value) { - GOOGLE_DCHECK(::AskKickDeniedMessage_KickDeniedReason_IsValid(value)); + assert(::AskKickDeniedMessage_KickDeniedReason_IsValid(value)); set_has_kickdeniedreason(); kickdeniedreason_ = value; } @@ -15521,7 +17269,7 @@ inline ::VoteKickReplyMessage_VoteKickReplyType VoteKickReplyMessage::votekickre return static_cast< ::VoteKickReplyMessage_VoteKickReplyType >(votekickreplytype_); } inline void VoteKickReplyMessage::set_votekickreplytype(::VoteKickReplyMessage_VoteKickReplyType value) { - GOOGLE_DCHECK(::VoteKickReplyMessage_VoteKickReplyType_IsValid(value)); + assert(::VoteKickReplyMessage_VoteKickReplyType_IsValid(value)); set_has_votekickreplytype(); votekickreplytype_ = value; } @@ -15772,7 +17520,7 @@ inline ::EndKickPetitionMessage_PetitionEndReason EndKickPetitionMessage::petiti return static_cast< ::EndKickPetitionMessage_PetitionEndReason >(petitionendreason_); } inline void EndKickPetitionMessage::set_petitionendreason(::EndKickPetitionMessage_PetitionEndReason value) { - GOOGLE_DCHECK(::EndKickPetitionMessage_PetitionEndReason_IsValid(value)); + assert(::EndKickPetitionMessage_PetitionEndReason_IsValid(value)); set_has_petitionendreason(); petitionendreason_ = value; } @@ -15799,7 +17547,7 @@ inline ::StatisticsMessage_StatisticsData_StatisticsType StatisticsMessage_Stati return static_cast< ::StatisticsMessage_StatisticsData_StatisticsType >(statisticstype_); } inline void StatisticsMessage_StatisticsData::set_statisticstype(::StatisticsMessage_StatisticsData_StatisticsType value) { - GOOGLE_DCHECK(::StatisticsMessage_StatisticsData_StatisticsType_IsValid(value)); + assert(::StatisticsMessage_StatisticsData_StatisticsType_IsValid(value)); set_has_statisticstype(); statisticstype_ = value; } @@ -15960,6 +17708,18 @@ inline ::std::string* ChatRequestMessage::release_chattext() { return temp; } } +inline void ChatRequestMessage::set_allocated_chattext(::std::string* chattext) { + if (chattext_ != &::google::protobuf::internal::kEmptyString) { + delete chattext_; + } + if (chattext) { + set_has_chattext(); + chattext_ = chattext; + } else { + clear_has_chattext(); + chattext_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -16027,7 +17787,7 @@ inline ::ChatMessage_ChatType ChatMessage::chattype() const { return static_cast< ::ChatMessage_ChatType >(chattype_); } inline void ChatMessage::set_chattype(::ChatMessage_ChatType value) { - GOOGLE_DCHECK(::ChatMessage_ChatType_IsValid(value)); + assert(::ChatMessage_ChatType_IsValid(value)); set_has_chattype(); chattype_ = value; } @@ -16089,6 +17849,18 @@ inline ::std::string* ChatMessage::release_chattext() { return temp; } } +inline void ChatMessage::set_allocated_chattext(::std::string* chattext) { + if (chattext_ != &::google::protobuf::internal::kEmptyString) { + delete chattext_; + } + if (chattext) { + set_has_chattext(); + chattext_ = chattext; + } else { + clear_has_chattext(); + chattext_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -16151,6 +17923,18 @@ inline ::std::string* ChatRejectMessage::release_chattext() { return temp; } } +inline void ChatRejectMessage::set_allocated_chattext(::std::string* chattext) { + if (chattext_ != &::google::protobuf::internal::kEmptyString) { + delete chattext_; + } + if (chattext) { + set_has_chattext(); + chattext_ = chattext; + } else { + clear_has_chattext(); + chattext_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -16213,6 +17997,18 @@ inline ::std::string* DialogMessage::release_notificationtext() { return temp; } } +inline void DialogMessage::set_allocated_notificationtext(::std::string* notificationtext) { + if (notificationtext_ != &::google::protobuf::internal::kEmptyString) { + delete notificationtext_; + } + if (notificationtext) { + set_has_notificationtext(); + notificationtext_ = notificationtext; + } else { + clear_has_notificationtext(); + notificationtext_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -16236,7 +18032,7 @@ inline ::TimeoutWarningMessage_TimeoutReason TimeoutWarningMessage::timeoutreaso return static_cast< ::TimeoutWarningMessage_TimeoutReason >(timeoutreason_); } inline void TimeoutWarningMessage::set_timeoutreason(::TimeoutWarningMessage_TimeoutReason value) { - GOOGLE_DCHECK(::TimeoutWarningMessage_TimeoutReason_IsValid(value)); + assert(::TimeoutWarningMessage_TimeoutReason_IsValid(value)); set_has_timeoutreason(); timeoutreason_ = value; } @@ -16350,6 +18146,18 @@ inline ::std::string* ReportAvatarMessage::release_reportedavatarhash() { return temp; } } +inline void ReportAvatarMessage::set_allocated_reportedavatarhash(::std::string* reportedavatarhash) { + if (reportedavatarhash_ != &::google::protobuf::internal::kEmptyString) { + delete reportedavatarhash_; + } + if (reportedavatarhash) { + set_has_reportedavatarhash(); + reportedavatarhash_ = reportedavatarhash; + } else { + clear_has_reportedavatarhash(); + reportedavatarhash_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} // ------------------------------------------------------------------- @@ -16395,7 +18203,7 @@ inline ::ReportAvatarAckMessage_ReportAvatarResult ReportAvatarAckMessage::repor return static_cast< ::ReportAvatarAckMessage_ReportAvatarResult >(reportavatarresult_); } inline void ReportAvatarAckMessage::set_reportavatarresult(::ReportAvatarAckMessage_ReportAvatarResult value) { - GOOGLE_DCHECK(::ReportAvatarAckMessage_ReportAvatarResult_IsValid(value)); + assert(::ReportAvatarAckMessage_ReportAvatarResult_IsValid(value)); set_has_reportavatarresult(); reportavatarresult_ = value; } @@ -16470,7 +18278,7 @@ inline ::ReportGameAckMessage_ReportGameResult ReportGameAckMessage::reportgamer return static_cast< ::ReportGameAckMessage_ReportGameResult >(reportgameresult_); } inline void ReportGameAckMessage::set_reportgameresult(::ReportGameAckMessage_ReportGameResult value) { - GOOGLE_DCHECK(::ReportGameAckMessage_ReportGameResult_IsValid(value)); + assert(::ReportGameAckMessage_ReportGameResult_IsValid(value)); set_has_reportgameresult(); reportgameresult_ = value; } @@ -16497,7 +18305,7 @@ inline ::ErrorMessage_ErrorReason ErrorMessage::errorreason() const { return static_cast< ::ErrorMessage_ErrorReason >(errorreason_); } inline void ErrorMessage::set_errorreason(::ErrorMessage_ErrorReason value) { - GOOGLE_DCHECK(::ErrorMessage_ErrorReason_IsValid(value)); + assert(::ErrorMessage_ErrorReason_IsValid(value)); set_has_errorreason(); errorreason_ = value; } @@ -16572,7 +18380,7 @@ inline ::AdminRemoveGameAckMessage_AdminRemoveGameResult AdminRemoveGameAckMessa return static_cast< ::AdminRemoveGameAckMessage_AdminRemoveGameResult >(removegameresult_); } inline void AdminRemoveGameAckMessage::set_removegameresult(::AdminRemoveGameAckMessage_AdminRemoveGameResult value) { - GOOGLE_DCHECK(::AdminRemoveGameAckMessage_AdminRemoveGameResult_IsValid(value)); + assert(::AdminRemoveGameAckMessage_AdminRemoveGameResult_IsValid(value)); set_has_removegameresult(); removegameresult_ = value; } @@ -16647,7 +18455,7 @@ inline ::AdminBanPlayerAckMessage_AdminBanPlayerResult AdminBanPlayerAckMessage: return static_cast< ::AdminBanPlayerAckMessage_AdminBanPlayerResult >(banplayerresult_); } inline void AdminBanPlayerAckMessage::set_banplayerresult(::AdminBanPlayerAckMessage_AdminBanPlayerResult value) { - GOOGLE_DCHECK(::AdminBanPlayerAckMessage_AdminBanPlayerResult_IsValid(value)); + assert(::AdminBanPlayerAckMessage_AdminBanPlayerResult_IsValid(value)); set_has_banplayerresult(); banplayerresult_ = value; } @@ -16674,7 +18482,7 @@ inline ::PokerTHMessage_PokerTHMessageType PokerTHMessage::messagetype() const { return static_cast< ::PokerTHMessage_PokerTHMessageType >(messagetype_); } inline void PokerTHMessage::set_messagetype(::PokerTHMessage_PokerTHMessageType value) { - GOOGLE_DCHECK(::PokerTHMessage_PokerTHMessageType_IsValid(value)); + assert(::PokerTHMessage_PokerTHMessageType_IsValid(value)); set_has_messagetype(); messagetype_ = value; } @@ -16694,7 +18502,11 @@ inline void PokerTHMessage::clear_announcemessage() { clear_has_announcemessage(); } inline const ::AnnounceMessage& PokerTHMessage::announcemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return announcemessage_ != NULL ? *announcemessage_ : *default_instance().announcemessage_; +#else return announcemessage_ != NULL ? *announcemessage_ : *default_instance_->announcemessage_; +#endif } inline ::AnnounceMessage* PokerTHMessage::mutable_announcemessage() { set_has_announcemessage(); @@ -16707,6 +18519,15 @@ inline ::AnnounceMessage* PokerTHMessage::release_announcemessage() { announcemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_announcemessage(::AnnounceMessage* announcemessage) { + delete announcemessage_; + announcemessage_ = announcemessage; + if (announcemessage) { + set_has_announcemessage(); + } else { + clear_has_announcemessage(); + } +} // optional .InitMessage initMessage = 3; inline bool PokerTHMessage::has_initmessage() const { @@ -16723,7 +18544,11 @@ inline void PokerTHMessage::clear_initmessage() { clear_has_initmessage(); } inline const ::InitMessage& PokerTHMessage::initmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return initmessage_ != NULL ? *initmessage_ : *default_instance().initmessage_; +#else return initmessage_ != NULL ? *initmessage_ : *default_instance_->initmessage_; +#endif } inline ::InitMessage* PokerTHMessage::mutable_initmessage() { set_has_initmessage(); @@ -16736,6 +18561,15 @@ inline ::InitMessage* PokerTHMessage::release_initmessage() { initmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_initmessage(::InitMessage* initmessage) { + delete initmessage_; + initmessage_ = initmessage; + if (initmessage) { + set_has_initmessage(); + } else { + clear_has_initmessage(); + } +} // optional .AuthServerChallengeMessage authServerChallengeMessage = 4; inline bool PokerTHMessage::has_authserverchallengemessage() const { @@ -16752,7 +18586,11 @@ inline void PokerTHMessage::clear_authserverchallengemessage() { clear_has_authserverchallengemessage(); } inline const ::AuthServerChallengeMessage& PokerTHMessage::authserverchallengemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return authserverchallengemessage_ != NULL ? *authserverchallengemessage_ : *default_instance().authserverchallengemessage_; +#else return authserverchallengemessage_ != NULL ? *authserverchallengemessage_ : *default_instance_->authserverchallengemessage_; +#endif } inline ::AuthServerChallengeMessage* PokerTHMessage::mutable_authserverchallengemessage() { set_has_authserverchallengemessage(); @@ -16765,6 +18603,15 @@ inline ::AuthServerChallengeMessage* PokerTHMessage::release_authserverchallenge authserverchallengemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_authserverchallengemessage(::AuthServerChallengeMessage* authserverchallengemessage) { + delete authserverchallengemessage_; + authserverchallengemessage_ = authserverchallengemessage; + if (authserverchallengemessage) { + set_has_authserverchallengemessage(); + } else { + clear_has_authserverchallengemessage(); + } +} // optional .AuthClientResponseMessage authClientResponseMessage = 5; inline bool PokerTHMessage::has_authclientresponsemessage() const { @@ -16781,7 +18628,11 @@ inline void PokerTHMessage::clear_authclientresponsemessage() { clear_has_authclientresponsemessage(); } inline const ::AuthClientResponseMessage& PokerTHMessage::authclientresponsemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return authclientresponsemessage_ != NULL ? *authclientresponsemessage_ : *default_instance().authclientresponsemessage_; +#else return authclientresponsemessage_ != NULL ? *authclientresponsemessage_ : *default_instance_->authclientresponsemessage_; +#endif } inline ::AuthClientResponseMessage* PokerTHMessage::mutable_authclientresponsemessage() { set_has_authclientresponsemessage(); @@ -16794,6 +18645,15 @@ inline ::AuthClientResponseMessage* PokerTHMessage::release_authclientresponseme authclientresponsemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_authclientresponsemessage(::AuthClientResponseMessage* authclientresponsemessage) { + delete authclientresponsemessage_; + authclientresponsemessage_ = authclientresponsemessage; + if (authclientresponsemessage) { + set_has_authclientresponsemessage(); + } else { + clear_has_authclientresponsemessage(); + } +} // optional .AuthServerVerificationMessage authServerVerificationMessage = 6; inline bool PokerTHMessage::has_authserververificationmessage() const { @@ -16810,7 +18670,11 @@ inline void PokerTHMessage::clear_authserververificationmessage() { clear_has_authserververificationmessage(); } inline const ::AuthServerVerificationMessage& PokerTHMessage::authserververificationmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return authserververificationmessage_ != NULL ? *authserververificationmessage_ : *default_instance().authserververificationmessage_; +#else return authserververificationmessage_ != NULL ? *authserververificationmessage_ : *default_instance_->authserververificationmessage_; +#endif } inline ::AuthServerVerificationMessage* PokerTHMessage::mutable_authserververificationmessage() { set_has_authserververificationmessage(); @@ -16823,6 +18687,15 @@ inline ::AuthServerVerificationMessage* PokerTHMessage::release_authserververifi authserververificationmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_authserververificationmessage(::AuthServerVerificationMessage* authserververificationmessage) { + delete authserververificationmessage_; + authserververificationmessage_ = authserververificationmessage; + if (authserververificationmessage) { + set_has_authserververificationmessage(); + } else { + clear_has_authserververificationmessage(); + } +} // optional .InitAckMessage initAckMessage = 7; inline bool PokerTHMessage::has_initackmessage() const { @@ -16839,7 +18712,11 @@ inline void PokerTHMessage::clear_initackmessage() { clear_has_initackmessage(); } inline const ::InitAckMessage& PokerTHMessage::initackmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return initackmessage_ != NULL ? *initackmessage_ : *default_instance().initackmessage_; +#else return initackmessage_ != NULL ? *initackmessage_ : *default_instance_->initackmessage_; +#endif } inline ::InitAckMessage* PokerTHMessage::mutable_initackmessage() { set_has_initackmessage(); @@ -16852,6 +18729,15 @@ inline ::InitAckMessage* PokerTHMessage::release_initackmessage() { initackmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_initackmessage(::InitAckMessage* initackmessage) { + delete initackmessage_; + initackmessage_ = initackmessage; + if (initackmessage) { + set_has_initackmessage(); + } else { + clear_has_initackmessage(); + } +} // optional .AvatarRequestMessage avatarRequestMessage = 8; inline bool PokerTHMessage::has_avatarrequestmessage() const { @@ -16868,7 +18754,11 @@ inline void PokerTHMessage::clear_avatarrequestmessage() { clear_has_avatarrequestmessage(); } inline const ::AvatarRequestMessage& PokerTHMessage::avatarrequestmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return avatarrequestmessage_ != NULL ? *avatarrequestmessage_ : *default_instance().avatarrequestmessage_; +#else return avatarrequestmessage_ != NULL ? *avatarrequestmessage_ : *default_instance_->avatarrequestmessage_; +#endif } inline ::AvatarRequestMessage* PokerTHMessage::mutable_avatarrequestmessage() { set_has_avatarrequestmessage(); @@ -16881,6 +18771,15 @@ inline ::AvatarRequestMessage* PokerTHMessage::release_avatarrequestmessage() { avatarrequestmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_avatarrequestmessage(::AvatarRequestMessage* avatarrequestmessage) { + delete avatarrequestmessage_; + avatarrequestmessage_ = avatarrequestmessage; + if (avatarrequestmessage) { + set_has_avatarrequestmessage(); + } else { + clear_has_avatarrequestmessage(); + } +} // optional .AvatarHeaderMessage avatarHeaderMessage = 9; inline bool PokerTHMessage::has_avatarheadermessage() const { @@ -16897,7 +18796,11 @@ inline void PokerTHMessage::clear_avatarheadermessage() { clear_has_avatarheadermessage(); } inline const ::AvatarHeaderMessage& PokerTHMessage::avatarheadermessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return avatarheadermessage_ != NULL ? *avatarheadermessage_ : *default_instance().avatarheadermessage_; +#else return avatarheadermessage_ != NULL ? *avatarheadermessage_ : *default_instance_->avatarheadermessage_; +#endif } inline ::AvatarHeaderMessage* PokerTHMessage::mutable_avatarheadermessage() { set_has_avatarheadermessage(); @@ -16910,6 +18813,15 @@ inline ::AvatarHeaderMessage* PokerTHMessage::release_avatarheadermessage() { avatarheadermessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_avatarheadermessage(::AvatarHeaderMessage* avatarheadermessage) { + delete avatarheadermessage_; + avatarheadermessage_ = avatarheadermessage; + if (avatarheadermessage) { + set_has_avatarheadermessage(); + } else { + clear_has_avatarheadermessage(); + } +} // optional .AvatarDataMessage avatarDataMessage = 10; inline bool PokerTHMessage::has_avatardatamessage() const { @@ -16926,7 +18838,11 @@ inline void PokerTHMessage::clear_avatardatamessage() { clear_has_avatardatamessage(); } inline const ::AvatarDataMessage& PokerTHMessage::avatardatamessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return avatardatamessage_ != NULL ? *avatardatamessage_ : *default_instance().avatardatamessage_; +#else return avatardatamessage_ != NULL ? *avatardatamessage_ : *default_instance_->avatardatamessage_; +#endif } inline ::AvatarDataMessage* PokerTHMessage::mutable_avatardatamessage() { set_has_avatardatamessage(); @@ -16939,6 +18855,15 @@ inline ::AvatarDataMessage* PokerTHMessage::release_avatardatamessage() { avatardatamessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_avatardatamessage(::AvatarDataMessage* avatardatamessage) { + delete avatardatamessage_; + avatardatamessage_ = avatardatamessage; + if (avatardatamessage) { + set_has_avatardatamessage(); + } else { + clear_has_avatardatamessage(); + } +} // optional .AvatarEndMessage avatarEndMessage = 11; inline bool PokerTHMessage::has_avatarendmessage() const { @@ -16955,7 +18880,11 @@ inline void PokerTHMessage::clear_avatarendmessage() { clear_has_avatarendmessage(); } inline const ::AvatarEndMessage& PokerTHMessage::avatarendmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return avatarendmessage_ != NULL ? *avatarendmessage_ : *default_instance().avatarendmessage_; +#else return avatarendmessage_ != NULL ? *avatarendmessage_ : *default_instance_->avatarendmessage_; +#endif } inline ::AvatarEndMessage* PokerTHMessage::mutable_avatarendmessage() { set_has_avatarendmessage(); @@ -16968,6 +18897,15 @@ inline ::AvatarEndMessage* PokerTHMessage::release_avatarendmessage() { avatarendmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_avatarendmessage(::AvatarEndMessage* avatarendmessage) { + delete avatarendmessage_; + avatarendmessage_ = avatarendmessage; + if (avatarendmessage) { + set_has_avatarendmessage(); + } else { + clear_has_avatarendmessage(); + } +} // optional .UnknownAvatarMessage unknownAvatarMessage = 12; inline bool PokerTHMessage::has_unknownavatarmessage() const { @@ -16984,7 +18922,11 @@ inline void PokerTHMessage::clear_unknownavatarmessage() { clear_has_unknownavatarmessage(); } inline const ::UnknownAvatarMessage& PokerTHMessage::unknownavatarmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return unknownavatarmessage_ != NULL ? *unknownavatarmessage_ : *default_instance().unknownavatarmessage_; +#else return unknownavatarmessage_ != NULL ? *unknownavatarmessage_ : *default_instance_->unknownavatarmessage_; +#endif } inline ::UnknownAvatarMessage* PokerTHMessage::mutable_unknownavatarmessage() { set_has_unknownavatarmessage(); @@ -16997,6 +18939,15 @@ inline ::UnknownAvatarMessage* PokerTHMessage::release_unknownavatarmessage() { unknownavatarmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_unknownavatarmessage(::UnknownAvatarMessage* unknownavatarmessage) { + delete unknownavatarmessage_; + unknownavatarmessage_ = unknownavatarmessage; + if (unknownavatarmessage) { + set_has_unknownavatarmessage(); + } else { + clear_has_unknownavatarmessage(); + } +} // optional .PlayerListMessage playerListMessage = 13; inline bool PokerTHMessage::has_playerlistmessage() const { @@ -17013,7 +18964,11 @@ inline void PokerTHMessage::clear_playerlistmessage() { clear_has_playerlistmessage(); } inline const ::PlayerListMessage& PokerTHMessage::playerlistmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return playerlistmessage_ != NULL ? *playerlistmessage_ : *default_instance().playerlistmessage_; +#else return playerlistmessage_ != NULL ? *playerlistmessage_ : *default_instance_->playerlistmessage_; +#endif } inline ::PlayerListMessage* PokerTHMessage::mutable_playerlistmessage() { set_has_playerlistmessage(); @@ -17026,6 +18981,15 @@ inline ::PlayerListMessage* PokerTHMessage::release_playerlistmessage() { playerlistmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_playerlistmessage(::PlayerListMessage* playerlistmessage) { + delete playerlistmessage_; + playerlistmessage_ = playerlistmessage; + if (playerlistmessage) { + set_has_playerlistmessage(); + } else { + clear_has_playerlistmessage(); + } +} // optional .GameListNewMessage gameListNewMessage = 14; inline bool PokerTHMessage::has_gamelistnewmessage() const { @@ -17042,7 +19006,11 @@ inline void PokerTHMessage::clear_gamelistnewmessage() { clear_has_gamelistnewmessage(); } inline const ::GameListNewMessage& PokerTHMessage::gamelistnewmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gamelistnewmessage_ != NULL ? *gamelistnewmessage_ : *default_instance().gamelistnewmessage_; +#else return gamelistnewmessage_ != NULL ? *gamelistnewmessage_ : *default_instance_->gamelistnewmessage_; +#endif } inline ::GameListNewMessage* PokerTHMessage::mutable_gamelistnewmessage() { set_has_gamelistnewmessage(); @@ -17055,6 +19023,15 @@ inline ::GameListNewMessage* PokerTHMessage::release_gamelistnewmessage() { gamelistnewmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gamelistnewmessage(::GameListNewMessage* gamelistnewmessage) { + delete gamelistnewmessage_; + gamelistnewmessage_ = gamelistnewmessage; + if (gamelistnewmessage) { + set_has_gamelistnewmessage(); + } else { + clear_has_gamelistnewmessage(); + } +} // optional .GameListUpdateMessage gameListUpdateMessage = 15; inline bool PokerTHMessage::has_gamelistupdatemessage() const { @@ -17071,7 +19048,11 @@ inline void PokerTHMessage::clear_gamelistupdatemessage() { clear_has_gamelistupdatemessage(); } inline const ::GameListUpdateMessage& PokerTHMessage::gamelistupdatemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gamelistupdatemessage_ != NULL ? *gamelistupdatemessage_ : *default_instance().gamelistupdatemessage_; +#else return gamelistupdatemessage_ != NULL ? *gamelistupdatemessage_ : *default_instance_->gamelistupdatemessage_; +#endif } inline ::GameListUpdateMessage* PokerTHMessage::mutable_gamelistupdatemessage() { set_has_gamelistupdatemessage(); @@ -17084,6 +19065,15 @@ inline ::GameListUpdateMessage* PokerTHMessage::release_gamelistupdatemessage() gamelistupdatemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gamelistupdatemessage(::GameListUpdateMessage* gamelistupdatemessage) { + delete gamelistupdatemessage_; + gamelistupdatemessage_ = gamelistupdatemessage; + if (gamelistupdatemessage) { + set_has_gamelistupdatemessage(); + } else { + clear_has_gamelistupdatemessage(); + } +} // optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; inline bool PokerTHMessage::has_gamelistplayerjoinedmessage() const { @@ -17100,7 +19090,11 @@ inline void PokerTHMessage::clear_gamelistplayerjoinedmessage() { clear_has_gamelistplayerjoinedmessage(); } inline const ::GameListPlayerJoinedMessage& PokerTHMessage::gamelistplayerjoinedmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gamelistplayerjoinedmessage_ != NULL ? *gamelistplayerjoinedmessage_ : *default_instance().gamelistplayerjoinedmessage_; +#else return gamelistplayerjoinedmessage_ != NULL ? *gamelistplayerjoinedmessage_ : *default_instance_->gamelistplayerjoinedmessage_; +#endif } inline ::GameListPlayerJoinedMessage* PokerTHMessage::mutable_gamelistplayerjoinedmessage() { set_has_gamelistplayerjoinedmessage(); @@ -17113,6 +19107,15 @@ inline ::GameListPlayerJoinedMessage* PokerTHMessage::release_gamelistplayerjoin gamelistplayerjoinedmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gamelistplayerjoinedmessage(::GameListPlayerJoinedMessage* gamelistplayerjoinedmessage) { + delete gamelistplayerjoinedmessage_; + gamelistplayerjoinedmessage_ = gamelistplayerjoinedmessage; + if (gamelistplayerjoinedmessage) { + set_has_gamelistplayerjoinedmessage(); + } else { + clear_has_gamelistplayerjoinedmessage(); + } +} // optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; inline bool PokerTHMessage::has_gamelistplayerleftmessage() const { @@ -17129,7 +19132,11 @@ inline void PokerTHMessage::clear_gamelistplayerleftmessage() { clear_has_gamelistplayerleftmessage(); } inline const ::GameListPlayerLeftMessage& PokerTHMessage::gamelistplayerleftmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gamelistplayerleftmessage_ != NULL ? *gamelistplayerleftmessage_ : *default_instance().gamelistplayerleftmessage_; +#else return gamelistplayerleftmessage_ != NULL ? *gamelistplayerleftmessage_ : *default_instance_->gamelistplayerleftmessage_; +#endif } inline ::GameListPlayerLeftMessage* PokerTHMessage::mutable_gamelistplayerleftmessage() { set_has_gamelistplayerleftmessage(); @@ -17142,6 +19149,15 @@ inline ::GameListPlayerLeftMessage* PokerTHMessage::release_gamelistplayerleftme gamelistplayerleftmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gamelistplayerleftmessage(::GameListPlayerLeftMessage* gamelistplayerleftmessage) { + delete gamelistplayerleftmessage_; + gamelistplayerleftmessage_ = gamelistplayerleftmessage; + if (gamelistplayerleftmessage) { + set_has_gamelistplayerleftmessage(); + } else { + clear_has_gamelistplayerleftmessage(); + } +} // optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; inline bool PokerTHMessage::has_gamelistadminchangedmessage() const { @@ -17158,7 +19174,11 @@ inline void PokerTHMessage::clear_gamelistadminchangedmessage() { clear_has_gamelistadminchangedmessage(); } inline const ::GameListAdminChangedMessage& PokerTHMessage::gamelistadminchangedmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gamelistadminchangedmessage_ != NULL ? *gamelistadminchangedmessage_ : *default_instance().gamelistadminchangedmessage_; +#else return gamelistadminchangedmessage_ != NULL ? *gamelistadminchangedmessage_ : *default_instance_->gamelistadminchangedmessage_; +#endif } inline ::GameListAdminChangedMessage* PokerTHMessage::mutable_gamelistadminchangedmessage() { set_has_gamelistadminchangedmessage(); @@ -17171,6 +19191,15 @@ inline ::GameListAdminChangedMessage* PokerTHMessage::release_gamelistadminchang gamelistadminchangedmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gamelistadminchangedmessage(::GameListAdminChangedMessage* gamelistadminchangedmessage) { + delete gamelistadminchangedmessage_; + gamelistadminchangedmessage_ = gamelistadminchangedmessage; + if (gamelistadminchangedmessage) { + set_has_gamelistadminchangedmessage(); + } else { + clear_has_gamelistadminchangedmessage(); + } +} // optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; inline bool PokerTHMessage::has_playerinforequestmessage() const { @@ -17187,7 +19216,11 @@ inline void PokerTHMessage::clear_playerinforequestmessage() { clear_has_playerinforequestmessage(); } inline const ::PlayerInfoRequestMessage& PokerTHMessage::playerinforequestmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return playerinforequestmessage_ != NULL ? *playerinforequestmessage_ : *default_instance().playerinforequestmessage_; +#else return playerinforequestmessage_ != NULL ? *playerinforequestmessage_ : *default_instance_->playerinforequestmessage_; +#endif } inline ::PlayerInfoRequestMessage* PokerTHMessage::mutable_playerinforequestmessage() { set_has_playerinforequestmessage(); @@ -17200,6 +19233,15 @@ inline ::PlayerInfoRequestMessage* PokerTHMessage::release_playerinforequestmess playerinforequestmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_playerinforequestmessage(::PlayerInfoRequestMessage* playerinforequestmessage) { + delete playerinforequestmessage_; + playerinforequestmessage_ = playerinforequestmessage; + if (playerinforequestmessage) { + set_has_playerinforequestmessage(); + } else { + clear_has_playerinforequestmessage(); + } +} // optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; inline bool PokerTHMessage::has_playerinforeplymessage() const { @@ -17216,7 +19258,11 @@ inline void PokerTHMessage::clear_playerinforeplymessage() { clear_has_playerinforeplymessage(); } inline const ::PlayerInfoReplyMessage& PokerTHMessage::playerinforeplymessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return playerinforeplymessage_ != NULL ? *playerinforeplymessage_ : *default_instance().playerinforeplymessage_; +#else return playerinforeplymessage_ != NULL ? *playerinforeplymessage_ : *default_instance_->playerinforeplymessage_; +#endif } inline ::PlayerInfoReplyMessage* PokerTHMessage::mutable_playerinforeplymessage() { set_has_playerinforeplymessage(); @@ -17229,6 +19275,15 @@ inline ::PlayerInfoReplyMessage* PokerTHMessage::release_playerinforeplymessage( playerinforeplymessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_playerinforeplymessage(::PlayerInfoReplyMessage* playerinforeplymessage) { + delete playerinforeplymessage_; + playerinforeplymessage_ = playerinforeplymessage; + if (playerinforeplymessage) { + set_has_playerinforeplymessage(); + } else { + clear_has_playerinforeplymessage(); + } +} // optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; inline bool PokerTHMessage::has_subscriptionrequestmessage() const { @@ -17245,7 +19300,11 @@ inline void PokerTHMessage::clear_subscriptionrequestmessage() { clear_has_subscriptionrequestmessage(); } inline const ::SubscriptionRequestMessage& PokerTHMessage::subscriptionrequestmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return subscriptionrequestmessage_ != NULL ? *subscriptionrequestmessage_ : *default_instance().subscriptionrequestmessage_; +#else return subscriptionrequestmessage_ != NULL ? *subscriptionrequestmessage_ : *default_instance_->subscriptionrequestmessage_; +#endif } inline ::SubscriptionRequestMessage* PokerTHMessage::mutable_subscriptionrequestmessage() { set_has_subscriptionrequestmessage(); @@ -17258,6 +19317,15 @@ inline ::SubscriptionRequestMessage* PokerTHMessage::release_subscriptionrequest subscriptionrequestmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_subscriptionrequestmessage(::SubscriptionRequestMessage* subscriptionrequestmessage) { + delete subscriptionrequestmessage_; + subscriptionrequestmessage_ = subscriptionrequestmessage; + if (subscriptionrequestmessage) { + set_has_subscriptionrequestmessage(); + } else { + clear_has_subscriptionrequestmessage(); + } +} // optional .JoinExistingGameMessage joinExistingGameMessage = 22; inline bool PokerTHMessage::has_joinexistinggamemessage() const { @@ -17274,7 +19342,11 @@ inline void PokerTHMessage::clear_joinexistinggamemessage() { clear_has_joinexistinggamemessage(); } inline const ::JoinExistingGameMessage& PokerTHMessage::joinexistinggamemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return joinexistinggamemessage_ != NULL ? *joinexistinggamemessage_ : *default_instance().joinexistinggamemessage_; +#else return joinexistinggamemessage_ != NULL ? *joinexistinggamemessage_ : *default_instance_->joinexistinggamemessage_; +#endif } inline ::JoinExistingGameMessage* PokerTHMessage::mutable_joinexistinggamemessage() { set_has_joinexistinggamemessage(); @@ -17287,6 +19359,15 @@ inline ::JoinExistingGameMessage* PokerTHMessage::release_joinexistinggamemessag joinexistinggamemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_joinexistinggamemessage(::JoinExistingGameMessage* joinexistinggamemessage) { + delete joinexistinggamemessage_; + joinexistinggamemessage_ = joinexistinggamemessage; + if (joinexistinggamemessage) { + set_has_joinexistinggamemessage(); + } else { + clear_has_joinexistinggamemessage(); + } +} // optional .JoinNewGameMessage joinNewGameMessage = 23; inline bool PokerTHMessage::has_joinnewgamemessage() const { @@ -17303,7 +19384,11 @@ inline void PokerTHMessage::clear_joinnewgamemessage() { clear_has_joinnewgamemessage(); } inline const ::JoinNewGameMessage& PokerTHMessage::joinnewgamemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return joinnewgamemessage_ != NULL ? *joinnewgamemessage_ : *default_instance().joinnewgamemessage_; +#else return joinnewgamemessage_ != NULL ? *joinnewgamemessage_ : *default_instance_->joinnewgamemessage_; +#endif } inline ::JoinNewGameMessage* PokerTHMessage::mutable_joinnewgamemessage() { set_has_joinnewgamemessage(); @@ -17316,6 +19401,15 @@ inline ::JoinNewGameMessage* PokerTHMessage::release_joinnewgamemessage() { joinnewgamemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_joinnewgamemessage(::JoinNewGameMessage* joinnewgamemessage) { + delete joinnewgamemessage_; + joinnewgamemessage_ = joinnewgamemessage; + if (joinnewgamemessage) { + set_has_joinnewgamemessage(); + } else { + clear_has_joinnewgamemessage(); + } +} // optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; inline bool PokerTHMessage::has_rejoinexistinggamemessage() const { @@ -17332,7 +19426,11 @@ inline void PokerTHMessage::clear_rejoinexistinggamemessage() { clear_has_rejoinexistinggamemessage(); } inline const ::RejoinExistingGameMessage& PokerTHMessage::rejoinexistinggamemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return rejoinexistinggamemessage_ != NULL ? *rejoinexistinggamemessage_ : *default_instance().rejoinexistinggamemessage_; +#else return rejoinexistinggamemessage_ != NULL ? *rejoinexistinggamemessage_ : *default_instance_->rejoinexistinggamemessage_; +#endif } inline ::RejoinExistingGameMessage* PokerTHMessage::mutable_rejoinexistinggamemessage() { set_has_rejoinexistinggamemessage(); @@ -17345,6 +19443,15 @@ inline ::RejoinExistingGameMessage* PokerTHMessage::release_rejoinexistinggameme rejoinexistinggamemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_rejoinexistinggamemessage(::RejoinExistingGameMessage* rejoinexistinggamemessage) { + delete rejoinexistinggamemessage_; + rejoinexistinggamemessage_ = rejoinexistinggamemessage; + if (rejoinexistinggamemessage) { + set_has_rejoinexistinggamemessage(); + } else { + clear_has_rejoinexistinggamemessage(); + } +} // optional .JoinGameAckMessage joinGameAckMessage = 25; inline bool PokerTHMessage::has_joingameackmessage() const { @@ -17361,7 +19468,11 @@ inline void PokerTHMessage::clear_joingameackmessage() { clear_has_joingameackmessage(); } inline const ::JoinGameAckMessage& PokerTHMessage::joingameackmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return joingameackmessage_ != NULL ? *joingameackmessage_ : *default_instance().joingameackmessage_; +#else return joingameackmessage_ != NULL ? *joingameackmessage_ : *default_instance_->joingameackmessage_; +#endif } inline ::JoinGameAckMessage* PokerTHMessage::mutable_joingameackmessage() { set_has_joingameackmessage(); @@ -17374,6 +19485,15 @@ inline ::JoinGameAckMessage* PokerTHMessage::release_joingameackmessage() { joingameackmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_joingameackmessage(::JoinGameAckMessage* joingameackmessage) { + delete joingameackmessage_; + joingameackmessage_ = joingameackmessage; + if (joingameackmessage) { + set_has_joingameackmessage(); + } else { + clear_has_joingameackmessage(); + } +} // optional .JoinGameFailedMessage joinGameFailedMessage = 26; inline bool PokerTHMessage::has_joingamefailedmessage() const { @@ -17390,7 +19510,11 @@ inline void PokerTHMessage::clear_joingamefailedmessage() { clear_has_joingamefailedmessage(); } inline const ::JoinGameFailedMessage& PokerTHMessage::joingamefailedmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return joingamefailedmessage_ != NULL ? *joingamefailedmessage_ : *default_instance().joingamefailedmessage_; +#else return joingamefailedmessage_ != NULL ? *joingamefailedmessage_ : *default_instance_->joingamefailedmessage_; +#endif } inline ::JoinGameFailedMessage* PokerTHMessage::mutable_joingamefailedmessage() { set_has_joingamefailedmessage(); @@ -17403,6 +19527,15 @@ inline ::JoinGameFailedMessage* PokerTHMessage::release_joingamefailedmessage() joingamefailedmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_joingamefailedmessage(::JoinGameFailedMessage* joingamefailedmessage) { + delete joingamefailedmessage_; + joingamefailedmessage_ = joingamefailedmessage; + if (joingamefailedmessage) { + set_has_joingamefailedmessage(); + } else { + clear_has_joingamefailedmessage(); + } +} // optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; inline bool PokerTHMessage::has_gameplayerjoinedmessage() const { @@ -17419,7 +19552,11 @@ inline void PokerTHMessage::clear_gameplayerjoinedmessage() { clear_has_gameplayerjoinedmessage(); } inline const ::GamePlayerJoinedMessage& PokerTHMessage::gameplayerjoinedmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gameplayerjoinedmessage_ != NULL ? *gameplayerjoinedmessage_ : *default_instance().gameplayerjoinedmessage_; +#else return gameplayerjoinedmessage_ != NULL ? *gameplayerjoinedmessage_ : *default_instance_->gameplayerjoinedmessage_; +#endif } inline ::GamePlayerJoinedMessage* PokerTHMessage::mutable_gameplayerjoinedmessage() { set_has_gameplayerjoinedmessage(); @@ -17432,6 +19569,15 @@ inline ::GamePlayerJoinedMessage* PokerTHMessage::release_gameplayerjoinedmessag gameplayerjoinedmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gameplayerjoinedmessage(::GamePlayerJoinedMessage* gameplayerjoinedmessage) { + delete gameplayerjoinedmessage_; + gameplayerjoinedmessage_ = gameplayerjoinedmessage; + if (gameplayerjoinedmessage) { + set_has_gameplayerjoinedmessage(); + } else { + clear_has_gameplayerjoinedmessage(); + } +} // optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; inline bool PokerTHMessage::has_gameplayerleftmessage() const { @@ -17448,7 +19594,11 @@ inline void PokerTHMessage::clear_gameplayerleftmessage() { clear_has_gameplayerleftmessage(); } inline const ::GamePlayerLeftMessage& PokerTHMessage::gameplayerleftmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gameplayerleftmessage_ != NULL ? *gameplayerleftmessage_ : *default_instance().gameplayerleftmessage_; +#else return gameplayerleftmessage_ != NULL ? *gameplayerleftmessage_ : *default_instance_->gameplayerleftmessage_; +#endif } inline ::GamePlayerLeftMessage* PokerTHMessage::mutable_gameplayerleftmessage() { set_has_gameplayerleftmessage(); @@ -17461,6 +19611,15 @@ inline ::GamePlayerLeftMessage* PokerTHMessage::release_gameplayerleftmessage() gameplayerleftmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gameplayerleftmessage(::GamePlayerLeftMessage* gameplayerleftmessage) { + delete gameplayerleftmessage_; + gameplayerleftmessage_ = gameplayerleftmessage; + if (gameplayerleftmessage) { + set_has_gameplayerleftmessage(); + } else { + clear_has_gameplayerleftmessage(); + } +} // optional .GameAdminChangedMessage gameAdminChangedMessage = 29; inline bool PokerTHMessage::has_gameadminchangedmessage() const { @@ -17477,7 +19636,11 @@ inline void PokerTHMessage::clear_gameadminchangedmessage() { clear_has_gameadminchangedmessage(); } inline const ::GameAdminChangedMessage& PokerTHMessage::gameadminchangedmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gameadminchangedmessage_ != NULL ? *gameadminchangedmessage_ : *default_instance().gameadminchangedmessage_; +#else return gameadminchangedmessage_ != NULL ? *gameadminchangedmessage_ : *default_instance_->gameadminchangedmessage_; +#endif } inline ::GameAdminChangedMessage* PokerTHMessage::mutable_gameadminchangedmessage() { set_has_gameadminchangedmessage(); @@ -17490,6 +19653,15 @@ inline ::GameAdminChangedMessage* PokerTHMessage::release_gameadminchangedmessag gameadminchangedmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gameadminchangedmessage(::GameAdminChangedMessage* gameadminchangedmessage) { + delete gameadminchangedmessage_; + gameadminchangedmessage_ = gameadminchangedmessage; + if (gameadminchangedmessage) { + set_has_gameadminchangedmessage(); + } else { + clear_has_gameadminchangedmessage(); + } +} // optional .RemovedFromGameMessage removedFromGameMessage = 30; inline bool PokerTHMessage::has_removedfromgamemessage() const { @@ -17506,7 +19678,11 @@ inline void PokerTHMessage::clear_removedfromgamemessage() { clear_has_removedfromgamemessage(); } inline const ::RemovedFromGameMessage& PokerTHMessage::removedfromgamemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return removedfromgamemessage_ != NULL ? *removedfromgamemessage_ : *default_instance().removedfromgamemessage_; +#else return removedfromgamemessage_ != NULL ? *removedfromgamemessage_ : *default_instance_->removedfromgamemessage_; +#endif } inline ::RemovedFromGameMessage* PokerTHMessage::mutable_removedfromgamemessage() { set_has_removedfromgamemessage(); @@ -17519,6 +19695,15 @@ inline ::RemovedFromGameMessage* PokerTHMessage::release_removedfromgamemessage( removedfromgamemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_removedfromgamemessage(::RemovedFromGameMessage* removedfromgamemessage) { + delete removedfromgamemessage_; + removedfromgamemessage_ = removedfromgamemessage; + if (removedfromgamemessage) { + set_has_removedfromgamemessage(); + } else { + clear_has_removedfromgamemessage(); + } +} // optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; inline bool PokerTHMessage::has_kickplayerrequestmessage() const { @@ -17535,7 +19720,11 @@ inline void PokerTHMessage::clear_kickplayerrequestmessage() { clear_has_kickplayerrequestmessage(); } inline const ::KickPlayerRequestMessage& PokerTHMessage::kickplayerrequestmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return kickplayerrequestmessage_ != NULL ? *kickplayerrequestmessage_ : *default_instance().kickplayerrequestmessage_; +#else return kickplayerrequestmessage_ != NULL ? *kickplayerrequestmessage_ : *default_instance_->kickplayerrequestmessage_; +#endif } inline ::KickPlayerRequestMessage* PokerTHMessage::mutable_kickplayerrequestmessage() { set_has_kickplayerrequestmessage(); @@ -17548,6 +19737,15 @@ inline ::KickPlayerRequestMessage* PokerTHMessage::release_kickplayerrequestmess kickplayerrequestmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_kickplayerrequestmessage(::KickPlayerRequestMessage* kickplayerrequestmessage) { + delete kickplayerrequestmessage_; + kickplayerrequestmessage_ = kickplayerrequestmessage; + if (kickplayerrequestmessage) { + set_has_kickplayerrequestmessage(); + } else { + clear_has_kickplayerrequestmessage(); + } +} // optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; inline bool PokerTHMessage::has_leavegamerequestmessage() const { @@ -17564,7 +19762,11 @@ inline void PokerTHMessage::clear_leavegamerequestmessage() { clear_has_leavegamerequestmessage(); } inline const ::LeaveGameRequestMessage& PokerTHMessage::leavegamerequestmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return leavegamerequestmessage_ != NULL ? *leavegamerequestmessage_ : *default_instance().leavegamerequestmessage_; +#else return leavegamerequestmessage_ != NULL ? *leavegamerequestmessage_ : *default_instance_->leavegamerequestmessage_; +#endif } inline ::LeaveGameRequestMessage* PokerTHMessage::mutable_leavegamerequestmessage() { set_has_leavegamerequestmessage(); @@ -17577,6 +19779,15 @@ inline ::LeaveGameRequestMessage* PokerTHMessage::release_leavegamerequestmessag leavegamerequestmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_leavegamerequestmessage(::LeaveGameRequestMessage* leavegamerequestmessage) { + delete leavegamerequestmessage_; + leavegamerequestmessage_ = leavegamerequestmessage; + if (leavegamerequestmessage) { + set_has_leavegamerequestmessage(); + } else { + clear_has_leavegamerequestmessage(); + } +} // optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; inline bool PokerTHMessage::has_inviteplayertogamemessage() const { @@ -17593,7 +19804,11 @@ inline void PokerTHMessage::clear_inviteplayertogamemessage() { clear_has_inviteplayertogamemessage(); } inline const ::InvitePlayerToGameMessage& PokerTHMessage::inviteplayertogamemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return inviteplayertogamemessage_ != NULL ? *inviteplayertogamemessage_ : *default_instance().inviteplayertogamemessage_; +#else return inviteplayertogamemessage_ != NULL ? *inviteplayertogamemessage_ : *default_instance_->inviteplayertogamemessage_; +#endif } inline ::InvitePlayerToGameMessage* PokerTHMessage::mutable_inviteplayertogamemessage() { set_has_inviteplayertogamemessage(); @@ -17606,6 +19821,15 @@ inline ::InvitePlayerToGameMessage* PokerTHMessage::release_inviteplayertogameme inviteplayertogamemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_inviteplayertogamemessage(::InvitePlayerToGameMessage* inviteplayertogamemessage) { + delete inviteplayertogamemessage_; + inviteplayertogamemessage_ = inviteplayertogamemessage; + if (inviteplayertogamemessage) { + set_has_inviteplayertogamemessage(); + } else { + clear_has_inviteplayertogamemessage(); + } +} // optional .InviteNotifyMessage inviteNotifyMessage = 34; inline bool PokerTHMessage::has_invitenotifymessage() const { @@ -17622,7 +19846,11 @@ inline void PokerTHMessage::clear_invitenotifymessage() { clear_has_invitenotifymessage(); } inline const ::InviteNotifyMessage& PokerTHMessage::invitenotifymessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return invitenotifymessage_ != NULL ? *invitenotifymessage_ : *default_instance().invitenotifymessage_; +#else return invitenotifymessage_ != NULL ? *invitenotifymessage_ : *default_instance_->invitenotifymessage_; +#endif } inline ::InviteNotifyMessage* PokerTHMessage::mutable_invitenotifymessage() { set_has_invitenotifymessage(); @@ -17635,6 +19863,15 @@ inline ::InviteNotifyMessage* PokerTHMessage::release_invitenotifymessage() { invitenotifymessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_invitenotifymessage(::InviteNotifyMessage* invitenotifymessage) { + delete invitenotifymessage_; + invitenotifymessage_ = invitenotifymessage; + if (invitenotifymessage) { + set_has_invitenotifymessage(); + } else { + clear_has_invitenotifymessage(); + } +} // optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; inline bool PokerTHMessage::has_rejectgameinvitationmessage() const { @@ -17651,7 +19888,11 @@ inline void PokerTHMessage::clear_rejectgameinvitationmessage() { clear_has_rejectgameinvitationmessage(); } inline const ::RejectGameInvitationMessage& PokerTHMessage::rejectgameinvitationmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return rejectgameinvitationmessage_ != NULL ? *rejectgameinvitationmessage_ : *default_instance().rejectgameinvitationmessage_; +#else return rejectgameinvitationmessage_ != NULL ? *rejectgameinvitationmessage_ : *default_instance_->rejectgameinvitationmessage_; +#endif } inline ::RejectGameInvitationMessage* PokerTHMessage::mutable_rejectgameinvitationmessage() { set_has_rejectgameinvitationmessage(); @@ -17664,6 +19905,15 @@ inline ::RejectGameInvitationMessage* PokerTHMessage::release_rejectgameinvitati rejectgameinvitationmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_rejectgameinvitationmessage(::RejectGameInvitationMessage* rejectgameinvitationmessage) { + delete rejectgameinvitationmessage_; + rejectgameinvitationmessage_ = rejectgameinvitationmessage; + if (rejectgameinvitationmessage) { + set_has_rejectgameinvitationmessage(); + } else { + clear_has_rejectgameinvitationmessage(); + } +} // optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; inline bool PokerTHMessage::has_rejectinvnotifymessage() const { @@ -17680,7 +19930,11 @@ inline void PokerTHMessage::clear_rejectinvnotifymessage() { clear_has_rejectinvnotifymessage(); } inline const ::RejectInvNotifyMessage& PokerTHMessage::rejectinvnotifymessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return rejectinvnotifymessage_ != NULL ? *rejectinvnotifymessage_ : *default_instance().rejectinvnotifymessage_; +#else return rejectinvnotifymessage_ != NULL ? *rejectinvnotifymessage_ : *default_instance_->rejectinvnotifymessage_; +#endif } inline ::RejectInvNotifyMessage* PokerTHMessage::mutable_rejectinvnotifymessage() { set_has_rejectinvnotifymessage(); @@ -17693,6 +19947,15 @@ inline ::RejectInvNotifyMessage* PokerTHMessage::release_rejectinvnotifymessage( rejectinvnotifymessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_rejectinvnotifymessage(::RejectInvNotifyMessage* rejectinvnotifymessage) { + delete rejectinvnotifymessage_; + rejectinvnotifymessage_ = rejectinvnotifymessage; + if (rejectinvnotifymessage) { + set_has_rejectinvnotifymessage(); + } else { + clear_has_rejectinvnotifymessage(); + } +} // optional .StartEventMessage startEventMessage = 37; inline bool PokerTHMessage::has_starteventmessage() const { @@ -17709,7 +19972,11 @@ inline void PokerTHMessage::clear_starteventmessage() { clear_has_starteventmessage(); } inline const ::StartEventMessage& PokerTHMessage::starteventmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return starteventmessage_ != NULL ? *starteventmessage_ : *default_instance().starteventmessage_; +#else return starteventmessage_ != NULL ? *starteventmessage_ : *default_instance_->starteventmessage_; +#endif } inline ::StartEventMessage* PokerTHMessage::mutable_starteventmessage() { set_has_starteventmessage(); @@ -17722,6 +19989,15 @@ inline ::StartEventMessage* PokerTHMessage::release_starteventmessage() { starteventmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_starteventmessage(::StartEventMessage* starteventmessage) { + delete starteventmessage_; + starteventmessage_ = starteventmessage; + if (starteventmessage) { + set_has_starteventmessage(); + } else { + clear_has_starteventmessage(); + } +} // optional .StartEventAckMessage startEventAckMessage = 38; inline bool PokerTHMessage::has_starteventackmessage() const { @@ -17738,7 +20014,11 @@ inline void PokerTHMessage::clear_starteventackmessage() { clear_has_starteventackmessage(); } inline const ::StartEventAckMessage& PokerTHMessage::starteventackmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return starteventackmessage_ != NULL ? *starteventackmessage_ : *default_instance().starteventackmessage_; +#else return starteventackmessage_ != NULL ? *starteventackmessage_ : *default_instance_->starteventackmessage_; +#endif } inline ::StartEventAckMessage* PokerTHMessage::mutable_starteventackmessage() { set_has_starteventackmessage(); @@ -17751,6 +20031,15 @@ inline ::StartEventAckMessage* PokerTHMessage::release_starteventackmessage() { starteventackmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_starteventackmessage(::StartEventAckMessage* starteventackmessage) { + delete starteventackmessage_; + starteventackmessage_ = starteventackmessage; + if (starteventackmessage) { + set_has_starteventackmessage(); + } else { + clear_has_starteventackmessage(); + } +} // optional .GameStartInitialMessage gameStartInitialMessage = 39; inline bool PokerTHMessage::has_gamestartinitialmessage() const { @@ -17767,7 +20056,11 @@ inline void PokerTHMessage::clear_gamestartinitialmessage() { clear_has_gamestartinitialmessage(); } inline const ::GameStartInitialMessage& PokerTHMessage::gamestartinitialmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gamestartinitialmessage_ != NULL ? *gamestartinitialmessage_ : *default_instance().gamestartinitialmessage_; +#else return gamestartinitialmessage_ != NULL ? *gamestartinitialmessage_ : *default_instance_->gamestartinitialmessage_; +#endif } inline ::GameStartInitialMessage* PokerTHMessage::mutable_gamestartinitialmessage() { set_has_gamestartinitialmessage(); @@ -17780,6 +20073,15 @@ inline ::GameStartInitialMessage* PokerTHMessage::release_gamestartinitialmessag gamestartinitialmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gamestartinitialmessage(::GameStartInitialMessage* gamestartinitialmessage) { + delete gamestartinitialmessage_; + gamestartinitialmessage_ = gamestartinitialmessage; + if (gamestartinitialmessage) { + set_has_gamestartinitialmessage(); + } else { + clear_has_gamestartinitialmessage(); + } +} // optional .GameStartRejoinMessage gameStartRejoinMessage = 40; inline bool PokerTHMessage::has_gamestartrejoinmessage() const { @@ -17796,7 +20098,11 @@ inline void PokerTHMessage::clear_gamestartrejoinmessage() { clear_has_gamestartrejoinmessage(); } inline const ::GameStartRejoinMessage& PokerTHMessage::gamestartrejoinmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gamestartrejoinmessage_ != NULL ? *gamestartrejoinmessage_ : *default_instance().gamestartrejoinmessage_; +#else return gamestartrejoinmessage_ != NULL ? *gamestartrejoinmessage_ : *default_instance_->gamestartrejoinmessage_; +#endif } inline ::GameStartRejoinMessage* PokerTHMessage::mutable_gamestartrejoinmessage() { set_has_gamestartrejoinmessage(); @@ -17809,6 +20115,15 @@ inline ::GameStartRejoinMessage* PokerTHMessage::release_gamestartrejoinmessage( gamestartrejoinmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gamestartrejoinmessage(::GameStartRejoinMessage* gamestartrejoinmessage) { + delete gamestartrejoinmessage_; + gamestartrejoinmessage_ = gamestartrejoinmessage; + if (gamestartrejoinmessage) { + set_has_gamestartrejoinmessage(); + } else { + clear_has_gamestartrejoinmessage(); + } +} // optional .HandStartMessage handStartMessage = 41; inline bool PokerTHMessage::has_handstartmessage() const { @@ -17825,7 +20140,11 @@ inline void PokerTHMessage::clear_handstartmessage() { clear_has_handstartmessage(); } inline const ::HandStartMessage& PokerTHMessage::handstartmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return handstartmessage_ != NULL ? *handstartmessage_ : *default_instance().handstartmessage_; +#else return handstartmessage_ != NULL ? *handstartmessage_ : *default_instance_->handstartmessage_; +#endif } inline ::HandStartMessage* PokerTHMessage::mutable_handstartmessage() { set_has_handstartmessage(); @@ -17838,6 +20157,15 @@ inline ::HandStartMessage* PokerTHMessage::release_handstartmessage() { handstartmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_handstartmessage(::HandStartMessage* handstartmessage) { + delete handstartmessage_; + handstartmessage_ = handstartmessage; + if (handstartmessage) { + set_has_handstartmessage(); + } else { + clear_has_handstartmessage(); + } +} // optional .PlayersTurnMessage playersTurnMessage = 42; inline bool PokerTHMessage::has_playersturnmessage() const { @@ -17854,7 +20182,11 @@ inline void PokerTHMessage::clear_playersturnmessage() { clear_has_playersturnmessage(); } inline const ::PlayersTurnMessage& PokerTHMessage::playersturnmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return playersturnmessage_ != NULL ? *playersturnmessage_ : *default_instance().playersturnmessage_; +#else return playersturnmessage_ != NULL ? *playersturnmessage_ : *default_instance_->playersturnmessage_; +#endif } inline ::PlayersTurnMessage* PokerTHMessage::mutable_playersturnmessage() { set_has_playersturnmessage(); @@ -17867,6 +20199,15 @@ inline ::PlayersTurnMessage* PokerTHMessage::release_playersturnmessage() { playersturnmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_playersturnmessage(::PlayersTurnMessage* playersturnmessage) { + delete playersturnmessage_; + playersturnmessage_ = playersturnmessage; + if (playersturnmessage) { + set_has_playersturnmessage(); + } else { + clear_has_playersturnmessage(); + } +} // optional .MyActionRequestMessage myActionRequestMessage = 43; inline bool PokerTHMessage::has_myactionrequestmessage() const { @@ -17883,7 +20224,11 @@ inline void PokerTHMessage::clear_myactionrequestmessage() { clear_has_myactionrequestmessage(); } inline const ::MyActionRequestMessage& PokerTHMessage::myactionrequestmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return myactionrequestmessage_ != NULL ? *myactionrequestmessage_ : *default_instance().myactionrequestmessage_; +#else return myactionrequestmessage_ != NULL ? *myactionrequestmessage_ : *default_instance_->myactionrequestmessage_; +#endif } inline ::MyActionRequestMessage* PokerTHMessage::mutable_myactionrequestmessage() { set_has_myactionrequestmessage(); @@ -17896,6 +20241,15 @@ inline ::MyActionRequestMessage* PokerTHMessage::release_myactionrequestmessage( myactionrequestmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_myactionrequestmessage(::MyActionRequestMessage* myactionrequestmessage) { + delete myactionrequestmessage_; + myactionrequestmessage_ = myactionrequestmessage; + if (myactionrequestmessage) { + set_has_myactionrequestmessage(); + } else { + clear_has_myactionrequestmessage(); + } +} // optional .YourActionRejectedMessage yourActionRejectedMessage = 44; inline bool PokerTHMessage::has_youractionrejectedmessage() const { @@ -17912,7 +20266,11 @@ inline void PokerTHMessage::clear_youractionrejectedmessage() { clear_has_youractionrejectedmessage(); } inline const ::YourActionRejectedMessage& PokerTHMessage::youractionrejectedmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return youractionrejectedmessage_ != NULL ? *youractionrejectedmessage_ : *default_instance().youractionrejectedmessage_; +#else return youractionrejectedmessage_ != NULL ? *youractionrejectedmessage_ : *default_instance_->youractionrejectedmessage_; +#endif } inline ::YourActionRejectedMessage* PokerTHMessage::mutable_youractionrejectedmessage() { set_has_youractionrejectedmessage(); @@ -17925,6 +20283,15 @@ inline ::YourActionRejectedMessage* PokerTHMessage::release_youractionrejectedme youractionrejectedmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_youractionrejectedmessage(::YourActionRejectedMessage* youractionrejectedmessage) { + delete youractionrejectedmessage_; + youractionrejectedmessage_ = youractionrejectedmessage; + if (youractionrejectedmessage) { + set_has_youractionrejectedmessage(); + } else { + clear_has_youractionrejectedmessage(); + } +} // optional .PlayersActionDoneMessage playersActionDoneMessage = 45; inline bool PokerTHMessage::has_playersactiondonemessage() const { @@ -17941,7 +20308,11 @@ inline void PokerTHMessage::clear_playersactiondonemessage() { clear_has_playersactiondonemessage(); } inline const ::PlayersActionDoneMessage& PokerTHMessage::playersactiondonemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return playersactiondonemessage_ != NULL ? *playersactiondonemessage_ : *default_instance().playersactiondonemessage_; +#else return playersactiondonemessage_ != NULL ? *playersactiondonemessage_ : *default_instance_->playersactiondonemessage_; +#endif } inline ::PlayersActionDoneMessage* PokerTHMessage::mutable_playersactiondonemessage() { set_has_playersactiondonemessage(); @@ -17954,6 +20325,15 @@ inline ::PlayersActionDoneMessage* PokerTHMessage::release_playersactiondonemess playersactiondonemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_playersactiondonemessage(::PlayersActionDoneMessage* playersactiondonemessage) { + delete playersactiondonemessage_; + playersactiondonemessage_ = playersactiondonemessage; + if (playersactiondonemessage) { + set_has_playersactiondonemessage(); + } else { + clear_has_playersactiondonemessage(); + } +} // optional .DealFlopCardsMessage dealFlopCardsMessage = 46; inline bool PokerTHMessage::has_dealflopcardsmessage() const { @@ -17970,7 +20350,11 @@ inline void PokerTHMessage::clear_dealflopcardsmessage() { clear_has_dealflopcardsmessage(); } inline const ::DealFlopCardsMessage& PokerTHMessage::dealflopcardsmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return dealflopcardsmessage_ != NULL ? *dealflopcardsmessage_ : *default_instance().dealflopcardsmessage_; +#else return dealflopcardsmessage_ != NULL ? *dealflopcardsmessage_ : *default_instance_->dealflopcardsmessage_; +#endif } inline ::DealFlopCardsMessage* PokerTHMessage::mutable_dealflopcardsmessage() { set_has_dealflopcardsmessage(); @@ -17983,6 +20367,15 @@ inline ::DealFlopCardsMessage* PokerTHMessage::release_dealflopcardsmessage() { dealflopcardsmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_dealflopcardsmessage(::DealFlopCardsMessage* dealflopcardsmessage) { + delete dealflopcardsmessage_; + dealflopcardsmessage_ = dealflopcardsmessage; + if (dealflopcardsmessage) { + set_has_dealflopcardsmessage(); + } else { + clear_has_dealflopcardsmessage(); + } +} // optional .DealTurnCardMessage dealTurnCardMessage = 47; inline bool PokerTHMessage::has_dealturncardmessage() const { @@ -17999,7 +20392,11 @@ inline void PokerTHMessage::clear_dealturncardmessage() { clear_has_dealturncardmessage(); } inline const ::DealTurnCardMessage& PokerTHMessage::dealturncardmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return dealturncardmessage_ != NULL ? *dealturncardmessage_ : *default_instance().dealturncardmessage_; +#else return dealturncardmessage_ != NULL ? *dealturncardmessage_ : *default_instance_->dealturncardmessage_; +#endif } inline ::DealTurnCardMessage* PokerTHMessage::mutable_dealturncardmessage() { set_has_dealturncardmessage(); @@ -18012,6 +20409,15 @@ inline ::DealTurnCardMessage* PokerTHMessage::release_dealturncardmessage() { dealturncardmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_dealturncardmessage(::DealTurnCardMessage* dealturncardmessage) { + delete dealturncardmessage_; + dealturncardmessage_ = dealturncardmessage; + if (dealturncardmessage) { + set_has_dealturncardmessage(); + } else { + clear_has_dealturncardmessage(); + } +} // optional .DealRiverCardMessage dealRiverCardMessage = 48; inline bool PokerTHMessage::has_dealrivercardmessage() const { @@ -18028,7 +20434,11 @@ inline void PokerTHMessage::clear_dealrivercardmessage() { clear_has_dealrivercardmessage(); } inline const ::DealRiverCardMessage& PokerTHMessage::dealrivercardmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return dealrivercardmessage_ != NULL ? *dealrivercardmessage_ : *default_instance().dealrivercardmessage_; +#else return dealrivercardmessage_ != NULL ? *dealrivercardmessage_ : *default_instance_->dealrivercardmessage_; +#endif } inline ::DealRiverCardMessage* PokerTHMessage::mutable_dealrivercardmessage() { set_has_dealrivercardmessage(); @@ -18041,6 +20451,15 @@ inline ::DealRiverCardMessage* PokerTHMessage::release_dealrivercardmessage() { dealrivercardmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_dealrivercardmessage(::DealRiverCardMessage* dealrivercardmessage) { + delete dealrivercardmessage_; + dealrivercardmessage_ = dealrivercardmessage; + if (dealrivercardmessage) { + set_has_dealrivercardmessage(); + } else { + clear_has_dealrivercardmessage(); + } +} // optional .AllInShowCardsMessage allInShowCardsMessage = 49; inline bool PokerTHMessage::has_allinshowcardsmessage() const { @@ -18057,7 +20476,11 @@ inline void PokerTHMessage::clear_allinshowcardsmessage() { clear_has_allinshowcardsmessage(); } inline const ::AllInShowCardsMessage& PokerTHMessage::allinshowcardsmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return allinshowcardsmessage_ != NULL ? *allinshowcardsmessage_ : *default_instance().allinshowcardsmessage_; +#else return allinshowcardsmessage_ != NULL ? *allinshowcardsmessage_ : *default_instance_->allinshowcardsmessage_; +#endif } inline ::AllInShowCardsMessage* PokerTHMessage::mutable_allinshowcardsmessage() { set_has_allinshowcardsmessage(); @@ -18070,6 +20493,15 @@ inline ::AllInShowCardsMessage* PokerTHMessage::release_allinshowcardsmessage() allinshowcardsmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_allinshowcardsmessage(::AllInShowCardsMessage* allinshowcardsmessage) { + delete allinshowcardsmessage_; + allinshowcardsmessage_ = allinshowcardsmessage; + if (allinshowcardsmessage) { + set_has_allinshowcardsmessage(); + } else { + clear_has_allinshowcardsmessage(); + } +} // optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; inline bool PokerTHMessage::has_endofhandshowcardsmessage() const { @@ -18086,7 +20518,11 @@ inline void PokerTHMessage::clear_endofhandshowcardsmessage() { clear_has_endofhandshowcardsmessage(); } inline const ::EndOfHandShowCardsMessage& PokerTHMessage::endofhandshowcardsmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return endofhandshowcardsmessage_ != NULL ? *endofhandshowcardsmessage_ : *default_instance().endofhandshowcardsmessage_; +#else return endofhandshowcardsmessage_ != NULL ? *endofhandshowcardsmessage_ : *default_instance_->endofhandshowcardsmessage_; +#endif } inline ::EndOfHandShowCardsMessage* PokerTHMessage::mutable_endofhandshowcardsmessage() { set_has_endofhandshowcardsmessage(); @@ -18099,6 +20535,15 @@ inline ::EndOfHandShowCardsMessage* PokerTHMessage::release_endofhandshowcardsme endofhandshowcardsmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_endofhandshowcardsmessage(::EndOfHandShowCardsMessage* endofhandshowcardsmessage) { + delete endofhandshowcardsmessage_; + endofhandshowcardsmessage_ = endofhandshowcardsmessage; + if (endofhandshowcardsmessage) { + set_has_endofhandshowcardsmessage(); + } else { + clear_has_endofhandshowcardsmessage(); + } +} // optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; inline bool PokerTHMessage::has_endofhandhidecardsmessage() const { @@ -18115,7 +20560,11 @@ inline void PokerTHMessage::clear_endofhandhidecardsmessage() { clear_has_endofhandhidecardsmessage(); } inline const ::EndOfHandHideCardsMessage& PokerTHMessage::endofhandhidecardsmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return endofhandhidecardsmessage_ != NULL ? *endofhandhidecardsmessage_ : *default_instance().endofhandhidecardsmessage_; +#else return endofhandhidecardsmessage_ != NULL ? *endofhandhidecardsmessage_ : *default_instance_->endofhandhidecardsmessage_; +#endif } inline ::EndOfHandHideCardsMessage* PokerTHMessage::mutable_endofhandhidecardsmessage() { set_has_endofhandhidecardsmessage(); @@ -18128,6 +20577,15 @@ inline ::EndOfHandHideCardsMessage* PokerTHMessage::release_endofhandhidecardsme endofhandhidecardsmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_endofhandhidecardsmessage(::EndOfHandHideCardsMessage* endofhandhidecardsmessage) { + delete endofhandhidecardsmessage_; + endofhandhidecardsmessage_ = endofhandhidecardsmessage; + if (endofhandhidecardsmessage) { + set_has_endofhandhidecardsmessage(); + } else { + clear_has_endofhandhidecardsmessage(); + } +} // optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; inline bool PokerTHMessage::has_showmycardsrequestmessage() const { @@ -18144,7 +20602,11 @@ inline void PokerTHMessage::clear_showmycardsrequestmessage() { clear_has_showmycardsrequestmessage(); } inline const ::ShowMyCardsRequestMessage& PokerTHMessage::showmycardsrequestmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return showmycardsrequestmessage_ != NULL ? *showmycardsrequestmessage_ : *default_instance().showmycardsrequestmessage_; +#else return showmycardsrequestmessage_ != NULL ? *showmycardsrequestmessage_ : *default_instance_->showmycardsrequestmessage_; +#endif } inline ::ShowMyCardsRequestMessage* PokerTHMessage::mutable_showmycardsrequestmessage() { set_has_showmycardsrequestmessage(); @@ -18157,6 +20619,15 @@ inline ::ShowMyCardsRequestMessage* PokerTHMessage::release_showmycardsrequestme showmycardsrequestmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_showmycardsrequestmessage(::ShowMyCardsRequestMessage* showmycardsrequestmessage) { + delete showmycardsrequestmessage_; + showmycardsrequestmessage_ = showmycardsrequestmessage; + if (showmycardsrequestmessage) { + set_has_showmycardsrequestmessage(); + } else { + clear_has_showmycardsrequestmessage(); + } +} // optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; inline bool PokerTHMessage::has_afterhandshowcardsmessage() const { @@ -18173,7 +20644,11 @@ inline void PokerTHMessage::clear_afterhandshowcardsmessage() { clear_has_afterhandshowcardsmessage(); } inline const ::AfterHandShowCardsMessage& PokerTHMessage::afterhandshowcardsmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return afterhandshowcardsmessage_ != NULL ? *afterhandshowcardsmessage_ : *default_instance().afterhandshowcardsmessage_; +#else return afterhandshowcardsmessage_ != NULL ? *afterhandshowcardsmessage_ : *default_instance_->afterhandshowcardsmessage_; +#endif } inline ::AfterHandShowCardsMessage* PokerTHMessage::mutable_afterhandshowcardsmessage() { set_has_afterhandshowcardsmessage(); @@ -18186,6 +20661,15 @@ inline ::AfterHandShowCardsMessage* PokerTHMessage::release_afterhandshowcardsme afterhandshowcardsmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_afterhandshowcardsmessage(::AfterHandShowCardsMessage* afterhandshowcardsmessage) { + delete afterhandshowcardsmessage_; + afterhandshowcardsmessage_ = afterhandshowcardsmessage; + if (afterhandshowcardsmessage) { + set_has_afterhandshowcardsmessage(); + } else { + clear_has_afterhandshowcardsmessage(); + } +} // optional .EndOfGameMessage endOfGameMessage = 54; inline bool PokerTHMessage::has_endofgamemessage() const { @@ -18202,7 +20686,11 @@ inline void PokerTHMessage::clear_endofgamemessage() { clear_has_endofgamemessage(); } inline const ::EndOfGameMessage& PokerTHMessage::endofgamemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return endofgamemessage_ != NULL ? *endofgamemessage_ : *default_instance().endofgamemessage_; +#else return endofgamemessage_ != NULL ? *endofgamemessage_ : *default_instance_->endofgamemessage_; +#endif } inline ::EndOfGameMessage* PokerTHMessage::mutable_endofgamemessage() { set_has_endofgamemessage(); @@ -18215,6 +20703,15 @@ inline ::EndOfGameMessage* PokerTHMessage::release_endofgamemessage() { endofgamemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_endofgamemessage(::EndOfGameMessage* endofgamemessage) { + delete endofgamemessage_; + endofgamemessage_ = endofgamemessage; + if (endofgamemessage) { + set_has_endofgamemessage(); + } else { + clear_has_endofgamemessage(); + } +} // optional .PlayerIdChangedMessage playerIdChangedMessage = 55; inline bool PokerTHMessage::has_playeridchangedmessage() const { @@ -18231,7 +20728,11 @@ inline void PokerTHMessage::clear_playeridchangedmessage() { clear_has_playeridchangedmessage(); } inline const ::PlayerIdChangedMessage& PokerTHMessage::playeridchangedmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return playeridchangedmessage_ != NULL ? *playeridchangedmessage_ : *default_instance().playeridchangedmessage_; +#else return playeridchangedmessage_ != NULL ? *playeridchangedmessage_ : *default_instance_->playeridchangedmessage_; +#endif } inline ::PlayerIdChangedMessage* PokerTHMessage::mutable_playeridchangedmessage() { set_has_playeridchangedmessage(); @@ -18244,6 +20745,15 @@ inline ::PlayerIdChangedMessage* PokerTHMessage::release_playeridchangedmessage( playeridchangedmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_playeridchangedmessage(::PlayerIdChangedMessage* playeridchangedmessage) { + delete playeridchangedmessage_; + playeridchangedmessage_ = playeridchangedmessage; + if (playeridchangedmessage) { + set_has_playeridchangedmessage(); + } else { + clear_has_playeridchangedmessage(); + } +} // optional .AskKickPlayerMessage askKickPlayerMessage = 56; inline bool PokerTHMessage::has_askkickplayermessage() const { @@ -18260,7 +20770,11 @@ inline void PokerTHMessage::clear_askkickplayermessage() { clear_has_askkickplayermessage(); } inline const ::AskKickPlayerMessage& PokerTHMessage::askkickplayermessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return askkickplayermessage_ != NULL ? *askkickplayermessage_ : *default_instance().askkickplayermessage_; +#else return askkickplayermessage_ != NULL ? *askkickplayermessage_ : *default_instance_->askkickplayermessage_; +#endif } inline ::AskKickPlayerMessage* PokerTHMessage::mutable_askkickplayermessage() { set_has_askkickplayermessage(); @@ -18273,6 +20787,15 @@ inline ::AskKickPlayerMessage* PokerTHMessage::release_askkickplayermessage() { askkickplayermessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_askkickplayermessage(::AskKickPlayerMessage* askkickplayermessage) { + delete askkickplayermessage_; + askkickplayermessage_ = askkickplayermessage; + if (askkickplayermessage) { + set_has_askkickplayermessage(); + } else { + clear_has_askkickplayermessage(); + } +} // optional .AskKickDeniedMessage askKickDeniedMessage = 57; inline bool PokerTHMessage::has_askkickdeniedmessage() const { @@ -18289,7 +20812,11 @@ inline void PokerTHMessage::clear_askkickdeniedmessage() { clear_has_askkickdeniedmessage(); } inline const ::AskKickDeniedMessage& PokerTHMessage::askkickdeniedmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return askkickdeniedmessage_ != NULL ? *askkickdeniedmessage_ : *default_instance().askkickdeniedmessage_; +#else return askkickdeniedmessage_ != NULL ? *askkickdeniedmessage_ : *default_instance_->askkickdeniedmessage_; +#endif } inline ::AskKickDeniedMessage* PokerTHMessage::mutable_askkickdeniedmessage() { set_has_askkickdeniedmessage(); @@ -18302,6 +20829,15 @@ inline ::AskKickDeniedMessage* PokerTHMessage::release_askkickdeniedmessage() { askkickdeniedmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_askkickdeniedmessage(::AskKickDeniedMessage* askkickdeniedmessage) { + delete askkickdeniedmessage_; + askkickdeniedmessage_ = askkickdeniedmessage; + if (askkickdeniedmessage) { + set_has_askkickdeniedmessage(); + } else { + clear_has_askkickdeniedmessage(); + } +} // optional .StartKickPetitionMessage startKickPetitionMessage = 58; inline bool PokerTHMessage::has_startkickpetitionmessage() const { @@ -18318,7 +20854,11 @@ inline void PokerTHMessage::clear_startkickpetitionmessage() { clear_has_startkickpetitionmessage(); } inline const ::StartKickPetitionMessage& PokerTHMessage::startkickpetitionmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return startkickpetitionmessage_ != NULL ? *startkickpetitionmessage_ : *default_instance().startkickpetitionmessage_; +#else return startkickpetitionmessage_ != NULL ? *startkickpetitionmessage_ : *default_instance_->startkickpetitionmessage_; +#endif } inline ::StartKickPetitionMessage* PokerTHMessage::mutable_startkickpetitionmessage() { set_has_startkickpetitionmessage(); @@ -18331,6 +20871,15 @@ inline ::StartKickPetitionMessage* PokerTHMessage::release_startkickpetitionmess startkickpetitionmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_startkickpetitionmessage(::StartKickPetitionMessage* startkickpetitionmessage) { + delete startkickpetitionmessage_; + startkickpetitionmessage_ = startkickpetitionmessage; + if (startkickpetitionmessage) { + set_has_startkickpetitionmessage(); + } else { + clear_has_startkickpetitionmessage(); + } +} // optional .VoteKickRequestMessage voteKickRequestMessage = 59; inline bool PokerTHMessage::has_votekickrequestmessage() const { @@ -18347,7 +20896,11 @@ inline void PokerTHMessage::clear_votekickrequestmessage() { clear_has_votekickrequestmessage(); } inline const ::VoteKickRequestMessage& PokerTHMessage::votekickrequestmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return votekickrequestmessage_ != NULL ? *votekickrequestmessage_ : *default_instance().votekickrequestmessage_; +#else return votekickrequestmessage_ != NULL ? *votekickrequestmessage_ : *default_instance_->votekickrequestmessage_; +#endif } inline ::VoteKickRequestMessage* PokerTHMessage::mutable_votekickrequestmessage() { set_has_votekickrequestmessage(); @@ -18360,6 +20913,15 @@ inline ::VoteKickRequestMessage* PokerTHMessage::release_votekickrequestmessage( votekickrequestmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_votekickrequestmessage(::VoteKickRequestMessage* votekickrequestmessage) { + delete votekickrequestmessage_; + votekickrequestmessage_ = votekickrequestmessage; + if (votekickrequestmessage) { + set_has_votekickrequestmessage(); + } else { + clear_has_votekickrequestmessage(); + } +} // optional .VoteKickReplyMessage voteKickReplyMessage = 60; inline bool PokerTHMessage::has_votekickreplymessage() const { @@ -18376,7 +20938,11 @@ inline void PokerTHMessage::clear_votekickreplymessage() { clear_has_votekickreplymessage(); } inline const ::VoteKickReplyMessage& PokerTHMessage::votekickreplymessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return votekickreplymessage_ != NULL ? *votekickreplymessage_ : *default_instance().votekickreplymessage_; +#else return votekickreplymessage_ != NULL ? *votekickreplymessage_ : *default_instance_->votekickreplymessage_; +#endif } inline ::VoteKickReplyMessage* PokerTHMessage::mutable_votekickreplymessage() { set_has_votekickreplymessage(); @@ -18389,6 +20955,15 @@ inline ::VoteKickReplyMessage* PokerTHMessage::release_votekickreplymessage() { votekickreplymessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_votekickreplymessage(::VoteKickReplyMessage* votekickreplymessage) { + delete votekickreplymessage_; + votekickreplymessage_ = votekickreplymessage; + if (votekickreplymessage) { + set_has_votekickreplymessage(); + } else { + clear_has_votekickreplymessage(); + } +} // optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; inline bool PokerTHMessage::has_kickpetitionupdatemessage() const { @@ -18405,7 +20980,11 @@ inline void PokerTHMessage::clear_kickpetitionupdatemessage() { clear_has_kickpetitionupdatemessage(); } inline const ::KickPetitionUpdateMessage& PokerTHMessage::kickpetitionupdatemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return kickpetitionupdatemessage_ != NULL ? *kickpetitionupdatemessage_ : *default_instance().kickpetitionupdatemessage_; +#else return kickpetitionupdatemessage_ != NULL ? *kickpetitionupdatemessage_ : *default_instance_->kickpetitionupdatemessage_; +#endif } inline ::KickPetitionUpdateMessage* PokerTHMessage::mutable_kickpetitionupdatemessage() { set_has_kickpetitionupdatemessage(); @@ -18418,6 +20997,15 @@ inline ::KickPetitionUpdateMessage* PokerTHMessage::release_kickpetitionupdateme kickpetitionupdatemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_kickpetitionupdatemessage(::KickPetitionUpdateMessage* kickpetitionupdatemessage) { + delete kickpetitionupdatemessage_; + kickpetitionupdatemessage_ = kickpetitionupdatemessage; + if (kickpetitionupdatemessage) { + set_has_kickpetitionupdatemessage(); + } else { + clear_has_kickpetitionupdatemessage(); + } +} // optional .EndKickPetitionMessage endKickPetitionMessage = 62; inline bool PokerTHMessage::has_endkickpetitionmessage() const { @@ -18434,7 +21022,11 @@ inline void PokerTHMessage::clear_endkickpetitionmessage() { clear_has_endkickpetitionmessage(); } inline const ::EndKickPetitionMessage& PokerTHMessage::endkickpetitionmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return endkickpetitionmessage_ != NULL ? *endkickpetitionmessage_ : *default_instance().endkickpetitionmessage_; +#else return endkickpetitionmessage_ != NULL ? *endkickpetitionmessage_ : *default_instance_->endkickpetitionmessage_; +#endif } inline ::EndKickPetitionMessage* PokerTHMessage::mutable_endkickpetitionmessage() { set_has_endkickpetitionmessage(); @@ -18447,6 +21039,15 @@ inline ::EndKickPetitionMessage* PokerTHMessage::release_endkickpetitionmessage( endkickpetitionmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_endkickpetitionmessage(::EndKickPetitionMessage* endkickpetitionmessage) { + delete endkickpetitionmessage_; + endkickpetitionmessage_ = endkickpetitionmessage; + if (endkickpetitionmessage) { + set_has_endkickpetitionmessage(); + } else { + clear_has_endkickpetitionmessage(); + } +} // optional .StatisticsMessage statisticsMessage = 63; inline bool PokerTHMessage::has_statisticsmessage() const { @@ -18463,7 +21064,11 @@ inline void PokerTHMessage::clear_statisticsmessage() { clear_has_statisticsmessage(); } inline const ::StatisticsMessage& PokerTHMessage::statisticsmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return statisticsmessage_ != NULL ? *statisticsmessage_ : *default_instance().statisticsmessage_; +#else return statisticsmessage_ != NULL ? *statisticsmessage_ : *default_instance_->statisticsmessage_; +#endif } inline ::StatisticsMessage* PokerTHMessage::mutable_statisticsmessage() { set_has_statisticsmessage(); @@ -18476,6 +21081,15 @@ inline ::StatisticsMessage* PokerTHMessage::release_statisticsmessage() { statisticsmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_statisticsmessage(::StatisticsMessage* statisticsmessage) { + delete statisticsmessage_; + statisticsmessage_ = statisticsmessage; + if (statisticsmessage) { + set_has_statisticsmessage(); + } else { + clear_has_statisticsmessage(); + } +} // optional .ChatRequestMessage chatRequestMessage = 64; inline bool PokerTHMessage::has_chatrequestmessage() const { @@ -18492,7 +21106,11 @@ inline void PokerTHMessage::clear_chatrequestmessage() { clear_has_chatrequestmessage(); } inline const ::ChatRequestMessage& PokerTHMessage::chatrequestmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return chatrequestmessage_ != NULL ? *chatrequestmessage_ : *default_instance().chatrequestmessage_; +#else return chatrequestmessage_ != NULL ? *chatrequestmessage_ : *default_instance_->chatrequestmessage_; +#endif } inline ::ChatRequestMessage* PokerTHMessage::mutable_chatrequestmessage() { set_has_chatrequestmessage(); @@ -18505,6 +21123,15 @@ inline ::ChatRequestMessage* PokerTHMessage::release_chatrequestmessage() { chatrequestmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_chatrequestmessage(::ChatRequestMessage* chatrequestmessage) { + delete chatrequestmessage_; + chatrequestmessage_ = chatrequestmessage; + if (chatrequestmessage) { + set_has_chatrequestmessage(); + } else { + clear_has_chatrequestmessage(); + } +} // optional .ChatMessage chatMessage = 65; inline bool PokerTHMessage::has_chatmessage() const { @@ -18521,7 +21148,11 @@ inline void PokerTHMessage::clear_chatmessage() { clear_has_chatmessage(); } inline const ::ChatMessage& PokerTHMessage::chatmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return chatmessage_ != NULL ? *chatmessage_ : *default_instance().chatmessage_; +#else return chatmessage_ != NULL ? *chatmessage_ : *default_instance_->chatmessage_; +#endif } inline ::ChatMessage* PokerTHMessage::mutable_chatmessage() { set_has_chatmessage(); @@ -18534,6 +21165,15 @@ inline ::ChatMessage* PokerTHMessage::release_chatmessage() { chatmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_chatmessage(::ChatMessage* chatmessage) { + delete chatmessage_; + chatmessage_ = chatmessage; + if (chatmessage) { + set_has_chatmessage(); + } else { + clear_has_chatmessage(); + } +} // optional .ChatRejectMessage chatRejectMessage = 66; inline bool PokerTHMessage::has_chatrejectmessage() const { @@ -18550,7 +21190,11 @@ inline void PokerTHMessage::clear_chatrejectmessage() { clear_has_chatrejectmessage(); } inline const ::ChatRejectMessage& PokerTHMessage::chatrejectmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return chatrejectmessage_ != NULL ? *chatrejectmessage_ : *default_instance().chatrejectmessage_; +#else return chatrejectmessage_ != NULL ? *chatrejectmessage_ : *default_instance_->chatrejectmessage_; +#endif } inline ::ChatRejectMessage* PokerTHMessage::mutable_chatrejectmessage() { set_has_chatrejectmessage(); @@ -18563,6 +21207,15 @@ inline ::ChatRejectMessage* PokerTHMessage::release_chatrejectmessage() { chatrejectmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_chatrejectmessage(::ChatRejectMessage* chatrejectmessage) { + delete chatrejectmessage_; + chatrejectmessage_ = chatrejectmessage; + if (chatrejectmessage) { + set_has_chatrejectmessage(); + } else { + clear_has_chatrejectmessage(); + } +} // optional .DialogMessage dialogMessage = 67; inline bool PokerTHMessage::has_dialogmessage() const { @@ -18579,7 +21232,11 @@ inline void PokerTHMessage::clear_dialogmessage() { clear_has_dialogmessage(); } inline const ::DialogMessage& PokerTHMessage::dialogmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return dialogmessage_ != NULL ? *dialogmessage_ : *default_instance().dialogmessage_; +#else return dialogmessage_ != NULL ? *dialogmessage_ : *default_instance_->dialogmessage_; +#endif } inline ::DialogMessage* PokerTHMessage::mutable_dialogmessage() { set_has_dialogmessage(); @@ -18592,6 +21249,15 @@ inline ::DialogMessage* PokerTHMessage::release_dialogmessage() { dialogmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_dialogmessage(::DialogMessage* dialogmessage) { + delete dialogmessage_; + dialogmessage_ = dialogmessage; + if (dialogmessage) { + set_has_dialogmessage(); + } else { + clear_has_dialogmessage(); + } +} // optional .TimeoutWarningMessage timeoutWarningMessage = 68; inline bool PokerTHMessage::has_timeoutwarningmessage() const { @@ -18608,7 +21274,11 @@ inline void PokerTHMessage::clear_timeoutwarningmessage() { clear_has_timeoutwarningmessage(); } inline const ::TimeoutWarningMessage& PokerTHMessage::timeoutwarningmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return timeoutwarningmessage_ != NULL ? *timeoutwarningmessage_ : *default_instance().timeoutwarningmessage_; +#else return timeoutwarningmessage_ != NULL ? *timeoutwarningmessage_ : *default_instance_->timeoutwarningmessage_; +#endif } inline ::TimeoutWarningMessage* PokerTHMessage::mutable_timeoutwarningmessage() { set_has_timeoutwarningmessage(); @@ -18621,6 +21291,15 @@ inline ::TimeoutWarningMessage* PokerTHMessage::release_timeoutwarningmessage() timeoutwarningmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_timeoutwarningmessage(::TimeoutWarningMessage* timeoutwarningmessage) { + delete timeoutwarningmessage_; + timeoutwarningmessage_ = timeoutwarningmessage; + if (timeoutwarningmessage) { + set_has_timeoutwarningmessage(); + } else { + clear_has_timeoutwarningmessage(); + } +} // optional .ResetTimeoutMessage resetTimeoutMessage = 69; inline bool PokerTHMessage::has_resettimeoutmessage() const { @@ -18637,7 +21316,11 @@ inline void PokerTHMessage::clear_resettimeoutmessage() { clear_has_resettimeoutmessage(); } inline const ::ResetTimeoutMessage& PokerTHMessage::resettimeoutmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return resettimeoutmessage_ != NULL ? *resettimeoutmessage_ : *default_instance().resettimeoutmessage_; +#else return resettimeoutmessage_ != NULL ? *resettimeoutmessage_ : *default_instance_->resettimeoutmessage_; +#endif } inline ::ResetTimeoutMessage* PokerTHMessage::mutable_resettimeoutmessage() { set_has_resettimeoutmessage(); @@ -18650,6 +21333,15 @@ inline ::ResetTimeoutMessage* PokerTHMessage::release_resettimeoutmessage() { resettimeoutmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_resettimeoutmessage(::ResetTimeoutMessage* resettimeoutmessage) { + delete resettimeoutmessage_; + resettimeoutmessage_ = resettimeoutmessage; + if (resettimeoutmessage) { + set_has_resettimeoutmessage(); + } else { + clear_has_resettimeoutmessage(); + } +} // optional .ReportAvatarMessage reportAvatarMessage = 70; inline bool PokerTHMessage::has_reportavatarmessage() const { @@ -18666,7 +21358,11 @@ inline void PokerTHMessage::clear_reportavatarmessage() { clear_has_reportavatarmessage(); } inline const ::ReportAvatarMessage& PokerTHMessage::reportavatarmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return reportavatarmessage_ != NULL ? *reportavatarmessage_ : *default_instance().reportavatarmessage_; +#else return reportavatarmessage_ != NULL ? *reportavatarmessage_ : *default_instance_->reportavatarmessage_; +#endif } inline ::ReportAvatarMessage* PokerTHMessage::mutable_reportavatarmessage() { set_has_reportavatarmessage(); @@ -18679,6 +21375,15 @@ inline ::ReportAvatarMessage* PokerTHMessage::release_reportavatarmessage() { reportavatarmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_reportavatarmessage(::ReportAvatarMessage* reportavatarmessage) { + delete reportavatarmessage_; + reportavatarmessage_ = reportavatarmessage; + if (reportavatarmessage) { + set_has_reportavatarmessage(); + } else { + clear_has_reportavatarmessage(); + } +} // optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; inline bool PokerTHMessage::has_reportavatarackmessage() const { @@ -18695,7 +21400,11 @@ inline void PokerTHMessage::clear_reportavatarackmessage() { clear_has_reportavatarackmessage(); } inline const ::ReportAvatarAckMessage& PokerTHMessage::reportavatarackmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return reportavatarackmessage_ != NULL ? *reportavatarackmessage_ : *default_instance().reportavatarackmessage_; +#else return reportavatarackmessage_ != NULL ? *reportavatarackmessage_ : *default_instance_->reportavatarackmessage_; +#endif } inline ::ReportAvatarAckMessage* PokerTHMessage::mutable_reportavatarackmessage() { set_has_reportavatarackmessage(); @@ -18708,6 +21417,15 @@ inline ::ReportAvatarAckMessage* PokerTHMessage::release_reportavatarackmessage( reportavatarackmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_reportavatarackmessage(::ReportAvatarAckMessage* reportavatarackmessage) { + delete reportavatarackmessage_; + reportavatarackmessage_ = reportavatarackmessage; + if (reportavatarackmessage) { + set_has_reportavatarackmessage(); + } else { + clear_has_reportavatarackmessage(); + } +} // optional .ReportGameMessage reportGameMessage = 72; inline bool PokerTHMessage::has_reportgamemessage() const { @@ -18724,7 +21442,11 @@ inline void PokerTHMessage::clear_reportgamemessage() { clear_has_reportgamemessage(); } inline const ::ReportGameMessage& PokerTHMessage::reportgamemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return reportgamemessage_ != NULL ? *reportgamemessage_ : *default_instance().reportgamemessage_; +#else return reportgamemessage_ != NULL ? *reportgamemessage_ : *default_instance_->reportgamemessage_; +#endif } inline ::ReportGameMessage* PokerTHMessage::mutable_reportgamemessage() { set_has_reportgamemessage(); @@ -18737,6 +21459,15 @@ inline ::ReportGameMessage* PokerTHMessage::release_reportgamemessage() { reportgamemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_reportgamemessage(::ReportGameMessage* reportgamemessage) { + delete reportgamemessage_; + reportgamemessage_ = reportgamemessage; + if (reportgamemessage) { + set_has_reportgamemessage(); + } else { + clear_has_reportgamemessage(); + } +} // optional .ReportGameAckMessage reportGameAckMessage = 73; inline bool PokerTHMessage::has_reportgameackmessage() const { @@ -18753,7 +21484,11 @@ inline void PokerTHMessage::clear_reportgameackmessage() { clear_has_reportgameackmessage(); } inline const ::ReportGameAckMessage& PokerTHMessage::reportgameackmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return reportgameackmessage_ != NULL ? *reportgameackmessage_ : *default_instance().reportgameackmessage_; +#else return reportgameackmessage_ != NULL ? *reportgameackmessage_ : *default_instance_->reportgameackmessage_; +#endif } inline ::ReportGameAckMessage* PokerTHMessage::mutable_reportgameackmessage() { set_has_reportgameackmessage(); @@ -18766,6 +21501,15 @@ inline ::ReportGameAckMessage* PokerTHMessage::release_reportgameackmessage() { reportgameackmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_reportgameackmessage(::ReportGameAckMessage* reportgameackmessage) { + delete reportgameackmessage_; + reportgameackmessage_ = reportgameackmessage; + if (reportgameackmessage) { + set_has_reportgameackmessage(); + } else { + clear_has_reportgameackmessage(); + } +} // optional .ErrorMessage errorMessage = 74; inline bool PokerTHMessage::has_errormessage() const { @@ -18782,7 +21526,11 @@ inline void PokerTHMessage::clear_errormessage() { clear_has_errormessage(); } inline const ::ErrorMessage& PokerTHMessage::errormessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return errormessage_ != NULL ? *errormessage_ : *default_instance().errormessage_; +#else return errormessage_ != NULL ? *errormessage_ : *default_instance_->errormessage_; +#endif } inline ::ErrorMessage* PokerTHMessage::mutable_errormessage() { set_has_errormessage(); @@ -18795,6 +21543,15 @@ inline ::ErrorMessage* PokerTHMessage::release_errormessage() { errormessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_errormessage(::ErrorMessage* errormessage) { + delete errormessage_; + errormessage_ = errormessage; + if (errormessage) { + set_has_errormessage(); + } else { + clear_has_errormessage(); + } +} // optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; inline bool PokerTHMessage::has_adminremovegamemessage() const { @@ -18811,7 +21568,11 @@ inline void PokerTHMessage::clear_adminremovegamemessage() { clear_has_adminremovegamemessage(); } inline const ::AdminRemoveGameMessage& PokerTHMessage::adminremovegamemessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return adminremovegamemessage_ != NULL ? *adminremovegamemessage_ : *default_instance().adminremovegamemessage_; +#else return adminremovegamemessage_ != NULL ? *adminremovegamemessage_ : *default_instance_->adminremovegamemessage_; +#endif } inline ::AdminRemoveGameMessage* PokerTHMessage::mutable_adminremovegamemessage() { set_has_adminremovegamemessage(); @@ -18824,6 +21585,15 @@ inline ::AdminRemoveGameMessage* PokerTHMessage::release_adminremovegamemessage( adminremovegamemessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_adminremovegamemessage(::AdminRemoveGameMessage* adminremovegamemessage) { + delete adminremovegamemessage_; + adminremovegamemessage_ = adminremovegamemessage; + if (adminremovegamemessage) { + set_has_adminremovegamemessage(); + } else { + clear_has_adminremovegamemessage(); + } +} // optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; inline bool PokerTHMessage::has_adminremovegameackmessage() const { @@ -18840,7 +21610,11 @@ inline void PokerTHMessage::clear_adminremovegameackmessage() { clear_has_adminremovegameackmessage(); } inline const ::AdminRemoveGameAckMessage& PokerTHMessage::adminremovegameackmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return adminremovegameackmessage_ != NULL ? *adminremovegameackmessage_ : *default_instance().adminremovegameackmessage_; +#else return adminremovegameackmessage_ != NULL ? *adminremovegameackmessage_ : *default_instance_->adminremovegameackmessage_; +#endif } inline ::AdminRemoveGameAckMessage* PokerTHMessage::mutable_adminremovegameackmessage() { set_has_adminremovegameackmessage(); @@ -18853,6 +21627,15 @@ inline ::AdminRemoveGameAckMessage* PokerTHMessage::release_adminremovegameackme adminremovegameackmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_adminremovegameackmessage(::AdminRemoveGameAckMessage* adminremovegameackmessage) { + delete adminremovegameackmessage_; + adminremovegameackmessage_ = adminremovegameackmessage; + if (adminremovegameackmessage) { + set_has_adminremovegameackmessage(); + } else { + clear_has_adminremovegameackmessage(); + } +} // optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; inline bool PokerTHMessage::has_adminbanplayermessage() const { @@ -18869,7 +21652,11 @@ inline void PokerTHMessage::clear_adminbanplayermessage() { clear_has_adminbanplayermessage(); } inline const ::AdminBanPlayerMessage& PokerTHMessage::adminbanplayermessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return adminbanplayermessage_ != NULL ? *adminbanplayermessage_ : *default_instance().adminbanplayermessage_; +#else return adminbanplayermessage_ != NULL ? *adminbanplayermessage_ : *default_instance_->adminbanplayermessage_; +#endif } inline ::AdminBanPlayerMessage* PokerTHMessage::mutable_adminbanplayermessage() { set_has_adminbanplayermessage(); @@ -18882,6 +21669,15 @@ inline ::AdminBanPlayerMessage* PokerTHMessage::release_adminbanplayermessage() adminbanplayermessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_adminbanplayermessage(::AdminBanPlayerMessage* adminbanplayermessage) { + delete adminbanplayermessage_; + adminbanplayermessage_ = adminbanplayermessage; + if (adminbanplayermessage) { + set_has_adminbanplayermessage(); + } else { + clear_has_adminbanplayermessage(); + } +} // optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; inline bool PokerTHMessage::has_adminbanplayerackmessage() const { @@ -18898,7 +21694,11 @@ inline void PokerTHMessage::clear_adminbanplayerackmessage() { clear_has_adminbanplayerackmessage(); } inline const ::AdminBanPlayerAckMessage& PokerTHMessage::adminbanplayerackmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return adminbanplayerackmessage_ != NULL ? *adminbanplayerackmessage_ : *default_instance().adminbanplayerackmessage_; +#else return adminbanplayerackmessage_ != NULL ? *adminbanplayerackmessage_ : *default_instance_->adminbanplayerackmessage_; +#endif } inline ::AdminBanPlayerAckMessage* PokerTHMessage::mutable_adminbanplayerackmessage() { set_has_adminbanplayerackmessage(); @@ -18911,6 +21711,15 @@ inline ::AdminBanPlayerAckMessage* PokerTHMessage::release_adminbanplayerackmess adminbanplayerackmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_adminbanplayerackmessage(::AdminBanPlayerAckMessage* adminbanplayerackmessage) { + delete adminbanplayerackmessage_; + adminbanplayerackmessage_ = adminbanplayerackmessage; + if (adminbanplayerackmessage) { + set_has_adminbanplayerackmessage(); + } else { + clear_has_adminbanplayerackmessage(); + } +} // optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; inline bool PokerTHMessage::has_gamelistspectatorjoinedmessage() const { @@ -18927,7 +21736,11 @@ inline void PokerTHMessage::clear_gamelistspectatorjoinedmessage() { clear_has_gamelistspectatorjoinedmessage(); } inline const ::GameListSpectatorJoinedMessage& PokerTHMessage::gamelistspectatorjoinedmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gamelistspectatorjoinedmessage_ != NULL ? *gamelistspectatorjoinedmessage_ : *default_instance().gamelistspectatorjoinedmessage_; +#else return gamelistspectatorjoinedmessage_ != NULL ? *gamelistspectatorjoinedmessage_ : *default_instance_->gamelistspectatorjoinedmessage_; +#endif } inline ::GameListSpectatorJoinedMessage* PokerTHMessage::mutable_gamelistspectatorjoinedmessage() { set_has_gamelistspectatorjoinedmessage(); @@ -18940,6 +21753,15 @@ inline ::GameListSpectatorJoinedMessage* PokerTHMessage::release_gamelistspectat gamelistspectatorjoinedmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gamelistspectatorjoinedmessage(::GameListSpectatorJoinedMessage* gamelistspectatorjoinedmessage) { + delete gamelistspectatorjoinedmessage_; + gamelistspectatorjoinedmessage_ = gamelistspectatorjoinedmessage; + if (gamelistspectatorjoinedmessage) { + set_has_gamelistspectatorjoinedmessage(); + } else { + clear_has_gamelistspectatorjoinedmessage(); + } +} // optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; inline bool PokerTHMessage::has_gamelistspectatorleftmessage() const { @@ -18956,7 +21778,11 @@ inline void PokerTHMessage::clear_gamelistspectatorleftmessage() { clear_has_gamelistspectatorleftmessage(); } inline const ::GameListSpectatorLeftMessage& PokerTHMessage::gamelistspectatorleftmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gamelistspectatorleftmessage_ != NULL ? *gamelistspectatorleftmessage_ : *default_instance().gamelistspectatorleftmessage_; +#else return gamelistspectatorleftmessage_ != NULL ? *gamelistspectatorleftmessage_ : *default_instance_->gamelistspectatorleftmessage_; +#endif } inline ::GameListSpectatorLeftMessage* PokerTHMessage::mutable_gamelistspectatorleftmessage() { set_has_gamelistspectatorleftmessage(); @@ -18969,6 +21795,15 @@ inline ::GameListSpectatorLeftMessage* PokerTHMessage::release_gamelistspectator gamelistspectatorleftmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gamelistspectatorleftmessage(::GameListSpectatorLeftMessage* gamelistspectatorleftmessage) { + delete gamelistspectatorleftmessage_; + gamelistspectatorleftmessage_ = gamelistspectatorleftmessage; + if (gamelistspectatorleftmessage) { + set_has_gamelistspectatorleftmessage(); + } else { + clear_has_gamelistspectatorleftmessage(); + } +} // optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; inline bool PokerTHMessage::has_gamespectatorjoinedmessage() const { @@ -18985,7 +21820,11 @@ inline void PokerTHMessage::clear_gamespectatorjoinedmessage() { clear_has_gamespectatorjoinedmessage(); } inline const ::GameSpectatorJoinedMessage& PokerTHMessage::gamespectatorjoinedmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gamespectatorjoinedmessage_ != NULL ? *gamespectatorjoinedmessage_ : *default_instance().gamespectatorjoinedmessage_; +#else return gamespectatorjoinedmessage_ != NULL ? *gamespectatorjoinedmessage_ : *default_instance_->gamespectatorjoinedmessage_; +#endif } inline ::GameSpectatorJoinedMessage* PokerTHMessage::mutable_gamespectatorjoinedmessage() { set_has_gamespectatorjoinedmessage(); @@ -18998,6 +21837,15 @@ inline ::GameSpectatorJoinedMessage* PokerTHMessage::release_gamespectatorjoined gamespectatorjoinedmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gamespectatorjoinedmessage(::GameSpectatorJoinedMessage* gamespectatorjoinedmessage) { + delete gamespectatorjoinedmessage_; + gamespectatorjoinedmessage_ = gamespectatorjoinedmessage; + if (gamespectatorjoinedmessage) { + set_has_gamespectatorjoinedmessage(); + } else { + clear_has_gamespectatorjoinedmessage(); + } +} // optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; inline bool PokerTHMessage::has_gamespectatorleftmessage() const { @@ -19014,7 +21862,11 @@ inline void PokerTHMessage::clear_gamespectatorleftmessage() { clear_has_gamespectatorleftmessage(); } inline const ::GameSpectatorLeftMessage& PokerTHMessage::gamespectatorleftmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return gamespectatorleftmessage_ != NULL ? *gamespectatorleftmessage_ : *default_instance().gamespectatorleftmessage_; +#else return gamespectatorleftmessage_ != NULL ? *gamespectatorleftmessage_ : *default_instance_->gamespectatorleftmessage_; +#endif } inline ::GameSpectatorLeftMessage* PokerTHMessage::mutable_gamespectatorleftmessage() { set_has_gamespectatorleftmessage(); @@ -19027,6 +21879,15 @@ inline ::GameSpectatorLeftMessage* PokerTHMessage::release_gamespectatorleftmess gamespectatorleftmessage_ = NULL; return temp; } +inline void PokerTHMessage::set_allocated_gamespectatorleftmessage(::GameSpectatorLeftMessage* gamespectatorleftmessage) { + delete gamespectatorleftmessage_; + gamespectatorleftmessage_ = gamespectatorleftmessage; + if (gamespectatorleftmessage) { + set_has_gamespectatorleftmessage(); + } else { + clear_has_gamespectatorleftmessage(); + } +} // @@protoc_insertion_point(namespace_scope) diff --git a/tests/src/de/pokerth/protocol/ProtoBuf.java b/tests/src/de/pokerth/protocol/ProtoBuf.java index ed0e828d..48404e34 100644 --- a/tests/src/de/pokerth/protocol/ProtoBuf.java +++ b/tests/src/de/pokerth/protocol/ProtoBuf.java @@ -8,20 +8,41 @@ public final class ProtoBuf { public static void registerAllExtensions( com.google.protobuf.ExtensionRegistryLite registry) { } + /** + * Protobuf enum {@code NetGameMode} + */ public enum NetGameMode implements com.google.protobuf.Internal.EnumLite { + /** + * netGameCreated = 1; + */ netGameCreated(0, 1), + /** + * netGameStarted = 2; + */ netGameStarted(1, 2), + /** + * netGameClosed = 3; + */ netGameClosed(2, 3), ; - + + /** + * netGameCreated = 1; + */ public static final int netGameCreated_VALUE = 1; + /** + * netGameStarted = 2; + */ public static final int netGameStarted_VALUE = 2; + /** + * netGameClosed = 3; + */ public static final int netGameClosed_VALUE = 3; - - + + public final int getNumber() { return value; } - + public static NetGameMode valueOf(int value) { switch (value) { case 1: return netGameCreated; @@ -30,7 +51,7 @@ public final class ProtoBuf { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -42,36 +63,75 @@ public final class ProtoBuf { return NetGameMode.valueOf(number); } }; - + private final int value; - + private NetGameMode(int index, int value) { this.value = value; } - + // @@protoc_insertion_point(enum_scope:NetGameMode) } - + + /** + * Protobuf enum {@code NetGameState} + */ public enum NetGameState implements com.google.protobuf.Internal.EnumLite { + /** + * netStatePreflop = 0; + */ netStatePreflop(0, 0), + /** + * netStateFlop = 1; + */ netStateFlop(1, 1), + /** + * netStateTurn = 2; + */ netStateTurn(2, 2), + /** + * netStateRiver = 3; + */ netStateRiver(3, 3), + /** + * netStatePreflopSmallBlind = 4; + */ netStatePreflopSmallBlind(4, 4), + /** + * netStatePreflopBigBlind = 5; + */ netStatePreflopBigBlind(5, 5), ; - + + /** + * netStatePreflop = 0; + */ public static final int netStatePreflop_VALUE = 0; + /** + * netStateFlop = 1; + */ public static final int netStateFlop_VALUE = 1; + /** + * netStateTurn = 2; + */ public static final int netStateTurn_VALUE = 2; + /** + * netStateRiver = 3; + */ public static final int netStateRiver_VALUE = 3; + /** + * netStatePreflopSmallBlind = 4; + */ public static final int netStatePreflopSmallBlind_VALUE = 4; + /** + * netStatePreflopBigBlind = 5; + */ public static final int netStatePreflopBigBlind_VALUE = 5; - - + + public final int getNumber() { return value; } - + public static NetGameState valueOf(int value) { switch (value) { case 0: return netStatePreflop; @@ -83,7 +143,7 @@ public final class ProtoBuf { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -95,38 +155,83 @@ public final class ProtoBuf { return NetGameState.valueOf(number); } }; - + private final int value; - + private NetGameState(int index, int value) { this.value = value; } - + // @@protoc_insertion_point(enum_scope:NetGameState) } - + + /** + * Protobuf enum {@code NetPlayerAction} + */ public enum NetPlayerAction implements com.google.protobuf.Internal.EnumLite { + /** + * netActionNone = 0; + */ netActionNone(0, 0), + /** + * netActionFold = 1; + */ netActionFold(1, 1), + /** + * netActionCheck = 2; + */ netActionCheck(2, 2), + /** + * netActionCall = 3; + */ netActionCall(3, 3), + /** + * netActionBet = 4; + */ netActionBet(4, 4), + /** + * netActionRaise = 5; + */ netActionRaise(5, 5), + /** + * netActionAllIn = 6; + */ netActionAllIn(6, 6), ; - + + /** + * netActionNone = 0; + */ public static final int netActionNone_VALUE = 0; + /** + * netActionFold = 1; + */ public static final int netActionFold_VALUE = 1; + /** + * netActionCheck = 2; + */ public static final int netActionCheck_VALUE = 2; + /** + * netActionCall = 3; + */ public static final int netActionCall_VALUE = 3; + /** + * netActionBet = 4; + */ public static final int netActionBet_VALUE = 4; + /** + * netActionRaise = 5; + */ public static final int netActionRaise_VALUE = 5; + /** + * netActionAllIn = 6; + */ public static final int netActionAllIn_VALUE = 6; - - + + public final int getNumber() { return value; } - + public static NetPlayerAction valueOf(int value) { switch (value) { case 0: return netActionNone; @@ -139,7 +244,7 @@ public final class ProtoBuf { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -151,30 +256,51 @@ public final class ProtoBuf { return NetPlayerAction.valueOf(number); } }; - + private final int value; - + private NetPlayerAction(int index, int value) { this.value = value; } - + // @@protoc_insertion_point(enum_scope:NetPlayerAction) } - + + /** + * Protobuf enum {@code NetPlayerState} + */ public enum NetPlayerState implements com.google.protobuf.Internal.EnumLite { + /** + * netPlayerStateNormal = 0; + */ netPlayerStateNormal(0, 0), + /** + * netPlayerStateSessionInactive = 1; + */ netPlayerStateSessionInactive(1, 1), + /** + * netPlayerStateNoMoney = 2; + */ netPlayerStateNoMoney(2, 2), ; - + + /** + * netPlayerStateNormal = 0; + */ public static final int netPlayerStateNormal_VALUE = 0; + /** + * netPlayerStateSessionInactive = 1; + */ public static final int netPlayerStateSessionInactive_VALUE = 1; + /** + * netPlayerStateNoMoney = 2; + */ public static final int netPlayerStateNoMoney_VALUE = 2; - - + + public final int getNumber() { return value; } - + public static NetPlayerState valueOf(int value) { switch (value) { case 0: return netPlayerStateNormal; @@ -183,7 +309,7 @@ public final class ProtoBuf { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -195,30 +321,51 @@ public final class ProtoBuf { return NetPlayerState.valueOf(number); } }; - + private final int value; - + private NetPlayerState(int index, int value) { this.value = value; } - + // @@protoc_insertion_point(enum_scope:NetPlayerState) } - + + /** + * Protobuf enum {@code NetPlayerInfoRights} + */ public enum NetPlayerInfoRights implements com.google.protobuf.Internal.EnumLite { + /** + * netPlayerRightsGuest = 1; + */ netPlayerRightsGuest(0, 1), + /** + * netPlayerRightsNormal = 2; + */ netPlayerRightsNormal(1, 2), + /** + * netPlayerRightsAdmin = 3; + */ netPlayerRightsAdmin(2, 3), ; - + + /** + * netPlayerRightsGuest = 1; + */ public static final int netPlayerRightsGuest_VALUE = 1; + /** + * netPlayerRightsNormal = 2; + */ public static final int netPlayerRightsNormal_VALUE = 2; + /** + * netPlayerRightsAdmin = 3; + */ public static final int netPlayerRightsAdmin_VALUE = 3; - - + + public final int getNumber() { return value; } - + public static NetPlayerInfoRights valueOf(int value) { switch (value) { case 1: return netPlayerRightsGuest; @@ -227,7 +374,7 @@ public final class ProtoBuf { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -239,30 +386,51 @@ public final class ProtoBuf { return NetPlayerInfoRights.valueOf(number); } }; - + private final int value; - + private NetPlayerInfoRights(int index, int value) { this.value = value; } - + // @@protoc_insertion_point(enum_scope:NetPlayerInfoRights) } - + + /** + * Protobuf enum {@code NetAvatarType} + */ public enum NetAvatarType implements com.google.protobuf.Internal.EnumLite { + /** + * netAvatarImagePng = 1; + */ netAvatarImagePng(0, 1), + /** + * netAvatarImageJpg = 2; + */ netAvatarImageJpg(1, 2), + /** + * netAvatarImageGif = 3; + */ netAvatarImageGif(2, 3), ; - + + /** + * netAvatarImagePng = 1; + */ public static final int netAvatarImagePng_VALUE = 1; + /** + * netAvatarImageJpg = 2; + */ public static final int netAvatarImageJpg_VALUE = 2; + /** + * netAvatarImageGif = 3; + */ public static final int netAvatarImageGif_VALUE = 3; - - + + public final int getNumber() { return value; } - + public static NetAvatarType valueOf(int value) { switch (value) { case 1: return netAvatarImagePng; @@ -271,7 +439,7 @@ public final class ProtoBuf { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -283,918 +451,224 @@ public final class ProtoBuf { return NetAvatarType.valueOf(number); } }; - + private final int value; - + private NetAvatarType(int index, int value) { this.value = value; } - + // @@protoc_insertion_point(enum_scope:NetAvatarType) } - + public interface NetGameInfoOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required string gameName = 1; + /** + * required string gameName = 1; + */ boolean hasGameName(); - String getGameName(); - + /** + * required string gameName = 1; + */ + java.lang.String getGameName(); + /** + * required string gameName = 1; + */ + com.google.protobuf.ByteString + getGameNameBytes(); + // required .NetGameInfo.NetGameType netGameType = 2; + /** + * required .NetGameInfo.NetGameType netGameType = 2; + */ boolean hasNetGameType(); + /** + * required .NetGameInfo.NetGameType netGameType = 2; + */ de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType getNetGameType(); - + // required uint32 maxNumPlayers = 3; + /** + * required uint32 maxNumPlayers = 3; + */ boolean hasMaxNumPlayers(); + /** + * required uint32 maxNumPlayers = 3; + */ int getMaxNumPlayers(); - + // required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; + /** + * required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; + */ boolean hasRaiseIntervalMode(); + /** + * required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; + */ de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode getRaiseIntervalMode(); - + // optional uint32 raiseEveryHands = 5; + /** + * optional uint32 raiseEveryHands = 5; + */ boolean hasRaiseEveryHands(); + /** + * optional uint32 raiseEveryHands = 5; + */ int getRaiseEveryHands(); - + // optional uint32 raiseEveryMinutes = 6; + /** + * optional uint32 raiseEveryMinutes = 6; + */ boolean hasRaiseEveryMinutes(); + /** + * optional uint32 raiseEveryMinutes = 6; + */ int getRaiseEveryMinutes(); - + // required .NetGameInfo.EndRaiseMode endRaiseMode = 7; + /** + * required .NetGameInfo.EndRaiseMode endRaiseMode = 7; + */ boolean hasEndRaiseMode(); + /** + * required .NetGameInfo.EndRaiseMode endRaiseMode = 7; + */ de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode getEndRaiseMode(); - + // optional uint32 endRaiseSmallBlindValue = 8; + /** + * optional uint32 endRaiseSmallBlindValue = 8; + */ boolean hasEndRaiseSmallBlindValue(); + /** + * optional uint32 endRaiseSmallBlindValue = 8; + */ int getEndRaiseSmallBlindValue(); - + // required uint32 proposedGuiSpeed = 9; + /** + * required uint32 proposedGuiSpeed = 9; + */ boolean hasProposedGuiSpeed(); + /** + * required uint32 proposedGuiSpeed = 9; + */ int getProposedGuiSpeed(); - + // required uint32 delayBetweenHands = 10; + /** + * required uint32 delayBetweenHands = 10; + * + *
+     * These are seconds
+     * 
+ */ boolean hasDelayBetweenHands(); + /** + * required uint32 delayBetweenHands = 10; + * + *
+     * These are seconds
+     * 
+ */ int getDelayBetweenHands(); - + // required uint32 playerActionTimeout = 11; + /** + * required uint32 playerActionTimeout = 11; + * + *
+     * These are seconds
+     * 
+ */ boolean hasPlayerActionTimeout(); + /** + * required uint32 playerActionTimeout = 11; + * + *
+     * These are seconds
+     * 
+ */ int getPlayerActionTimeout(); - + // required uint32 firstSmallBlind = 12; + /** + * required uint32 firstSmallBlind = 12; + */ boolean hasFirstSmallBlind(); + /** + * required uint32 firstSmallBlind = 12; + */ int getFirstSmallBlind(); - + // required uint32 startMoney = 13; + /** + * required uint32 startMoney = 13; + */ boolean hasStartMoney(); + /** + * required uint32 startMoney = 13; + */ int getStartMoney(); - + // repeated uint32 manualBlinds = 14 [packed = true]; + /** + * repeated uint32 manualBlinds = 14 [packed = true]; + */ java.util.List getManualBlindsList(); + /** + * repeated uint32 manualBlinds = 14 [packed = true]; + */ int getManualBlindsCount(); + /** + * repeated uint32 manualBlinds = 14 [packed = true]; + */ int getManualBlinds(int index); } + /** + * Protobuf type {@code NetGameInfo} + */ public static final class NetGameInfo extends com.google.protobuf.GeneratedMessageLite implements NetGameInfoOrBuilder { // Use NetGameInfo.newBuilder() to construct. - private NetGameInfo(Builder builder) { + private NetGameInfo(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private NetGameInfo(boolean noInit) {} - + private static final NetGameInfo defaultInstance; public static NetGameInfo getDefaultInstance() { return defaultInstance; } - + public NetGameInfo getDefaultInstanceForType() { return defaultInstance; } - - public enum NetGameType - implements com.google.protobuf.Internal.EnumLite { - normalGame(0, 1), - registeredOnlyGame(1, 2), - inviteOnlyGame(2, 3), - rankingGame(3, 4), - ; - - public static final int normalGame_VALUE = 1; - public static final int registeredOnlyGame_VALUE = 2; - public static final int inviteOnlyGame_VALUE = 3; - public static final int rankingGame_VALUE = 4; - - - public final int getNumber() { return value; } - - public static NetGameType valueOf(int value) { - switch (value) { - case 1: return normalGame; - case 2: return registeredOnlyGame; - case 3: return inviteOnlyGame; - case 4: return rankingGame; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public NetGameType findValueByNumber(int number) { - return NetGameType.valueOf(number); - } - }; - - private final int value; - - private NetGameType(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:NetGameInfo.NetGameType) - } - - public enum RaiseIntervalMode - implements com.google.protobuf.Internal.EnumLite { - raiseOnHandNum(0, 1), - raiseOnMinutes(1, 2), - ; - - public static final int raiseOnHandNum_VALUE = 1; - public static final int raiseOnMinutes_VALUE = 2; - - - public final int getNumber() { return value; } - - public static RaiseIntervalMode valueOf(int value) { - switch (value) { - case 1: return raiseOnHandNum; - case 2: return raiseOnMinutes; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public RaiseIntervalMode findValueByNumber(int number) { - return RaiseIntervalMode.valueOf(number); - } - }; - - private final int value; - - private RaiseIntervalMode(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:NetGameInfo.RaiseIntervalMode) - } - - public enum EndRaiseMode - implements com.google.protobuf.Internal.EnumLite { - doubleBlinds(0, 1), - raiseByEndValue(1, 2), - keepLastBlind(2, 3), - ; - - public static final int doubleBlinds_VALUE = 1; - public static final int raiseByEndValue_VALUE = 2; - public static final int keepLastBlind_VALUE = 3; - - - public final int getNumber() { return value; } - - public static EndRaiseMode valueOf(int value) { - switch (value) { - case 1: return doubleBlinds; - case 2: return raiseByEndValue; - case 3: return keepLastBlind; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public EndRaiseMode findValueByNumber(int number) { - return EndRaiseMode.valueOf(number); - } - }; - - private final int value; - - private EndRaiseMode(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:NetGameInfo.EndRaiseMode) - } - - private int bitField0_; - // required string gameName = 1; - public static final int GAMENAME_FIELD_NUMBER = 1; - private java.lang.Object gameName_; - public boolean hasGameName() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getGameName() { - java.lang.Object ref = gameName_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - gameName_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getGameNameBytes() { - java.lang.Object ref = gameName_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - gameName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // required .NetGameInfo.NetGameType netGameType = 2; - public static final int NETGAMETYPE_FIELD_NUMBER = 2; - private de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType netGameType_; - public boolean hasNetGameType() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType getNetGameType() { - return netGameType_; - } - - // required uint32 maxNumPlayers = 3; - public static final int MAXNUMPLAYERS_FIELD_NUMBER = 3; - private int maxNumPlayers_; - public boolean hasMaxNumPlayers() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public int getMaxNumPlayers() { - return maxNumPlayers_; - } - - // required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; - public static final int RAISEINTERVALMODE_FIELD_NUMBER = 4; - private de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode raiseIntervalMode_; - public boolean hasRaiseIntervalMode() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode getRaiseIntervalMode() { - return raiseIntervalMode_; - } - - // optional uint32 raiseEveryHands = 5; - public static final int RAISEEVERYHANDS_FIELD_NUMBER = 5; - private int raiseEveryHands_; - public boolean hasRaiseEveryHands() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - public int getRaiseEveryHands() { - return raiseEveryHands_; - } - - // optional uint32 raiseEveryMinutes = 6; - public static final int RAISEEVERYMINUTES_FIELD_NUMBER = 6; - private int raiseEveryMinutes_; - public boolean hasRaiseEveryMinutes() { - return ((bitField0_ & 0x00000020) == 0x00000020); - } - public int getRaiseEveryMinutes() { - return raiseEveryMinutes_; - } - - // required .NetGameInfo.EndRaiseMode endRaiseMode = 7; - public static final int ENDRAISEMODE_FIELD_NUMBER = 7; - private de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode endRaiseMode_; - public boolean hasEndRaiseMode() { - return ((bitField0_ & 0x00000040) == 0x00000040); - } - public de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode getEndRaiseMode() { - return endRaiseMode_; - } - - // optional uint32 endRaiseSmallBlindValue = 8; - public static final int ENDRAISESMALLBLINDVALUE_FIELD_NUMBER = 8; - private int endRaiseSmallBlindValue_; - public boolean hasEndRaiseSmallBlindValue() { - return ((bitField0_ & 0x00000080) == 0x00000080); - } - public int getEndRaiseSmallBlindValue() { - return endRaiseSmallBlindValue_; - } - - // required uint32 proposedGuiSpeed = 9; - public static final int PROPOSEDGUISPEED_FIELD_NUMBER = 9; - private int proposedGuiSpeed_; - public boolean hasProposedGuiSpeed() { - return ((bitField0_ & 0x00000100) == 0x00000100); - } - public int getProposedGuiSpeed() { - return proposedGuiSpeed_; - } - - // required uint32 delayBetweenHands = 10; - public static final int DELAYBETWEENHANDS_FIELD_NUMBER = 10; - private int delayBetweenHands_; - public boolean hasDelayBetweenHands() { - return ((bitField0_ & 0x00000200) == 0x00000200); - } - public int getDelayBetweenHands() { - return delayBetweenHands_; - } - - // required uint32 playerActionTimeout = 11; - public static final int PLAYERACTIONTIMEOUT_FIELD_NUMBER = 11; - private int playerActionTimeout_; - public boolean hasPlayerActionTimeout() { - return ((bitField0_ & 0x00000400) == 0x00000400); - } - public int getPlayerActionTimeout() { - return playerActionTimeout_; - } - - // required uint32 firstSmallBlind = 12; - public static final int FIRSTSMALLBLIND_FIELD_NUMBER = 12; - private int firstSmallBlind_; - public boolean hasFirstSmallBlind() { - return ((bitField0_ & 0x00000800) == 0x00000800); - } - public int getFirstSmallBlind() { - return firstSmallBlind_; - } - - // required uint32 startMoney = 13; - public static final int STARTMONEY_FIELD_NUMBER = 13; - private int startMoney_; - public boolean hasStartMoney() { - return ((bitField0_ & 0x00001000) == 0x00001000); - } - public int getStartMoney() { - return startMoney_; - } - - // repeated uint32 manualBlinds = 14 [packed = true]; - public static final int MANUALBLINDS_FIELD_NUMBER = 14; - private java.util.List manualBlinds_; - public java.util.List - getManualBlindsList() { - return manualBlinds_; - } - public int getManualBlindsCount() { - return manualBlinds_.size(); - } - public int getManualBlinds(int index) { - return manualBlinds_.get(index); - } - private int manualBlindsMemoizedSerializedSize = -1; - - private void initFields() { - gameName_ = ""; - netGameType_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType.normalGame; - maxNumPlayers_ = 0; - raiseIntervalMode_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode.raiseOnHandNum; - raiseEveryHands_ = 0; - raiseEveryMinutes_ = 0; - endRaiseMode_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode.doubleBlinds; - endRaiseSmallBlindValue_ = 0; - proposedGuiSpeed_ = 0; - delayBetweenHands_ = 0; - playerActionTimeout_ = 0; - firstSmallBlind_ = 0; - startMoney_ = 0; - manualBlinds_ = java.util.Collections.emptyList();; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasGameName()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasNetGameType()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasMaxNumPlayers()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasRaiseIntervalMode()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasEndRaiseMode()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasProposedGuiSpeed()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasDelayBetweenHands()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPlayerActionTimeout()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasFirstSmallBlind()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasStartMoney()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeBytes(1, getGameNameBytes()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeEnum(2, netGameType_.getNumber()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeUInt32(3, maxNumPlayers_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeEnum(4, raiseIntervalMode_.getNumber()); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - output.writeUInt32(5, raiseEveryHands_); - } - if (((bitField0_ & 0x00000020) == 0x00000020)) { - output.writeUInt32(6, raiseEveryMinutes_); - } - if (((bitField0_ & 0x00000040) == 0x00000040)) { - output.writeEnum(7, endRaiseMode_.getNumber()); - } - if (((bitField0_ & 0x00000080) == 0x00000080)) { - output.writeUInt32(8, endRaiseSmallBlindValue_); - } - if (((bitField0_ & 0x00000100) == 0x00000100)) { - output.writeUInt32(9, proposedGuiSpeed_); - } - if (((bitField0_ & 0x00000200) == 0x00000200)) { - output.writeUInt32(10, delayBetweenHands_); - } - if (((bitField0_ & 0x00000400) == 0x00000400)) { - output.writeUInt32(11, playerActionTimeout_); - } - if (((bitField0_ & 0x00000800) == 0x00000800)) { - output.writeUInt32(12, firstSmallBlind_); - } - if (((bitField0_ & 0x00001000) == 0x00001000)) { - output.writeUInt32(13, startMoney_); - } - if (getManualBlindsList().size() > 0) { - output.writeRawVarint32(114); - output.writeRawVarint32(manualBlindsMemoizedSerializedSize); - } - for (int i = 0; i < manualBlinds_.size(); i++) { - output.writeUInt32NoTag(manualBlinds_.get(i)); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(1, getGameNameBytes()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, netGameType_.getNumber()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(3, maxNumPlayers_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(4, raiseIntervalMode_.getNumber()); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(5, raiseEveryHands_); - } - if (((bitField0_ & 0x00000020) == 0x00000020)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(6, raiseEveryMinutes_); - } - if (((bitField0_ & 0x00000040) == 0x00000040)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(7, endRaiseMode_.getNumber()); - } - if (((bitField0_ & 0x00000080) == 0x00000080)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(8, endRaiseSmallBlindValue_); - } - if (((bitField0_ & 0x00000100) == 0x00000100)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(9, proposedGuiSpeed_); - } - if (((bitField0_ & 0x00000200) == 0x00000200)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(10, delayBetweenHands_); - } - if (((bitField0_ & 0x00000400) == 0x00000400)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(11, playerActionTimeout_); - } - if (((bitField0_ & 0x00000800) == 0x00000800)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(12, firstSmallBlind_); - } - if (((bitField0_ & 0x00001000) == 0x00001000)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(13, startMoney_); - } - { - int dataSize = 0; - for (int i = 0; i < manualBlinds_.size(); i++) { - dataSize += com.google.protobuf.CodedOutputStream - .computeUInt32SizeNoTag(manualBlinds_.get(i)); - } - size += dataSize; - if (!getManualBlindsList().isEmpty()) { - size += 1; - size += com.google.protobuf.CodedOutputStream - .computeInt32SizeNoTag(dataSize); - } - manualBlindsMemoizedSerializedSize = dataSize; - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom( + + private NetGameInfo( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.NetGameInfo prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.NetGameInfo, Builder> - implements de.pokerth.protocol.ProtoBuf.NetGameInfoOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.NetGameInfo.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - gameName_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - netGameType_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType.normalGame; - bitField0_ = (bitField0_ & ~0x00000002); - maxNumPlayers_ = 0; - bitField0_ = (bitField0_ & ~0x00000004); - raiseIntervalMode_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode.raiseOnHandNum; - bitField0_ = (bitField0_ & ~0x00000008); - raiseEveryHands_ = 0; - bitField0_ = (bitField0_ & ~0x00000010); - raiseEveryMinutes_ = 0; - bitField0_ = (bitField0_ & ~0x00000020); - endRaiseMode_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode.doubleBlinds; - bitField0_ = (bitField0_ & ~0x00000040); - endRaiseSmallBlindValue_ = 0; - bitField0_ = (bitField0_ & ~0x00000080); - proposedGuiSpeed_ = 0; - bitField0_ = (bitField0_ & ~0x00000100); - delayBetweenHands_ = 0; - bitField0_ = (bitField0_ & ~0x00000200); - playerActionTimeout_ = 0; - bitField0_ = (bitField0_ & ~0x00000400); - firstSmallBlind_ = 0; - bitField0_ = (bitField0_ & ~0x00000800); - startMoney_ = 0; - bitField0_ = (bitField0_ & ~0x00001000); - manualBlinds_ = java.util.Collections.emptyList();; - bitField0_ = (bitField0_ & ~0x00002000); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.NetGameInfo getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.NetGameInfo build() { - de.pokerth.protocol.ProtoBuf.NetGameInfo result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.NetGameInfo buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.NetGameInfo result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.NetGameInfo buildPartial() { - de.pokerth.protocol.ProtoBuf.NetGameInfo result = new de.pokerth.protocol.ProtoBuf.NetGameInfo(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.gameName_ = gameName_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.netGameType_ = netGameType_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.maxNumPlayers_ = maxNumPlayers_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.raiseIntervalMode_ = raiseIntervalMode_; - if (((from_bitField0_ & 0x00000010) == 0x00000010)) { - to_bitField0_ |= 0x00000010; - } - result.raiseEveryHands_ = raiseEveryHands_; - if (((from_bitField0_ & 0x00000020) == 0x00000020)) { - to_bitField0_ |= 0x00000020; - } - result.raiseEveryMinutes_ = raiseEveryMinutes_; - if (((from_bitField0_ & 0x00000040) == 0x00000040)) { - to_bitField0_ |= 0x00000040; - } - result.endRaiseMode_ = endRaiseMode_; - if (((from_bitField0_ & 0x00000080) == 0x00000080)) { - to_bitField0_ |= 0x00000080; - } - result.endRaiseSmallBlindValue_ = endRaiseSmallBlindValue_; - if (((from_bitField0_ & 0x00000100) == 0x00000100)) { - to_bitField0_ |= 0x00000100; - } - result.proposedGuiSpeed_ = proposedGuiSpeed_; - if (((from_bitField0_ & 0x00000200) == 0x00000200)) { - to_bitField0_ |= 0x00000200; - } - result.delayBetweenHands_ = delayBetweenHands_; - if (((from_bitField0_ & 0x00000400) == 0x00000400)) { - to_bitField0_ |= 0x00000400; - } - result.playerActionTimeout_ = playerActionTimeout_; - if (((from_bitField0_ & 0x00000800) == 0x00000800)) { - to_bitField0_ |= 0x00000800; - } - result.firstSmallBlind_ = firstSmallBlind_; - if (((from_bitField0_ & 0x00001000) == 0x00001000)) { - to_bitField0_ |= 0x00001000; - } - result.startMoney_ = startMoney_; - if (((bitField0_ & 0x00002000) == 0x00002000)) { - manualBlinds_ = java.util.Collections.unmodifiableList(manualBlinds_); - bitField0_ = (bitField0_ & ~0x00002000); - } - result.manualBlinds_ = manualBlinds_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.NetGameInfo other) { - if (other == de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance()) return this; - if (other.hasGameName()) { - setGameName(other.getGameName()); - } - if (other.hasNetGameType()) { - setNetGameType(other.getNetGameType()); - } - if (other.hasMaxNumPlayers()) { - setMaxNumPlayers(other.getMaxNumPlayers()); - } - if (other.hasRaiseIntervalMode()) { - setRaiseIntervalMode(other.getRaiseIntervalMode()); - } - if (other.hasRaiseEveryHands()) { - setRaiseEveryHands(other.getRaiseEveryHands()); - } - if (other.hasRaiseEveryMinutes()) { - setRaiseEveryMinutes(other.getRaiseEveryMinutes()); - } - if (other.hasEndRaiseMode()) { - setEndRaiseMode(other.getEndRaiseMode()); - } - if (other.hasEndRaiseSmallBlindValue()) { - setEndRaiseSmallBlindValue(other.getEndRaiseSmallBlindValue()); - } - if (other.hasProposedGuiSpeed()) { - setProposedGuiSpeed(other.getProposedGuiSpeed()); - } - if (other.hasDelayBetweenHands()) { - setDelayBetweenHands(other.getDelayBetweenHands()); - } - if (other.hasPlayerActionTimeout()) { - setPlayerActionTimeout(other.getPlayerActionTimeout()); - } - if (other.hasFirstSmallBlind()) { - setFirstSmallBlind(other.getFirstSmallBlind()); - } - if (other.hasStartMoney()) { - setStartMoney(other.getStartMoney()); - } - if (!other.manualBlinds_.isEmpty()) { - if (manualBlinds_.isEmpty()) { - manualBlinds_ = other.manualBlinds_; - bitField0_ = (bitField0_ & ~0x00002000); - } else { - ensureManualBlindsIsMutable(); - manualBlinds_.addAll(other.manualBlinds_); - } - - } - return this; - } - - public final boolean isInitialized() { - if (!hasGameName()) { - - return false; - } - if (!hasNetGameType()) { - - return false; - } - if (!hasMaxNumPlayers()) { - - return false; - } - if (!hasRaiseIntervalMode()) { - - return false; - } - if (!hasEndRaiseMode()) { - - return false; - } - if (!hasProposedGuiSpeed()) { - - return false; - } - if (!hasDelayBetweenHands()) { - - return false; - } - if (!hasPlayerActionTimeout()) { - - return false; - } - if (!hasFirstSmallBlind()) { - - return false; - } - if (!hasStartMoney()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -1276,41 +750,1079 @@ public final class ProtoBuf { break; } case 112: { - ensureManualBlindsIsMutable(); + if (!((mutable_bitField0_ & 0x00002000) == 0x00002000)) { + manualBlinds_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00002000; + } manualBlinds_.add(input.readUInt32()); break; } case 114: { int length = input.readRawVarint32(); int limit = input.pushLimit(length); + if (!((mutable_bitField0_ & 0x00002000) == 0x00002000) && input.getBytesUntilLimit() > 0) { + manualBlinds_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00002000; + } while (input.getBytesUntilLimit() > 0) { - addManualBlinds(input.readUInt32()); + manualBlinds_.add(input.readUInt32()); } input.popLimit(limit); break; } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00002000) == 0x00002000)) { + manualBlinds_ = java.util.Collections.unmodifiableList(manualBlinds_); + } + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public NetGameInfo parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new NetGameInfo(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code NetGameInfo.NetGameType} + */ + public enum NetGameType + implements com.google.protobuf.Internal.EnumLite { + /** + * normalGame = 1; + */ + normalGame(0, 1), + /** + * registeredOnlyGame = 2; + */ + registeredOnlyGame(1, 2), + /** + * inviteOnlyGame = 3; + */ + inviteOnlyGame(2, 3), + /** + * rankingGame = 4; + */ + rankingGame(3, 4), + ; + + /** + * normalGame = 1; + */ + public static final int normalGame_VALUE = 1; + /** + * registeredOnlyGame = 2; + */ + public static final int registeredOnlyGame_VALUE = 2; + /** + * inviteOnlyGame = 3; + */ + public static final int inviteOnlyGame_VALUE = 3; + /** + * rankingGame = 4; + */ + public static final int rankingGame_VALUE = 4; + + + public final int getNumber() { return value; } + + public static NetGameType valueOf(int value) { + switch (value) { + case 1: return normalGame; + case 2: return registeredOnlyGame; + case 3: return inviteOnlyGame; + case 4: return rankingGame; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public NetGameType findValueByNumber(int number) { + return NetGameType.valueOf(number); + } + }; + + private final int value; + + private NetGameType(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:NetGameInfo.NetGameType) + } + + /** + * Protobuf enum {@code NetGameInfo.RaiseIntervalMode} + */ + public enum RaiseIntervalMode + implements com.google.protobuf.Internal.EnumLite { + /** + * raiseOnHandNum = 1; + */ + raiseOnHandNum(0, 1), + /** + * raiseOnMinutes = 2; + */ + raiseOnMinutes(1, 2), + ; + + /** + * raiseOnHandNum = 1; + */ + public static final int raiseOnHandNum_VALUE = 1; + /** + * raiseOnMinutes = 2; + */ + public static final int raiseOnMinutes_VALUE = 2; + + + public final int getNumber() { return value; } + + public static RaiseIntervalMode valueOf(int value) { + switch (value) { + case 1: return raiseOnHandNum; + case 2: return raiseOnMinutes; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public RaiseIntervalMode findValueByNumber(int number) { + return RaiseIntervalMode.valueOf(number); + } + }; + + private final int value; + + private RaiseIntervalMode(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:NetGameInfo.RaiseIntervalMode) + } + + /** + * Protobuf enum {@code NetGameInfo.EndRaiseMode} + */ + public enum EndRaiseMode + implements com.google.protobuf.Internal.EnumLite { + /** + * doubleBlinds = 1; + */ + doubleBlinds(0, 1), + /** + * raiseByEndValue = 2; + */ + raiseByEndValue(1, 2), + /** + * keepLastBlind = 3; + */ + keepLastBlind(2, 3), + ; + + /** + * doubleBlinds = 1; + */ + public static final int doubleBlinds_VALUE = 1; + /** + * raiseByEndValue = 2; + */ + public static final int raiseByEndValue_VALUE = 2; + /** + * keepLastBlind = 3; + */ + public static final int keepLastBlind_VALUE = 3; + + + public final int getNumber() { return value; } + + public static EndRaiseMode valueOf(int value) { + switch (value) { + case 1: return doubleBlinds; + case 2: return raiseByEndValue; + case 3: return keepLastBlind; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public EndRaiseMode findValueByNumber(int number) { + return EndRaiseMode.valueOf(number); + } + }; + + private final int value; + + private EndRaiseMode(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:NetGameInfo.EndRaiseMode) + } + + private int bitField0_; + // required string gameName = 1; + public static final int GAMENAME_FIELD_NUMBER = 1; + private java.lang.Object gameName_; + /** + * required string gameName = 1; + */ + public boolean hasGameName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string gameName = 1; + */ + public java.lang.String getGameName() { + java.lang.Object ref = gameName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + gameName_ = s; + } + return s; + } + } + /** + * required string gameName = 1; + */ + public com.google.protobuf.ByteString + getGameNameBytes() { + java.lang.Object ref = gameName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + gameName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // required .NetGameInfo.NetGameType netGameType = 2; + public static final int NETGAMETYPE_FIELD_NUMBER = 2; + private de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType netGameType_; + /** + * required .NetGameInfo.NetGameType netGameType = 2; + */ + public boolean hasNetGameType() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .NetGameInfo.NetGameType netGameType = 2; + */ + public de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType getNetGameType() { + return netGameType_; + } + + // required uint32 maxNumPlayers = 3; + public static final int MAXNUMPLAYERS_FIELD_NUMBER = 3; + private int maxNumPlayers_; + /** + * required uint32 maxNumPlayers = 3; + */ + public boolean hasMaxNumPlayers() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required uint32 maxNumPlayers = 3; + */ + public int getMaxNumPlayers() { + return maxNumPlayers_; + } + + // required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; + public static final int RAISEINTERVALMODE_FIELD_NUMBER = 4; + private de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode raiseIntervalMode_; + /** + * required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; + */ + public boolean hasRaiseIntervalMode() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; + */ + public de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode getRaiseIntervalMode() { + return raiseIntervalMode_; + } + + // optional uint32 raiseEveryHands = 5; + public static final int RAISEEVERYHANDS_FIELD_NUMBER = 5; + private int raiseEveryHands_; + /** + * optional uint32 raiseEveryHands = 5; + */ + public boolean hasRaiseEveryHands() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional uint32 raiseEveryHands = 5; + */ + public int getRaiseEveryHands() { + return raiseEveryHands_; + } + + // optional uint32 raiseEveryMinutes = 6; + public static final int RAISEEVERYMINUTES_FIELD_NUMBER = 6; + private int raiseEveryMinutes_; + /** + * optional uint32 raiseEveryMinutes = 6; + */ + public boolean hasRaiseEveryMinutes() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * optional uint32 raiseEveryMinutes = 6; + */ + public int getRaiseEveryMinutes() { + return raiseEveryMinutes_; + } + + // required .NetGameInfo.EndRaiseMode endRaiseMode = 7; + public static final int ENDRAISEMODE_FIELD_NUMBER = 7; + private de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode endRaiseMode_; + /** + * required .NetGameInfo.EndRaiseMode endRaiseMode = 7; + */ + public boolean hasEndRaiseMode() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required .NetGameInfo.EndRaiseMode endRaiseMode = 7; + */ + public de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode getEndRaiseMode() { + return endRaiseMode_; + } + + // optional uint32 endRaiseSmallBlindValue = 8; + public static final int ENDRAISESMALLBLINDVALUE_FIELD_NUMBER = 8; + private int endRaiseSmallBlindValue_; + /** + * optional uint32 endRaiseSmallBlindValue = 8; + */ + public boolean hasEndRaiseSmallBlindValue() { + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * optional uint32 endRaiseSmallBlindValue = 8; + */ + public int getEndRaiseSmallBlindValue() { + return endRaiseSmallBlindValue_; + } + + // required uint32 proposedGuiSpeed = 9; + public static final int PROPOSEDGUISPEED_FIELD_NUMBER = 9; + private int proposedGuiSpeed_; + /** + * required uint32 proposedGuiSpeed = 9; + */ + public boolean hasProposedGuiSpeed() { + return ((bitField0_ & 0x00000100) == 0x00000100); + } + /** + * required uint32 proposedGuiSpeed = 9; + */ + public int getProposedGuiSpeed() { + return proposedGuiSpeed_; + } + + // required uint32 delayBetweenHands = 10; + public static final int DELAYBETWEENHANDS_FIELD_NUMBER = 10; + private int delayBetweenHands_; + /** + * required uint32 delayBetweenHands = 10; + * + *
+     * These are seconds
+     * 
+ */ + public boolean hasDelayBetweenHands() { + return ((bitField0_ & 0x00000200) == 0x00000200); + } + /** + * required uint32 delayBetweenHands = 10; + * + *
+     * These are seconds
+     * 
+ */ + public int getDelayBetweenHands() { + return delayBetweenHands_; + } + + // required uint32 playerActionTimeout = 11; + public static final int PLAYERACTIONTIMEOUT_FIELD_NUMBER = 11; + private int playerActionTimeout_; + /** + * required uint32 playerActionTimeout = 11; + * + *
+     * These are seconds
+     * 
+ */ + public boolean hasPlayerActionTimeout() { + return ((bitField0_ & 0x00000400) == 0x00000400); + } + /** + * required uint32 playerActionTimeout = 11; + * + *
+     * These are seconds
+     * 
+ */ + public int getPlayerActionTimeout() { + return playerActionTimeout_; + } + + // required uint32 firstSmallBlind = 12; + public static final int FIRSTSMALLBLIND_FIELD_NUMBER = 12; + private int firstSmallBlind_; + /** + * required uint32 firstSmallBlind = 12; + */ + public boolean hasFirstSmallBlind() { + return ((bitField0_ & 0x00000800) == 0x00000800); + } + /** + * required uint32 firstSmallBlind = 12; + */ + public int getFirstSmallBlind() { + return firstSmallBlind_; + } + + // required uint32 startMoney = 13; + public static final int STARTMONEY_FIELD_NUMBER = 13; + private int startMoney_; + /** + * required uint32 startMoney = 13; + */ + public boolean hasStartMoney() { + return ((bitField0_ & 0x00001000) == 0x00001000); + } + /** + * required uint32 startMoney = 13; + */ + public int getStartMoney() { + return startMoney_; + } + + // repeated uint32 manualBlinds = 14 [packed = true]; + public static final int MANUALBLINDS_FIELD_NUMBER = 14; + private java.util.List manualBlinds_; + /** + * repeated uint32 manualBlinds = 14 [packed = true]; + */ + public java.util.List + getManualBlindsList() { + return manualBlinds_; + } + /** + * repeated uint32 manualBlinds = 14 [packed = true]; + */ + public int getManualBlindsCount() { + return manualBlinds_.size(); + } + /** + * repeated uint32 manualBlinds = 14 [packed = true]; + */ + public int getManualBlinds(int index) { + return manualBlinds_.get(index); + } + private int manualBlindsMemoizedSerializedSize = -1; + + private void initFields() { + gameName_ = ""; + netGameType_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType.normalGame; + maxNumPlayers_ = 0; + raiseIntervalMode_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode.raiseOnHandNum; + raiseEveryHands_ = 0; + raiseEveryMinutes_ = 0; + endRaiseMode_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode.doubleBlinds; + endRaiseSmallBlindValue_ = 0; + proposedGuiSpeed_ = 0; + delayBetweenHands_ = 0; + playerActionTimeout_ = 0; + firstSmallBlind_ = 0; + startMoney_ = 0; + manualBlinds_ = java.util.Collections.emptyList(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasGameName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasNetGameType()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMaxNumPlayers()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasRaiseIntervalMode()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasEndRaiseMode()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasProposedGuiSpeed()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasDelayBetweenHands()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPlayerActionTimeout()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFirstSmallBlind()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasStartMoney()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getGameNameBytes()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeEnum(2, netGameType_.getNumber()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeUInt32(3, maxNumPlayers_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeEnum(4, raiseIntervalMode_.getNumber()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeUInt32(5, raiseEveryHands_); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeUInt32(6, raiseEveryMinutes_); + } + if (((bitField0_ & 0x00000040) == 0x00000040)) { + output.writeEnum(7, endRaiseMode_.getNumber()); + } + if (((bitField0_ & 0x00000080) == 0x00000080)) { + output.writeUInt32(8, endRaiseSmallBlindValue_); + } + if (((bitField0_ & 0x00000100) == 0x00000100)) { + output.writeUInt32(9, proposedGuiSpeed_); + } + if (((bitField0_ & 0x00000200) == 0x00000200)) { + output.writeUInt32(10, delayBetweenHands_); + } + if (((bitField0_ & 0x00000400) == 0x00000400)) { + output.writeUInt32(11, playerActionTimeout_); + } + if (((bitField0_ & 0x00000800) == 0x00000800)) { + output.writeUInt32(12, firstSmallBlind_); + } + if (((bitField0_ & 0x00001000) == 0x00001000)) { + output.writeUInt32(13, startMoney_); + } + if (getManualBlindsList().size() > 0) { + output.writeRawVarint32(114); + output.writeRawVarint32(manualBlindsMemoizedSerializedSize); + } + for (int i = 0; i < manualBlinds_.size(); i++) { + output.writeUInt32NoTag(manualBlinds_.get(i)); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, getGameNameBytes()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(2, netGameType_.getNumber()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, maxNumPlayers_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(4, raiseIntervalMode_.getNumber()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(5, raiseEveryHands_); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(6, raiseEveryMinutes_); + } + if (((bitField0_ & 0x00000040) == 0x00000040)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(7, endRaiseMode_.getNumber()); + } + if (((bitField0_ & 0x00000080) == 0x00000080)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(8, endRaiseSmallBlindValue_); + } + if (((bitField0_ & 0x00000100) == 0x00000100)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(9, proposedGuiSpeed_); + } + if (((bitField0_ & 0x00000200) == 0x00000200)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(10, delayBetweenHands_); + } + if (((bitField0_ & 0x00000400) == 0x00000400)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(11, playerActionTimeout_); + } + if (((bitField0_ & 0x00000800) == 0x00000800)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(12, firstSmallBlind_); + } + if (((bitField0_ & 0x00001000) == 0x00001000)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(13, startMoney_); + } + { + int dataSize = 0; + for (int i = 0; i < manualBlinds_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeUInt32SizeNoTag(manualBlinds_.get(i)); + } + size += dataSize; + if (!getManualBlindsList().isEmpty()) { + size += 1; + size += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(dataSize); + } + manualBlindsMemoizedSerializedSize = dataSize; + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.NetGameInfo parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.NetGameInfo prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code NetGameInfo} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.NetGameInfo, Builder> + implements de.pokerth.protocol.ProtoBuf.NetGameInfoOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.NetGameInfo.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + gameName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + netGameType_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType.normalGame; + bitField0_ = (bitField0_ & ~0x00000002); + maxNumPlayers_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + raiseIntervalMode_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode.raiseOnHandNum; + bitField0_ = (bitField0_ & ~0x00000008); + raiseEveryHands_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + raiseEveryMinutes_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); + endRaiseMode_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode.doubleBlinds; + bitField0_ = (bitField0_ & ~0x00000040); + endRaiseSmallBlindValue_ = 0; + bitField0_ = (bitField0_ & ~0x00000080); + proposedGuiSpeed_ = 0; + bitField0_ = (bitField0_ & ~0x00000100); + delayBetweenHands_ = 0; + bitField0_ = (bitField0_ & ~0x00000200); + playerActionTimeout_ = 0; + bitField0_ = (bitField0_ & ~0x00000400); + firstSmallBlind_ = 0; + bitField0_ = (bitField0_ & ~0x00000800); + startMoney_ = 0; + bitField0_ = (bitField0_ & ~0x00001000); + manualBlinds_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00002000); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.NetGameInfo getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.NetGameInfo build() { + de.pokerth.protocol.ProtoBuf.NetGameInfo result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.NetGameInfo buildPartial() { + de.pokerth.protocol.ProtoBuf.NetGameInfo result = new de.pokerth.protocol.ProtoBuf.NetGameInfo(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.gameName_ = gameName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.netGameType_ = netGameType_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.maxNumPlayers_ = maxNumPlayers_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.raiseIntervalMode_ = raiseIntervalMode_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.raiseEveryHands_ = raiseEveryHands_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.raiseEveryMinutes_ = raiseEveryMinutes_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000040; + } + result.endRaiseMode_ = endRaiseMode_; + if (((from_bitField0_ & 0x00000080) == 0x00000080)) { + to_bitField0_ |= 0x00000080; + } + result.endRaiseSmallBlindValue_ = endRaiseSmallBlindValue_; + if (((from_bitField0_ & 0x00000100) == 0x00000100)) { + to_bitField0_ |= 0x00000100; + } + result.proposedGuiSpeed_ = proposedGuiSpeed_; + if (((from_bitField0_ & 0x00000200) == 0x00000200)) { + to_bitField0_ |= 0x00000200; + } + result.delayBetweenHands_ = delayBetweenHands_; + if (((from_bitField0_ & 0x00000400) == 0x00000400)) { + to_bitField0_ |= 0x00000400; + } + result.playerActionTimeout_ = playerActionTimeout_; + if (((from_bitField0_ & 0x00000800) == 0x00000800)) { + to_bitField0_ |= 0x00000800; + } + result.firstSmallBlind_ = firstSmallBlind_; + if (((from_bitField0_ & 0x00001000) == 0x00001000)) { + to_bitField0_ |= 0x00001000; + } + result.startMoney_ = startMoney_; + if (((bitField0_ & 0x00002000) == 0x00002000)) { + manualBlinds_ = java.util.Collections.unmodifiableList(manualBlinds_); + bitField0_ = (bitField0_ & ~0x00002000); + } + result.manualBlinds_ = manualBlinds_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.NetGameInfo other) { + if (other == de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance()) return this; + if (other.hasGameName()) { + bitField0_ |= 0x00000001; + gameName_ = other.gameName_; + + } + if (other.hasNetGameType()) { + setNetGameType(other.getNetGameType()); + } + if (other.hasMaxNumPlayers()) { + setMaxNumPlayers(other.getMaxNumPlayers()); + } + if (other.hasRaiseIntervalMode()) { + setRaiseIntervalMode(other.getRaiseIntervalMode()); + } + if (other.hasRaiseEveryHands()) { + setRaiseEveryHands(other.getRaiseEveryHands()); + } + if (other.hasRaiseEveryMinutes()) { + setRaiseEveryMinutes(other.getRaiseEveryMinutes()); + } + if (other.hasEndRaiseMode()) { + setEndRaiseMode(other.getEndRaiseMode()); + } + if (other.hasEndRaiseSmallBlindValue()) { + setEndRaiseSmallBlindValue(other.getEndRaiseSmallBlindValue()); + } + if (other.hasProposedGuiSpeed()) { + setProposedGuiSpeed(other.getProposedGuiSpeed()); + } + if (other.hasDelayBetweenHands()) { + setDelayBetweenHands(other.getDelayBetweenHands()); + } + if (other.hasPlayerActionTimeout()) { + setPlayerActionTimeout(other.getPlayerActionTimeout()); + } + if (other.hasFirstSmallBlind()) { + setFirstSmallBlind(other.getFirstSmallBlind()); + } + if (other.hasStartMoney()) { + setStartMoney(other.getStartMoney()); + } + if (!other.manualBlinds_.isEmpty()) { + if (manualBlinds_.isEmpty()) { + manualBlinds_ = other.manualBlinds_; + bitField0_ = (bitField0_ & ~0x00002000); + } else { + ensureManualBlindsIsMutable(); + manualBlinds_.addAll(other.manualBlinds_); + } + + } + return this; + } + + public final boolean isInitialized() { + if (!hasGameName()) { + + return false; + } + if (!hasNetGameType()) { + + return false; + } + if (!hasMaxNumPlayers()) { + + return false; + } + if (!hasRaiseIntervalMode()) { + + return false; + } + if (!hasEndRaiseMode()) { + + return false; + } + if (!hasProposedGuiSpeed()) { + + return false; + } + if (!hasDelayBetweenHands()) { + + return false; + } + if (!hasPlayerActionTimeout()) { + + return false; + } + if (!hasFirstSmallBlind()) { + + return false; + } + if (!hasStartMoney()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.NetGameInfo parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.NetGameInfo) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required string gameName = 1; private java.lang.Object gameName_ = ""; + /** + * required string gameName = 1; + */ public boolean hasGameName() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public String getGameName() { + /** + * required string gameName = 1; + */ + public java.lang.String getGameName() { java.lang.Object ref = gameName_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); gameName_ = s; return s; } else { - return (String) ref; + return (java.lang.String) ref; } } - public Builder setGameName(String value) { + /** + * required string gameName = 1; + */ + public com.google.protobuf.ByteString + getGameNameBytes() { + java.lang.Object ref = gameName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + gameName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string gameName = 1; + */ + public Builder setGameName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } @@ -1319,26 +1831,46 @@ public final class ProtoBuf { return this; } + /** + * required string gameName = 1; + */ public Builder clearGameName() { bitField0_ = (bitField0_ & ~0x00000001); gameName_ = getDefaultInstance().getGameName(); return this; } - void setGameName(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000001; + /** + * required string gameName = 1; + */ + public Builder setGameNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; gameName_ = value; + return this; } - + // required .NetGameInfo.NetGameType netGameType = 2; private de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType netGameType_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType.normalGame; + /** + * required .NetGameInfo.NetGameType netGameType = 2; + */ public boolean hasNetGameType() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .NetGameInfo.NetGameType netGameType = 2; + */ public de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType getNetGameType() { return netGameType_; } + /** + * required .NetGameInfo.NetGameType netGameType = 2; + */ public Builder setNetGameType(de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType value) { if (value == null) { throw new NullPointerException(); @@ -1348,42 +1880,66 @@ public final class ProtoBuf { return this; } + /** + * required .NetGameInfo.NetGameType netGameType = 2; + */ public Builder clearNetGameType() { bitField0_ = (bitField0_ & ~0x00000002); netGameType_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType.normalGame; return this; } - + // required uint32 maxNumPlayers = 3; private int maxNumPlayers_ ; + /** + * required uint32 maxNumPlayers = 3; + */ public boolean hasMaxNumPlayers() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required uint32 maxNumPlayers = 3; + */ public int getMaxNumPlayers() { return maxNumPlayers_; } + /** + * required uint32 maxNumPlayers = 3; + */ public Builder setMaxNumPlayers(int value) { bitField0_ |= 0x00000004; maxNumPlayers_ = value; return this; } + /** + * required uint32 maxNumPlayers = 3; + */ public Builder clearMaxNumPlayers() { bitField0_ = (bitField0_ & ~0x00000004); maxNumPlayers_ = 0; return this; } - + // required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; private de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode raiseIntervalMode_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode.raiseOnHandNum; + /** + * required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; + */ public boolean hasRaiseIntervalMode() { return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; + */ public de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode getRaiseIntervalMode() { return raiseIntervalMode_; } + /** + * required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; + */ public Builder setRaiseIntervalMode(de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode value) { if (value == null) { throw new NullPointerException(); @@ -1393,63 +1949,99 @@ public final class ProtoBuf { return this; } + /** + * required .NetGameInfo.RaiseIntervalMode raiseIntervalMode = 4; + */ public Builder clearRaiseIntervalMode() { bitField0_ = (bitField0_ & ~0x00000008); raiseIntervalMode_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.RaiseIntervalMode.raiseOnHandNum; return this; } - + // optional uint32 raiseEveryHands = 5; private int raiseEveryHands_ ; + /** + * optional uint32 raiseEveryHands = 5; + */ public boolean hasRaiseEveryHands() { return ((bitField0_ & 0x00000010) == 0x00000010); } + /** + * optional uint32 raiseEveryHands = 5; + */ public int getRaiseEveryHands() { return raiseEveryHands_; } + /** + * optional uint32 raiseEveryHands = 5; + */ public Builder setRaiseEveryHands(int value) { bitField0_ |= 0x00000010; raiseEveryHands_ = value; return this; } + /** + * optional uint32 raiseEveryHands = 5; + */ public Builder clearRaiseEveryHands() { bitField0_ = (bitField0_ & ~0x00000010); raiseEveryHands_ = 0; return this; } - + // optional uint32 raiseEveryMinutes = 6; private int raiseEveryMinutes_ ; + /** + * optional uint32 raiseEveryMinutes = 6; + */ public boolean hasRaiseEveryMinutes() { return ((bitField0_ & 0x00000020) == 0x00000020); } + /** + * optional uint32 raiseEveryMinutes = 6; + */ public int getRaiseEveryMinutes() { return raiseEveryMinutes_; } + /** + * optional uint32 raiseEveryMinutes = 6; + */ public Builder setRaiseEveryMinutes(int value) { bitField0_ |= 0x00000020; raiseEveryMinutes_ = value; return this; } + /** + * optional uint32 raiseEveryMinutes = 6; + */ public Builder clearRaiseEveryMinutes() { bitField0_ = (bitField0_ & ~0x00000020); raiseEveryMinutes_ = 0; return this; } - + // required .NetGameInfo.EndRaiseMode endRaiseMode = 7; private de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode endRaiseMode_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode.doubleBlinds; + /** + * required .NetGameInfo.EndRaiseMode endRaiseMode = 7; + */ public boolean hasEndRaiseMode() { return ((bitField0_ & 0x00000040) == 0x00000040); } + /** + * required .NetGameInfo.EndRaiseMode endRaiseMode = 7; + */ public de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode getEndRaiseMode() { return endRaiseMode_; } + /** + * required .NetGameInfo.EndRaiseMode endRaiseMode = 7; + */ public Builder setEndRaiseMode(de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode value) { if (value == null) { throw new NullPointerException(); @@ -1459,157 +2051,276 @@ public final class ProtoBuf { return this; } + /** + * required .NetGameInfo.EndRaiseMode endRaiseMode = 7; + */ public Builder clearEndRaiseMode() { bitField0_ = (bitField0_ & ~0x00000040); endRaiseMode_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode.doubleBlinds; return this; } - + // optional uint32 endRaiseSmallBlindValue = 8; private int endRaiseSmallBlindValue_ ; + /** + * optional uint32 endRaiseSmallBlindValue = 8; + */ public boolean hasEndRaiseSmallBlindValue() { return ((bitField0_ & 0x00000080) == 0x00000080); } + /** + * optional uint32 endRaiseSmallBlindValue = 8; + */ public int getEndRaiseSmallBlindValue() { return endRaiseSmallBlindValue_; } + /** + * optional uint32 endRaiseSmallBlindValue = 8; + */ public Builder setEndRaiseSmallBlindValue(int value) { bitField0_ |= 0x00000080; endRaiseSmallBlindValue_ = value; return this; } + /** + * optional uint32 endRaiseSmallBlindValue = 8; + */ public Builder clearEndRaiseSmallBlindValue() { bitField0_ = (bitField0_ & ~0x00000080); endRaiseSmallBlindValue_ = 0; return this; } - + // required uint32 proposedGuiSpeed = 9; private int proposedGuiSpeed_ ; + /** + * required uint32 proposedGuiSpeed = 9; + */ public boolean hasProposedGuiSpeed() { return ((bitField0_ & 0x00000100) == 0x00000100); } + /** + * required uint32 proposedGuiSpeed = 9; + */ public int getProposedGuiSpeed() { return proposedGuiSpeed_; } + /** + * required uint32 proposedGuiSpeed = 9; + */ public Builder setProposedGuiSpeed(int value) { bitField0_ |= 0x00000100; proposedGuiSpeed_ = value; return this; } + /** + * required uint32 proposedGuiSpeed = 9; + */ public Builder clearProposedGuiSpeed() { bitField0_ = (bitField0_ & ~0x00000100); proposedGuiSpeed_ = 0; return this; } - + // required uint32 delayBetweenHands = 10; private int delayBetweenHands_ ; + /** + * required uint32 delayBetweenHands = 10; + * + *
+       * These are seconds
+       * 
+ */ public boolean hasDelayBetweenHands() { return ((bitField0_ & 0x00000200) == 0x00000200); } + /** + * required uint32 delayBetweenHands = 10; + * + *
+       * These are seconds
+       * 
+ */ public int getDelayBetweenHands() { return delayBetweenHands_; } + /** + * required uint32 delayBetweenHands = 10; + * + *
+       * These are seconds
+       * 
+ */ public Builder setDelayBetweenHands(int value) { bitField0_ |= 0x00000200; delayBetweenHands_ = value; return this; } + /** + * required uint32 delayBetweenHands = 10; + * + *
+       * These are seconds
+       * 
+ */ public Builder clearDelayBetweenHands() { bitField0_ = (bitField0_ & ~0x00000200); delayBetweenHands_ = 0; return this; } - + // required uint32 playerActionTimeout = 11; private int playerActionTimeout_ ; + /** + * required uint32 playerActionTimeout = 11; + * + *
+       * These are seconds
+       * 
+ */ public boolean hasPlayerActionTimeout() { return ((bitField0_ & 0x00000400) == 0x00000400); } + /** + * required uint32 playerActionTimeout = 11; + * + *
+       * These are seconds
+       * 
+ */ public int getPlayerActionTimeout() { return playerActionTimeout_; } + /** + * required uint32 playerActionTimeout = 11; + * + *
+       * These are seconds
+       * 
+ */ public Builder setPlayerActionTimeout(int value) { bitField0_ |= 0x00000400; playerActionTimeout_ = value; return this; } + /** + * required uint32 playerActionTimeout = 11; + * + *
+       * These are seconds
+       * 
+ */ public Builder clearPlayerActionTimeout() { bitField0_ = (bitField0_ & ~0x00000400); playerActionTimeout_ = 0; return this; } - + // required uint32 firstSmallBlind = 12; private int firstSmallBlind_ ; + /** + * required uint32 firstSmallBlind = 12; + */ public boolean hasFirstSmallBlind() { return ((bitField0_ & 0x00000800) == 0x00000800); } + /** + * required uint32 firstSmallBlind = 12; + */ public int getFirstSmallBlind() { return firstSmallBlind_; } + /** + * required uint32 firstSmallBlind = 12; + */ public Builder setFirstSmallBlind(int value) { bitField0_ |= 0x00000800; firstSmallBlind_ = value; return this; } + /** + * required uint32 firstSmallBlind = 12; + */ public Builder clearFirstSmallBlind() { bitField0_ = (bitField0_ & ~0x00000800); firstSmallBlind_ = 0; return this; } - + // required uint32 startMoney = 13; private int startMoney_ ; + /** + * required uint32 startMoney = 13; + */ public boolean hasStartMoney() { return ((bitField0_ & 0x00001000) == 0x00001000); } + /** + * required uint32 startMoney = 13; + */ public int getStartMoney() { return startMoney_; } + /** + * required uint32 startMoney = 13; + */ public Builder setStartMoney(int value) { bitField0_ |= 0x00001000; startMoney_ = value; return this; } + /** + * required uint32 startMoney = 13; + */ public Builder clearStartMoney() { bitField0_ = (bitField0_ & ~0x00001000); startMoney_ = 0; return this; } - + // repeated uint32 manualBlinds = 14 [packed = true]; - private java.util.List manualBlinds_ = java.util.Collections.emptyList();; + private java.util.List manualBlinds_ = java.util.Collections.emptyList(); private void ensureManualBlindsIsMutable() { if (!((bitField0_ & 0x00002000) == 0x00002000)) { manualBlinds_ = new java.util.ArrayList(manualBlinds_); bitField0_ |= 0x00002000; } } + /** + * repeated uint32 manualBlinds = 14 [packed = true]; + */ public java.util.List getManualBlindsList() { return java.util.Collections.unmodifiableList(manualBlinds_); } + /** + * repeated uint32 manualBlinds = 14 [packed = true]; + */ public int getManualBlindsCount() { return manualBlinds_.size(); } + /** + * repeated uint32 manualBlinds = 14 [packed = true]; + */ public int getManualBlinds(int index) { return manualBlinds_.get(index); } + /** + * repeated uint32 manualBlinds = 14 [packed = true]; + */ public Builder setManualBlinds( int index, int value) { ensureManualBlindsIsMutable(); @@ -1617,12 +2328,18 @@ public final class ProtoBuf { return this; } + /** + * repeated uint32 manualBlinds = 14 [packed = true]; + */ public Builder addManualBlinds(int value) { ensureManualBlindsIsMutable(); manualBlinds_.add(value); return this; } + /** + * repeated uint32 manualBlinds = 14 [packed = true]; + */ public Builder addAllManualBlinds( java.lang.Iterable values) { ensureManualBlindsIsMutable(); @@ -1630,155 +2347,353 @@ public final class ProtoBuf { return this; } + /** + * repeated uint32 manualBlinds = 14 [packed = true]; + */ public Builder clearManualBlinds() { - manualBlinds_ = java.util.Collections.emptyList();; + manualBlinds_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00002000); return this; } - + // @@protoc_insertion_point(builder_scope:NetGameInfo) } - + static { defaultInstance = new NetGameInfo(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:NetGameInfo) } - + public interface PlayerResultOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 playerId = 1; + /** + * required uint32 playerId = 1; + */ boolean hasPlayerId(); + /** + * required uint32 playerId = 1; + */ int getPlayerId(); - + // required uint32 resultCard1 = 2; + /** + * required uint32 resultCard1 = 2; + */ boolean hasResultCard1(); + /** + * required uint32 resultCard1 = 2; + */ int getResultCard1(); - + // required uint32 resultCard2 = 3; + /** + * required uint32 resultCard2 = 3; + */ boolean hasResultCard2(); + /** + * required uint32 resultCard2 = 3; + */ int getResultCard2(); - + // repeated uint32 bestHandPosition = 4 [packed = true]; + /** + * repeated uint32 bestHandPosition = 4 [packed = true]; + */ java.util.List getBestHandPositionList(); + /** + * repeated uint32 bestHandPosition = 4 [packed = true]; + */ int getBestHandPositionCount(); + /** + * repeated uint32 bestHandPosition = 4 [packed = true]; + */ int getBestHandPosition(int index); - + // required uint32 moneyWon = 5; + /** + * required uint32 moneyWon = 5; + */ boolean hasMoneyWon(); + /** + * required uint32 moneyWon = 5; + */ int getMoneyWon(); - + // required uint32 playerMoney = 6; + /** + * required uint32 playerMoney = 6; + */ boolean hasPlayerMoney(); + /** + * required uint32 playerMoney = 6; + */ int getPlayerMoney(); - + // optional uint32 cardsValue = 7; + /** + * optional uint32 cardsValue = 7; + */ boolean hasCardsValue(); + /** + * optional uint32 cardsValue = 7; + */ int getCardsValue(); } + /** + * Protobuf type {@code PlayerResult} + */ public static final class PlayerResult extends com.google.protobuf.GeneratedMessageLite implements PlayerResultOrBuilder { // Use PlayerResult.newBuilder() to construct. - private PlayerResult(Builder builder) { + private PlayerResult(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private PlayerResult(boolean noInit) {} - + private static final PlayerResult defaultInstance; public static PlayerResult getDefaultInstance() { return defaultInstance; } - + public PlayerResult getDefaultInstanceForType() { return defaultInstance; } - + + private PlayerResult( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + playerId_ = input.readUInt32(); + break; + } + case 16: { + bitField0_ |= 0x00000002; + resultCard1_ = input.readUInt32(); + break; + } + case 24: { + bitField0_ |= 0x00000004; + resultCard2_ = input.readUInt32(); + break; + } + case 32: { + if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) { + bestHandPosition_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000008; + } + bestHandPosition_.add(input.readUInt32()); + break; + } + case 34: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) { + bestHandPosition_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000008; + } + while (input.getBytesUntilLimit() > 0) { + bestHandPosition_.add(input.readUInt32()); + } + input.popLimit(limit); + break; + } + case 40: { + bitField0_ |= 0x00000008; + moneyWon_ = input.readUInt32(); + break; + } + case 48: { + bitField0_ |= 0x00000010; + playerMoney_ = input.readUInt32(); + break; + } + case 56: { + bitField0_ |= 0x00000020; + cardsValue_ = input.readUInt32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) { + bestHandPosition_ = java.util.Collections.unmodifiableList(bestHandPosition_); + } + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PlayerResult parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PlayerResult(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required uint32 playerId = 1; public static final int PLAYERID_FIELD_NUMBER = 1; private int playerId_; + /** + * required uint32 playerId = 1; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 playerId = 1; + */ public int getPlayerId() { return playerId_; } - + // required uint32 resultCard1 = 2; public static final int RESULTCARD1_FIELD_NUMBER = 2; private int resultCard1_; + /** + * required uint32 resultCard1 = 2; + */ public boolean hasResultCard1() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 resultCard1 = 2; + */ public int getResultCard1() { return resultCard1_; } - + // required uint32 resultCard2 = 3; public static final int RESULTCARD2_FIELD_NUMBER = 3; private int resultCard2_; + /** + * required uint32 resultCard2 = 3; + */ public boolean hasResultCard2() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required uint32 resultCard2 = 3; + */ public int getResultCard2() { return resultCard2_; } - + // repeated uint32 bestHandPosition = 4 [packed = true]; public static final int BESTHANDPOSITION_FIELD_NUMBER = 4; private java.util.List bestHandPosition_; + /** + * repeated uint32 bestHandPosition = 4 [packed = true]; + */ public java.util.List getBestHandPositionList() { return bestHandPosition_; } + /** + * repeated uint32 bestHandPosition = 4 [packed = true]; + */ public int getBestHandPositionCount() { return bestHandPosition_.size(); } + /** + * repeated uint32 bestHandPosition = 4 [packed = true]; + */ public int getBestHandPosition(int index) { return bestHandPosition_.get(index); } private int bestHandPositionMemoizedSerializedSize = -1; - + // required uint32 moneyWon = 5; public static final int MONEYWON_FIELD_NUMBER = 5; private int moneyWon_; + /** + * required uint32 moneyWon = 5; + */ public boolean hasMoneyWon() { return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required uint32 moneyWon = 5; + */ public int getMoneyWon() { return moneyWon_; } - + // required uint32 playerMoney = 6; public static final int PLAYERMONEY_FIELD_NUMBER = 6; private int playerMoney_; + /** + * required uint32 playerMoney = 6; + */ public boolean hasPlayerMoney() { return ((bitField0_ & 0x00000010) == 0x00000010); } + /** + * required uint32 playerMoney = 6; + */ public int getPlayerMoney() { return playerMoney_; } - + // optional uint32 cardsValue = 7; public static final int CARDSVALUE_FIELD_NUMBER = 7; private int cardsValue_; + /** + * optional uint32 cardsValue = 7; + */ public boolean hasCardsValue() { return ((bitField0_ & 0x00000020) == 0x00000020); } + /** + * optional uint32 cardsValue = 7; + */ public int getCardsValue() { return cardsValue_; } - + private void initFields() { playerId_ = 0; resultCard1_ = 0; resultCard2_ = 0; - bestHandPosition_ = java.util.Collections.emptyList();; + bestHandPosition_ = java.util.Collections.emptyList(); moneyWon_ = 0; playerMoney_ = 0; cardsValue_ = 0; @@ -1787,7 +2702,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasPlayerId()) { memoizedIsInitialized = 0; return false; @@ -1811,7 +2726,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -1841,12 +2756,12 @@ public final class ProtoBuf { output.writeUInt32(7, cardsValue_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -1889,88 +2804,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.PlayerResult parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.PlayerResult parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PlayerResult parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.PlayerResult parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PlayerResult parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.PlayerResult parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PlayerResult parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.PlayerResult parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PlayerResult parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.PlayerResult parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayerResult prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code PlayerResult} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.PlayerResult, Builder> @@ -1979,13 +2883,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); playerId_ = 0; @@ -1994,7 +2898,7 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); resultCard2_ = 0; bitField0_ = (bitField0_ & ~0x00000004); - bestHandPosition_ = java.util.Collections.emptyList();; + bestHandPosition_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000008); moneyWon_ = 0; bitField0_ = (bitField0_ & ~0x00000010); @@ -2004,15 +2908,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000040); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.PlayerResult getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.PlayerResult.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.PlayerResult build() { de.pokerth.protocol.ProtoBuf.PlayerResult result = buildPartial(); if (!result.isInitialized()) { @@ -2020,17 +2924,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.PlayerResult buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.PlayerResult result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.PlayerResult buildPartial() { de.pokerth.protocol.ProtoBuf.PlayerResult result = new de.pokerth.protocol.ProtoBuf.PlayerResult(this); int from_bitField0_ = bitField0_; @@ -2067,7 +2961,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayerResult other) { if (other == de.pokerth.protocol.ProtoBuf.PlayerResult.getDefaultInstance()) return this; if (other.hasPlayerId()) { @@ -2100,7 +2994,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasPlayerId()) { @@ -2124,155 +3018,155 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - playerId_ = input.readUInt32(); - break; - } - case 16: { - bitField0_ |= 0x00000002; - resultCard1_ = input.readUInt32(); - break; - } - case 24: { - bitField0_ |= 0x00000004; - resultCard2_ = input.readUInt32(); - break; - } - case 32: { - ensureBestHandPositionIsMutable(); - bestHandPosition_.add(input.readUInt32()); - break; - } - case 34: { - int length = input.readRawVarint32(); - int limit = input.pushLimit(length); - while (input.getBytesUntilLimit() > 0) { - addBestHandPosition(input.readUInt32()); - } - input.popLimit(limit); - break; - } - case 40: { - bitField0_ |= 0x00000010; - moneyWon_ = input.readUInt32(); - break; - } - case 48: { - bitField0_ |= 0x00000020; - playerMoney_ = input.readUInt32(); - break; - } - case 56: { - bitField0_ |= 0x00000040; - cardsValue_ = input.readUInt32(); - break; - } + de.pokerth.protocol.ProtoBuf.PlayerResult parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.PlayerResult) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 playerId = 1; private int playerId_ ; + /** + * required uint32 playerId = 1; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 playerId = 1; + */ public int getPlayerId() { return playerId_; } + /** + * required uint32 playerId = 1; + */ public Builder setPlayerId(int value) { bitField0_ |= 0x00000001; playerId_ = value; return this; } + /** + * required uint32 playerId = 1; + */ public Builder clearPlayerId() { bitField0_ = (bitField0_ & ~0x00000001); playerId_ = 0; return this; } - + // required uint32 resultCard1 = 2; private int resultCard1_ ; + /** + * required uint32 resultCard1 = 2; + */ public boolean hasResultCard1() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 resultCard1 = 2; + */ public int getResultCard1() { return resultCard1_; } + /** + * required uint32 resultCard1 = 2; + */ public Builder setResultCard1(int value) { bitField0_ |= 0x00000002; resultCard1_ = value; return this; } + /** + * required uint32 resultCard1 = 2; + */ public Builder clearResultCard1() { bitField0_ = (bitField0_ & ~0x00000002); resultCard1_ = 0; return this; } - + // required uint32 resultCard2 = 3; private int resultCard2_ ; + /** + * required uint32 resultCard2 = 3; + */ public boolean hasResultCard2() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required uint32 resultCard2 = 3; + */ public int getResultCard2() { return resultCard2_; } + /** + * required uint32 resultCard2 = 3; + */ public Builder setResultCard2(int value) { bitField0_ |= 0x00000004; resultCard2_ = value; return this; } + /** + * required uint32 resultCard2 = 3; + */ public Builder clearResultCard2() { bitField0_ = (bitField0_ & ~0x00000004); resultCard2_ = 0; return this; } - + // repeated uint32 bestHandPosition = 4 [packed = true]; - private java.util.List bestHandPosition_ = java.util.Collections.emptyList();; + private java.util.List bestHandPosition_ = java.util.Collections.emptyList(); private void ensureBestHandPositionIsMutable() { if (!((bitField0_ & 0x00000008) == 0x00000008)) { bestHandPosition_ = new java.util.ArrayList(bestHandPosition_); bitField0_ |= 0x00000008; } } + /** + * repeated uint32 bestHandPosition = 4 [packed = true]; + */ public java.util.List getBestHandPositionList() { return java.util.Collections.unmodifiableList(bestHandPosition_); } + /** + * repeated uint32 bestHandPosition = 4 [packed = true]; + */ public int getBestHandPositionCount() { return bestHandPosition_.size(); } + /** + * repeated uint32 bestHandPosition = 4 [packed = true]; + */ public int getBestHandPosition(int index) { return bestHandPosition_.get(index); } + /** + * repeated uint32 bestHandPosition = 4 [packed = true]; + */ public Builder setBestHandPosition( int index, int value) { ensureBestHandPositionIsMutable(); @@ -2280,12 +3174,18 @@ public final class ProtoBuf { return this; } + /** + * repeated uint32 bestHandPosition = 4 [packed = true]; + */ public Builder addBestHandPosition(int value) { ensureBestHandPositionIsMutable(); bestHandPosition_.add(value); return this; } + /** + * repeated uint32 bestHandPosition = 4 [packed = true]; + */ public Builder addAllBestHandPosition( java.lang.Iterable values) { ensureBestHandPositionIsMutable(); @@ -2293,142 +3193,328 @@ public final class ProtoBuf { return this; } + /** + * repeated uint32 bestHandPosition = 4 [packed = true]; + */ public Builder clearBestHandPosition() { - bestHandPosition_ = java.util.Collections.emptyList();; + bestHandPosition_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000008); return this; } - + // required uint32 moneyWon = 5; private int moneyWon_ ; + /** + * required uint32 moneyWon = 5; + */ public boolean hasMoneyWon() { return ((bitField0_ & 0x00000010) == 0x00000010); } + /** + * required uint32 moneyWon = 5; + */ public int getMoneyWon() { return moneyWon_; } + /** + * required uint32 moneyWon = 5; + */ public Builder setMoneyWon(int value) { bitField0_ |= 0x00000010; moneyWon_ = value; return this; } + /** + * required uint32 moneyWon = 5; + */ public Builder clearMoneyWon() { bitField0_ = (bitField0_ & ~0x00000010); moneyWon_ = 0; return this; } - + // required uint32 playerMoney = 6; private int playerMoney_ ; + /** + * required uint32 playerMoney = 6; + */ public boolean hasPlayerMoney() { return ((bitField0_ & 0x00000020) == 0x00000020); } + /** + * required uint32 playerMoney = 6; + */ public int getPlayerMoney() { return playerMoney_; } + /** + * required uint32 playerMoney = 6; + */ public Builder setPlayerMoney(int value) { bitField0_ |= 0x00000020; playerMoney_ = value; return this; } + /** + * required uint32 playerMoney = 6; + */ public Builder clearPlayerMoney() { bitField0_ = (bitField0_ & ~0x00000020); playerMoney_ = 0; return this; } - + // optional uint32 cardsValue = 7; private int cardsValue_ ; + /** + * optional uint32 cardsValue = 7; + */ public boolean hasCardsValue() { return ((bitField0_ & 0x00000040) == 0x00000040); } + /** + * optional uint32 cardsValue = 7; + */ public int getCardsValue() { return cardsValue_; } + /** + * optional uint32 cardsValue = 7; + */ public Builder setCardsValue(int value) { bitField0_ |= 0x00000040; cardsValue_ = value; return this; } + /** + * optional uint32 cardsValue = 7; + */ public Builder clearCardsValue() { bitField0_ = (bitField0_ & ~0x00000040); cardsValue_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:PlayerResult) } - + static { defaultInstance = new PlayerResult(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:PlayerResult) } - + public interface AnnounceMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required .AnnounceMessage.Version protocolVersion = 1; + /** + * required .AnnounceMessage.Version protocolVersion = 1; + */ boolean hasProtocolVersion(); + /** + * required .AnnounceMessage.Version protocolVersion = 1; + */ de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version getProtocolVersion(); - + // required .AnnounceMessage.Version latestGameVersion = 2; + /** + * required .AnnounceMessage.Version latestGameVersion = 2; + */ boolean hasLatestGameVersion(); + /** + * required .AnnounceMessage.Version latestGameVersion = 2; + */ de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version getLatestGameVersion(); - + // required uint32 latestBetaRevision = 3; + /** + * required uint32 latestBetaRevision = 3; + */ boolean hasLatestBetaRevision(); + /** + * required uint32 latestBetaRevision = 3; + */ int getLatestBetaRevision(); - + // required .AnnounceMessage.ServerType serverType = 4; + /** + * required .AnnounceMessage.ServerType serverType = 4; + */ boolean hasServerType(); + /** + * required .AnnounceMessage.ServerType serverType = 4; + */ de.pokerth.protocol.ProtoBuf.AnnounceMessage.ServerType getServerType(); - + // required uint32 numPlayersOnServer = 5; + /** + * required uint32 numPlayersOnServer = 5; + */ boolean hasNumPlayersOnServer(); + /** + * required uint32 numPlayersOnServer = 5; + */ int getNumPlayersOnServer(); } + /** + * Protobuf type {@code AnnounceMessage} + */ public static final class AnnounceMessage extends com.google.protobuf.GeneratedMessageLite implements AnnounceMessageOrBuilder { // Use AnnounceMessage.newBuilder() to construct. - private AnnounceMessage(Builder builder) { + private AnnounceMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private AnnounceMessage(boolean noInit) {} - + private static final AnnounceMessage defaultInstance; public static AnnounceMessage getDefaultInstance() { return defaultInstance; } - + public AnnounceMessage getDefaultInstanceForType() { return defaultInstance; } - + + private AnnounceMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = protocolVersion_.toBuilder(); + } + protocolVersion_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(protocolVersion_); + protocolVersion_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = latestGameVersion_.toBuilder(); + } + latestGameVersion_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(latestGameVersion_); + latestGameVersion_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + case 24: { + bitField0_ |= 0x00000004; + latestBetaRevision_ = input.readUInt32(); + break; + } + case 32: { + int rawValue = input.readEnum(); + de.pokerth.protocol.ProtoBuf.AnnounceMessage.ServerType value = de.pokerth.protocol.ProtoBuf.AnnounceMessage.ServerType.valueOf(rawValue); + if (value != null) { + bitField0_ |= 0x00000008; + serverType_ = value; + } + break; + } + case 40: { + bitField0_ |= 0x00000010; + numPlayersOnServer_ = input.readUInt32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AnnounceMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AnnounceMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code AnnounceMessage.ServerType} + */ public enum ServerType implements com.google.protobuf.Internal.EnumLite { + /** + * serverTypeLAN = 0; + */ serverTypeLAN(0, 0), + /** + * serverTypeInternetNoAuth = 1; + */ serverTypeInternetNoAuth(1, 1), + /** + * serverTypeInternetAuth = 2; + */ serverTypeInternetAuth(2, 2), ; - + + /** + * serverTypeLAN = 0; + */ public static final int serverTypeLAN_VALUE = 0; + /** + * serverTypeInternetNoAuth = 1; + */ public static final int serverTypeInternetNoAuth_VALUE = 1; + /** + * serverTypeInternetAuth = 2; + */ public static final int serverTypeInternetAuth_VALUE = 2; - - + + public final int getNumber() { return value; } - + public static ServerType valueOf(int value) { switch (value) { case 0: return serverTypeLAN; @@ -2437,7 +3523,7 @@ public final class ProtoBuf { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -2449,300 +3535,79 @@ public final class ProtoBuf { return ServerType.valueOf(number); } }; - + private final int value; - + private ServerType(int index, int value) { this.value = value; } - + // @@protoc_insertion_point(enum_scope:AnnounceMessage.ServerType) } - + public interface VersionOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 majorVersion = 1; + /** + * required uint32 majorVersion = 1; + */ boolean hasMajorVersion(); + /** + * required uint32 majorVersion = 1; + */ int getMajorVersion(); - + // required uint32 minorVersion = 2; + /** + * required uint32 minorVersion = 2; + */ boolean hasMinorVersion(); + /** + * required uint32 minorVersion = 2; + */ int getMinorVersion(); } + /** + * Protobuf type {@code AnnounceMessage.Version} + */ public static final class Version extends com.google.protobuf.GeneratedMessageLite implements VersionOrBuilder { // Use Version.newBuilder() to construct. - private Version(Builder builder) { + private Version(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private Version(boolean noInit) {} - + private static final Version defaultInstance; public static Version getDefaultInstance() { return defaultInstance; } - + public Version getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required uint32 majorVersion = 1; - public static final int MAJORVERSION_FIELD_NUMBER = 1; - private int majorVersion_; - public boolean hasMajorVersion() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getMajorVersion() { - return majorVersion_; - } - - // required uint32 minorVersion = 2; - public static final int MINORVERSION_FIELD_NUMBER = 2; - private int minorVersion_; - public boolean hasMinorVersion() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getMinorVersion() { - return minorVersion_; - } - - private void initFields() { - majorVersion_ = 0; - minorVersion_ = 0; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasMajorVersion()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasMinorVersion()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, majorVersion_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, minorVersion_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, majorVersion_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, minorVersion_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom( + + private Version( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version, Builder> - implements de.pokerth.protocol.ProtoBuf.AnnounceMessage.VersionOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - majorVersion_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - minorVersion_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version build() { - de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version buildPartial() { - de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version result = new de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.majorVersion_ = majorVersion_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.minorVersion_ = minorVersion_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version other) { - if (other == de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance()) return this; - if (other.hasMajorVersion()) { - setMajorVersion(other.getMajorVersion()); - } - if (other.hasMinorVersion()) { - setMinorVersion(other.getMinorVersion()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasMajorVersion()) { - - return false; - } - if (!hasMinorVersion()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -2758,114 +3623,439 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public Version parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new Version(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required uint32 majorVersion = 1; + public static final int MAJORVERSION_FIELD_NUMBER = 1; + private int majorVersion_; + /** + * required uint32 majorVersion = 1; + */ + public boolean hasMajorVersion() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 majorVersion = 1; + */ + public int getMajorVersion() { + return majorVersion_; + } + + // required uint32 minorVersion = 2; + public static final int MINORVERSION_FIELD_NUMBER = 2; + private int minorVersion_; + /** + * required uint32 minorVersion = 2; + */ + public boolean hasMinorVersion() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 minorVersion = 2; + */ + public int getMinorVersion() { + return minorVersion_; + } + + private void initFields() { + majorVersion_ = 0; + minorVersion_ = 0; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasMajorVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMinorVersion()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, majorVersion_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, minorVersion_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, majorVersion_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, minorVersion_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code AnnounceMessage.Version} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version, Builder> + implements de.pokerth.protocol.ProtoBuf.AnnounceMessage.VersionOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + majorVersion_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + minorVersion_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version build() { + de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version buildPartial() { + de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version result = new de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.majorVersion_ = majorVersion_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.minorVersion_ = minorVersion_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version other) { + if (other == de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance()) return this; + if (other.hasMajorVersion()) { + setMajorVersion(other.getMajorVersion()); + } + if (other.hasMinorVersion()) { + setMinorVersion(other.getMinorVersion()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasMajorVersion()) { + + return false; + } + if (!hasMinorVersion()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 majorVersion = 1; private int majorVersion_ ; + /** + * required uint32 majorVersion = 1; + */ public boolean hasMajorVersion() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 majorVersion = 1; + */ public int getMajorVersion() { return majorVersion_; } + /** + * required uint32 majorVersion = 1; + */ public Builder setMajorVersion(int value) { bitField0_ |= 0x00000001; majorVersion_ = value; return this; } + /** + * required uint32 majorVersion = 1; + */ public Builder clearMajorVersion() { bitField0_ = (bitField0_ & ~0x00000001); majorVersion_ = 0; return this; } - + // required uint32 minorVersion = 2; private int minorVersion_ ; + /** + * required uint32 minorVersion = 2; + */ public boolean hasMinorVersion() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 minorVersion = 2; + */ public int getMinorVersion() { return minorVersion_; } + /** + * required uint32 minorVersion = 2; + */ public Builder setMinorVersion(int value) { bitField0_ |= 0x00000002; minorVersion_ = value; return this; } + /** + * required uint32 minorVersion = 2; + */ public Builder clearMinorVersion() { bitField0_ = (bitField0_ & ~0x00000002); minorVersion_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:AnnounceMessage.Version) } - + static { defaultInstance = new Version(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:AnnounceMessage.Version) } - + private int bitField0_; // required .AnnounceMessage.Version protocolVersion = 1; public static final int PROTOCOLVERSION_FIELD_NUMBER = 1; private de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version protocolVersion_; + /** + * required .AnnounceMessage.Version protocolVersion = 1; + */ public boolean hasProtocolVersion() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .AnnounceMessage.Version protocolVersion = 1; + */ public de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version getProtocolVersion() { return protocolVersion_; } - + // required .AnnounceMessage.Version latestGameVersion = 2; public static final int LATESTGAMEVERSION_FIELD_NUMBER = 2; private de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version latestGameVersion_; + /** + * required .AnnounceMessage.Version latestGameVersion = 2; + */ public boolean hasLatestGameVersion() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .AnnounceMessage.Version latestGameVersion = 2; + */ public de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version getLatestGameVersion() { return latestGameVersion_; } - + // required uint32 latestBetaRevision = 3; public static final int LATESTBETAREVISION_FIELD_NUMBER = 3; private int latestBetaRevision_; + /** + * required uint32 latestBetaRevision = 3; + */ public boolean hasLatestBetaRevision() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required uint32 latestBetaRevision = 3; + */ public int getLatestBetaRevision() { return latestBetaRevision_; } - + // required .AnnounceMessage.ServerType serverType = 4; public static final int SERVERTYPE_FIELD_NUMBER = 4; private de.pokerth.protocol.ProtoBuf.AnnounceMessage.ServerType serverType_; + /** + * required .AnnounceMessage.ServerType serverType = 4; + */ public boolean hasServerType() { return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required .AnnounceMessage.ServerType serverType = 4; + */ public de.pokerth.protocol.ProtoBuf.AnnounceMessage.ServerType getServerType() { return serverType_; } - + // required uint32 numPlayersOnServer = 5; public static final int NUMPLAYERSONSERVER_FIELD_NUMBER = 5; private int numPlayersOnServer_; + /** + * required uint32 numPlayersOnServer = 5; + */ public boolean hasNumPlayersOnServer() { return ((bitField0_ & 0x00000010) == 0x00000010); } + /** + * required uint32 numPlayersOnServer = 5; + */ public int getNumPlayersOnServer() { return numPlayersOnServer_; } - + private void initFields() { protocolVersion_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); latestGameVersion_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); @@ -2877,7 +4067,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasProtocolVersion()) { memoizedIsInitialized = 0; return false; @@ -2909,7 +4099,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -2929,12 +4119,12 @@ public final class ProtoBuf { output.writeUInt32(5, numPlayersOnServer_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -2959,88 +4149,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.AnnounceMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AnnounceMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AnnounceMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AnnounceMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AnnounceMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AnnounceMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AnnounceMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.AnnounceMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AnnounceMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AnnounceMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AnnounceMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code AnnounceMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.AnnounceMessage, Builder> @@ -3049,13 +4228,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); protocolVersion_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); @@ -3070,15 +4249,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000010); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.AnnounceMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.AnnounceMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.AnnounceMessage build() { de.pokerth.protocol.ProtoBuf.AnnounceMessage result = buildPartial(); if (!result.isInitialized()) { @@ -3086,17 +4265,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.AnnounceMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AnnounceMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.AnnounceMessage buildPartial() { de.pokerth.protocol.ProtoBuf.AnnounceMessage result = new de.pokerth.protocol.ProtoBuf.AnnounceMessage(this); int from_bitField0_ = bitField0_; @@ -3124,7 +4293,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AnnounceMessage other) { if (other == de.pokerth.protocol.ProtoBuf.AnnounceMessage.getDefaultInstance()) return this; if (other.hasProtocolVersion()) { @@ -3144,7 +4313,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasProtocolVersion()) { @@ -3176,91 +4345,65 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 10: { - de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.newBuilder(); - if (hasProtocolVersion()) { - subBuilder.mergeFrom(getProtocolVersion()); - } - input.readMessage(subBuilder, extensionRegistry); - setProtocolVersion(subBuilder.buildPartial()); - break; - } - case 18: { - de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.newBuilder(); - if (hasLatestGameVersion()) { - subBuilder.mergeFrom(getLatestGameVersion()); - } - input.readMessage(subBuilder, extensionRegistry); - setLatestGameVersion(subBuilder.buildPartial()); - break; - } - case 24: { - bitField0_ |= 0x00000004; - latestBetaRevision_ = input.readUInt32(); - break; - } - case 32: { - int rawValue = input.readEnum(); - de.pokerth.protocol.ProtoBuf.AnnounceMessage.ServerType value = de.pokerth.protocol.ProtoBuf.AnnounceMessage.ServerType.valueOf(rawValue); - if (value != null) { - bitField0_ |= 0x00000008; - serverType_ = value; - } - break; - } - case 40: { - bitField0_ |= 0x00000010; - numPlayersOnServer_ = input.readUInt32(); - break; - } + de.pokerth.protocol.ProtoBuf.AnnounceMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AnnounceMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required .AnnounceMessage.Version protocolVersion = 1; private de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version protocolVersion_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); + /** + * required .AnnounceMessage.Version protocolVersion = 1; + */ public boolean hasProtocolVersion() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .AnnounceMessage.Version protocolVersion = 1; + */ public de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version getProtocolVersion() { return protocolVersion_; } + /** + * required .AnnounceMessage.Version protocolVersion = 1; + */ public Builder setProtocolVersion(de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version value) { if (value == null) { throw new NullPointerException(); } protocolVersion_ = value; - + bitField0_ |= 0x00000001; return this; } + /** + * required .AnnounceMessage.Version protocolVersion = 1; + */ public Builder setProtocolVersion( de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.Builder builderForValue) { protocolVersion_ = builderForValue.build(); - + bitField0_ |= 0x00000001; return this; } + /** + * required .AnnounceMessage.Version protocolVersion = 1; + */ public Builder mergeProtocolVersion(de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version value) { if (((bitField0_ & 0x00000001) == 0x00000001) && protocolVersion_ != de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance()) { @@ -3269,41 +4412,59 @@ public final class ProtoBuf { } else { protocolVersion_ = value; } - + bitField0_ |= 0x00000001; return this; } + /** + * required .AnnounceMessage.Version protocolVersion = 1; + */ public Builder clearProtocolVersion() { protocolVersion_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + // required .AnnounceMessage.Version latestGameVersion = 2; private de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version latestGameVersion_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); + /** + * required .AnnounceMessage.Version latestGameVersion = 2; + */ public boolean hasLatestGameVersion() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .AnnounceMessage.Version latestGameVersion = 2; + */ public de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version getLatestGameVersion() { return latestGameVersion_; } + /** + * required .AnnounceMessage.Version latestGameVersion = 2; + */ public Builder setLatestGameVersion(de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version value) { if (value == null) { throw new NullPointerException(); } latestGameVersion_ = value; - + bitField0_ |= 0x00000002; return this; } + /** + * required .AnnounceMessage.Version latestGameVersion = 2; + */ public Builder setLatestGameVersion( de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.Builder builderForValue) { latestGameVersion_ = builderForValue.build(); - + bitField0_ |= 0x00000002; return this; } + /** + * required .AnnounceMessage.Version latestGameVersion = 2; + */ public Builder mergeLatestGameVersion(de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version value) { if (((bitField0_ & 0x00000002) == 0x00000002) && latestGameVersion_ != de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance()) { @@ -3312,46 +4473,70 @@ public final class ProtoBuf { } else { latestGameVersion_ = value; } - + bitField0_ |= 0x00000002; return this; } + /** + * required .AnnounceMessage.Version latestGameVersion = 2; + */ public Builder clearLatestGameVersion() { latestGameVersion_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + // required uint32 latestBetaRevision = 3; private int latestBetaRevision_ ; + /** + * required uint32 latestBetaRevision = 3; + */ public boolean hasLatestBetaRevision() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required uint32 latestBetaRevision = 3; + */ public int getLatestBetaRevision() { return latestBetaRevision_; } + /** + * required uint32 latestBetaRevision = 3; + */ public Builder setLatestBetaRevision(int value) { bitField0_ |= 0x00000004; latestBetaRevision_ = value; return this; } + /** + * required uint32 latestBetaRevision = 3; + */ public Builder clearLatestBetaRevision() { bitField0_ = (bitField0_ & ~0x00000004); latestBetaRevision_ = 0; return this; } - + // required .AnnounceMessage.ServerType serverType = 4; private de.pokerth.protocol.ProtoBuf.AnnounceMessage.ServerType serverType_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.ServerType.serverTypeLAN; + /** + * required .AnnounceMessage.ServerType serverType = 4; + */ public boolean hasServerType() { return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required .AnnounceMessage.ServerType serverType = 4; + */ public de.pokerth.protocol.ProtoBuf.AnnounceMessage.ServerType getServerType() { return serverType_; } + /** + * required .AnnounceMessage.ServerType serverType = 4; + */ public Builder setServerType(de.pokerth.protocol.ProtoBuf.AnnounceMessage.ServerType value) { if (value == null) { throw new NullPointerException(); @@ -3361,629 +4546,239 @@ public final class ProtoBuf { return this; } + /** + * required .AnnounceMessage.ServerType serverType = 4; + */ public Builder clearServerType() { bitField0_ = (bitField0_ & ~0x00000008); serverType_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.ServerType.serverTypeLAN; return this; } - + // required uint32 numPlayersOnServer = 5; private int numPlayersOnServer_ ; + /** + * required uint32 numPlayersOnServer = 5; + */ public boolean hasNumPlayersOnServer() { return ((bitField0_ & 0x00000010) == 0x00000010); } + /** + * required uint32 numPlayersOnServer = 5; + */ public int getNumPlayersOnServer() { return numPlayersOnServer_; } + /** + * required uint32 numPlayersOnServer = 5; + */ public Builder setNumPlayersOnServer(int value) { bitField0_ |= 0x00000010; numPlayersOnServer_ = value; return this; } + /** + * required uint32 numPlayersOnServer = 5; + */ public Builder clearNumPlayersOnServer() { bitField0_ = (bitField0_ & ~0x00000010); numPlayersOnServer_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:AnnounceMessage) } - + static { defaultInstance = new AnnounceMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:AnnounceMessage) } - + public interface InitMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required .AnnounceMessage.Version requestedVersion = 1; + /** + * required .AnnounceMessage.Version requestedVersion = 1; + */ boolean hasRequestedVersion(); + /** + * required .AnnounceMessage.Version requestedVersion = 1; + */ de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version getRequestedVersion(); - + // required uint32 buildId = 2; + /** + * required uint32 buildId = 2; + */ boolean hasBuildId(); + /** + * required uint32 buildId = 2; + */ int getBuildId(); - + // optional bytes myLastSessionId = 3; + /** + * optional bytes myLastSessionId = 3; + */ boolean hasMyLastSessionId(); + /** + * optional bytes myLastSessionId = 3; + */ com.google.protobuf.ByteString getMyLastSessionId(); - + // optional string authServerPassword = 4; + /** + * optional string authServerPassword = 4; + */ boolean hasAuthServerPassword(); - String getAuthServerPassword(); - + /** + * optional string authServerPassword = 4; + */ + java.lang.String getAuthServerPassword(); + /** + * optional string authServerPassword = 4; + */ + com.google.protobuf.ByteString + getAuthServerPasswordBytes(); + // required .InitMessage.LoginType login = 5; + /** + * required .InitMessage.LoginType login = 5; + */ boolean hasLogin(); + /** + * required .InitMessage.LoginType login = 5; + */ de.pokerth.protocol.ProtoBuf.InitMessage.LoginType getLogin(); - + // optional string nickName = 6; + /** + * optional string nickName = 6; + * + *
+     * Only used for guest login or unauthenticated login.
+     * 
+ */ boolean hasNickName(); - String getNickName(); - + /** + * optional string nickName = 6; + * + *
+     * Only used for guest login or unauthenticated login.
+     * 
+ */ + java.lang.String getNickName(); + /** + * optional string nickName = 6; + * + *
+     * Only used for guest login or unauthenticated login.
+     * 
+ */ + com.google.protobuf.ByteString + getNickNameBytes(); + // optional bytes clientUserData = 7; + /** + * optional bytes clientUserData = 7; + * + *
+     * Authenticated login data is according to SCRAM SHA-1
+     * 
+ */ boolean hasClientUserData(); + /** + * optional bytes clientUserData = 7; + * + *
+     * Authenticated login data is according to SCRAM SHA-1
+     * 
+ */ com.google.protobuf.ByteString getClientUserData(); - + // optional bytes avatarHash = 8; + /** + * optional bytes avatarHash = 8; + * + *
+     * Ignored for guest login.
+     * 
+ */ boolean hasAvatarHash(); + /** + * optional bytes avatarHash = 8; + * + *
+     * Ignored for guest login.
+     * 
+ */ com.google.protobuf.ByteString getAvatarHash(); } + /** + * Protobuf type {@code InitMessage} + * + *
+   * buildId contains a constant build id (specific for Windows/Linux/Mac builds)
+   * 
+ */ public static final class InitMessage extends com.google.protobuf.GeneratedMessageLite implements InitMessageOrBuilder { // Use InitMessage.newBuilder() to construct. - private InitMessage(Builder builder) { + private InitMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private InitMessage(boolean noInit) {} - + private static final InitMessage defaultInstance; public static InitMessage getDefaultInstance() { return defaultInstance; } - + public InitMessage getDefaultInstanceForType() { return defaultInstance; } - - public enum LoginType - implements com.google.protobuf.Internal.EnumLite { - guestLogin(0, 0), - authenticatedLogin(1, 1), - unauthenticatedLogin(2, 2), - ; - - public static final int guestLogin_VALUE = 0; - public static final int authenticatedLogin_VALUE = 1; - public static final int unauthenticatedLogin_VALUE = 2; - - - public final int getNumber() { return value; } - - public static LoginType valueOf(int value) { - switch (value) { - case 0: return guestLogin; - case 1: return authenticatedLogin; - case 2: return unauthenticatedLogin; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public LoginType findValueByNumber(int number) { - return LoginType.valueOf(number); - } - }; - - private final int value; - - private LoginType(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:InitMessage.LoginType) - } - - private int bitField0_; - // required .AnnounceMessage.Version requestedVersion = 1; - public static final int REQUESTEDVERSION_FIELD_NUMBER = 1; - private de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version requestedVersion_; - public boolean hasRequestedVersion() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version getRequestedVersion() { - return requestedVersion_; - } - - // required uint32 buildId = 2; - public static final int BUILDID_FIELD_NUMBER = 2; - private int buildId_; - public boolean hasBuildId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getBuildId() { - return buildId_; - } - - // optional bytes myLastSessionId = 3; - public static final int MYLASTSESSIONID_FIELD_NUMBER = 3; - private com.google.protobuf.ByteString myLastSessionId_; - public boolean hasMyLastSessionId() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public com.google.protobuf.ByteString getMyLastSessionId() { - return myLastSessionId_; - } - - // optional string authServerPassword = 4; - public static final int AUTHSERVERPASSWORD_FIELD_NUMBER = 4; - private java.lang.Object authServerPassword_; - public boolean hasAuthServerPassword() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public String getAuthServerPassword() { - java.lang.Object ref = authServerPassword_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - authServerPassword_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getAuthServerPasswordBytes() { - java.lang.Object ref = authServerPassword_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - authServerPassword_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // required .InitMessage.LoginType login = 5; - public static final int LOGIN_FIELD_NUMBER = 5; - private de.pokerth.protocol.ProtoBuf.InitMessage.LoginType login_; - public boolean hasLogin() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - public de.pokerth.protocol.ProtoBuf.InitMessage.LoginType getLogin() { - return login_; - } - - // optional string nickName = 6; - public static final int NICKNAME_FIELD_NUMBER = 6; - private java.lang.Object nickName_; - public boolean hasNickName() { - return ((bitField0_ & 0x00000020) == 0x00000020); - } - public String getNickName() { - java.lang.Object ref = nickName_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - nickName_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getNickNameBytes() { - java.lang.Object ref = nickName_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - nickName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // optional bytes clientUserData = 7; - public static final int CLIENTUSERDATA_FIELD_NUMBER = 7; - private com.google.protobuf.ByteString clientUserData_; - public boolean hasClientUserData() { - return ((bitField0_ & 0x00000040) == 0x00000040); - } - public com.google.protobuf.ByteString getClientUserData() { - return clientUserData_; - } - - // optional bytes avatarHash = 8; - public static final int AVATARHASH_FIELD_NUMBER = 8; - private com.google.protobuf.ByteString avatarHash_; - public boolean hasAvatarHash() { - return ((bitField0_ & 0x00000080) == 0x00000080); - } - public com.google.protobuf.ByteString getAvatarHash() { - return avatarHash_; - } - - private void initFields() { - requestedVersion_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); - buildId_ = 0; - myLastSessionId_ = com.google.protobuf.ByteString.EMPTY; - authServerPassword_ = ""; - login_ = de.pokerth.protocol.ProtoBuf.InitMessage.LoginType.guestLogin; - nickName_ = ""; - clientUserData_ = com.google.protobuf.ByteString.EMPTY; - avatarHash_ = com.google.protobuf.ByteString.EMPTY; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasRequestedVersion()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasBuildId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasLogin()) { - memoizedIsInitialized = 0; - return false; - } - if (!getRequestedVersion().isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeMessage(1, requestedVersion_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, buildId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeBytes(3, myLastSessionId_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeBytes(4, getAuthServerPasswordBytes()); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - output.writeEnum(5, login_.getNumber()); - } - if (((bitField0_ & 0x00000020) == 0x00000020)) { - output.writeBytes(6, getNickNameBytes()); - } - if (((bitField0_ & 0x00000040) == 0x00000040)) { - output.writeBytes(7, clientUserData_); - } - if (((bitField0_ & 0x00000080) == 0x00000080)) { - output.writeBytes(8, avatarHash_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(1, requestedVersion_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, buildId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(3, myLastSessionId_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(4, getAuthServerPasswordBytes()); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(5, login_.getNumber()); - } - if (((bitField0_ & 0x00000020) == 0x00000020)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(6, getNickNameBytes()); - } - if (((bitField0_ & 0x00000040) == 0x00000040)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(7, clientUserData_); - } - if (((bitField0_ & 0x00000080) == 0x00000080)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(8, avatarHash_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.InitMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom( + + private InitMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.InitMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.InitMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.InitMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.InitMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - requestedVersion_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); - bitField0_ = (bitField0_ & ~0x00000001); - buildId_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - myLastSessionId_ = com.google.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00000004); - authServerPassword_ = ""; - bitField0_ = (bitField0_ & ~0x00000008); - login_ = de.pokerth.protocol.ProtoBuf.InitMessage.LoginType.guestLogin; - bitField0_ = (bitField0_ & ~0x00000010); - nickName_ = ""; - bitField0_ = (bitField0_ & ~0x00000020); - clientUserData_ = com.google.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00000040); - avatarHash_ = com.google.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00000080); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.InitMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.InitMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.InitMessage build() { - de.pokerth.protocol.ProtoBuf.InitMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.InitMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.InitMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.InitMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.InitMessage result = new de.pokerth.protocol.ProtoBuf.InitMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.requestedVersion_ = requestedVersion_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.buildId_ = buildId_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.myLastSessionId_ = myLastSessionId_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.authServerPassword_ = authServerPassword_; - if (((from_bitField0_ & 0x00000010) == 0x00000010)) { - to_bitField0_ |= 0x00000010; - } - result.login_ = login_; - if (((from_bitField0_ & 0x00000020) == 0x00000020)) { - to_bitField0_ |= 0x00000020; - } - result.nickName_ = nickName_; - if (((from_bitField0_ & 0x00000040) == 0x00000040)) { - to_bitField0_ |= 0x00000040; - } - result.clientUserData_ = clientUserData_; - if (((from_bitField0_ & 0x00000080) == 0x00000080)) { - to_bitField0_ |= 0x00000080; - } - result.avatarHash_ = avatarHash_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.InitMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.InitMessage.getDefaultInstance()) return this; - if (other.hasRequestedVersion()) { - mergeRequestedVersion(other.getRequestedVersion()); - } - if (other.hasBuildId()) { - setBuildId(other.getBuildId()); - } - if (other.hasMyLastSessionId()) { - setMyLastSessionId(other.getMyLastSessionId()); - } - if (other.hasAuthServerPassword()) { - setAuthServerPassword(other.getAuthServerPassword()); - } - if (other.hasLogin()) { - setLogin(other.getLogin()); - } - if (other.hasNickName()) { - setNickName(other.getNickName()); - } - if (other.hasClientUserData()) { - setClientUserData(other.getClientUserData()); - } - if (other.hasAvatarHash()) { - setAvatarHash(other.getAvatarHash()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasRequestedVersion()) { - - return false; - } - if (!hasBuildId()) { - - return false; - } - if (!hasLogin()) { - - return false; - } - if (!getRequestedVersion().isInitialized()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } case 10: { - de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.newBuilder(); - if (hasRequestedVersion()) { - subBuilder.mergeFrom(getRequestedVersion()); + de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = requestedVersion_.toBuilder(); } - input.readMessage(subBuilder, extensionRegistry); - setRequestedVersion(subBuilder.buildPartial()); + requestedVersion_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(requestedVersion_); + requestedVersion_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; break; } case 16: { @@ -4027,34 +4822,689 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public InitMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new InitMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code InitMessage.LoginType} + */ + public enum LoginType + implements com.google.protobuf.Internal.EnumLite { + /** + * guestLogin = 0; + */ + guestLogin(0, 0), + /** + * authenticatedLogin = 1; + */ + authenticatedLogin(1, 1), + /** + * unauthenticatedLogin = 2; + */ + unauthenticatedLogin(2, 2), + ; + + /** + * guestLogin = 0; + */ + public static final int guestLogin_VALUE = 0; + /** + * authenticatedLogin = 1; + */ + public static final int authenticatedLogin_VALUE = 1; + /** + * unauthenticatedLogin = 2; + */ + public static final int unauthenticatedLogin_VALUE = 2; + + + public final int getNumber() { return value; } + + public static LoginType valueOf(int value) { + switch (value) { + case 0: return guestLogin; + case 1: return authenticatedLogin; + case 2: return unauthenticatedLogin; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public LoginType findValueByNumber(int number) { + return LoginType.valueOf(number); + } + }; + + private final int value; + + private LoginType(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:InitMessage.LoginType) + } + + private int bitField0_; + // required .AnnounceMessage.Version requestedVersion = 1; + public static final int REQUESTEDVERSION_FIELD_NUMBER = 1; + private de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version requestedVersion_; + /** + * required .AnnounceMessage.Version requestedVersion = 1; + */ + public boolean hasRequestedVersion() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .AnnounceMessage.Version requestedVersion = 1; + */ + public de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version getRequestedVersion() { + return requestedVersion_; + } + + // required uint32 buildId = 2; + public static final int BUILDID_FIELD_NUMBER = 2; + private int buildId_; + /** + * required uint32 buildId = 2; + */ + public boolean hasBuildId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 buildId = 2; + */ + public int getBuildId() { + return buildId_; + } + + // optional bytes myLastSessionId = 3; + public static final int MYLASTSESSIONID_FIELD_NUMBER = 3; + private com.google.protobuf.ByteString myLastSessionId_; + /** + * optional bytes myLastSessionId = 3; + */ + public boolean hasMyLastSessionId() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional bytes myLastSessionId = 3; + */ + public com.google.protobuf.ByteString getMyLastSessionId() { + return myLastSessionId_; + } + + // optional string authServerPassword = 4; + public static final int AUTHSERVERPASSWORD_FIELD_NUMBER = 4; + private java.lang.Object authServerPassword_; + /** + * optional string authServerPassword = 4; + */ + public boolean hasAuthServerPassword() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional string authServerPassword = 4; + */ + public java.lang.String getAuthServerPassword() { + java.lang.Object ref = authServerPassword_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + authServerPassword_ = s; + } + return s; + } + } + /** + * optional string authServerPassword = 4; + */ + public com.google.protobuf.ByteString + getAuthServerPasswordBytes() { + java.lang.Object ref = authServerPassword_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + authServerPassword_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // required .InitMessage.LoginType login = 5; + public static final int LOGIN_FIELD_NUMBER = 5; + private de.pokerth.protocol.ProtoBuf.InitMessage.LoginType login_; + /** + * required .InitMessage.LoginType login = 5; + */ + public boolean hasLogin() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required .InitMessage.LoginType login = 5; + */ + public de.pokerth.protocol.ProtoBuf.InitMessage.LoginType getLogin() { + return login_; + } + + // optional string nickName = 6; + public static final int NICKNAME_FIELD_NUMBER = 6; + private java.lang.Object nickName_; + /** + * optional string nickName = 6; + * + *
+     * Only used for guest login or unauthenticated login.
+     * 
+ */ + public boolean hasNickName() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * optional string nickName = 6; + * + *
+     * Only used for guest login or unauthenticated login.
+     * 
+ */ + public java.lang.String getNickName() { + java.lang.Object ref = nickName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + nickName_ = s; + } + return s; + } + } + /** + * optional string nickName = 6; + * + *
+     * Only used for guest login or unauthenticated login.
+     * 
+ */ + public com.google.protobuf.ByteString + getNickNameBytes() { + java.lang.Object ref = nickName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + nickName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // optional bytes clientUserData = 7; + public static final int CLIENTUSERDATA_FIELD_NUMBER = 7; + private com.google.protobuf.ByteString clientUserData_; + /** + * optional bytes clientUserData = 7; + * + *
+     * Authenticated login data is according to SCRAM SHA-1
+     * 
+ */ + public boolean hasClientUserData() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * optional bytes clientUserData = 7; + * + *
+     * Authenticated login data is according to SCRAM SHA-1
+     * 
+ */ + public com.google.protobuf.ByteString getClientUserData() { + return clientUserData_; + } + + // optional bytes avatarHash = 8; + public static final int AVATARHASH_FIELD_NUMBER = 8; + private com.google.protobuf.ByteString avatarHash_; + /** + * optional bytes avatarHash = 8; + * + *
+     * Ignored for guest login.
+     * 
+ */ + public boolean hasAvatarHash() { + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * optional bytes avatarHash = 8; + * + *
+     * Ignored for guest login.
+     * 
+ */ + public com.google.protobuf.ByteString getAvatarHash() { + return avatarHash_; + } + + private void initFields() { + requestedVersion_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); + buildId_ = 0; + myLastSessionId_ = com.google.protobuf.ByteString.EMPTY; + authServerPassword_ = ""; + login_ = de.pokerth.protocol.ProtoBuf.InitMessage.LoginType.guestLogin; + nickName_ = ""; + clientUserData_ = com.google.protobuf.ByteString.EMPTY; + avatarHash_ = com.google.protobuf.ByteString.EMPTY; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasRequestedVersion()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasBuildId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasLogin()) { + memoizedIsInitialized = 0; + return false; + } + if (!getRequestedVersion().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeMessage(1, requestedVersion_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, buildId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, myLastSessionId_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeBytes(4, getAuthServerPasswordBytes()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeEnum(5, login_.getNumber()); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeBytes(6, getNickNameBytes()); + } + if (((bitField0_ & 0x00000040) == 0x00000040)) { + output.writeBytes(7, clientUserData_); + } + if (((bitField0_ & 0x00000080) == 0x00000080)) { + output.writeBytes(8, avatarHash_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, requestedVersion_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, buildId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(3, myLastSessionId_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(4, getAuthServerPasswordBytes()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(5, login_.getNumber()); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(6, getNickNameBytes()); + } + if (((bitField0_ & 0x00000040) == 0x00000040)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(7, clientUserData_); + } + if (((bitField0_ & 0x00000080) == 0x00000080)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(8, avatarHash_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.InitMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.InitMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.InitMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.InitMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code InitMessage} + * + *
+     * buildId contains a constant build id (specific for Windows/Linux/Mac builds)
+     * 
+ */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.InitMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.InitMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.InitMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + requestedVersion_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); + bitField0_ = (bitField0_ & ~0x00000001); + buildId_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + myLastSessionId_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000004); + authServerPassword_ = ""; + bitField0_ = (bitField0_ & ~0x00000008); + login_ = de.pokerth.protocol.ProtoBuf.InitMessage.LoginType.guestLogin; + bitField0_ = (bitField0_ & ~0x00000010); + nickName_ = ""; + bitField0_ = (bitField0_ & ~0x00000020); + clientUserData_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000040); + avatarHash_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000080); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.InitMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.InitMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.InitMessage build() { + de.pokerth.protocol.ProtoBuf.InitMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.InitMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.InitMessage result = new de.pokerth.protocol.ProtoBuf.InitMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.requestedVersion_ = requestedVersion_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.buildId_ = buildId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.myLastSessionId_ = myLastSessionId_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.authServerPassword_ = authServerPassword_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.login_ = login_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.nickName_ = nickName_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000040; + } + result.clientUserData_ = clientUserData_; + if (((from_bitField0_ & 0x00000080) == 0x00000080)) { + to_bitField0_ |= 0x00000080; + } + result.avatarHash_ = avatarHash_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.InitMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.InitMessage.getDefaultInstance()) return this; + if (other.hasRequestedVersion()) { + mergeRequestedVersion(other.getRequestedVersion()); + } + if (other.hasBuildId()) { + setBuildId(other.getBuildId()); + } + if (other.hasMyLastSessionId()) { + setMyLastSessionId(other.getMyLastSessionId()); + } + if (other.hasAuthServerPassword()) { + bitField0_ |= 0x00000008; + authServerPassword_ = other.authServerPassword_; + + } + if (other.hasLogin()) { + setLogin(other.getLogin()); + } + if (other.hasNickName()) { + bitField0_ |= 0x00000020; + nickName_ = other.nickName_; + + } + if (other.hasClientUserData()) { + setClientUserData(other.getClientUserData()); + } + if (other.hasAvatarHash()) { + setAvatarHash(other.getAvatarHash()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasRequestedVersion()) { + + return false; + } + if (!hasBuildId()) { + + return false; + } + if (!hasLogin()) { + + return false; + } + if (!getRequestedVersion().isInitialized()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.InitMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.InitMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required .AnnounceMessage.Version requestedVersion = 1; private de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version requestedVersion_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); + /** + * required .AnnounceMessage.Version requestedVersion = 1; + */ public boolean hasRequestedVersion() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .AnnounceMessage.Version requestedVersion = 1; + */ public de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version getRequestedVersion() { return requestedVersion_; } + /** + * required .AnnounceMessage.Version requestedVersion = 1; + */ public Builder setRequestedVersion(de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version value) { if (value == null) { throw new NullPointerException(); } requestedVersion_ = value; - + bitField0_ |= 0x00000001; return this; } + /** + * required .AnnounceMessage.Version requestedVersion = 1; + */ public Builder setRequestedVersion( de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.Builder builderForValue) { requestedVersion_ = builderForValue.build(); - + bitField0_ |= 0x00000001; return this; } + /** + * required .AnnounceMessage.Version requestedVersion = 1; + */ public Builder mergeRequestedVersion(de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version value) { if (((bitField0_ & 0x00000001) == 0x00000001) && requestedVersion_ != de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance()) { @@ -4063,46 +5513,70 @@ public final class ProtoBuf { } else { requestedVersion_ = value; } - + bitField0_ |= 0x00000001; return this; } + /** + * required .AnnounceMessage.Version requestedVersion = 1; + */ public Builder clearRequestedVersion() { requestedVersion_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.Version.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + // required uint32 buildId = 2; private int buildId_ ; + /** + * required uint32 buildId = 2; + */ public boolean hasBuildId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 buildId = 2; + */ public int getBuildId() { return buildId_; } + /** + * required uint32 buildId = 2; + */ public Builder setBuildId(int value) { bitField0_ |= 0x00000002; buildId_ = value; return this; } + /** + * required uint32 buildId = 2; + */ public Builder clearBuildId() { bitField0_ = (bitField0_ & ~0x00000002); buildId_ = 0; return this; } - + // optional bytes myLastSessionId = 3; private com.google.protobuf.ByteString myLastSessionId_ = com.google.protobuf.ByteString.EMPTY; + /** + * optional bytes myLastSessionId = 3; + */ public boolean hasMyLastSessionId() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional bytes myLastSessionId = 3; + */ public com.google.protobuf.ByteString getMyLastSessionId() { return myLastSessionId_; } + /** + * optional bytes myLastSessionId = 3; + */ public Builder setMyLastSessionId(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); @@ -4112,29 +5586,59 @@ public final class ProtoBuf { return this; } + /** + * optional bytes myLastSessionId = 3; + */ public Builder clearMyLastSessionId() { bitField0_ = (bitField0_ & ~0x00000004); myLastSessionId_ = getDefaultInstance().getMyLastSessionId(); return this; } - + // optional string authServerPassword = 4; private java.lang.Object authServerPassword_ = ""; + /** + * optional string authServerPassword = 4; + */ public boolean hasAuthServerPassword() { return ((bitField0_ & 0x00000008) == 0x00000008); } - public String getAuthServerPassword() { + /** + * optional string authServerPassword = 4; + */ + public java.lang.String getAuthServerPassword() { java.lang.Object ref = authServerPassword_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); authServerPassword_ = s; return s; } else { - return (String) ref; + return (java.lang.String) ref; } } - public Builder setAuthServerPassword(String value) { + /** + * optional string authServerPassword = 4; + */ + public com.google.protobuf.ByteString + getAuthServerPasswordBytes() { + java.lang.Object ref = authServerPassword_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + authServerPassword_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string authServerPassword = 4; + */ + public Builder setAuthServerPassword( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } @@ -4143,26 +5647,46 @@ public final class ProtoBuf { return this; } + /** + * optional string authServerPassword = 4; + */ public Builder clearAuthServerPassword() { bitField0_ = (bitField0_ & ~0x00000008); authServerPassword_ = getDefaultInstance().getAuthServerPassword(); return this; } - void setAuthServerPassword(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000008; + /** + * optional string authServerPassword = 4; + */ + public Builder setAuthServerPasswordBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; authServerPassword_ = value; + return this; } - + // required .InitMessage.LoginType login = 5; private de.pokerth.protocol.ProtoBuf.InitMessage.LoginType login_ = de.pokerth.protocol.ProtoBuf.InitMessage.LoginType.guestLogin; + /** + * required .InitMessage.LoginType login = 5; + */ public boolean hasLogin() { return ((bitField0_ & 0x00000010) == 0x00000010); } + /** + * required .InitMessage.LoginType login = 5; + */ public de.pokerth.protocol.ProtoBuf.InitMessage.LoginType getLogin() { return login_; } + /** + * required .InitMessage.LoginType login = 5; + */ public Builder setLogin(de.pokerth.protocol.ProtoBuf.InitMessage.LoginType value) { if (value == null) { throw new NullPointerException(); @@ -4172,29 +5696,75 @@ public final class ProtoBuf { return this; } + /** + * required .InitMessage.LoginType login = 5; + */ public Builder clearLogin() { bitField0_ = (bitField0_ & ~0x00000010); login_ = de.pokerth.protocol.ProtoBuf.InitMessage.LoginType.guestLogin; return this; } - + // optional string nickName = 6; private java.lang.Object nickName_ = ""; + /** + * optional string nickName = 6; + * + *
+       * Only used for guest login or unauthenticated login.
+       * 
+ */ public boolean hasNickName() { return ((bitField0_ & 0x00000020) == 0x00000020); } - public String getNickName() { + /** + * optional string nickName = 6; + * + *
+       * Only used for guest login or unauthenticated login.
+       * 
+ */ + public java.lang.String getNickName() { java.lang.Object ref = nickName_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); nickName_ = s; return s; } else { - return (String) ref; + return (java.lang.String) ref; } } - public Builder setNickName(String value) { + /** + * optional string nickName = 6; + * + *
+       * Only used for guest login or unauthenticated login.
+       * 
+ */ + public com.google.protobuf.ByteString + getNickNameBytes() { + java.lang.Object ref = nickName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + nickName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string nickName = 6; + * + *
+       * Only used for guest login or unauthenticated login.
+       * 
+ */ + public Builder setNickName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } @@ -4203,26 +5773,66 @@ public final class ProtoBuf { return this; } + /** + * optional string nickName = 6; + * + *
+       * Only used for guest login or unauthenticated login.
+       * 
+ */ public Builder clearNickName() { bitField0_ = (bitField0_ & ~0x00000020); nickName_ = getDefaultInstance().getNickName(); return this; } - void setNickName(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000020; + /** + * optional string nickName = 6; + * + *
+       * Only used for guest login or unauthenticated login.
+       * 
+ */ + public Builder setNickNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000020; nickName_ = value; + return this; } - + // optional bytes clientUserData = 7; private com.google.protobuf.ByteString clientUserData_ = com.google.protobuf.ByteString.EMPTY; + /** + * optional bytes clientUserData = 7; + * + *
+       * Authenticated login data is according to SCRAM SHA-1
+       * 
+ */ public boolean hasClientUserData() { return ((bitField0_ & 0x00000040) == 0x00000040); } + /** + * optional bytes clientUserData = 7; + * + *
+       * Authenticated login data is according to SCRAM SHA-1
+       * 
+ */ public com.google.protobuf.ByteString getClientUserData() { return clientUserData_; } + /** + * optional bytes clientUserData = 7; + * + *
+       * Authenticated login data is according to SCRAM SHA-1
+       * 
+ */ public Builder setClientUserData(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); @@ -4232,21 +5842,49 @@ public final class ProtoBuf { return this; } + /** + * optional bytes clientUserData = 7; + * + *
+       * Authenticated login data is according to SCRAM SHA-1
+       * 
+ */ public Builder clearClientUserData() { bitField0_ = (bitField0_ & ~0x00000040); clientUserData_ = getDefaultInstance().getClientUserData(); return this; } - + // optional bytes avatarHash = 8; private com.google.protobuf.ByteString avatarHash_ = com.google.protobuf.ByteString.EMPTY; + /** + * optional bytes avatarHash = 8; + * + *
+       * Ignored for guest login.
+       * 
+ */ public boolean hasAvatarHash() { return ((bitField0_ & 0x00000080) == 0x00000080); } + /** + * optional bytes avatarHash = 8; + * + *
+       * Ignored for guest login.
+       * 
+ */ public com.google.protobuf.ByteString getAvatarHash() { return avatarHash_; } + /** + * optional bytes avatarHash = 8; + * + *
+       * Ignored for guest login.
+       * 
+ */ public Builder setAvatarHash(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); @@ -4256,60 +5894,135 @@ public final class ProtoBuf { return this; } + /** + * optional bytes avatarHash = 8; + * + *
+       * Ignored for guest login.
+       * 
+ */ public Builder clearAvatarHash() { bitField0_ = (bitField0_ & ~0x00000080); avatarHash_ = getDefaultInstance().getAvatarHash(); return this; } - + // @@protoc_insertion_point(builder_scope:InitMessage) } - + static { defaultInstance = new InitMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:InitMessage) } - + public interface AuthServerChallengeMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required bytes serverChallenge = 1; + /** + * required bytes serverChallenge = 1; + */ boolean hasServerChallenge(); + /** + * required bytes serverChallenge = 1; + */ com.google.protobuf.ByteString getServerChallenge(); } + /** + * Protobuf type {@code AuthServerChallengeMessage} + */ public static final class AuthServerChallengeMessage extends com.google.protobuf.GeneratedMessageLite implements AuthServerChallengeMessageOrBuilder { // Use AuthServerChallengeMessage.newBuilder() to construct. - private AuthServerChallengeMessage(Builder builder) { + private AuthServerChallengeMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private AuthServerChallengeMessage(boolean noInit) {} - + private static final AuthServerChallengeMessage defaultInstance; public static AuthServerChallengeMessage getDefaultInstance() { return defaultInstance; } - + public AuthServerChallengeMessage getDefaultInstanceForType() { return defaultInstance; } - + + private AuthServerChallengeMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + serverChallenge_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AuthServerChallengeMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AuthServerChallengeMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required bytes serverChallenge = 1; public static final int SERVERCHALLENGE_FIELD_NUMBER = 1; private com.google.protobuf.ByteString serverChallenge_; + /** + * required bytes serverChallenge = 1; + */ public boolean hasServerChallenge() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required bytes serverChallenge = 1; + */ public com.google.protobuf.ByteString getServerChallenge() { return serverChallenge_; } - + private void initFields() { serverChallenge_ = com.google.protobuf.ByteString.EMPTY; } @@ -4317,7 +6030,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasServerChallenge()) { memoizedIsInitialized = 0; return false; @@ -4325,7 +6038,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -4333,12 +6046,12 @@ public final class ProtoBuf { output.writeBytes(1, serverChallenge_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -4347,88 +6060,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code AuthServerChallengeMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage, Builder> @@ -4437,28 +6139,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); serverChallenge_ = com.google.protobuf.ByteString.EMPTY; bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage build() { de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage result = buildPartial(); if (!result.isInitialized()) { @@ -4466,17 +6168,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage buildPartial() { de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage result = new de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage(this); int from_bitField0_ = bitField0_; @@ -4488,7 +6180,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage other) { if (other == de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage.getDefaultInstance()) return this; if (other.hasServerChallenge()) { @@ -4496,7 +6188,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasServerChallenge()) { @@ -4504,43 +6196,43 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 10: { - bitField0_ |= 0x00000001; - serverChallenge_ = input.readBytes(); - break; - } + de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required bytes serverChallenge = 1; private com.google.protobuf.ByteString serverChallenge_ = com.google.protobuf.ByteString.EMPTY; + /** + * required bytes serverChallenge = 1; + */ public boolean hasServerChallenge() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required bytes serverChallenge = 1; + */ public com.google.protobuf.ByteString getServerChallenge() { return serverChallenge_; } + /** + * required bytes serverChallenge = 1; + */ public Builder setServerChallenge(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); @@ -4550,60 +6242,131 @@ public final class ProtoBuf { return this; } + /** + * required bytes serverChallenge = 1; + */ public Builder clearServerChallenge() { bitField0_ = (bitField0_ & ~0x00000001); serverChallenge_ = getDefaultInstance().getServerChallenge(); return this; } - + // @@protoc_insertion_point(builder_scope:AuthServerChallengeMessage) } - + static { defaultInstance = new AuthServerChallengeMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:AuthServerChallengeMessage) } - + public interface AuthClientResponseMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required bytes clientResponse = 1; + /** + * required bytes clientResponse = 1; + */ boolean hasClientResponse(); + /** + * required bytes clientResponse = 1; + */ com.google.protobuf.ByteString getClientResponse(); } + /** + * Protobuf type {@code AuthClientResponseMessage} + */ public static final class AuthClientResponseMessage extends com.google.protobuf.GeneratedMessageLite implements AuthClientResponseMessageOrBuilder { // Use AuthClientResponseMessage.newBuilder() to construct. - private AuthClientResponseMessage(Builder builder) { + private AuthClientResponseMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private AuthClientResponseMessage(boolean noInit) {} - + private static final AuthClientResponseMessage defaultInstance; public static AuthClientResponseMessage getDefaultInstance() { return defaultInstance; } - + public AuthClientResponseMessage getDefaultInstanceForType() { return defaultInstance; } - + + private AuthClientResponseMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + clientResponse_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AuthClientResponseMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AuthClientResponseMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required bytes clientResponse = 1; public static final int CLIENTRESPONSE_FIELD_NUMBER = 1; private com.google.protobuf.ByteString clientResponse_; + /** + * required bytes clientResponse = 1; + */ public boolean hasClientResponse() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required bytes clientResponse = 1; + */ public com.google.protobuf.ByteString getClientResponse() { return clientResponse_; } - + private void initFields() { clientResponse_ = com.google.protobuf.ByteString.EMPTY; } @@ -4611,7 +6374,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasClientResponse()) { memoizedIsInitialized = 0; return false; @@ -4619,7 +6382,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -4627,12 +6390,12 @@ public final class ProtoBuf { output.writeBytes(1, clientResponse_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -4641,88 +6404,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code AuthClientResponseMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage, Builder> @@ -4731,28 +6483,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); clientResponse_ = com.google.protobuf.ByteString.EMPTY; bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage build() { de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage result = buildPartial(); if (!result.isInitialized()) { @@ -4760,17 +6512,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage buildPartial() { de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage result = new de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage(this); int from_bitField0_ = bitField0_; @@ -4782,7 +6524,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage other) { if (other == de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage.getDefaultInstance()) return this; if (other.hasClientResponse()) { @@ -4790,7 +6532,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasClientResponse()) { @@ -4798,43 +6540,43 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 10: { - bitField0_ |= 0x00000001; - clientResponse_ = input.readBytes(); - break; - } + de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required bytes clientResponse = 1; private com.google.protobuf.ByteString clientResponse_ = com.google.protobuf.ByteString.EMPTY; + /** + * required bytes clientResponse = 1; + */ public boolean hasClientResponse() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required bytes clientResponse = 1; + */ public com.google.protobuf.ByteString getClientResponse() { return clientResponse_; } + /** + * required bytes clientResponse = 1; + */ public Builder setClientResponse(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); @@ -4844,60 +6586,131 @@ public final class ProtoBuf { return this; } + /** + * required bytes clientResponse = 1; + */ public Builder clearClientResponse() { bitField0_ = (bitField0_ & ~0x00000001); clientResponse_ = getDefaultInstance().getClientResponse(); return this; } - + // @@protoc_insertion_point(builder_scope:AuthClientResponseMessage) } - + static { defaultInstance = new AuthClientResponseMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:AuthClientResponseMessage) } - + public interface AuthServerVerificationMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required bytes serverVerification = 1; + /** + * required bytes serverVerification = 1; + */ boolean hasServerVerification(); + /** + * required bytes serverVerification = 1; + */ com.google.protobuf.ByteString getServerVerification(); } + /** + * Protobuf type {@code AuthServerVerificationMessage} + */ public static final class AuthServerVerificationMessage extends com.google.protobuf.GeneratedMessageLite implements AuthServerVerificationMessageOrBuilder { // Use AuthServerVerificationMessage.newBuilder() to construct. - private AuthServerVerificationMessage(Builder builder) { + private AuthServerVerificationMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private AuthServerVerificationMessage(boolean noInit) {} - + private static final AuthServerVerificationMessage defaultInstance; public static AuthServerVerificationMessage getDefaultInstance() { return defaultInstance; } - + public AuthServerVerificationMessage getDefaultInstanceForType() { return defaultInstance; } - + + private AuthServerVerificationMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + serverVerification_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AuthServerVerificationMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AuthServerVerificationMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required bytes serverVerification = 1; public static final int SERVERVERIFICATION_FIELD_NUMBER = 1; private com.google.protobuf.ByteString serverVerification_; + /** + * required bytes serverVerification = 1; + */ public boolean hasServerVerification() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required bytes serverVerification = 1; + */ public com.google.protobuf.ByteString getServerVerification() { return serverVerification_; } - + private void initFields() { serverVerification_ = com.google.protobuf.ByteString.EMPTY; } @@ -4905,7 +6718,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasServerVerification()) { memoizedIsInitialized = 0; return false; @@ -4913,7 +6726,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -4921,12 +6734,12 @@ public final class ProtoBuf { output.writeBytes(1, serverVerification_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -4935,88 +6748,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code AuthServerVerificationMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage, Builder> @@ -5025,28 +6827,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); serverVerification_ = com.google.protobuf.ByteString.EMPTY; bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage build() { de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage result = buildPartial(); if (!result.isInitialized()) { @@ -5054,17 +6856,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage buildPartial() { de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage result = new de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage(this); int from_bitField0_ = bitField0_; @@ -5076,7 +6868,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage other) { if (other == de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage.getDefaultInstance()) return this; if (other.hasServerVerification()) { @@ -5084,7 +6876,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasServerVerification()) { @@ -5092,43 +6884,43 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 10: { - bitField0_ |= 0x00000001; - serverVerification_ = input.readBytes(); - break; - } + de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required bytes serverVerification = 1; private com.google.protobuf.ByteString serverVerification_ = com.google.protobuf.ByteString.EMPTY; + /** + * required bytes serverVerification = 1; + */ public boolean hasServerVerification() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required bytes serverVerification = 1; + */ public com.google.protobuf.ByteString getServerVerification() { return serverVerification_; } + /** + * required bytes serverVerification = 1; + */ public Builder setServerVerification(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); @@ -5138,370 +6930,110 @@ public final class ProtoBuf { return this; } + /** + * required bytes serverVerification = 1; + */ public Builder clearServerVerification() { bitField0_ = (bitField0_ & ~0x00000001); serverVerification_ = getDefaultInstance().getServerVerification(); return this; } - + // @@protoc_insertion_point(builder_scope:AuthServerVerificationMessage) } - + static { defaultInstance = new AuthServerVerificationMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:AuthServerVerificationMessage) } - + public interface InitAckMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required bytes yourSessionId = 1; + /** + * required bytes yourSessionId = 1; + */ boolean hasYourSessionId(); + /** + * required bytes yourSessionId = 1; + */ com.google.protobuf.ByteString getYourSessionId(); - + // required uint32 yourPlayerId = 2; + /** + * required uint32 yourPlayerId = 2; + */ boolean hasYourPlayerId(); + /** + * required uint32 yourPlayerId = 2; + */ int getYourPlayerId(); - + // optional bytes yourAvatarHash = 3; + /** + * optional bytes yourAvatarHash = 3; + */ boolean hasYourAvatarHash(); + /** + * optional bytes yourAvatarHash = 3; + */ com.google.protobuf.ByteString getYourAvatarHash(); - + // optional uint32 rejoinGameId = 4; + /** + * optional uint32 rejoinGameId = 4; + */ boolean hasRejoinGameId(); + /** + * optional uint32 rejoinGameId = 4; + */ int getRejoinGameId(); } + /** + * Protobuf type {@code InitAckMessage} + */ public static final class InitAckMessage extends com.google.protobuf.GeneratedMessageLite implements InitAckMessageOrBuilder { // Use InitAckMessage.newBuilder() to construct. - private InitAckMessage(Builder builder) { + private InitAckMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private InitAckMessage(boolean noInit) {} - + private static final InitAckMessage defaultInstance; public static InitAckMessage getDefaultInstance() { return defaultInstance; } - + public InitAckMessage getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required bytes yourSessionId = 1; - public static final int YOURSESSIONID_FIELD_NUMBER = 1; - private com.google.protobuf.ByteString yourSessionId_; - public boolean hasYourSessionId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public com.google.protobuf.ByteString getYourSessionId() { - return yourSessionId_; - } - - // required uint32 yourPlayerId = 2; - public static final int YOURPLAYERID_FIELD_NUMBER = 2; - private int yourPlayerId_; - public boolean hasYourPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getYourPlayerId() { - return yourPlayerId_; - } - - // optional bytes yourAvatarHash = 3; - public static final int YOURAVATARHASH_FIELD_NUMBER = 3; - private com.google.protobuf.ByteString yourAvatarHash_; - public boolean hasYourAvatarHash() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public com.google.protobuf.ByteString getYourAvatarHash() { - return yourAvatarHash_; - } - - // optional uint32 rejoinGameId = 4; - public static final int REJOINGAMEID_FIELD_NUMBER = 4; - private int rejoinGameId_; - public boolean hasRejoinGameId() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public int getRejoinGameId() { - return rejoinGameId_; - } - - private void initFields() { - yourSessionId_ = com.google.protobuf.ByteString.EMPTY; - yourPlayerId_ = 0; - yourAvatarHash_ = com.google.protobuf.ByteString.EMPTY; - rejoinGameId_ = 0; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasYourSessionId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasYourPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeBytes(1, yourSessionId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, yourPlayerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeBytes(3, yourAvatarHash_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeUInt32(4, rejoinGameId_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(1, yourSessionId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, yourPlayerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(3, yourAvatarHash_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(4, rejoinGameId_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom( + + private InitAckMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.InitAckMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.InitAckMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.InitAckMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.InitAckMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - yourSessionId_ = com.google.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00000001); - yourPlayerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - yourAvatarHash_ = com.google.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00000004); - rejoinGameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000008); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.InitAckMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.InitAckMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.InitAckMessage build() { - de.pokerth.protocol.ProtoBuf.InitAckMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.InitAckMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.InitAckMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.InitAckMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.InitAckMessage result = new de.pokerth.protocol.ProtoBuf.InitAckMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.yourSessionId_ = yourSessionId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.yourPlayerId_ = yourPlayerId_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.yourAvatarHash_ = yourAvatarHash_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.rejoinGameId_ = rejoinGameId_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.InitAckMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.InitAckMessage.getDefaultInstance()) return this; - if (other.hasYourSessionId()) { - setYourSessionId(other.getYourSessionId()); - } - if (other.hasYourPlayerId()) { - setYourPlayerId(other.getYourPlayerId()); - } - if (other.hasYourAvatarHash()) { - setYourAvatarHash(other.getYourAvatarHash()); - } - if (other.hasRejoinGameId()) { - setRejoinGameId(other.getRejoinGameId()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasYourSessionId()) { - - return false; - } - if (!hasYourPlayerId()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -5527,18 +7059,364 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public InitAckMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new InitAckMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required bytes yourSessionId = 1; + public static final int YOURSESSIONID_FIELD_NUMBER = 1; + private com.google.protobuf.ByteString yourSessionId_; + /** + * required bytes yourSessionId = 1; + */ + public boolean hasYourSessionId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required bytes yourSessionId = 1; + */ + public com.google.protobuf.ByteString getYourSessionId() { + return yourSessionId_; + } + + // required uint32 yourPlayerId = 2; + public static final int YOURPLAYERID_FIELD_NUMBER = 2; + private int yourPlayerId_; + /** + * required uint32 yourPlayerId = 2; + */ + public boolean hasYourPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 yourPlayerId = 2; + */ + public int getYourPlayerId() { + return yourPlayerId_; + } + + // optional bytes yourAvatarHash = 3; + public static final int YOURAVATARHASH_FIELD_NUMBER = 3; + private com.google.protobuf.ByteString yourAvatarHash_; + /** + * optional bytes yourAvatarHash = 3; + */ + public boolean hasYourAvatarHash() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional bytes yourAvatarHash = 3; + */ + public com.google.protobuf.ByteString getYourAvatarHash() { + return yourAvatarHash_; + } + + // optional uint32 rejoinGameId = 4; + public static final int REJOINGAMEID_FIELD_NUMBER = 4; + private int rejoinGameId_; + /** + * optional uint32 rejoinGameId = 4; + */ + public boolean hasRejoinGameId() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional uint32 rejoinGameId = 4; + */ + public int getRejoinGameId() { + return rejoinGameId_; + } + + private void initFields() { + yourSessionId_ = com.google.protobuf.ByteString.EMPTY; + yourPlayerId_ = 0; + yourAvatarHash_ = com.google.protobuf.ByteString.EMPTY; + rejoinGameId_ = 0; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasYourSessionId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasYourPlayerId()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, yourSessionId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, yourPlayerId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, yourAvatarHash_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeUInt32(4, rejoinGameId_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, yourSessionId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, yourPlayerId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(3, yourAvatarHash_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(4, rejoinGameId_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.InitAckMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.InitAckMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code InitAckMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.InitAckMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.InitAckMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.InitAckMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + yourSessionId_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000001); + yourPlayerId_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + yourAvatarHash_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000004); + rejoinGameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.InitAckMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.InitAckMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.InitAckMessage build() { + de.pokerth.protocol.ProtoBuf.InitAckMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.InitAckMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.InitAckMessage result = new de.pokerth.protocol.ProtoBuf.InitAckMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.yourSessionId_ = yourSessionId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.yourPlayerId_ = yourPlayerId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.yourAvatarHash_ = yourAvatarHash_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.rejoinGameId_ = rejoinGameId_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.InitAckMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.InitAckMessage.getDefaultInstance()) return this; + if (other.hasYourSessionId()) { + setYourSessionId(other.getYourSessionId()); + } + if (other.hasYourPlayerId()) { + setYourPlayerId(other.getYourPlayerId()); + } + if (other.hasYourAvatarHash()) { + setYourAvatarHash(other.getYourAvatarHash()); + } + if (other.hasRejoinGameId()) { + setRejoinGameId(other.getRejoinGameId()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasYourSessionId()) { + + return false; + } + if (!hasYourPlayerId()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.InitAckMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.InitAckMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required bytes yourSessionId = 1; private com.google.protobuf.ByteString yourSessionId_ = com.google.protobuf.ByteString.EMPTY; + /** + * required bytes yourSessionId = 1; + */ public boolean hasYourSessionId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required bytes yourSessionId = 1; + */ public com.google.protobuf.ByteString getYourSessionId() { return yourSessionId_; } + /** + * required bytes yourSessionId = 1; + */ public Builder setYourSessionId(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); @@ -5548,42 +7426,66 @@ public final class ProtoBuf { return this; } + /** + * required bytes yourSessionId = 1; + */ public Builder clearYourSessionId() { bitField0_ = (bitField0_ & ~0x00000001); yourSessionId_ = getDefaultInstance().getYourSessionId(); return this; } - + // required uint32 yourPlayerId = 2; private int yourPlayerId_ ; + /** + * required uint32 yourPlayerId = 2; + */ public boolean hasYourPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 yourPlayerId = 2; + */ public int getYourPlayerId() { return yourPlayerId_; } + /** + * required uint32 yourPlayerId = 2; + */ public Builder setYourPlayerId(int value) { bitField0_ |= 0x00000002; yourPlayerId_ = value; return this; } + /** + * required uint32 yourPlayerId = 2; + */ public Builder clearYourPlayerId() { bitField0_ = (bitField0_ & ~0x00000002); yourPlayerId_ = 0; return this; } - + // optional bytes yourAvatarHash = 3; private com.google.protobuf.ByteString yourAvatarHash_ = com.google.protobuf.ByteString.EMPTY; + /** + * optional bytes yourAvatarHash = 3; + */ public boolean hasYourAvatarHash() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional bytes yourAvatarHash = 3; + */ public com.google.protobuf.ByteString getYourAvatarHash() { return yourAvatarHash_; } + /** + * optional bytes yourAvatarHash = 3; + */ public Builder setYourAvatarHash(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); @@ -5593,329 +7495,123 @@ public final class ProtoBuf { return this; } + /** + * optional bytes yourAvatarHash = 3; + */ public Builder clearYourAvatarHash() { bitField0_ = (bitField0_ & ~0x00000004); yourAvatarHash_ = getDefaultInstance().getYourAvatarHash(); return this; } - + // optional uint32 rejoinGameId = 4; private int rejoinGameId_ ; + /** + * optional uint32 rejoinGameId = 4; + */ public boolean hasRejoinGameId() { return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * optional uint32 rejoinGameId = 4; + */ public int getRejoinGameId() { return rejoinGameId_; } + /** + * optional uint32 rejoinGameId = 4; + */ public Builder setRejoinGameId(int value) { bitField0_ |= 0x00000008; rejoinGameId_ = value; return this; } + /** + * optional uint32 rejoinGameId = 4; + */ public Builder clearRejoinGameId() { bitField0_ = (bitField0_ & ~0x00000008); rejoinGameId_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:InitAckMessage) } - + static { defaultInstance = new InitAckMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:InitAckMessage) } - + public interface AvatarRequestMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 requestId = 1; + /** + * required uint32 requestId = 1; + */ boolean hasRequestId(); + /** + * required uint32 requestId = 1; + */ int getRequestId(); - + // required bytes avatarHash = 2; + /** + * required bytes avatarHash = 2; + */ boolean hasAvatarHash(); + /** + * required bytes avatarHash = 2; + */ com.google.protobuf.ByteString getAvatarHash(); } + /** + * Protobuf type {@code AvatarRequestMessage} + */ public static final class AvatarRequestMessage extends com.google.protobuf.GeneratedMessageLite implements AvatarRequestMessageOrBuilder { // Use AvatarRequestMessage.newBuilder() to construct. - private AvatarRequestMessage(Builder builder) { + private AvatarRequestMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private AvatarRequestMessage(boolean noInit) {} - + private static final AvatarRequestMessage defaultInstance; public static AvatarRequestMessage getDefaultInstance() { return defaultInstance; } - + public AvatarRequestMessage getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required uint32 requestId = 1; - public static final int REQUESTID_FIELD_NUMBER = 1; - private int requestId_; - public boolean hasRequestId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getRequestId() { - return requestId_; - } - - // required bytes avatarHash = 2; - public static final int AVATARHASH_FIELD_NUMBER = 2; - private com.google.protobuf.ByteString avatarHash_; - public boolean hasAvatarHash() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public com.google.protobuf.ByteString getAvatarHash() { - return avatarHash_; - } - - private void initFields() { - requestId_ = 0; - avatarHash_ = com.google.protobuf.ByteString.EMPTY; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasRequestId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasAvatarHash()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, requestId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeBytes(2, avatarHash_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, requestId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(2, avatarHash_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom( + + private AvatarRequestMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AvatarRequestMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.AvatarRequestMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.AvatarRequestMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - requestId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - avatarHash_ = com.google.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.AvatarRequestMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.AvatarRequestMessage build() { - de.pokerth.protocol.ProtoBuf.AvatarRequestMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.AvatarRequestMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AvatarRequestMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.AvatarRequestMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.AvatarRequestMessage result = new de.pokerth.protocol.ProtoBuf.AvatarRequestMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.requestId_ = requestId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.avatarHash_ = avatarHash_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AvatarRequestMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.getDefaultInstance()) return this; - if (other.hasRequestId()) { - setRequestId(other.getRequestId()); - } - if (other.hasAvatarHash()) { - setAvatarHash(other.getAvatarHash()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasRequestId()) { - - return false; - } - if (!hasAvatarHash()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -5931,156 +7627,84 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 requestId = 1; - private int requestId_ ; - public boolean hasRequestId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getRequestId() { - return requestId_; - } - public Builder setRequestId(int value) { - bitField0_ |= 0x00000001; - requestId_ = value; - - return this; - } - public Builder clearRequestId() { - bitField0_ = (bitField0_ & ~0x00000001); - requestId_ = 0; - - return this; - } - - // required bytes avatarHash = 2; - private com.google.protobuf.ByteString avatarHash_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasAvatarHash() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public com.google.protobuf.ByteString getAvatarHash() { - return avatarHash_; - } - public Builder setAvatarHash(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000002; - avatarHash_ = value; - - return this; - } - public Builder clearAvatarHash() { - bitField0_ = (bitField0_ & ~0x00000002); - avatarHash_ = getDefaultInstance().getAvatarHash(); - - return this; - } - - // @@protoc_insertion_point(builder_scope:AvatarRequestMessage) } - - static { - defaultInstance = new AvatarRequestMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AvatarRequestMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AvatarRequestMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:AvatarRequestMessage) - } - - public interface AvatarHeaderMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 requestId = 1; - boolean hasRequestId(); - int getRequestId(); - - // required .NetAvatarType avatarType = 2; - boolean hasAvatarType(); - de.pokerth.protocol.ProtoBuf.NetAvatarType getAvatarType(); - - // required uint32 avatarSize = 3; - boolean hasAvatarSize(); - int getAvatarSize(); - } - public static final class AvatarHeaderMessage extends - com.google.protobuf.GeneratedMessageLite - implements AvatarHeaderMessageOrBuilder { - // Use AvatarHeaderMessage.newBuilder() to construct. - private AvatarHeaderMessage(Builder builder) { - super(builder); - } - private AvatarHeaderMessage(boolean noInit) {} - - private static final AvatarHeaderMessage defaultInstance; - public static AvatarHeaderMessage getDefaultInstance() { - return defaultInstance; - } - - public AvatarHeaderMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 requestId = 1; public static final int REQUESTID_FIELD_NUMBER = 1; private int requestId_; + /** + * required uint32 requestId = 1; + */ public boolean hasRequestId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 requestId = 1; + */ public int getRequestId() { return requestId_; } - - // required .NetAvatarType avatarType = 2; - public static final int AVATARTYPE_FIELD_NUMBER = 2; - private de.pokerth.protocol.ProtoBuf.NetAvatarType avatarType_; - public boolean hasAvatarType() { + + // required bytes avatarHash = 2; + public static final int AVATARHASH_FIELD_NUMBER = 2; + private com.google.protobuf.ByteString avatarHash_; + /** + * required bytes avatarHash = 2; + */ + public boolean hasAvatarHash() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public de.pokerth.protocol.ProtoBuf.NetAvatarType getAvatarType() { - return avatarType_; + /** + * required bytes avatarHash = 2; + */ + public com.google.protobuf.ByteString getAvatarHash() { + return avatarHash_; } - - // required uint32 avatarSize = 3; - public static final int AVATARSIZE_FIELD_NUMBER = 3; - private int avatarSize_; - public boolean hasAvatarSize() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public int getAvatarSize() { - return avatarSize_; - } - + private void initFields() { requestId_ = 0; - avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; - avatarSize_ = 0; + avatarHash_ = com.google.protobuf.ByteString.EMPTY; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasRequestId()) { memoizedIsInitialized = 0; return false; } - if (!hasAvatarType()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasAvatarSize()) { + if (!hasAvatarHash()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -6088,18 +7712,15 @@ public final class ProtoBuf { output.writeUInt32(1, requestId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeEnum(2, avatarType_.getNumber()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeUInt32(3, avatarSize_); + output.writeBytes(2, avatarHash_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -6107,151 +7728,124 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, avatarType_.getNumber()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(3, avatarSize_); + .computeBytesSize(2, avatarHash_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AvatarRequestMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code AvatarRequestMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.AvatarHeaderMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.AvatarRequestMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.AvatarRequestMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); requestId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; + avatarHash_ = com.google.protobuf.ByteString.EMPTY; bitField0_ = (bitField0_ & ~0x00000002); - avatarSize_ = 0; - bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.AvatarRequestMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage build() { - de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.AvatarRequestMessage build() { + de.pokerth.protocol.ProtoBuf.AvatarRequestMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage result = new de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage(this); + + public de.pokerth.protocol.ProtoBuf.AvatarRequestMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.AvatarRequestMessage result = new de.pokerth.protocol.ProtoBuf.AvatarRequestMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -6261,59 +7855,206 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.avatarType_ = avatarType_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.avatarSize_ = avatarSize_; + result.avatarHash_ = avatarHash_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AvatarRequestMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.getDefaultInstance()) return this; if (other.hasRequestId()) { setRequestId(other.getRequestId()); } - if (other.hasAvatarType()) { - setAvatarType(other.getAvatarType()); - } - if (other.hasAvatarSize()) { - setAvatarSize(other.getAvatarSize()); + if (other.hasAvatarHash()) { + setAvatarHash(other.getAvatarHash()); } return this; } - + public final boolean isInitialized() { if (!hasRequestId()) { return false; } - if (!hasAvatarType()) { - - return false; - } - if (!hasAvatarSize()) { + if (!hasAvatarHash()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.AvatarRequestMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AvatarRequestMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 requestId = 1; + private int requestId_ ; + /** + * required uint32 requestId = 1; + */ + public boolean hasRequestId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 requestId = 1; + */ + public int getRequestId() { + return requestId_; + } + /** + * required uint32 requestId = 1; + */ + public Builder setRequestId(int value) { + bitField0_ |= 0x00000001; + requestId_ = value; + + return this; + } + /** + * required uint32 requestId = 1; + */ + public Builder clearRequestId() { + bitField0_ = (bitField0_ & ~0x00000001); + requestId_ = 0; + + return this; + } + + // required bytes avatarHash = 2; + private com.google.protobuf.ByteString avatarHash_ = com.google.protobuf.ByteString.EMPTY; + /** + * required bytes avatarHash = 2; + */ + public boolean hasAvatarHash() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bytes avatarHash = 2; + */ + public com.google.protobuf.ByteString getAvatarHash() { + return avatarHash_; + } + /** + * required bytes avatarHash = 2; + */ + public Builder setAvatarHash(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + avatarHash_ = value; + + return this; + } + /** + * required bytes avatarHash = 2; + */ + public Builder clearAvatarHash() { + bitField0_ = (bitField0_ & ~0x00000002); + avatarHash_ = getDefaultInstance().getAvatarHash(); + + return this; + } + + // @@protoc_insertion_point(builder_scope:AvatarRequestMessage) + } + + static { + defaultInstance = new AvatarRequestMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:AvatarRequestMessage) + } + + public interface AvatarHeaderMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 requestId = 1; + /** + * required uint32 requestId = 1; + */ + boolean hasRequestId(); + /** + * required uint32 requestId = 1; + */ + int getRequestId(); + + // required .NetAvatarType avatarType = 2; + /** + * required .NetAvatarType avatarType = 2; + */ + boolean hasAvatarType(); + /** + * required .NetAvatarType avatarType = 2; + */ + de.pokerth.protocol.ProtoBuf.NetAvatarType getAvatarType(); + + // required uint32 avatarSize = 3; + /** + * required uint32 avatarSize = 3; + */ + boolean hasAvatarSize(); + /** + * required uint32 avatarSize = 3; + */ + int getAvatarSize(); + } + /** + * Protobuf type {@code AvatarHeaderMessage} + */ + public static final class AvatarHeaderMessage extends + com.google.protobuf.GeneratedMessageLite + implements AvatarHeaderMessageOrBuilder { + // Use AvatarHeaderMessage.newBuilder() to construct. + private AvatarHeaderMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private AvatarHeaderMessage(boolean noInit) {} + + private static final AvatarHeaderMessage defaultInstance; + public static AvatarHeaderMessage getDefaultInstance() { + return defaultInstance; + } + + public AvatarHeaderMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private AvatarHeaderMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -6338,158 +8079,105 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 requestId = 1; - private int requestId_ ; - public boolean hasRequestId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getRequestId() { - return requestId_; - } - public Builder setRequestId(int value) { - bitField0_ |= 0x00000001; - requestId_ = value; - - return this; - } - public Builder clearRequestId() { - bitField0_ = (bitField0_ & ~0x00000001); - requestId_ = 0; - - return this; - } - - // required .NetAvatarType avatarType = 2; - private de.pokerth.protocol.ProtoBuf.NetAvatarType avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; - public boolean hasAvatarType() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public de.pokerth.protocol.ProtoBuf.NetAvatarType getAvatarType() { - return avatarType_; - } - public Builder setAvatarType(de.pokerth.protocol.ProtoBuf.NetAvatarType value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000002; - avatarType_ = value; - - return this; - } - public Builder clearAvatarType() { - bitField0_ = (bitField0_ & ~0x00000002); - avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; - - return this; - } - - // required uint32 avatarSize = 3; - private int avatarSize_ ; - public boolean hasAvatarSize() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public int getAvatarSize() { - return avatarSize_; - } - public Builder setAvatarSize(int value) { - bitField0_ |= 0x00000004; - avatarSize_ = value; - - return this; - } - public Builder clearAvatarSize() { - bitField0_ = (bitField0_ & ~0x00000004); - avatarSize_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:AvatarHeaderMessage) } - - static { - defaultInstance = new AvatarHeaderMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AvatarHeaderMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AvatarHeaderMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:AvatarHeaderMessage) - } - - public interface AvatarDataMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 requestId = 1; - boolean hasRequestId(); - int getRequestId(); - - // required bytes avatarBlock = 2; - boolean hasAvatarBlock(); - com.google.protobuf.ByteString getAvatarBlock(); - } - public static final class AvatarDataMessage extends - com.google.protobuf.GeneratedMessageLite - implements AvatarDataMessageOrBuilder { - // Use AvatarDataMessage.newBuilder() to construct. - private AvatarDataMessage(Builder builder) { - super(builder); - } - private AvatarDataMessage(boolean noInit) {} - - private static final AvatarDataMessage defaultInstance; - public static AvatarDataMessage getDefaultInstance() { - return defaultInstance; - } - - public AvatarDataMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 requestId = 1; public static final int REQUESTID_FIELD_NUMBER = 1; private int requestId_; + /** + * required uint32 requestId = 1; + */ public boolean hasRequestId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 requestId = 1; + */ public int getRequestId() { return requestId_; } - - // required bytes avatarBlock = 2; - public static final int AVATARBLOCK_FIELD_NUMBER = 2; - private com.google.protobuf.ByteString avatarBlock_; - public boolean hasAvatarBlock() { + + // required .NetAvatarType avatarType = 2; + public static final int AVATARTYPE_FIELD_NUMBER = 2; + private de.pokerth.protocol.ProtoBuf.NetAvatarType avatarType_; + /** + * required .NetAvatarType avatarType = 2; + */ + public boolean hasAvatarType() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public com.google.protobuf.ByteString getAvatarBlock() { - return avatarBlock_; + /** + * required .NetAvatarType avatarType = 2; + */ + public de.pokerth.protocol.ProtoBuf.NetAvatarType getAvatarType() { + return avatarType_; } - + + // required uint32 avatarSize = 3; + public static final int AVATARSIZE_FIELD_NUMBER = 3; + private int avatarSize_; + /** + * required uint32 avatarSize = 3; + */ + public boolean hasAvatarSize() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required uint32 avatarSize = 3; + */ + public int getAvatarSize() { + return avatarSize_; + } + private void initFields() { requestId_ = 0; - avatarBlock_ = com.google.protobuf.ByteString.EMPTY; + avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; + avatarSize_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasRequestId()) { memoizedIsInitialized = 0; return false; } - if (!hasAvatarBlock()) { + if (!hasAvatarType()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasAvatarSize()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -6497,15 +8185,18 @@ public final class ProtoBuf { output.writeUInt32(1, requestId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeBytes(2, avatarBlock_); + output.writeEnum(2, avatarType_.getNumber()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeUInt32(3, avatarSize_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -6513,145 +8204,130 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeBytesSize(2, avatarBlock_); + .computeEnumSize(2, avatarType_.getNumber()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, avatarSize_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AvatarDataMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code AvatarHeaderMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.AvatarDataMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.AvatarDataMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.AvatarDataMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.AvatarHeaderMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); requestId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - avatarBlock_ = com.google.protobuf.ByteString.EMPTY; + avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; bitField0_ = (bitField0_ & ~0x00000002); + avatarSize_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.AvatarDataMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.AvatarDataMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.AvatarDataMessage build() { - de.pokerth.protocol.ProtoBuf.AvatarDataMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage build() { + de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.AvatarDataMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AvatarDataMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.AvatarDataMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.AvatarDataMessage result = new de.pokerth.protocol.ProtoBuf.AvatarDataMessage(this); + + public de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage result = new de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -6661,48 +8337,240 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.avatarBlock_ = avatarBlock_; + result.avatarType_ = avatarType_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.avatarSize_ = avatarSize_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AvatarDataMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.AvatarDataMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.getDefaultInstance()) return this; if (other.hasRequestId()) { setRequestId(other.getRequestId()); } - if (other.hasAvatarBlock()) { - setAvatarBlock(other.getAvatarBlock()); + if (other.hasAvatarType()) { + setAvatarType(other.getAvatarType()); + } + if (other.hasAvatarSize()) { + setAvatarSize(other.getAvatarSize()); } return this; } - + public final boolean isInitialized() { if (!hasRequestId()) { return false; } - if (!hasAvatarBlock()) { + if (!hasAvatarType()) { + + return false; + } + if (!hasAvatarSize()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 requestId = 1; + private int requestId_ ; + /** + * required uint32 requestId = 1; + */ + public boolean hasRequestId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 requestId = 1; + */ + public int getRequestId() { + return requestId_; + } + /** + * required uint32 requestId = 1; + */ + public Builder setRequestId(int value) { + bitField0_ |= 0x00000001; + requestId_ = value; + + return this; + } + /** + * required uint32 requestId = 1; + */ + public Builder clearRequestId() { + bitField0_ = (bitField0_ & ~0x00000001); + requestId_ = 0; + + return this; + } + + // required .NetAvatarType avatarType = 2; + private de.pokerth.protocol.ProtoBuf.NetAvatarType avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; + /** + * required .NetAvatarType avatarType = 2; + */ + public boolean hasAvatarType() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .NetAvatarType avatarType = 2; + */ + public de.pokerth.protocol.ProtoBuf.NetAvatarType getAvatarType() { + return avatarType_; + } + /** + * required .NetAvatarType avatarType = 2; + */ + public Builder setAvatarType(de.pokerth.protocol.ProtoBuf.NetAvatarType value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + avatarType_ = value; + + return this; + } + /** + * required .NetAvatarType avatarType = 2; + */ + public Builder clearAvatarType() { + bitField0_ = (bitField0_ & ~0x00000002); + avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; + + return this; + } + + // required uint32 avatarSize = 3; + private int avatarSize_ ; + /** + * required uint32 avatarSize = 3; + */ + public boolean hasAvatarSize() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required uint32 avatarSize = 3; + */ + public int getAvatarSize() { + return avatarSize_; + } + /** + * required uint32 avatarSize = 3; + */ + public Builder setAvatarSize(int value) { + bitField0_ |= 0x00000004; + avatarSize_ = value; + + return this; + } + /** + * required uint32 avatarSize = 3; + */ + public Builder clearAvatarSize() { + bitField0_ = (bitField0_ & ~0x00000004); + avatarSize_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:AvatarHeaderMessage) + } + + static { + defaultInstance = new AvatarHeaderMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:AvatarHeaderMessage) + } + + public interface AvatarDataMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 requestId = 1; + /** + * required uint32 requestId = 1; + */ + boolean hasRequestId(); + /** + * required uint32 requestId = 1; + */ + int getRequestId(); + + // required bytes avatarBlock = 2; + /** + * required bytes avatarBlock = 2; + */ + boolean hasAvatarBlock(); + /** + * required bytes avatarBlock = 2; + */ + com.google.protobuf.ByteString getAvatarBlock(); + } + /** + * Protobuf type {@code AvatarDataMessage} + */ + public static final class AvatarDataMessage extends + com.google.protobuf.GeneratedMessageLite + implements AvatarDataMessageOrBuilder { + // Use AvatarDataMessage.newBuilder() to construct. + private AvatarDataMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private AvatarDataMessage(boolean noInit) {} + + private static final AvatarDataMessage defaultInstance; + public static AvatarDataMessage getDefaultInstance() { + return defaultInstance; + } + + public AvatarDataMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private AvatarDataMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -6718,39 +8586,331 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AvatarDataMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AvatarDataMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required uint32 requestId = 1; + public static final int REQUESTID_FIELD_NUMBER = 1; + private int requestId_; + /** + * required uint32 requestId = 1; + */ + public boolean hasRequestId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 requestId = 1; + */ + public int getRequestId() { + return requestId_; + } + + // required bytes avatarBlock = 2; + public static final int AVATARBLOCK_FIELD_NUMBER = 2; + private com.google.protobuf.ByteString avatarBlock_; + /** + * required bytes avatarBlock = 2; + */ + public boolean hasAvatarBlock() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bytes avatarBlock = 2; + */ + public com.google.protobuf.ByteString getAvatarBlock() { + return avatarBlock_; + } + + private void initFields() { + requestId_ = 0; + avatarBlock_ = com.google.protobuf.ByteString.EMPTY; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasRequestId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasAvatarBlock()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, requestId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, avatarBlock_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, requestId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(2, avatarBlock_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AvatarDataMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AvatarDataMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code AvatarDataMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.AvatarDataMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.AvatarDataMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.AvatarDataMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + requestId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + avatarBlock_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.AvatarDataMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.AvatarDataMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.AvatarDataMessage build() { + de.pokerth.protocol.ProtoBuf.AvatarDataMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.AvatarDataMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.AvatarDataMessage result = new de.pokerth.protocol.ProtoBuf.AvatarDataMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.requestId_ = requestId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.avatarBlock_ = avatarBlock_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AvatarDataMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.AvatarDataMessage.getDefaultInstance()) return this; + if (other.hasRequestId()) { + setRequestId(other.getRequestId()); + } + if (other.hasAvatarBlock()) { + setAvatarBlock(other.getAvatarBlock()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasRequestId()) { + + return false; + } + if (!hasAvatarBlock()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.AvatarDataMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AvatarDataMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 requestId = 1; private int requestId_ ; + /** + * required uint32 requestId = 1; + */ public boolean hasRequestId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 requestId = 1; + */ public int getRequestId() { return requestId_; } + /** + * required uint32 requestId = 1; + */ public Builder setRequestId(int value) { bitField0_ |= 0x00000001; requestId_ = value; return this; } + /** + * required uint32 requestId = 1; + */ public Builder clearRequestId() { bitField0_ = (bitField0_ & ~0x00000001); requestId_ = 0; return this; } - + // required bytes avatarBlock = 2; private com.google.protobuf.ByteString avatarBlock_ = com.google.protobuf.ByteString.EMPTY; + /** + * required bytes avatarBlock = 2; + */ public boolean hasAvatarBlock() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required bytes avatarBlock = 2; + */ public com.google.protobuf.ByteString getAvatarBlock() { return avatarBlock_; } + /** + * required bytes avatarBlock = 2; + */ public Builder setAvatarBlock(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); @@ -6760,60 +8920,131 @@ public final class ProtoBuf { return this; } + /** + * required bytes avatarBlock = 2; + */ public Builder clearAvatarBlock() { bitField0_ = (bitField0_ & ~0x00000002); avatarBlock_ = getDefaultInstance().getAvatarBlock(); return this; } - + // @@protoc_insertion_point(builder_scope:AvatarDataMessage) } - + static { defaultInstance = new AvatarDataMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:AvatarDataMessage) } - + public interface AvatarEndMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 requestId = 1; + /** + * required uint32 requestId = 1; + */ boolean hasRequestId(); + /** + * required uint32 requestId = 1; + */ int getRequestId(); } + /** + * Protobuf type {@code AvatarEndMessage} + */ public static final class AvatarEndMessage extends com.google.protobuf.GeneratedMessageLite implements AvatarEndMessageOrBuilder { // Use AvatarEndMessage.newBuilder() to construct. - private AvatarEndMessage(Builder builder) { + private AvatarEndMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private AvatarEndMessage(boolean noInit) {} - + private static final AvatarEndMessage defaultInstance; public static AvatarEndMessage getDefaultInstance() { return defaultInstance; } - + public AvatarEndMessage getDefaultInstanceForType() { return defaultInstance; } - + + private AvatarEndMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + requestId_ = input.readUInt32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AvatarEndMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AvatarEndMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required uint32 requestId = 1; public static final int REQUESTID_FIELD_NUMBER = 1; private int requestId_; + /** + * required uint32 requestId = 1; + */ public boolean hasRequestId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 requestId = 1; + */ public int getRequestId() { return requestId_; } - + private void initFields() { requestId_ = 0; } @@ -6821,7 +9052,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasRequestId()) { memoizedIsInitialized = 0; return false; @@ -6829,7 +9060,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -6837,12 +9068,12 @@ public final class ProtoBuf { output.writeUInt32(1, requestId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -6851,88 +9082,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.AvatarEndMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AvatarEndMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AvatarEndMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AvatarEndMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AvatarEndMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AvatarEndMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AvatarEndMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.AvatarEndMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AvatarEndMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AvatarEndMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AvatarEndMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code AvatarEndMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.AvatarEndMessage, Builder> @@ -6941,28 +9161,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); requestId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.AvatarEndMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.AvatarEndMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.AvatarEndMessage build() { de.pokerth.protocol.ProtoBuf.AvatarEndMessage result = buildPartial(); if (!result.isInitialized()) { @@ -6970,17 +9190,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.AvatarEndMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AvatarEndMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.AvatarEndMessage buildPartial() { de.pokerth.protocol.ProtoBuf.AvatarEndMessage result = new de.pokerth.protocol.ProtoBuf.AvatarEndMessage(this); int from_bitField0_ = bitField0_; @@ -6992,7 +9202,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AvatarEndMessage other) { if (other == de.pokerth.protocol.ProtoBuf.AvatarEndMessage.getDefaultInstance()) return this; if (other.hasRequestId()) { @@ -7000,7 +9210,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasRequestId()) { @@ -7008,21 +9218,123 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.AvatarEndMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AvatarEndMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 requestId = 1; + private int requestId_ ; + /** + * required uint32 requestId = 1; + */ + public boolean hasRequestId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 requestId = 1; + */ + public int getRequestId() { + return requestId_; + } + /** + * required uint32 requestId = 1; + */ + public Builder setRequestId(int value) { + bitField0_ |= 0x00000001; + requestId_ = value; + + return this; + } + /** + * required uint32 requestId = 1; + */ + public Builder clearRequestId() { + bitField0_ = (bitField0_ & ~0x00000001); + requestId_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:AvatarEndMessage) + } + + static { + defaultInstance = new AvatarEndMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:AvatarEndMessage) + } + + public interface UnknownAvatarMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 requestId = 1; + /** + * required uint32 requestId = 1; + */ + boolean hasRequestId(); + /** + * required uint32 requestId = 1; + */ + int getRequestId(); + } + /** + * Protobuf type {@code UnknownAvatarMessage} + */ + public static final class UnknownAvatarMessage extends + com.google.protobuf.GeneratedMessageLite + implements UnknownAvatarMessageOrBuilder { + // Use UnknownAvatarMessage.newBuilder() to construct. + private UnknownAvatarMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private UnknownAvatarMessage(boolean noInit) {} + + private static final UnknownAvatarMessage defaultInstance; + public static UnknownAvatarMessage getDefaultInstance() { + return defaultInstance; + } + + public UnknownAvatarMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private UnknownAvatarMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -7033,78 +9345,47 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 requestId = 1; - private int requestId_ ; - public boolean hasRequestId() { - return ((bitField0_ & 0x00000001) == 0x00000001); + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public UnknownAvatarMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new UnknownAvatarMessage(input, extensionRegistry); } - public int getRequestId() { - return requestId_; - } - public Builder setRequestId(int value) { - bitField0_ |= 0x00000001; - requestId_ = value; - - return this; - } - public Builder clearRequestId() { - bitField0_ = (bitField0_ & ~0x00000001); - requestId_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:AvatarEndMessage) + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - static { - defaultInstance = new AvatarEndMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:AvatarEndMessage) - } - - public interface UnknownAvatarMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 requestId = 1; - boolean hasRequestId(); - int getRequestId(); - } - public static final class UnknownAvatarMessage extends - com.google.protobuf.GeneratedMessageLite - implements UnknownAvatarMessageOrBuilder { - // Use UnknownAvatarMessage.newBuilder() to construct. - private UnknownAvatarMessage(Builder builder) { - super(builder); - } - private UnknownAvatarMessage(boolean noInit) {} - - private static final UnknownAvatarMessage defaultInstance; - public static UnknownAvatarMessage getDefaultInstance() { - return defaultInstance; - } - - public UnknownAvatarMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 requestId = 1; public static final int REQUESTID_FIELD_NUMBER = 1; private int requestId_; + /** + * required uint32 requestId = 1; + */ public boolean hasRequestId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 requestId = 1; + */ public int getRequestId() { return requestId_; } - + private void initFields() { requestId_ = 0; } @@ -7112,7 +9393,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasRequestId()) { memoizedIsInitialized = 0; return false; @@ -7120,7 +9401,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -7128,12 +9409,12 @@ public final class ProtoBuf { output.writeUInt32(1, requestId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -7142,88 +9423,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code UnknownAvatarMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage, Builder> @@ -7232,28 +9502,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); requestId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage build() { de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage result = buildPartial(); if (!result.isInitialized()) { @@ -7261,17 +9531,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage buildPartial() { de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage result = new de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage(this); int from_bitField0_ = bitField0_; @@ -7283,7 +9543,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage other) { if (other == de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage.getDefaultInstance()) return this; if (other.hasRequestId()) { @@ -7291,7 +9551,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasRequestId()) { @@ -7299,392 +9559,133 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - requestId_ = input.readUInt32(); - break; - } + de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 requestId = 1; private int requestId_ ; + /** + * required uint32 requestId = 1; + */ public boolean hasRequestId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 requestId = 1; + */ public int getRequestId() { return requestId_; } + /** + * required uint32 requestId = 1; + */ public Builder setRequestId(int value) { bitField0_ |= 0x00000001; requestId_ = value; return this; } + /** + * required uint32 requestId = 1; + */ public Builder clearRequestId() { bitField0_ = (bitField0_ & ~0x00000001); requestId_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:UnknownAvatarMessage) } - + static { defaultInstance = new UnknownAvatarMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:UnknownAvatarMessage) } - + public interface PlayerListMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 playerId = 1; + /** + * required uint32 playerId = 1; + */ boolean hasPlayerId(); + /** + * required uint32 playerId = 1; + */ int getPlayerId(); - + // required .PlayerListMessage.PlayerListNotification playerListNotification = 2; + /** + * required .PlayerListMessage.PlayerListNotification playerListNotification = 2; + */ boolean hasPlayerListNotification(); + /** + * required .PlayerListMessage.PlayerListNotification playerListNotification = 2; + */ de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification getPlayerListNotification(); } + /** + * Protobuf type {@code PlayerListMessage} + */ public static final class PlayerListMessage extends com.google.protobuf.GeneratedMessageLite implements PlayerListMessageOrBuilder { // Use PlayerListMessage.newBuilder() to construct. - private PlayerListMessage(Builder builder) { + private PlayerListMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private PlayerListMessage(boolean noInit) {} - + private static final PlayerListMessage defaultInstance; public static PlayerListMessage getDefaultInstance() { return defaultInstance; } - + public PlayerListMessage getDefaultInstanceForType() { return defaultInstance; } - - public enum PlayerListNotification - implements com.google.protobuf.Internal.EnumLite { - playerListNew(0, 0), - playerListLeft(1, 1), - ; - - public static final int playerListNew_VALUE = 0; - public static final int playerListLeft_VALUE = 1; - - - public final int getNumber() { return value; } - - public static PlayerListNotification valueOf(int value) { - switch (value) { - case 0: return playerListNew; - case 1: return playerListLeft; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public PlayerListNotification findValueByNumber(int number) { - return PlayerListNotification.valueOf(number); - } - }; - - private final int value; - - private PlayerListNotification(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:PlayerListMessage.PlayerListNotification) - } - - private int bitField0_; - // required uint32 playerId = 1; - public static final int PLAYERID_FIELD_NUMBER = 1; - private int playerId_; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getPlayerId() { - return playerId_; - } - - // required .PlayerListMessage.PlayerListNotification playerListNotification = 2; - public static final int PLAYERLISTNOTIFICATION_FIELD_NUMBER = 2; - private de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification playerListNotification_; - public boolean hasPlayerListNotification() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification getPlayerListNotification() { - return playerListNotification_; - } - - private void initFields() { - playerId_ = 0; - playerListNotification_ = de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification.playerListNew; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPlayerListNotification()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, playerId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeEnum(2, playerListNotification_.getNumber()); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, playerId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, playerListNotification_.getNumber()); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom( + + private PlayerListMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayerListMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.PlayerListMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.PlayerListMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.PlayerListMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - playerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - playerListNotification_ = de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification.playerListNew; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.PlayerListMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.PlayerListMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.PlayerListMessage build() { - de.pokerth.protocol.ProtoBuf.PlayerListMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.PlayerListMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.PlayerListMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.PlayerListMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.PlayerListMessage result = new de.pokerth.protocol.ProtoBuf.PlayerListMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.playerId_ = playerId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.playerListNotification_ = playerListNotification_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayerListMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.PlayerListMessage.getDefaultInstance()) return this; - if (other.hasPlayerId()) { - setPlayerId(other.getPlayerId()); - } - if (other.hasPlayerListNotification()) { - setPlayerListNotification(other.getPlayerListNotification()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasPlayerId()) { - - return false; - } - if (!hasPlayerListNotification()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -7704,39 +9705,387 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PlayerListMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PlayerListMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code PlayerListMessage.PlayerListNotification} + */ + public enum PlayerListNotification + implements com.google.protobuf.Internal.EnumLite { + /** + * playerListNew = 0; + */ + playerListNew(0, 0), + /** + * playerListLeft = 1; + */ + playerListLeft(1, 1), + ; + + /** + * playerListNew = 0; + */ + public static final int playerListNew_VALUE = 0; + /** + * playerListLeft = 1; + */ + public static final int playerListLeft_VALUE = 1; + + + public final int getNumber() { return value; } + + public static PlayerListNotification valueOf(int value) { + switch (value) { + case 0: return playerListNew; + case 1: return playerListLeft; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public PlayerListNotification findValueByNumber(int number) { + return PlayerListNotification.valueOf(number); + } + }; + + private final int value; + + private PlayerListNotification(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:PlayerListMessage.PlayerListNotification) + } + + private int bitField0_; + // required uint32 playerId = 1; + public static final int PLAYERID_FIELD_NUMBER = 1; + private int playerId_; + /** + * required uint32 playerId = 1; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 playerId = 1; + */ + public int getPlayerId() { + return playerId_; + } + + // required .PlayerListMessage.PlayerListNotification playerListNotification = 2; + public static final int PLAYERLISTNOTIFICATION_FIELD_NUMBER = 2; + private de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification playerListNotification_; + /** + * required .PlayerListMessage.PlayerListNotification playerListNotification = 2; + */ + public boolean hasPlayerListNotification() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .PlayerListMessage.PlayerListNotification playerListNotification = 2; + */ + public de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification getPlayerListNotification() { + return playerListNotification_; + } + + private void initFields() { + playerId_ = 0; + playerListNotification_ = de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification.playerListNew; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasPlayerId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPlayerListNotification()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, playerId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeEnum(2, playerListNotification_.getNumber()); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, playerId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(2, playerListNotification_.getNumber()); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.PlayerListMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayerListMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code PlayerListMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.PlayerListMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.PlayerListMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.PlayerListMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + playerId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + playerListNotification_ = de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification.playerListNew; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.PlayerListMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.PlayerListMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.PlayerListMessage build() { + de.pokerth.protocol.ProtoBuf.PlayerListMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.PlayerListMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.PlayerListMessage result = new de.pokerth.protocol.ProtoBuf.PlayerListMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.playerId_ = playerId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.playerListNotification_ = playerListNotification_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayerListMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.PlayerListMessage.getDefaultInstance()) return this; + if (other.hasPlayerId()) { + setPlayerId(other.getPlayerId()); + } + if (other.hasPlayerListNotification()) { + setPlayerListNotification(other.getPlayerListNotification()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasPlayerId()) { + + return false; + } + if (!hasPlayerListNotification()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.PlayerListMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.PlayerListMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 playerId = 1; private int playerId_ ; + /** + * required uint32 playerId = 1; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 playerId = 1; + */ public int getPlayerId() { return playerId_; } + /** + * required uint32 playerId = 1; + */ public Builder setPlayerId(int value) { bitField0_ |= 0x00000001; playerId_ = value; return this; } + /** + * required uint32 playerId = 1; + */ public Builder clearPlayerId() { bitField0_ = (bitField0_ & ~0x00000001); playerId_ = 0; return this; } - + // required .PlayerListMessage.PlayerListNotification playerListNotification = 2; private de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification playerListNotification_ = de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification.playerListNew; + /** + * required .PlayerListMessage.PlayerListNotification playerListNotification = 2; + */ public boolean hasPlayerListNotification() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .PlayerListMessage.PlayerListNotification playerListNotification = 2; + */ public de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification getPlayerListNotification() { return playerListNotification_; } + /** + * required .PlayerListMessage.PlayerListNotification playerListNotification = 2; + */ public Builder setPlayerListNotification(de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification value) { if (value == null) { throw new NullPointerException(); @@ -7746,141 +10095,334 @@ public final class ProtoBuf { return this; } + /** + * required .PlayerListMessage.PlayerListNotification playerListNotification = 2; + */ public Builder clearPlayerListNotification() { bitField0_ = (bitField0_ & ~0x00000002); playerListNotification_ = de.pokerth.protocol.ProtoBuf.PlayerListMessage.PlayerListNotification.playerListNew; return this; } - + // @@protoc_insertion_point(builder_scope:PlayerListMessage) } - + static { defaultInstance = new PlayerListMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:PlayerListMessage) } - + public interface GameListNewMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // required .NetGameMode gameMode = 2; + /** + * required .NetGameMode gameMode = 2; + */ boolean hasGameMode(); + /** + * required .NetGameMode gameMode = 2; + */ de.pokerth.protocol.ProtoBuf.NetGameMode getGameMode(); - + // required bool isPrivate = 3; + /** + * required bool isPrivate = 3; + */ boolean hasIsPrivate(); + /** + * required bool isPrivate = 3; + */ boolean getIsPrivate(); - + // repeated uint32 playerIds = 4 [packed = true]; + /** + * repeated uint32 playerIds = 4 [packed = true]; + */ java.util.List getPlayerIdsList(); + /** + * repeated uint32 playerIds = 4 [packed = true]; + */ int getPlayerIdsCount(); + /** + * repeated uint32 playerIds = 4 [packed = true]; + */ int getPlayerIds(int index); - + // required uint32 adminPlayerId = 5; + /** + * required uint32 adminPlayerId = 5; + */ boolean hasAdminPlayerId(); + /** + * required uint32 adminPlayerId = 5; + */ int getAdminPlayerId(); - + // required .NetGameInfo gameInfo = 6; + /** + * required .NetGameInfo gameInfo = 6; + */ boolean hasGameInfo(); + /** + * required .NetGameInfo gameInfo = 6; + */ de.pokerth.protocol.ProtoBuf.NetGameInfo getGameInfo(); } + /** + * Protobuf type {@code GameListNewMessage} + */ public static final class GameListNewMessage extends com.google.protobuf.GeneratedMessageLite implements GameListNewMessageOrBuilder { // Use GameListNewMessage.newBuilder() to construct. - private GameListNewMessage(Builder builder) { + private GameListNewMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private GameListNewMessage(boolean noInit) {} - + private static final GameListNewMessage defaultInstance; public static GameListNewMessage getDefaultInstance() { return defaultInstance; } - + public GameListNewMessage getDefaultInstanceForType() { return defaultInstance; } - + + private GameListNewMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + gameId_ = input.readUInt32(); + break; + } + case 16: { + int rawValue = input.readEnum(); + de.pokerth.protocol.ProtoBuf.NetGameMode value = de.pokerth.protocol.ProtoBuf.NetGameMode.valueOf(rawValue); + if (value != null) { + bitField0_ |= 0x00000002; + gameMode_ = value; + } + break; + } + case 24: { + bitField0_ |= 0x00000004; + isPrivate_ = input.readBool(); + break; + } + case 32: { + if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) { + playerIds_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000008; + } + playerIds_.add(input.readUInt32()); + break; + } + case 34: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) { + playerIds_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000008; + } + while (input.getBytesUntilLimit() > 0) { + playerIds_.add(input.readUInt32()); + } + input.popLimit(limit); + break; + } + case 40: { + bitField0_ |= 0x00000008; + adminPlayerId_ = input.readUInt32(); + break; + } + case 50: { + de.pokerth.protocol.ProtoBuf.NetGameInfo.Builder subBuilder = null; + if (((bitField0_ & 0x00000010) == 0x00000010)) { + subBuilder = gameInfo_.toBuilder(); + } + gameInfo_ = input.readMessage(de.pokerth.protocol.ProtoBuf.NetGameInfo.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameInfo_); + gameInfo_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000010; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) { + playerIds_ = java.util.Collections.unmodifiableList(playerIds_); + } + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GameListNewMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GameListNewMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required .NetGameMode gameMode = 2; public static final int GAMEMODE_FIELD_NUMBER = 2; private de.pokerth.protocol.ProtoBuf.NetGameMode gameMode_; + /** + * required .NetGameMode gameMode = 2; + */ public boolean hasGameMode() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .NetGameMode gameMode = 2; + */ public de.pokerth.protocol.ProtoBuf.NetGameMode getGameMode() { return gameMode_; } - + // required bool isPrivate = 3; public static final int ISPRIVATE_FIELD_NUMBER = 3; private boolean isPrivate_; + /** + * required bool isPrivate = 3; + */ public boolean hasIsPrivate() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required bool isPrivate = 3; + */ public boolean getIsPrivate() { return isPrivate_; } - + // repeated uint32 playerIds = 4 [packed = true]; public static final int PLAYERIDS_FIELD_NUMBER = 4; private java.util.List playerIds_; + /** + * repeated uint32 playerIds = 4 [packed = true]; + */ public java.util.List getPlayerIdsList() { return playerIds_; } + /** + * repeated uint32 playerIds = 4 [packed = true]; + */ public int getPlayerIdsCount() { return playerIds_.size(); } + /** + * repeated uint32 playerIds = 4 [packed = true]; + */ public int getPlayerIds(int index) { return playerIds_.get(index); } private int playerIdsMemoizedSerializedSize = -1; - + // required uint32 adminPlayerId = 5; public static final int ADMINPLAYERID_FIELD_NUMBER = 5; private int adminPlayerId_; + /** + * required uint32 adminPlayerId = 5; + */ public boolean hasAdminPlayerId() { return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required uint32 adminPlayerId = 5; + */ public int getAdminPlayerId() { return adminPlayerId_; } - + // required .NetGameInfo gameInfo = 6; public static final int GAMEINFO_FIELD_NUMBER = 6; private de.pokerth.protocol.ProtoBuf.NetGameInfo gameInfo_; + /** + * required .NetGameInfo gameInfo = 6; + */ public boolean hasGameInfo() { return ((bitField0_ & 0x00000010) == 0x00000010); } + /** + * required .NetGameInfo gameInfo = 6; + */ public de.pokerth.protocol.ProtoBuf.NetGameInfo getGameInfo() { return gameInfo_; } - + private void initFields() { gameId_ = 0; gameMode_ = de.pokerth.protocol.ProtoBuf.NetGameMode.netGameCreated; isPrivate_ = false; - playerIds_ = java.util.Collections.emptyList();; + playerIds_ = java.util.Collections.emptyList(); adminPlayerId_ = 0; gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); } @@ -7888,7 +10430,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -7916,7 +10458,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -7943,12 +10485,12 @@ public final class ProtoBuf { output.writeMessage(6, gameInfo_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -7987,88 +10529,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.GameListNewMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameListNewMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListNewMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameListNewMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListNewMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListNewMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListNewMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListNewMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListNewMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListNewMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameListNewMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code GameListNewMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.GameListNewMessage, Builder> @@ -8077,13 +10608,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -8092,7 +10623,7 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); isPrivate_ = false; bitField0_ = (bitField0_ & ~0x00000004); - playerIds_ = java.util.Collections.emptyList();; + playerIds_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000008); adminPlayerId_ = 0; bitField0_ = (bitField0_ & ~0x00000010); @@ -8100,15 +10631,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000020); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.GameListNewMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.GameListNewMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.GameListNewMessage build() { de.pokerth.protocol.ProtoBuf.GameListNewMessage result = buildPartial(); if (!result.isInitialized()) { @@ -8116,17 +10647,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.GameListNewMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GameListNewMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.GameListNewMessage buildPartial() { de.pokerth.protocol.ProtoBuf.GameListNewMessage result = new de.pokerth.protocol.ProtoBuf.GameListNewMessage(this); int from_bitField0_ = bitField0_; @@ -8159,7 +10680,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameListNewMessage other) { if (other == de.pokerth.protocol.ProtoBuf.GameListNewMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -8189,7 +10710,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -8217,21 +10738,362 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.GameListNewMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GameListNewMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required .NetGameMode gameMode = 2; + private de.pokerth.protocol.ProtoBuf.NetGameMode gameMode_ = de.pokerth.protocol.ProtoBuf.NetGameMode.netGameCreated; + /** + * required .NetGameMode gameMode = 2; + */ + public boolean hasGameMode() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .NetGameMode gameMode = 2; + */ + public de.pokerth.protocol.ProtoBuf.NetGameMode getGameMode() { + return gameMode_; + } + /** + * required .NetGameMode gameMode = 2; + */ + public Builder setGameMode(de.pokerth.protocol.ProtoBuf.NetGameMode value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + gameMode_ = value; + + return this; + } + /** + * required .NetGameMode gameMode = 2; + */ + public Builder clearGameMode() { + bitField0_ = (bitField0_ & ~0x00000002); + gameMode_ = de.pokerth.protocol.ProtoBuf.NetGameMode.netGameCreated; + + return this; + } + + // required bool isPrivate = 3; + private boolean isPrivate_ ; + /** + * required bool isPrivate = 3; + */ + public boolean hasIsPrivate() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required bool isPrivate = 3; + */ + public boolean getIsPrivate() { + return isPrivate_; + } + /** + * required bool isPrivate = 3; + */ + public Builder setIsPrivate(boolean value) { + bitField0_ |= 0x00000004; + isPrivate_ = value; + + return this; + } + /** + * required bool isPrivate = 3; + */ + public Builder clearIsPrivate() { + bitField0_ = (bitField0_ & ~0x00000004); + isPrivate_ = false; + + return this; + } + + // repeated uint32 playerIds = 4 [packed = true]; + private java.util.List playerIds_ = java.util.Collections.emptyList(); + private void ensurePlayerIdsIsMutable() { + if (!((bitField0_ & 0x00000008) == 0x00000008)) { + playerIds_ = new java.util.ArrayList(playerIds_); + bitField0_ |= 0x00000008; + } + } + /** + * repeated uint32 playerIds = 4 [packed = true]; + */ + public java.util.List + getPlayerIdsList() { + return java.util.Collections.unmodifiableList(playerIds_); + } + /** + * repeated uint32 playerIds = 4 [packed = true]; + */ + public int getPlayerIdsCount() { + return playerIds_.size(); + } + /** + * repeated uint32 playerIds = 4 [packed = true]; + */ + public int getPlayerIds(int index) { + return playerIds_.get(index); + } + /** + * repeated uint32 playerIds = 4 [packed = true]; + */ + public Builder setPlayerIds( + int index, int value) { + ensurePlayerIdsIsMutable(); + playerIds_.set(index, value); + + return this; + } + /** + * repeated uint32 playerIds = 4 [packed = true]; + */ + public Builder addPlayerIds(int value) { + ensurePlayerIdsIsMutable(); + playerIds_.add(value); + + return this; + } + /** + * repeated uint32 playerIds = 4 [packed = true]; + */ + public Builder addAllPlayerIds( + java.lang.Iterable values) { + ensurePlayerIdsIsMutable(); + super.addAll(values, playerIds_); + + return this; + } + /** + * repeated uint32 playerIds = 4 [packed = true]; + */ + public Builder clearPlayerIds() { + playerIds_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000008); + + return this; + } + + // required uint32 adminPlayerId = 5; + private int adminPlayerId_ ; + /** + * required uint32 adminPlayerId = 5; + */ + public boolean hasAdminPlayerId() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required uint32 adminPlayerId = 5; + */ + public int getAdminPlayerId() { + return adminPlayerId_; + } + /** + * required uint32 adminPlayerId = 5; + */ + public Builder setAdminPlayerId(int value) { + bitField0_ |= 0x00000010; + adminPlayerId_ = value; + + return this; + } + /** + * required uint32 adminPlayerId = 5; + */ + public Builder clearAdminPlayerId() { + bitField0_ = (bitField0_ & ~0x00000010); + adminPlayerId_ = 0; + + return this; + } + + // required .NetGameInfo gameInfo = 6; + private de.pokerth.protocol.ProtoBuf.NetGameInfo gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); + /** + * required .NetGameInfo gameInfo = 6; + */ + public boolean hasGameInfo() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required .NetGameInfo gameInfo = 6; + */ + public de.pokerth.protocol.ProtoBuf.NetGameInfo getGameInfo() { + return gameInfo_; + } + /** + * required .NetGameInfo gameInfo = 6; + */ + public Builder setGameInfo(de.pokerth.protocol.ProtoBuf.NetGameInfo value) { + if (value == null) { + throw new NullPointerException(); + } + gameInfo_ = value; + + bitField0_ |= 0x00000020; + return this; + } + /** + * required .NetGameInfo gameInfo = 6; + */ + public Builder setGameInfo( + de.pokerth.protocol.ProtoBuf.NetGameInfo.Builder builderForValue) { + gameInfo_ = builderForValue.build(); + + bitField0_ |= 0x00000020; + return this; + } + /** + * required .NetGameInfo gameInfo = 6; + */ + public Builder mergeGameInfo(de.pokerth.protocol.ProtoBuf.NetGameInfo value) { + if (((bitField0_ & 0x00000020) == 0x00000020) && + gameInfo_ != de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance()) { + gameInfo_ = + de.pokerth.protocol.ProtoBuf.NetGameInfo.newBuilder(gameInfo_).mergeFrom(value).buildPartial(); + } else { + gameInfo_ = value; + } + + bitField0_ |= 0x00000020; + return this; + } + /** + * required .NetGameInfo gameInfo = 6; + */ + public Builder clearGameInfo() { + gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); + + bitField0_ = (bitField0_ & ~0x00000020); + return this; + } + + // @@protoc_insertion_point(builder_scope:GameListNewMessage) + } + + static { + defaultInstance = new GameListNewMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:GameListNewMessage) + } + + public interface GameListUpdateMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required .NetGameMode gameMode = 2; + /** + * required .NetGameMode gameMode = 2; + */ + boolean hasGameMode(); + /** + * required .NetGameMode gameMode = 2; + */ + de.pokerth.protocol.ProtoBuf.NetGameMode getGameMode(); + } + /** + * Protobuf type {@code GameListUpdateMessage} + */ + public static final class GameListUpdateMessage extends + com.google.protobuf.GeneratedMessageLite + implements GameListUpdateMessageOrBuilder { + // Use GameListUpdateMessage.newBuilder() to construct. + private GameListUpdateMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private GameListUpdateMessage(boolean noInit) {} + + private static final GameListUpdateMessage defaultInstance; + public static GameListUpdateMessage getDefaultInstance() { + return defaultInstance; + } + + public GameListUpdateMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private GameListUpdateMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -8249,281 +11111,65 @@ public final class ProtoBuf { } break; } - case 24: { - bitField0_ |= 0x00000004; - isPrivate_ = input.readBool(); - break; - } - case 32: { - ensurePlayerIdsIsMutable(); - playerIds_.add(input.readUInt32()); - break; - } - case 34: { - int length = input.readRawVarint32(); - int limit = input.pushLimit(length); - while (input.getBytesUntilLimit() > 0) { - addPlayerIds(input.readUInt32()); - } - input.popLimit(limit); - break; - } - case 40: { - bitField0_ |= 0x00000010; - adminPlayerId_ = input.readUInt32(); - break; - } - case 50: { - de.pokerth.protocol.ProtoBuf.NetGameInfo.Builder subBuilder = de.pokerth.protocol.ProtoBuf.NetGameInfo.newBuilder(); - if (hasGameInfo()) { - subBuilder.mergeFrom(getGameInfo()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameInfo(subBuilder.buildPartial()); - break; - } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required .NetGameMode gameMode = 2; - private de.pokerth.protocol.ProtoBuf.NetGameMode gameMode_ = de.pokerth.protocol.ProtoBuf.NetGameMode.netGameCreated; - public boolean hasGameMode() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public de.pokerth.protocol.ProtoBuf.NetGameMode getGameMode() { - return gameMode_; - } - public Builder setGameMode(de.pokerth.protocol.ProtoBuf.NetGameMode value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000002; - gameMode_ = value; - - return this; - } - public Builder clearGameMode() { - bitField0_ = (bitField0_ & ~0x00000002); - gameMode_ = de.pokerth.protocol.ProtoBuf.NetGameMode.netGameCreated; - - return this; - } - - // required bool isPrivate = 3; - private boolean isPrivate_ ; - public boolean hasIsPrivate() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public boolean getIsPrivate() { - return isPrivate_; - } - public Builder setIsPrivate(boolean value) { - bitField0_ |= 0x00000004; - isPrivate_ = value; - - return this; - } - public Builder clearIsPrivate() { - bitField0_ = (bitField0_ & ~0x00000004); - isPrivate_ = false; - - return this; - } - - // repeated uint32 playerIds = 4 [packed = true]; - private java.util.List playerIds_ = java.util.Collections.emptyList();; - private void ensurePlayerIdsIsMutable() { - if (!((bitField0_ & 0x00000008) == 0x00000008)) { - playerIds_ = new java.util.ArrayList(playerIds_); - bitField0_ |= 0x00000008; - } - } - public java.util.List - getPlayerIdsList() { - return java.util.Collections.unmodifiableList(playerIds_); - } - public int getPlayerIdsCount() { - return playerIds_.size(); - } - public int getPlayerIds(int index) { - return playerIds_.get(index); - } - public Builder setPlayerIds( - int index, int value) { - ensurePlayerIdsIsMutable(); - playerIds_.set(index, value); - - return this; - } - public Builder addPlayerIds(int value) { - ensurePlayerIdsIsMutable(); - playerIds_.add(value); - - return this; - } - public Builder addAllPlayerIds( - java.lang.Iterable values) { - ensurePlayerIdsIsMutable(); - super.addAll(values, playerIds_); - - return this; - } - public Builder clearPlayerIds() { - playerIds_ = java.util.Collections.emptyList();; - bitField0_ = (bitField0_ & ~0x00000008); - - return this; - } - - // required uint32 adminPlayerId = 5; - private int adminPlayerId_ ; - public boolean hasAdminPlayerId() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - public int getAdminPlayerId() { - return adminPlayerId_; - } - public Builder setAdminPlayerId(int value) { - bitField0_ |= 0x00000010; - adminPlayerId_ = value; - - return this; - } - public Builder clearAdminPlayerId() { - bitField0_ = (bitField0_ & ~0x00000010); - adminPlayerId_ = 0; - - return this; - } - - // required .NetGameInfo gameInfo = 6; - private de.pokerth.protocol.ProtoBuf.NetGameInfo gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); - public boolean hasGameInfo() { - return ((bitField0_ & 0x00000020) == 0x00000020); - } - public de.pokerth.protocol.ProtoBuf.NetGameInfo getGameInfo() { - return gameInfo_; - } - public Builder setGameInfo(de.pokerth.protocol.ProtoBuf.NetGameInfo value) { - if (value == null) { - throw new NullPointerException(); - } - gameInfo_ = value; - - bitField0_ |= 0x00000020; - return this; - } - public Builder setGameInfo( - de.pokerth.protocol.ProtoBuf.NetGameInfo.Builder builderForValue) { - gameInfo_ = builderForValue.build(); - - bitField0_ |= 0x00000020; - return this; - } - public Builder mergeGameInfo(de.pokerth.protocol.ProtoBuf.NetGameInfo value) { - if (((bitField0_ & 0x00000020) == 0x00000020) && - gameInfo_ != de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance()) { - gameInfo_ = - de.pokerth.protocol.ProtoBuf.NetGameInfo.newBuilder(gameInfo_).mergeFrom(value).buildPartial(); - } else { - gameInfo_ = value; - } - - bitField0_ |= 0x00000020; - return this; - } - public Builder clearGameInfo() { - gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); - - bitField0_ = (bitField0_ & ~0x00000020); - return this; - } - - // @@protoc_insertion_point(builder_scope:GameListNewMessage) } - - static { - defaultInstance = new GameListNewMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GameListUpdateMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GameListUpdateMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:GameListNewMessage) - } - - public interface GameListUpdateMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required .NetGameMode gameMode = 2; - boolean hasGameMode(); - de.pokerth.protocol.ProtoBuf.NetGameMode getGameMode(); - } - public static final class GameListUpdateMessage extends - com.google.protobuf.GeneratedMessageLite - implements GameListUpdateMessageOrBuilder { - // Use GameListUpdateMessage.newBuilder() to construct. - private GameListUpdateMessage(Builder builder) { - super(builder); - } - private GameListUpdateMessage(boolean noInit) {} - - private static final GameListUpdateMessage defaultInstance; - public static GameListUpdateMessage getDefaultInstance() { - return defaultInstance; - } - - public GameListUpdateMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required .NetGameMode gameMode = 2; public static final int GAMEMODE_FIELD_NUMBER = 2; private de.pokerth.protocol.ProtoBuf.NetGameMode gameMode_; + /** + * required .NetGameMode gameMode = 2; + */ public boolean hasGameMode() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .NetGameMode gameMode = 2; + */ public de.pokerth.protocol.ProtoBuf.NetGameMode getGameMode() { return gameMode_; } - + private void initFields() { gameId_ = 0; gameMode_ = de.pokerth.protocol.ProtoBuf.NetGameMode.netGameCreated; @@ -8532,7 +11178,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -8544,7 +11190,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -8555,12 +11201,12 @@ public final class ProtoBuf { output.writeEnum(2, gameMode_.getNumber()); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -8573,88 +11219,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.GameListUpdateMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameListUpdateMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListUpdateMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameListUpdateMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListUpdateMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListUpdateMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListUpdateMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListUpdateMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListUpdateMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListUpdateMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameListUpdateMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code GameListUpdateMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.GameListUpdateMessage, Builder> @@ -8663,13 +11298,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -8678,15 +11313,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.GameListUpdateMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.GameListUpdateMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.GameListUpdateMessage build() { de.pokerth.protocol.ProtoBuf.GameListUpdateMessage result = buildPartial(); if (!result.isInitialized()) { @@ -8694,17 +11329,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.GameListUpdateMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GameListUpdateMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.GameListUpdateMessage buildPartial() { de.pokerth.protocol.ProtoBuf.GameListUpdateMessage result = new de.pokerth.protocol.ProtoBuf.GameListUpdateMessage(this); int from_bitField0_ = bitField0_; @@ -8720,7 +11345,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameListUpdateMessage other) { if (other == de.pokerth.protocol.ProtoBuf.GameListUpdateMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -8731,7 +11356,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -8743,73 +11368,76 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - gameId_ = input.readUInt32(); - break; - } - case 16: { - int rawValue = input.readEnum(); - de.pokerth.protocol.ProtoBuf.NetGameMode value = de.pokerth.protocol.ProtoBuf.NetGameMode.valueOf(rawValue); - if (value != null) { - bitField0_ |= 0x00000002; - gameMode_ = value; - } - break; - } + de.pokerth.protocol.ProtoBuf.GameListUpdateMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GameListUpdateMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // required .NetGameMode gameMode = 2; private de.pokerth.protocol.ProtoBuf.NetGameMode gameMode_ = de.pokerth.protocol.ProtoBuf.NetGameMode.netGameCreated; + /** + * required .NetGameMode gameMode = 2; + */ public boolean hasGameMode() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .NetGameMode gameMode = 2; + */ public de.pokerth.protocol.ProtoBuf.NetGameMode getGameMode() { return gameMode_; } + /** + * required .NetGameMode gameMode = 2; + */ public Builder setGameMode(de.pokerth.protocol.ProtoBuf.NetGameMode value) { if (value == null) { throw new NullPointerException(); @@ -8819,74 +11447,162 @@ public final class ProtoBuf { return this; } + /** + * required .NetGameMode gameMode = 2; + */ public Builder clearGameMode() { bitField0_ = (bitField0_ & ~0x00000002); gameMode_ = de.pokerth.protocol.ProtoBuf.NetGameMode.netGameCreated; return this; } - + // @@protoc_insertion_point(builder_scope:GameListUpdateMessage) } - + static { defaultInstance = new GameListUpdateMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:GameListUpdateMessage) } - + public interface GameListPlayerJoinedMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ int getPlayerId(); } + /** + * Protobuf type {@code GameListPlayerJoinedMessage} + */ public static final class GameListPlayerJoinedMessage extends com.google.protobuf.GeneratedMessageLite implements GameListPlayerJoinedMessageOrBuilder { // Use GameListPlayerJoinedMessage.newBuilder() to construct. - private GameListPlayerJoinedMessage(Builder builder) { + private GameListPlayerJoinedMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private GameListPlayerJoinedMessage(boolean noInit) {} - + private static final GameListPlayerJoinedMessage defaultInstance; public static GameListPlayerJoinedMessage getDefaultInstance() { return defaultInstance; } - + public GameListPlayerJoinedMessage getDefaultInstanceForType() { return defaultInstance; } - + + private GameListPlayerJoinedMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + gameId_ = input.readUInt32(); + break; + } + case 16: { + bitField0_ |= 0x00000002; + playerId_ = input.readUInt32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GameListPlayerJoinedMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GameListPlayerJoinedMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 playerId = 2; public static final int PLAYERID_FIELD_NUMBER = 2; private int playerId_; + /** + * required uint32 playerId = 2; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 playerId = 2; + */ public int getPlayerId() { return playerId_; } - + private void initFields() { gameId_ = 0; playerId_ = 0; @@ -8895,7 +11611,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -8907,7 +11623,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -8918,12 +11634,12 @@ public final class ProtoBuf { output.writeUInt32(2, playerId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -8936,88 +11652,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code GameListPlayerJoinedMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage, Builder> @@ -9026,13 +11731,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -9041,15 +11746,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage build() { de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage result = buildPartial(); if (!result.isInitialized()) { @@ -9057,17 +11762,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage buildPartial() { de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage result = new de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage(this); int from_bitField0_ = bitField0_; @@ -9083,7 +11778,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage other) { if (other == de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -9094,7 +11789,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -9106,21 +11801,166 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:GameListPlayerJoinedMessage) + } + + static { + defaultInstance = new GameListPlayerJoinedMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:GameListPlayerJoinedMessage) + } + + public interface GameListPlayerLeftMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ + boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ + int getPlayerId(); + } + /** + * Protobuf type {@code GameListPlayerLeftMessage} + */ + public static final class GameListPlayerLeftMessage extends + com.google.protobuf.GeneratedMessageLite + implements GameListPlayerLeftMessageOrBuilder { + // Use GameListPlayerLeftMessage.newBuilder() to construct. + private GameListPlayerLeftMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private GameListPlayerLeftMessage(boolean noInit) {} + + private static final GameListPlayerLeftMessage defaultInstance; + public static GameListPlayerLeftMessage getDefaultInstance() { + return defaultInstance; + } + + public GameListPlayerLeftMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private GameListPlayerLeftMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -9136,113 +11976,63 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:GameListPlayerJoinedMessage) } - - static { - defaultInstance = new GameListPlayerJoinedMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GameListPlayerLeftMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GameListPlayerLeftMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:GameListPlayerJoinedMessage) - } - - public interface GameListPlayerLeftMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 playerId = 2; - boolean hasPlayerId(); - int getPlayerId(); - } - public static final class GameListPlayerLeftMessage extends - com.google.protobuf.GeneratedMessageLite - implements GameListPlayerLeftMessageOrBuilder { - // Use GameListPlayerLeftMessage.newBuilder() to construct. - private GameListPlayerLeftMessage(Builder builder) { - super(builder); - } - private GameListPlayerLeftMessage(boolean noInit) {} - - private static final GameListPlayerLeftMessage defaultInstance; - public static GameListPlayerLeftMessage getDefaultInstance() { - return defaultInstance; - } - - public GameListPlayerLeftMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 playerId = 2; public static final int PLAYERID_FIELD_NUMBER = 2; private int playerId_; + /** + * required uint32 playerId = 2; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 playerId = 2; + */ public int getPlayerId() { return playerId_; } - + private void initFields() { gameId_ = 0; playerId_ = 0; @@ -9251,7 +12041,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -9263,7 +12053,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -9274,12 +12064,12 @@ public final class ProtoBuf { output.writeUInt32(2, playerId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -9292,88 +12082,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code GameListPlayerLeftMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage, Builder> @@ -9382,13 +12161,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -9397,15 +12176,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage build() { de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage result = buildPartial(); if (!result.isInitialized()) { @@ -9413,17 +12192,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage buildPartial() { de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage result = new de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage(this); int from_bitField0_ = bitField0_; @@ -9439,7 +12208,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage other) { if (other == de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -9450,7 +12219,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -9462,21 +12231,166 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:GameListPlayerLeftMessage) + } + + static { + defaultInstance = new GameListPlayerLeftMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:GameListPlayerLeftMessage) + } + + public interface GameListSpectatorJoinedMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ + boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ + int getPlayerId(); + } + /** + * Protobuf type {@code GameListSpectatorJoinedMessage} + */ + public static final class GameListSpectatorJoinedMessage extends + com.google.protobuf.GeneratedMessageLite + implements GameListSpectatorJoinedMessageOrBuilder { + // Use GameListSpectatorJoinedMessage.newBuilder() to construct. + private GameListSpectatorJoinedMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private GameListSpectatorJoinedMessage(boolean noInit) {} + + private static final GameListSpectatorJoinedMessage defaultInstance; + public static GameListSpectatorJoinedMessage getDefaultInstance() { + return defaultInstance; + } + + public GameListSpectatorJoinedMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private GameListSpectatorJoinedMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -9492,113 +12406,63 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:GameListPlayerLeftMessage) } - - static { - defaultInstance = new GameListPlayerLeftMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GameListSpectatorJoinedMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GameListSpectatorJoinedMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:GameListPlayerLeftMessage) - } - - public interface GameListSpectatorJoinedMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 playerId = 2; - boolean hasPlayerId(); - int getPlayerId(); - } - public static final class GameListSpectatorJoinedMessage extends - com.google.protobuf.GeneratedMessageLite - implements GameListSpectatorJoinedMessageOrBuilder { - // Use GameListSpectatorJoinedMessage.newBuilder() to construct. - private GameListSpectatorJoinedMessage(Builder builder) { - super(builder); - } - private GameListSpectatorJoinedMessage(boolean noInit) {} - - private static final GameListSpectatorJoinedMessage defaultInstance; - public static GameListSpectatorJoinedMessage getDefaultInstance() { - return defaultInstance; - } - - public GameListSpectatorJoinedMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 playerId = 2; public static final int PLAYERID_FIELD_NUMBER = 2; private int playerId_; + /** + * required uint32 playerId = 2; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 playerId = 2; + */ public int getPlayerId() { return playerId_; } - + private void initFields() { gameId_ = 0; playerId_ = 0; @@ -9607,7 +12471,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -9619,7 +12483,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -9630,12 +12494,12 @@ public final class ProtoBuf { output.writeUInt32(2, playerId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -9648,88 +12512,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code GameListSpectatorJoinedMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage, Builder> @@ -9738,13 +12591,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -9753,15 +12606,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage build() { de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage result = buildPartial(); if (!result.isInitialized()) { @@ -9769,17 +12622,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage buildPartial() { de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage result = new de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage(this); int from_bitField0_ = bitField0_; @@ -9795,7 +12638,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage other) { if (other == de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -9806,7 +12649,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -9818,21 +12661,166 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:GameListSpectatorJoinedMessage) + } + + static { + defaultInstance = new GameListSpectatorJoinedMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:GameListSpectatorJoinedMessage) + } + + public interface GameListSpectatorLeftMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ + boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ + int getPlayerId(); + } + /** + * Protobuf type {@code GameListSpectatorLeftMessage} + */ + public static final class GameListSpectatorLeftMessage extends + com.google.protobuf.GeneratedMessageLite + implements GameListSpectatorLeftMessageOrBuilder { + // Use GameListSpectatorLeftMessage.newBuilder() to construct. + private GameListSpectatorLeftMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private GameListSpectatorLeftMessage(boolean noInit) {} + + private static final GameListSpectatorLeftMessage defaultInstance; + public static GameListSpectatorLeftMessage getDefaultInstance() { + return defaultInstance; + } + + public GameListSpectatorLeftMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private GameListSpectatorLeftMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -9848,113 +12836,63 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:GameListSpectatorJoinedMessage) } - - static { - defaultInstance = new GameListSpectatorJoinedMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GameListSpectatorLeftMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GameListSpectatorLeftMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:GameListSpectatorJoinedMessage) - } - - public interface GameListSpectatorLeftMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 playerId = 2; - boolean hasPlayerId(); - int getPlayerId(); - } - public static final class GameListSpectatorLeftMessage extends - com.google.protobuf.GeneratedMessageLite - implements GameListSpectatorLeftMessageOrBuilder { - // Use GameListSpectatorLeftMessage.newBuilder() to construct. - private GameListSpectatorLeftMessage(Builder builder) { - super(builder); - } - private GameListSpectatorLeftMessage(boolean noInit) {} - - private static final GameListSpectatorLeftMessage defaultInstance; - public static GameListSpectatorLeftMessage getDefaultInstance() { - return defaultInstance; - } - - public GameListSpectatorLeftMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 playerId = 2; public static final int PLAYERID_FIELD_NUMBER = 2; private int playerId_; + /** + * required uint32 playerId = 2; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 playerId = 2; + */ public int getPlayerId() { return playerId_; } - + private void initFields() { gameId_ = 0; playerId_ = 0; @@ -9963,7 +12901,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -9975,7 +12913,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -9986,12 +12924,12 @@ public final class ProtoBuf { output.writeUInt32(2, playerId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -10004,88 +12942,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code GameListSpectatorLeftMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage, Builder> @@ -10094,13 +13021,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -10109,15 +13036,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage build() { de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage result = buildPartial(); if (!result.isInitialized()) { @@ -10125,17 +13052,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage buildPartial() { de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage result = new de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage(this); int from_bitField0_ = bitField0_; @@ -10151,7 +13068,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage other) { if (other == de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -10162,7 +13079,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -10174,377 +13091,166 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - gameId_ = input.readUInt32(); - break; - } - case 16: { - bitField0_ |= 0x00000002; - playerId_ = input.readUInt32(); - break; - } + de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // required uint32 playerId = 2; private int playerId_ ; + /** + * required uint32 playerId = 2; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 playerId = 2; + */ public int getPlayerId() { return playerId_; } + /** + * required uint32 playerId = 2; + */ public Builder setPlayerId(int value) { bitField0_ |= 0x00000002; playerId_ = value; return this; } + /** + * required uint32 playerId = 2; + */ public Builder clearPlayerId() { bitField0_ = (bitField0_ & ~0x00000002); playerId_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:GameListSpectatorLeftMessage) } - + static { defaultInstance = new GameListSpectatorLeftMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:GameListSpectatorLeftMessage) } - + public interface GameListAdminChangedMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // required uint32 newAdminPlayerId = 2; + /** + * required uint32 newAdminPlayerId = 2; + */ boolean hasNewAdminPlayerId(); + /** + * required uint32 newAdminPlayerId = 2; + */ int getNewAdminPlayerId(); } + /** + * Protobuf type {@code GameListAdminChangedMessage} + */ public static final class GameListAdminChangedMessage extends com.google.protobuf.GeneratedMessageLite implements GameListAdminChangedMessageOrBuilder { // Use GameListAdminChangedMessage.newBuilder() to construct. - private GameListAdminChangedMessage(Builder builder) { + private GameListAdminChangedMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private GameListAdminChangedMessage(boolean noInit) {} - + private static final GameListAdminChangedMessage defaultInstance; public static GameListAdminChangedMessage getDefaultInstance() { return defaultInstance; } - + public GameListAdminChangedMessage getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required uint32 gameId = 1; - public static final int GAMEID_FIELD_NUMBER = 1; - private int gameId_; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - - // required uint32 newAdminPlayerId = 2; - public static final int NEWADMINPLAYERID_FIELD_NUMBER = 2; - private int newAdminPlayerId_; - public boolean hasNewAdminPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getNewAdminPlayerId() { - return newAdminPlayerId_; - } - - private void initFields() { - gameId_ = 0; - newAdminPlayerId_ = 0; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasGameId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasNewAdminPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, newAdminPlayerId_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, newAdminPlayerId_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom( + + private GameListAdminChangedMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - gameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - newAdminPlayerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage build() { - de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage result = new de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.gameId_ = gameId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.newAdminPlayerId_ = newAdminPlayerId_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.getDefaultInstance()) return this; - if (other.hasGameId()) { - setGameId(other.getGameId()); - } - if (other.hasNewAdminPlayerId()) { - setNewAdminPlayerId(other.getNewAdminPlayerId()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasGameId()) { - - return false; - } - if (!hasNewAdminPlayerId()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -10560,116 +13266,504 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GameListAdminChangedMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GameListAdminChangedMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required uint32 gameId = 1; + public static final int GAMEID_FIELD_NUMBER = 1; + private int gameId_; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + + // required uint32 newAdminPlayerId = 2; + public static final int NEWADMINPLAYERID_FIELD_NUMBER = 2; + private int newAdminPlayerId_; + /** + * required uint32 newAdminPlayerId = 2; + */ + public boolean hasNewAdminPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 newAdminPlayerId = 2; + */ + public int getNewAdminPlayerId() { + return newAdminPlayerId_; + } + + private void initFields() { + gameId_ = 0; + newAdminPlayerId_ = 0; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasGameId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasNewAdminPlayerId()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, newAdminPlayerId_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, newAdminPlayerId_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code GameListAdminChangedMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + gameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + newAdminPlayerId_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage build() { + de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage result = new de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.gameId_ = gameId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.newAdminPlayerId_ = newAdminPlayerId_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.getDefaultInstance()) return this; + if (other.hasGameId()) { + setGameId(other.getGameId()); + } + if (other.hasNewAdminPlayerId()) { + setNewAdminPlayerId(other.getNewAdminPlayerId()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasGameId()) { + + return false; + } + if (!hasNewAdminPlayerId()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // required uint32 newAdminPlayerId = 2; private int newAdminPlayerId_ ; + /** + * required uint32 newAdminPlayerId = 2; + */ public boolean hasNewAdminPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 newAdminPlayerId = 2; + */ public int getNewAdminPlayerId() { return newAdminPlayerId_; } + /** + * required uint32 newAdminPlayerId = 2; + */ public Builder setNewAdminPlayerId(int value) { bitField0_ |= 0x00000002; newAdminPlayerId_ = value; return this; } + /** + * required uint32 newAdminPlayerId = 2; + */ public Builder clearNewAdminPlayerId() { bitField0_ = (bitField0_ & ~0x00000002); newAdminPlayerId_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:GameListAdminChangedMessage) } - + static { defaultInstance = new GameListAdminChangedMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:GameListAdminChangedMessage) } - + public interface PlayerInfoRequestMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // repeated uint32 playerId = 1 [packed = true]; + /** + * repeated uint32 playerId = 1 [packed = true]; + */ java.util.List getPlayerIdList(); + /** + * repeated uint32 playerId = 1 [packed = true]; + */ int getPlayerIdCount(); + /** + * repeated uint32 playerId = 1 [packed = true]; + */ int getPlayerId(int index); } + /** + * Protobuf type {@code PlayerInfoRequestMessage} + */ public static final class PlayerInfoRequestMessage extends com.google.protobuf.GeneratedMessageLite implements PlayerInfoRequestMessageOrBuilder { // Use PlayerInfoRequestMessage.newBuilder() to construct. - private PlayerInfoRequestMessage(Builder builder) { + private PlayerInfoRequestMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private PlayerInfoRequestMessage(boolean noInit) {} - + private static final PlayerInfoRequestMessage defaultInstance; public static PlayerInfoRequestMessage getDefaultInstance() { return defaultInstance; } - + public PlayerInfoRequestMessage getDefaultInstanceForType() { return defaultInstance; } - + + private PlayerInfoRequestMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + playerId_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + playerId_.add(input.readUInt32()); + break; + } + case 10: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) { + playerId_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + while (input.getBytesUntilLimit() > 0) { + playerId_.add(input.readUInt32()); + } + input.popLimit(limit); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + playerId_ = java.util.Collections.unmodifiableList(playerId_); + } + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PlayerInfoRequestMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PlayerInfoRequestMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + // repeated uint32 playerId = 1 [packed = true]; public static final int PLAYERID_FIELD_NUMBER = 1; private java.util.List playerId_; + /** + * repeated uint32 playerId = 1 [packed = true]; + */ public java.util.List getPlayerIdList() { return playerId_; } + /** + * repeated uint32 playerId = 1 [packed = true]; + */ public int getPlayerIdCount() { return playerId_.size(); } + /** + * repeated uint32 playerId = 1 [packed = true]; + */ public int getPlayerId(int index) { return playerId_.get(index); } private int playerIdMemoizedSerializedSize = -1; - + private void initFields() { - playerId_ = java.util.Collections.emptyList();; + playerId_ = java.util.Collections.emptyList(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -10681,12 +13775,12 @@ public final class ProtoBuf { output.writeUInt32NoTag(playerId_.get(i)); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; { int dataSize = 0; @@ -10705,88 +13799,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code PlayerInfoRequestMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage, Builder> @@ -10795,28 +13878,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); - playerId_ = java.util.Collections.emptyList();; + playerId_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage build() { de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage result = buildPartial(); if (!result.isInitialized()) { @@ -10824,17 +13907,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage buildPartial() { de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage result = new de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage(this); int from_bitField0_ = bitField0_; @@ -10845,7 +13918,7 @@ public final class ProtoBuf { result.playerId_ = playerId_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage other) { if (other == de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage.getDefaultInstance()) return this; if (!other.playerId_.isEmpty()) { @@ -10860,66 +13933,60 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - ensurePlayerIdIsMutable(); - playerId_.add(input.readUInt32()); - break; - } - case 10: { - int length = input.readRawVarint32(); - int limit = input.pushLimit(length); - while (input.getBytesUntilLimit() > 0) { - addPlayerId(input.readUInt32()); - } - input.popLimit(limit); - break; - } + de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // repeated uint32 playerId = 1 [packed = true]; - private java.util.List playerId_ = java.util.Collections.emptyList();; + private java.util.List playerId_ = java.util.Collections.emptyList(); private void ensurePlayerIdIsMutable() { if (!((bitField0_ & 0x00000001) == 0x00000001)) { playerId_ = new java.util.ArrayList(playerId_); bitField0_ |= 0x00000001; } } + /** + * repeated uint32 playerId = 1 [packed = true]; + */ public java.util.List getPlayerIdList() { return java.util.Collections.unmodifiableList(playerId_); } + /** + * repeated uint32 playerId = 1 [packed = true]; + */ public int getPlayerIdCount() { return playerId_.size(); } + /** + * repeated uint32 playerId = 1 [packed = true]; + */ public int getPlayerId(int index) { return playerId_.get(index); } + /** + * repeated uint32 playerId = 1 [packed = true]; + */ public Builder setPlayerId( int index, int value) { ensurePlayerIdIsMutable(); @@ -10927,12 +13994,18 @@ public final class ProtoBuf { return this; } + /** + * repeated uint32 playerId = 1 [packed = true]; + */ public Builder addPlayerId(int value) { ensurePlayerIdIsMutable(); playerId_.add(value); return this; } + /** + * repeated uint32 playerId = 1 [packed = true]; + */ public Builder addAllPlayerId( java.lang.Iterable values) { ensurePlayerIdIsMutable(); @@ -10940,860 +14013,240 @@ public final class ProtoBuf { return this; } + /** + * repeated uint32 playerId = 1 [packed = true]; + */ public Builder clearPlayerId() { - playerId_ = java.util.Collections.emptyList();; + playerId_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); return this; } - + // @@protoc_insertion_point(builder_scope:PlayerInfoRequestMessage) } - + static { defaultInstance = new PlayerInfoRequestMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:PlayerInfoRequestMessage) } - + public interface PlayerInfoReplyMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 playerId = 1; + /** + * required uint32 playerId = 1; + */ boolean hasPlayerId(); + /** + * required uint32 playerId = 1; + */ int getPlayerId(); - + // optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; + */ boolean hasPlayerInfoData(); + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; + */ de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData getPlayerInfoData(); } + /** + * Protobuf type {@code PlayerInfoReplyMessage} + */ public static final class PlayerInfoReplyMessage extends com.google.protobuf.GeneratedMessageLite implements PlayerInfoReplyMessageOrBuilder { // Use PlayerInfoReplyMessage.newBuilder() to construct. - private PlayerInfoReplyMessage(Builder builder) { + private PlayerInfoReplyMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private PlayerInfoReplyMessage(boolean noInit) {} - + private static final PlayerInfoReplyMessage defaultInstance; public static PlayerInfoReplyMessage getDefaultInstance() { return defaultInstance; } - + public PlayerInfoReplyMessage getDefaultInstanceForType() { return defaultInstance; } - + + private PlayerInfoReplyMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + playerId_ = input.readUInt32(); + break; + } + case 18: { + de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = playerInfoData_.toBuilder(); + } + playerInfoData_ = input.readMessage(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(playerInfoData_); + playerInfoData_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PlayerInfoReplyMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PlayerInfoReplyMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + public interface PlayerInfoDataOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required string playerName = 1; + /** + * required string playerName = 1; + */ boolean hasPlayerName(); - String getPlayerName(); - + /** + * required string playerName = 1; + */ + java.lang.String getPlayerName(); + /** + * required string playerName = 1; + */ + com.google.protobuf.ByteString + getPlayerNameBytes(); + // required bool isHuman = 2; + /** + * required bool isHuman = 2; + */ boolean hasIsHuman(); + /** + * required bool isHuman = 2; + */ boolean getIsHuman(); - + // required .NetPlayerInfoRights playerRights = 3; + /** + * required .NetPlayerInfoRights playerRights = 3; + */ boolean hasPlayerRights(); + /** + * required .NetPlayerInfoRights playerRights = 3; + */ de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights getPlayerRights(); - + // optional string countryCode = 4; + /** + * optional string countryCode = 4; + */ boolean hasCountryCode(); - String getCountryCode(); - + /** + * optional string countryCode = 4; + */ + java.lang.String getCountryCode(); + /** + * optional string countryCode = 4; + */ + com.google.protobuf.ByteString + getCountryCodeBytes(); + // optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; + */ boolean hasAvatarData(); + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; + */ de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData getAvatarData(); } + /** + * Protobuf type {@code PlayerInfoReplyMessage.PlayerInfoData} + */ public static final class PlayerInfoData extends com.google.protobuf.GeneratedMessageLite implements PlayerInfoDataOrBuilder { // Use PlayerInfoData.newBuilder() to construct. - private PlayerInfoData(Builder builder) { + private PlayerInfoData(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private PlayerInfoData(boolean noInit) {} - + private static final PlayerInfoData defaultInstance; public static PlayerInfoData getDefaultInstance() { return defaultInstance; } - + public PlayerInfoData getDefaultInstanceForType() { return defaultInstance; } - - public interface AvatarDataOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required .NetAvatarType avatarType = 1; - boolean hasAvatarType(); - de.pokerth.protocol.ProtoBuf.NetAvatarType getAvatarType(); - - // required bytes avatarHash = 2; - boolean hasAvatarHash(); - com.google.protobuf.ByteString getAvatarHash(); - } - public static final class AvatarData extends - com.google.protobuf.GeneratedMessageLite - implements AvatarDataOrBuilder { - // Use AvatarData.newBuilder() to construct. - private AvatarData(Builder builder) { - super(builder); - } - private AvatarData(boolean noInit) {} - - private static final AvatarData defaultInstance; - public static AvatarData getDefaultInstance() { - return defaultInstance; - } - - public AvatarData getDefaultInstanceForType() { - return defaultInstance; - } - - private int bitField0_; - // required .NetAvatarType avatarType = 1; - public static final int AVATARTYPE_FIELD_NUMBER = 1; - private de.pokerth.protocol.ProtoBuf.NetAvatarType avatarType_; - public boolean hasAvatarType() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public de.pokerth.protocol.ProtoBuf.NetAvatarType getAvatarType() { - return avatarType_; - } - - // required bytes avatarHash = 2; - public static final int AVATARHASH_FIELD_NUMBER = 2; - private com.google.protobuf.ByteString avatarHash_; - public boolean hasAvatarHash() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public com.google.protobuf.ByteString getAvatarHash() { - return avatarHash_; - } - - private void initFields() { - avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; - avatarHash_ = com.google.protobuf.ByteString.EMPTY; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasAvatarType()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasAvatarHash()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeEnum(1, avatarType_.getNumber()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeBytes(2, avatarHash_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(1, avatarType_.getNumber()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(2, avatarHash_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData, Builder> - implements de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarDataOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; - bitField0_ = (bitField0_ & ~0x00000001); - avatarHash_ = com.google.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData build() { - de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData buildPartial() { - de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData result = new de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.avatarType_ = avatarType_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.avatarHash_ = avatarHash_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData other) { - if (other == de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.getDefaultInstance()) return this; - if (other.hasAvatarType()) { - setAvatarType(other.getAvatarType()); - } - if (other.hasAvatarHash()) { - setAvatarHash(other.getAvatarHash()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasAvatarType()) { - - return false; - } - if (!hasAvatarHash()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - int rawValue = input.readEnum(); - de.pokerth.protocol.ProtoBuf.NetAvatarType value = de.pokerth.protocol.ProtoBuf.NetAvatarType.valueOf(rawValue); - if (value != null) { - bitField0_ |= 0x00000001; - avatarType_ = value; - } - break; - } - case 18: { - bitField0_ |= 0x00000002; - avatarHash_ = input.readBytes(); - break; - } - } - } - } - - private int bitField0_; - - // required .NetAvatarType avatarType = 1; - private de.pokerth.protocol.ProtoBuf.NetAvatarType avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; - public boolean hasAvatarType() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public de.pokerth.protocol.ProtoBuf.NetAvatarType getAvatarType() { - return avatarType_; - } - public Builder setAvatarType(de.pokerth.protocol.ProtoBuf.NetAvatarType value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - avatarType_ = value; - - return this; - } - public Builder clearAvatarType() { - bitField0_ = (bitField0_ & ~0x00000001); - avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; - - return this; - } - - // required bytes avatarHash = 2; - private com.google.protobuf.ByteString avatarHash_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasAvatarHash() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public com.google.protobuf.ByteString getAvatarHash() { - return avatarHash_; - } - public Builder setAvatarHash(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000002; - avatarHash_ = value; - - return this; - } - public Builder clearAvatarHash() { - bitField0_ = (bitField0_ & ~0x00000002); - avatarHash_ = getDefaultInstance().getAvatarHash(); - - return this; - } - - // @@protoc_insertion_point(builder_scope:PlayerInfoReplyMessage.PlayerInfoData.AvatarData) - } - - static { - defaultInstance = new AvatarData(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:PlayerInfoReplyMessage.PlayerInfoData.AvatarData) - } - - private int bitField0_; - // required string playerName = 1; - public static final int PLAYERNAME_FIELD_NUMBER = 1; - private java.lang.Object playerName_; - public boolean hasPlayerName() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getPlayerName() { - java.lang.Object ref = playerName_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - playerName_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getPlayerNameBytes() { - java.lang.Object ref = playerName_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - playerName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // required bool isHuman = 2; - public static final int ISHUMAN_FIELD_NUMBER = 2; - private boolean isHuman_; - public boolean hasIsHuman() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public boolean getIsHuman() { - return isHuman_; - } - - // required .NetPlayerInfoRights playerRights = 3; - public static final int PLAYERRIGHTS_FIELD_NUMBER = 3; - private de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights playerRights_; - public boolean hasPlayerRights() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights getPlayerRights() { - return playerRights_; - } - - // optional string countryCode = 4; - public static final int COUNTRYCODE_FIELD_NUMBER = 4; - private java.lang.Object countryCode_; - public boolean hasCountryCode() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public String getCountryCode() { - java.lang.Object ref = countryCode_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - countryCode_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getCountryCodeBytes() { - java.lang.Object ref = countryCode_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - countryCode_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; - public static final int AVATARDATA_FIELD_NUMBER = 5; - private de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData_; - public boolean hasAvatarData() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData getAvatarData() { - return avatarData_; - } - - private void initFields() { - playerName_ = ""; - isHuman_ = false; - playerRights_ = de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights.netPlayerRightsGuest; - countryCode_ = ""; - avatarData_ = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.getDefaultInstance(); - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasPlayerName()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasIsHuman()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPlayerRights()) { - memoizedIsInitialized = 0; - return false; - } - if (hasAvatarData()) { - if (!getAvatarData().isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeBytes(1, getPlayerNameBytes()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeBool(2, isHuman_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeEnum(3, playerRights_.getNumber()); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeBytes(4, getCountryCodeBytes()); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - output.writeMessage(5, avatarData_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(1, getPlayerNameBytes()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(2, isHuman_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(3, playerRights_.getNumber()); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(4, getCountryCodeBytes()); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(5, avatarData_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom( + + private PlayerInfoData( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData, Builder> - implements de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoDataOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - playerName_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - isHuman_ = false; - bitField0_ = (bitField0_ & ~0x00000002); - playerRights_ = de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights.netPlayerRightsGuest; - bitField0_ = (bitField0_ & ~0x00000004); - countryCode_ = ""; - bitField0_ = (bitField0_ & ~0x00000008); - avatarData_ = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.getDefaultInstance(); - bitField0_ = (bitField0_ & ~0x00000010); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData build() { - de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData buildPartial() { - de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData result = new de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.playerName_ = playerName_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.isHuman_ = isHuman_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.playerRights_ = playerRights_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.countryCode_ = countryCode_; - if (((from_bitField0_ & 0x00000010) == 0x00000010)) { - to_bitField0_ |= 0x00000010; - } - result.avatarData_ = avatarData_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData other) { - if (other == de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.getDefaultInstance()) return this; - if (other.hasPlayerName()) { - setPlayerName(other.getPlayerName()); - } - if (other.hasIsHuman()) { - setIsHuman(other.getIsHuman()); - } - if (other.hasPlayerRights()) { - setPlayerRights(other.getPlayerRights()); - } - if (other.hasCountryCode()) { - setCountryCode(other.getCountryCode()); - } - if (other.hasAvatarData()) { - mergeAvatarData(other.getAvatarData()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasPlayerName()) { - - return false; - } - if (!hasIsHuman()) { - - return false; - } - if (!hasPlayerRights()) { - - return false; - } - if (hasAvatarData()) { - if (!getAvatarData().isInitialized()) { - - return false; - } - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -11822,36 +14275,955 @@ public final class ProtoBuf { break; } case 42: { - de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.Builder subBuilder = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.newBuilder(); - if (hasAvatarData()) { - subBuilder.mergeFrom(getAvatarData()); + de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.Builder subBuilder = null; + if (((bitField0_ & 0x00000010) == 0x00000010)) { + subBuilder = avatarData_.toBuilder(); } - input.readMessage(subBuilder, extensionRegistry); - setAvatarData(subBuilder.buildPartial()); + avatarData_ = input.readMessage(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(avatarData_); + avatarData_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000010; break; } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PlayerInfoData parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PlayerInfoData(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public interface AvatarDataOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required .NetAvatarType avatarType = 1; + /** + * required .NetAvatarType avatarType = 1; + */ + boolean hasAvatarType(); + /** + * required .NetAvatarType avatarType = 1; + */ + de.pokerth.protocol.ProtoBuf.NetAvatarType getAvatarType(); + + // required bytes avatarHash = 2; + /** + * required bytes avatarHash = 2; + */ + boolean hasAvatarHash(); + /** + * required bytes avatarHash = 2; + */ + com.google.protobuf.ByteString getAvatarHash(); + } + /** + * Protobuf type {@code PlayerInfoReplyMessage.PlayerInfoData.AvatarData} + */ + public static final class AvatarData extends + com.google.protobuf.GeneratedMessageLite + implements AvatarDataOrBuilder { + // Use AvatarData.newBuilder() to construct. + private AvatarData(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private AvatarData(boolean noInit) {} + + private static final AvatarData defaultInstance; + public static AvatarData getDefaultInstance() { + return defaultInstance; + } + + public AvatarData getDefaultInstanceForType() { + return defaultInstance; + } + + private AvatarData( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + int rawValue = input.readEnum(); + de.pokerth.protocol.ProtoBuf.NetAvatarType value = de.pokerth.protocol.ProtoBuf.NetAvatarType.valueOf(rawValue); + if (value != null) { + bitField0_ |= 0x00000001; + avatarType_ = value; + } + break; + } + case 18: { + bitField0_ |= 0x00000002; + avatarHash_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AvatarData parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AvatarData(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; - + // required .NetAvatarType avatarType = 1; + public static final int AVATARTYPE_FIELD_NUMBER = 1; + private de.pokerth.protocol.ProtoBuf.NetAvatarType avatarType_; + /** + * required .NetAvatarType avatarType = 1; + */ + public boolean hasAvatarType() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .NetAvatarType avatarType = 1; + */ + public de.pokerth.protocol.ProtoBuf.NetAvatarType getAvatarType() { + return avatarType_; + } + + // required bytes avatarHash = 2; + public static final int AVATARHASH_FIELD_NUMBER = 2; + private com.google.protobuf.ByteString avatarHash_; + /** + * required bytes avatarHash = 2; + */ + public boolean hasAvatarHash() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bytes avatarHash = 2; + */ + public com.google.protobuf.ByteString getAvatarHash() { + return avatarHash_; + } + + private void initFields() { + avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; + avatarHash_ = com.google.protobuf.ByteString.EMPTY; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasAvatarType()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasAvatarHash()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeEnum(1, avatarType_.getNumber()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, avatarHash_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, avatarType_.getNumber()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(2, avatarHash_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code PlayerInfoReplyMessage.PlayerInfoData.AvatarData} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData, Builder> + implements de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarDataOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; + bitField0_ = (bitField0_ & ~0x00000001); + avatarHash_ = com.google.protobuf.ByteString.EMPTY; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData build() { + de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData buildPartial() { + de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData result = new de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.avatarType_ = avatarType_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.avatarHash_ = avatarHash_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData other) { + if (other == de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.getDefaultInstance()) return this; + if (other.hasAvatarType()) { + setAvatarType(other.getAvatarType()); + } + if (other.hasAvatarHash()) { + setAvatarHash(other.getAvatarHash()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasAvatarType()) { + + return false; + } + if (!hasAvatarHash()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required .NetAvatarType avatarType = 1; + private de.pokerth.protocol.ProtoBuf.NetAvatarType avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; + /** + * required .NetAvatarType avatarType = 1; + */ + public boolean hasAvatarType() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .NetAvatarType avatarType = 1; + */ + public de.pokerth.protocol.ProtoBuf.NetAvatarType getAvatarType() { + return avatarType_; + } + /** + * required .NetAvatarType avatarType = 1; + */ + public Builder setAvatarType(de.pokerth.protocol.ProtoBuf.NetAvatarType value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + avatarType_ = value; + + return this; + } + /** + * required .NetAvatarType avatarType = 1; + */ + public Builder clearAvatarType() { + bitField0_ = (bitField0_ & ~0x00000001); + avatarType_ = de.pokerth.protocol.ProtoBuf.NetAvatarType.netAvatarImagePng; + + return this; + } + + // required bytes avatarHash = 2; + private com.google.protobuf.ByteString avatarHash_ = com.google.protobuf.ByteString.EMPTY; + /** + * required bytes avatarHash = 2; + */ + public boolean hasAvatarHash() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bytes avatarHash = 2; + */ + public com.google.protobuf.ByteString getAvatarHash() { + return avatarHash_; + } + /** + * required bytes avatarHash = 2; + */ + public Builder setAvatarHash(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + avatarHash_ = value; + + return this; + } + /** + * required bytes avatarHash = 2; + */ + public Builder clearAvatarHash() { + bitField0_ = (bitField0_ & ~0x00000002); + avatarHash_ = getDefaultInstance().getAvatarHash(); + + return this; + } + + // @@protoc_insertion_point(builder_scope:PlayerInfoReplyMessage.PlayerInfoData.AvatarData) + } + + static { + defaultInstance = new AvatarData(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:PlayerInfoReplyMessage.PlayerInfoData.AvatarData) + } + + private int bitField0_; + // required string playerName = 1; + public static final int PLAYERNAME_FIELD_NUMBER = 1; + private java.lang.Object playerName_; + /** + * required string playerName = 1; + */ + public boolean hasPlayerName() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required string playerName = 1; + */ + public java.lang.String getPlayerName() { + java.lang.Object ref = playerName_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + playerName_ = s; + } + return s; + } + } + /** + * required string playerName = 1; + */ + public com.google.protobuf.ByteString + getPlayerNameBytes() { + java.lang.Object ref = playerName_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + playerName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // required bool isHuman = 2; + public static final int ISHUMAN_FIELD_NUMBER = 2; + private boolean isHuman_; + /** + * required bool isHuman = 2; + */ + public boolean hasIsHuman() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bool isHuman = 2; + */ + public boolean getIsHuman() { + return isHuman_; + } + + // required .NetPlayerInfoRights playerRights = 3; + public static final int PLAYERRIGHTS_FIELD_NUMBER = 3; + private de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights playerRights_; + /** + * required .NetPlayerInfoRights playerRights = 3; + */ + public boolean hasPlayerRights() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .NetPlayerInfoRights playerRights = 3; + */ + public de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights getPlayerRights() { + return playerRights_; + } + + // optional string countryCode = 4; + public static final int COUNTRYCODE_FIELD_NUMBER = 4; + private java.lang.Object countryCode_; + /** + * optional string countryCode = 4; + */ + public boolean hasCountryCode() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional string countryCode = 4; + */ + public java.lang.String getCountryCode() { + java.lang.Object ref = countryCode_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + countryCode_ = s; + } + return s; + } + } + /** + * optional string countryCode = 4; + */ + public com.google.protobuf.ByteString + getCountryCodeBytes() { + java.lang.Object ref = countryCode_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + countryCode_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; + public static final int AVATARDATA_FIELD_NUMBER = 5; + private de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData_; + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; + */ + public boolean hasAvatarData() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; + */ + public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData getAvatarData() { + return avatarData_; + } + + private void initFields() { + playerName_ = ""; + isHuman_ = false; + playerRights_ = de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights.netPlayerRightsGuest; + countryCode_ = ""; + avatarData_ = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasPlayerName()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasIsHuman()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPlayerRights()) { + memoizedIsInitialized = 0; + return false; + } + if (hasAvatarData()) { + if (!getAvatarData().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeBytes(1, getPlayerNameBytes()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBool(2, isHuman_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeEnum(3, playerRights_.getNumber()); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeBytes(4, getCountryCodeBytes()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeMessage(5, avatarData_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(1, getPlayerNameBytes()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, isHuman_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(3, playerRights_.getNumber()); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(4, getCountryCodeBytes()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(5, avatarData_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code PlayerInfoReplyMessage.PlayerInfoData} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData, Builder> + implements de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoDataOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + playerName_ = ""; + bitField0_ = (bitField0_ & ~0x00000001); + isHuman_ = false; + bitField0_ = (bitField0_ & ~0x00000002); + playerRights_ = de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights.netPlayerRightsGuest; + bitField0_ = (bitField0_ & ~0x00000004); + countryCode_ = ""; + bitField0_ = (bitField0_ & ~0x00000008); + avatarData_ = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.getDefaultInstance(); + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData build() { + de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData buildPartial() { + de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData result = new de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.playerName_ = playerName_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.isHuman_ = isHuman_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.playerRights_ = playerRights_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.countryCode_ = countryCode_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.avatarData_ = avatarData_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData other) { + if (other == de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.getDefaultInstance()) return this; + if (other.hasPlayerName()) { + bitField0_ |= 0x00000001; + playerName_ = other.playerName_; + + } + if (other.hasIsHuman()) { + setIsHuman(other.getIsHuman()); + } + if (other.hasPlayerRights()) { + setPlayerRights(other.getPlayerRights()); + } + if (other.hasCountryCode()) { + bitField0_ |= 0x00000008; + countryCode_ = other.countryCode_; + + } + if (other.hasAvatarData()) { + mergeAvatarData(other.getAvatarData()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasPlayerName()) { + + return false; + } + if (!hasIsHuman()) { + + return false; + } + if (!hasPlayerRights()) { + + return false; + } + if (hasAvatarData()) { + if (!getAvatarData().isInitialized()) { + + return false; + } + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + // required string playerName = 1; private java.lang.Object playerName_ = ""; + /** + * required string playerName = 1; + */ public boolean hasPlayerName() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public String getPlayerName() { + /** + * required string playerName = 1; + */ + public java.lang.String getPlayerName() { java.lang.Object ref = playerName_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); playerName_ = s; return s; } else { - return (String) ref; + return (java.lang.String) ref; } } - public Builder setPlayerName(String value) { + /** + * required string playerName = 1; + */ + public com.google.protobuf.ByteString + getPlayerNameBytes() { + java.lang.Object ref = playerName_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + playerName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string playerName = 1; + */ + public Builder setPlayerName( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } @@ -11860,47 +15232,79 @@ public final class ProtoBuf { return this; } + /** + * required string playerName = 1; + */ public Builder clearPlayerName() { bitField0_ = (bitField0_ & ~0x00000001); playerName_ = getDefaultInstance().getPlayerName(); return this; } - void setPlayerName(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000001; + /** + * required string playerName = 1; + */ + public Builder setPlayerNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; playerName_ = value; + return this; } - + // required bool isHuman = 2; private boolean isHuman_ ; + /** + * required bool isHuman = 2; + */ public boolean hasIsHuman() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required bool isHuman = 2; + */ public boolean getIsHuman() { return isHuman_; } + /** + * required bool isHuman = 2; + */ public Builder setIsHuman(boolean value) { bitField0_ |= 0x00000002; isHuman_ = value; return this; } + /** + * required bool isHuman = 2; + */ public Builder clearIsHuman() { bitField0_ = (bitField0_ & ~0x00000002); isHuman_ = false; return this; } - + // required .NetPlayerInfoRights playerRights = 3; private de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights playerRights_ = de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights.netPlayerRightsGuest; + /** + * required .NetPlayerInfoRights playerRights = 3; + */ public boolean hasPlayerRights() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required .NetPlayerInfoRights playerRights = 3; + */ public de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights getPlayerRights() { return playerRights_; } + /** + * required .NetPlayerInfoRights playerRights = 3; + */ public Builder setPlayerRights(de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights value) { if (value == null) { throw new NullPointerException(); @@ -11910,29 +15314,59 @@ public final class ProtoBuf { return this; } + /** + * required .NetPlayerInfoRights playerRights = 3; + */ public Builder clearPlayerRights() { bitField0_ = (bitField0_ & ~0x00000004); playerRights_ = de.pokerth.protocol.ProtoBuf.NetPlayerInfoRights.netPlayerRightsGuest; return this; } - + // optional string countryCode = 4; private java.lang.Object countryCode_ = ""; + /** + * optional string countryCode = 4; + */ public boolean hasCountryCode() { return ((bitField0_ & 0x00000008) == 0x00000008); } - public String getCountryCode() { + /** + * optional string countryCode = 4; + */ + public java.lang.String getCountryCode() { java.lang.Object ref = countryCode_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); countryCode_ = s; return s; } else { - return (String) ref; + return (java.lang.String) ref; } } - public Builder setCountryCode(String value) { + /** + * optional string countryCode = 4; + */ + public com.google.protobuf.ByteString + getCountryCodeBytes() { + java.lang.Object ref = countryCode_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + countryCode_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string countryCode = 4; + */ + public Builder setCountryCode( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } @@ -11941,42 +15375,68 @@ public final class ProtoBuf { return this; } + /** + * optional string countryCode = 4; + */ public Builder clearCountryCode() { bitField0_ = (bitField0_ & ~0x00000008); countryCode_ = getDefaultInstance().getCountryCode(); return this; } - void setCountryCode(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000008; + /** + * optional string countryCode = 4; + */ + public Builder setCountryCodeBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; countryCode_ = value; + return this; } - + // optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; private de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData_ = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.getDefaultInstance(); + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; + */ public boolean hasAvatarData() { return ((bitField0_ & 0x00000010) == 0x00000010); } + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; + */ public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData getAvatarData() { return avatarData_; } + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; + */ public Builder setAvatarData(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData value) { if (value == null) { throw new NullPointerException(); } avatarData_ = value; - + bitField0_ |= 0x00000010; return this; } + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; + */ public Builder setAvatarData( de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.Builder builderForValue) { avatarData_ = builderForValue.build(); - + bitField0_ |= 0x00000010; return this; } + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; + */ public Builder mergeAvatarData(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData value) { if (((bitField0_ & 0x00000010) == 0x00000010) && avatarData_ != de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.getDefaultInstance()) { @@ -11985,49 +15445,64 @@ public final class ProtoBuf { } else { avatarData_ = value; } - + bitField0_ |= 0x00000010; return this; } + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData.AvatarData avatarData = 5; + */ public Builder clearAvatarData() { avatarData_ = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.AvatarData.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000010); return this; } - + // @@protoc_insertion_point(builder_scope:PlayerInfoReplyMessage.PlayerInfoData) } - + static { defaultInstance = new PlayerInfoData(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:PlayerInfoReplyMessage.PlayerInfoData) } - + private int bitField0_; // required uint32 playerId = 1; public static final int PLAYERID_FIELD_NUMBER = 1; private int playerId_; + /** + * required uint32 playerId = 1; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 playerId = 1; + */ public int getPlayerId() { return playerId_; } - + // optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; public static final int PLAYERINFODATA_FIELD_NUMBER = 2; private de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData playerInfoData_; + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; + */ public boolean hasPlayerInfoData() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; + */ public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData getPlayerInfoData() { return playerInfoData_; } - + private void initFields() { playerId_ = 0; playerInfoData_ = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.getDefaultInstance(); @@ -12036,7 +15511,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasPlayerId()) { memoizedIsInitialized = 0; return false; @@ -12050,7 +15525,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -12061,12 +15536,12 @@ public final class ProtoBuf { output.writeMessage(2, playerInfoData_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -12079,88 +15554,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code PlayerInfoReplyMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage, Builder> @@ -12169,13 +15633,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); playerId_ = 0; @@ -12184,15 +15648,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage build() { de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage result = buildPartial(); if (!result.isInitialized()) { @@ -12200,17 +15664,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage buildPartial() { de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage result = new de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage(this); int from_bitField0_ = bitField0_; @@ -12226,7 +15680,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage other) { if (other == de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.getDefaultInstance()) return this; if (other.hasPlayerId()) { @@ -12237,7 +15691,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasPlayerId()) { @@ -12251,89 +15705,98 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - playerId_ = input.readUInt32(); - break; - } - case 18: { - de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.Builder subBuilder = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.newBuilder(); - if (hasPlayerInfoData()) { - subBuilder.mergeFrom(getPlayerInfoData()); - } - input.readMessage(subBuilder, extensionRegistry); - setPlayerInfoData(subBuilder.buildPartial()); - break; - } + de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 playerId = 1; private int playerId_ ; + /** + * required uint32 playerId = 1; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 playerId = 1; + */ public int getPlayerId() { return playerId_; } + /** + * required uint32 playerId = 1; + */ public Builder setPlayerId(int value) { bitField0_ |= 0x00000001; playerId_ = value; return this; } + /** + * required uint32 playerId = 1; + */ public Builder clearPlayerId() { bitField0_ = (bitField0_ & ~0x00000001); playerId_ = 0; return this; } - + // optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; private de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData playerInfoData_ = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.getDefaultInstance(); + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; + */ public boolean hasPlayerInfoData() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; + */ public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData getPlayerInfoData() { return playerInfoData_; } + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; + */ public Builder setPlayerInfoData(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData value) { if (value == null) { throw new NullPointerException(); } playerInfoData_ = value; - + bitField0_ |= 0x00000002; return this; } + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; + */ public Builder setPlayerInfoData( de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.Builder builderForValue) { playerInfoData_ = builderForValue.build(); - + bitField0_ |= 0x00000002; return this; } + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; + */ public Builder mergePlayerInfoData(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData value) { if (((bitField0_ & 0x00000002) == 0x00000002) && playerInfoData_ != de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.getDefaultInstance()) { @@ -12342,314 +15805,89 @@ public final class ProtoBuf { } else { playerInfoData_ = value; } - + bitField0_ |= 0x00000002; return this; } + /** + * optional .PlayerInfoReplyMessage.PlayerInfoData playerInfoData = 2; + */ public Builder clearPlayerInfoData() { playerInfoData_ = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PlayerInfoData.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + // @@protoc_insertion_point(builder_scope:PlayerInfoReplyMessage) } - + static { defaultInstance = new PlayerInfoReplyMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:PlayerInfoReplyMessage) } - + public interface SubscriptionRequestMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; + /** + * required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; + */ boolean hasSubscriptionAction(); + /** + * required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; + */ de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction getSubscriptionAction(); } + /** + * Protobuf type {@code SubscriptionRequestMessage} + * + *
+   * The following request will not be confirmed by the server. It is used,
+   * optionally, to reduce server traffic. The server might ignore it.
+   * 
+ */ public static final class SubscriptionRequestMessage extends com.google.protobuf.GeneratedMessageLite implements SubscriptionRequestMessageOrBuilder { // Use SubscriptionRequestMessage.newBuilder() to construct. - private SubscriptionRequestMessage(Builder builder) { + private SubscriptionRequestMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private SubscriptionRequestMessage(boolean noInit) {} - + private static final SubscriptionRequestMessage defaultInstance; public static SubscriptionRequestMessage getDefaultInstance() { return defaultInstance; } - + public SubscriptionRequestMessage getDefaultInstanceForType() { return defaultInstance; } - - public enum SubscriptionAction - implements com.google.protobuf.Internal.EnumLite { - unsubscribeGameList(0, 1), - resubscribeGameList(1, 2), - ; - - public static final int unsubscribeGameList_VALUE = 1; - public static final int resubscribeGameList_VALUE = 2; - - - public final int getNumber() { return value; } - - public static SubscriptionAction valueOf(int value) { - switch (value) { - case 1: return unsubscribeGameList; - case 2: return resubscribeGameList; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public SubscriptionAction findValueByNumber(int number) { - return SubscriptionAction.valueOf(number); - } - }; - - private final int value; - - private SubscriptionAction(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:SubscriptionRequestMessage.SubscriptionAction) - } - - private int bitField0_; - // required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; - public static final int SUBSCRIPTIONACTION_FIELD_NUMBER = 1; - private de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction subscriptionAction_; - public boolean hasSubscriptionAction() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction getSubscriptionAction() { - return subscriptionAction_; - } - - private void initFields() { - subscriptionAction_ = de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction.unsubscribeGameList; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasSubscriptionAction()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeEnum(1, subscriptionAction_.getNumber()); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(1, subscriptionAction_.getNumber()); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom( + + private SubscriptionRequestMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - subscriptionAction_ = de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction.unsubscribeGameList; - bitField0_ = (bitField0_ & ~0x00000001); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage build() { - de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage result = new de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.subscriptionAction_ = subscriptionAction_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.getDefaultInstance()) return this; - if (other.hasSubscriptionAction()) { - setSubscriptionAction(other.getSubscriptionAction()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasSubscriptionAction()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -12664,18 +15902,318 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public SubscriptionRequestMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new SubscriptionRequestMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code SubscriptionRequestMessage.SubscriptionAction} + */ + public enum SubscriptionAction + implements com.google.protobuf.Internal.EnumLite { + /** + * unsubscribeGameList = 1; + */ + unsubscribeGameList(0, 1), + /** + * resubscribeGameList = 2; + */ + resubscribeGameList(1, 2), + ; + + /** + * unsubscribeGameList = 1; + */ + public static final int unsubscribeGameList_VALUE = 1; + /** + * resubscribeGameList = 2; + */ + public static final int resubscribeGameList_VALUE = 2; + + + public final int getNumber() { return value; } + + public static SubscriptionAction valueOf(int value) { + switch (value) { + case 1: return unsubscribeGameList; + case 2: return resubscribeGameList; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public SubscriptionAction findValueByNumber(int number) { + return SubscriptionAction.valueOf(number); + } + }; + + private final int value; + + private SubscriptionAction(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:SubscriptionRequestMessage.SubscriptionAction) + } + + private int bitField0_; + // required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; + public static final int SUBSCRIPTIONACTION_FIELD_NUMBER = 1; + private de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction subscriptionAction_; + /** + * required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; + */ + public boolean hasSubscriptionAction() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; + */ + public de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction getSubscriptionAction() { + return subscriptionAction_; + } + + private void initFields() { + subscriptionAction_ = de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction.unsubscribeGameList; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasSubscriptionAction()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeEnum(1, subscriptionAction_.getNumber()); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, subscriptionAction_.getNumber()); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code SubscriptionRequestMessage} + * + *
+     * The following request will not be confirmed by the server. It is used,
+     * optionally, to reduce server traffic. The server might ignore it.
+     * 
+ */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + subscriptionAction_ = de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction.unsubscribeGameList; + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage build() { + de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage result = new de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.subscriptionAction_ = subscriptionAction_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.getDefaultInstance()) return this; + if (other.hasSubscriptionAction()) { + setSubscriptionAction(other.getSubscriptionAction()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasSubscriptionAction()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; private de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction subscriptionAction_ = de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction.unsubscribeGameList; + /** + * required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; + */ public boolean hasSubscriptionAction() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; + */ public de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction getSubscriptionAction() { return subscriptionAction_; } + /** + * required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; + */ public Builder setSubscriptionAction(de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction value) { if (value == null) { throw new NullPointerException(); @@ -12685,384 +16223,115 @@ public final class ProtoBuf { return this; } + /** + * required .SubscriptionRequestMessage.SubscriptionAction subscriptionAction = 1; + */ public Builder clearSubscriptionAction() { bitField0_ = (bitField0_ & ~0x00000001); subscriptionAction_ = de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.SubscriptionAction.unsubscribeGameList; return this; } - + // @@protoc_insertion_point(builder_scope:SubscriptionRequestMessage) } - + static { defaultInstance = new SubscriptionRequestMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:SubscriptionRequestMessage) } - + public interface JoinExistingGameMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // optional string password = 2; + /** + * optional string password = 2; + */ boolean hasPassword(); - String getPassword(); - + /** + * optional string password = 2; + */ + java.lang.String getPassword(); + /** + * optional string password = 2; + */ + com.google.protobuf.ByteString + getPasswordBytes(); + // optional bool autoLeave = 3; + /** + * optional bool autoLeave = 3; + */ boolean hasAutoLeave(); + /** + * optional bool autoLeave = 3; + */ boolean getAutoLeave(); - + // optional bool spectateOnly = 4; + /** + * optional bool spectateOnly = 4; + */ boolean hasSpectateOnly(); + /** + * optional bool spectateOnly = 4; + */ boolean getSpectateOnly(); } + /** + * Protobuf type {@code JoinExistingGameMessage} + */ public static final class JoinExistingGameMessage extends com.google.protobuf.GeneratedMessageLite implements JoinExistingGameMessageOrBuilder { // Use JoinExistingGameMessage.newBuilder() to construct. - private JoinExistingGameMessage(Builder builder) { + private JoinExistingGameMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private JoinExistingGameMessage(boolean noInit) {} - + private static final JoinExistingGameMessage defaultInstance; public static JoinExistingGameMessage getDefaultInstance() { return defaultInstance; } - + public JoinExistingGameMessage getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required uint32 gameId = 1; - public static final int GAMEID_FIELD_NUMBER = 1; - private int gameId_; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - - // optional string password = 2; - public static final int PASSWORD_FIELD_NUMBER = 2; - private java.lang.Object password_; - public boolean hasPassword() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public String getPassword() { - java.lang.Object ref = password_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - password_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getPasswordBytes() { - java.lang.Object ref = password_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - password_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // optional bool autoLeave = 3; - public static final int AUTOLEAVE_FIELD_NUMBER = 3; - private boolean autoLeave_; - public boolean hasAutoLeave() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public boolean getAutoLeave() { - return autoLeave_; - } - - // optional bool spectateOnly = 4; - public static final int SPECTATEONLY_FIELD_NUMBER = 4; - private boolean spectateOnly_; - public boolean hasSpectateOnly() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public boolean getSpectateOnly() { - return spectateOnly_; - } - - private void initFields() { - gameId_ = 0; - password_ = ""; - autoLeave_ = false; - spectateOnly_ = false; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasGameId()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeBytes(2, getPasswordBytes()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeBool(3, autoLeave_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeBool(4, spectateOnly_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(2, getPasswordBytes()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(3, autoLeave_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(4, spectateOnly_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom( + + private JoinExistingGameMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.JoinExistingGameMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - gameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - password_ = ""; - bitField0_ = (bitField0_ & ~0x00000002); - autoLeave_ = false; - bitField0_ = (bitField0_ & ~0x00000004); - spectateOnly_ = false; - bitField0_ = (bitField0_ & ~0x00000008); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage build() { - de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage result = new de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.gameId_ = gameId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.password_ = password_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.autoLeave_ = autoLeave_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.spectateOnly_ = spectateOnly_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.getDefaultInstance()) return this; - if (other.hasGameId()) { - setGameId(other.getGameId()); - } - if (other.hasPassword()) { - setPassword(other.getPassword()); - } - if (other.hasAutoLeave()) { - setAutoLeave(other.getAutoLeave()); - } - if (other.hasSpectateOnly()) { - setSpectateOnly(other.getSpectateOnly()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasGameId()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -13088,47 +16357,444 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public JoinExistingGameMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new JoinExistingGameMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required uint32 gameId = 1; + public static final int GAMEID_FIELD_NUMBER = 1; + private int gameId_; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + + // optional string password = 2; + public static final int PASSWORD_FIELD_NUMBER = 2; + private java.lang.Object password_; + /** + * optional string password = 2; + */ + public boolean hasPassword() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional string password = 2; + */ + public java.lang.String getPassword() { + java.lang.Object ref = password_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + password_ = s; + } + return s; + } + } + /** + * optional string password = 2; + */ + public com.google.protobuf.ByteString + getPasswordBytes() { + java.lang.Object ref = password_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + password_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + // optional bool autoLeave = 3; + public static final int AUTOLEAVE_FIELD_NUMBER = 3; + private boolean autoLeave_; + /** + * optional bool autoLeave = 3; + */ + public boolean hasAutoLeave() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional bool autoLeave = 3; + */ + public boolean getAutoLeave() { + return autoLeave_; + } + + // optional bool spectateOnly = 4; + public static final int SPECTATEONLY_FIELD_NUMBER = 4; + private boolean spectateOnly_; + /** + * optional bool spectateOnly = 4; + */ + public boolean hasSpectateOnly() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional bool spectateOnly = 4; + */ + public boolean getSpectateOnly() { + return spectateOnly_; + } + + private void initFields() { + gameId_ = 0; + password_ = ""; + autoLeave_ = false; + spectateOnly_ = false; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasGameId()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBytes(2, getPasswordBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBool(3, autoLeave_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeBool(4, spectateOnly_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(2, getPasswordBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(3, autoLeave_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(4, spectateOnly_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code JoinExistingGameMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.JoinExistingGameMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + gameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + password_ = ""; + bitField0_ = (bitField0_ & ~0x00000002); + autoLeave_ = false; + bitField0_ = (bitField0_ & ~0x00000004); + spectateOnly_ = false; + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage build() { + de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage result = new de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.gameId_ = gameId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.password_ = password_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.autoLeave_ = autoLeave_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.spectateOnly_ = spectateOnly_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.getDefaultInstance()) return this; + if (other.hasGameId()) { + setGameId(other.getGameId()); + } + if (other.hasPassword()) { + bitField0_ |= 0x00000002; + password_ = other.password_; + + } + if (other.hasAutoLeave()) { + setAutoLeave(other.getAutoLeave()); + } + if (other.hasSpectateOnly()) { + setSpectateOnly(other.getSpectateOnly()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasGameId()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // optional string password = 2; private java.lang.Object password_ = ""; + /** + * optional string password = 2; + */ public boolean hasPassword() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public String getPassword() { + /** + * optional string password = 2; + */ + public java.lang.String getPassword() { java.lang.Object ref = password_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); password_ = s; return s; } else { - return (String) ref; + return (java.lang.String) ref; } } - public Builder setPassword(String value) { + /** + * optional string password = 2; + */ + public com.google.protobuf.ByteString + getPasswordBytes() { + java.lang.Object ref = password_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + password_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string password = 2; + */ + public Builder setPassword( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } @@ -13137,157 +16803,312 @@ public final class ProtoBuf { return this; } + /** + * optional string password = 2; + */ public Builder clearPassword() { bitField0_ = (bitField0_ & ~0x00000002); password_ = getDefaultInstance().getPassword(); return this; } - void setPassword(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000002; + /** + * optional string password = 2; + */ + public Builder setPasswordBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; password_ = value; + return this; } - + // optional bool autoLeave = 3; private boolean autoLeave_ ; + /** + * optional bool autoLeave = 3; + */ public boolean hasAutoLeave() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional bool autoLeave = 3; + */ public boolean getAutoLeave() { return autoLeave_; } + /** + * optional bool autoLeave = 3; + */ public Builder setAutoLeave(boolean value) { bitField0_ |= 0x00000004; autoLeave_ = value; return this; } + /** + * optional bool autoLeave = 3; + */ public Builder clearAutoLeave() { bitField0_ = (bitField0_ & ~0x00000004); autoLeave_ = false; return this; } - + // optional bool spectateOnly = 4; private boolean spectateOnly_ ; + /** + * optional bool spectateOnly = 4; + */ public boolean hasSpectateOnly() { return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * optional bool spectateOnly = 4; + */ public boolean getSpectateOnly() { return spectateOnly_; } + /** + * optional bool spectateOnly = 4; + */ public Builder setSpectateOnly(boolean value) { bitField0_ |= 0x00000008; spectateOnly_ = value; return this; } + /** + * optional bool spectateOnly = 4; + */ public Builder clearSpectateOnly() { bitField0_ = (bitField0_ & ~0x00000008); spectateOnly_ = false; return this; } - + // @@protoc_insertion_point(builder_scope:JoinExistingGameMessage) } - + static { defaultInstance = new JoinExistingGameMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:JoinExistingGameMessage) } - + public interface JoinNewGameMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required .NetGameInfo gameInfo = 1; + /** + * required .NetGameInfo gameInfo = 1; + */ boolean hasGameInfo(); + /** + * required .NetGameInfo gameInfo = 1; + */ de.pokerth.protocol.ProtoBuf.NetGameInfo getGameInfo(); - + // optional string password = 2; + /** + * optional string password = 2; + */ boolean hasPassword(); - String getPassword(); - + /** + * optional string password = 2; + */ + java.lang.String getPassword(); + /** + * optional string password = 2; + */ + com.google.protobuf.ByteString + getPasswordBytes(); + // optional bool autoLeave = 3; + /** + * optional bool autoLeave = 3; + */ boolean hasAutoLeave(); + /** + * optional bool autoLeave = 3; + */ boolean getAutoLeave(); } + /** + * Protobuf type {@code JoinNewGameMessage} + */ public static final class JoinNewGameMessage extends com.google.protobuf.GeneratedMessageLite implements JoinNewGameMessageOrBuilder { // Use JoinNewGameMessage.newBuilder() to construct. - private JoinNewGameMessage(Builder builder) { + private JoinNewGameMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private JoinNewGameMessage(boolean noInit) {} - + private static final JoinNewGameMessage defaultInstance; public static JoinNewGameMessage getDefaultInstance() { return defaultInstance; } - + public JoinNewGameMessage getDefaultInstanceForType() { return defaultInstance; } - + + private JoinNewGameMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + de.pokerth.protocol.ProtoBuf.NetGameInfo.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = gameInfo_.toBuilder(); + } + gameInfo_ = input.readMessage(de.pokerth.protocol.ProtoBuf.NetGameInfo.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameInfo_); + gameInfo_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + case 18: { + bitField0_ |= 0x00000002; + password_ = input.readBytes(); + break; + } + case 24: { + bitField0_ |= 0x00000004; + autoLeave_ = input.readBool(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public JoinNewGameMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new JoinNewGameMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required .NetGameInfo gameInfo = 1; public static final int GAMEINFO_FIELD_NUMBER = 1; private de.pokerth.protocol.ProtoBuf.NetGameInfo gameInfo_; + /** + * required .NetGameInfo gameInfo = 1; + */ public boolean hasGameInfo() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .NetGameInfo gameInfo = 1; + */ public de.pokerth.protocol.ProtoBuf.NetGameInfo getGameInfo() { return gameInfo_; } - + // optional string password = 2; public static final int PASSWORD_FIELD_NUMBER = 2; private java.lang.Object password_; + /** + * optional string password = 2; + */ public boolean hasPassword() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public String getPassword() { + /** + * optional string password = 2; + */ + public java.lang.String getPassword() { java.lang.Object ref = password_; - if (ref instanceof String) { - return (String) ref; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { password_ = s; } return s; } } - private com.google.protobuf.ByteString getPasswordBytes() { + /** + * optional string password = 2; + */ + public com.google.protobuf.ByteString + getPasswordBytes() { java.lang.Object ref = password_; - if (ref instanceof String) { + if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); password_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } - + // optional bool autoLeave = 3; public static final int AUTOLEAVE_FIELD_NUMBER = 3; private boolean autoLeave_; + /** + * optional bool autoLeave = 3; + */ public boolean hasAutoLeave() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional bool autoLeave = 3; + */ public boolean getAutoLeave() { return autoLeave_; } - + private void initFields() { gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); password_ = ""; @@ -13297,7 +17118,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameInfo()) { memoizedIsInitialized = 0; return false; @@ -13309,7 +17130,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -13323,12 +17144,12 @@ public final class ProtoBuf { output.writeBool(3, autoLeave_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -13345,88 +17166,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.JoinNewGameMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.JoinNewGameMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.JoinNewGameMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.JoinNewGameMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.JoinNewGameMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.JoinNewGameMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.JoinNewGameMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.JoinNewGameMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.JoinNewGameMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.JoinNewGameMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.JoinNewGameMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code JoinNewGameMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.JoinNewGameMessage, Builder> @@ -13435,13 +17245,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); @@ -13452,15 +17262,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.JoinNewGameMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.JoinNewGameMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.JoinNewGameMessage build() { de.pokerth.protocol.ProtoBuf.JoinNewGameMessage result = buildPartial(); if (!result.isInitialized()) { @@ -13468,17 +17278,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.JoinNewGameMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.JoinNewGameMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.JoinNewGameMessage buildPartial() { de.pokerth.protocol.ProtoBuf.JoinNewGameMessage result = new de.pokerth.protocol.ProtoBuf.JoinNewGameMessage(this); int from_bitField0_ = bitField0_; @@ -13498,21 +17298,23 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.JoinNewGameMessage other) { if (other == de.pokerth.protocol.ProtoBuf.JoinNewGameMessage.getDefaultInstance()) return this; if (other.hasGameInfo()) { mergeGameInfo(other.getGameInfo()); } if (other.hasPassword()) { - setPassword(other.getPassword()); + bitField0_ |= 0x00000002; + password_ = other.password_; + } if (other.hasAutoLeave()) { setAutoLeave(other.getAutoLeave()); } return this; } - + public final boolean isInitialized() { if (!hasGameInfo()) { @@ -13524,73 +17326,65 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 10: { - de.pokerth.protocol.ProtoBuf.NetGameInfo.Builder subBuilder = de.pokerth.protocol.ProtoBuf.NetGameInfo.newBuilder(); - if (hasGameInfo()) { - subBuilder.mergeFrom(getGameInfo()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameInfo(subBuilder.buildPartial()); - break; - } - case 18: { - bitField0_ |= 0x00000002; - password_ = input.readBytes(); - break; - } - case 24: { - bitField0_ |= 0x00000004; - autoLeave_ = input.readBool(); - break; - } + de.pokerth.protocol.ProtoBuf.JoinNewGameMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.JoinNewGameMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required .NetGameInfo gameInfo = 1; private de.pokerth.protocol.ProtoBuf.NetGameInfo gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); + /** + * required .NetGameInfo gameInfo = 1; + */ public boolean hasGameInfo() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .NetGameInfo gameInfo = 1; + */ public de.pokerth.protocol.ProtoBuf.NetGameInfo getGameInfo() { return gameInfo_; } + /** + * required .NetGameInfo gameInfo = 1; + */ public Builder setGameInfo(de.pokerth.protocol.ProtoBuf.NetGameInfo value) { if (value == null) { throw new NullPointerException(); } gameInfo_ = value; - + bitField0_ |= 0x00000001; return this; } + /** + * required .NetGameInfo gameInfo = 1; + */ public Builder setGameInfo( de.pokerth.protocol.ProtoBuf.NetGameInfo.Builder builderForValue) { gameInfo_ = builderForValue.build(); - + bitField0_ |= 0x00000001; return this; } + /** + * required .NetGameInfo gameInfo = 1; + */ public Builder mergeGameInfo(de.pokerth.protocol.ProtoBuf.NetGameInfo value) { if (((bitField0_ & 0x00000001) == 0x00000001) && gameInfo_ != de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance()) { @@ -13599,33 +17393,63 @@ public final class ProtoBuf { } else { gameInfo_ = value; } - + bitField0_ |= 0x00000001; return this; } + /** + * required .NetGameInfo gameInfo = 1; + */ public Builder clearGameInfo() { gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + // optional string password = 2; private java.lang.Object password_ = ""; + /** + * optional string password = 2; + */ public boolean hasPassword() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public String getPassword() { + /** + * optional string password = 2; + */ + public java.lang.String getPassword() { java.lang.Object ref = password_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); password_ = s; return s; } else { - return (String) ref; + return (java.lang.String) ref; } } - public Builder setPassword(String value) { + /** + * optional string password = 2; + */ + public com.google.protobuf.ByteString + getPasswordBytes() { + java.lang.Object ref = password_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + password_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * optional string password = 2; + */ + public Builder setPassword( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } @@ -13634,326 +17458,136 @@ public final class ProtoBuf { return this; } + /** + * optional string password = 2; + */ public Builder clearPassword() { bitField0_ = (bitField0_ & ~0x00000002); password_ = getDefaultInstance().getPassword(); return this; } - void setPassword(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000002; + /** + * optional string password = 2; + */ + public Builder setPasswordBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; password_ = value; + return this; } - + // optional bool autoLeave = 3; private boolean autoLeave_ ; + /** + * optional bool autoLeave = 3; + */ public boolean hasAutoLeave() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional bool autoLeave = 3; + */ public boolean getAutoLeave() { return autoLeave_; } + /** + * optional bool autoLeave = 3; + */ public Builder setAutoLeave(boolean value) { bitField0_ |= 0x00000004; autoLeave_ = value; return this; } + /** + * optional bool autoLeave = 3; + */ public Builder clearAutoLeave() { bitField0_ = (bitField0_ & ~0x00000004); autoLeave_ = false; return this; } - + // @@protoc_insertion_point(builder_scope:JoinNewGameMessage) } - + static { defaultInstance = new JoinNewGameMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:JoinNewGameMessage) } - + public interface RejoinExistingGameMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // optional bool autoLeave = 2; + /** + * optional bool autoLeave = 2; + */ boolean hasAutoLeave(); + /** + * optional bool autoLeave = 2; + */ boolean getAutoLeave(); } + /** + * Protobuf type {@code RejoinExistingGameMessage} + */ public static final class RejoinExistingGameMessage extends com.google.protobuf.GeneratedMessageLite implements RejoinExistingGameMessageOrBuilder { // Use RejoinExistingGameMessage.newBuilder() to construct. - private RejoinExistingGameMessage(Builder builder) { + private RejoinExistingGameMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private RejoinExistingGameMessage(boolean noInit) {} - + private static final RejoinExistingGameMessage defaultInstance; public static RejoinExistingGameMessage getDefaultInstance() { return defaultInstance; } - + public RejoinExistingGameMessage getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required uint32 gameId = 1; - public static final int GAMEID_FIELD_NUMBER = 1; - private int gameId_; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - - // optional bool autoLeave = 2; - public static final int AUTOLEAVE_FIELD_NUMBER = 2; - private boolean autoLeave_; - public boolean hasAutoLeave() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public boolean getAutoLeave() { - return autoLeave_; - } - - private void initFields() { - gameId_ = 0; - autoLeave_ = false; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasGameId()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeBool(2, autoLeave_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(2, autoLeave_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom( + + private RejoinExistingGameMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - gameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - autoLeave_ = false; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage build() { - de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage result = new de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.gameId_ = gameId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.autoLeave_ = autoLeave_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.getDefaultInstance()) return this; - if (other.hasGameId()) { - setGameId(other.getGameId()); - } - if (other.hasAutoLeave()) { - setAutoLeave(other.getAutoLeave()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasGameId()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -13969,127 +17603,524 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public RejoinExistingGameMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new RejoinExistingGameMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required uint32 gameId = 1; + public static final int GAMEID_FIELD_NUMBER = 1; + private int gameId_; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + + // optional bool autoLeave = 2; + public static final int AUTOLEAVE_FIELD_NUMBER = 2; + private boolean autoLeave_; + /** + * optional bool autoLeave = 2; + */ + public boolean hasAutoLeave() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional bool autoLeave = 2; + */ + public boolean getAutoLeave() { + return autoLeave_; + } + + private void initFields() { + gameId_ = 0; + autoLeave_ = false; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasGameId()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeBool(2, autoLeave_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(2, autoLeave_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code RejoinExistingGameMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + gameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + autoLeave_ = false; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage build() { + de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage result = new de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.gameId_ = gameId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.autoLeave_ = autoLeave_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.getDefaultInstance()) return this; + if (other.hasGameId()) { + setGameId(other.getGameId()); + } + if (other.hasAutoLeave()) { + setAutoLeave(other.getAutoLeave()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasGameId()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // optional bool autoLeave = 2; private boolean autoLeave_ ; + /** + * optional bool autoLeave = 2; + */ public boolean hasAutoLeave() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * optional bool autoLeave = 2; + */ public boolean getAutoLeave() { return autoLeave_; } + /** + * optional bool autoLeave = 2; + */ public Builder setAutoLeave(boolean value) { bitField0_ |= 0x00000002; autoLeave_ = value; return this; } + /** + * optional bool autoLeave = 2; + */ public Builder clearAutoLeave() { bitField0_ = (bitField0_ & ~0x00000002); autoLeave_ = false; return this; } - + // @@protoc_insertion_point(builder_scope:RejoinExistingGameMessage) } - + static { defaultInstance = new RejoinExistingGameMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:RejoinExistingGameMessage) } - + public interface JoinGameAckMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // required bool areYouGameAdmin = 2; + /** + * required bool areYouGameAdmin = 2; + */ boolean hasAreYouGameAdmin(); + /** + * required bool areYouGameAdmin = 2; + */ boolean getAreYouGameAdmin(); - + // required .NetGameInfo gameInfo = 3; + /** + * required .NetGameInfo gameInfo = 3; + */ boolean hasGameInfo(); + /** + * required .NetGameInfo gameInfo = 3; + */ de.pokerth.protocol.ProtoBuf.NetGameInfo getGameInfo(); } + /** + * Protobuf type {@code JoinGameAckMessage} + */ public static final class JoinGameAckMessage extends com.google.protobuf.GeneratedMessageLite implements JoinGameAckMessageOrBuilder { // Use JoinGameAckMessage.newBuilder() to construct. - private JoinGameAckMessage(Builder builder) { + private JoinGameAckMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private JoinGameAckMessage(boolean noInit) {} - + private static final JoinGameAckMessage defaultInstance; public static JoinGameAckMessage getDefaultInstance() { return defaultInstance; } - + public JoinGameAckMessage getDefaultInstanceForType() { return defaultInstance; } - + + private JoinGameAckMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + gameId_ = input.readUInt32(); + break; + } + case 16: { + bitField0_ |= 0x00000002; + areYouGameAdmin_ = input.readBool(); + break; + } + case 26: { + de.pokerth.protocol.ProtoBuf.NetGameInfo.Builder subBuilder = null; + if (((bitField0_ & 0x00000004) == 0x00000004)) { + subBuilder = gameInfo_.toBuilder(); + } + gameInfo_ = input.readMessage(de.pokerth.protocol.ProtoBuf.NetGameInfo.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameInfo_); + gameInfo_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000004; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public JoinGameAckMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new JoinGameAckMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required bool areYouGameAdmin = 2; public static final int AREYOUGAMEADMIN_FIELD_NUMBER = 2; private boolean areYouGameAdmin_; + /** + * required bool areYouGameAdmin = 2; + */ public boolean hasAreYouGameAdmin() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required bool areYouGameAdmin = 2; + */ public boolean getAreYouGameAdmin() { return areYouGameAdmin_; } - + // required .NetGameInfo gameInfo = 3; public static final int GAMEINFO_FIELD_NUMBER = 3; private de.pokerth.protocol.ProtoBuf.NetGameInfo gameInfo_; + /** + * required .NetGameInfo gameInfo = 3; + */ public boolean hasGameInfo() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required .NetGameInfo gameInfo = 3; + */ public de.pokerth.protocol.ProtoBuf.NetGameInfo getGameInfo() { return gameInfo_; } - + private void initFields() { gameId_ = 0; areYouGameAdmin_ = false; @@ -14099,7 +18130,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -14119,7 +18150,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -14133,12 +18164,12 @@ public final class ProtoBuf { output.writeMessage(3, gameInfo_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -14155,88 +18186,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.JoinGameAckMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.JoinGameAckMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.JoinGameAckMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.JoinGameAckMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.JoinGameAckMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.JoinGameAckMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.JoinGameAckMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.JoinGameAckMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.JoinGameAckMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.JoinGameAckMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.JoinGameAckMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code JoinGameAckMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.JoinGameAckMessage, Builder> @@ -14245,13 +18265,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -14262,15 +18282,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.JoinGameAckMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.JoinGameAckMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.JoinGameAckMessage build() { de.pokerth.protocol.ProtoBuf.JoinGameAckMessage result = buildPartial(); if (!result.isInitialized()) { @@ -14278,17 +18298,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.JoinGameAckMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.JoinGameAckMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.JoinGameAckMessage buildPartial() { de.pokerth.protocol.ProtoBuf.JoinGameAckMessage result = new de.pokerth.protocol.ProtoBuf.JoinGameAckMessage(this); int from_bitField0_ = bitField0_; @@ -14308,7 +18318,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.JoinGameAckMessage other) { if (other == de.pokerth.protocol.ProtoBuf.JoinGameAckMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -14322,7 +18332,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -14342,115 +18352,131 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - gameId_ = input.readUInt32(); - break; - } - case 16: { - bitField0_ |= 0x00000002; - areYouGameAdmin_ = input.readBool(); - break; - } - case 26: { - de.pokerth.protocol.ProtoBuf.NetGameInfo.Builder subBuilder = de.pokerth.protocol.ProtoBuf.NetGameInfo.newBuilder(); - if (hasGameInfo()) { - subBuilder.mergeFrom(getGameInfo()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameInfo(subBuilder.buildPartial()); - break; - } + de.pokerth.protocol.ProtoBuf.JoinGameAckMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.JoinGameAckMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // required bool areYouGameAdmin = 2; private boolean areYouGameAdmin_ ; + /** + * required bool areYouGameAdmin = 2; + */ public boolean hasAreYouGameAdmin() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required bool areYouGameAdmin = 2; + */ public boolean getAreYouGameAdmin() { return areYouGameAdmin_; } + /** + * required bool areYouGameAdmin = 2; + */ public Builder setAreYouGameAdmin(boolean value) { bitField0_ |= 0x00000002; areYouGameAdmin_ = value; return this; } + /** + * required bool areYouGameAdmin = 2; + */ public Builder clearAreYouGameAdmin() { bitField0_ = (bitField0_ & ~0x00000002); areYouGameAdmin_ = false; return this; } - + // required .NetGameInfo gameInfo = 3; private de.pokerth.protocol.ProtoBuf.NetGameInfo gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); + /** + * required .NetGameInfo gameInfo = 3; + */ public boolean hasGameInfo() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required .NetGameInfo gameInfo = 3; + */ public de.pokerth.protocol.ProtoBuf.NetGameInfo getGameInfo() { return gameInfo_; } + /** + * required .NetGameInfo gameInfo = 3; + */ public Builder setGameInfo(de.pokerth.protocol.ProtoBuf.NetGameInfo value) { if (value == null) { throw new NullPointerException(); } gameInfo_ = value; - + bitField0_ |= 0x00000004; return this; } + /** + * required .NetGameInfo gameInfo = 3; + */ public Builder setGameInfo( de.pokerth.protocol.ProtoBuf.NetGameInfo.Builder builderForValue) { gameInfo_ = builderForValue.build(); - + bitField0_ |= 0x00000004; return this; } + /** + * required .NetGameInfo gameInfo = 3; + */ public Builder mergeGameInfo(de.pokerth.protocol.ProtoBuf.NetGameInfo value) { if (((bitField0_ & 0x00000004) == 0x00000004) && gameInfo_ != de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance()) { @@ -14459,380 +18485,94 @@ public final class ProtoBuf { } else { gameInfo_ = value; } - + bitField0_ |= 0x00000004; return this; } + /** + * required .NetGameInfo gameInfo = 3; + */ public Builder clearGameInfo() { gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + // @@protoc_insertion_point(builder_scope:JoinGameAckMessage) } - + static { defaultInstance = new JoinGameAckMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:JoinGameAckMessage) } - + public interface JoinGameFailedMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; + /** + * required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; + */ boolean hasJoinGameFailureReason(); + /** + * required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; + */ de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason getJoinGameFailureReason(); } + /** + * Protobuf type {@code JoinGameFailedMessage} + */ public static final class JoinGameFailedMessage extends com.google.protobuf.GeneratedMessageLite implements JoinGameFailedMessageOrBuilder { // Use JoinGameFailedMessage.newBuilder() to construct. - private JoinGameFailedMessage(Builder builder) { + private JoinGameFailedMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private JoinGameFailedMessage(boolean noInit) {} - + private static final JoinGameFailedMessage defaultInstance; public static JoinGameFailedMessage getDefaultInstance() { return defaultInstance; } - + public JoinGameFailedMessage getDefaultInstanceForType() { return defaultInstance; } - - public enum JoinGameFailureReason - implements com.google.protobuf.Internal.EnumLite { - invalidGame(0, 1), - gameIsFull(1, 2), - gameIsRunning(2, 3), - invalidPassword(3, 4), - notAllowedAsGuest(4, 5), - notInvited(5, 6), - gameNameInUse(6, 7), - badGameName(7, 8), - invalidSettings(8, 9), - ipAddressBlocked(9, 10), - rejoinFailed(10, 11), - ; - - public static final int invalidGame_VALUE = 1; - public static final int gameIsFull_VALUE = 2; - public static final int gameIsRunning_VALUE = 3; - public static final int invalidPassword_VALUE = 4; - public static final int notAllowedAsGuest_VALUE = 5; - public static final int notInvited_VALUE = 6; - public static final int gameNameInUse_VALUE = 7; - public static final int badGameName_VALUE = 8; - public static final int invalidSettings_VALUE = 9; - public static final int ipAddressBlocked_VALUE = 10; - public static final int rejoinFailed_VALUE = 11; - - - public final int getNumber() { return value; } - - public static JoinGameFailureReason valueOf(int value) { - switch (value) { - case 1: return invalidGame; - case 2: return gameIsFull; - case 3: return gameIsRunning; - case 4: return invalidPassword; - case 5: return notAllowedAsGuest; - case 6: return notInvited; - case 7: return gameNameInUse; - case 8: return badGameName; - case 9: return invalidSettings; - case 10: return ipAddressBlocked; - case 11: return rejoinFailed; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public JoinGameFailureReason findValueByNumber(int number) { - return JoinGameFailureReason.valueOf(number); - } - }; - - private final int value; - - private JoinGameFailureReason(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:JoinGameFailedMessage.JoinGameFailureReason) - } - - private int bitField0_; - // required uint32 gameId = 1; - public static final int GAMEID_FIELD_NUMBER = 1; - private int gameId_; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - - // required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; - public static final int JOINGAMEFAILUREREASON_FIELD_NUMBER = 2; - private de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason_; - public boolean hasJoinGameFailureReason() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason getJoinGameFailureReason() { - return joinGameFailureReason_; - } - - private void initFields() { - gameId_ = 0; - joinGameFailureReason_ = de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason.invalidGame; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasGameId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasJoinGameFailureReason()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeEnum(2, joinGameFailureReason_.getNumber()); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, joinGameFailureReason_.getNumber()); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom( + + private JoinGameFailedMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.JoinGameFailedMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - gameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - joinGameFailureReason_ = de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason.invalidGame; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage build() { - de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage result = new de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.gameId_ = gameId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.joinGameFailureReason_ = joinGameFailureReason_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.getDefaultInstance()) return this; - if (other.hasGameId()) { - setGameId(other.getGameId()); - } - if (other.hasJoinGameFailureReason()) { - setJoinGameFailureReason(other.getJoinGameFailureReason()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasGameId()) { - - return false; - } - if (!hasJoinGameFailureReason()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -14852,156 +18592,221 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public JoinGameFailedMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new JoinGameFailedMessage(input, extensionRegistry); } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; - private de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason_ = de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason.invalidGame; - public boolean hasJoinGameFailureReason() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason getJoinGameFailureReason() { - return joinGameFailureReason_; - } - public Builder setJoinGameFailureReason(de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason value) { - if (value == null) { - throw new NullPointerException(); + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code JoinGameFailedMessage.JoinGameFailureReason} + */ + public enum JoinGameFailureReason + implements com.google.protobuf.Internal.EnumLite { + /** + * invalidGame = 1; + */ + invalidGame(0, 1), + /** + * gameIsFull = 2; + */ + gameIsFull(1, 2), + /** + * gameIsRunning = 3; + */ + gameIsRunning(2, 3), + /** + * invalidPassword = 4; + */ + invalidPassword(3, 4), + /** + * notAllowedAsGuest = 5; + */ + notAllowedAsGuest(4, 5), + /** + * notInvited = 6; + */ + notInvited(5, 6), + /** + * gameNameInUse = 7; + */ + gameNameInUse(6, 7), + /** + * badGameName = 8; + */ + badGameName(7, 8), + /** + * invalidSettings = 9; + */ + invalidSettings(8, 9), + /** + * ipAddressBlocked = 10; + */ + ipAddressBlocked(9, 10), + /** + * rejoinFailed = 11; + */ + rejoinFailed(10, 11), + ; + + /** + * invalidGame = 1; + */ + public static final int invalidGame_VALUE = 1; + /** + * gameIsFull = 2; + */ + public static final int gameIsFull_VALUE = 2; + /** + * gameIsRunning = 3; + */ + public static final int gameIsRunning_VALUE = 3; + /** + * invalidPassword = 4; + */ + public static final int invalidPassword_VALUE = 4; + /** + * notAllowedAsGuest = 5; + */ + public static final int notAllowedAsGuest_VALUE = 5; + /** + * notInvited = 6; + */ + public static final int notInvited_VALUE = 6; + /** + * gameNameInUse = 7; + */ + public static final int gameNameInUse_VALUE = 7; + /** + * badGameName = 8; + */ + public static final int badGameName_VALUE = 8; + /** + * invalidSettings = 9; + */ + public static final int invalidSettings_VALUE = 9; + /** + * ipAddressBlocked = 10; + */ + public static final int ipAddressBlocked_VALUE = 10; + /** + * rejoinFailed = 11; + */ + public static final int rejoinFailed_VALUE = 11; + + + public final int getNumber() { return value; } + + public static JoinGameFailureReason valueOf(int value) { + switch (value) { + case 1: return invalidGame; + case 2: return gameIsFull; + case 3: return gameIsRunning; + case 4: return invalidPassword; + case 5: return notAllowedAsGuest; + case 6: return notInvited; + case 7: return gameNameInUse; + case 8: return badGameName; + case 9: return invalidSettings; + case 10: return ipAddressBlocked; + case 11: return rejoinFailed; + default: return null; } - bitField0_ |= 0x00000002; - joinGameFailureReason_ = value; - - return this; } - public Builder clearJoinGameFailureReason() { - bitField0_ = (bitField0_ & ~0x00000002); - joinGameFailureReason_ = de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason.invalidGame; - - return this; + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; } - - // @@protoc_insertion_point(builder_scope:JoinGameFailedMessage) + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public JoinGameFailureReason findValueByNumber(int number) { + return JoinGameFailureReason.valueOf(number); + } + }; + + private final int value; + + private JoinGameFailureReason(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:JoinGameFailedMessage.JoinGameFailureReason) } - - static { - defaultInstance = new JoinGameFailedMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:JoinGameFailedMessage) - } - - public interface GamePlayerJoinedMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 playerId = 2; - boolean hasPlayerId(); - int getPlayerId(); - - // required bool isGameAdmin = 3; - boolean hasIsGameAdmin(); - boolean getIsGameAdmin(); - } - public static final class GamePlayerJoinedMessage extends - com.google.protobuf.GeneratedMessageLite - implements GamePlayerJoinedMessageOrBuilder { - // Use GamePlayerJoinedMessage.newBuilder() to construct. - private GamePlayerJoinedMessage(Builder builder) { - super(builder); - } - private GamePlayerJoinedMessage(boolean noInit) {} - - private static final GamePlayerJoinedMessage defaultInstance; - public static GamePlayerJoinedMessage getDefaultInstance() { - return defaultInstance; - } - - public GamePlayerJoinedMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - - // required uint32 playerId = 2; - public static final int PLAYERID_FIELD_NUMBER = 2; - private int playerId_; - public boolean hasPlayerId() { + + // required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; + public static final int JOINGAMEFAILUREREASON_FIELD_NUMBER = 2; + private de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason_; + /** + * required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; + */ + public boolean hasJoinGameFailureReason() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public int getPlayerId() { - return playerId_; + /** + * required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; + */ + public de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason getJoinGameFailureReason() { + return joinGameFailureReason_; } - - // required bool isGameAdmin = 3; - public static final int ISGAMEADMIN_FIELD_NUMBER = 3; - private boolean isGameAdmin_; - public boolean hasIsGameAdmin() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public boolean getIsGameAdmin() { - return isGameAdmin_; - } - + private void initFields() { gameId_ = 0; - playerId_ = 0; - isGameAdmin_ = false; + joinGameFailureReason_ = de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason.invalidGame; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } - if (!hasPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasIsGameAdmin()) { + if (!hasJoinGameFailureReason()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -15009,18 +18814,15 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, playerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeBool(3, isGameAdmin_); + output.writeEnum(2, joinGameFailureReason_.getNumber()); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -15028,151 +18830,124 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, playerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(3, isGameAdmin_); + .computeEnumSize(2, joinGameFailureReason_.getNumber()); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code JoinGameFailedMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.JoinGameFailedMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - playerId_ = 0; + joinGameFailureReason_ = de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason.invalidGame; bitField0_ = (bitField0_ & ~0x00000002); - isGameAdmin_ = false; - bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage build() { - de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage build() { + de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage result = new de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage(this); + + public de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage result = new de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -15182,59 +18957,206 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.playerId_ = playerId_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.isGameAdmin_ = isGameAdmin_; + result.joinGameFailureReason_ = joinGameFailureReason_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } - if (other.hasPlayerId()) { - setPlayerId(other.getPlayerId()); - } - if (other.hasIsGameAdmin()) { - setIsGameAdmin(other.getIsGameAdmin()); + if (other.hasJoinGameFailureReason()) { + setJoinGameFailureReason(other.getJoinGameFailureReason()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { return false; } - if (!hasPlayerId()) { - - return false; - } - if (!hasIsGameAdmin()) { + if (!hasJoinGameFailureReason()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; + private de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason_ = de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason.invalidGame; + /** + * required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; + */ + public boolean hasJoinGameFailureReason() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; + */ + public de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason getJoinGameFailureReason() { + return joinGameFailureReason_; + } + /** + * required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; + */ + public Builder setJoinGameFailureReason(de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + joinGameFailureReason_ = value; + + return this; + } + /** + * required .JoinGameFailedMessage.JoinGameFailureReason joinGameFailureReason = 2; + */ + public Builder clearJoinGameFailureReason() { + bitField0_ = (bitField0_ & ~0x00000002); + joinGameFailureReason_ = de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.JoinGameFailureReason.invalidGame; + + return this; + } + + // @@protoc_insertion_point(builder_scope:JoinGameFailedMessage) + } + + static { + defaultInstance = new JoinGameFailedMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:JoinGameFailedMessage) + } + + public interface GamePlayerJoinedMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ + boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ + int getPlayerId(); + + // required bool isGameAdmin = 3; + /** + * required bool isGameAdmin = 3; + */ + boolean hasIsGameAdmin(); + /** + * required bool isGameAdmin = 3; + */ + boolean getIsGameAdmin(); + } + /** + * Protobuf type {@code GamePlayerJoinedMessage} + */ + public static final class GamePlayerJoinedMessage extends + com.google.protobuf.GeneratedMessageLite + implements GamePlayerJoinedMessageOrBuilder { + // Use GamePlayerJoinedMessage.newBuilder() to construct. + private GamePlayerJoinedMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private GamePlayerJoinedMessage(boolean noInit) {} + + private static final GamePlayerJoinedMessage defaultInstance; + public static GamePlayerJoinedMessage getDefaultInstance() { + return defaultInstance; + } + + public GamePlayerJoinedMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private GamePlayerJoinedMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -15255,202 +19177,89 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // required bool isGameAdmin = 3; - private boolean isGameAdmin_ ; - public boolean hasIsGameAdmin() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public boolean getIsGameAdmin() { - return isGameAdmin_; - } - public Builder setIsGameAdmin(boolean value) { - bitField0_ |= 0x00000004; - isGameAdmin_ = value; - - return this; - } - public Builder clearIsGameAdmin() { - bitField0_ = (bitField0_ & ~0x00000004); - isGameAdmin_ = false; - - return this; - } - - // @@protoc_insertion_point(builder_scope:GamePlayerJoinedMessage) } - - static { - defaultInstance = new GamePlayerJoinedMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:GamePlayerJoinedMessage) - } - - public interface GamePlayerLeftMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 playerId = 2; - boolean hasPlayerId(); - int getPlayerId(); - - // required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; - boolean hasGamePlayerLeftReason(); - de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason getGamePlayerLeftReason(); - } - public static final class GamePlayerLeftMessage extends - com.google.protobuf.GeneratedMessageLite - implements GamePlayerLeftMessageOrBuilder { - // Use GamePlayerLeftMessage.newBuilder() to construct. - private GamePlayerLeftMessage(Builder builder) { - super(builder); - } - private GamePlayerLeftMessage(boolean noInit) {} - - private static final GamePlayerLeftMessage defaultInstance; - public static GamePlayerLeftMessage getDefaultInstance() { - return defaultInstance; - } - - public GamePlayerLeftMessage getDefaultInstanceForType() { - return defaultInstance; - } - - public enum GamePlayerLeftReason - implements com.google.protobuf.Internal.EnumLite { - leftOnRequest(0, 0), - leftKicked(1, 1), - leftError(2, 2), - ; - - public static final int leftOnRequest_VALUE = 0; - public static final int leftKicked_VALUE = 1; - public static final int leftError_VALUE = 2; - - - public final int getNumber() { return value; } - - public static GamePlayerLeftReason valueOf(int value) { - switch (value) { - case 0: return leftOnRequest; - case 1: return leftKicked; - case 2: return leftError; - default: return null; - } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GamePlayerJoinedMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GamePlayerJoinedMessage(input, extensionRegistry); } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public GamePlayerLeftReason findValueByNumber(int number) { - return GamePlayerLeftReason.valueOf(number); - } - }; - - private final int value; - - private GamePlayerLeftReason(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:GamePlayerLeftMessage.GamePlayerLeftReason) + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 playerId = 2; public static final int PLAYERID_FIELD_NUMBER = 2; private int playerId_; + /** + * required uint32 playerId = 2; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 playerId = 2; + */ public int getPlayerId() { return playerId_; } - - // required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; - public static final int GAMEPLAYERLEFTREASON_FIELD_NUMBER = 3; - private de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason_; - public boolean hasGamePlayerLeftReason() { + + // required bool isGameAdmin = 3; + public static final int ISGAMEADMIN_FIELD_NUMBER = 3; + private boolean isGameAdmin_; + /** + * required bool isGameAdmin = 3; + */ + public boolean hasIsGameAdmin() { return ((bitField0_ & 0x00000004) == 0x00000004); } - public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason getGamePlayerLeftReason() { - return gamePlayerLeftReason_; + /** + * required bool isGameAdmin = 3; + */ + public boolean getIsGameAdmin() { + return isGameAdmin_; } - + private void initFields() { gameId_ = 0; playerId_ = 0; - gamePlayerLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; + isGameAdmin_ = false; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -15459,14 +19268,14 @@ public final class ProtoBuf { memoizedIsInitialized = 0; return false; } - if (!hasGamePlayerLeftReason()) { + if (!hasIsGameAdmin()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -15477,15 +19286,15 @@ public final class ProtoBuf { output.writeUInt32(2, playerId_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeEnum(3, gamePlayerLeftReason_.getNumber()); + output.writeBool(3, isGameAdmin_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -15497,147 +19306,126 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(3, gamePlayerLeftReason_.getNumber()); + .computeBoolSize(3, isGameAdmin_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code GamePlayerJoinedMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); playerId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); - gamePlayerLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; + isGameAdmin_ = false; bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage build() { - de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage build() { + de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage result = new de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage(this); + + public de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage result = new de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -15651,25 +19439,25 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } - result.gamePlayerLeftReason_ = gamePlayerLeftReason_; + result.isGameAdmin_ = isGameAdmin_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } if (other.hasPlayerId()) { setPlayerId(other.getPlayerId()); } - if (other.hasGamePlayerLeftReason()) { - setGamePlayerLeftReason(other.getGamePlayerLeftReason()); + if (other.hasIsGameAdmin()) { + setIsGameAdmin(other.getIsGameAdmin()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -15679,27 +19467,215 @@ public final class ProtoBuf { return false; } - if (!hasGamePlayerLeftReason()) { + if (!hasIsGameAdmin()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // required bool isGameAdmin = 3; + private boolean isGameAdmin_ ; + /** + * required bool isGameAdmin = 3; + */ + public boolean hasIsGameAdmin() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required bool isGameAdmin = 3; + */ + public boolean getIsGameAdmin() { + return isGameAdmin_; + } + /** + * required bool isGameAdmin = 3; + */ + public Builder setIsGameAdmin(boolean value) { + bitField0_ |= 0x00000004; + isGameAdmin_ = value; + + return this; + } + /** + * required bool isGameAdmin = 3; + */ + public Builder clearIsGameAdmin() { + bitField0_ = (bitField0_ & ~0x00000004); + isGameAdmin_ = false; + + return this; + } + + // @@protoc_insertion_point(builder_scope:GamePlayerJoinedMessage) + } + + static { + defaultInstance = new GamePlayerJoinedMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:GamePlayerJoinedMessage) + } + + public interface GamePlayerLeftMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ + boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ + int getPlayerId(); + + // required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; + */ + boolean hasGamePlayerLeftReason(); + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; + */ + de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason getGamePlayerLeftReason(); + } + /** + * Protobuf type {@code GamePlayerLeftMessage} + */ + public static final class GamePlayerLeftMessage extends + com.google.protobuf.GeneratedMessageLite + implements GamePlayerLeftMessageOrBuilder { + // Use GamePlayerLeftMessage.newBuilder() to construct. + private GamePlayerLeftMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private GamePlayerLeftMessage(boolean noInit) {} + + private static final GamePlayerLeftMessage defaultInstance; + public static GamePlayerLeftMessage getDefaultInstance() { + return defaultInstance; + } + + public GamePlayerLeftMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private GamePlayerLeftMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -15724,146 +19700,154 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GamePlayerLeftMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GamePlayerLeftMessage(input, extensionRegistry); } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; - private de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; - public boolean hasGamePlayerLeftReason() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason getGamePlayerLeftReason() { - return gamePlayerLeftReason_; - } - public Builder setGamePlayerLeftReason(de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason value) { - if (value == null) { - throw new NullPointerException(); + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code GamePlayerLeftMessage.GamePlayerLeftReason} + */ + public enum GamePlayerLeftReason + implements com.google.protobuf.Internal.EnumLite { + /** + * leftOnRequest = 0; + */ + leftOnRequest(0, 0), + /** + * leftKicked = 1; + */ + leftKicked(1, 1), + /** + * leftError = 2; + */ + leftError(2, 2), + ; + + /** + * leftOnRequest = 0; + */ + public static final int leftOnRequest_VALUE = 0; + /** + * leftKicked = 1; + */ + public static final int leftKicked_VALUE = 1; + /** + * leftError = 2; + */ + public static final int leftError_VALUE = 2; + + + public final int getNumber() { return value; } + + public static GamePlayerLeftReason valueOf(int value) { + switch (value) { + case 0: return leftOnRequest; + case 1: return leftKicked; + case 2: return leftError; + default: return null; } - bitField0_ |= 0x00000004; - gamePlayerLeftReason_ = value; - - return this; } - public Builder clearGamePlayerLeftReason() { - bitField0_ = (bitField0_ & ~0x00000004); - gamePlayerLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; - - return this; + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; } - - // @@protoc_insertion_point(builder_scope:GamePlayerLeftMessage) + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public GamePlayerLeftReason findValueByNumber(int number) { + return GamePlayerLeftReason.valueOf(number); + } + }; + + private final int value; + + private GamePlayerLeftReason(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:GamePlayerLeftMessage.GamePlayerLeftReason) } - - static { - defaultInstance = new GamePlayerLeftMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:GamePlayerLeftMessage) - } - - public interface GameSpectatorJoinedMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 playerId = 2; - boolean hasPlayerId(); - int getPlayerId(); - } - public static final class GameSpectatorJoinedMessage extends - com.google.protobuf.GeneratedMessageLite - implements GameSpectatorJoinedMessageOrBuilder { - // Use GameSpectatorJoinedMessage.newBuilder() to construct. - private GameSpectatorJoinedMessage(Builder builder) { - super(builder); - } - private GameSpectatorJoinedMessage(boolean noInit) {} - - private static final GameSpectatorJoinedMessage defaultInstance; - public static GameSpectatorJoinedMessage getDefaultInstance() { - return defaultInstance; - } - - public GameSpectatorJoinedMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 playerId = 2; public static final int PLAYERID_FIELD_NUMBER = 2; private int playerId_; + /** + * required uint32 playerId = 2; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 playerId = 2; + */ public int getPlayerId() { return playerId_; } - + + // required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; + public static final int GAMEPLAYERLEFTREASON_FIELD_NUMBER = 3; + private de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason_; + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; + */ + public boolean hasGamePlayerLeftReason() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; + */ + public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason getGamePlayerLeftReason() { + return gamePlayerLeftReason_; + } + private void initFields() { gameId_ = 0; playerId_ = 0; + gamePlayerLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -15872,10 +19856,14 @@ public final class ProtoBuf { memoizedIsInitialized = 0; return false; } + if (!hasGamePlayerLeftReason()) { + memoizedIsInitialized = 0; + return false; + } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -15885,13 +19873,16 @@ public final class ProtoBuf { if (((bitField0_ & 0x00000002) == 0x00000002)) { output.writeUInt32(2, playerId_); } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeEnum(3, gamePlayerLeftReason_.getNumber()); + } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -15901,143 +19892,128 @@ public final class ProtoBuf { size += com.google.protobuf.CodedOutputStream .computeUInt32Size(2, playerId_); } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(3, gamePlayerLeftReason_.getNumber()); + } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code GamePlayerLeftMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); playerId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); + gamePlayerLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage build() { - de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage build() { + de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage result = new de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage(this); + + public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage result = new de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -16048,21 +20024,28 @@ public final class ProtoBuf { to_bitField0_ |= 0x00000002; } result.playerId_ = playerId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.gamePlayerLeftReason_ = gamePlayerLeftReason_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } if (other.hasPlayerId()) { setPlayerId(other.getPlayerId()); } + if (other.hasGamePlayerLeftReason()) { + setGamePlayerLeftReason(other.getGamePlayerLeftReason()); + } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -16072,23 +20055,208 @@ public final class ProtoBuf { return false; } + if (!hasGamePlayerLeftReason()) { + + return false; + } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; + private de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; + */ + public boolean hasGamePlayerLeftReason() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; + */ + public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason getGamePlayerLeftReason() { + return gamePlayerLeftReason_; + } + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; + */ + public Builder setGamePlayerLeftReason(de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + gamePlayerLeftReason_ = value; + + return this; + } + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gamePlayerLeftReason = 3; + */ + public Builder clearGamePlayerLeftReason() { + bitField0_ = (bitField0_ & ~0x00000004); + gamePlayerLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; + + return this; + } + + // @@protoc_insertion_point(builder_scope:GamePlayerLeftMessage) + } + + static { + defaultInstance = new GamePlayerLeftMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:GamePlayerLeftMessage) + } + + public interface GameSpectatorJoinedMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ + boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ + int getPlayerId(); + } + /** + * Protobuf type {@code GameSpectatorJoinedMessage} + */ + public static final class GameSpectatorJoinedMessage extends + com.google.protobuf.GeneratedMessageLite + implements GameSpectatorJoinedMessageOrBuilder { + // Use GameSpectatorJoinedMessage.newBuilder() to construct. + private GameSpectatorJoinedMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private GameSpectatorJoinedMessage(boolean noInit) {} + + private static final GameSpectatorJoinedMessage defaultInstance; + public static GameSpectatorJoinedMessage getDefaultInstance() { + return defaultInstance; + } + + public GameSpectatorJoinedMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private GameSpectatorJoinedMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -16104,137 +20272,72 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:GameSpectatorJoinedMessage) } - - static { - defaultInstance = new GameSpectatorJoinedMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GameSpectatorJoinedMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GameSpectatorJoinedMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:GameSpectatorJoinedMessage) - } - - public interface GameSpectatorLeftMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 playerId = 2; - boolean hasPlayerId(); - int getPlayerId(); - - // required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; - boolean hasGameSpectatorLeftReason(); - de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason getGameSpectatorLeftReason(); - } - public static final class GameSpectatorLeftMessage extends - com.google.protobuf.GeneratedMessageLite - implements GameSpectatorLeftMessageOrBuilder { - // Use GameSpectatorLeftMessage.newBuilder() to construct. - private GameSpectatorLeftMessage(Builder builder) { - super(builder); - } - private GameSpectatorLeftMessage(boolean noInit) {} - - private static final GameSpectatorLeftMessage defaultInstance; - public static GameSpectatorLeftMessage getDefaultInstance() { - return defaultInstance; - } - - public GameSpectatorLeftMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 playerId = 2; public static final int PLAYERID_FIELD_NUMBER = 2; private int playerId_; + /** + * required uint32 playerId = 2; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 playerId = 2; + */ public int getPlayerId() { return playerId_; } - - // required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; - public static final int GAMESPECTATORLEFTREASON_FIELD_NUMBER = 3; - private de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason_; - public boolean hasGameSpectatorLeftReason() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason getGameSpectatorLeftReason() { - return gameSpectatorLeftReason_; - } - + private void initFields() { gameId_ = 0; playerId_ = 0; - gameSpectatorLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -16243,14 +20346,10 @@ public final class ProtoBuf { memoizedIsInitialized = 0; return false; } - if (!hasGameSpectatorLeftReason()) { - memoizedIsInitialized = 0; - return false; - } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -16260,16 +20359,13 @@ public final class ProtoBuf { if (((bitField0_ & 0x00000002) == 0x00000002)) { output.writeUInt32(2, playerId_); } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeEnum(3, gameSpectatorLeftReason_.getNumber()); - } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -16279,149 +20375,122 @@ public final class ProtoBuf { size += com.google.protobuf.CodedOutputStream .computeUInt32Size(2, playerId_); } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(3, gameSpectatorLeftReason_.getNumber()); - } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code GameSpectatorJoinedMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); playerId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); - gameSpectatorLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; - bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage build() { - de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage build() { + de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage result = new de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage(this); + + public de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage result = new de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -16432,28 +20501,21 @@ public final class ProtoBuf { to_bitField0_ |= 0x00000002; } result.playerId_ = playerId_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.gameSpectatorLeftReason_ = gameSpectatorLeftReason_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } if (other.hasPlayerId()) { setPlayerId(other.getPlayerId()); } - if (other.hasGameSpectatorLeftReason()) { - setGameSpectatorLeftReason(other.getGameSpectatorLeftReason()); - } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -16463,27 +20525,178 @@ public final class ProtoBuf { return false; } - if (!hasGameSpectatorLeftReason()) { - - return false; - } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:GameSpectatorJoinedMessage) + } + + static { + defaultInstance = new GameSpectatorJoinedMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:GameSpectatorJoinedMessage) + } + + public interface GameSpectatorLeftMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ + boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ + int getPlayerId(); + + // required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; + */ + boolean hasGameSpectatorLeftReason(); + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; + */ + de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason getGameSpectatorLeftReason(); + } + /** + * Protobuf type {@code GameSpectatorLeftMessage} + */ + public static final class GameSpectatorLeftMessage extends + com.google.protobuf.GeneratedMessageLite + implements GameSpectatorLeftMessageOrBuilder { + // Use GameSpectatorLeftMessage.newBuilder() to construct. + private GameSpectatorLeftMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private GameSpectatorLeftMessage(boolean noInit) {} + + private static final GameSpectatorLeftMessage defaultInstance; + public static GameSpectatorLeftMessage getDefaultInstance() { + return defaultInstance; + } + + public GameSpectatorLeftMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private GameSpectatorLeftMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -16508,158 +20721,105 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; - private de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; - public boolean hasGameSpectatorLeftReason() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason getGameSpectatorLeftReason() { - return gameSpectatorLeftReason_; - } - public Builder setGameSpectatorLeftReason(de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000004; - gameSpectatorLeftReason_ = value; - - return this; - } - public Builder clearGameSpectatorLeftReason() { - bitField0_ = (bitField0_ & ~0x00000004); - gameSpectatorLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; - - return this; - } - - // @@protoc_insertion_point(builder_scope:GameSpectatorLeftMessage) } - - static { - defaultInstance = new GameSpectatorLeftMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GameSpectatorLeftMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GameSpectatorLeftMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:GameSpectatorLeftMessage) - } - - public interface GameAdminChangedMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 newAdminPlayerId = 2; - boolean hasNewAdminPlayerId(); - int getNewAdminPlayerId(); - } - public static final class GameAdminChangedMessage extends - com.google.protobuf.GeneratedMessageLite - implements GameAdminChangedMessageOrBuilder { - // Use GameAdminChangedMessage.newBuilder() to construct. - private GameAdminChangedMessage(Builder builder) { - super(builder); - } - private GameAdminChangedMessage(boolean noInit) {} - - private static final GameAdminChangedMessage defaultInstance; - public static GameAdminChangedMessage getDefaultInstance() { - return defaultInstance; - } - - public GameAdminChangedMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - - // required uint32 newAdminPlayerId = 2; - public static final int NEWADMINPLAYERID_FIELD_NUMBER = 2; - private int newAdminPlayerId_; - public boolean hasNewAdminPlayerId() { + + // required uint32 playerId = 2; + public static final int PLAYERID_FIELD_NUMBER = 2; + private int playerId_; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public int getNewAdminPlayerId() { - return newAdminPlayerId_; + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; } - + + // required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; + public static final int GAMESPECTATORLEFTREASON_FIELD_NUMBER = 3; + private de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason_; + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; + */ + public boolean hasGameSpectatorLeftReason() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; + */ + public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason getGameSpectatorLeftReason() { + return gameSpectatorLeftReason_; + } + private void initFields() { gameId_ = 0; - newAdminPlayerId_ = 0; + playerId_ = 0; + gameSpectatorLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } - if (!hasNewAdminPlayerId()) { + if (!hasPlayerId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasGameSpectatorLeftReason()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -16667,15 +20827,18 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, newAdminPlayerId_); + output.writeUInt32(2, playerId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeEnum(3, gameSpectatorLeftReason_.getNumber()); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -16683,145 +20846,130 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, newAdminPlayerId_); + .computeUInt32Size(2, playerId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(3, gameSpectatorLeftReason_.getNumber()); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code GameSpectatorLeftMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.GameAdminChangedMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - newAdminPlayerId_ = 0; + playerId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); + gameSpectatorLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage build() { - de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage build() { + de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage result = new de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage(this); + + public de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage result = new de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -16831,48 +20979,240 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.newAdminPlayerId_ = newAdminPlayerId_; + result.playerId_ = playerId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.gameSpectatorLeftReason_ = gameSpectatorLeftReason_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } - if (other.hasNewAdminPlayerId()) { - setNewAdminPlayerId(other.getNewAdminPlayerId()); + if (other.hasPlayerId()) { + setPlayerId(other.getPlayerId()); + } + if (other.hasGameSpectatorLeftReason()) { + setGameSpectatorLeftReason(other.getGameSpectatorLeftReason()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { return false; } - if (!hasNewAdminPlayerId()) { + if (!hasPlayerId()) { + + return false; + } + if (!hasGameSpectatorLeftReason()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; + private de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; + */ + public boolean hasGameSpectatorLeftReason() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; + */ + public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason getGameSpectatorLeftReason() { + return gameSpectatorLeftReason_; + } + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; + */ + public Builder setGameSpectatorLeftReason(de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + gameSpectatorLeftReason_ = value; + + return this; + } + /** + * required .GamePlayerLeftMessage.GamePlayerLeftReason gameSpectatorLeftReason = 3; + */ + public Builder clearGameSpectatorLeftReason() { + bitField0_ = (bitField0_ & ~0x00000004); + gameSpectatorLeftReason_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.GamePlayerLeftReason.leftOnRequest; + + return this; + } + + // @@protoc_insertion_point(builder_scope:GameSpectatorLeftMessage) + } + + static { + defaultInstance = new GameSpectatorLeftMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:GameSpectatorLeftMessage) + } + + public interface GameAdminChangedMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 newAdminPlayerId = 2; + /** + * required uint32 newAdminPlayerId = 2; + */ + boolean hasNewAdminPlayerId(); + /** + * required uint32 newAdminPlayerId = 2; + */ + int getNewAdminPlayerId(); + } + /** + * Protobuf type {@code GameAdminChangedMessage} + */ + public static final class GameAdminChangedMessage extends + com.google.protobuf.GeneratedMessageLite + implements GameAdminChangedMessageOrBuilder { + // Use GameAdminChangedMessage.newBuilder() to construct. + private GameAdminChangedMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private GameAdminChangedMessage(boolean noInit) {} + + private static final GameAdminChangedMessage defaultInstance; + public static GameAdminChangedMessage getDefaultInstance() { + return defaultInstance; + } + + public GameAdminChangedMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private GameAdminChangedMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -16888,187 +21228,84 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 newAdminPlayerId = 2; - private int newAdminPlayerId_ ; - public boolean hasNewAdminPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getNewAdminPlayerId() { - return newAdminPlayerId_; - } - public Builder setNewAdminPlayerId(int value) { - bitField0_ |= 0x00000002; - newAdminPlayerId_ = value; - - return this; - } - public Builder clearNewAdminPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - newAdminPlayerId_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:GameAdminChangedMessage) } - - static { - defaultInstance = new GameAdminChangedMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:GameAdminChangedMessage) - } - - public interface RemovedFromGameMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; - boolean hasRemovedFromGameReason(); - de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason getRemovedFromGameReason(); - } - public static final class RemovedFromGameMessage extends - com.google.protobuf.GeneratedMessageLite - implements RemovedFromGameMessageOrBuilder { - // Use RemovedFromGameMessage.newBuilder() to construct. - private RemovedFromGameMessage(Builder builder) { - super(builder); - } - private RemovedFromGameMessage(boolean noInit) {} - - private static final RemovedFromGameMessage defaultInstance; - public static RemovedFromGameMessage getDefaultInstance() { - return defaultInstance; - } - - public RemovedFromGameMessage getDefaultInstanceForType() { - return defaultInstance; - } - - public enum RemovedFromGameReason - implements com.google.protobuf.Internal.EnumLite { - removedOnRequest(0, 0), - kickedFromGame(1, 1), - gameIsFull(2, 2), - gameIsRunning(3, 3), - gameTimeout(4, 4), - removedStartFailed(5, 5), - ; - - public static final int removedOnRequest_VALUE = 0; - public static final int kickedFromGame_VALUE = 1; - public static final int gameIsFull_VALUE = 2; - public static final int gameIsRunning_VALUE = 3; - public static final int gameTimeout_VALUE = 4; - public static final int removedStartFailed_VALUE = 5; - - - public final int getNumber() { return value; } - - public static RemovedFromGameReason valueOf(int value) { - switch (value) { - case 0: return removedOnRequest; - case 1: return kickedFromGame; - case 2: return gameIsFull; - case 3: return gameIsRunning; - case 4: return gameTimeout; - case 5: return removedStartFailed; - default: return null; - } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GameAdminChangedMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GameAdminChangedMessage(input, extensionRegistry); } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public RemovedFromGameReason findValueByNumber(int number) { - return RemovedFromGameReason.valueOf(number); - } - }; - - private final int value; - - private RemovedFromGameReason(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:RemovedFromGameMessage.RemovedFromGameReason) + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - - // required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; - public static final int REMOVEDFROMGAMEREASON_FIELD_NUMBER = 2; - private de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason_; - public boolean hasRemovedFromGameReason() { + + // required uint32 newAdminPlayerId = 2; + public static final int NEWADMINPLAYERID_FIELD_NUMBER = 2; + private int newAdminPlayerId_; + /** + * required uint32 newAdminPlayerId = 2; + */ + public boolean hasNewAdminPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason getRemovedFromGameReason() { - return removedFromGameReason_; + /** + * required uint32 newAdminPlayerId = 2; + */ + public int getNewAdminPlayerId() { + return newAdminPlayerId_; } - + private void initFields() { gameId_ = 0; - removedFromGameReason_ = de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason.removedOnRequest; + newAdminPlayerId_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } - if (!hasRemovedFromGameReason()) { + if (!hasNewAdminPlayerId()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -17076,15 +21313,15 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeEnum(2, removedFromGameReason_.getNumber()); + output.writeUInt32(2, newAdminPlayerId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -17092,145 +21329,124 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, removedFromGameReason_.getNumber()); + .computeUInt32Size(2, newAdminPlayerId_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code GameAdminChangedMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.RemovedFromGameMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.GameAdminChangedMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - removedFromGameReason_ = de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason.removedOnRequest; + newAdminPlayerId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage build() { - de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage build() { + de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage result = new de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage(this); + + public de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage result = new de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -17240,48 +21456,193 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.removedFromGameReason_ = removedFromGameReason_; + result.newAdminPlayerId_ = newAdminPlayerId_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } - if (other.hasRemovedFromGameReason()) { - setRemovedFromGameReason(other.getRemovedFromGameReason()); + if (other.hasNewAdminPlayerId()) { + setNewAdminPlayerId(other.getNewAdminPlayerId()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { return false; } - if (!hasRemovedFromGameReason()) { + if (!hasNewAdminPlayerId()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 newAdminPlayerId = 2; + private int newAdminPlayerId_ ; + /** + * required uint32 newAdminPlayerId = 2; + */ + public boolean hasNewAdminPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 newAdminPlayerId = 2; + */ + public int getNewAdminPlayerId() { + return newAdminPlayerId_; + } + /** + * required uint32 newAdminPlayerId = 2; + */ + public Builder setNewAdminPlayerId(int value) { + bitField0_ |= 0x00000002; + newAdminPlayerId_ = value; + + return this; + } + /** + * required uint32 newAdminPlayerId = 2; + */ + public Builder clearNewAdminPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + newAdminPlayerId_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:GameAdminChangedMessage) + } + + static { + defaultInstance = new GameAdminChangedMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:GameAdminChangedMessage) + } + + public interface RemovedFromGameMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; + /** + * required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; + */ + boolean hasRemovedFromGameReason(); + /** + * required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; + */ + de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason getRemovedFromGameReason(); + } + /** + * Protobuf type {@code RemovedFromGameMessage} + */ + public static final class RemovedFromGameMessage extends + com.google.protobuf.GeneratedMessageLite + implements RemovedFromGameMessageOrBuilder { + // Use RemovedFromGameMessage.newBuilder() to construct. + private RemovedFromGameMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private RemovedFromGameMessage(boolean noInit) {} + + private static final RemovedFromGameMessage defaultInstance; + public static RemovedFromGameMessage getDefaultInstance() { + return defaultInstance; + } + + public RemovedFromGameMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private RemovedFromGameMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -17301,39 +21662,431 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public RemovedFromGameMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new RemovedFromGameMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code RemovedFromGameMessage.RemovedFromGameReason} + */ + public enum RemovedFromGameReason + implements com.google.protobuf.Internal.EnumLite { + /** + * removedOnRequest = 0; + * + *
+       * No error, client wished to leave.
+       * 
+ */ + removedOnRequest(0, 0), + /** + * kickedFromGame = 1; + */ + kickedFromGame(1, 1), + /** + * gameIsFull = 2; + */ + gameIsFull(2, 2), + /** + * gameIsRunning = 3; + */ + gameIsRunning(3, 3), + /** + * gameTimeout = 4; + */ + gameTimeout(4, 4), + /** + * removedStartFailed = 5; + */ + removedStartFailed(5, 5), + ; + + /** + * removedOnRequest = 0; + * + *
+       * No error, client wished to leave.
+       * 
+ */ + public static final int removedOnRequest_VALUE = 0; + /** + * kickedFromGame = 1; + */ + public static final int kickedFromGame_VALUE = 1; + /** + * gameIsFull = 2; + */ + public static final int gameIsFull_VALUE = 2; + /** + * gameIsRunning = 3; + */ + public static final int gameIsRunning_VALUE = 3; + /** + * gameTimeout = 4; + */ + public static final int gameTimeout_VALUE = 4; + /** + * removedStartFailed = 5; + */ + public static final int removedStartFailed_VALUE = 5; + + + public final int getNumber() { return value; } + + public static RemovedFromGameReason valueOf(int value) { + switch (value) { + case 0: return removedOnRequest; + case 1: return kickedFromGame; + case 2: return gameIsFull; + case 3: return gameIsRunning; + case 4: return gameTimeout; + case 5: return removedStartFailed; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public RemovedFromGameReason findValueByNumber(int number) { + return RemovedFromGameReason.valueOf(number); + } + }; + + private final int value; + + private RemovedFromGameReason(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:RemovedFromGameMessage.RemovedFromGameReason) + } + + private int bitField0_; + // required uint32 gameId = 1; + public static final int GAMEID_FIELD_NUMBER = 1; + private int gameId_; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + + // required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; + public static final int REMOVEDFROMGAMEREASON_FIELD_NUMBER = 2; + private de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason_; + /** + * required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; + */ + public boolean hasRemovedFromGameReason() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; + */ + public de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason getRemovedFromGameReason() { + return removedFromGameReason_; + } + + private void initFields() { + gameId_ = 0; + removedFromGameReason_ = de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason.removedOnRequest; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasGameId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasRemovedFromGameReason()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeEnum(2, removedFromGameReason_.getNumber()); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(2, removedFromGameReason_.getNumber()); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code RemovedFromGameMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.RemovedFromGameMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + gameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + removedFromGameReason_ = de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason.removedOnRequest; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage build() { + de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage result = new de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.gameId_ = gameId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.removedFromGameReason_ = removedFromGameReason_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.getDefaultInstance()) return this; + if (other.hasGameId()) { + setGameId(other.getGameId()); + } + if (other.hasRemovedFromGameReason()) { + setRemovedFromGameReason(other.getRemovedFromGameReason()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasGameId()) { + + return false; + } + if (!hasRemovedFromGameReason()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; private de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason_ = de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason.removedOnRequest; + /** + * required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; + */ public boolean hasRemovedFromGameReason() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; + */ public de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason getRemovedFromGameReason() { return removedFromGameReason_; } + /** + * required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; + */ public Builder setRemovedFromGameReason(de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason value) { if (value == null) { throw new NullPointerException(); @@ -17343,74 +22096,162 @@ public final class ProtoBuf { return this; } + /** + * required .RemovedFromGameMessage.RemovedFromGameReason removedFromGameReason = 2; + */ public Builder clearRemovedFromGameReason() { bitField0_ = (bitField0_ & ~0x00000002); removedFromGameReason_ = de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.RemovedFromGameReason.removedOnRequest; return this; } - + // @@protoc_insertion_point(builder_scope:RemovedFromGameMessage) } - + static { defaultInstance = new RemovedFromGameMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:RemovedFromGameMessage) } - + public interface KickPlayerRequestMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ int getPlayerId(); } + /** + * Protobuf type {@code KickPlayerRequestMessage} + */ public static final class KickPlayerRequestMessage extends com.google.protobuf.GeneratedMessageLite implements KickPlayerRequestMessageOrBuilder { // Use KickPlayerRequestMessage.newBuilder() to construct. - private KickPlayerRequestMessage(Builder builder) { + private KickPlayerRequestMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private KickPlayerRequestMessage(boolean noInit) {} - + private static final KickPlayerRequestMessage defaultInstance; public static KickPlayerRequestMessage getDefaultInstance() { return defaultInstance; } - + public KickPlayerRequestMessage getDefaultInstanceForType() { return defaultInstance; } - + + private KickPlayerRequestMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + gameId_ = input.readUInt32(); + break; + } + case 16: { + bitField0_ |= 0x00000002; + playerId_ = input.readUInt32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public KickPlayerRequestMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new KickPlayerRequestMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 playerId = 2; public static final int PLAYERID_FIELD_NUMBER = 2; private int playerId_; + /** + * required uint32 playerId = 2; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 playerId = 2; + */ public int getPlayerId() { return playerId_; } - + private void initFields() { gameId_ = 0; playerId_ = 0; @@ -17419,7 +22260,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -17431,7 +22272,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -17442,12 +22283,12 @@ public final class ProtoBuf { output.writeUInt32(2, playerId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -17460,88 +22301,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code KickPlayerRequestMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage, Builder> @@ -17550,13 +22380,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -17565,15 +22395,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage build() { de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage result = buildPartial(); if (!result.isInitialized()) { @@ -17581,17 +22411,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage buildPartial() { de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage result = new de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage(this); int from_bitField0_ = bitField0_; @@ -17607,7 +22427,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage other) { if (other == de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -17618,7 +22438,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -17630,21 +22450,507 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:KickPlayerRequestMessage) + } + + static { + defaultInstance = new KickPlayerRequestMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:KickPlayerRequestMessage) + } + + public interface LeaveGameRequestMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + } + /** + * Protobuf type {@code LeaveGameRequestMessage} + */ + public static final class LeaveGameRequestMessage extends + com.google.protobuf.GeneratedMessageLite + implements LeaveGameRequestMessageOrBuilder { + // Use LeaveGameRequestMessage.newBuilder() to construct. + private LeaveGameRequestMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private LeaveGameRequestMessage(boolean noInit) {} + + private static final LeaveGameRequestMessage defaultInstance; + public static LeaveGameRequestMessage getDefaultInstance() { + return defaultInstance; + } + + public LeaveGameRequestMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private LeaveGameRequestMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + gameId_ = input.readUInt32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public LeaveGameRequestMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new LeaveGameRequestMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required uint32 gameId = 1; + public static final int GAMEID_FIELD_NUMBER = 1; + private int gameId_; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + + private void initFields() { + gameId_ = 0; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasGameId()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, gameId_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, gameId_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code LeaveGameRequestMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + gameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage build() { + de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage result = new de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.gameId_ = gameId_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.getDefaultInstance()) return this; + if (other.hasGameId()) { + setGameId(other.getGameId()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasGameId()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:LeaveGameRequestMessage) + } + + static { + defaultInstance = new LeaveGameRequestMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:LeaveGameRequestMessage) + } + + public interface InvitePlayerToGameMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ + boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ + int getPlayerId(); + } + /** + * Protobuf type {@code InvitePlayerToGameMessage} + */ + public static final class InvitePlayerToGameMessage extends + com.google.protobuf.GeneratedMessageLite + implements InvitePlayerToGameMessageOrBuilder { + // Use InvitePlayerToGameMessage.newBuilder() to construct. + private InvitePlayerToGameMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private InvitePlayerToGameMessage(boolean noInit) {} + + private static final InvitePlayerToGameMessage defaultInstance; + public static InvitePlayerToGameMessage getDefaultInstance() { + return defaultInstance; + } + + public InvitePlayerToGameMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private InvitePlayerToGameMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -17660,404 +22966,63 @@ public final class ProtoBuf { } } } - } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:KickPlayerRequestMessage) - } - - static { - defaultInstance = new KickPlayerRequestMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:KickPlayerRequestMessage) - } - - public interface LeaveGameRequestMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - } - public static final class LeaveGameRequestMessage extends - com.google.protobuf.GeneratedMessageLite - implements LeaveGameRequestMessageOrBuilder { - // Use LeaveGameRequestMessage.newBuilder() to construct. - private LeaveGameRequestMessage(Builder builder) { - super(builder); - } - private LeaveGameRequestMessage(boolean noInit) {} - - private static final LeaveGameRequestMessage defaultInstance; - public static LeaveGameRequestMessage getDefaultInstance() { - return defaultInstance; - } - - public LeaveGameRequestMessage getDefaultInstanceForType() { - return defaultInstance; - } - - private int bitField0_; - // required uint32 gameId = 1; - public static final int GAMEID_FIELD_NUMBER = 1; - private int gameId_; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - - private void initFields() { - gameId_ = 0; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasGameId()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, gameId_); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, gameId_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - gameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage build() { - de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage result = new de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.gameId_ = gameId_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.getDefaultInstance()) return this; - if (other.hasGameId()) { - setGameId(other.getGameId()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasGameId()) { - - return false; - } - return true; - } - - public Builder mergeFrom( + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public InvitePlayerToGameMessage parsePartialFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - gameId_ = input.readUInt32(); - break; - } - } - } + throws com.google.protobuf.InvalidProtocolBufferException { + return new InvitePlayerToGameMessage(input, extensionRegistry); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:LeaveGameRequestMessage) + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - static { - defaultInstance = new LeaveGameRequestMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:LeaveGameRequestMessage) - } - - public interface InvitePlayerToGameMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 playerId = 2; - boolean hasPlayerId(); - int getPlayerId(); - } - public static final class InvitePlayerToGameMessage extends - com.google.protobuf.GeneratedMessageLite - implements InvitePlayerToGameMessageOrBuilder { - // Use InvitePlayerToGameMessage.newBuilder() to construct. - private InvitePlayerToGameMessage(Builder builder) { - super(builder); - } - private InvitePlayerToGameMessage(boolean noInit) {} - - private static final InvitePlayerToGameMessage defaultInstance; - public static InvitePlayerToGameMessage getDefaultInstance() { - return defaultInstance; - } - - public InvitePlayerToGameMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 playerId = 2; public static final int PLAYERID_FIELD_NUMBER = 2; private int playerId_; + /** + * required uint32 playerId = 2; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 playerId = 2; + */ public int getPlayerId() { return playerId_; } - + private void initFields() { gameId_ = 0; playerId_ = 0; @@ -18066,7 +23031,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -18078,7 +23043,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -18089,12 +23054,12 @@ public final class ProtoBuf { output.writeUInt32(2, playerId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -18107,88 +23072,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code InvitePlayerToGameMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage, Builder> @@ -18197,13 +23151,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -18212,15 +23166,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage build() { de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage result = buildPartial(); if (!result.isInitialized()) { @@ -18228,17 +23182,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage buildPartial() { de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage result = new de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage(this); int from_bitField0_ = bitField0_; @@ -18254,7 +23198,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage other) { if (other == de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -18265,7 +23209,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -18277,416 +23221,176 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - gameId_ = input.readUInt32(); - break; - } - case 16: { - bitField0_ |= 0x00000002; - playerId_ = input.readUInt32(); - break; - } + de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // required uint32 playerId = 2; private int playerId_ ; + /** + * required uint32 playerId = 2; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 playerId = 2; + */ public int getPlayerId() { return playerId_; } + /** + * required uint32 playerId = 2; + */ public Builder setPlayerId(int value) { bitField0_ |= 0x00000002; playerId_ = value; return this; } + /** + * required uint32 playerId = 2; + */ public Builder clearPlayerId() { bitField0_ = (bitField0_ & ~0x00000002); playerId_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:InvitePlayerToGameMessage) } - + static { defaultInstance = new InvitePlayerToGameMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:InvitePlayerToGameMessage) } - + public interface InviteNotifyMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // required uint32 playerIdWho = 2; + /** + * required uint32 playerIdWho = 2; + */ boolean hasPlayerIdWho(); + /** + * required uint32 playerIdWho = 2; + */ int getPlayerIdWho(); - + // required uint32 playerIdByWhom = 3; + /** + * required uint32 playerIdByWhom = 3; + */ boolean hasPlayerIdByWhom(); + /** + * required uint32 playerIdByWhom = 3; + */ int getPlayerIdByWhom(); } + /** + * Protobuf type {@code InviteNotifyMessage} + */ public static final class InviteNotifyMessage extends com.google.protobuf.GeneratedMessageLite implements InviteNotifyMessageOrBuilder { // Use InviteNotifyMessage.newBuilder() to construct. - private InviteNotifyMessage(Builder builder) { + private InviteNotifyMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private InviteNotifyMessage(boolean noInit) {} - + private static final InviteNotifyMessage defaultInstance; public static InviteNotifyMessage getDefaultInstance() { return defaultInstance; } - + public InviteNotifyMessage getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required uint32 gameId = 1; - public static final int GAMEID_FIELD_NUMBER = 1; - private int gameId_; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - - // required uint32 playerIdWho = 2; - public static final int PLAYERIDWHO_FIELD_NUMBER = 2; - private int playerIdWho_; - public boolean hasPlayerIdWho() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerIdWho() { - return playerIdWho_; - } - - // required uint32 playerIdByWhom = 3; - public static final int PLAYERIDBYWHOM_FIELD_NUMBER = 3; - private int playerIdByWhom_; - public boolean hasPlayerIdByWhom() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public int getPlayerIdByWhom() { - return playerIdByWhom_; - } - - private void initFields() { - gameId_ = 0; - playerIdWho_ = 0; - playerIdByWhom_ = 0; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasGameId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPlayerIdWho()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPlayerIdByWhom()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, playerIdWho_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeUInt32(3, playerIdByWhom_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, playerIdWho_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(3, playerIdByWhom_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom( + + private InviteNotifyMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.InviteNotifyMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.InviteNotifyMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.InviteNotifyMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - gameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - playerIdWho_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - playerIdByWhom_ = 0; - bitField0_ = (bitField0_ & ~0x00000004); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.InviteNotifyMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.InviteNotifyMessage build() { - de.pokerth.protocol.ProtoBuf.InviteNotifyMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.InviteNotifyMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.InviteNotifyMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.InviteNotifyMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.InviteNotifyMessage result = new de.pokerth.protocol.ProtoBuf.InviteNotifyMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.gameId_ = gameId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.playerIdWho_ = playerIdWho_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.playerIdByWhom_ = playerIdByWhom_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.InviteNotifyMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.getDefaultInstance()) return this; - if (other.hasGameId()) { - setGameId(other.getGameId()); - } - if (other.hasPlayerIdWho()) { - setPlayerIdWho(other.getPlayerIdWho()); - } - if (other.hasPlayerIdByWhom()) { - setPlayerIdByWhom(other.getPlayerIdByWhom()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasGameId()) { - - return false; - } - if (!hasPlayerIdWho()) { - - return false; - } - if (!hasPlayerIdByWhom()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -18707,196 +23411,105 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerIdWho = 2; - private int playerIdWho_ ; - public boolean hasPlayerIdWho() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerIdWho() { - return playerIdWho_; - } - public Builder setPlayerIdWho(int value) { - bitField0_ |= 0x00000002; - playerIdWho_ = value; - - return this; - } - public Builder clearPlayerIdWho() { - bitField0_ = (bitField0_ & ~0x00000002); - playerIdWho_ = 0; - - return this; - } - - // required uint32 playerIdByWhom = 3; - private int playerIdByWhom_ ; - public boolean hasPlayerIdByWhom() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public int getPlayerIdByWhom() { - return playerIdByWhom_; - } - public Builder setPlayerIdByWhom(int value) { - bitField0_ |= 0x00000004; - playerIdByWhom_ = value; - - return this; - } - public Builder clearPlayerIdByWhom() { - bitField0_ = (bitField0_ & ~0x00000004); - playerIdByWhom_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:InviteNotifyMessage) } - - static { - defaultInstance = new InviteNotifyMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:InviteNotifyMessage) - } - - public interface RejectGameInvitationMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; - boolean hasMyRejectReason(); - de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason getMyRejectReason(); - } - public static final class RejectGameInvitationMessage extends - com.google.protobuf.GeneratedMessageLite - implements RejectGameInvitationMessageOrBuilder { - // Use RejectGameInvitationMessage.newBuilder() to construct. - private RejectGameInvitationMessage(Builder builder) { - super(builder); - } - private RejectGameInvitationMessage(boolean noInit) {} - - private static final RejectGameInvitationMessage defaultInstance; - public static RejectGameInvitationMessage getDefaultInstance() { - return defaultInstance; - } - - public RejectGameInvitationMessage getDefaultInstanceForType() { - return defaultInstance; - } - - public enum RejectGameInvReason - implements com.google.protobuf.Internal.EnumLite { - rejectReasonNo(0, 0), - rejectReasonBusy(1, 1), - ; - - public static final int rejectReasonNo_VALUE = 0; - public static final int rejectReasonBusy_VALUE = 1; - - - public final int getNumber() { return value; } - - public static RejectGameInvReason valueOf(int value) { - switch (value) { - case 0: return rejectReasonNo; - case 1: return rejectReasonBusy; - default: return null; - } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public InviteNotifyMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new InviteNotifyMessage(input, extensionRegistry); } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public RejectGameInvReason findValueByNumber(int number) { - return RejectGameInvReason.valueOf(number); - } - }; - - private final int value; - - private RejectGameInvReason(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:RejectGameInvitationMessage.RejectGameInvReason) + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - - // required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; - public static final int MYREJECTREASON_FIELD_NUMBER = 2; - private de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason myRejectReason_; - public boolean hasMyRejectReason() { + + // required uint32 playerIdWho = 2; + public static final int PLAYERIDWHO_FIELD_NUMBER = 2; + private int playerIdWho_; + /** + * required uint32 playerIdWho = 2; + */ + public boolean hasPlayerIdWho() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason getMyRejectReason() { - return myRejectReason_; + /** + * required uint32 playerIdWho = 2; + */ + public int getPlayerIdWho() { + return playerIdWho_; } - + + // required uint32 playerIdByWhom = 3; + public static final int PLAYERIDBYWHOM_FIELD_NUMBER = 3; + private int playerIdByWhom_; + /** + * required uint32 playerIdByWhom = 3; + */ + public boolean hasPlayerIdByWhom() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required uint32 playerIdByWhom = 3; + */ + public int getPlayerIdByWhom() { + return playerIdByWhom_; + } + private void initFields() { gameId_ = 0; - myRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; + playerIdWho_ = 0; + playerIdByWhom_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } - if (!hasMyRejectReason()) { + if (!hasPlayerIdWho()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPlayerIdByWhom()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -18904,15 +23517,18 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeEnum(2, myRejectReason_.getNumber()); + output.writeUInt32(2, playerIdWho_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeUInt32(3, playerIdByWhom_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -18920,145 +23536,130 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, myRejectReason_.getNumber()); + .computeUInt32Size(2, playerIdWho_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, playerIdByWhom_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.InviteNotifyMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code InviteNotifyMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.InviteNotifyMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.InviteNotifyMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - myRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; + playerIdWho_ = 0; bitField0_ = (bitField0_ & ~0x00000002); + playerIdByWhom_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.InviteNotifyMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage build() { - de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.InviteNotifyMessage build() { + de.pokerth.protocol.ProtoBuf.InviteNotifyMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage result = new de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage(this); + + public de.pokerth.protocol.ProtoBuf.InviteNotifyMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.InviteNotifyMessage result = new de.pokerth.protocol.ProtoBuf.InviteNotifyMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -19068,48 +23669,237 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.myRejectReason_ = myRejectReason_; + result.playerIdWho_ = playerIdWho_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.playerIdByWhom_ = playerIdByWhom_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.InviteNotifyMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } - if (other.hasMyRejectReason()) { - setMyRejectReason(other.getMyRejectReason()); + if (other.hasPlayerIdWho()) { + setPlayerIdWho(other.getPlayerIdWho()); + } + if (other.hasPlayerIdByWhom()) { + setPlayerIdByWhom(other.getPlayerIdByWhom()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { return false; } - if (!hasMyRejectReason()) { + if (!hasPlayerIdWho()) { + + return false; + } + if (!hasPlayerIdByWhom()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.InviteNotifyMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.InviteNotifyMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerIdWho = 2; + private int playerIdWho_ ; + /** + * required uint32 playerIdWho = 2; + */ + public boolean hasPlayerIdWho() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerIdWho = 2; + */ + public int getPlayerIdWho() { + return playerIdWho_; + } + /** + * required uint32 playerIdWho = 2; + */ + public Builder setPlayerIdWho(int value) { + bitField0_ |= 0x00000002; + playerIdWho_ = value; + + return this; + } + /** + * required uint32 playerIdWho = 2; + */ + public Builder clearPlayerIdWho() { + bitField0_ = (bitField0_ & ~0x00000002); + playerIdWho_ = 0; + + return this; + } + + // required uint32 playerIdByWhom = 3; + private int playerIdByWhom_ ; + /** + * required uint32 playerIdByWhom = 3; + */ + public boolean hasPlayerIdByWhom() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required uint32 playerIdByWhom = 3; + */ + public int getPlayerIdByWhom() { + return playerIdByWhom_; + } + /** + * required uint32 playerIdByWhom = 3; + */ + public Builder setPlayerIdByWhom(int value) { + bitField0_ |= 0x00000004; + playerIdByWhom_ = value; + + return this; + } + /** + * required uint32 playerIdByWhom = 3; + */ + public Builder clearPlayerIdByWhom() { + bitField0_ = (bitField0_ & ~0x00000004); + playerIdByWhom_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:InviteNotifyMessage) + } + + static { + defaultInstance = new InviteNotifyMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:InviteNotifyMessage) + } + + public interface RejectGameInvitationMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; + /** + * required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; + */ + boolean hasMyRejectReason(); + /** + * required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; + */ + de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason getMyRejectReason(); + } + /** + * Protobuf type {@code RejectGameInvitationMessage} + */ + public static final class RejectGameInvitationMessage extends + com.google.protobuf.GeneratedMessageLite + implements RejectGameInvitationMessageOrBuilder { + // Use RejectGameInvitationMessage.newBuilder() to construct. + private RejectGameInvitationMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private RejectGameInvitationMessage(boolean noInit) {} + + private static final RejectGameInvitationMessage defaultInstance; + public static RejectGameInvitationMessage getDefaultInstance() { + return defaultInstance; + } + + public RejectGameInvitationMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private RejectGameInvitationMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -19129,156 +23919,140 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public RejectGameInvitationMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new RejectGameInvitationMessage(input, extensionRegistry); } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; - private de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason myRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; - public boolean hasMyRejectReason() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason getMyRejectReason() { - return myRejectReason_; - } - public Builder setMyRejectReason(de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason value) { - if (value == null) { - throw new NullPointerException(); + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code RejectGameInvitationMessage.RejectGameInvReason} + */ + public enum RejectGameInvReason + implements com.google.protobuf.Internal.EnumLite { + /** + * rejectReasonNo = 0; + */ + rejectReasonNo(0, 0), + /** + * rejectReasonBusy = 1; + */ + rejectReasonBusy(1, 1), + ; + + /** + * rejectReasonNo = 0; + */ + public static final int rejectReasonNo_VALUE = 0; + /** + * rejectReasonBusy = 1; + */ + public static final int rejectReasonBusy_VALUE = 1; + + + public final int getNumber() { return value; } + + public static RejectGameInvReason valueOf(int value) { + switch (value) { + case 0: return rejectReasonNo; + case 1: return rejectReasonBusy; + default: return null; } - bitField0_ |= 0x00000002; - myRejectReason_ = value; - - return this; } - public Builder clearMyRejectReason() { - bitField0_ = (bitField0_ & ~0x00000002); - myRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; - - return this; + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; } - - // @@protoc_insertion_point(builder_scope:RejectGameInvitationMessage) + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public RejectGameInvReason findValueByNumber(int number) { + return RejectGameInvReason.valueOf(number); + } + }; + + private final int value; + + private RejectGameInvReason(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:RejectGameInvitationMessage.RejectGameInvReason) } - - static { - defaultInstance = new RejectGameInvitationMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:RejectGameInvitationMessage) - } - - public interface RejectInvNotifyMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 playerId = 2; - boolean hasPlayerId(); - int getPlayerId(); - - // required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; - boolean hasPlayerRejectReason(); - de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason getPlayerRejectReason(); - } - public static final class RejectInvNotifyMessage extends - com.google.protobuf.GeneratedMessageLite - implements RejectInvNotifyMessageOrBuilder { - // Use RejectInvNotifyMessage.newBuilder() to construct. - private RejectInvNotifyMessage(Builder builder) { - super(builder); - } - private RejectInvNotifyMessage(boolean noInit) {} - - private static final RejectInvNotifyMessage defaultInstance; - public static RejectInvNotifyMessage getDefaultInstance() { - return defaultInstance; - } - - public RejectInvNotifyMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - - // required uint32 playerId = 2; - public static final int PLAYERID_FIELD_NUMBER = 2; - private int playerId_; - public boolean hasPlayerId() { + + // required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; + public static final int MYREJECTREASON_FIELD_NUMBER = 2; + private de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason myRejectReason_; + /** + * required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; + */ + public boolean hasMyRejectReason() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public int getPlayerId() { - return playerId_; + /** + * required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; + */ + public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason getMyRejectReason() { + return myRejectReason_; } - - // required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; - public static final int PLAYERREJECTREASON_FIELD_NUMBER = 3; - private de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason playerRejectReason_; - public boolean hasPlayerRejectReason() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason getPlayerRejectReason() { - return playerRejectReason_; - } - + private void initFields() { gameId_ = 0; - playerId_ = 0; - playerRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; + myRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } - if (!hasPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPlayerRejectReason()) { + if (!hasMyRejectReason()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -19286,18 +24060,15 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, playerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeEnum(3, playerRejectReason_.getNumber()); + output.writeEnum(2, myRejectReason_.getNumber()); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -19305,151 +24076,124 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, playerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(3, playerRejectReason_.getNumber()); + .computeEnumSize(2, myRejectReason_.getNumber()); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code RejectGameInvitationMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - playerId_ = 0; + myRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; bitField0_ = (bitField0_ & ~0x00000002); - playerRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; - bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage build() { - de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage build() { + de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage result = new de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage(this); + + public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage result = new de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -19459,59 +24203,206 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.playerId_ = playerId_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.playerRejectReason_ = playerRejectReason_; + result.myRejectReason_ = myRejectReason_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } - if (other.hasPlayerId()) { - setPlayerId(other.getPlayerId()); - } - if (other.hasPlayerRejectReason()) { - setPlayerRejectReason(other.getPlayerRejectReason()); + if (other.hasMyRejectReason()) { + setMyRejectReason(other.getMyRejectReason()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { return false; } - if (!hasPlayerId()) { - - return false; - } - if (!hasPlayerRejectReason()) { + if (!hasMyRejectReason()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; + private de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason myRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; + /** + * required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; + */ + public boolean hasMyRejectReason() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; + */ + public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason getMyRejectReason() { + return myRejectReason_; + } + /** + * required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; + */ + public Builder setMyRejectReason(de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + myRejectReason_ = value; + + return this; + } + /** + * required .RejectGameInvitationMessage.RejectGameInvReason myRejectReason = 2; + */ + public Builder clearMyRejectReason() { + bitField0_ = (bitField0_ & ~0x00000002); + myRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; + + return this; + } + + // @@protoc_insertion_point(builder_scope:RejectGameInvitationMessage) + } + + static { + defaultInstance = new RejectGameInvitationMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:RejectGameInvitationMessage) + } + + public interface RejectInvNotifyMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ + boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ + int getPlayerId(); + + // required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; + /** + * required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; + */ + boolean hasPlayerRejectReason(); + /** + * required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; + */ + de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason getPlayerRejectReason(); + } + /** + * Protobuf type {@code RejectInvNotifyMessage} + */ + public static final class RejectInvNotifyMessage extends + com.google.protobuf.GeneratedMessageLite + implements RejectInvNotifyMessageOrBuilder { + // Use RejectInvNotifyMessage.newBuilder() to construct. + private RejectInvNotifyMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private RejectInvNotifyMessage(boolean noInit) {} + + private static final RejectInvNotifyMessage defaultInstance; + public static RejectInvNotifyMessage getDefaultInstance() { + return defaultInstance; + } + + public RejectInvNotifyMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private RejectInvNotifyMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -19536,214 +24427,105 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; - private de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason playerRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; - public boolean hasPlayerRejectReason() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason getPlayerRejectReason() { - return playerRejectReason_; - } - public Builder setPlayerRejectReason(de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000004; - playerRejectReason_ = value; - - return this; - } - public Builder clearPlayerRejectReason() { - bitField0_ = (bitField0_ & ~0x00000004); - playerRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; - - return this; - } - - // @@protoc_insertion_point(builder_scope:RejectInvNotifyMessage) } - - static { - defaultInstance = new RejectInvNotifyMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:RejectInvNotifyMessage) - } - - public interface StartEventMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required .StartEventMessage.StartEventType startEventType = 2; - boolean hasStartEventType(); - de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType getStartEventType(); - - // optional bool fillWithComputerPlayers = 3; - boolean hasFillWithComputerPlayers(); - boolean getFillWithComputerPlayers(); - } - public static final class StartEventMessage extends - com.google.protobuf.GeneratedMessageLite - implements StartEventMessageOrBuilder { - // Use StartEventMessage.newBuilder() to construct. - private StartEventMessage(Builder builder) { - super(builder); - } - private StartEventMessage(boolean noInit) {} - - private static final StartEventMessage defaultInstance; - public static StartEventMessage getDefaultInstance() { - return defaultInstance; - } - - public StartEventMessage getDefaultInstanceForType() { - return defaultInstance; - } - - public enum StartEventType - implements com.google.protobuf.Internal.EnumLite { - startEvent(0, 0), - rejoinEvent(1, 1), - ; - - public static final int startEvent_VALUE = 0; - public static final int rejoinEvent_VALUE = 1; - - - public final int getNumber() { return value; } - - public static StartEventType valueOf(int value) { - switch (value) { - case 0: return startEvent; - case 1: return rejoinEvent; - default: return null; - } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public RejectInvNotifyMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new RejectInvNotifyMessage(input, extensionRegistry); } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public StartEventType findValueByNumber(int number) { - return StartEventType.valueOf(number); - } - }; - - private final int value; - - private StartEventType(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:StartEventMessage.StartEventType) + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - - // required .StartEventMessage.StartEventType startEventType = 2; - public static final int STARTEVENTTYPE_FIELD_NUMBER = 2; - private de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType startEventType_; - public boolean hasStartEventType() { + + // required uint32 playerId = 2; + public static final int PLAYERID_FIELD_NUMBER = 2; + private int playerId_; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType getStartEventType() { - return startEventType_; + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; } - - // optional bool fillWithComputerPlayers = 3; - public static final int FILLWITHCOMPUTERPLAYERS_FIELD_NUMBER = 3; - private boolean fillWithComputerPlayers_; - public boolean hasFillWithComputerPlayers() { + + // required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; + public static final int PLAYERREJECTREASON_FIELD_NUMBER = 3; + private de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason playerRejectReason_; + /** + * required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; + */ + public boolean hasPlayerRejectReason() { return ((bitField0_ & 0x00000004) == 0x00000004); } - public boolean getFillWithComputerPlayers() { - return fillWithComputerPlayers_; + /** + * required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; + */ + public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason getPlayerRejectReason() { + return playerRejectReason_; } - + private void initFields() { gameId_ = 0; - startEventType_ = de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType.startEvent; - fillWithComputerPlayers_ = false; + playerId_ = 0; + playerRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } - if (!hasStartEventType()) { + if (!hasPlayerId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPlayerRejectReason()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -19751,18 +24533,18 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeEnum(2, startEventType_.getNumber()); + output.writeUInt32(2, playerId_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeBool(3, fillWithComputerPlayers_); + output.writeEnum(3, playerRejectReason_.getNumber()); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -19770,151 +24552,130 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, startEventType_.getNumber()); + .computeUInt32Size(2, playerId_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(3, fillWithComputerPlayers_); + .computeEnumSize(3, playerRejectReason_.getNumber()); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.StartEventMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code RejectInvNotifyMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.StartEventMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.StartEventMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.StartEventMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - startEventType_ = de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType.startEvent; + playerId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); - fillWithComputerPlayers_ = false; + playerRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.StartEventMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.StartEventMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.StartEventMessage build() { - de.pokerth.protocol.ProtoBuf.StartEventMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage build() { + de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.StartEventMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.StartEventMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.StartEventMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.StartEventMessage result = new de.pokerth.protocol.ProtoBuf.StartEventMessage(this); + + public de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage result = new de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -19924,55 +24685,250 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.startEventType_ = startEventType_; + result.playerId_ = playerId_; if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } - result.fillWithComputerPlayers_ = fillWithComputerPlayers_; + result.playerRejectReason_ = playerRejectReason_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.StartEventMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.StartEventMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } - if (other.hasStartEventType()) { - setStartEventType(other.getStartEventType()); + if (other.hasPlayerId()) { + setPlayerId(other.getPlayerId()); } - if (other.hasFillWithComputerPlayers()) { - setFillWithComputerPlayers(other.getFillWithComputerPlayers()); + if (other.hasPlayerRejectReason()) { + setPlayerRejectReason(other.getPlayerRejectReason()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { return false; } - if (!hasStartEventType()) { + if (!hasPlayerId()) { + + return false; + } + if (!hasPlayerRejectReason()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; + private de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason playerRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; + /** + * required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; + */ + public boolean hasPlayerRejectReason() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; + */ + public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason getPlayerRejectReason() { + return playerRejectReason_; + } + /** + * required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; + */ + public Builder setPlayerRejectReason(de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + playerRejectReason_ = value; + + return this; + } + /** + * required .RejectGameInvitationMessage.RejectGameInvReason playerRejectReason = 3; + */ + public Builder clearPlayerRejectReason() { + bitField0_ = (bitField0_ & ~0x00000004); + playerRejectReason_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.RejectGameInvReason.rejectReasonNo; + + return this; + } + + // @@protoc_insertion_point(builder_scope:RejectInvNotifyMessage) + } + + static { + defaultInstance = new RejectInvNotifyMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:RejectInvNotifyMessage) + } + + public interface StartEventMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required .StartEventMessage.StartEventType startEventType = 2; + /** + * required .StartEventMessage.StartEventType startEventType = 2; + */ + boolean hasStartEventType(); + /** + * required .StartEventMessage.StartEventType startEventType = 2; + */ + de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType getStartEventType(); + + // optional bool fillWithComputerPlayers = 3; + /** + * optional bool fillWithComputerPlayers = 3; + */ + boolean hasFillWithComputerPlayers(); + /** + * optional bool fillWithComputerPlayers = 3; + */ + boolean getFillWithComputerPlayers(); + } + /** + * Protobuf type {@code StartEventMessage} + */ + public static final class StartEventMessage extends + com.google.protobuf.GeneratedMessageLite + implements StartEventMessageOrBuilder { + // Use StartEventMessage.newBuilder() to construct. + private StartEventMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private StartEventMessage(boolean noInit) {} + + private static final StartEventMessage defaultInstance; + public static StartEventMessage getDefaultInstance() { + return defaultInstance; + } + + public StartEventMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private StartEventMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -19997,39 +24953,420 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public StartEventMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new StartEventMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code StartEventMessage.StartEventType} + */ + public enum StartEventType + implements com.google.protobuf.Internal.EnumLite { + /** + * startEvent = 0; + */ + startEvent(0, 0), + /** + * rejoinEvent = 1; + */ + rejoinEvent(1, 1), + ; + + /** + * startEvent = 0; + */ + public static final int startEvent_VALUE = 0; + /** + * rejoinEvent = 1; + */ + public static final int rejoinEvent_VALUE = 1; + + + public final int getNumber() { return value; } + + public static StartEventType valueOf(int value) { + switch (value) { + case 0: return startEvent; + case 1: return rejoinEvent; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public StartEventType findValueByNumber(int number) { + return StartEventType.valueOf(number); + } + }; + + private final int value; + + private StartEventType(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:StartEventMessage.StartEventType) + } + + private int bitField0_; + // required uint32 gameId = 1; + public static final int GAMEID_FIELD_NUMBER = 1; + private int gameId_; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + + // required .StartEventMessage.StartEventType startEventType = 2; + public static final int STARTEVENTTYPE_FIELD_NUMBER = 2; + private de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType startEventType_; + /** + * required .StartEventMessage.StartEventType startEventType = 2; + */ + public boolean hasStartEventType() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .StartEventMessage.StartEventType startEventType = 2; + */ + public de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType getStartEventType() { + return startEventType_; + } + + // optional bool fillWithComputerPlayers = 3; + public static final int FILLWITHCOMPUTERPLAYERS_FIELD_NUMBER = 3; + private boolean fillWithComputerPlayers_; + /** + * optional bool fillWithComputerPlayers = 3; + */ + public boolean hasFillWithComputerPlayers() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * optional bool fillWithComputerPlayers = 3; + */ + public boolean getFillWithComputerPlayers() { + return fillWithComputerPlayers_; + } + + private void initFields() { + gameId_ = 0; + startEventType_ = de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType.startEvent; + fillWithComputerPlayers_ = false; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasGameId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasStartEventType()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeEnum(2, startEventType_.getNumber()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBool(3, fillWithComputerPlayers_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(2, startEventType_.getNumber()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(3, fillWithComputerPlayers_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.StartEventMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.StartEventMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code StartEventMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.StartEventMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.StartEventMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.StartEventMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + gameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + startEventType_ = de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType.startEvent; + bitField0_ = (bitField0_ & ~0x00000002); + fillWithComputerPlayers_ = false; + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.StartEventMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.StartEventMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.StartEventMessage build() { + de.pokerth.protocol.ProtoBuf.StartEventMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.StartEventMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.StartEventMessage result = new de.pokerth.protocol.ProtoBuf.StartEventMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.gameId_ = gameId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.startEventType_ = startEventType_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.fillWithComputerPlayers_ = fillWithComputerPlayers_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.StartEventMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.StartEventMessage.getDefaultInstance()) return this; + if (other.hasGameId()) { + setGameId(other.getGameId()); + } + if (other.hasStartEventType()) { + setStartEventType(other.getStartEventType()); + } + if (other.hasFillWithComputerPlayers()) { + setFillWithComputerPlayers(other.getFillWithComputerPlayers()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasGameId()) { + + return false; + } + if (!hasStartEventType()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.StartEventMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.StartEventMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // required .StartEventMessage.StartEventType startEventType = 2; private de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType startEventType_ = de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType.startEvent; + /** + * required .StartEventMessage.StartEventType startEventType = 2; + */ public boolean hasStartEventType() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .StartEventMessage.StartEventType startEventType = 2; + */ public de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType getStartEventType() { return startEventType_; } + /** + * required .StartEventMessage.StartEventType startEventType = 2; + */ public Builder setStartEventType(de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType value) { if (value == null) { throw new NullPointerException(); @@ -20039,81 +25376,164 @@ public final class ProtoBuf { return this; } + /** + * required .StartEventMessage.StartEventType startEventType = 2; + */ public Builder clearStartEventType() { bitField0_ = (bitField0_ & ~0x00000002); startEventType_ = de.pokerth.protocol.ProtoBuf.StartEventMessage.StartEventType.startEvent; return this; } - + // optional bool fillWithComputerPlayers = 3; private boolean fillWithComputerPlayers_ ; + /** + * optional bool fillWithComputerPlayers = 3; + */ public boolean hasFillWithComputerPlayers() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional bool fillWithComputerPlayers = 3; + */ public boolean getFillWithComputerPlayers() { return fillWithComputerPlayers_; } + /** + * optional bool fillWithComputerPlayers = 3; + */ public Builder setFillWithComputerPlayers(boolean value) { bitField0_ |= 0x00000004; fillWithComputerPlayers_ = value; return this; } + /** + * optional bool fillWithComputerPlayers = 3; + */ public Builder clearFillWithComputerPlayers() { bitField0_ = (bitField0_ & ~0x00000004); fillWithComputerPlayers_ = false; return this; } - + // @@protoc_insertion_point(builder_scope:StartEventMessage) } - + static { defaultInstance = new StartEventMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:StartEventMessage) } - + public interface StartEventAckMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); } + /** + * Protobuf type {@code StartEventAckMessage} + */ public static final class StartEventAckMessage extends com.google.protobuf.GeneratedMessageLite implements StartEventAckMessageOrBuilder { // Use StartEventAckMessage.newBuilder() to construct. - private StartEventAckMessage(Builder builder) { + private StartEventAckMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private StartEventAckMessage(boolean noInit) {} - + private static final StartEventAckMessage defaultInstance; public static StartEventAckMessage getDefaultInstance() { return defaultInstance; } - + public StartEventAckMessage getDefaultInstanceForType() { return defaultInstance; } - + + private StartEventAckMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + gameId_ = input.readUInt32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public StartEventAckMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new StartEventAckMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + private void initFields() { gameId_ = 0; } @@ -20121,7 +25541,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -20129,7 +25549,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -20137,12 +25557,12 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -20151,88 +25571,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.StartEventAckMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.StartEventAckMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.StartEventAckMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.StartEventAckMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.StartEventAckMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.StartEventAckMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.StartEventAckMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.StartEventAckMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.StartEventAckMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.StartEventAckMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.StartEventAckMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code StartEventAckMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.StartEventAckMessage, Builder> @@ -20241,28 +25650,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.StartEventAckMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.StartEventAckMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.StartEventAckMessage build() { de.pokerth.protocol.ProtoBuf.StartEventAckMessage result = buildPartial(); if (!result.isInitialized()) { @@ -20270,17 +25679,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.StartEventAckMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.StartEventAckMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.StartEventAckMessage buildPartial() { de.pokerth.protocol.ProtoBuf.StartEventAckMessage result = new de.pokerth.protocol.ProtoBuf.StartEventAckMessage(this); int from_bitField0_ = bitField0_; @@ -20292,7 +25691,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.StartEventAckMessage other) { if (other == de.pokerth.protocol.ProtoBuf.StartEventAckMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -20300,7 +25699,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -20308,21 +25707,147 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.StartEventAckMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.StartEventAckMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:StartEventAckMessage) + } + + static { + defaultInstance = new StartEventAckMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:StartEventAckMessage) + } + + public interface GameStartInitialMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 startDealerPlayerId = 2; + /** + * required uint32 startDealerPlayerId = 2; + */ + boolean hasStartDealerPlayerId(); + /** + * required uint32 startDealerPlayerId = 2; + */ + int getStartDealerPlayerId(); + + // repeated uint32 playerSeats = 3 [packed = true]; + /** + * repeated uint32 playerSeats = 3 [packed = true]; + */ + java.util.List getPlayerSeatsList(); + /** + * repeated uint32 playerSeats = 3 [packed = true]; + */ + int getPlayerSeatsCount(); + /** + * repeated uint32 playerSeats = 3 [packed = true]; + */ + int getPlayerSeats(int index); + } + /** + * Protobuf type {@code GameStartInitialMessage} + */ + public static final class GameStartInitialMessage extends + com.google.protobuf.GeneratedMessageLite + implements GameStartInitialMessageOrBuilder { + // Use GameStartInitialMessage.newBuilder() to construct. + private GameStartInitialMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private GameStartInitialMessage(boolean noInit) {} + + private static final GameStartInitialMessage defaultInstance; + public static GameStartInitialMessage getDefaultInstance() { + return defaultInstance; + } + + public GameStartInitialMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private GameStartInitialMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -20331,124 +25856,128 @@ public final class ProtoBuf { gameId_ = input.readUInt32(); break; } + case 16: { + bitField0_ |= 0x00000002; + startDealerPlayerId_ = input.readUInt32(); + break; + } + case 24: { + if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + playerSeats_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000004; + } + playerSeats_.add(input.readUInt32()); + break; + } + case 26: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) { + playerSeats_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000004; + } + while (input.getBytesUntilLimit() > 0) { + playerSeats_.add(input.readUInt32()); + } + input.popLimit(limit); + break; + } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { + playerSeats_ = java.util.Collections.unmodifiableList(playerSeats_); + } + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GameStartInitialMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GameStartInitialMessage(input, extensionRegistry); } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:StartEventAckMessage) + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - static { - defaultInstance = new StartEventAckMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:StartEventAckMessage) - } - - public interface GameStartInitialMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 startDealerPlayerId = 2; - boolean hasStartDealerPlayerId(); - int getStartDealerPlayerId(); - - // repeated uint32 playerSeats = 3 [packed = true]; - java.util.List getPlayerSeatsList(); - int getPlayerSeatsCount(); - int getPlayerSeats(int index); - } - public static final class GameStartInitialMessage extends - com.google.protobuf.GeneratedMessageLite - implements GameStartInitialMessageOrBuilder { - // Use GameStartInitialMessage.newBuilder() to construct. - private GameStartInitialMessage(Builder builder) { - super(builder); - } - private GameStartInitialMessage(boolean noInit) {} - - private static final GameStartInitialMessage defaultInstance; - public static GameStartInitialMessage getDefaultInstance() { - return defaultInstance; - } - - public GameStartInitialMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 startDealerPlayerId = 2; public static final int STARTDEALERPLAYERID_FIELD_NUMBER = 2; private int startDealerPlayerId_; + /** + * required uint32 startDealerPlayerId = 2; + */ public boolean hasStartDealerPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 startDealerPlayerId = 2; + */ public int getStartDealerPlayerId() { return startDealerPlayerId_; } - + // repeated uint32 playerSeats = 3 [packed = true]; public static final int PLAYERSEATS_FIELD_NUMBER = 3; private java.util.List playerSeats_; + /** + * repeated uint32 playerSeats = 3 [packed = true]; + */ public java.util.List getPlayerSeatsList() { return playerSeats_; } + /** + * repeated uint32 playerSeats = 3 [packed = true]; + */ public int getPlayerSeatsCount() { return playerSeats_.size(); } + /** + * repeated uint32 playerSeats = 3 [packed = true]; + */ public int getPlayerSeats(int index) { return playerSeats_.get(index); } private int playerSeatsMemoizedSerializedSize = -1; - + private void initFields() { gameId_ = 0; startDealerPlayerId_ = 0; - playerSeats_ = java.util.Collections.emptyList();; + playerSeats_ = java.util.Collections.emptyList(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -20460,7 +25989,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -20478,12 +26007,12 @@ public final class ProtoBuf { output.writeUInt32NoTag(playerSeats_.get(i)); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -20510,88 +26039,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.GameStartInitialMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameStartInitialMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameStartInitialMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameStartInitialMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameStartInitialMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameStartInitialMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameStartInitialMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameStartInitialMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameStartInitialMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameStartInitialMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameStartInitialMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code GameStartInitialMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.GameStartInitialMessage, Builder> @@ -20600,32 +26118,32 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); startDealerPlayerId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); - playerSeats_ = java.util.Collections.emptyList();; + playerSeats_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.GameStartInitialMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.GameStartInitialMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.GameStartInitialMessage build() { de.pokerth.protocol.ProtoBuf.GameStartInitialMessage result = buildPartial(); if (!result.isInitialized()) { @@ -20633,17 +26151,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.GameStartInitialMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GameStartInitialMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.GameStartInitialMessage buildPartial() { de.pokerth.protocol.ProtoBuf.GameStartInitialMessage result = new de.pokerth.protocol.ProtoBuf.GameStartInitialMessage(this); int from_bitField0_ = bitField0_; @@ -20664,7 +26172,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameStartInitialMessage other) { if (other == de.pokerth.protocol.ProtoBuf.GameStartInitialMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -20685,7 +26193,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -20697,21 +26205,257 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.GameStartInitialMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GameStartInitialMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 startDealerPlayerId = 2; + private int startDealerPlayerId_ ; + /** + * required uint32 startDealerPlayerId = 2; + */ + public boolean hasStartDealerPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 startDealerPlayerId = 2; + */ + public int getStartDealerPlayerId() { + return startDealerPlayerId_; + } + /** + * required uint32 startDealerPlayerId = 2; + */ + public Builder setStartDealerPlayerId(int value) { + bitField0_ |= 0x00000002; + startDealerPlayerId_ = value; + + return this; + } + /** + * required uint32 startDealerPlayerId = 2; + */ + public Builder clearStartDealerPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + startDealerPlayerId_ = 0; + + return this; + } + + // repeated uint32 playerSeats = 3 [packed = true]; + private java.util.List playerSeats_ = java.util.Collections.emptyList(); + private void ensurePlayerSeatsIsMutable() { + if (!((bitField0_ & 0x00000004) == 0x00000004)) { + playerSeats_ = new java.util.ArrayList(playerSeats_); + bitField0_ |= 0x00000004; + } + } + /** + * repeated uint32 playerSeats = 3 [packed = true]; + */ + public java.util.List + getPlayerSeatsList() { + return java.util.Collections.unmodifiableList(playerSeats_); + } + /** + * repeated uint32 playerSeats = 3 [packed = true]; + */ + public int getPlayerSeatsCount() { + return playerSeats_.size(); + } + /** + * repeated uint32 playerSeats = 3 [packed = true]; + */ + public int getPlayerSeats(int index) { + return playerSeats_.get(index); + } + /** + * repeated uint32 playerSeats = 3 [packed = true]; + */ + public Builder setPlayerSeats( + int index, int value) { + ensurePlayerSeatsIsMutable(); + playerSeats_.set(index, value); + + return this; + } + /** + * repeated uint32 playerSeats = 3 [packed = true]; + */ + public Builder addPlayerSeats(int value) { + ensurePlayerSeatsIsMutable(); + playerSeats_.add(value); + + return this; + } + /** + * repeated uint32 playerSeats = 3 [packed = true]; + */ + public Builder addAllPlayerSeats( + java.lang.Iterable values) { + ensurePlayerSeatsIsMutable(); + super.addAll(values, playerSeats_); + + return this; + } + /** + * repeated uint32 playerSeats = 3 [packed = true]; + */ + public Builder clearPlayerSeats() { + playerSeats_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000004); + + return this; + } + + // @@protoc_insertion_point(builder_scope:GameStartInitialMessage) + } + + static { + defaultInstance = new GameStartInitialMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:GameStartInitialMessage) + } + + public interface GameStartRejoinMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 startDealerPlayerId = 2; + /** + * required uint32 startDealerPlayerId = 2; + */ + boolean hasStartDealerPlayerId(); + /** + * required uint32 startDealerPlayerId = 2; + */ + int getStartDealerPlayerId(); + + // required uint32 handNum = 3; + /** + * required uint32 handNum = 3; + */ + boolean hasHandNum(); + /** + * required uint32 handNum = 3; + */ + int getHandNum(); + + // repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ + java.util.List + getRejoinPlayerDataList(); + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ + de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData getRejoinPlayerData(int index); + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ + int getRejoinPlayerDataCount(); + } + /** + * Protobuf type {@code GameStartRejoinMessage} + */ + public static final class GameStartRejoinMessage extends + com.google.protobuf.GeneratedMessageLite + implements GameStartRejoinMessageOrBuilder { + // Use GameStartRejoinMessage.newBuilder() to construct. + private GameStartRejoinMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private GameStartRejoinMessage(boolean noInit) {} + + private static final GameStartRejoinMessage defaultInstance; + public static GameStartRejoinMessage getDefaultInstance() { + return defaultInstance; + } + + public GameStartRejoinMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private GameStartRejoinMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -20726,446 +26470,110 @@ public final class ProtoBuf { break; } case 24: { - ensurePlayerSeatsIsMutable(); - playerSeats_.add(input.readUInt32()); + bitField0_ |= 0x00000004; + handNum_ = input.readUInt32(); break; } - case 26: { - int length = input.readRawVarint32(); - int limit = input.pushLimit(length); - while (input.getBytesUntilLimit() > 0) { - addPlayerSeats(input.readUInt32()); + case 34: { + if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) { + rejoinPlayerData_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000008; } - input.popLimit(limit); + rejoinPlayerData_.add(input.readMessage(de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData.PARSER, extensionRegistry)); break; } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) { + rejoinPlayerData_ = java.util.Collections.unmodifiableList(rejoinPlayerData_); + } + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 startDealerPlayerId = 2; - private int startDealerPlayerId_ ; - public boolean hasStartDealerPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getStartDealerPlayerId() { - return startDealerPlayerId_; - } - public Builder setStartDealerPlayerId(int value) { - bitField0_ |= 0x00000002; - startDealerPlayerId_ = value; - - return this; - } - public Builder clearStartDealerPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - startDealerPlayerId_ = 0; - - return this; - } - - // repeated uint32 playerSeats = 3 [packed = true]; - private java.util.List playerSeats_ = java.util.Collections.emptyList();; - private void ensurePlayerSeatsIsMutable() { - if (!((bitField0_ & 0x00000004) == 0x00000004)) { - playerSeats_ = new java.util.ArrayList(playerSeats_); - bitField0_ |= 0x00000004; - } - } - public java.util.List - getPlayerSeatsList() { - return java.util.Collections.unmodifiableList(playerSeats_); - } - public int getPlayerSeatsCount() { - return playerSeats_.size(); - } - public int getPlayerSeats(int index) { - return playerSeats_.get(index); - } - public Builder setPlayerSeats( - int index, int value) { - ensurePlayerSeatsIsMutable(); - playerSeats_.set(index, value); - - return this; - } - public Builder addPlayerSeats(int value) { - ensurePlayerSeatsIsMutable(); - playerSeats_.add(value); - - return this; - } - public Builder addAllPlayerSeats( - java.lang.Iterable values) { - ensurePlayerSeatsIsMutable(); - super.addAll(values, playerSeats_); - - return this; - } - public Builder clearPlayerSeats() { - playerSeats_ = java.util.Collections.emptyList();; - bitField0_ = (bitField0_ & ~0x00000004); - - return this; - } - - // @@protoc_insertion_point(builder_scope:GameStartInitialMessage) } - - static { - defaultInstance = new GameStartInitialMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public GameStartRejoinMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new GameStartRejoinMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:GameStartInitialMessage) - } - - public interface GameStartRejoinMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 startDealerPlayerId = 2; - boolean hasStartDealerPlayerId(); - int getStartDealerPlayerId(); - - // required uint32 handNum = 3; - boolean hasHandNum(); - int getHandNum(); - - // repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; - java.util.List - getRejoinPlayerDataList(); - de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData getRejoinPlayerData(int index); - int getRejoinPlayerDataCount(); - } - public static final class GameStartRejoinMessage extends - com.google.protobuf.GeneratedMessageLite - implements GameStartRejoinMessageOrBuilder { - // Use GameStartRejoinMessage.newBuilder() to construct. - private GameStartRejoinMessage(Builder builder) { - super(builder); - } - private GameStartRejoinMessage(boolean noInit) {} - - private static final GameStartRejoinMessage defaultInstance; - public static GameStartRejoinMessage getDefaultInstance() { - return defaultInstance; - } - - public GameStartRejoinMessage getDefaultInstanceForType() { - return defaultInstance; - } - + public interface RejoinPlayerDataOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 playerId = 1; + /** + * required uint32 playerId = 1; + */ boolean hasPlayerId(); + /** + * required uint32 playerId = 1; + */ int getPlayerId(); - + // required uint32 playerMoney = 2; + /** + * required uint32 playerMoney = 2; + */ boolean hasPlayerMoney(); + /** + * required uint32 playerMoney = 2; + */ int getPlayerMoney(); } + /** + * Protobuf type {@code GameStartRejoinMessage.RejoinPlayerData} + */ public static final class RejoinPlayerData extends com.google.protobuf.GeneratedMessageLite implements RejoinPlayerDataOrBuilder { // Use RejoinPlayerData.newBuilder() to construct. - private RejoinPlayerData(Builder builder) { + private RejoinPlayerData(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private RejoinPlayerData(boolean noInit) {} - + private static final RejoinPlayerData defaultInstance; public static RejoinPlayerData getDefaultInstance() { return defaultInstance; } - + public RejoinPlayerData getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required uint32 playerId = 1; - public static final int PLAYERID_FIELD_NUMBER = 1; - private int playerId_; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getPlayerId() { - return playerId_; - } - - // required uint32 playerMoney = 2; - public static final int PLAYERMONEY_FIELD_NUMBER = 2; - private int playerMoney_; - public boolean hasPlayerMoney() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerMoney() { - return playerMoney_; - } - - private void initFields() { - playerId_ = 0; - playerMoney_ = 0; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPlayerMoney()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, playerId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, playerMoney_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, playerId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, playerMoney_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom( + + private RejoinPlayerData( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData, Builder> - implements de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerDataOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - playerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - playerMoney_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData build() { - de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData buildPartial() { - de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData result = new de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.playerId_ = playerId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.playerMoney_ = playerMoney_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData other) { - if (other == de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData.getDefaultInstance()) return this; - if (other.hasPlayerId()) { - setPlayerId(other.getPlayerId()); - } - if (other.hasPlayerMoney()) { - setPlayerMoney(other.getPlayerMoney()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasPlayerId()) { - - return false; - } - if (!hasPlayerMoney()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -21181,115 +26589,443 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public RejoinPlayerData parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new RejoinPlayerData(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required uint32 playerId = 1; + public static final int PLAYERID_FIELD_NUMBER = 1; + private int playerId_; + /** + * required uint32 playerId = 1; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 playerId = 1; + */ + public int getPlayerId() { + return playerId_; + } + + // required uint32 playerMoney = 2; + public static final int PLAYERMONEY_FIELD_NUMBER = 2; + private int playerMoney_; + /** + * required uint32 playerMoney = 2; + */ + public boolean hasPlayerMoney() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerMoney = 2; + */ + public int getPlayerMoney() { + return playerMoney_; + } + + private void initFields() { + playerId_ = 0; + playerMoney_ = 0; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasPlayerId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPlayerMoney()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, playerId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, playerMoney_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, playerId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, playerMoney_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code GameStartRejoinMessage.RejoinPlayerData} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData, Builder> + implements de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerDataOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + playerId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + playerMoney_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData build() { + de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData buildPartial() { + de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData result = new de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.playerId_ = playerId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.playerMoney_ = playerMoney_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData other) { + if (other == de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData.getDefaultInstance()) return this; + if (other.hasPlayerId()) { + setPlayerId(other.getPlayerId()); + } + if (other.hasPlayerMoney()) { + setPlayerMoney(other.getPlayerMoney()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasPlayerId()) { + + return false; + } + if (!hasPlayerMoney()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 playerId = 1; private int playerId_ ; + /** + * required uint32 playerId = 1; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 playerId = 1; + */ public int getPlayerId() { return playerId_; } + /** + * required uint32 playerId = 1; + */ public Builder setPlayerId(int value) { bitField0_ |= 0x00000001; playerId_ = value; return this; } + /** + * required uint32 playerId = 1; + */ public Builder clearPlayerId() { bitField0_ = (bitField0_ & ~0x00000001); playerId_ = 0; return this; } - + // required uint32 playerMoney = 2; private int playerMoney_ ; + /** + * required uint32 playerMoney = 2; + */ public boolean hasPlayerMoney() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 playerMoney = 2; + */ public int getPlayerMoney() { return playerMoney_; } + /** + * required uint32 playerMoney = 2; + */ public Builder setPlayerMoney(int value) { bitField0_ |= 0x00000002; playerMoney_ = value; return this; } + /** + * required uint32 playerMoney = 2; + */ public Builder clearPlayerMoney() { bitField0_ = (bitField0_ & ~0x00000002); playerMoney_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:GameStartRejoinMessage.RejoinPlayerData) } - + static { defaultInstance = new RejoinPlayerData(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:GameStartRejoinMessage.RejoinPlayerData) } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 startDealerPlayerId = 2; public static final int STARTDEALERPLAYERID_FIELD_NUMBER = 2; private int startDealerPlayerId_; + /** + * required uint32 startDealerPlayerId = 2; + */ public boolean hasStartDealerPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 startDealerPlayerId = 2; + */ public int getStartDealerPlayerId() { return startDealerPlayerId_; } - + // required uint32 handNum = 3; public static final int HANDNUM_FIELD_NUMBER = 3; private int handNum_; + /** + * required uint32 handNum = 3; + */ public boolean hasHandNum() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required uint32 handNum = 3; + */ public int getHandNum() { return handNum_; } - + // repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; public static final int REJOINPLAYERDATA_FIELD_NUMBER = 4; private java.util.List rejoinPlayerData_; + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public java.util.List getRejoinPlayerDataList() { return rejoinPlayerData_; } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public java.util.List getRejoinPlayerDataOrBuilderList() { return rejoinPlayerData_; } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public int getRejoinPlayerDataCount() { return rejoinPlayerData_.size(); } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData getRejoinPlayerData(int index) { return rejoinPlayerData_.get(index); } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerDataOrBuilder getRejoinPlayerDataOrBuilder( int index) { return rejoinPlayerData_.get(index); } - + private void initFields() { gameId_ = 0; startDealerPlayerId_ = 0; @@ -21300,7 +27036,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -21322,7 +27058,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -21339,12 +27075,12 @@ public final class ProtoBuf { output.writeMessage(4, rejoinPlayerData_.get(i)); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -21365,88 +27101,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code GameStartRejoinMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage, Builder> @@ -21455,13 +27180,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -21474,15 +27199,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage build() { de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage result = buildPartial(); if (!result.isInitialized()) { @@ -21490,17 +27215,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage buildPartial() { de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage result = new de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage(this); int from_bitField0_ = bitField0_; @@ -21525,7 +27240,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage other) { if (other == de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -21549,7 +27264,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -21571,114 +27286,125 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - gameId_ = input.readUInt32(); - break; - } - case 16: { - bitField0_ |= 0x00000002; - startDealerPlayerId_ = input.readUInt32(); - break; - } - case 24: { - bitField0_ |= 0x00000004; - handNum_ = input.readUInt32(); - break; - } - case 34: { - de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addRejoinPlayerData(subBuilder.buildPartial()); - break; - } + de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // required uint32 startDealerPlayerId = 2; private int startDealerPlayerId_ ; + /** + * required uint32 startDealerPlayerId = 2; + */ public boolean hasStartDealerPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 startDealerPlayerId = 2; + */ public int getStartDealerPlayerId() { return startDealerPlayerId_; } + /** + * required uint32 startDealerPlayerId = 2; + */ public Builder setStartDealerPlayerId(int value) { bitField0_ |= 0x00000002; startDealerPlayerId_ = value; return this; } + /** + * required uint32 startDealerPlayerId = 2; + */ public Builder clearStartDealerPlayerId() { bitField0_ = (bitField0_ & ~0x00000002); startDealerPlayerId_ = 0; return this; } - + // required uint32 handNum = 3; private int handNum_ ; + /** + * required uint32 handNum = 3; + */ public boolean hasHandNum() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required uint32 handNum = 3; + */ public int getHandNum() { return handNum_; } + /** + * required uint32 handNum = 3; + */ public Builder setHandNum(int value) { bitField0_ |= 0x00000004; handNum_ = value; return this; } + /** + * required uint32 handNum = 3; + */ public Builder clearHandNum() { bitField0_ = (bitField0_ & ~0x00000004); handNum_ = 0; return this; } - + // repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; private java.util.List rejoinPlayerData_ = java.util.Collections.emptyList(); @@ -21688,16 +27414,28 @@ public final class ProtoBuf { bitField0_ |= 0x00000008; } } - + + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public java.util.List getRejoinPlayerDataList() { return java.util.Collections.unmodifiableList(rejoinPlayerData_); } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public int getRejoinPlayerDataCount() { return rejoinPlayerData_.size(); } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData getRejoinPlayerData(int index) { return rejoinPlayerData_.get(index); } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public Builder setRejoinPlayerData( int index, de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData value) { if (value == null) { @@ -21705,25 +27443,34 @@ public final class ProtoBuf { } ensureRejoinPlayerDataIsMutable(); rejoinPlayerData_.set(index, value); - + return this; } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public Builder setRejoinPlayerData( int index, de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData.Builder builderForValue) { ensureRejoinPlayerDataIsMutable(); rejoinPlayerData_.set(index, builderForValue.build()); - + return this; } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public Builder addRejoinPlayerData(de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData value) { if (value == null) { throw new NullPointerException(); } ensureRejoinPlayerDataIsMutable(); rejoinPlayerData_.add(value); - + return this; } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public Builder addRejoinPlayerData( int index, de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData value) { if (value == null) { @@ -21731,380 +27478,318 @@ public final class ProtoBuf { } ensureRejoinPlayerDataIsMutable(); rejoinPlayerData_.add(index, value); - + return this; } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public Builder addRejoinPlayerData( de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData.Builder builderForValue) { ensureRejoinPlayerDataIsMutable(); rejoinPlayerData_.add(builderForValue.build()); - + return this; } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public Builder addRejoinPlayerData( int index, de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.RejoinPlayerData.Builder builderForValue) { ensureRejoinPlayerDataIsMutable(); rejoinPlayerData_.add(index, builderForValue.build()); - + return this; } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public Builder addAllRejoinPlayerData( java.lang.Iterable values) { ensureRejoinPlayerDataIsMutable(); super.addAll(values, rejoinPlayerData_); - + return this; } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public Builder clearRejoinPlayerData() { rejoinPlayerData_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000008); - + return this; } + /** + * repeated .GameStartRejoinMessage.RejoinPlayerData rejoinPlayerData = 4; + */ public Builder removeRejoinPlayerData(int index) { ensureRejoinPlayerDataIsMutable(); rejoinPlayerData_.remove(index); - + return this; } - + // @@protoc_insertion_point(builder_scope:GameStartRejoinMessage) } - + static { defaultInstance = new GameStartRejoinMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:GameStartRejoinMessage) } - + public interface HandStartMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // optional .HandStartMessage.PlainCards plainCards = 2; + /** + * optional .HandStartMessage.PlainCards plainCards = 2; + */ boolean hasPlainCards(); + /** + * optional .HandStartMessage.PlainCards plainCards = 2; + */ de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards getPlainCards(); - + // optional bytes encryptedCards = 3; + /** + * optional bytes encryptedCards = 3; + */ boolean hasEncryptedCards(); + /** + * optional bytes encryptedCards = 3; + */ com.google.protobuf.ByteString getEncryptedCards(); - + // required uint32 smallBlind = 4; + /** + * required uint32 smallBlind = 4; + */ boolean hasSmallBlind(); + /** + * required uint32 smallBlind = 4; + */ int getSmallBlind(); - + // repeated .NetPlayerState seatStates = 5; + /** + * repeated .NetPlayerState seatStates = 5; + */ java.util.List getSeatStatesList(); + /** + * repeated .NetPlayerState seatStates = 5; + */ int getSeatStatesCount(); + /** + * repeated .NetPlayerState seatStates = 5; + */ de.pokerth.protocol.ProtoBuf.NetPlayerState getSeatStates(int index); } + /** + * Protobuf type {@code HandStartMessage} + */ public static final class HandStartMessage extends com.google.protobuf.GeneratedMessageLite implements HandStartMessageOrBuilder { // Use HandStartMessage.newBuilder() to construct. - private HandStartMessage(Builder builder) { + private HandStartMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private HandStartMessage(boolean noInit) {} - + private static final HandStartMessage defaultInstance; public static HandStartMessage getDefaultInstance() { return defaultInstance; } - + public HandStartMessage getDefaultInstanceForType() { return defaultInstance; } - + + private HandStartMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + gameId_ = input.readUInt32(); + break; + } + case 18: { + de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = plainCards_.toBuilder(); + } + plainCards_ = input.readMessage(de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(plainCards_); + plainCards_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + case 26: { + bitField0_ |= 0x00000004; + encryptedCards_ = input.readBytes(); + break; + } + case 32: { + bitField0_ |= 0x00000008; + smallBlind_ = input.readUInt32(); + break; + } + case 40: { + int rawValue = input.readEnum(); + de.pokerth.protocol.ProtoBuf.NetPlayerState value = de.pokerth.protocol.ProtoBuf.NetPlayerState.valueOf(rawValue); + if (value != null) { + if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) { + seatStates_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000010; + } + seatStates_.add(value); + } + break; + } + case 42: { + int length = input.readRawVarint32(); + int oldLimit = input.pushLimit(length); + while(input.getBytesUntilLimit() > 0) { + int rawValue = input.readEnum(); + de.pokerth.protocol.ProtoBuf.NetPlayerState value = de.pokerth.protocol.ProtoBuf.NetPlayerState.valueOf(rawValue); + if (value != null) { + if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) { + seatStates_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000010; + } + seatStates_.add(value); + } + } + input.popLimit(oldLimit); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) { + seatStates_ = java.util.Collections.unmodifiableList(seatStates_); + } + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public HandStartMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new HandStartMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + public interface PlainCardsOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 plainCard1 = 1; + /** + * required uint32 plainCard1 = 1; + */ boolean hasPlainCard1(); + /** + * required uint32 plainCard1 = 1; + */ int getPlainCard1(); - + // required uint32 plainCard2 = 2; + /** + * required uint32 plainCard2 = 2; + */ boolean hasPlainCard2(); + /** + * required uint32 plainCard2 = 2; + */ int getPlainCard2(); } + /** + * Protobuf type {@code HandStartMessage.PlainCards} + */ public static final class PlainCards extends com.google.protobuf.GeneratedMessageLite implements PlainCardsOrBuilder { // Use PlainCards.newBuilder() to construct. - private PlainCards(Builder builder) { + private PlainCards(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private PlainCards(boolean noInit) {} - + private static final PlainCards defaultInstance; public static PlainCards getDefaultInstance() { return defaultInstance; } - + public PlainCards getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required uint32 plainCard1 = 1; - public static final int PLAINCARD1_FIELD_NUMBER = 1; - private int plainCard1_; - public boolean hasPlainCard1() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getPlainCard1() { - return plainCard1_; - } - - // required uint32 plainCard2 = 2; - public static final int PLAINCARD2_FIELD_NUMBER = 2; - private int plainCard2_; - public boolean hasPlainCard2() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlainCard2() { - return plainCard2_; - } - - private void initFields() { - plainCard1_ = 0; - plainCard2_ = 0; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasPlainCard1()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPlainCard2()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, plainCard1_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, plainCard2_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, plainCard1_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, plainCard2_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom( + + private PlainCards( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards, Builder> - implements de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCardsOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - plainCard1_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - plainCard2_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards build() { - de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards buildPartial() { - de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards result = new de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.plainCard1_ = plainCard1_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.plainCard2_ = plainCard2_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards other) { - if (other == de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.getDefaultInstance()) return this; - if (other.hasPlainCard1()) { - setPlainCard1(other.getPlainCard1()); - } - if (other.hasPlainCard2()) { - setPlainCard2(other.getPlainCard2()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasPlainCard1()) { - - return false; - } - if (!hasPlainCard2()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -22120,117 +27805,445 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PlainCards parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PlainCards(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required uint32 plainCard1 = 1; + public static final int PLAINCARD1_FIELD_NUMBER = 1; + private int plainCard1_; + /** + * required uint32 plainCard1 = 1; + */ + public boolean hasPlainCard1() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 plainCard1 = 1; + */ + public int getPlainCard1() { + return plainCard1_; + } + + // required uint32 plainCard2 = 2; + public static final int PLAINCARD2_FIELD_NUMBER = 2; + private int plainCard2_; + /** + * required uint32 plainCard2 = 2; + */ + public boolean hasPlainCard2() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 plainCard2 = 2; + */ + public int getPlainCard2() { + return plainCard2_; + } + + private void initFields() { + plainCard1_ = 0; + plainCard2_ = 0; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasPlainCard1()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPlainCard2()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, plainCard1_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, plainCard2_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, plainCard1_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, plainCard2_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code HandStartMessage.PlainCards} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards, Builder> + implements de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCardsOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + plainCard1_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + plainCard2_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards build() { + de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards buildPartial() { + de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards result = new de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.plainCard1_ = plainCard1_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.plainCard2_ = plainCard2_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards other) { + if (other == de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.getDefaultInstance()) return this; + if (other.hasPlainCard1()) { + setPlainCard1(other.getPlainCard1()); + } + if (other.hasPlainCard2()) { + setPlainCard2(other.getPlainCard2()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasPlainCard1()) { + + return false; + } + if (!hasPlainCard2()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 plainCard1 = 1; private int plainCard1_ ; + /** + * required uint32 plainCard1 = 1; + */ public boolean hasPlainCard1() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 plainCard1 = 1; + */ public int getPlainCard1() { return plainCard1_; } + /** + * required uint32 plainCard1 = 1; + */ public Builder setPlainCard1(int value) { bitField0_ |= 0x00000001; plainCard1_ = value; return this; } + /** + * required uint32 plainCard1 = 1; + */ public Builder clearPlainCard1() { bitField0_ = (bitField0_ & ~0x00000001); plainCard1_ = 0; return this; } - + // required uint32 plainCard2 = 2; private int plainCard2_ ; + /** + * required uint32 plainCard2 = 2; + */ public boolean hasPlainCard2() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 plainCard2 = 2; + */ public int getPlainCard2() { return plainCard2_; } + /** + * required uint32 plainCard2 = 2; + */ public Builder setPlainCard2(int value) { bitField0_ |= 0x00000002; plainCard2_ = value; return this; } + /** + * required uint32 plainCard2 = 2; + */ public Builder clearPlainCard2() { bitField0_ = (bitField0_ & ~0x00000002); plainCard2_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:HandStartMessage.PlainCards) } - + static { defaultInstance = new PlainCards(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:HandStartMessage.PlainCards) } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // optional .HandStartMessage.PlainCards plainCards = 2; public static final int PLAINCARDS_FIELD_NUMBER = 2; private de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards plainCards_; + /** + * optional .HandStartMessage.PlainCards plainCards = 2; + */ public boolean hasPlainCards() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * optional .HandStartMessage.PlainCards plainCards = 2; + */ public de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards getPlainCards() { return plainCards_; } - + // optional bytes encryptedCards = 3; public static final int ENCRYPTEDCARDS_FIELD_NUMBER = 3; private com.google.protobuf.ByteString encryptedCards_; + /** + * optional bytes encryptedCards = 3; + */ public boolean hasEncryptedCards() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional bytes encryptedCards = 3; + */ public com.google.protobuf.ByteString getEncryptedCards() { return encryptedCards_; } - + // required uint32 smallBlind = 4; public static final int SMALLBLIND_FIELD_NUMBER = 4; private int smallBlind_; + /** + * required uint32 smallBlind = 4; + */ public boolean hasSmallBlind() { return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required uint32 smallBlind = 4; + */ public int getSmallBlind() { return smallBlind_; } - + // repeated .NetPlayerState seatStates = 5; public static final int SEATSTATES_FIELD_NUMBER = 5; private java.util.List seatStates_; + /** + * repeated .NetPlayerState seatStates = 5; + */ public java.util.List getSeatStatesList() { return seatStates_; } + /** + * repeated .NetPlayerState seatStates = 5; + */ public int getSeatStatesCount() { return seatStates_.size(); } + /** + * repeated .NetPlayerState seatStates = 5; + */ public de.pokerth.protocol.ProtoBuf.NetPlayerState getSeatStates(int index) { return seatStates_.get(index); } - + private void initFields() { gameId_ = 0; plainCards_ = de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.getDefaultInstance(); @@ -22242,7 +28255,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -22260,7 +28273,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -22280,12 +28293,12 @@ public final class ProtoBuf { output.writeEnum(5, seatStates_.get(i).getNumber()); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -22315,88 +28328,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.HandStartMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.HandStartMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.HandStartMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.HandStartMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.HandStartMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.HandStartMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.HandStartMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.HandStartMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.HandStartMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.HandStartMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.HandStartMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code HandStartMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.HandStartMessage, Builder> @@ -22405,13 +28407,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -22426,15 +28428,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000010); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.HandStartMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.HandStartMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.HandStartMessage build() { de.pokerth.protocol.ProtoBuf.HandStartMessage result = buildPartial(); if (!result.isInitialized()) { @@ -22442,17 +28444,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.HandStartMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.HandStartMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.HandStartMessage buildPartial() { de.pokerth.protocol.ProtoBuf.HandStartMessage result = new de.pokerth.protocol.ProtoBuf.HandStartMessage(this); int from_bitField0_ = bitField0_; @@ -22481,7 +28473,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.HandStartMessage other) { if (other == de.pokerth.protocol.ProtoBuf.HandStartMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -22508,7 +28500,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -22526,120 +28518,98 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - gameId_ = input.readUInt32(); - break; - } - case 18: { - de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.Builder subBuilder = de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.newBuilder(); - if (hasPlainCards()) { - subBuilder.mergeFrom(getPlainCards()); - } - input.readMessage(subBuilder, extensionRegistry); - setPlainCards(subBuilder.buildPartial()); - break; - } - case 26: { - bitField0_ |= 0x00000004; - encryptedCards_ = input.readBytes(); - break; - } - case 32: { - bitField0_ |= 0x00000008; - smallBlind_ = input.readUInt32(); - break; - } - case 40: { - int rawValue = input.readEnum(); - de.pokerth.protocol.ProtoBuf.NetPlayerState value = de.pokerth.protocol.ProtoBuf.NetPlayerState.valueOf(rawValue); - if (value != null) { - addSeatStates(value); - } - break; - } - case 42: { - int length = input.readRawVarint32(); - int oldLimit = input.pushLimit(length); - while(input.getBytesUntilLimit() > 0) { - int rawValue = input.readEnum(); - de.pokerth.protocol.ProtoBuf.NetPlayerState value = de.pokerth.protocol.ProtoBuf.NetPlayerState.valueOf(rawValue); - if (value != null) { - addSeatStates(value); - } - } - input.popLimit(oldLimit); - break; - } + de.pokerth.protocol.ProtoBuf.HandStartMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.HandStartMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // optional .HandStartMessage.PlainCards plainCards = 2; private de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards plainCards_ = de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.getDefaultInstance(); + /** + * optional .HandStartMessage.PlainCards plainCards = 2; + */ public boolean hasPlainCards() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * optional .HandStartMessage.PlainCards plainCards = 2; + */ public de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards getPlainCards() { return plainCards_; } + /** + * optional .HandStartMessage.PlainCards plainCards = 2; + */ public Builder setPlainCards(de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards value) { if (value == null) { throw new NullPointerException(); } plainCards_ = value; - + bitField0_ |= 0x00000002; return this; } + /** + * optional .HandStartMessage.PlainCards plainCards = 2; + */ public Builder setPlainCards( de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.Builder builderForValue) { plainCards_ = builderForValue.build(); - + bitField0_ |= 0x00000002; return this; } + /** + * optional .HandStartMessage.PlainCards plainCards = 2; + */ public Builder mergePlainCards(de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards value) { if (((bitField0_ & 0x00000002) == 0x00000002) && plainCards_ != de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.getDefaultInstance()) { @@ -22648,25 +28618,37 @@ public final class ProtoBuf { } else { plainCards_ = value; } - + bitField0_ |= 0x00000002; return this; } + /** + * optional .HandStartMessage.PlainCards plainCards = 2; + */ public Builder clearPlainCards() { plainCards_ = de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + // optional bytes encryptedCards = 3; private com.google.protobuf.ByteString encryptedCards_ = com.google.protobuf.ByteString.EMPTY; + /** + * optional bytes encryptedCards = 3; + */ public boolean hasEncryptedCards() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional bytes encryptedCards = 3; + */ public com.google.protobuf.ByteString getEncryptedCards() { return encryptedCards_; } + /** + * optional bytes encryptedCards = 3; + */ public Builder setEncryptedCards(com.google.protobuf.ByteString value) { if (value == null) { throw new NullPointerException(); @@ -22676,34 +28658,49 @@ public final class ProtoBuf { return this; } + /** + * optional bytes encryptedCards = 3; + */ public Builder clearEncryptedCards() { bitField0_ = (bitField0_ & ~0x00000004); encryptedCards_ = getDefaultInstance().getEncryptedCards(); return this; } - + // required uint32 smallBlind = 4; private int smallBlind_ ; + /** + * required uint32 smallBlind = 4; + */ public boolean hasSmallBlind() { return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required uint32 smallBlind = 4; + */ public int getSmallBlind() { return smallBlind_; } + /** + * required uint32 smallBlind = 4; + */ public Builder setSmallBlind(int value) { bitField0_ |= 0x00000008; smallBlind_ = value; return this; } + /** + * required uint32 smallBlind = 4; + */ public Builder clearSmallBlind() { bitField0_ = (bitField0_ & ~0x00000008); smallBlind_ = 0; return this; } - + // repeated .NetPlayerState seatStates = 5; private java.util.List seatStates_ = java.util.Collections.emptyList(); @@ -22713,15 +28710,27 @@ public final class ProtoBuf { bitField0_ |= 0x00000010; } } + /** + * repeated .NetPlayerState seatStates = 5; + */ public java.util.List getSeatStatesList() { return java.util.Collections.unmodifiableList(seatStates_); } + /** + * repeated .NetPlayerState seatStates = 5; + */ public int getSeatStatesCount() { return seatStates_.size(); } + /** + * repeated .NetPlayerState seatStates = 5; + */ public de.pokerth.protocol.ProtoBuf.NetPlayerState getSeatStates(int index) { return seatStates_.get(index); } + /** + * repeated .NetPlayerState seatStates = 5; + */ public Builder setSeatStates( int index, de.pokerth.protocol.ProtoBuf.NetPlayerState value) { if (value == null) { @@ -22732,6 +28741,9 @@ public final class ProtoBuf { return this; } + /** + * repeated .NetPlayerState seatStates = 5; + */ public Builder addSeatStates(de.pokerth.protocol.ProtoBuf.NetPlayerState value) { if (value == null) { throw new NullPointerException(); @@ -22741,6 +28753,9 @@ public final class ProtoBuf { return this; } + /** + * repeated .NetPlayerState seatStates = 5; + */ public Builder addAllSeatStates( java.lang.Iterable values) { ensureSeatStatesIsMutable(); @@ -22748,347 +28763,100 @@ public final class ProtoBuf { return this; } + /** + * repeated .NetPlayerState seatStates = 5; + */ public Builder clearSeatStates() { seatStates_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000010); return this; } - + // @@protoc_insertion_point(builder_scope:HandStartMessage) } - + static { defaultInstance = new HandStartMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:HandStartMessage) } - + public interface PlayersTurnMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ int getPlayerId(); - + // required .NetGameState gameState = 3; + /** + * required .NetGameState gameState = 3; + */ boolean hasGameState(); + /** + * required .NetGameState gameState = 3; + */ de.pokerth.protocol.ProtoBuf.NetGameState getGameState(); } + /** + * Protobuf type {@code PlayersTurnMessage} + */ public static final class PlayersTurnMessage extends com.google.protobuf.GeneratedMessageLite implements PlayersTurnMessageOrBuilder { // Use PlayersTurnMessage.newBuilder() to construct. - private PlayersTurnMessage(Builder builder) { + private PlayersTurnMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private PlayersTurnMessage(boolean noInit) {} - + private static final PlayersTurnMessage defaultInstance; public static PlayersTurnMessage getDefaultInstance() { return defaultInstance; } - + public PlayersTurnMessage getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required uint32 gameId = 1; - public static final int GAMEID_FIELD_NUMBER = 1; - private int gameId_; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - - // required uint32 playerId = 2; - public static final int PLAYERID_FIELD_NUMBER = 2; - private int playerId_; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - - // required .NetGameState gameState = 3; - public static final int GAMESTATE_FIELD_NUMBER = 3; - private de.pokerth.protocol.ProtoBuf.NetGameState gameState_; - public boolean hasGameState() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.NetGameState getGameState() { - return gameState_; - } - - private void initFields() { - gameId_ = 0; - playerId_ = 0; - gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasGameId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasGameState()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, playerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeEnum(3, gameState_.getNumber()); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, playerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(3, gameState_.getNumber()); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom( + + private PlayersTurnMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayersTurnMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.PlayersTurnMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.PlayersTurnMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - gameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - playerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; - bitField0_ = (bitField0_ & ~0x00000004); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.PlayersTurnMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.PlayersTurnMessage build() { - de.pokerth.protocol.ProtoBuf.PlayersTurnMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.PlayersTurnMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.PlayersTurnMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.PlayersTurnMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.PlayersTurnMessage result = new de.pokerth.protocol.ProtoBuf.PlayersTurnMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.gameId_ = gameId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.playerId_ = playerId_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.gameState_ = gameState_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayersTurnMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.getDefaultInstance()) return this; - if (other.hasGameId()) { - setGameId(other.getGameId()); - } - if (other.hasPlayerId()) { - setPlayerId(other.getPlayerId()); - } - if (other.hasGameState()) { - setGameState(other.getGameState()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasGameId()) { - - return false; - } - if (!hasPlayerId()) { - - return false; - } - if (!hasGameState()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -23113,196 +28881,94 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // required .NetGameState gameState = 3; - private de.pokerth.protocol.ProtoBuf.NetGameState gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; - public boolean hasGameState() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.NetGameState getGameState() { - return gameState_; - } - public Builder setGameState(de.pokerth.protocol.ProtoBuf.NetGameState value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000004; - gameState_ = value; - - return this; - } - public Builder clearGameState() { - bitField0_ = (bitField0_ & ~0x00000004); - gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; - - return this; - } - - // @@protoc_insertion_point(builder_scope:PlayersTurnMessage) } - - static { - defaultInstance = new PlayersTurnMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PlayersTurnMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PlayersTurnMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:PlayersTurnMessage) - } - - public interface MyActionRequestMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 handNum = 2; - boolean hasHandNum(); - int getHandNum(); - - // required .NetGameState gameState = 3; - boolean hasGameState(); - de.pokerth.protocol.ProtoBuf.NetGameState getGameState(); - - // required .NetPlayerAction myAction = 4; - boolean hasMyAction(); - de.pokerth.protocol.ProtoBuf.NetPlayerAction getMyAction(); - - // required uint32 myRelativeBet = 5; - boolean hasMyRelativeBet(); - int getMyRelativeBet(); - } - public static final class MyActionRequestMessage extends - com.google.protobuf.GeneratedMessageLite - implements MyActionRequestMessageOrBuilder { - // Use MyActionRequestMessage.newBuilder() to construct. - private MyActionRequestMessage(Builder builder) { - super(builder); - } - private MyActionRequestMessage(boolean noInit) {} - - private static final MyActionRequestMessage defaultInstance; - public static MyActionRequestMessage getDefaultInstance() { - return defaultInstance; - } - - public MyActionRequestMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - - // required uint32 handNum = 2; - public static final int HANDNUM_FIELD_NUMBER = 2; - private int handNum_; - public boolean hasHandNum() { + + // required uint32 playerId = 2; + public static final int PLAYERID_FIELD_NUMBER = 2; + private int playerId_; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public int getHandNum() { - return handNum_; + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; } - + // required .NetGameState gameState = 3; public static final int GAMESTATE_FIELD_NUMBER = 3; private de.pokerth.protocol.ProtoBuf.NetGameState gameState_; + /** + * required .NetGameState gameState = 3; + */ public boolean hasGameState() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required .NetGameState gameState = 3; + */ public de.pokerth.protocol.ProtoBuf.NetGameState getGameState() { return gameState_; } - - // required .NetPlayerAction myAction = 4; - public static final int MYACTION_FIELD_NUMBER = 4; - private de.pokerth.protocol.ProtoBuf.NetPlayerAction myAction_; - public boolean hasMyAction() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public de.pokerth.protocol.ProtoBuf.NetPlayerAction getMyAction() { - return myAction_; - } - - // required uint32 myRelativeBet = 5; - public static final int MYRELATIVEBET_FIELD_NUMBER = 5; - private int myRelativeBet_; - public boolean hasMyRelativeBet() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - public int getMyRelativeBet() { - return myRelativeBet_; - } - + private void initFields() { gameId_ = 0; - handNum_ = 0; + playerId_ = 0; gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; - myAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; - myRelativeBet_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } - if (!hasHandNum()) { + if (!hasPlayerId()) { memoizedIsInitialized = 0; return false; } @@ -23310,18 +28976,10 @@ public final class ProtoBuf { memoizedIsInitialized = 0; return false; } - if (!hasMyAction()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasMyRelativeBet()) { - memoizedIsInitialized = 0; - return false; - } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -23329,24 +28987,18 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, handNum_); + output.writeUInt32(2, playerId_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { output.writeEnum(3, gameState_.getNumber()); } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeEnum(4, myAction_.getNumber()); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - output.writeUInt32(5, myRelativeBet_); - } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -23354,163 +29006,130 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, handNum_); + .computeUInt32Size(2, playerId_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream .computeEnumSize(3, gameState_.getNumber()); } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(4, myAction_.getNumber()); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(5, myRelativeBet_); - } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.MyActionRequestMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayersTurnMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code PlayersTurnMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.MyActionRequestMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.MyActionRequestMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.PlayersTurnMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.PlayersTurnMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - handNum_ = 0; + playerId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; bitField0_ = (bitField0_ & ~0x00000004); - myAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; - bitField0_ = (bitField0_ & ~0x00000008); - myRelativeBet_ = 0; - bitField0_ = (bitField0_ & ~0x00000010); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.MyActionRequestMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.PlayersTurnMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.MyActionRequestMessage build() { - de.pokerth.protocol.ProtoBuf.MyActionRequestMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.PlayersTurnMessage build() { + de.pokerth.protocol.ProtoBuf.PlayersTurnMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.MyActionRequestMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.MyActionRequestMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.MyActionRequestMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.MyActionRequestMessage result = new de.pokerth.protocol.ProtoBuf.MyActionRequestMessage(this); + + public de.pokerth.protocol.ProtoBuf.PlayersTurnMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.PlayersTurnMessage result = new de.pokerth.protocol.ProtoBuf.PlayersTurnMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -23520,49 +29139,35 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.handNum_ = handNum_; + result.playerId_ = playerId_; if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } result.gameState_ = gameState_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.myAction_ = myAction_; - if (((from_bitField0_ & 0x00000010) == 0x00000010)) { - to_bitField0_ |= 0x00000010; - } - result.myRelativeBet_ = myRelativeBet_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.MyActionRequestMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayersTurnMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } - if (other.hasHandNum()) { - setHandNum(other.getHandNum()); + if (other.hasPlayerId()) { + setPlayerId(other.getPlayerId()); } if (other.hasGameState()) { setGameState(other.getGameState()); } - if (other.hasMyAction()) { - setMyAction(other.getMyAction()); - } - if (other.hasMyRelativeBet()) { - setMyRelativeBet(other.getMyRelativeBet()); - } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { return false; } - if (!hasHandNum()) { + if (!hasPlayerId()) { return false; } @@ -23570,31 +29175,234 @@ public final class ProtoBuf { return false; } - if (!hasMyAction()) { - - return false; - } - if (!hasMyRelativeBet()) { - - return false; - } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.PlayersTurnMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.PlayersTurnMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // required .NetGameState gameState = 3; + private de.pokerth.protocol.ProtoBuf.NetGameState gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; + /** + * required .NetGameState gameState = 3; + */ + public boolean hasGameState() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .NetGameState gameState = 3; + */ + public de.pokerth.protocol.ProtoBuf.NetGameState getGameState() { + return gameState_; + } + /** + * required .NetGameState gameState = 3; + */ + public Builder setGameState(de.pokerth.protocol.ProtoBuf.NetGameState value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + gameState_ = value; + + return this; + } + /** + * required .NetGameState gameState = 3; + */ + public Builder clearGameState() { + bitField0_ = (bitField0_ & ~0x00000004); + gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; + + return this; + } + + // @@protoc_insertion_point(builder_scope:PlayersTurnMessage) + } + + static { + defaultInstance = new PlayersTurnMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:PlayersTurnMessage) + } + + public interface MyActionRequestMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 handNum = 2; + /** + * required uint32 handNum = 2; + */ + boolean hasHandNum(); + /** + * required uint32 handNum = 2; + */ + int getHandNum(); + + // required .NetGameState gameState = 3; + /** + * required .NetGameState gameState = 3; + */ + boolean hasGameState(); + /** + * required .NetGameState gameState = 3; + */ + de.pokerth.protocol.ProtoBuf.NetGameState getGameState(); + + // required .NetPlayerAction myAction = 4; + /** + * required .NetPlayerAction myAction = 4; + */ + boolean hasMyAction(); + /** + * required .NetPlayerAction myAction = 4; + */ + de.pokerth.protocol.ProtoBuf.NetPlayerAction getMyAction(); + + // required uint32 myRelativeBet = 5; + /** + * required uint32 myRelativeBet = 5; + */ + boolean hasMyRelativeBet(); + /** + * required uint32 myRelativeBet = 5; + */ + int getMyRelativeBet(); + } + /** + * Protobuf type {@code MyActionRequestMessage} + */ + public static final class MyActionRequestMessage extends + com.google.protobuf.GeneratedMessageLite + implements MyActionRequestMessageOrBuilder { + // Use MyActionRequestMessage.newBuilder() to construct. + private MyActionRequestMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private MyActionRequestMessage(boolean noInit) {} + + private static final MyActionRequestMessage defaultInstance; + public static MyActionRequestMessage getDefaultInstance() { + return defaultInstance; + } + + public MyActionRequestMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private MyActionRequestMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -23633,304 +29441,147 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 handNum = 2; - private int handNum_ ; - public boolean hasHandNum() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getHandNum() { - return handNum_; - } - public Builder setHandNum(int value) { - bitField0_ |= 0x00000002; - handNum_ = value; - - return this; - } - public Builder clearHandNum() { - bitField0_ = (bitField0_ & ~0x00000002); - handNum_ = 0; - - return this; - } - - // required .NetGameState gameState = 3; - private de.pokerth.protocol.ProtoBuf.NetGameState gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; - public boolean hasGameState() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.NetGameState getGameState() { - return gameState_; - } - public Builder setGameState(de.pokerth.protocol.ProtoBuf.NetGameState value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000004; - gameState_ = value; - - return this; - } - public Builder clearGameState() { - bitField0_ = (bitField0_ & ~0x00000004); - gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; - - return this; - } - - // required .NetPlayerAction myAction = 4; - private de.pokerth.protocol.ProtoBuf.NetPlayerAction myAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; - public boolean hasMyAction() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public de.pokerth.protocol.ProtoBuf.NetPlayerAction getMyAction() { - return myAction_; - } - public Builder setMyAction(de.pokerth.protocol.ProtoBuf.NetPlayerAction value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000008; - myAction_ = value; - - return this; - } - public Builder clearMyAction() { - bitField0_ = (bitField0_ & ~0x00000008); - myAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; - - return this; - } - - // required uint32 myRelativeBet = 5; - private int myRelativeBet_ ; - public boolean hasMyRelativeBet() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - public int getMyRelativeBet() { - return myRelativeBet_; - } - public Builder setMyRelativeBet(int value) { - bitField0_ |= 0x00000010; - myRelativeBet_ = value; - - return this; - } - public Builder clearMyRelativeBet() { - bitField0_ = (bitField0_ & ~0x00000010); - myRelativeBet_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:MyActionRequestMessage) } - - static { - defaultInstance = new MyActionRequestMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:MyActionRequestMessage) - } - - public interface YourActionRejectedMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required .NetGameState gameState = 2; - boolean hasGameState(); - de.pokerth.protocol.ProtoBuf.NetGameState getGameState(); - - // required .NetPlayerAction yourAction = 3; - boolean hasYourAction(); - de.pokerth.protocol.ProtoBuf.NetPlayerAction getYourAction(); - - // required uint32 yourRelativeBet = 4; - boolean hasYourRelativeBet(); - int getYourRelativeBet(); - - // required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; - boolean hasRejectionReason(); - de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason getRejectionReason(); - } - public static final class YourActionRejectedMessage extends - com.google.protobuf.GeneratedMessageLite - implements YourActionRejectedMessageOrBuilder { - // Use YourActionRejectedMessage.newBuilder() to construct. - private YourActionRejectedMessage(Builder builder) { - super(builder); - } - private YourActionRejectedMessage(boolean noInit) {} - - private static final YourActionRejectedMessage defaultInstance; - public static YourActionRejectedMessage getDefaultInstance() { - return defaultInstance; - } - - public YourActionRejectedMessage getDefaultInstanceForType() { - return defaultInstance; - } - - public enum RejectionReason - implements com.google.protobuf.Internal.EnumLite { - rejectedInvalidGameState(0, 1), - rejectedNotYourTurn(1, 2), - rejectedActionNotAllowed(2, 3), - ; - - public static final int rejectedInvalidGameState_VALUE = 1; - public static final int rejectedNotYourTurn_VALUE = 2; - public static final int rejectedActionNotAllowed_VALUE = 3; - - - public final int getNumber() { return value; } - - public static RejectionReason valueOf(int value) { - switch (value) { - case 1: return rejectedInvalidGameState; - case 2: return rejectedNotYourTurn; - case 3: return rejectedActionNotAllowed; - default: return null; - } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public MyActionRequestMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new MyActionRequestMessage(input, extensionRegistry); } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public RejectionReason findValueByNumber(int number) { - return RejectionReason.valueOf(number); - } - }; - - private final int value; - - private RejectionReason(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:YourActionRejectedMessage.RejectionReason) + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - - // required .NetGameState gameState = 2; - public static final int GAMESTATE_FIELD_NUMBER = 2; - private de.pokerth.protocol.ProtoBuf.NetGameState gameState_; - public boolean hasGameState() { + + // required uint32 handNum = 2; + public static final int HANDNUM_FIELD_NUMBER = 2; + private int handNum_; + /** + * required uint32 handNum = 2; + */ + public boolean hasHandNum() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 handNum = 2; + */ + public int getHandNum() { + return handNum_; + } + + // required .NetGameState gameState = 3; + public static final int GAMESTATE_FIELD_NUMBER = 3; + private de.pokerth.protocol.ProtoBuf.NetGameState gameState_; + /** + * required .NetGameState gameState = 3; + */ + public boolean hasGameState() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .NetGameState gameState = 3; + */ public de.pokerth.protocol.ProtoBuf.NetGameState getGameState() { return gameState_; } - - // required .NetPlayerAction yourAction = 3; - public static final int YOURACTION_FIELD_NUMBER = 3; - private de.pokerth.protocol.ProtoBuf.NetPlayerAction yourAction_; - public boolean hasYourAction() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.NetPlayerAction getYourAction() { - return yourAction_; - } - - // required uint32 yourRelativeBet = 4; - public static final int YOURRELATIVEBET_FIELD_NUMBER = 4; - private int yourRelativeBet_; - public boolean hasYourRelativeBet() { + + // required .NetPlayerAction myAction = 4; + public static final int MYACTION_FIELD_NUMBER = 4; + private de.pokerth.protocol.ProtoBuf.NetPlayerAction myAction_; + /** + * required .NetPlayerAction myAction = 4; + */ + public boolean hasMyAction() { return ((bitField0_ & 0x00000008) == 0x00000008); } - public int getYourRelativeBet() { - return yourRelativeBet_; + /** + * required .NetPlayerAction myAction = 4; + */ + public de.pokerth.protocol.ProtoBuf.NetPlayerAction getMyAction() { + return myAction_; } - - // required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; - public static final int REJECTIONREASON_FIELD_NUMBER = 5; - private de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason rejectionReason_; - public boolean hasRejectionReason() { + + // required uint32 myRelativeBet = 5; + public static final int MYRELATIVEBET_FIELD_NUMBER = 5; + private int myRelativeBet_; + /** + * required uint32 myRelativeBet = 5; + */ + public boolean hasMyRelativeBet() { return ((bitField0_ & 0x00000010) == 0x00000010); } - public de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason getRejectionReason() { - return rejectionReason_; + /** + * required uint32 myRelativeBet = 5; + */ + public int getMyRelativeBet() { + return myRelativeBet_; } - + private void initFields() { gameId_ = 0; + handNum_ = 0; gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; - yourAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; - yourRelativeBet_ = 0; - rejectionReason_ = de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason.rejectedInvalidGameState; + myAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; + myRelativeBet_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } + if (!hasHandNum()) { + memoizedIsInitialized = 0; + return false; + } if (!hasGameState()) { memoizedIsInitialized = 0; return false; } - if (!hasYourAction()) { + if (!hasMyAction()) { memoizedIsInitialized = 0; return false; } - if (!hasYourRelativeBet()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasRejectionReason()) { + if (!hasMyRelativeBet()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -23938,24 +29589,24 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeEnum(2, gameState_.getNumber()); + output.writeUInt32(2, handNum_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeEnum(3, yourAction_.getNumber()); + output.writeEnum(3, gameState_.getNumber()); } if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeUInt32(4, yourRelativeBet_); + output.writeEnum(4, myAction_.getNumber()); } if (((bitField0_ & 0x00000010) == 0x00000010)) { - output.writeEnum(5, rejectionReason_.getNumber()); + output.writeUInt32(5, myRelativeBet_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -23963,163 +29614,142 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, gameState_.getNumber()); + .computeUInt32Size(2, handNum_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(3, yourAction_.getNumber()); + .computeEnumSize(3, gameState_.getNumber()); } if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(4, yourRelativeBet_); + .computeEnumSize(4, myAction_.getNumber()); } if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(5, rejectionReason_.getNumber()); + .computeUInt32Size(5, myRelativeBet_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.MyActionRequestMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code MyActionRequestMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.YourActionRejectedMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.MyActionRequestMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.MyActionRequestMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; + handNum_ = 0; bitField0_ = (bitField0_ & ~0x00000002); - yourAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; + gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; bitField0_ = (bitField0_ & ~0x00000004); - yourRelativeBet_ = 0; + myAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; bitField0_ = (bitField0_ & ~0x00000008); - rejectionReason_ = de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason.rejectedInvalidGameState; + myRelativeBet_ = 0; bitField0_ = (bitField0_ & ~0x00000010); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.MyActionRequestMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage build() { - de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.MyActionRequestMessage build() { + de.pokerth.protocol.ProtoBuf.MyActionRequestMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage result = new de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage(this); + + public de.pokerth.protocol.ProtoBuf.MyActionRequestMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.MyActionRequestMessage result = new de.pokerth.protocol.ProtoBuf.MyActionRequestMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -24129,81 +29759,361 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.gameState_ = gameState_; + result.handNum_ = handNum_; if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } - result.yourAction_ = yourAction_; + result.gameState_ = gameState_; if (((from_bitField0_ & 0x00000008) == 0x00000008)) { to_bitField0_ |= 0x00000008; } - result.yourRelativeBet_ = yourRelativeBet_; + result.myAction_ = myAction_; if (((from_bitField0_ & 0x00000010) == 0x00000010)) { to_bitField0_ |= 0x00000010; } - result.rejectionReason_ = rejectionReason_; + result.myRelativeBet_ = myRelativeBet_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.MyActionRequestMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } + if (other.hasHandNum()) { + setHandNum(other.getHandNum()); + } if (other.hasGameState()) { setGameState(other.getGameState()); } - if (other.hasYourAction()) { - setYourAction(other.getYourAction()); + if (other.hasMyAction()) { + setMyAction(other.getMyAction()); } - if (other.hasYourRelativeBet()) { - setYourRelativeBet(other.getYourRelativeBet()); - } - if (other.hasRejectionReason()) { - setRejectionReason(other.getRejectionReason()); + if (other.hasMyRelativeBet()) { + setMyRelativeBet(other.getMyRelativeBet()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { return false; } + if (!hasHandNum()) { + + return false; + } if (!hasGameState()) { return false; } - if (!hasYourAction()) { + if (!hasMyAction()) { return false; } - if (!hasYourRelativeBet()) { - - return false; - } - if (!hasRejectionReason()) { + if (!hasMyRelativeBet()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.MyActionRequestMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.MyActionRequestMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 handNum = 2; + private int handNum_ ; + /** + * required uint32 handNum = 2; + */ + public boolean hasHandNum() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 handNum = 2; + */ + public int getHandNum() { + return handNum_; + } + /** + * required uint32 handNum = 2; + */ + public Builder setHandNum(int value) { + bitField0_ |= 0x00000002; + handNum_ = value; + + return this; + } + /** + * required uint32 handNum = 2; + */ + public Builder clearHandNum() { + bitField0_ = (bitField0_ & ~0x00000002); + handNum_ = 0; + + return this; + } + + // required .NetGameState gameState = 3; + private de.pokerth.protocol.ProtoBuf.NetGameState gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; + /** + * required .NetGameState gameState = 3; + */ + public boolean hasGameState() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .NetGameState gameState = 3; + */ + public de.pokerth.protocol.ProtoBuf.NetGameState getGameState() { + return gameState_; + } + /** + * required .NetGameState gameState = 3; + */ + public Builder setGameState(de.pokerth.protocol.ProtoBuf.NetGameState value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + gameState_ = value; + + return this; + } + /** + * required .NetGameState gameState = 3; + */ + public Builder clearGameState() { + bitField0_ = (bitField0_ & ~0x00000004); + gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; + + return this; + } + + // required .NetPlayerAction myAction = 4; + private de.pokerth.protocol.ProtoBuf.NetPlayerAction myAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; + /** + * required .NetPlayerAction myAction = 4; + */ + public boolean hasMyAction() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required .NetPlayerAction myAction = 4; + */ + public de.pokerth.protocol.ProtoBuf.NetPlayerAction getMyAction() { + return myAction_; + } + /** + * required .NetPlayerAction myAction = 4; + */ + public Builder setMyAction(de.pokerth.protocol.ProtoBuf.NetPlayerAction value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; + myAction_ = value; + + return this; + } + /** + * required .NetPlayerAction myAction = 4; + */ + public Builder clearMyAction() { + bitField0_ = (bitField0_ & ~0x00000008); + myAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; + + return this; + } + + // required uint32 myRelativeBet = 5; + private int myRelativeBet_ ; + /** + * required uint32 myRelativeBet = 5; + */ + public boolean hasMyRelativeBet() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required uint32 myRelativeBet = 5; + */ + public int getMyRelativeBet() { + return myRelativeBet_; + } + /** + * required uint32 myRelativeBet = 5; + */ + public Builder setMyRelativeBet(int value) { + bitField0_ |= 0x00000010; + myRelativeBet_ = value; + + return this; + } + /** + * required uint32 myRelativeBet = 5; + */ + public Builder clearMyRelativeBet() { + bitField0_ = (bitField0_ & ~0x00000010); + myRelativeBet_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:MyActionRequestMessage) + } + + static { + defaultInstance = new MyActionRequestMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:MyActionRequestMessage) + } + + public interface YourActionRejectedMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required .NetGameState gameState = 2; + /** + * required .NetGameState gameState = 2; + */ + boolean hasGameState(); + /** + * required .NetGameState gameState = 2; + */ + de.pokerth.protocol.ProtoBuf.NetGameState getGameState(); + + // required .NetPlayerAction yourAction = 3; + /** + * required .NetPlayerAction yourAction = 3; + */ + boolean hasYourAction(); + /** + * required .NetPlayerAction yourAction = 3; + */ + de.pokerth.protocol.ProtoBuf.NetPlayerAction getYourAction(); + + // required uint32 yourRelativeBet = 4; + /** + * required uint32 yourRelativeBet = 4; + */ + boolean hasYourRelativeBet(); + /** + * required uint32 yourRelativeBet = 4; + */ + int getYourRelativeBet(); + + // required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; + /** + * required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; + */ + boolean hasRejectionReason(); + /** + * required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; + */ + de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason getRejectionReason(); + } + /** + * Protobuf type {@code YourActionRejectedMessage} + */ + public static final class YourActionRejectedMessage extends + com.google.protobuf.GeneratedMessageLite + implements YourActionRejectedMessageOrBuilder { + // Use YourActionRejectedMessage.newBuilder() to construct. + private YourActionRejectedMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private YourActionRejectedMessage(boolean noInit) {} + + private static final YourActionRejectedMessage defaultInstance; + public static YourActionRejectedMessage getDefaultInstance() { + return defaultInstance; + } + + public YourActionRejectedMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private YourActionRejectedMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -24246,320 +30156,212 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public YourActionRejectedMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new YourActionRejectedMessage(input, extensionRegistry); } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required .NetGameState gameState = 2; - private de.pokerth.protocol.ProtoBuf.NetGameState gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; - public boolean hasGameState() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public de.pokerth.protocol.ProtoBuf.NetGameState getGameState() { - return gameState_; - } - public Builder setGameState(de.pokerth.protocol.ProtoBuf.NetGameState value) { - if (value == null) { - throw new NullPointerException(); + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code YourActionRejectedMessage.RejectionReason} + */ + public enum RejectionReason + implements com.google.protobuf.Internal.EnumLite { + /** + * rejectedInvalidGameState = 1; + */ + rejectedInvalidGameState(0, 1), + /** + * rejectedNotYourTurn = 2; + */ + rejectedNotYourTurn(1, 2), + /** + * rejectedActionNotAllowed = 3; + */ + rejectedActionNotAllowed(2, 3), + ; + + /** + * rejectedInvalidGameState = 1; + */ + public static final int rejectedInvalidGameState_VALUE = 1; + /** + * rejectedNotYourTurn = 2; + */ + public static final int rejectedNotYourTurn_VALUE = 2; + /** + * rejectedActionNotAllowed = 3; + */ + public static final int rejectedActionNotAllowed_VALUE = 3; + + + public final int getNumber() { return value; } + + public static RejectionReason valueOf(int value) { + switch (value) { + case 1: return rejectedInvalidGameState; + case 2: return rejectedNotYourTurn; + case 3: return rejectedActionNotAllowed; + default: return null; } - bitField0_ |= 0x00000002; - gameState_ = value; - - return this; } - public Builder clearGameState() { - bitField0_ = (bitField0_ & ~0x00000002); - gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; - - return this; + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; } - - // required .NetPlayerAction yourAction = 3; - private de.pokerth.protocol.ProtoBuf.NetPlayerAction yourAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; - public boolean hasYourAction() { - return ((bitField0_ & 0x00000004) == 0x00000004); + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public RejectionReason findValueByNumber(int number) { + return RejectionReason.valueOf(number); + } + }; + + private final int value; + + private RejectionReason(int index, int value) { + this.value = value; } - public de.pokerth.protocol.ProtoBuf.NetPlayerAction getYourAction() { - return yourAction_; - } - public Builder setYourAction(de.pokerth.protocol.ProtoBuf.NetPlayerAction value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000004; - yourAction_ = value; - - return this; - } - public Builder clearYourAction() { - bitField0_ = (bitField0_ & ~0x00000004); - yourAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; - - return this; - } - - // required uint32 yourRelativeBet = 4; - private int yourRelativeBet_ ; - public boolean hasYourRelativeBet() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public int getYourRelativeBet() { - return yourRelativeBet_; - } - public Builder setYourRelativeBet(int value) { - bitField0_ |= 0x00000008; - yourRelativeBet_ = value; - - return this; - } - public Builder clearYourRelativeBet() { - bitField0_ = (bitField0_ & ~0x00000008); - yourRelativeBet_ = 0; - - return this; - } - - // required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; - private de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason rejectionReason_ = de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason.rejectedInvalidGameState; - public boolean hasRejectionReason() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - public de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason getRejectionReason() { - return rejectionReason_; - } - public Builder setRejectionReason(de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000010; - rejectionReason_ = value; - - return this; - } - public Builder clearRejectionReason() { - bitField0_ = (bitField0_ & ~0x00000010); - rejectionReason_ = de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason.rejectedInvalidGameState; - - return this; - } - - // @@protoc_insertion_point(builder_scope:YourActionRejectedMessage) + + // @@protoc_insertion_point(enum_scope:YourActionRejectedMessage.RejectionReason) } - - static { - defaultInstance = new YourActionRejectedMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:YourActionRejectedMessage) - } - - public interface PlayersActionDoneMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 playerId = 2; - boolean hasPlayerId(); - int getPlayerId(); - - // required .NetGameState gameState = 3; - boolean hasGameState(); - de.pokerth.protocol.ProtoBuf.NetGameState getGameState(); - - // required .NetPlayerAction playerAction = 4; - boolean hasPlayerAction(); - de.pokerth.protocol.ProtoBuf.NetPlayerAction getPlayerAction(); - - // required uint32 totalPlayerBet = 5; - boolean hasTotalPlayerBet(); - int getTotalPlayerBet(); - - // required uint32 playerMoney = 6; - boolean hasPlayerMoney(); - int getPlayerMoney(); - - // required uint32 highestSet = 7; - boolean hasHighestSet(); - int getHighestSet(); - - // required uint32 minimumRaise = 8; - boolean hasMinimumRaise(); - int getMinimumRaise(); - } - public static final class PlayersActionDoneMessage extends - com.google.protobuf.GeneratedMessageLite - implements PlayersActionDoneMessageOrBuilder { - // Use PlayersActionDoneMessage.newBuilder() to construct. - private PlayersActionDoneMessage(Builder builder) { - super(builder); - } - private PlayersActionDoneMessage(boolean noInit) {} - - private static final PlayersActionDoneMessage defaultInstance; - public static PlayersActionDoneMessage getDefaultInstance() { - return defaultInstance; - } - - public PlayersActionDoneMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - - // required uint32 playerId = 2; - public static final int PLAYERID_FIELD_NUMBER = 2; - private int playerId_; - public boolean hasPlayerId() { + + // required .NetGameState gameState = 2; + public static final int GAMESTATE_FIELD_NUMBER = 2; + private de.pokerth.protocol.ProtoBuf.NetGameState gameState_; + /** + * required .NetGameState gameState = 2; + */ + public boolean hasGameState() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public int getPlayerId() { - return playerId_; - } - - // required .NetGameState gameState = 3; - public static final int GAMESTATE_FIELD_NUMBER = 3; - private de.pokerth.protocol.ProtoBuf.NetGameState gameState_; - public boolean hasGameState() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } + /** + * required .NetGameState gameState = 2; + */ public de.pokerth.protocol.ProtoBuf.NetGameState getGameState() { return gameState_; } - - // required .NetPlayerAction playerAction = 4; - public static final int PLAYERACTION_FIELD_NUMBER = 4; - private de.pokerth.protocol.ProtoBuf.NetPlayerAction playerAction_; - public boolean hasPlayerAction() { + + // required .NetPlayerAction yourAction = 3; + public static final int YOURACTION_FIELD_NUMBER = 3; + private de.pokerth.protocol.ProtoBuf.NetPlayerAction yourAction_; + /** + * required .NetPlayerAction yourAction = 3; + */ + public boolean hasYourAction() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .NetPlayerAction yourAction = 3; + */ + public de.pokerth.protocol.ProtoBuf.NetPlayerAction getYourAction() { + return yourAction_; + } + + // required uint32 yourRelativeBet = 4; + public static final int YOURRELATIVEBET_FIELD_NUMBER = 4; + private int yourRelativeBet_; + /** + * required uint32 yourRelativeBet = 4; + */ + public boolean hasYourRelativeBet() { return ((bitField0_ & 0x00000008) == 0x00000008); } - public de.pokerth.protocol.ProtoBuf.NetPlayerAction getPlayerAction() { - return playerAction_; + /** + * required uint32 yourRelativeBet = 4; + */ + public int getYourRelativeBet() { + return yourRelativeBet_; } - - // required uint32 totalPlayerBet = 5; - public static final int TOTALPLAYERBET_FIELD_NUMBER = 5; - private int totalPlayerBet_; - public boolean hasTotalPlayerBet() { + + // required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; + public static final int REJECTIONREASON_FIELD_NUMBER = 5; + private de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason rejectionReason_; + /** + * required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; + */ + public boolean hasRejectionReason() { return ((bitField0_ & 0x00000010) == 0x00000010); } - public int getTotalPlayerBet() { - return totalPlayerBet_; + /** + * required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; + */ + public de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason getRejectionReason() { + return rejectionReason_; } - - // required uint32 playerMoney = 6; - public static final int PLAYERMONEY_FIELD_NUMBER = 6; - private int playerMoney_; - public boolean hasPlayerMoney() { - return ((bitField0_ & 0x00000020) == 0x00000020); - } - public int getPlayerMoney() { - return playerMoney_; - } - - // required uint32 highestSet = 7; - public static final int HIGHESTSET_FIELD_NUMBER = 7; - private int highestSet_; - public boolean hasHighestSet() { - return ((bitField0_ & 0x00000040) == 0x00000040); - } - public int getHighestSet() { - return highestSet_; - } - - // required uint32 minimumRaise = 8; - public static final int MINIMUMRAISE_FIELD_NUMBER = 8; - private int minimumRaise_; - public boolean hasMinimumRaise() { - return ((bitField0_ & 0x00000080) == 0x00000080); - } - public int getMinimumRaise() { - return minimumRaise_; - } - + private void initFields() { gameId_ = 0; - playerId_ = 0; gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; - playerAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; - totalPlayerBet_ = 0; - playerMoney_ = 0; - highestSet_ = 0; - minimumRaise_ = 0; + yourAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; + yourRelativeBet_ = 0; + rejectionReason_ = de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason.rejectedInvalidGameState; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } - if (!hasPlayerId()) { - memoizedIsInitialized = 0; - return false; - } if (!hasGameState()) { memoizedIsInitialized = 0; return false; } - if (!hasPlayerAction()) { + if (!hasYourAction()) { memoizedIsInitialized = 0; return false; } - if (!hasTotalPlayerBet()) { + if (!hasYourRelativeBet()) { memoizedIsInitialized = 0; return false; } - if (!hasPlayerMoney()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasHighestSet()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasMinimumRaise()) { + if (!hasRejectionReason()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -24567,33 +30369,24 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, playerId_); + output.writeEnum(2, gameState_.getNumber()); } if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeEnum(3, gameState_.getNumber()); + output.writeEnum(3, yourAction_.getNumber()); } if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeEnum(4, playerAction_.getNumber()); + output.writeUInt32(4, yourRelativeBet_); } if (((bitField0_ & 0x00000010) == 0x00000010)) { - output.writeUInt32(5, totalPlayerBet_); - } - if (((bitField0_ & 0x00000020) == 0x00000020)) { - output.writeUInt32(6, playerMoney_); - } - if (((bitField0_ & 0x00000040) == 0x00000040)) { - output.writeUInt32(7, highestSet_); - } - if (((bitField0_ & 0x00000080) == 0x00000080)) { - output.writeUInt32(8, minimumRaise_); + output.writeEnum(5, rejectionReason_.getNumber()); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -24601,181 +30394,142 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, playerId_); + .computeEnumSize(2, gameState_.getNumber()); } if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(3, gameState_.getNumber()); + .computeEnumSize(3, yourAction_.getNumber()); } if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(4, playerAction_.getNumber()); + .computeUInt32Size(4, yourRelativeBet_); } if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(5, totalPlayerBet_); - } - if (((bitField0_ & 0x00000020) == 0x00000020)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(6, playerMoney_); - } - if (((bitField0_ & 0x00000040) == 0x00000040)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(7, highestSet_); - } - if (((bitField0_ & 0x00000080) == 0x00000080)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(8, minimumRaise_); + .computeEnumSize(5, rejectionReason_.getNumber()); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code YourActionRejectedMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.YourActionRejectedMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - playerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; + bitField0_ = (bitField0_ & ~0x00000002); + yourAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; bitField0_ = (bitField0_ & ~0x00000004); - playerAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; + yourRelativeBet_ = 0; bitField0_ = (bitField0_ & ~0x00000008); - totalPlayerBet_ = 0; + rejectionReason_ = de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason.rejectedInvalidGameState; bitField0_ = (bitField0_ & ~0x00000010); - playerMoney_ = 0; - bitField0_ = (bitField0_ & ~0x00000020); - highestSet_ = 0; - bitField0_ = (bitField0_ & ~0x00000040); - minimumRaise_ = 0; - bitField0_ = (bitField0_ & ~0x00000080); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage build() { - de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage build() { + de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage result = new de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage(this); + + public de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage result = new de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -24785,114 +30539,394 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.playerId_ = playerId_; + result.gameState_ = gameState_; if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } - result.gameState_ = gameState_; + result.yourAction_ = yourAction_; if (((from_bitField0_ & 0x00000008) == 0x00000008)) { to_bitField0_ |= 0x00000008; } - result.playerAction_ = playerAction_; + result.yourRelativeBet_ = yourRelativeBet_; if (((from_bitField0_ & 0x00000010) == 0x00000010)) { to_bitField0_ |= 0x00000010; } - result.totalPlayerBet_ = totalPlayerBet_; - if (((from_bitField0_ & 0x00000020) == 0x00000020)) { - to_bitField0_ |= 0x00000020; - } - result.playerMoney_ = playerMoney_; - if (((from_bitField0_ & 0x00000040) == 0x00000040)) { - to_bitField0_ |= 0x00000040; - } - result.highestSet_ = highestSet_; - if (((from_bitField0_ & 0x00000080) == 0x00000080)) { - to_bitField0_ |= 0x00000080; - } - result.minimumRaise_ = minimumRaise_; + result.rejectionReason_ = rejectionReason_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } - if (other.hasPlayerId()) { - setPlayerId(other.getPlayerId()); - } if (other.hasGameState()) { setGameState(other.getGameState()); } - if (other.hasPlayerAction()) { - setPlayerAction(other.getPlayerAction()); + if (other.hasYourAction()) { + setYourAction(other.getYourAction()); } - if (other.hasTotalPlayerBet()) { - setTotalPlayerBet(other.getTotalPlayerBet()); + if (other.hasYourRelativeBet()) { + setYourRelativeBet(other.getYourRelativeBet()); } - if (other.hasPlayerMoney()) { - setPlayerMoney(other.getPlayerMoney()); - } - if (other.hasHighestSet()) { - setHighestSet(other.getHighestSet()); - } - if (other.hasMinimumRaise()) { - setMinimumRaise(other.getMinimumRaise()); + if (other.hasRejectionReason()) { + setRejectionReason(other.getRejectionReason()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { return false; } - if (!hasPlayerId()) { - - return false; - } if (!hasGameState()) { return false; } - if (!hasPlayerAction()) { + if (!hasYourAction()) { return false; } - if (!hasTotalPlayerBet()) { + if (!hasYourRelativeBet()) { return false; } - if (!hasPlayerMoney()) { - - return false; - } - if (!hasHighestSet()) { - - return false; - } - if (!hasMinimumRaise()) { + if (!hasRejectionReason()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required .NetGameState gameState = 2; + private de.pokerth.protocol.ProtoBuf.NetGameState gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; + /** + * required .NetGameState gameState = 2; + */ + public boolean hasGameState() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .NetGameState gameState = 2; + */ + public de.pokerth.protocol.ProtoBuf.NetGameState getGameState() { + return gameState_; + } + /** + * required .NetGameState gameState = 2; + */ + public Builder setGameState(de.pokerth.protocol.ProtoBuf.NetGameState value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + gameState_ = value; + + return this; + } + /** + * required .NetGameState gameState = 2; + */ + public Builder clearGameState() { + bitField0_ = (bitField0_ & ~0x00000002); + gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; + + return this; + } + + // required .NetPlayerAction yourAction = 3; + private de.pokerth.protocol.ProtoBuf.NetPlayerAction yourAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; + /** + * required .NetPlayerAction yourAction = 3; + */ + public boolean hasYourAction() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .NetPlayerAction yourAction = 3; + */ + public de.pokerth.protocol.ProtoBuf.NetPlayerAction getYourAction() { + return yourAction_; + } + /** + * required .NetPlayerAction yourAction = 3; + */ + public Builder setYourAction(de.pokerth.protocol.ProtoBuf.NetPlayerAction value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + yourAction_ = value; + + return this; + } + /** + * required .NetPlayerAction yourAction = 3; + */ + public Builder clearYourAction() { + bitField0_ = (bitField0_ & ~0x00000004); + yourAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; + + return this; + } + + // required uint32 yourRelativeBet = 4; + private int yourRelativeBet_ ; + /** + * required uint32 yourRelativeBet = 4; + */ + public boolean hasYourRelativeBet() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required uint32 yourRelativeBet = 4; + */ + public int getYourRelativeBet() { + return yourRelativeBet_; + } + /** + * required uint32 yourRelativeBet = 4; + */ + public Builder setYourRelativeBet(int value) { + bitField0_ |= 0x00000008; + yourRelativeBet_ = value; + + return this; + } + /** + * required uint32 yourRelativeBet = 4; + */ + public Builder clearYourRelativeBet() { + bitField0_ = (bitField0_ & ~0x00000008); + yourRelativeBet_ = 0; + + return this; + } + + // required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; + private de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason rejectionReason_ = de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason.rejectedInvalidGameState; + /** + * required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; + */ + public boolean hasRejectionReason() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; + */ + public de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason getRejectionReason() { + return rejectionReason_; + } + /** + * required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; + */ + public Builder setRejectionReason(de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000010; + rejectionReason_ = value; + + return this; + } + /** + * required .YourActionRejectedMessage.RejectionReason rejectionReason = 5; + */ + public Builder clearRejectionReason() { + bitField0_ = (bitField0_ & ~0x00000010); + rejectionReason_ = de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.RejectionReason.rejectedInvalidGameState; + + return this; + } + + // @@protoc_insertion_point(builder_scope:YourActionRejectedMessage) + } + + static { + defaultInstance = new YourActionRejectedMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:YourActionRejectedMessage) + } + + public interface PlayersActionDoneMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ + boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ + int getPlayerId(); + + // required .NetGameState gameState = 3; + /** + * required .NetGameState gameState = 3; + */ + boolean hasGameState(); + /** + * required .NetGameState gameState = 3; + */ + de.pokerth.protocol.ProtoBuf.NetGameState getGameState(); + + // required .NetPlayerAction playerAction = 4; + /** + * required .NetPlayerAction playerAction = 4; + */ + boolean hasPlayerAction(); + /** + * required .NetPlayerAction playerAction = 4; + */ + de.pokerth.protocol.ProtoBuf.NetPlayerAction getPlayerAction(); + + // required uint32 totalPlayerBet = 5; + /** + * required uint32 totalPlayerBet = 5; + */ + boolean hasTotalPlayerBet(); + /** + * required uint32 totalPlayerBet = 5; + */ + int getTotalPlayerBet(); + + // required uint32 playerMoney = 6; + /** + * required uint32 playerMoney = 6; + */ + boolean hasPlayerMoney(); + /** + * required uint32 playerMoney = 6; + */ + int getPlayerMoney(); + + // required uint32 highestSet = 7; + /** + * required uint32 highestSet = 7; + */ + boolean hasHighestSet(); + /** + * required uint32 highestSet = 7; + */ + int getHighestSet(); + + // required uint32 minimumRaise = 8; + /** + * required uint32 minimumRaise = 8; + */ + boolean hasMinimumRaise(); + /** + * required uint32 minimumRaise = 8; + */ + int getMinimumRaise(); + } + /** + * Protobuf type {@code PlayersActionDoneMessage} + */ + public static final class PlayersActionDoneMessage extends + com.google.protobuf.GeneratedMessageLite + implements PlayersActionDoneMessageOrBuilder { + // Use PlayersActionDoneMessage.newBuilder() to construct. + private PlayersActionDoneMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private PlayersActionDoneMessage(boolean noInit) {} + + private static final PlayersActionDoneMessage defaultInstance; + public static PlayersActionDoneMessage getDefaultInstance() { + return defaultInstance; + } + + public PlayersActionDoneMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private PlayersActionDoneMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -24946,304 +30980,210 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // required .NetGameState gameState = 3; - private de.pokerth.protocol.ProtoBuf.NetGameState gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; - public boolean hasGameState() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.NetGameState getGameState() { - return gameState_; - } - public Builder setGameState(de.pokerth.protocol.ProtoBuf.NetGameState value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000004; - gameState_ = value; - - return this; - } - public Builder clearGameState() { - bitField0_ = (bitField0_ & ~0x00000004); - gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; - - return this; - } - - // required .NetPlayerAction playerAction = 4; - private de.pokerth.protocol.ProtoBuf.NetPlayerAction playerAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; - public boolean hasPlayerAction() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public de.pokerth.protocol.ProtoBuf.NetPlayerAction getPlayerAction() { - return playerAction_; - } - public Builder setPlayerAction(de.pokerth.protocol.ProtoBuf.NetPlayerAction value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000008; - playerAction_ = value; - - return this; - } - public Builder clearPlayerAction() { - bitField0_ = (bitField0_ & ~0x00000008); - playerAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; - - return this; - } - - // required uint32 totalPlayerBet = 5; - private int totalPlayerBet_ ; - public boolean hasTotalPlayerBet() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - public int getTotalPlayerBet() { - return totalPlayerBet_; - } - public Builder setTotalPlayerBet(int value) { - bitField0_ |= 0x00000010; - totalPlayerBet_ = value; - - return this; - } - public Builder clearTotalPlayerBet() { - bitField0_ = (bitField0_ & ~0x00000010); - totalPlayerBet_ = 0; - - return this; - } - - // required uint32 playerMoney = 6; - private int playerMoney_ ; - public boolean hasPlayerMoney() { - return ((bitField0_ & 0x00000020) == 0x00000020); - } - public int getPlayerMoney() { - return playerMoney_; - } - public Builder setPlayerMoney(int value) { - bitField0_ |= 0x00000020; - playerMoney_ = value; - - return this; - } - public Builder clearPlayerMoney() { - bitField0_ = (bitField0_ & ~0x00000020); - playerMoney_ = 0; - - return this; - } - - // required uint32 highestSet = 7; - private int highestSet_ ; - public boolean hasHighestSet() { - return ((bitField0_ & 0x00000040) == 0x00000040); - } - public int getHighestSet() { - return highestSet_; - } - public Builder setHighestSet(int value) { - bitField0_ |= 0x00000040; - highestSet_ = value; - - return this; - } - public Builder clearHighestSet() { - bitField0_ = (bitField0_ & ~0x00000040); - highestSet_ = 0; - - return this; - } - - // required uint32 minimumRaise = 8; - private int minimumRaise_ ; - public boolean hasMinimumRaise() { - return ((bitField0_ & 0x00000080) == 0x00000080); - } - public int getMinimumRaise() { - return minimumRaise_; - } - public Builder setMinimumRaise(int value) { - bitField0_ |= 0x00000080; - minimumRaise_ = value; - - return this; - } - public Builder clearMinimumRaise() { - bitField0_ = (bitField0_ & ~0x00000080); - minimumRaise_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:PlayersActionDoneMessage) } - - static { - defaultInstance = new PlayersActionDoneMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PlayersActionDoneMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PlayersActionDoneMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:PlayersActionDoneMessage) - } - - public interface DealFlopCardsMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 flopCard1 = 2; - boolean hasFlopCard1(); - int getFlopCard1(); - - // required uint32 flopCard2 = 3; - boolean hasFlopCard2(); - int getFlopCard2(); - - // required uint32 flopCard3 = 4; - boolean hasFlopCard3(); - int getFlopCard3(); - } - public static final class DealFlopCardsMessage extends - com.google.protobuf.GeneratedMessageLite - implements DealFlopCardsMessageOrBuilder { - // Use DealFlopCardsMessage.newBuilder() to construct. - private DealFlopCardsMessage(Builder builder) { - super(builder); - } - private DealFlopCardsMessage(boolean noInit) {} - - private static final DealFlopCardsMessage defaultInstance; - public static DealFlopCardsMessage getDefaultInstance() { - return defaultInstance; - } - - public DealFlopCardsMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - - // required uint32 flopCard1 = 2; - public static final int FLOPCARD1_FIELD_NUMBER = 2; - private int flopCard1_; - public boolean hasFlopCard1() { + + // required uint32 playerId = 2; + public static final int PLAYERID_FIELD_NUMBER = 2; + private int playerId_; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public int getFlopCard1() { - return flopCard1_; + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; } - - // required uint32 flopCard2 = 3; - public static final int FLOPCARD2_FIELD_NUMBER = 3; - private int flopCard2_; - public boolean hasFlopCard2() { + + // required .NetGameState gameState = 3; + public static final int GAMESTATE_FIELD_NUMBER = 3; + private de.pokerth.protocol.ProtoBuf.NetGameState gameState_; + /** + * required .NetGameState gameState = 3; + */ + public boolean hasGameState() { return ((bitField0_ & 0x00000004) == 0x00000004); } - public int getFlopCard2() { - return flopCard2_; + /** + * required .NetGameState gameState = 3; + */ + public de.pokerth.protocol.ProtoBuf.NetGameState getGameState() { + return gameState_; } - - // required uint32 flopCard3 = 4; - public static final int FLOPCARD3_FIELD_NUMBER = 4; - private int flopCard3_; - public boolean hasFlopCard3() { + + // required .NetPlayerAction playerAction = 4; + public static final int PLAYERACTION_FIELD_NUMBER = 4; + private de.pokerth.protocol.ProtoBuf.NetPlayerAction playerAction_; + /** + * required .NetPlayerAction playerAction = 4; + */ + public boolean hasPlayerAction() { return ((bitField0_ & 0x00000008) == 0x00000008); } - public int getFlopCard3() { - return flopCard3_; + /** + * required .NetPlayerAction playerAction = 4; + */ + public de.pokerth.protocol.ProtoBuf.NetPlayerAction getPlayerAction() { + return playerAction_; } - + + // required uint32 totalPlayerBet = 5; + public static final int TOTALPLAYERBET_FIELD_NUMBER = 5; + private int totalPlayerBet_; + /** + * required uint32 totalPlayerBet = 5; + */ + public boolean hasTotalPlayerBet() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required uint32 totalPlayerBet = 5; + */ + public int getTotalPlayerBet() { + return totalPlayerBet_; + } + + // required uint32 playerMoney = 6; + public static final int PLAYERMONEY_FIELD_NUMBER = 6; + private int playerMoney_; + /** + * required uint32 playerMoney = 6; + */ + public boolean hasPlayerMoney() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required uint32 playerMoney = 6; + */ + public int getPlayerMoney() { + return playerMoney_; + } + + // required uint32 highestSet = 7; + public static final int HIGHESTSET_FIELD_NUMBER = 7; + private int highestSet_; + /** + * required uint32 highestSet = 7; + */ + public boolean hasHighestSet() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required uint32 highestSet = 7; + */ + public int getHighestSet() { + return highestSet_; + } + + // required uint32 minimumRaise = 8; + public static final int MINIMUMRAISE_FIELD_NUMBER = 8; + private int minimumRaise_; + /** + * required uint32 minimumRaise = 8; + */ + public boolean hasMinimumRaise() { + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * required uint32 minimumRaise = 8; + */ + public int getMinimumRaise() { + return minimumRaise_; + } + private void initFields() { gameId_ = 0; - flopCard1_ = 0; - flopCard2_ = 0; - flopCard3_ = 0; + playerId_ = 0; + gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; + playerAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; + totalPlayerBet_ = 0; + playerMoney_ = 0; + highestSet_ = 0; + minimumRaise_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } - if (!hasFlopCard1()) { + if (!hasPlayerId()) { memoizedIsInitialized = 0; return false; } - if (!hasFlopCard2()) { + if (!hasGameState()) { memoizedIsInitialized = 0; return false; } - if (!hasFlopCard3()) { + if (!hasPlayerAction()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasTotalPlayerBet()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPlayerMoney()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasHighestSet()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMinimumRaise()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -25251,21 +31191,33 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, flopCard1_); + output.writeUInt32(2, playerId_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeUInt32(3, flopCard2_); + output.writeEnum(3, gameState_.getNumber()); } if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeUInt32(4, flopCard3_); + output.writeEnum(4, playerAction_.getNumber()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeUInt32(5, totalPlayerBet_); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeUInt32(6, playerMoney_); + } + if (((bitField0_ & 0x00000040) == 0x00000040)) { + output.writeUInt32(7, highestSet_); + } + if (((bitField0_ & 0x00000080) == 0x00000080)) { + output.writeUInt32(8, minimumRaise_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -25273,157 +31225,160 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, flopCard1_); + .computeUInt32Size(2, playerId_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(3, flopCard2_); + .computeEnumSize(3, gameState_.getNumber()); } if (((bitField0_ & 0x00000008) == 0x00000008)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(4, flopCard3_); + .computeEnumSize(4, playerAction_.getNumber()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(5, totalPlayerBet_); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(6, playerMoney_); + } + if (((bitField0_ & 0x00000040) == 0x00000040)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(7, highestSet_); + } + if (((bitField0_ & 0x00000080) == 0x00000080)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(8, minimumRaise_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code PlayersActionDoneMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.DealFlopCardsMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - flopCard1_ = 0; + playerId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); - flopCard2_ = 0; + gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; bitField0_ = (bitField0_ & ~0x00000004); - flopCard3_ = 0; + playerAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; bitField0_ = (bitField0_ & ~0x00000008); + totalPlayerBet_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + playerMoney_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); + highestSet_ = 0; + bitField0_ = (bitField0_ & ~0x00000040); + minimumRaise_ = 0; + bitField0_ = (bitField0_ & ~0x00000080); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage build() { - de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage build() { + de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage result = new de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage(this); + + public de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage result = new de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -25433,70 +31388,483 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.flopCard1_ = flopCard1_; + result.playerId_ = playerId_; if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } - result.flopCard2_ = flopCard2_; + result.gameState_ = gameState_; if (((from_bitField0_ & 0x00000008) == 0x00000008)) { to_bitField0_ |= 0x00000008; } - result.flopCard3_ = flopCard3_; + result.playerAction_ = playerAction_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.totalPlayerBet_ = totalPlayerBet_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.playerMoney_ = playerMoney_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000040; + } + result.highestSet_ = highestSet_; + if (((from_bitField0_ & 0x00000080) == 0x00000080)) { + to_bitField0_ |= 0x00000080; + } + result.minimumRaise_ = minimumRaise_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } - if (other.hasFlopCard1()) { - setFlopCard1(other.getFlopCard1()); + if (other.hasPlayerId()) { + setPlayerId(other.getPlayerId()); } - if (other.hasFlopCard2()) { - setFlopCard2(other.getFlopCard2()); + if (other.hasGameState()) { + setGameState(other.getGameState()); } - if (other.hasFlopCard3()) { - setFlopCard3(other.getFlopCard3()); + if (other.hasPlayerAction()) { + setPlayerAction(other.getPlayerAction()); + } + if (other.hasTotalPlayerBet()) { + setTotalPlayerBet(other.getTotalPlayerBet()); + } + if (other.hasPlayerMoney()) { + setPlayerMoney(other.getPlayerMoney()); + } + if (other.hasHighestSet()) { + setHighestSet(other.getHighestSet()); + } + if (other.hasMinimumRaise()) { + setMinimumRaise(other.getMinimumRaise()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { return false; } - if (!hasFlopCard1()) { + if (!hasPlayerId()) { return false; } - if (!hasFlopCard2()) { + if (!hasGameState()) { return false; } - if (!hasFlopCard3()) { + if (!hasPlayerAction()) { + + return false; + } + if (!hasTotalPlayerBet()) { + + return false; + } + if (!hasPlayerMoney()) { + + return false; + } + if (!hasHighestSet()) { + + return false; + } + if (!hasMinimumRaise()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // required .NetGameState gameState = 3; + private de.pokerth.protocol.ProtoBuf.NetGameState gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; + /** + * required .NetGameState gameState = 3; + */ + public boolean hasGameState() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .NetGameState gameState = 3; + */ + public de.pokerth.protocol.ProtoBuf.NetGameState getGameState() { + return gameState_; + } + /** + * required .NetGameState gameState = 3; + */ + public Builder setGameState(de.pokerth.protocol.ProtoBuf.NetGameState value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + gameState_ = value; + + return this; + } + /** + * required .NetGameState gameState = 3; + */ + public Builder clearGameState() { + bitField0_ = (bitField0_ & ~0x00000004); + gameState_ = de.pokerth.protocol.ProtoBuf.NetGameState.netStatePreflop; + + return this; + } + + // required .NetPlayerAction playerAction = 4; + private de.pokerth.protocol.ProtoBuf.NetPlayerAction playerAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; + /** + * required .NetPlayerAction playerAction = 4; + */ + public boolean hasPlayerAction() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required .NetPlayerAction playerAction = 4; + */ + public de.pokerth.protocol.ProtoBuf.NetPlayerAction getPlayerAction() { + return playerAction_; + } + /** + * required .NetPlayerAction playerAction = 4; + */ + public Builder setPlayerAction(de.pokerth.protocol.ProtoBuf.NetPlayerAction value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; + playerAction_ = value; + + return this; + } + /** + * required .NetPlayerAction playerAction = 4; + */ + public Builder clearPlayerAction() { + bitField0_ = (bitField0_ & ~0x00000008); + playerAction_ = de.pokerth.protocol.ProtoBuf.NetPlayerAction.netActionNone; + + return this; + } + + // required uint32 totalPlayerBet = 5; + private int totalPlayerBet_ ; + /** + * required uint32 totalPlayerBet = 5; + */ + public boolean hasTotalPlayerBet() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required uint32 totalPlayerBet = 5; + */ + public int getTotalPlayerBet() { + return totalPlayerBet_; + } + /** + * required uint32 totalPlayerBet = 5; + */ + public Builder setTotalPlayerBet(int value) { + bitField0_ |= 0x00000010; + totalPlayerBet_ = value; + + return this; + } + /** + * required uint32 totalPlayerBet = 5; + */ + public Builder clearTotalPlayerBet() { + bitField0_ = (bitField0_ & ~0x00000010); + totalPlayerBet_ = 0; + + return this; + } + + // required uint32 playerMoney = 6; + private int playerMoney_ ; + /** + * required uint32 playerMoney = 6; + */ + public boolean hasPlayerMoney() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required uint32 playerMoney = 6; + */ + public int getPlayerMoney() { + return playerMoney_; + } + /** + * required uint32 playerMoney = 6; + */ + public Builder setPlayerMoney(int value) { + bitField0_ |= 0x00000020; + playerMoney_ = value; + + return this; + } + /** + * required uint32 playerMoney = 6; + */ + public Builder clearPlayerMoney() { + bitField0_ = (bitField0_ & ~0x00000020); + playerMoney_ = 0; + + return this; + } + + // required uint32 highestSet = 7; + private int highestSet_ ; + /** + * required uint32 highestSet = 7; + */ + public boolean hasHighestSet() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + /** + * required uint32 highestSet = 7; + */ + public int getHighestSet() { + return highestSet_; + } + /** + * required uint32 highestSet = 7; + */ + public Builder setHighestSet(int value) { + bitField0_ |= 0x00000040; + highestSet_ = value; + + return this; + } + /** + * required uint32 highestSet = 7; + */ + public Builder clearHighestSet() { + bitField0_ = (bitField0_ & ~0x00000040); + highestSet_ = 0; + + return this; + } + + // required uint32 minimumRaise = 8; + private int minimumRaise_ ; + /** + * required uint32 minimumRaise = 8; + */ + public boolean hasMinimumRaise() { + return ((bitField0_ & 0x00000080) == 0x00000080); + } + /** + * required uint32 minimumRaise = 8; + */ + public int getMinimumRaise() { + return minimumRaise_; + } + /** + * required uint32 minimumRaise = 8; + */ + public Builder setMinimumRaise(int value) { + bitField0_ |= 0x00000080; + minimumRaise_ = value; + + return this; + } + /** + * required uint32 minimumRaise = 8; + */ + public Builder clearMinimumRaise() { + bitField0_ = (bitField0_ & ~0x00000080); + minimumRaise_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:PlayersActionDoneMessage) + } + + static { + defaultInstance = new PlayersActionDoneMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:PlayersActionDoneMessage) + } + + public interface DealFlopCardsMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 flopCard1 = 2; + /** + * required uint32 flopCard1 = 2; + */ + boolean hasFlopCard1(); + /** + * required uint32 flopCard1 = 2; + */ + int getFlopCard1(); + + // required uint32 flopCard2 = 3; + /** + * required uint32 flopCard2 = 3; + */ + boolean hasFlopCard2(); + /** + * required uint32 flopCard2 = 3; + */ + int getFlopCard2(); + + // required uint32 flopCard3 = 4; + /** + * required uint32 flopCard3 = 4; + */ + boolean hasFlopCard3(); + /** + * required uint32 flopCard3 = 4; + */ + int getFlopCard3(); + } + /** + * Protobuf type {@code DealFlopCardsMessage} + */ + public static final class DealFlopCardsMessage extends + com.google.protobuf.GeneratedMessageLite + implements DealFlopCardsMessageOrBuilder { + // Use DealFlopCardsMessage.newBuilder() to construct. + private DealFlopCardsMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private DealFlopCardsMessage(boolean noInit) {} + + private static final DealFlopCardsMessage defaultInstance; + public static DealFlopCardsMessage getDefaultInstance() { + return defaultInstance; + } + + public DealFlopCardsMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private DealFlopCardsMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -25522,176 +31890,126 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 flopCard1 = 2; - private int flopCard1_ ; - public boolean hasFlopCard1() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getFlopCard1() { - return flopCard1_; - } - public Builder setFlopCard1(int value) { - bitField0_ |= 0x00000002; - flopCard1_ = value; - - return this; - } - public Builder clearFlopCard1() { - bitField0_ = (bitField0_ & ~0x00000002); - flopCard1_ = 0; - - return this; - } - - // required uint32 flopCard2 = 3; - private int flopCard2_ ; - public boolean hasFlopCard2() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public int getFlopCard2() { - return flopCard2_; - } - public Builder setFlopCard2(int value) { - bitField0_ |= 0x00000004; - flopCard2_ = value; - - return this; - } - public Builder clearFlopCard2() { - bitField0_ = (bitField0_ & ~0x00000004); - flopCard2_ = 0; - - return this; - } - - // required uint32 flopCard3 = 4; - private int flopCard3_ ; - public boolean hasFlopCard3() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public int getFlopCard3() { - return flopCard3_; - } - public Builder setFlopCard3(int value) { - bitField0_ |= 0x00000008; - flopCard3_ = value; - - return this; - } - public Builder clearFlopCard3() { - bitField0_ = (bitField0_ & ~0x00000008); - flopCard3_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:DealFlopCardsMessage) } - - static { - defaultInstance = new DealFlopCardsMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public DealFlopCardsMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new DealFlopCardsMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:DealFlopCardsMessage) - } - - public interface DealTurnCardMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 turnCard = 2; - boolean hasTurnCard(); - int getTurnCard(); - } - public static final class DealTurnCardMessage extends - com.google.protobuf.GeneratedMessageLite - implements DealTurnCardMessageOrBuilder { - // Use DealTurnCardMessage.newBuilder() to construct. - private DealTurnCardMessage(Builder builder) { - super(builder); - } - private DealTurnCardMessage(boolean noInit) {} - - private static final DealTurnCardMessage defaultInstance; - public static DealTurnCardMessage getDefaultInstance() { - return defaultInstance; - } - - public DealTurnCardMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - - // required uint32 turnCard = 2; - public static final int TURNCARD_FIELD_NUMBER = 2; - private int turnCard_; - public boolean hasTurnCard() { + + // required uint32 flopCard1 = 2; + public static final int FLOPCARD1_FIELD_NUMBER = 2; + private int flopCard1_; + /** + * required uint32 flopCard1 = 2; + */ + public boolean hasFlopCard1() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public int getTurnCard() { - return turnCard_; + /** + * required uint32 flopCard1 = 2; + */ + public int getFlopCard1() { + return flopCard1_; } - + + // required uint32 flopCard2 = 3; + public static final int FLOPCARD2_FIELD_NUMBER = 3; + private int flopCard2_; + /** + * required uint32 flopCard2 = 3; + */ + public boolean hasFlopCard2() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required uint32 flopCard2 = 3; + */ + public int getFlopCard2() { + return flopCard2_; + } + + // required uint32 flopCard3 = 4; + public static final int FLOPCARD3_FIELD_NUMBER = 4; + private int flopCard3_; + /** + * required uint32 flopCard3 = 4; + */ + public boolean hasFlopCard3() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required uint32 flopCard3 = 4; + */ + public int getFlopCard3() { + return flopCard3_; + } + private void initFields() { gameId_ = 0; - turnCard_ = 0; + flopCard1_ = 0; + flopCard2_ = 0; + flopCard3_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } - if (!hasTurnCard()) { + if (!hasFlopCard1()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFlopCard2()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasFlopCard3()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -25699,15 +32017,21 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, turnCard_); + output.writeUInt32(2, flopCard1_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeUInt32(3, flopCard2_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeUInt32(4, flopCard3_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -25715,145 +32039,136 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, turnCard_); + .computeUInt32Size(2, flopCard1_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, flopCard2_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(4, flopCard3_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.DealTurnCardMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code DealFlopCardsMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.DealTurnCardMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.DealTurnCardMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.DealFlopCardsMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - turnCard_ = 0; + flopCard1_ = 0; bitField0_ = (bitField0_ & ~0x00000002); + flopCard2_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + flopCard3_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.DealTurnCardMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.DealTurnCardMessage build() { - de.pokerth.protocol.ProtoBuf.DealTurnCardMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage build() { + de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.DealTurnCardMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.DealTurnCardMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.DealTurnCardMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.DealTurnCardMessage result = new de.pokerth.protocol.ProtoBuf.DealTurnCardMessage(this); + + public de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage result = new de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -25863,48 +32178,281 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.turnCard_ = turnCard_; + result.flopCard1_ = flopCard1_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.flopCard2_ = flopCard2_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.flopCard3_ = flopCard3_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.DealTurnCardMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } - if (other.hasTurnCard()) { - setTurnCard(other.getTurnCard()); + if (other.hasFlopCard1()) { + setFlopCard1(other.getFlopCard1()); + } + if (other.hasFlopCard2()) { + setFlopCard2(other.getFlopCard2()); + } + if (other.hasFlopCard3()) { + setFlopCard3(other.getFlopCard3()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { return false; } - if (!hasTurnCard()) { + if (!hasFlopCard1()) { + + return false; + } + if (!hasFlopCard2()) { + + return false; + } + if (!hasFlopCard3()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 flopCard1 = 2; + private int flopCard1_ ; + /** + * required uint32 flopCard1 = 2; + */ + public boolean hasFlopCard1() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 flopCard1 = 2; + */ + public int getFlopCard1() { + return flopCard1_; + } + /** + * required uint32 flopCard1 = 2; + */ + public Builder setFlopCard1(int value) { + bitField0_ |= 0x00000002; + flopCard1_ = value; + + return this; + } + /** + * required uint32 flopCard1 = 2; + */ + public Builder clearFlopCard1() { + bitField0_ = (bitField0_ & ~0x00000002); + flopCard1_ = 0; + + return this; + } + + // required uint32 flopCard2 = 3; + private int flopCard2_ ; + /** + * required uint32 flopCard2 = 3; + */ + public boolean hasFlopCard2() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required uint32 flopCard2 = 3; + */ + public int getFlopCard2() { + return flopCard2_; + } + /** + * required uint32 flopCard2 = 3; + */ + public Builder setFlopCard2(int value) { + bitField0_ |= 0x00000004; + flopCard2_ = value; + + return this; + } + /** + * required uint32 flopCard2 = 3; + */ + public Builder clearFlopCard2() { + bitField0_ = (bitField0_ & ~0x00000004); + flopCard2_ = 0; + + return this; + } + + // required uint32 flopCard3 = 4; + private int flopCard3_ ; + /** + * required uint32 flopCard3 = 4; + */ + public boolean hasFlopCard3() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required uint32 flopCard3 = 4; + */ + public int getFlopCard3() { + return flopCard3_; + } + /** + * required uint32 flopCard3 = 4; + */ + public Builder setFlopCard3(int value) { + bitField0_ |= 0x00000008; + flopCard3_ = value; + + return this; + } + /** + * required uint32 flopCard3 = 4; + */ + public Builder clearFlopCard3() { + bitField0_ = (bitField0_ & ~0x00000008); + flopCard3_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:DealFlopCardsMessage) + } + + static { + defaultInstance = new DealFlopCardsMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:DealFlopCardsMessage) + } + + public interface DealTurnCardMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 turnCard = 2; + /** + * required uint32 turnCard = 2; + */ + boolean hasTurnCard(); + /** + * required uint32 turnCard = 2; + */ + int getTurnCard(); + } + /** + * Protobuf type {@code DealTurnCardMessage} + */ + public static final class DealTurnCardMessage extends + com.google.protobuf.GeneratedMessageLite + implements DealTurnCardMessageOrBuilder { + // Use DealTurnCardMessage.newBuilder() to construct. + private DealTurnCardMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private DealTurnCardMessage(boolean noInit) {} + + private static final DealTurnCardMessage defaultInstance; + public static DealTurnCardMessage getDefaultInstance() { + return defaultInstance; + } + + public DealTurnCardMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private DealTurnCardMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -25920,134 +32468,84 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 turnCard = 2; - private int turnCard_ ; - public boolean hasTurnCard() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getTurnCard() { - return turnCard_; - } - public Builder setTurnCard(int value) { - bitField0_ |= 0x00000002; - turnCard_ = value; - - return this; - } - public Builder clearTurnCard() { - bitField0_ = (bitField0_ & ~0x00000002); - turnCard_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:DealTurnCardMessage) } - - static { - defaultInstance = new DealTurnCardMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public DealTurnCardMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new DealTurnCardMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:DealTurnCardMessage) - } - - public interface DealRiverCardMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 riverCard = 2; - boolean hasRiverCard(); - int getRiverCard(); - } - public static final class DealRiverCardMessage extends - com.google.protobuf.GeneratedMessageLite - implements DealRiverCardMessageOrBuilder { - // Use DealRiverCardMessage.newBuilder() to construct. - private DealRiverCardMessage(Builder builder) { - super(builder); - } - private DealRiverCardMessage(boolean noInit) {} - - private static final DealRiverCardMessage defaultInstance; - public static DealRiverCardMessage getDefaultInstance() { - return defaultInstance; - } - - public DealRiverCardMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - - // required uint32 riverCard = 2; - public static final int RIVERCARD_FIELD_NUMBER = 2; - private int riverCard_; - public boolean hasRiverCard() { + + // required uint32 turnCard = 2; + public static final int TURNCARD_FIELD_NUMBER = 2; + private int turnCard_; + /** + * required uint32 turnCard = 2; + */ + public boolean hasTurnCard() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public int getRiverCard() { - return riverCard_; + /** + * required uint32 turnCard = 2; + */ + public int getTurnCard() { + return turnCard_; } - + private void initFields() { gameId_ = 0; - riverCard_ = 0; + turnCard_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } - if (!hasRiverCard()) { + if (!hasTurnCard()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -26055,15 +32553,15 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, riverCard_); + output.writeUInt32(2, turnCard_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -26071,145 +32569,124 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, riverCard_); + .computeUInt32Size(2, turnCard_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.DealRiverCardMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.DealTurnCardMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code DealTurnCardMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.DealRiverCardMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.DealRiverCardMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.DealTurnCardMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.DealTurnCardMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - riverCard_ = 0; + turnCard_ = 0; bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.DealRiverCardMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.DealTurnCardMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.DealRiverCardMessage build() { - de.pokerth.protocol.ProtoBuf.DealRiverCardMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.DealTurnCardMessage build() { + de.pokerth.protocol.ProtoBuf.DealTurnCardMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.DealRiverCardMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.DealRiverCardMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.DealRiverCardMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.DealRiverCardMessage result = new de.pokerth.protocol.ProtoBuf.DealRiverCardMessage(this); + + public de.pokerth.protocol.ProtoBuf.DealTurnCardMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.DealTurnCardMessage result = new de.pokerth.protocol.ProtoBuf.DealTurnCardMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -26219,48 +32696,193 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.riverCard_ = riverCard_; + result.turnCard_ = turnCard_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.DealRiverCardMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.DealTurnCardMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } - if (other.hasRiverCard()) { - setRiverCard(other.getRiverCard()); + if (other.hasTurnCard()) { + setTurnCard(other.getTurnCard()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { return false; } - if (!hasRiverCard()) { + if (!hasTurnCard()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.DealTurnCardMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.DealTurnCardMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 turnCard = 2; + private int turnCard_ ; + /** + * required uint32 turnCard = 2; + */ + public boolean hasTurnCard() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 turnCard = 2; + */ + public int getTurnCard() { + return turnCard_; + } + /** + * required uint32 turnCard = 2; + */ + public Builder setTurnCard(int value) { + bitField0_ |= 0x00000002; + turnCard_ = value; + + return this; + } + /** + * required uint32 turnCard = 2; + */ + public Builder clearTurnCard() { + bitField0_ = (bitField0_ & ~0x00000002); + turnCard_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:DealTurnCardMessage) + } + + static { + defaultInstance = new DealTurnCardMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:DealTurnCardMessage) + } + + public interface DealRiverCardMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 riverCard = 2; + /** + * required uint32 riverCard = 2; + */ + boolean hasRiverCard(); + /** + * required uint32 riverCard = 2; + */ + int getRiverCard(); + } + /** + * Protobuf type {@code DealRiverCardMessage} + */ + public static final class DealRiverCardMessage extends + com.google.protobuf.GeneratedMessageLite + implements DealRiverCardMessageOrBuilder { + // Use DealRiverCardMessage.newBuilder() to construct. + private DealRiverCardMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private DealRiverCardMessage(boolean noInit) {} + + private static final DealRiverCardMessage defaultInstance; + public static DealRiverCardMessage getDefaultInstance() { + return defaultInstance; + } + + public DealRiverCardMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private DealRiverCardMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -26276,417 +32898,544 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public DealRiverCardMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new DealRiverCardMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required uint32 gameId = 1; + public static final int GAMEID_FIELD_NUMBER = 1; + private int gameId_; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + + // required uint32 riverCard = 2; + public static final int RIVERCARD_FIELD_NUMBER = 2; + private int riverCard_; + /** + * required uint32 riverCard = 2; + */ + public boolean hasRiverCard() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 riverCard = 2; + */ + public int getRiverCard() { + return riverCard_; + } + + private void initFields() { + gameId_ = 0; + riverCard_ = 0; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasGameId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasRiverCard()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, riverCard_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, riverCard_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.DealRiverCardMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code DealRiverCardMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.DealRiverCardMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.DealRiverCardMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + gameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + riverCard_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.DealRiverCardMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.DealRiverCardMessage build() { + de.pokerth.protocol.ProtoBuf.DealRiverCardMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.DealRiverCardMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.DealRiverCardMessage result = new de.pokerth.protocol.ProtoBuf.DealRiverCardMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.gameId_ = gameId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.riverCard_ = riverCard_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.DealRiverCardMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.getDefaultInstance()) return this; + if (other.hasGameId()) { + setGameId(other.getGameId()); + } + if (other.hasRiverCard()) { + setRiverCard(other.getRiverCard()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasGameId()) { + + return false; + } + if (!hasRiverCard()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.DealRiverCardMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.DealRiverCardMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // required uint32 riverCard = 2; private int riverCard_ ; + /** + * required uint32 riverCard = 2; + */ public boolean hasRiverCard() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 riverCard = 2; + */ public int getRiverCard() { return riverCard_; } + /** + * required uint32 riverCard = 2; + */ public Builder setRiverCard(int value) { bitField0_ |= 0x00000002; riverCard_ = value; return this; } + /** + * required uint32 riverCard = 2; + */ public Builder clearRiverCard() { bitField0_ = (bitField0_ & ~0x00000002); riverCard_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:DealRiverCardMessage) } - + static { defaultInstance = new DealRiverCardMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:DealRiverCardMessage) } - + public interface AllInShowCardsMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ java.util.List getPlayersAllInList(); + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn getPlayersAllIn(int index); + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ int getPlayersAllInCount(); } + /** + * Protobuf type {@code AllInShowCardsMessage} + */ public static final class AllInShowCardsMessage extends com.google.protobuf.GeneratedMessageLite implements AllInShowCardsMessageOrBuilder { // Use AllInShowCardsMessage.newBuilder() to construct. - private AllInShowCardsMessage(Builder builder) { + private AllInShowCardsMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private AllInShowCardsMessage(boolean noInit) {} - + private static final AllInShowCardsMessage defaultInstance; public static AllInShowCardsMessage getDefaultInstance() { return defaultInstance; } - + public AllInShowCardsMessage getDefaultInstanceForType() { return defaultInstance; } - + + private AllInShowCardsMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + gameId_ = input.readUInt32(); + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + playersAllIn_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000002; + } + playersAllIn_.add(input.readMessage(de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + playersAllIn_ = java.util.Collections.unmodifiableList(playersAllIn_); + } + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AllInShowCardsMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AllInShowCardsMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + public interface PlayerAllInOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 playerId = 1; + /** + * required uint32 playerId = 1; + */ boolean hasPlayerId(); + /** + * required uint32 playerId = 1; + */ int getPlayerId(); - + // required uint32 allInCard1 = 2; + /** + * required uint32 allInCard1 = 2; + */ boolean hasAllInCard1(); + /** + * required uint32 allInCard1 = 2; + */ int getAllInCard1(); - + // required uint32 allInCard2 = 3; + /** + * required uint32 allInCard2 = 3; + */ boolean hasAllInCard2(); + /** + * required uint32 allInCard2 = 3; + */ int getAllInCard2(); } + /** + * Protobuf type {@code AllInShowCardsMessage.PlayerAllIn} + */ public static final class PlayerAllIn extends com.google.protobuf.GeneratedMessageLite implements PlayerAllInOrBuilder { // Use PlayerAllIn.newBuilder() to construct. - private PlayerAllIn(Builder builder) { + private PlayerAllIn(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private PlayerAllIn(boolean noInit) {} - + private static final PlayerAllIn defaultInstance; public static PlayerAllIn getDefaultInstance() { return defaultInstance; } - + public PlayerAllIn getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required uint32 playerId = 1; - public static final int PLAYERID_FIELD_NUMBER = 1; - private int playerId_; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getPlayerId() { - return playerId_; - } - - // required uint32 allInCard1 = 2; - public static final int ALLINCARD1_FIELD_NUMBER = 2; - private int allInCard1_; - public boolean hasAllInCard1() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getAllInCard1() { - return allInCard1_; - } - - // required uint32 allInCard2 = 3; - public static final int ALLINCARD2_FIELD_NUMBER = 3; - private int allInCard2_; - public boolean hasAllInCard2() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public int getAllInCard2() { - return allInCard2_; - } - - private void initFields() { - playerId_ = 0; - allInCard1_ = 0; - allInCard2_ = 0; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasAllInCard1()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasAllInCard2()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, playerId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, allInCard1_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeUInt32(3, allInCard2_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, playerId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, allInCard1_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(3, allInCard2_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom( + + private PlayerAllIn( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn, Builder> - implements de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllInOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - playerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - allInCard1_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - allInCard2_ = 0; - bitField0_ = (bitField0_ & ~0x00000004); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn build() { - de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn buildPartial() { - de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn result = new de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.playerId_ = playerId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.allInCard1_ = allInCard1_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.allInCard2_ = allInCard2_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn other) { - if (other == de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn.getDefaultInstance()) return this; - if (other.hasPlayerId()) { - setPlayerId(other.getPlayerId()); - } - if (other.hasAllInCard1()) { - setAllInCard1(other.getAllInCard1()); - } - if (other.hasAllInCard2()) { - setAllInCard2(other.getAllInCard2()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasPlayerId()) { - - return false; - } - if (!hasAllInCard1()) { - - return false; - } - if (!hasAllInCard2()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -26707,116 +33456,485 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PlayerAllIn parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PlayerAllIn(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // required uint32 playerId = 1; + public static final int PLAYERID_FIELD_NUMBER = 1; + private int playerId_; + /** + * required uint32 playerId = 1; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 playerId = 1; + */ + public int getPlayerId() { + return playerId_; + } + + // required uint32 allInCard1 = 2; + public static final int ALLINCARD1_FIELD_NUMBER = 2; + private int allInCard1_; + /** + * required uint32 allInCard1 = 2; + */ + public boolean hasAllInCard1() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 allInCard1 = 2; + */ + public int getAllInCard1() { + return allInCard1_; + } + + // required uint32 allInCard2 = 3; + public static final int ALLINCARD2_FIELD_NUMBER = 3; + private int allInCard2_; + /** + * required uint32 allInCard2 = 3; + */ + public boolean hasAllInCard2() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required uint32 allInCard2 = 3; + */ + public int getAllInCard2() { + return allInCard2_; + } + + private void initFields() { + playerId_ = 0; + allInCard1_ = 0; + allInCard2_ = 0; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasPlayerId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasAllInCard1()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasAllInCard2()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, playerId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, allInCard1_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeUInt32(3, allInCard2_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, playerId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, allInCard1_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, allInCard2_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code AllInShowCardsMessage.PlayerAllIn} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn, Builder> + implements de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllInOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + playerId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + allInCard1_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + allInCard2_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn build() { + de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn buildPartial() { + de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn result = new de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.playerId_ = playerId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.allInCard1_ = allInCard1_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.allInCard2_ = allInCard2_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn other) { + if (other == de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn.getDefaultInstance()) return this; + if (other.hasPlayerId()) { + setPlayerId(other.getPlayerId()); + } + if (other.hasAllInCard1()) { + setAllInCard1(other.getAllInCard1()); + } + if (other.hasAllInCard2()) { + setAllInCard2(other.getAllInCard2()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasPlayerId()) { + + return false; + } + if (!hasAllInCard1()) { + + return false; + } + if (!hasAllInCard2()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 playerId = 1; private int playerId_ ; + /** + * required uint32 playerId = 1; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 playerId = 1; + */ public int getPlayerId() { return playerId_; } + /** + * required uint32 playerId = 1; + */ public Builder setPlayerId(int value) { bitField0_ |= 0x00000001; playerId_ = value; return this; } + /** + * required uint32 playerId = 1; + */ public Builder clearPlayerId() { bitField0_ = (bitField0_ & ~0x00000001); playerId_ = 0; return this; } - + // required uint32 allInCard1 = 2; private int allInCard1_ ; + /** + * required uint32 allInCard1 = 2; + */ public boolean hasAllInCard1() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 allInCard1 = 2; + */ public int getAllInCard1() { return allInCard1_; } + /** + * required uint32 allInCard1 = 2; + */ public Builder setAllInCard1(int value) { bitField0_ |= 0x00000002; allInCard1_ = value; return this; } + /** + * required uint32 allInCard1 = 2; + */ public Builder clearAllInCard1() { bitField0_ = (bitField0_ & ~0x00000002); allInCard1_ = 0; return this; } - + // required uint32 allInCard2 = 3; private int allInCard2_ ; + /** + * required uint32 allInCard2 = 3; + */ public boolean hasAllInCard2() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required uint32 allInCard2 = 3; + */ public int getAllInCard2() { return allInCard2_; } + /** + * required uint32 allInCard2 = 3; + */ public Builder setAllInCard2(int value) { bitField0_ |= 0x00000004; allInCard2_ = value; return this; } + /** + * required uint32 allInCard2 = 3; + */ public Builder clearAllInCard2() { bitField0_ = (bitField0_ & ~0x00000004); allInCard2_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:AllInShowCardsMessage.PlayerAllIn) } - + static { defaultInstance = new PlayerAllIn(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:AllInShowCardsMessage.PlayerAllIn) } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; public static final int PLAYERSALLIN_FIELD_NUMBER = 2; private java.util.List playersAllIn_; + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public java.util.List getPlayersAllInList() { return playersAllIn_; } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public java.util.List getPlayersAllInOrBuilderList() { return playersAllIn_; } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public int getPlayersAllInCount() { return playersAllIn_.size(); } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn getPlayersAllIn(int index) { return playersAllIn_.get(index); } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllInOrBuilder getPlayersAllInOrBuilder( int index) { return playersAllIn_.get(index); } - + private void initFields() { gameId_ = 0; playersAllIn_ = java.util.Collections.emptyList(); @@ -26825,7 +33943,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -26839,7 +33957,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -26850,12 +33968,12 @@ public final class ProtoBuf { output.writeMessage(2, playersAllIn_.get(i)); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -26868,88 +33986,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code AllInShowCardsMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage, Builder> @@ -26958,13 +34065,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -26973,15 +34080,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage build() { de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage result = buildPartial(); if (!result.isInitialized()) { @@ -26989,17 +34096,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage buildPartial() { de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage result = new de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage(this); int from_bitField0_ = bitField0_; @@ -27016,7 +34113,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage other) { if (other == de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -27034,7 +34131,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -27048,62 +34145,59 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - gameId_ = input.readUInt32(); - break; - } - case 18: { - de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addPlayersAllIn(subBuilder.buildPartial()); - break; - } + de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; private java.util.List playersAllIn_ = java.util.Collections.emptyList(); @@ -27113,16 +34207,28 @@ public final class ProtoBuf { bitField0_ |= 0x00000002; } } - + + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public java.util.List getPlayersAllInList() { return java.util.Collections.unmodifiableList(playersAllIn_); } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public int getPlayersAllInCount() { return playersAllIn_.size(); } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn getPlayersAllIn(int index) { return playersAllIn_.get(index); } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public Builder setPlayersAllIn( int index, de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn value) { if (value == null) { @@ -27130,25 +34236,34 @@ public final class ProtoBuf { } ensurePlayersAllInIsMutable(); playersAllIn_.set(index, value); - + return this; } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public Builder setPlayersAllIn( int index, de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn.Builder builderForValue) { ensurePlayersAllInIsMutable(); playersAllIn_.set(index, builderForValue.build()); - + return this; } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public Builder addPlayersAllIn(de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn value) { if (value == null) { throw new NullPointerException(); } ensurePlayersAllInIsMutable(); playersAllIn_.add(value); - + return this; } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public Builder addPlayersAllIn( int index, de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn value) { if (value == null) { @@ -27156,117 +34271,235 @@ public final class ProtoBuf { } ensurePlayersAllInIsMutable(); playersAllIn_.add(index, value); - + return this; } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public Builder addPlayersAllIn( de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn.Builder builderForValue) { ensurePlayersAllInIsMutable(); playersAllIn_.add(builderForValue.build()); - + return this; } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public Builder addPlayersAllIn( int index, de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PlayerAllIn.Builder builderForValue) { ensurePlayersAllInIsMutable(); playersAllIn_.add(index, builderForValue.build()); - + return this; } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public Builder addAllPlayersAllIn( java.lang.Iterable values) { ensurePlayersAllInIsMutable(); super.addAll(values, playersAllIn_); - + return this; } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public Builder clearPlayersAllIn() { playersAllIn_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000002); - + return this; } + /** + * repeated .AllInShowCardsMessage.PlayerAllIn playersAllIn = 2; + */ public Builder removePlayersAllIn(int index) { ensurePlayersAllInIsMutable(); playersAllIn_.remove(index); - + return this; } - + // @@protoc_insertion_point(builder_scope:AllInShowCardsMessage) } - + static { defaultInstance = new AllInShowCardsMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:AllInShowCardsMessage) } - + public interface EndOfHandShowCardsMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // repeated .PlayerResult playerResults = 2; + /** + * repeated .PlayerResult playerResults = 2; + */ java.util.List getPlayerResultsList(); + /** + * repeated .PlayerResult playerResults = 2; + */ de.pokerth.protocol.ProtoBuf.PlayerResult getPlayerResults(int index); + /** + * repeated .PlayerResult playerResults = 2; + */ int getPlayerResultsCount(); } + /** + * Protobuf type {@code EndOfHandShowCardsMessage} + */ public static final class EndOfHandShowCardsMessage extends com.google.protobuf.GeneratedMessageLite implements EndOfHandShowCardsMessageOrBuilder { // Use EndOfHandShowCardsMessage.newBuilder() to construct. - private EndOfHandShowCardsMessage(Builder builder) { + private EndOfHandShowCardsMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private EndOfHandShowCardsMessage(boolean noInit) {} - + private static final EndOfHandShowCardsMessage defaultInstance; public static EndOfHandShowCardsMessage getDefaultInstance() { return defaultInstance; } - + public EndOfHandShowCardsMessage getDefaultInstanceForType() { return defaultInstance; } - + + private EndOfHandShowCardsMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + gameId_ = input.readUInt32(); + break; + } + case 18: { + if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + playerResults_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000002; + } + playerResults_.add(input.readMessage(de.pokerth.protocol.ProtoBuf.PlayerResult.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) { + playerResults_ = java.util.Collections.unmodifiableList(playerResults_); + } + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public EndOfHandShowCardsMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new EndOfHandShowCardsMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // repeated .PlayerResult playerResults = 2; public static final int PLAYERRESULTS_FIELD_NUMBER = 2; private java.util.List playerResults_; + /** + * repeated .PlayerResult playerResults = 2; + */ public java.util.List getPlayerResultsList() { return playerResults_; } + /** + * repeated .PlayerResult playerResults = 2; + */ public java.util.List getPlayerResultsOrBuilderList() { return playerResults_; } + /** + * repeated .PlayerResult playerResults = 2; + */ public int getPlayerResultsCount() { return playerResults_.size(); } + /** + * repeated .PlayerResult playerResults = 2; + */ public de.pokerth.protocol.ProtoBuf.PlayerResult getPlayerResults(int index) { return playerResults_.get(index); } + /** + * repeated .PlayerResult playerResults = 2; + */ public de.pokerth.protocol.ProtoBuf.PlayerResultOrBuilder getPlayerResultsOrBuilder( int index) { return playerResults_.get(index); } - + private void initFields() { gameId_ = 0; playerResults_ = java.util.Collections.emptyList(); @@ -27275,7 +34508,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -27289,7 +34522,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -27300,12 +34533,12 @@ public final class ProtoBuf { output.writeMessage(2, playerResults_.get(i)); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -27318,88 +34551,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code EndOfHandShowCardsMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage, Builder> @@ -27408,13 +34630,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -27423,15 +34645,15 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage build() { de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage result = buildPartial(); if (!result.isInitialized()) { @@ -27439,17 +34661,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage buildPartial() { de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage result = new de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage(this); int from_bitField0_ = bitField0_; @@ -27466,7 +34678,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage other) { if (other == de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage.getDefaultInstance()) return this; if (other.hasGameId()) { @@ -27484,7 +34696,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -27498,62 +34710,59 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - gameId_ = input.readUInt32(); - break; - } - case 18: { - de.pokerth.protocol.ProtoBuf.PlayerResult.Builder subBuilder = de.pokerth.protocol.ProtoBuf.PlayerResult.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addPlayerResults(subBuilder.buildPartial()); - break; - } + de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // repeated .PlayerResult playerResults = 2; private java.util.List playerResults_ = java.util.Collections.emptyList(); @@ -27563,16 +34772,28 @@ public final class ProtoBuf { bitField0_ |= 0x00000002; } } - + + /** + * repeated .PlayerResult playerResults = 2; + */ public java.util.List getPlayerResultsList() { return java.util.Collections.unmodifiableList(playerResults_); } + /** + * repeated .PlayerResult playerResults = 2; + */ public int getPlayerResultsCount() { return playerResults_.size(); } + /** + * repeated .PlayerResult playerResults = 2; + */ public de.pokerth.protocol.ProtoBuf.PlayerResult getPlayerResults(int index) { return playerResults_.get(index); } + /** + * repeated .PlayerResult playerResults = 2; + */ public Builder setPlayerResults( int index, de.pokerth.protocol.ProtoBuf.PlayerResult value) { if (value == null) { @@ -27580,25 +34801,34 @@ public final class ProtoBuf { } ensurePlayerResultsIsMutable(); playerResults_.set(index, value); - + return this; } + /** + * repeated .PlayerResult playerResults = 2; + */ public Builder setPlayerResults( int index, de.pokerth.protocol.ProtoBuf.PlayerResult.Builder builderForValue) { ensurePlayerResultsIsMutable(); playerResults_.set(index, builderForValue.build()); - + return this; } + /** + * repeated .PlayerResult playerResults = 2; + */ public Builder addPlayerResults(de.pokerth.protocol.ProtoBuf.PlayerResult value) { if (value == null) { throw new NullPointerException(); } ensurePlayerResultsIsMutable(); playerResults_.add(value); - + return this; } + /** + * repeated .PlayerResult playerResults = 2; + */ public Builder addPlayerResults( int index, de.pokerth.protocol.ProtoBuf.PlayerResult value) { if (value == null) { @@ -27606,416 +34836,152 @@ public final class ProtoBuf { } ensurePlayerResultsIsMutable(); playerResults_.add(index, value); - + return this; } + /** + * repeated .PlayerResult playerResults = 2; + */ public Builder addPlayerResults( de.pokerth.protocol.ProtoBuf.PlayerResult.Builder builderForValue) { ensurePlayerResultsIsMutable(); playerResults_.add(builderForValue.build()); - + return this; } + /** + * repeated .PlayerResult playerResults = 2; + */ public Builder addPlayerResults( int index, de.pokerth.protocol.ProtoBuf.PlayerResult.Builder builderForValue) { ensurePlayerResultsIsMutable(); playerResults_.add(index, builderForValue.build()); - + return this; } + /** + * repeated .PlayerResult playerResults = 2; + */ public Builder addAllPlayerResults( java.lang.Iterable values) { ensurePlayerResultsIsMutable(); super.addAll(values, playerResults_); - + return this; } + /** + * repeated .PlayerResult playerResults = 2; + */ public Builder clearPlayerResults() { playerResults_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000002); - + return this; } + /** + * repeated .PlayerResult playerResults = 2; + */ public Builder removePlayerResults(int index) { ensurePlayerResultsIsMutable(); playerResults_.remove(index); - + return this; } - + // @@protoc_insertion_point(builder_scope:EndOfHandShowCardsMessage) } - + static { defaultInstance = new EndOfHandShowCardsMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:EndOfHandShowCardsMessage) } - + public interface EndOfHandHideCardsMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ int getPlayerId(); - + // required uint32 moneyWon = 3; + /** + * required uint32 moneyWon = 3; + */ boolean hasMoneyWon(); + /** + * required uint32 moneyWon = 3; + */ int getMoneyWon(); - + // required uint32 playerMoney = 4; + /** + * required uint32 playerMoney = 4; + */ boolean hasPlayerMoney(); + /** + * required uint32 playerMoney = 4; + */ int getPlayerMoney(); } + /** + * Protobuf type {@code EndOfHandHideCardsMessage} + */ public static final class EndOfHandHideCardsMessage extends com.google.protobuf.GeneratedMessageLite implements EndOfHandHideCardsMessageOrBuilder { // Use EndOfHandHideCardsMessage.newBuilder() to construct. - private EndOfHandHideCardsMessage(Builder builder) { + private EndOfHandHideCardsMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private EndOfHandHideCardsMessage(boolean noInit) {} - + private static final EndOfHandHideCardsMessage defaultInstance; public static EndOfHandHideCardsMessage getDefaultInstance() { return defaultInstance; } - + public EndOfHandHideCardsMessage getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required uint32 gameId = 1; - public static final int GAMEID_FIELD_NUMBER = 1; - private int gameId_; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - - // required uint32 playerId = 2; - public static final int PLAYERID_FIELD_NUMBER = 2; - private int playerId_; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - - // required uint32 moneyWon = 3; - public static final int MONEYWON_FIELD_NUMBER = 3; - private int moneyWon_; - public boolean hasMoneyWon() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public int getMoneyWon() { - return moneyWon_; - } - - // required uint32 playerMoney = 4; - public static final int PLAYERMONEY_FIELD_NUMBER = 4; - private int playerMoney_; - public boolean hasPlayerMoney() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public int getPlayerMoney() { - return playerMoney_; - } - - private void initFields() { - gameId_ = 0; - playerId_ = 0; - moneyWon_ = 0; - playerMoney_ = 0; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasGameId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasMoneyWon()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPlayerMoney()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, playerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeUInt32(3, moneyWon_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeUInt32(4, playerMoney_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, playerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(3, moneyWon_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(4, playerMoney_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom( + + private EndOfHandHideCardsMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - gameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - playerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - moneyWon_ = 0; - bitField0_ = (bitField0_ & ~0x00000004); - playerMoney_ = 0; - bitField0_ = (bitField0_ & ~0x00000008); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage build() { - de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage result = new de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.gameId_ = gameId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.playerId_ = playerId_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.moneyWon_ = moneyWon_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.playerMoney_ = playerMoney_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.getDefaultInstance()) return this; - if (other.hasGameId()) { - setGameId(other.getGameId()); - } - if (other.hasPlayerId()) { - setPlayerId(other.getPlayerId()); - } - if (other.hasMoneyWon()) { - setMoneyWon(other.getMoneyWon()); - } - if (other.hasPlayerMoney()) { - setPlayerMoney(other.getPlayerMoney()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasGameId()) { - - return false; - } - if (!hasPlayerId()) { - - return false; - } - if (!hasMoneyWon()) { - - return false; - } - if (!hasPlayerMoney()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -28041,233 +35007,673 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // required uint32 moneyWon = 3; - private int moneyWon_ ; - public boolean hasMoneyWon() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public int getMoneyWon() { - return moneyWon_; - } - public Builder setMoneyWon(int value) { - bitField0_ |= 0x00000004; - moneyWon_ = value; - - return this; - } - public Builder clearMoneyWon() { - bitField0_ = (bitField0_ & ~0x00000004); - moneyWon_ = 0; - - return this; - } - - // required uint32 playerMoney = 4; - private int playerMoney_ ; - public boolean hasPlayerMoney() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public int getPlayerMoney() { - return playerMoney_; - } - public Builder setPlayerMoney(int value) { - bitField0_ |= 0x00000008; - playerMoney_ = value; - - return this; - } - public Builder clearPlayerMoney() { - bitField0_ = (bitField0_ & ~0x00000008); - playerMoney_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:EndOfHandHideCardsMessage) } - - static { - defaultInstance = new EndOfHandHideCardsMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public EndOfHandHideCardsMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new EndOfHandHideCardsMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:EndOfHandHideCardsMessage) - } - - public interface ShowMyCardsRequestMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - } - public static final class ShowMyCardsRequestMessage extends - com.google.protobuf.GeneratedMessageLite - implements ShowMyCardsRequestMessageOrBuilder { - // Use ShowMyCardsRequestMessage.newBuilder() to construct. - private ShowMyCardsRequestMessage(Builder builder) { - super(builder); + + private int bitField0_; + // required uint32 gameId = 1; + public static final int GAMEID_FIELD_NUMBER = 1; + private int gameId_; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); } - private ShowMyCardsRequestMessage(boolean noInit) {} - - private static final ShowMyCardsRequestMessage defaultInstance; - public static ShowMyCardsRequestMessage getDefaultInstance() { - return defaultInstance; + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; } - - public ShowMyCardsRequestMessage getDefaultInstanceForType() { - return defaultInstance; + + // required uint32 playerId = 2; + public static final int PLAYERID_FIELD_NUMBER = 2; + private int playerId_; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); } - + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + + // required uint32 moneyWon = 3; + public static final int MONEYWON_FIELD_NUMBER = 3; + private int moneyWon_; + /** + * required uint32 moneyWon = 3; + */ + public boolean hasMoneyWon() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required uint32 moneyWon = 3; + */ + public int getMoneyWon() { + return moneyWon_; + } + + // required uint32 playerMoney = 4; + public static final int PLAYERMONEY_FIELD_NUMBER = 4; + private int playerMoney_; + /** + * required uint32 playerMoney = 4; + */ + public boolean hasPlayerMoney() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required uint32 playerMoney = 4; + */ + public int getPlayerMoney() { + return playerMoney_; + } + private void initFields() { + gameId_ = 0; + playerId_ = 0; + moneyWon_ = 0; + playerMoney_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + + if (!hasGameId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPlayerId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasMoneyWon()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPlayerMoney()) { + memoizedIsInitialized = 0; + return false; + } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, playerId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeUInt32(3, moneyWon_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeUInt32(4, playerMoney_); + } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, playerId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, moneyWon_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(4, playerMoney_); + } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + + public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code EndOfHandHideCardsMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + gameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + playerId_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + moneyWon_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + playerMoney_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage build() { + de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage result = new de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.gameId_ = gameId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.playerId_ = playerId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.moneyWon_ = moneyWon_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.playerMoney_ = playerMoney_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.getDefaultInstance()) return this; + if (other.hasGameId()) { + setGameId(other.getGameId()); + } + if (other.hasPlayerId()) { + setPlayerId(other.getPlayerId()); + } + if (other.hasMoneyWon()) { + setMoneyWon(other.getMoneyWon()); + } + if (other.hasPlayerMoney()) { + setPlayerMoney(other.getPlayerMoney()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasGameId()) { + + return false; + } + if (!hasPlayerId()) { + + return false; + } + if (!hasMoneyWon()) { + + return false; + } + if (!hasPlayerMoney()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // required uint32 moneyWon = 3; + private int moneyWon_ ; + /** + * required uint32 moneyWon = 3; + */ + public boolean hasMoneyWon() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required uint32 moneyWon = 3; + */ + public int getMoneyWon() { + return moneyWon_; + } + /** + * required uint32 moneyWon = 3; + */ + public Builder setMoneyWon(int value) { + bitField0_ |= 0x00000004; + moneyWon_ = value; + + return this; + } + /** + * required uint32 moneyWon = 3; + */ + public Builder clearMoneyWon() { + bitField0_ = (bitField0_ & ~0x00000004); + moneyWon_ = 0; + + return this; + } + + // required uint32 playerMoney = 4; + private int playerMoney_ ; + /** + * required uint32 playerMoney = 4; + */ + public boolean hasPlayerMoney() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required uint32 playerMoney = 4; + */ + public int getPlayerMoney() { + return playerMoney_; + } + /** + * required uint32 playerMoney = 4; + */ + public Builder setPlayerMoney(int value) { + bitField0_ |= 0x00000008; + playerMoney_ = value; + + return this; + } + /** + * required uint32 playerMoney = 4; + */ + public Builder clearPlayerMoney() { + bitField0_ = (bitField0_ & ~0x00000008); + playerMoney_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:EndOfHandHideCardsMessage) + } + + static { + defaultInstance = new EndOfHandHideCardsMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:EndOfHandHideCardsMessage) + } + + public interface ShowMyCardsRequestMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + } + /** + * Protobuf type {@code ShowMyCardsRequestMessage} + */ + public static final class ShowMyCardsRequestMessage extends + com.google.protobuf.GeneratedMessageLite + implements ShowMyCardsRequestMessageOrBuilder { + // Use ShowMyCardsRequestMessage.newBuilder() to construct. + private ShowMyCardsRequestMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private ShowMyCardsRequestMessage(boolean noInit) {} + + private static final ShowMyCardsRequestMessage defaultInstance; + public static ShowMyCardsRequestMessage getDefaultInstance() { + return defaultInstance; + } + + public ShowMyCardsRequestMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private ShowMyCardsRequestMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ShowMyCardsRequestMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ShowMyCardsRequestMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private void initFields() { + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + public static de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code ShowMyCardsRequestMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage, Builder> @@ -28276,26 +35682,26 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage build() { de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage result = buildPartial(); if (!result.isInitialized()) { @@ -28303,100 +35709,162 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage buildPartial() { de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage result = new de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage(this); return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage other) { if (other == de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage.getDefaultInstance()) return this; return this; } - + public final boolean isInitialized() { return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } + de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + // @@protoc_insertion_point(builder_scope:ShowMyCardsRequestMessage) } - + static { defaultInstance = new ShowMyCardsRequestMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:ShowMyCardsRequestMessage) } - + public interface AfterHandShowCardsMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required .PlayerResult playerResult = 1; + /** + * required .PlayerResult playerResult = 1; + */ boolean hasPlayerResult(); + /** + * required .PlayerResult playerResult = 1; + */ de.pokerth.protocol.ProtoBuf.PlayerResult getPlayerResult(); } + /** + * Protobuf type {@code AfterHandShowCardsMessage} + */ public static final class AfterHandShowCardsMessage extends com.google.protobuf.GeneratedMessageLite implements AfterHandShowCardsMessageOrBuilder { // Use AfterHandShowCardsMessage.newBuilder() to construct. - private AfterHandShowCardsMessage(Builder builder) { + private AfterHandShowCardsMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private AfterHandShowCardsMessage(boolean noInit) {} - + private static final AfterHandShowCardsMessage defaultInstance; public static AfterHandShowCardsMessage getDefaultInstance() { return defaultInstance; } - + public AfterHandShowCardsMessage getDefaultInstanceForType() { return defaultInstance; } - + + private AfterHandShowCardsMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + de.pokerth.protocol.ProtoBuf.PlayerResult.Builder subBuilder = null; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + subBuilder = playerResult_.toBuilder(); + } + playerResult_ = input.readMessage(de.pokerth.protocol.ProtoBuf.PlayerResult.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(playerResult_); + playerResult_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000001; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AfterHandShowCardsMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AfterHandShowCardsMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required .PlayerResult playerResult = 1; public static final int PLAYERRESULT_FIELD_NUMBER = 1; private de.pokerth.protocol.ProtoBuf.PlayerResult playerResult_; + /** + * required .PlayerResult playerResult = 1; + */ public boolean hasPlayerResult() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .PlayerResult playerResult = 1; + */ public de.pokerth.protocol.ProtoBuf.PlayerResult getPlayerResult() { return playerResult_; } - + private void initFields() { playerResult_ = de.pokerth.protocol.ProtoBuf.PlayerResult.getDefaultInstance(); } @@ -28404,7 +35872,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasPlayerResult()) { memoizedIsInitialized = 0; return false; @@ -28416,7 +35884,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -28424,12 +35892,12 @@ public final class ProtoBuf { output.writeMessage(1, playerResult_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -28438,88 +35906,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code AfterHandShowCardsMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage, Builder> @@ -28528,28 +35985,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); playerResult_ = de.pokerth.protocol.ProtoBuf.PlayerResult.getDefaultInstance(); bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage build() { de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage result = buildPartial(); if (!result.isInitialized()) { @@ -28557,17 +36014,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage buildPartial() { de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage result = new de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage(this); int from_bitField0_ = bitField0_; @@ -28579,7 +36026,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage other) { if (other == de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage.getDefaultInstance()) return this; if (other.hasPlayerResult()) { @@ -28587,7 +36034,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasPlayerResult()) { @@ -28599,63 +36046,65 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 10: { - de.pokerth.protocol.ProtoBuf.PlayerResult.Builder subBuilder = de.pokerth.protocol.ProtoBuf.PlayerResult.newBuilder(); - if (hasPlayerResult()) { - subBuilder.mergeFrom(getPlayerResult()); - } - input.readMessage(subBuilder, extensionRegistry); - setPlayerResult(subBuilder.buildPartial()); - break; - } + de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required .PlayerResult playerResult = 1; private de.pokerth.protocol.ProtoBuf.PlayerResult playerResult_ = de.pokerth.protocol.ProtoBuf.PlayerResult.getDefaultInstance(); + /** + * required .PlayerResult playerResult = 1; + */ public boolean hasPlayerResult() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .PlayerResult playerResult = 1; + */ public de.pokerth.protocol.ProtoBuf.PlayerResult getPlayerResult() { return playerResult_; } + /** + * required .PlayerResult playerResult = 1; + */ public Builder setPlayerResult(de.pokerth.protocol.ProtoBuf.PlayerResult value) { if (value == null) { throw new NullPointerException(); } playerResult_ = value; - + bitField0_ |= 0x00000001; return this; } + /** + * required .PlayerResult playerResult = 1; + */ public Builder setPlayerResult( de.pokerth.protocol.ProtoBuf.PlayerResult.Builder builderForValue) { playerResult_ = builderForValue.build(); - + bitField0_ |= 0x00000001; return this; } + /** + * required .PlayerResult playerResult = 1; + */ public Builder mergePlayerResult(de.pokerth.protocol.ProtoBuf.PlayerResult value) { if (((bitField0_ & 0x00000001) == 0x00000001) && playerResult_ != de.pokerth.protocol.ProtoBuf.PlayerResult.getDefaultInstance()) { @@ -28664,312 +36113,94 @@ public final class ProtoBuf { } else { playerResult_ = value; } - + bitField0_ |= 0x00000001; return this; } + /** + * required .PlayerResult playerResult = 1; + */ public Builder clearPlayerResult() { playerResult_ = de.pokerth.protocol.ProtoBuf.PlayerResult.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000001); return this; } - + // @@protoc_insertion_point(builder_scope:AfterHandShowCardsMessage) } - + static { defaultInstance = new AfterHandShowCardsMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:AfterHandShowCardsMessage) } - + public interface EndOfGameMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ int getGameId(); - + // required uint32 winnerPlayerId = 2; + /** + * required uint32 winnerPlayerId = 2; + */ boolean hasWinnerPlayerId(); + /** + * required uint32 winnerPlayerId = 2; + */ int getWinnerPlayerId(); } + /** + * Protobuf type {@code EndOfGameMessage} + */ public static final class EndOfGameMessage extends com.google.protobuf.GeneratedMessageLite implements EndOfGameMessageOrBuilder { // Use EndOfGameMessage.newBuilder() to construct. - private EndOfGameMessage(Builder builder) { + private EndOfGameMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private EndOfGameMessage(boolean noInit) {} - + private static final EndOfGameMessage defaultInstance; public static EndOfGameMessage getDefaultInstance() { return defaultInstance; } - + public EndOfGameMessage getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required uint32 gameId = 1; - public static final int GAMEID_FIELD_NUMBER = 1; - private int gameId_; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - - // required uint32 winnerPlayerId = 2; - public static final int WINNERPLAYERID_FIELD_NUMBER = 2; - private int winnerPlayerId_; - public boolean hasWinnerPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getWinnerPlayerId() { - return winnerPlayerId_; - } - - private void initFields() { - gameId_ = 0; - winnerPlayerId_ = 0; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasGameId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasWinnerPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, winnerPlayerId_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, winnerPlayerId_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom( + + private EndOfGameMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.EndOfGameMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.EndOfGameMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.EndOfGameMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.EndOfGameMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - gameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - winnerPlayerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.EndOfGameMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.EndOfGameMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.EndOfGameMessage build() { - de.pokerth.protocol.ProtoBuf.EndOfGameMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.EndOfGameMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.EndOfGameMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.EndOfGameMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.EndOfGameMessage result = new de.pokerth.protocol.ProtoBuf.EndOfGameMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.gameId_ = gameId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.winnerPlayerId_ = winnerPlayerId_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.EndOfGameMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.EndOfGameMessage.getDefaultInstance()) return this; - if (other.hasGameId()) { - setGameId(other.getGameId()); - } - if (other.hasWinnerPlayerId()) { - setWinnerPlayerId(other.getWinnerPlayerId()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasGameId()) { - - return false; - } - if (!hasWinnerPlayerId()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -28985,347 +36216,421 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 winnerPlayerId = 2; - private int winnerPlayerId_ ; - public boolean hasWinnerPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getWinnerPlayerId() { - return winnerPlayerId_; - } - public Builder setWinnerPlayerId(int value) { - bitField0_ |= 0x00000002; - winnerPlayerId_ = value; - - return this; - } - public Builder clearWinnerPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - winnerPlayerId_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:EndOfGameMessage) } - - static { - defaultInstance = new EndOfGameMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public EndOfGameMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new EndOfGameMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:EndOfGameMessage) - } - - public interface PlayerIdChangedMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 oldPlayerId = 1; - boolean hasOldPlayerId(); - int getOldPlayerId(); - - // required uint32 newPlayerId = 2; - boolean hasNewPlayerId(); - int getNewPlayerId(); - } - public static final class PlayerIdChangedMessage extends - com.google.protobuf.GeneratedMessageLite - implements PlayerIdChangedMessageOrBuilder { - // Use PlayerIdChangedMessage.newBuilder() to construct. - private PlayerIdChangedMessage(Builder builder) { - super(builder); - } - private PlayerIdChangedMessage(boolean noInit) {} - - private static final PlayerIdChangedMessage defaultInstance; - public static PlayerIdChangedMessage getDefaultInstance() { - return defaultInstance; - } - - public PlayerIdChangedMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; - // required uint32 oldPlayerId = 1; - public static final int OLDPLAYERID_FIELD_NUMBER = 1; - private int oldPlayerId_; - public boolean hasOldPlayerId() { + // required uint32 gameId = 1; + public static final int GAMEID_FIELD_NUMBER = 1; + private int gameId_; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public int getOldPlayerId() { - return oldPlayerId_; + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; } - - // required uint32 newPlayerId = 2; - public static final int NEWPLAYERID_FIELD_NUMBER = 2; - private int newPlayerId_; - public boolean hasNewPlayerId() { + + // required uint32 winnerPlayerId = 2; + public static final int WINNERPLAYERID_FIELD_NUMBER = 2; + private int winnerPlayerId_; + /** + * required uint32 winnerPlayerId = 2; + */ + public boolean hasWinnerPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public int getNewPlayerId() { - return newPlayerId_; + /** + * required uint32 winnerPlayerId = 2; + */ + public int getWinnerPlayerId() { + return winnerPlayerId_; } - + private void initFields() { - oldPlayerId_ = 0; - newPlayerId_ = 0; + gameId_ = 0; + winnerPlayerId_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - - if (!hasOldPlayerId()) { + + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } - if (!hasNewPlayerId()) { + if (!hasWinnerPlayerId()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, oldPlayerId_); + output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, newPlayerId_); + output.writeUInt32(2, winnerPlayerId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, oldPlayerId_); + .computeUInt32Size(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, newPlayerId_); + .computeUInt32Size(2, winnerPlayerId_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.EndOfGameMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.EndOfGameMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code EndOfGameMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.EndOfGameMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.EndOfGameMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.EndOfGameMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); - oldPlayerId_ = 0; + gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - newPlayerId_ = 0; + winnerPlayerId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.EndOfGameMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.EndOfGameMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage build() { - de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.EndOfGameMessage build() { + de.pokerth.protocol.ProtoBuf.EndOfGameMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage result = new de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage(this); + + public de.pokerth.protocol.ProtoBuf.EndOfGameMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.EndOfGameMessage result = new de.pokerth.protocol.ProtoBuf.EndOfGameMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { to_bitField0_ |= 0x00000001; } - result.oldPlayerId_ = oldPlayerId_; + result.gameId_ = gameId_; if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.newPlayerId_ = newPlayerId_; + result.winnerPlayerId_ = winnerPlayerId_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.getDefaultInstance()) return this; - if (other.hasOldPlayerId()) { - setOldPlayerId(other.getOldPlayerId()); + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.EndOfGameMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.EndOfGameMessage.getDefaultInstance()) return this; + if (other.hasGameId()) { + setGameId(other.getGameId()); } - if (other.hasNewPlayerId()) { - setNewPlayerId(other.getNewPlayerId()); + if (other.hasWinnerPlayerId()) { + setWinnerPlayerId(other.getWinnerPlayerId()); } return this; } - + public final boolean isInitialized() { - if (!hasOldPlayerId()) { + if (!hasGameId()) { return false; } - if (!hasNewPlayerId()) { + if (!hasWinnerPlayerId()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.EndOfGameMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.EndOfGameMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 winnerPlayerId = 2; + private int winnerPlayerId_ ; + /** + * required uint32 winnerPlayerId = 2; + */ + public boolean hasWinnerPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 winnerPlayerId = 2; + */ + public int getWinnerPlayerId() { + return winnerPlayerId_; + } + /** + * required uint32 winnerPlayerId = 2; + */ + public Builder setWinnerPlayerId(int value) { + bitField0_ |= 0x00000002; + winnerPlayerId_ = value; + + return this; + } + /** + * required uint32 winnerPlayerId = 2; + */ + public Builder clearWinnerPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + winnerPlayerId_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:EndOfGameMessage) + } + + static { + defaultInstance = new EndOfGameMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:EndOfGameMessage) + } + + public interface PlayerIdChangedMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 oldPlayerId = 1; + /** + * required uint32 oldPlayerId = 1; + */ + boolean hasOldPlayerId(); + /** + * required uint32 oldPlayerId = 1; + */ + int getOldPlayerId(); + + // required uint32 newPlayerId = 2; + /** + * required uint32 newPlayerId = 2; + */ + boolean hasNewPlayerId(); + /** + * required uint32 newPlayerId = 2; + */ + int getNewPlayerId(); + } + /** + * Protobuf type {@code PlayerIdChangedMessage} + */ + public static final class PlayerIdChangedMessage extends + com.google.protobuf.GeneratedMessageLite + implements PlayerIdChangedMessageOrBuilder { + // Use PlayerIdChangedMessage.newBuilder() to construct. + private PlayerIdChangedMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private PlayerIdChangedMessage(boolean noInit) {} + + private static final PlayerIdChangedMessage defaultInstance; + public static PlayerIdChangedMessage getDefaultInstance() { + return defaultInstance; + } + + public PlayerIdChangedMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private PlayerIdChangedMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -29341,347 +36646,421 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 oldPlayerId = 1; - private int oldPlayerId_ ; - public boolean hasOldPlayerId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getOldPlayerId() { - return oldPlayerId_; - } - public Builder setOldPlayerId(int value) { - bitField0_ |= 0x00000001; - oldPlayerId_ = value; - - return this; - } - public Builder clearOldPlayerId() { - bitField0_ = (bitField0_ & ~0x00000001); - oldPlayerId_ = 0; - - return this; - } - - // required uint32 newPlayerId = 2; - private int newPlayerId_ ; - public boolean hasNewPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getNewPlayerId() { - return newPlayerId_; - } - public Builder setNewPlayerId(int value) { - bitField0_ |= 0x00000002; - newPlayerId_ = value; - - return this; - } - public Builder clearNewPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - newPlayerId_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:PlayerIdChangedMessage) } - - static { - defaultInstance = new PlayerIdChangedMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PlayerIdChangedMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PlayerIdChangedMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:PlayerIdChangedMessage) - } - - public interface AskKickPlayerMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 playerId = 2; - boolean hasPlayerId(); - int getPlayerId(); - } - public static final class AskKickPlayerMessage extends - com.google.protobuf.GeneratedMessageLite - implements AskKickPlayerMessageOrBuilder { - // Use AskKickPlayerMessage.newBuilder() to construct. - private AskKickPlayerMessage(Builder builder) { - super(builder); - } - private AskKickPlayerMessage(boolean noInit) {} - - private static final AskKickPlayerMessage defaultInstance; - public static AskKickPlayerMessage getDefaultInstance() { - return defaultInstance; - } - - public AskKickPlayerMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; - // required uint32 gameId = 1; - public static final int GAMEID_FIELD_NUMBER = 1; - private int gameId_; - public boolean hasGameId() { + // required uint32 oldPlayerId = 1; + public static final int OLDPLAYERID_FIELD_NUMBER = 1; + private int oldPlayerId_; + /** + * required uint32 oldPlayerId = 1; + */ + public boolean hasOldPlayerId() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public int getGameId() { - return gameId_; + /** + * required uint32 oldPlayerId = 1; + */ + public int getOldPlayerId() { + return oldPlayerId_; } - - // required uint32 playerId = 2; - public static final int PLAYERID_FIELD_NUMBER = 2; - private int playerId_; - public boolean hasPlayerId() { + + // required uint32 newPlayerId = 2; + public static final int NEWPLAYERID_FIELD_NUMBER = 2; + private int newPlayerId_; + /** + * required uint32 newPlayerId = 2; + */ + public boolean hasNewPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public int getPlayerId() { - return playerId_; + /** + * required uint32 newPlayerId = 2; + */ + public int getNewPlayerId() { + return newPlayerId_; } - + private void initFields() { - gameId_ = 0; - playerId_ = 0; + oldPlayerId_ = 0; + newPlayerId_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - - if (!hasGameId()) { + + if (!hasOldPlayerId()) { memoizedIsInitialized = 0; return false; } - if (!hasPlayerId()) { + if (!hasNewPlayerId()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, gameId_); + output.writeUInt32(1, oldPlayerId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, playerId_); + output.writeUInt32(2, newPlayerId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, gameId_); + .computeUInt32Size(1, oldPlayerId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, playerId_); + .computeUInt32Size(2, newPlayerId_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code PlayerIdChangedMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.AskKickPlayerMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); - gameId_ = 0; + oldPlayerId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - playerId_ = 0; + newPlayerId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage build() { - de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage build() { + de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage result = new de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage(this); + + public de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage result = new de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { to_bitField0_ |= 0x00000001; } - result.gameId_ = gameId_; + result.oldPlayerId_ = oldPlayerId_; if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.playerId_ = playerId_; + result.newPlayerId_ = newPlayerId_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.getDefaultInstance()) return this; - if (other.hasGameId()) { - setGameId(other.getGameId()); + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.getDefaultInstance()) return this; + if (other.hasOldPlayerId()) { + setOldPlayerId(other.getOldPlayerId()); } - if (other.hasPlayerId()) { - setPlayerId(other.getPlayerId()); + if (other.hasNewPlayerId()) { + setNewPlayerId(other.getNewPlayerId()); } return this; } - + public final boolean isInitialized() { - if (!hasGameId()) { + if (!hasOldPlayerId()) { return false; } - if (!hasPlayerId()) { + if (!hasNewPlayerId()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 oldPlayerId = 1; + private int oldPlayerId_ ; + /** + * required uint32 oldPlayerId = 1; + */ + public boolean hasOldPlayerId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 oldPlayerId = 1; + */ + public int getOldPlayerId() { + return oldPlayerId_; + } + /** + * required uint32 oldPlayerId = 1; + */ + public Builder setOldPlayerId(int value) { + bitField0_ |= 0x00000001; + oldPlayerId_ = value; + + return this; + } + /** + * required uint32 oldPlayerId = 1; + */ + public Builder clearOldPlayerId() { + bitField0_ = (bitField0_ & ~0x00000001); + oldPlayerId_ = 0; + + return this; + } + + // required uint32 newPlayerId = 2; + private int newPlayerId_ ; + /** + * required uint32 newPlayerId = 2; + */ + public boolean hasNewPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 newPlayerId = 2; + */ + public int getNewPlayerId() { + return newPlayerId_; + } + /** + * required uint32 newPlayerId = 2; + */ + public Builder setNewPlayerId(int value) { + bitField0_ |= 0x00000002; + newPlayerId_ = value; + + return this; + } + /** + * required uint32 newPlayerId = 2; + */ + public Builder clearNewPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + newPlayerId_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:PlayerIdChangedMessage) + } + + static { + defaultInstance = new PlayerIdChangedMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:PlayerIdChangedMessage) + } + + public interface AskKickPlayerMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ + boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ + int getPlayerId(); + } + /** + * Protobuf type {@code AskKickPlayerMessage} + */ + public static final class AskKickPlayerMessage extends + com.google.protobuf.GeneratedMessageLite + implements AskKickPlayerMessageOrBuilder { + // Use AskKickPlayerMessage.newBuilder() to construct. + private AskKickPlayerMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private AskKickPlayerMessage(boolean noInit) {} + + private static final AskKickPlayerMessage defaultInstance; + public static AskKickPlayerMessage getDefaultInstance() { + return defaultInstance; + } + + public AskKickPlayerMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private AskKickPlayerMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -29697,187 +37076,72 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:AskKickPlayerMessage) } - - static { - defaultInstance = new AskKickPlayerMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:AskKickPlayerMessage) - } - - public interface AskKickDeniedMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 playerId = 2; - boolean hasPlayerId(); - int getPlayerId(); - - // required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; - boolean hasKickDeniedReason(); - de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason getKickDeniedReason(); - } - public static final class AskKickDeniedMessage extends - com.google.protobuf.GeneratedMessageLite - implements AskKickDeniedMessageOrBuilder { - // Use AskKickDeniedMessage.newBuilder() to construct. - private AskKickDeniedMessage(Builder builder) { - super(builder); - } - private AskKickDeniedMessage(boolean noInit) {} - - private static final AskKickDeniedMessage defaultInstance; - public static AskKickDeniedMessage getDefaultInstance() { - return defaultInstance; - } - - public AskKickDeniedMessage getDefaultInstanceForType() { - return defaultInstance; - } - - public enum KickDeniedReason - implements com.google.protobuf.Internal.EnumLite { - kickDeniedInvalidGameState(0, 0), - kickDeniedNotPossible(1, 1), - kickDeniedTryAgainLater(2, 2), - kickDeniedAlreadyInProgress(3, 3), - kickDeniedInvalidPlayerId(4, 4), - ; - - public static final int kickDeniedInvalidGameState_VALUE = 0; - public static final int kickDeniedNotPossible_VALUE = 1; - public static final int kickDeniedTryAgainLater_VALUE = 2; - public static final int kickDeniedAlreadyInProgress_VALUE = 3; - public static final int kickDeniedInvalidPlayerId_VALUE = 4; - - - public final int getNumber() { return value; } - - public static KickDeniedReason valueOf(int value) { - switch (value) { - case 0: return kickDeniedInvalidGameState; - case 1: return kickDeniedNotPossible; - case 2: return kickDeniedTryAgainLater; - case 3: return kickDeniedAlreadyInProgress; - case 4: return kickDeniedInvalidPlayerId; - default: return null; - } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AskKickPlayerMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AskKickPlayerMessage(input, extensionRegistry); } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public KickDeniedReason findValueByNumber(int number) { - return KickDeniedReason.valueOf(number); - } - }; - - private final int value; - - private KickDeniedReason(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:AskKickDeniedMessage.KickDeniedReason) + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 playerId = 2; public static final int PLAYERID_FIELD_NUMBER = 2; private int playerId_; + /** + * required uint32 playerId = 2; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 playerId = 2; + */ public int getPlayerId() { return playerId_; } - - // required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; - public static final int KICKDENIEDREASON_FIELD_NUMBER = 3; - private de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason kickDeniedReason_; - public boolean hasKickDeniedReason() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason getKickDeniedReason() { - return kickDeniedReason_; - } - + private void initFields() { gameId_ = 0; playerId_ = 0; - kickDeniedReason_ = de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason.kickDeniedInvalidGameState; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -29886,14 +37150,10 @@ public final class ProtoBuf { memoizedIsInitialized = 0; return false; } - if (!hasKickDeniedReason()) { - memoizedIsInitialized = 0; - return false; - } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -29903,16 +37163,13 @@ public final class ProtoBuf { if (((bitField0_ & 0x00000002) == 0x00000002)) { output.writeUInt32(2, playerId_); } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeEnum(3, kickDeniedReason_.getNumber()); - } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -29922,149 +37179,122 @@ public final class ProtoBuf { size += com.google.protobuf.CodedOutputStream .computeUInt32Size(2, playerId_); } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(3, kickDeniedReason_.getNumber()); - } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code AskKickPlayerMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.AskKickDeniedMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.AskKickPlayerMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); playerId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); - kickDeniedReason_ = de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason.kickDeniedInvalidGameState; - bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage build() { - de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage build() { + de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage result = new de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage(this); + + public de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage result = new de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -30075,28 +37305,21 @@ public final class ProtoBuf { to_bitField0_ |= 0x00000002; } result.playerId_ = playerId_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.kickDeniedReason_ = kickDeniedReason_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } if (other.hasPlayerId()) { setPlayerId(other.getPlayerId()); } - if (other.hasKickDeniedReason()) { - setKickDeniedReason(other.getKickDeniedReason()); - } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -30106,27 +37329,178 @@ public final class ProtoBuf { return false; } - if (!hasKickDeniedReason()) { - - return false; - } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:AskKickPlayerMessage) + } + + static { + defaultInstance = new AskKickPlayerMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:AskKickPlayerMessage) + } + + public interface AskKickDeniedMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 playerId = 2; + /** + * required uint32 playerId = 2; + */ + boolean hasPlayerId(); + /** + * required uint32 playerId = 2; + */ + int getPlayerId(); + + // required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; + /** + * required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; + */ + boolean hasKickDeniedReason(); + /** + * required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; + */ + de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason getKickDeniedReason(); + } + /** + * Protobuf type {@code AskKickDeniedMessage} + */ + public static final class AskKickDeniedMessage extends + com.google.protobuf.GeneratedMessageLite + implements AskKickDeniedMessageOrBuilder { + // Use AskKickDeniedMessage.newBuilder() to construct. + private AskKickDeniedMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private AskKickDeniedMessage(boolean noInit) {} + + private static final AskKickDeniedMessage defaultInstance; + public static AskKickDeniedMessage getDefaultInstance() { + return defaultInstance; + } + + public AskKickDeniedMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private AskKickDeniedMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -30151,234 +37525,188 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AskKickDeniedMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AskKickDeniedMessage(input, extensionRegistry); } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 playerId = 2; - private int playerId_ ; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - public Builder setPlayerId(int value) { - bitField0_ |= 0x00000002; - playerId_ = value; - - return this; - } - public Builder clearPlayerId() { - bitField0_ = (bitField0_ & ~0x00000002); - playerId_ = 0; - - return this; - } - - // required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; - private de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason kickDeniedReason_ = de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason.kickDeniedInvalidGameState; - public boolean hasKickDeniedReason() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason getKickDeniedReason() { - return kickDeniedReason_; - } - public Builder setKickDeniedReason(de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason value) { - if (value == null) { - throw new NullPointerException(); + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code AskKickDeniedMessage.KickDeniedReason} + */ + public enum KickDeniedReason + implements com.google.protobuf.Internal.EnumLite { + /** + * kickDeniedInvalidGameState = 0; + */ + kickDeniedInvalidGameState(0, 0), + /** + * kickDeniedNotPossible = 1; + */ + kickDeniedNotPossible(1, 1), + /** + * kickDeniedTryAgainLater = 2; + */ + kickDeniedTryAgainLater(2, 2), + /** + * kickDeniedAlreadyInProgress = 3; + */ + kickDeniedAlreadyInProgress(3, 3), + /** + * kickDeniedInvalidPlayerId = 4; + */ + kickDeniedInvalidPlayerId(4, 4), + ; + + /** + * kickDeniedInvalidGameState = 0; + */ + public static final int kickDeniedInvalidGameState_VALUE = 0; + /** + * kickDeniedNotPossible = 1; + */ + public static final int kickDeniedNotPossible_VALUE = 1; + /** + * kickDeniedTryAgainLater = 2; + */ + public static final int kickDeniedTryAgainLater_VALUE = 2; + /** + * kickDeniedAlreadyInProgress = 3; + */ + public static final int kickDeniedAlreadyInProgress_VALUE = 3; + /** + * kickDeniedInvalidPlayerId = 4; + */ + public static final int kickDeniedInvalidPlayerId_VALUE = 4; + + + public final int getNumber() { return value; } + + public static KickDeniedReason valueOf(int value) { + switch (value) { + case 0: return kickDeniedInvalidGameState; + case 1: return kickDeniedNotPossible; + case 2: return kickDeniedTryAgainLater; + case 3: return kickDeniedAlreadyInProgress; + case 4: return kickDeniedInvalidPlayerId; + default: return null; } - bitField0_ |= 0x00000004; - kickDeniedReason_ = value; - - return this; } - public Builder clearKickDeniedReason() { - bitField0_ = (bitField0_ & ~0x00000004); - kickDeniedReason_ = de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason.kickDeniedInvalidGameState; - - return this; + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; } - - // @@protoc_insertion_point(builder_scope:AskKickDeniedMessage) + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public KickDeniedReason findValueByNumber(int number) { + return KickDeniedReason.valueOf(number); + } + }; + + private final int value; + + private KickDeniedReason(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:AskKickDeniedMessage.KickDeniedReason) } - - static { - defaultInstance = new AskKickDeniedMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:AskKickDeniedMessage) - } - - public interface StartKickPetitionMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 petitionId = 2; - boolean hasPetitionId(); - int getPetitionId(); - - // required uint32 proposingPlayerId = 3; - boolean hasProposingPlayerId(); - int getProposingPlayerId(); - - // required uint32 kickPlayerId = 4; - boolean hasKickPlayerId(); - int getKickPlayerId(); - - // required uint32 kickTimeoutSec = 5; - boolean hasKickTimeoutSec(); - int getKickTimeoutSec(); - - // required uint32 numVotesNeededToKick = 6; - boolean hasNumVotesNeededToKick(); - int getNumVotesNeededToKick(); - } - public static final class StartKickPetitionMessage extends - com.google.protobuf.GeneratedMessageLite - implements StartKickPetitionMessageOrBuilder { - // Use StartKickPetitionMessage.newBuilder() to construct. - private StartKickPetitionMessage(Builder builder) { - super(builder); - } - private StartKickPetitionMessage(boolean noInit) {} - - private static final StartKickPetitionMessage defaultInstance; - public static StartKickPetitionMessage getDefaultInstance() { - return defaultInstance; - } - - public StartKickPetitionMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - - // required uint32 petitionId = 2; - public static final int PETITIONID_FIELD_NUMBER = 2; - private int petitionId_; - public boolean hasPetitionId() { + + // required uint32 playerId = 2; + public static final int PLAYERID_FIELD_NUMBER = 2; + private int playerId_; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public int getPetitionId() { - return petitionId_; + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; } - - // required uint32 proposingPlayerId = 3; - public static final int PROPOSINGPLAYERID_FIELD_NUMBER = 3; - private int proposingPlayerId_; - public boolean hasProposingPlayerId() { + + // required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; + public static final int KICKDENIEDREASON_FIELD_NUMBER = 3; + private de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason kickDeniedReason_; + /** + * required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; + */ + public boolean hasKickDeniedReason() { return ((bitField0_ & 0x00000004) == 0x00000004); } - public int getProposingPlayerId() { - return proposingPlayerId_; + /** + * required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; + */ + public de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason getKickDeniedReason() { + return kickDeniedReason_; } - - // required uint32 kickPlayerId = 4; - public static final int KICKPLAYERID_FIELD_NUMBER = 4; - private int kickPlayerId_; - public boolean hasKickPlayerId() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public int getKickPlayerId() { - return kickPlayerId_; - } - - // required uint32 kickTimeoutSec = 5; - public static final int KICKTIMEOUTSEC_FIELD_NUMBER = 5; - private int kickTimeoutSec_; - public boolean hasKickTimeoutSec() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - public int getKickTimeoutSec() { - return kickTimeoutSec_; - } - - // required uint32 numVotesNeededToKick = 6; - public static final int NUMVOTESNEEDEDTOKICK_FIELD_NUMBER = 6; - private int numVotesNeededToKick_; - public boolean hasNumVotesNeededToKick() { - return ((bitField0_ & 0x00000020) == 0x00000020); - } - public int getNumVotesNeededToKick() { - return numVotesNeededToKick_; - } - + private void initFields() { gameId_ = 0; - petitionId_ = 0; - proposingPlayerId_ = 0; - kickPlayerId_ = 0; - kickTimeoutSec_ = 0; - numVotesNeededToKick_ = 0; + playerId_ = 0; + kickDeniedReason_ = de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason.kickDeniedInvalidGameState; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; } - if (!hasPetitionId()) { + if (!hasPlayerId()) { memoizedIsInitialized = 0; return false; } - if (!hasProposingPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasKickPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasKickTimeoutSec()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasNumVotesNeededToKick()) { + if (!hasKickDeniedReason()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -30386,27 +37714,18 @@ public final class ProtoBuf { output.writeUInt32(1, gameId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, petitionId_); + output.writeUInt32(2, playerId_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeUInt32(3, proposingPlayerId_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeUInt32(4, kickPlayerId_); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - output.writeUInt32(5, kickTimeoutSec_); - } - if (((bitField0_ & 0x00000020) == 0x00000020)) { - output.writeUInt32(6, numVotesNeededToKick_); + output.writeEnum(3, kickDeniedReason_.getNumber()); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -30414,169 +37733,130 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, petitionId_); + .computeUInt32Size(2, playerId_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(3, proposingPlayerId_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(4, kickPlayerId_); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(5, kickTimeoutSec_); - } - if (((bitField0_ & 0x00000020) == 0x00000020)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(6, numVotesNeededToKick_); + .computeEnumSize(3, kickDeniedReason_.getNumber()); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code AskKickDeniedMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.StartKickPetitionMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.AskKickDeniedMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - petitionId_ = 0; + playerId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); - proposingPlayerId_ = 0; + kickDeniedReason_ = de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason.kickDeniedInvalidGameState; bitField0_ = (bitField0_ & ~0x00000004); - kickPlayerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000008); - kickTimeoutSec_ = 0; - bitField0_ = (bitField0_ & ~0x00000010); - numVotesNeededToKick_ = 0; - bitField0_ = (bitField0_ & ~0x00000020); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage build() { - de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage build() { + de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage result = new de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage(this); + + public de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage result = new de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -30586,92 +37866,280 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.petitionId_ = petitionId_; + result.playerId_ = playerId_; if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } - result.proposingPlayerId_ = proposingPlayerId_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.kickPlayerId_ = kickPlayerId_; - if (((from_bitField0_ & 0x00000010) == 0x00000010)) { - to_bitField0_ |= 0x00000010; - } - result.kickTimeoutSec_ = kickTimeoutSec_; - if (((from_bitField0_ & 0x00000020) == 0x00000020)) { - to_bitField0_ |= 0x00000020; - } - result.numVotesNeededToKick_ = numVotesNeededToKick_; + result.kickDeniedReason_ = kickDeniedReason_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } - if (other.hasPetitionId()) { - setPetitionId(other.getPetitionId()); + if (other.hasPlayerId()) { + setPlayerId(other.getPlayerId()); } - if (other.hasProposingPlayerId()) { - setProposingPlayerId(other.getProposingPlayerId()); - } - if (other.hasKickPlayerId()) { - setKickPlayerId(other.getKickPlayerId()); - } - if (other.hasKickTimeoutSec()) { - setKickTimeoutSec(other.getKickTimeoutSec()); - } - if (other.hasNumVotesNeededToKick()) { - setNumVotesNeededToKick(other.getNumVotesNeededToKick()); + if (other.hasKickDeniedReason()) { + setKickDeniedReason(other.getKickDeniedReason()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { return false; } - if (!hasPetitionId()) { + if (!hasPlayerId()) { return false; } - if (!hasProposingPlayerId()) { - - return false; - } - if (!hasKickPlayerId()) { - - return false; - } - if (!hasKickTimeoutSec()) { - - return false; - } - if (!hasNumVotesNeededToKick()) { + if (!hasKickDeniedReason()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 playerId = 2; + private int playerId_ ; + /** + * required uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + /** + * required uint32 playerId = 2; + */ + public Builder setPlayerId(int value) { + bitField0_ |= 0x00000002; + playerId_ = value; + + return this; + } + /** + * required uint32 playerId = 2; + */ + public Builder clearPlayerId() { + bitField0_ = (bitField0_ & ~0x00000002); + playerId_ = 0; + + return this; + } + + // required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; + private de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason kickDeniedReason_ = de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason.kickDeniedInvalidGameState; + /** + * required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; + */ + public boolean hasKickDeniedReason() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; + */ + public de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason getKickDeniedReason() { + return kickDeniedReason_; + } + /** + * required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; + */ + public Builder setKickDeniedReason(de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + kickDeniedReason_ = value; + + return this; + } + /** + * required .AskKickDeniedMessage.KickDeniedReason kickDeniedReason = 3; + */ + public Builder clearKickDeniedReason() { + bitField0_ = (bitField0_ & ~0x00000004); + kickDeniedReason_ = de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.KickDeniedReason.kickDeniedInvalidGameState; + + return this; + } + + // @@protoc_insertion_point(builder_scope:AskKickDeniedMessage) + } + + static { + defaultInstance = new AskKickDeniedMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:AskKickDeniedMessage) + } + + public interface StartKickPetitionMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 petitionId = 2; + /** + * required uint32 petitionId = 2; + */ + boolean hasPetitionId(); + /** + * required uint32 petitionId = 2; + */ + int getPetitionId(); + + // required uint32 proposingPlayerId = 3; + /** + * required uint32 proposingPlayerId = 3; + */ + boolean hasProposingPlayerId(); + /** + * required uint32 proposingPlayerId = 3; + */ + int getProposingPlayerId(); + + // required uint32 kickPlayerId = 4; + /** + * required uint32 kickPlayerId = 4; + */ + boolean hasKickPlayerId(); + /** + * required uint32 kickPlayerId = 4; + */ + int getKickPlayerId(); + + // required uint32 kickTimeoutSec = 5; + /** + * required uint32 kickTimeoutSec = 5; + */ + boolean hasKickTimeoutSec(); + /** + * required uint32 kickTimeoutSec = 5; + */ + int getKickTimeoutSec(); + + // required uint32 numVotesNeededToKick = 6; + /** + * required uint32 numVotesNeededToKick = 6; + */ + boolean hasNumVotesNeededToKick(); + /** + * required uint32 numVotesNeededToKick = 6; + */ + int getNumVotesNeededToKick(); + } + /** + * Protobuf type {@code StartKickPetitionMessage} + */ + public static final class StartKickPetitionMessage extends + com.google.protobuf.GeneratedMessageLite + implements StartKickPetitionMessageOrBuilder { + // Use StartKickPetitionMessage.newBuilder() to construct. + private StartKickPetitionMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private StartKickPetitionMessage(boolean noInit) {} + + private static final StartKickPetitionMessage defaultInstance; + public static StartKickPetitionMessage getDefaultInstance() { + return defaultInstance; + } + + public StartKickPetitionMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private StartKickPetitionMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -30707,221 +38175,140 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 petitionId = 2; - private int petitionId_ ; - public boolean hasPetitionId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPetitionId() { - return petitionId_; - } - public Builder setPetitionId(int value) { - bitField0_ |= 0x00000002; - petitionId_ = value; - - return this; - } - public Builder clearPetitionId() { - bitField0_ = (bitField0_ & ~0x00000002); - petitionId_ = 0; - - return this; - } - - // required uint32 proposingPlayerId = 3; - private int proposingPlayerId_ ; - public boolean hasProposingPlayerId() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public int getProposingPlayerId() { - return proposingPlayerId_; - } - public Builder setProposingPlayerId(int value) { - bitField0_ |= 0x00000004; - proposingPlayerId_ = value; - - return this; - } - public Builder clearProposingPlayerId() { - bitField0_ = (bitField0_ & ~0x00000004); - proposingPlayerId_ = 0; - - return this; - } - - // required uint32 kickPlayerId = 4; - private int kickPlayerId_ ; - public boolean hasKickPlayerId() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public int getKickPlayerId() { - return kickPlayerId_; - } - public Builder setKickPlayerId(int value) { - bitField0_ |= 0x00000008; - kickPlayerId_ = value; - - return this; - } - public Builder clearKickPlayerId() { - bitField0_ = (bitField0_ & ~0x00000008); - kickPlayerId_ = 0; - - return this; - } - - // required uint32 kickTimeoutSec = 5; - private int kickTimeoutSec_ ; - public boolean hasKickTimeoutSec() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - public int getKickTimeoutSec() { - return kickTimeoutSec_; - } - public Builder setKickTimeoutSec(int value) { - bitField0_ |= 0x00000010; - kickTimeoutSec_ = value; - - return this; - } - public Builder clearKickTimeoutSec() { - bitField0_ = (bitField0_ & ~0x00000010); - kickTimeoutSec_ = 0; - - return this; - } - - // required uint32 numVotesNeededToKick = 6; - private int numVotesNeededToKick_ ; - public boolean hasNumVotesNeededToKick() { - return ((bitField0_ & 0x00000020) == 0x00000020); - } - public int getNumVotesNeededToKick() { - return numVotesNeededToKick_; - } - public Builder setNumVotesNeededToKick(int value) { - bitField0_ |= 0x00000020; - numVotesNeededToKick_ = value; - - return this; - } - public Builder clearNumVotesNeededToKick() { - bitField0_ = (bitField0_ & ~0x00000020); - numVotesNeededToKick_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:StartKickPetitionMessage) } - - static { - defaultInstance = new StartKickPetitionMessage(true); - defaultInstance.initFields(); + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public StartKickPetitionMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new StartKickPetitionMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - - // @@protoc_insertion_point(class_scope:StartKickPetitionMessage) - } - - public interface VoteKickRequestMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 petitionId = 2; - boolean hasPetitionId(); - int getPetitionId(); - - // required bool voteKick = 3; - boolean hasVoteKick(); - boolean getVoteKick(); - } - public static final class VoteKickRequestMessage extends - com.google.protobuf.GeneratedMessageLite - implements VoteKickRequestMessageOrBuilder { - // Use VoteKickRequestMessage.newBuilder() to construct. - private VoteKickRequestMessage(Builder builder) { - super(builder); - } - private VoteKickRequestMessage(boolean noInit) {} - - private static final VoteKickRequestMessage defaultInstance; - public static VoteKickRequestMessage getDefaultInstance() { - return defaultInstance; - } - - public VoteKickRequestMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 petitionId = 2; public static final int PETITIONID_FIELD_NUMBER = 2; private int petitionId_; + /** + * required uint32 petitionId = 2; + */ public boolean hasPetitionId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 petitionId = 2; + */ public int getPetitionId() { return petitionId_; } - - // required bool voteKick = 3; - public static final int VOTEKICK_FIELD_NUMBER = 3; - private boolean voteKick_; - public boolean hasVoteKick() { + + // required uint32 proposingPlayerId = 3; + public static final int PROPOSINGPLAYERID_FIELD_NUMBER = 3; + private int proposingPlayerId_; + /** + * required uint32 proposingPlayerId = 3; + */ + public boolean hasProposingPlayerId() { return ((bitField0_ & 0x00000004) == 0x00000004); } - public boolean getVoteKick() { - return voteKick_; + /** + * required uint32 proposingPlayerId = 3; + */ + public int getProposingPlayerId() { + return proposingPlayerId_; } - + + // required uint32 kickPlayerId = 4; + public static final int KICKPLAYERID_FIELD_NUMBER = 4; + private int kickPlayerId_; + /** + * required uint32 kickPlayerId = 4; + */ + public boolean hasKickPlayerId() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required uint32 kickPlayerId = 4; + */ + public int getKickPlayerId() { + return kickPlayerId_; + } + + // required uint32 kickTimeoutSec = 5; + public static final int KICKTIMEOUTSEC_FIELD_NUMBER = 5; + private int kickTimeoutSec_; + /** + * required uint32 kickTimeoutSec = 5; + */ + public boolean hasKickTimeoutSec() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required uint32 kickTimeoutSec = 5; + */ + public int getKickTimeoutSec() { + return kickTimeoutSec_; + } + + // required uint32 numVotesNeededToKick = 6; + public static final int NUMVOTESNEEDEDTOKICK_FIELD_NUMBER = 6; + private int numVotesNeededToKick_; + /** + * required uint32 numVotesNeededToKick = 6; + */ + public boolean hasNumVotesNeededToKick() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required uint32 numVotesNeededToKick = 6; + */ + public int getNumVotesNeededToKick() { + return numVotesNeededToKick_; + } + private void initFields() { gameId_ = 0; petitionId_ = 0; - voteKick_ = false; + proposingPlayerId_ = 0; + kickPlayerId_ = 0; + kickTimeoutSec_ = 0; + numVotesNeededToKick_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -30930,14 +38317,26 @@ public final class ProtoBuf { memoizedIsInitialized = 0; return false; } - if (!hasVoteKick()) { + if (!hasProposingPlayerId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasKickPlayerId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasKickTimeoutSec()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasNumVotesNeededToKick()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -30948,15 +38347,24 @@ public final class ProtoBuf { output.writeUInt32(2, petitionId_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeBool(3, voteKick_); + output.writeUInt32(3, proposingPlayerId_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeUInt32(4, kickPlayerId_); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeUInt32(5, kickTimeoutSec_); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeUInt32(6, numVotesNeededToKick_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -30968,147 +38376,144 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(3, voteKick_); + .computeUInt32Size(3, proposingPlayerId_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(4, kickPlayerId_); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(5, kickTimeoutSec_); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(6, numVotesNeededToKick_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code StartKickPetitionMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.VoteKickRequestMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.StartKickPetitionMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); petitionId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); - voteKick_ = false; + proposingPlayerId_ = 0; bitField0_ = (bitField0_ & ~0x00000004); + kickPlayerId_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + kickTimeoutSec_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + numVotesNeededToKick_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage build() { - de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage build() { + de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage result = new de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage(this); + + public de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage result = new de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -31122,25 +38527,46 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } - result.voteKick_ = voteKick_; + result.proposingPlayerId_ = proposingPlayerId_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.kickPlayerId_ = kickPlayerId_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.kickTimeoutSec_ = kickTimeoutSec_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.numVotesNeededToKick_ = numVotesNeededToKick_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } if (other.hasPetitionId()) { setPetitionId(other.getPetitionId()); } - if (other.hasVoteKick()) { - setVoteKick(other.getVoteKick()); + if (other.hasProposingPlayerId()) { + setProposingPlayerId(other.getProposingPlayerId()); + } + if (other.hasKickPlayerId()) { + setKickPlayerId(other.getKickPlayerId()); + } + if (other.hasKickTimeoutSec()) { + setKickTimeoutSec(other.getKickTimeoutSec()); + } + if (other.hasNumVotesNeededToKick()) { + setNumVotesNeededToKick(other.getNumVotesNeededToKick()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -31150,27 +38576,326 @@ public final class ProtoBuf { return false; } - if (!hasVoteKick()) { + if (!hasProposingPlayerId()) { + + return false; + } + if (!hasKickPlayerId()) { + + return false; + } + if (!hasKickTimeoutSec()) { + + return false; + } + if (!hasNumVotesNeededToKick()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 petitionId = 2; + private int petitionId_ ; + /** + * required uint32 petitionId = 2; + */ + public boolean hasPetitionId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 petitionId = 2; + */ + public int getPetitionId() { + return petitionId_; + } + /** + * required uint32 petitionId = 2; + */ + public Builder setPetitionId(int value) { + bitField0_ |= 0x00000002; + petitionId_ = value; + + return this; + } + /** + * required uint32 petitionId = 2; + */ + public Builder clearPetitionId() { + bitField0_ = (bitField0_ & ~0x00000002); + petitionId_ = 0; + + return this; + } + + // required uint32 proposingPlayerId = 3; + private int proposingPlayerId_ ; + /** + * required uint32 proposingPlayerId = 3; + */ + public boolean hasProposingPlayerId() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required uint32 proposingPlayerId = 3; + */ + public int getProposingPlayerId() { + return proposingPlayerId_; + } + /** + * required uint32 proposingPlayerId = 3; + */ + public Builder setProposingPlayerId(int value) { + bitField0_ |= 0x00000004; + proposingPlayerId_ = value; + + return this; + } + /** + * required uint32 proposingPlayerId = 3; + */ + public Builder clearProposingPlayerId() { + bitField0_ = (bitField0_ & ~0x00000004); + proposingPlayerId_ = 0; + + return this; + } + + // required uint32 kickPlayerId = 4; + private int kickPlayerId_ ; + /** + * required uint32 kickPlayerId = 4; + */ + public boolean hasKickPlayerId() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required uint32 kickPlayerId = 4; + */ + public int getKickPlayerId() { + return kickPlayerId_; + } + /** + * required uint32 kickPlayerId = 4; + */ + public Builder setKickPlayerId(int value) { + bitField0_ |= 0x00000008; + kickPlayerId_ = value; + + return this; + } + /** + * required uint32 kickPlayerId = 4; + */ + public Builder clearKickPlayerId() { + bitField0_ = (bitField0_ & ~0x00000008); + kickPlayerId_ = 0; + + return this; + } + + // required uint32 kickTimeoutSec = 5; + private int kickTimeoutSec_ ; + /** + * required uint32 kickTimeoutSec = 5; + */ + public boolean hasKickTimeoutSec() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required uint32 kickTimeoutSec = 5; + */ + public int getKickTimeoutSec() { + return kickTimeoutSec_; + } + /** + * required uint32 kickTimeoutSec = 5; + */ + public Builder setKickTimeoutSec(int value) { + bitField0_ |= 0x00000010; + kickTimeoutSec_ = value; + + return this; + } + /** + * required uint32 kickTimeoutSec = 5; + */ + public Builder clearKickTimeoutSec() { + bitField0_ = (bitField0_ & ~0x00000010); + kickTimeoutSec_ = 0; + + return this; + } + + // required uint32 numVotesNeededToKick = 6; + private int numVotesNeededToKick_ ; + /** + * required uint32 numVotesNeededToKick = 6; + */ + public boolean hasNumVotesNeededToKick() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required uint32 numVotesNeededToKick = 6; + */ + public int getNumVotesNeededToKick() { + return numVotesNeededToKick_; + } + /** + * required uint32 numVotesNeededToKick = 6; + */ + public Builder setNumVotesNeededToKick(int value) { + bitField0_ |= 0x00000020; + numVotesNeededToKick_ = value; + + return this; + } + /** + * required uint32 numVotesNeededToKick = 6; + */ + public Builder clearNumVotesNeededToKick() { + bitField0_ = (bitField0_ & ~0x00000020); + numVotesNeededToKick_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:StartKickPetitionMessage) + } + + static { + defaultInstance = new StartKickPetitionMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:StartKickPetitionMessage) + } + + public interface VoteKickRequestMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 petitionId = 2; + /** + * required uint32 petitionId = 2; + */ + boolean hasPetitionId(); + /** + * required uint32 petitionId = 2; + */ + int getPetitionId(); + + // required bool voteKick = 3; + /** + * required bool voteKick = 3; + */ + boolean hasVoteKick(); + /** + * required bool voteKick = 3; + */ + boolean getVoteKick(); + } + /** + * Protobuf type {@code VoteKickRequestMessage} + */ + public static final class VoteKickRequestMessage extends + com.google.protobuf.GeneratedMessageLite + implements VoteKickRequestMessageOrBuilder { + // Use VoteKickRequestMessage.newBuilder() to construct. + private VoteKickRequestMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private VoteKickRequestMessage(boolean noInit) {} + + private static final VoteKickRequestMessage defaultInstance; + public static VoteKickRequestMessage getDefaultInstance() { + return defaultInstance; + } + + public VoteKickRequestMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private VoteKickRequestMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -31191,202 +38916,89 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 petitionId = 2; - private int petitionId_ ; - public boolean hasPetitionId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPetitionId() { - return petitionId_; - } - public Builder setPetitionId(int value) { - bitField0_ |= 0x00000002; - petitionId_ = value; - - return this; - } - public Builder clearPetitionId() { - bitField0_ = (bitField0_ & ~0x00000002); - petitionId_ = 0; - - return this; - } - - // required bool voteKick = 3; - private boolean voteKick_ ; - public boolean hasVoteKick() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public boolean getVoteKick() { - return voteKick_; - } - public Builder setVoteKick(boolean value) { - bitField0_ |= 0x00000004; - voteKick_ = value; - - return this; - } - public Builder clearVoteKick() { - bitField0_ = (bitField0_ & ~0x00000004); - voteKick_ = false; - - return this; - } - - // @@protoc_insertion_point(builder_scope:VoteKickRequestMessage) } - - static { - defaultInstance = new VoteKickRequestMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:VoteKickRequestMessage) - } - - public interface VoteKickReplyMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 petitionId = 2; - boolean hasPetitionId(); - int getPetitionId(); - - // required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; - boolean hasVoteKickReplyType(); - de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType getVoteKickReplyType(); - } - public static final class VoteKickReplyMessage extends - com.google.protobuf.GeneratedMessageLite - implements VoteKickReplyMessageOrBuilder { - // Use VoteKickReplyMessage.newBuilder() to construct. - private VoteKickReplyMessage(Builder builder) { - super(builder); - } - private VoteKickReplyMessage(boolean noInit) {} - - private static final VoteKickReplyMessage defaultInstance; - public static VoteKickReplyMessage getDefaultInstance() { - return defaultInstance; - } - - public VoteKickReplyMessage getDefaultInstanceForType() { - return defaultInstance; - } - - public enum VoteKickReplyType - implements com.google.protobuf.Internal.EnumLite { - voteKickAck(0, 0), - voteKickDeniedInvalid(1, 1), - voteKickDeniedAlreadyVoted(2, 2), - ; - - public static final int voteKickAck_VALUE = 0; - public static final int voteKickDeniedInvalid_VALUE = 1; - public static final int voteKickDeniedAlreadyVoted_VALUE = 2; - - - public final int getNumber() { return value; } - - public static VoteKickReplyType valueOf(int value) { - switch (value) { - case 0: return voteKickAck; - case 1: return voteKickDeniedInvalid; - case 2: return voteKickDeniedAlreadyVoted; - default: return null; - } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public VoteKickRequestMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new VoteKickRequestMessage(input, extensionRegistry); } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public VoteKickReplyType findValueByNumber(int number) { - return VoteKickReplyType.valueOf(number); - } - }; - - private final int value; - - private VoteKickReplyType(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:VoteKickReplyMessage.VoteKickReplyType) + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 petitionId = 2; public static final int PETITIONID_FIELD_NUMBER = 2; private int petitionId_; + /** + * required uint32 petitionId = 2; + */ public boolean hasPetitionId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 petitionId = 2; + */ public int getPetitionId() { return petitionId_; } - - // required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; - public static final int VOTEKICKREPLYTYPE_FIELD_NUMBER = 3; - private de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType voteKickReplyType_; - public boolean hasVoteKickReplyType() { + + // required bool voteKick = 3; + public static final int VOTEKICK_FIELD_NUMBER = 3; + private boolean voteKick_; + /** + * required bool voteKick = 3; + */ + public boolean hasVoteKick() { return ((bitField0_ & 0x00000004) == 0x00000004); } - public de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType getVoteKickReplyType() { - return voteKickReplyType_; + /** + * required bool voteKick = 3; + */ + public boolean getVoteKick() { + return voteKick_; } - + private void initFields() { gameId_ = 0; petitionId_ = 0; - voteKickReplyType_ = de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType.voteKickAck; + voteKick_ = false; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -31395,14 +39007,14 @@ public final class ProtoBuf { memoizedIsInitialized = 0; return false; } - if (!hasVoteKickReplyType()) { + if (!hasVoteKick()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -31413,15 +39025,15 @@ public final class ProtoBuf { output.writeUInt32(2, petitionId_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeEnum(3, voteKickReplyType_.getNumber()); + output.writeBool(3, voteKick_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -31433,147 +39045,126 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(3, voteKickReplyType_.getNumber()); + .computeBoolSize(3, voteKick_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code VoteKickRequestMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.VoteKickReplyMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.VoteKickRequestMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); petitionId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); - voteKickReplyType_ = de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType.voteKickAck; + voteKick_ = false; bitField0_ = (bitField0_ & ~0x00000004); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage build() { - de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage build() { + de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage result = new de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage(this); + + public de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage result = new de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -31587,25 +39178,25 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } - result.voteKickReplyType_ = voteKickReplyType_; + result.voteKick_ = voteKick_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } if (other.hasPetitionId()) { setPetitionId(other.getPetitionId()); } - if (other.hasVoteKickReplyType()) { - setVoteKickReplyType(other.getVoteKickReplyType()); + if (other.hasVoteKick()) { + setVoteKick(other.getVoteKick()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -31615,27 +39206,215 @@ public final class ProtoBuf { return false; } - if (!hasVoteKickReplyType()) { + if (!hasVoteKick()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 petitionId = 2; + private int petitionId_ ; + /** + * required uint32 petitionId = 2; + */ + public boolean hasPetitionId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 petitionId = 2; + */ + public int getPetitionId() { + return petitionId_; + } + /** + * required uint32 petitionId = 2; + */ + public Builder setPetitionId(int value) { + bitField0_ |= 0x00000002; + petitionId_ = value; + + return this; + } + /** + * required uint32 petitionId = 2; + */ + public Builder clearPetitionId() { + bitField0_ = (bitField0_ & ~0x00000002); + petitionId_ = 0; + + return this; + } + + // required bool voteKick = 3; + private boolean voteKick_ ; + /** + * required bool voteKick = 3; + */ + public boolean hasVoteKick() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required bool voteKick = 3; + */ + public boolean getVoteKick() { + return voteKick_; + } + /** + * required bool voteKick = 3; + */ + public Builder setVoteKick(boolean value) { + bitField0_ |= 0x00000004; + voteKick_ = value; + + return this; + } + /** + * required bool voteKick = 3; + */ + public Builder clearVoteKick() { + bitField0_ = (bitField0_ & ~0x00000004); + voteKick_ = false; + + return this; + } + + // @@protoc_insertion_point(builder_scope:VoteKickRequestMessage) + } + + static { + defaultInstance = new VoteKickRequestMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:VoteKickRequestMessage) + } + + public interface VoteKickReplyMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 petitionId = 2; + /** + * required uint32 petitionId = 2; + */ + boolean hasPetitionId(); + /** + * required uint32 petitionId = 2; + */ + int getPetitionId(); + + // required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; + /** + * required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; + */ + boolean hasVoteKickReplyType(); + /** + * required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; + */ + de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType getVoteKickReplyType(); + } + /** + * Protobuf type {@code VoteKickReplyMessage} + */ + public static final class VoteKickReplyMessage extends + com.google.protobuf.GeneratedMessageLite + implements VoteKickReplyMessageOrBuilder { + // Use VoteKickReplyMessage.newBuilder() to construct. + private VoteKickReplyMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private VoteKickReplyMessage(boolean noInit) {} + + private static final VoteKickReplyMessage defaultInstance; + public static VoteKickReplyMessage getDefaultInstance() { + return defaultInstance; + } + + public VoteKickReplyMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private VoteKickReplyMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -31660,191 +39439,154 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public VoteKickReplyMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new VoteKickReplyMessage(input, extensionRegistry); } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 petitionId = 2; - private int petitionId_ ; - public boolean hasPetitionId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPetitionId() { - return petitionId_; - } - public Builder setPetitionId(int value) { - bitField0_ |= 0x00000002; - petitionId_ = value; - - return this; - } - public Builder clearPetitionId() { - bitField0_ = (bitField0_ & ~0x00000002); - petitionId_ = 0; - - return this; - } - - // required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; - private de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType voteKickReplyType_ = de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType.voteKickAck; - public boolean hasVoteKickReplyType() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType getVoteKickReplyType() { - return voteKickReplyType_; - } - public Builder setVoteKickReplyType(de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType value) { - if (value == null) { - throw new NullPointerException(); + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code VoteKickReplyMessage.VoteKickReplyType} + */ + public enum VoteKickReplyType + implements com.google.protobuf.Internal.EnumLite { + /** + * voteKickAck = 0; + */ + voteKickAck(0, 0), + /** + * voteKickDeniedInvalid = 1; + */ + voteKickDeniedInvalid(1, 1), + /** + * voteKickDeniedAlreadyVoted = 2; + */ + voteKickDeniedAlreadyVoted(2, 2), + ; + + /** + * voteKickAck = 0; + */ + public static final int voteKickAck_VALUE = 0; + /** + * voteKickDeniedInvalid = 1; + */ + public static final int voteKickDeniedInvalid_VALUE = 1; + /** + * voteKickDeniedAlreadyVoted = 2; + */ + public static final int voteKickDeniedAlreadyVoted_VALUE = 2; + + + public final int getNumber() { return value; } + + public static VoteKickReplyType valueOf(int value) { + switch (value) { + case 0: return voteKickAck; + case 1: return voteKickDeniedInvalid; + case 2: return voteKickDeniedAlreadyVoted; + default: return null; } - bitField0_ |= 0x00000004; - voteKickReplyType_ = value; - - return this; } - public Builder clearVoteKickReplyType() { - bitField0_ = (bitField0_ & ~0x00000004); - voteKickReplyType_ = de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType.voteKickAck; - - return this; + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; } - - // @@protoc_insertion_point(builder_scope:VoteKickReplyMessage) + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public VoteKickReplyType findValueByNumber(int number) { + return VoteKickReplyType.valueOf(number); + } + }; + + private final int value; + + private VoteKickReplyType(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:VoteKickReplyMessage.VoteKickReplyType) } - - static { - defaultInstance = new VoteKickReplyMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:VoteKickReplyMessage) - } - - public interface KickPetitionUpdateMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 petitionId = 2; - boolean hasPetitionId(); - int getPetitionId(); - - // required uint32 numVotesAgainstKicking = 3; - boolean hasNumVotesAgainstKicking(); - int getNumVotesAgainstKicking(); - - // required uint32 numVotesInFavourOfKicking = 4; - boolean hasNumVotesInFavourOfKicking(); - int getNumVotesInFavourOfKicking(); - - // required uint32 numVotesNeededToKick = 5; - boolean hasNumVotesNeededToKick(); - int getNumVotesNeededToKick(); - } - public static final class KickPetitionUpdateMessage extends - com.google.protobuf.GeneratedMessageLite - implements KickPetitionUpdateMessageOrBuilder { - // Use KickPetitionUpdateMessage.newBuilder() to construct. - private KickPetitionUpdateMessage(Builder builder) { - super(builder); - } - private KickPetitionUpdateMessage(boolean noInit) {} - - private static final KickPetitionUpdateMessage defaultInstance; - public static KickPetitionUpdateMessage getDefaultInstance() { - return defaultInstance; - } - - public KickPetitionUpdateMessage getDefaultInstanceForType() { - return defaultInstance; - } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 petitionId = 2; public static final int PETITIONID_FIELD_NUMBER = 2; private int petitionId_; + /** + * required uint32 petitionId = 2; + */ public boolean hasPetitionId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 petitionId = 2; + */ public int getPetitionId() { return petitionId_; } - - // required uint32 numVotesAgainstKicking = 3; - public static final int NUMVOTESAGAINSTKICKING_FIELD_NUMBER = 3; - private int numVotesAgainstKicking_; - public boolean hasNumVotesAgainstKicking() { + + // required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; + public static final int VOTEKICKREPLYTYPE_FIELD_NUMBER = 3; + private de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType voteKickReplyType_; + /** + * required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; + */ + public boolean hasVoteKickReplyType() { return ((bitField0_ & 0x00000004) == 0x00000004); } - public int getNumVotesAgainstKicking() { - return numVotesAgainstKicking_; + /** + * required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; + */ + public de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType getVoteKickReplyType() { + return voteKickReplyType_; } - - // required uint32 numVotesInFavourOfKicking = 4; - public static final int NUMVOTESINFAVOUROFKICKING_FIELD_NUMBER = 4; - private int numVotesInFavourOfKicking_; - public boolean hasNumVotesInFavourOfKicking() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public int getNumVotesInFavourOfKicking() { - return numVotesInFavourOfKicking_; - } - - // required uint32 numVotesNeededToKick = 5; - public static final int NUMVOTESNEEDEDTOKICK_FIELD_NUMBER = 5; - private int numVotesNeededToKick_; - public boolean hasNumVotesNeededToKick() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - public int getNumVotesNeededToKick() { - return numVotesNeededToKick_; - } - + private void initFields() { gameId_ = 0; petitionId_ = 0; - numVotesAgainstKicking_ = 0; - numVotesInFavourOfKicking_ = 0; - numVotesNeededToKick_ = 0; + voteKickReplyType_ = de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType.voteKickAck; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -31853,22 +39595,14 @@ public final class ProtoBuf { memoizedIsInitialized = 0; return false; } - if (!hasNumVotesAgainstKicking()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasNumVotesInFavourOfKicking()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasNumVotesNeededToKick()) { + if (!hasVoteKickReplyType()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -31879,21 +39613,15 @@ public final class ProtoBuf { output.writeUInt32(2, petitionId_); } if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeUInt32(3, numVotesAgainstKicking_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeUInt32(4, numVotesInFavourOfKicking_); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - output.writeUInt32(5, numVotesNeededToKick_); + output.writeEnum(3, voteKickReplyType_.getNumber()); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -31905,159 +39633,126 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000004) == 0x00000004)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(3, numVotesAgainstKicking_); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(4, numVotesInFavourOfKicking_); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(5, numVotesNeededToKick_); + .computeEnumSize(3, voteKickReplyType_.getNumber()); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code VoteKickReplyMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.VoteKickReplyMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); petitionId_ = 0; bitField0_ = (bitField0_ & ~0x00000002); - numVotesAgainstKicking_ = 0; + voteKickReplyType_ = de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType.voteKickAck; bitField0_ = (bitField0_ & ~0x00000004); - numVotesInFavourOfKicking_ = 0; - bitField0_ = (bitField0_ & ~0x00000008); - numVotesNeededToKick_ = 0; - bitField0_ = (bitField0_ & ~0x00000010); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage build() { - de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage build() { + de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage result = new de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage(this); + + public de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage result = new de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -32071,39 +39766,25 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } - result.numVotesAgainstKicking_ = numVotesAgainstKicking_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.numVotesInFavourOfKicking_ = numVotesInFavourOfKicking_; - if (((from_bitField0_ & 0x00000010) == 0x00000010)) { - to_bitField0_ |= 0x00000010; - } - result.numVotesNeededToKick_ = numVotesNeededToKick_; + result.voteKickReplyType_ = voteKickReplyType_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } if (other.hasPetitionId()) { setPetitionId(other.getPetitionId()); } - if (other.hasNumVotesAgainstKicking()) { - setNumVotesAgainstKicking(other.getNumVotesAgainstKicking()); - } - if (other.hasNumVotesInFavourOfKicking()) { - setNumVotesInFavourOfKicking(other.getNumVotesInFavourOfKicking()); - } - if (other.hasNumVotesNeededToKick()) { - setNumVotesNeededToKick(other.getNumVotesNeededToKick()); + if (other.hasVoteKickReplyType()) { + setVoteKickReplyType(other.getVoteKickReplyType()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -32113,35 +39794,238 @@ public final class ProtoBuf { return false; } - if (!hasNumVotesAgainstKicking()) { - - return false; - } - if (!hasNumVotesInFavourOfKicking()) { - - return false; - } - if (!hasNumVotesNeededToKick()) { + if (!hasVoteKickReplyType()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 petitionId = 2; + private int petitionId_ ; + /** + * required uint32 petitionId = 2; + */ + public boolean hasPetitionId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 petitionId = 2; + */ + public int getPetitionId() { + return petitionId_; + } + /** + * required uint32 petitionId = 2; + */ + public Builder setPetitionId(int value) { + bitField0_ |= 0x00000002; + petitionId_ = value; + + return this; + } + /** + * required uint32 petitionId = 2; + */ + public Builder clearPetitionId() { + bitField0_ = (bitField0_ & ~0x00000002); + petitionId_ = 0; + + return this; + } + + // required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; + private de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType voteKickReplyType_ = de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType.voteKickAck; + /** + * required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; + */ + public boolean hasVoteKickReplyType() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; + */ + public de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType getVoteKickReplyType() { + return voteKickReplyType_; + } + /** + * required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; + */ + public Builder setVoteKickReplyType(de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + voteKickReplyType_ = value; + + return this; + } + /** + * required .VoteKickReplyMessage.VoteKickReplyType voteKickReplyType = 3; + */ + public Builder clearVoteKickReplyType() { + bitField0_ = (bitField0_ & ~0x00000004); + voteKickReplyType_ = de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.VoteKickReplyType.voteKickAck; + + return this; + } + + // @@protoc_insertion_point(builder_scope:VoteKickReplyMessage) + } + + static { + defaultInstance = new VoteKickReplyMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:VoteKickReplyMessage) + } + + public interface KickPetitionUpdateMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 petitionId = 2; + /** + * required uint32 petitionId = 2; + */ + boolean hasPetitionId(); + /** + * required uint32 petitionId = 2; + */ + int getPetitionId(); + + // required uint32 numVotesAgainstKicking = 3; + /** + * required uint32 numVotesAgainstKicking = 3; + */ + boolean hasNumVotesAgainstKicking(); + /** + * required uint32 numVotesAgainstKicking = 3; + */ + int getNumVotesAgainstKicking(); + + // required uint32 numVotesInFavourOfKicking = 4; + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ + boolean hasNumVotesInFavourOfKicking(); + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ + int getNumVotesInFavourOfKicking(); + + // required uint32 numVotesNeededToKick = 5; + /** + * required uint32 numVotesNeededToKick = 5; + */ + boolean hasNumVotesNeededToKick(); + /** + * required uint32 numVotesNeededToKick = 5; + */ + int getNumVotesNeededToKick(); + } + /** + * Protobuf type {@code KickPetitionUpdateMessage} + */ + public static final class KickPetitionUpdateMessage extends + com.google.protobuf.GeneratedMessageLite + implements KickPetitionUpdateMessageOrBuilder { + // Use KickPetitionUpdateMessage.newBuilder() to construct. + private KickPetitionUpdateMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private KickPetitionUpdateMessage(boolean noInit) {} + + private static final KickPetitionUpdateMessage defaultInstance; + public static KickPetitionUpdateMessage getDefaultInstance() { + return defaultInstance; + } + + public KickPetitionUpdateMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private KickPetitionUpdateMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -32172,292 +40056,123 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 gameId = 1; - private int gameId_ ; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - public Builder setGameId(int value) { - bitField0_ |= 0x00000001; - gameId_ = value; - - return this; - } - public Builder clearGameId() { - bitField0_ = (bitField0_ & ~0x00000001); - gameId_ = 0; - - return this; - } - - // required uint32 petitionId = 2; - private int petitionId_ ; - public boolean hasPetitionId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPetitionId() { - return petitionId_; - } - public Builder setPetitionId(int value) { - bitField0_ |= 0x00000002; - petitionId_ = value; - - return this; - } - public Builder clearPetitionId() { - bitField0_ = (bitField0_ & ~0x00000002); - petitionId_ = 0; - - return this; - } - - // required uint32 numVotesAgainstKicking = 3; - private int numVotesAgainstKicking_ ; - public boolean hasNumVotesAgainstKicking() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public int getNumVotesAgainstKicking() { - return numVotesAgainstKicking_; - } - public Builder setNumVotesAgainstKicking(int value) { - bitField0_ |= 0x00000004; - numVotesAgainstKicking_ = value; - - return this; - } - public Builder clearNumVotesAgainstKicking() { - bitField0_ = (bitField0_ & ~0x00000004); - numVotesAgainstKicking_ = 0; - - return this; - } - - // required uint32 numVotesInFavourOfKicking = 4; - private int numVotesInFavourOfKicking_ ; - public boolean hasNumVotesInFavourOfKicking() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public int getNumVotesInFavourOfKicking() { - return numVotesInFavourOfKicking_; - } - public Builder setNumVotesInFavourOfKicking(int value) { - bitField0_ |= 0x00000008; - numVotesInFavourOfKicking_ = value; - - return this; - } - public Builder clearNumVotesInFavourOfKicking() { - bitField0_ = (bitField0_ & ~0x00000008); - numVotesInFavourOfKicking_ = 0; - - return this; - } - - // required uint32 numVotesNeededToKick = 5; - private int numVotesNeededToKick_ ; - public boolean hasNumVotesNeededToKick() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - public int getNumVotesNeededToKick() { - return numVotesNeededToKick_; - } - public Builder setNumVotesNeededToKick(int value) { - bitField0_ |= 0x00000010; - numVotesNeededToKick_ = value; - - return this; - } - public Builder clearNumVotesNeededToKick() { - bitField0_ = (bitField0_ & ~0x00000010); - numVotesNeededToKick_ = 0; - - return this; - } - - // @@protoc_insertion_point(builder_scope:KickPetitionUpdateMessage) } - - static { - defaultInstance = new KickPetitionUpdateMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:KickPetitionUpdateMessage) - } - - public interface EndKickPetitionMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 gameId = 1; - boolean hasGameId(); - int getGameId(); - - // required uint32 petitionId = 2; - boolean hasPetitionId(); - int getPetitionId(); - - // required uint32 numVotesAgainstKicking = 3; - boolean hasNumVotesAgainstKicking(); - int getNumVotesAgainstKicking(); - - // required uint32 numVotesInFavourOfKicking = 4; - boolean hasNumVotesInFavourOfKicking(); - int getNumVotesInFavourOfKicking(); - - // required uint32 resultPlayerKicked = 5; - boolean hasResultPlayerKicked(); - int getResultPlayerKicked(); - - // required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; - boolean hasPetitionEndReason(); - de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason getPetitionEndReason(); - } - public static final class EndKickPetitionMessage extends - com.google.protobuf.GeneratedMessageLite - implements EndKickPetitionMessageOrBuilder { - // Use EndKickPetitionMessage.newBuilder() to construct. - private EndKickPetitionMessage(Builder builder) { - super(builder); - } - private EndKickPetitionMessage(boolean noInit) {} - - private static final EndKickPetitionMessage defaultInstance; - public static EndKickPetitionMessage getDefaultInstance() { - return defaultInstance; - } - - public EndKickPetitionMessage getDefaultInstanceForType() { - return defaultInstance; - } - - public enum PetitionEndReason - implements com.google.protobuf.Internal.EnumLite { - petitionEndEnoughVotes(0, 0), - petitionEndTooFewPlayers(1, 1), - petitionEndPlayerLeft(2, 2), - petitionEndTimeout(3, 3), - ; - - public static final int petitionEndEnoughVotes_VALUE = 0; - public static final int petitionEndTooFewPlayers_VALUE = 1; - public static final int petitionEndPlayerLeft_VALUE = 2; - public static final int petitionEndTimeout_VALUE = 3; - - - public final int getNumber() { return value; } - - public static PetitionEndReason valueOf(int value) { - switch (value) { - case 0: return petitionEndEnoughVotes; - case 1: return petitionEndTooFewPlayers; - case 2: return petitionEndPlayerLeft; - case 3: return petitionEndTimeout; - default: return null; - } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public KickPetitionUpdateMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new KickPetitionUpdateMessage(input, extensionRegistry); } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public PetitionEndReason findValueByNumber(int number) { - return PetitionEndReason.valueOf(number); - } - }; - - private final int value; - - private PetitionEndReason(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:EndKickPetitionMessage.PetitionEndReason) + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + private int bitField0_; // required uint32 gameId = 1; public static final int GAMEID_FIELD_NUMBER = 1; private int gameId_; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } - + // required uint32 petitionId = 2; public static final int PETITIONID_FIELD_NUMBER = 2; private int petitionId_; + /** + * required uint32 petitionId = 2; + */ public boolean hasPetitionId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 petitionId = 2; + */ public int getPetitionId() { return petitionId_; } - + // required uint32 numVotesAgainstKicking = 3; public static final int NUMVOTESAGAINSTKICKING_FIELD_NUMBER = 3; private int numVotesAgainstKicking_; + /** + * required uint32 numVotesAgainstKicking = 3; + */ public boolean hasNumVotesAgainstKicking() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required uint32 numVotesAgainstKicking = 3; + */ public int getNumVotesAgainstKicking() { return numVotesAgainstKicking_; } - + // required uint32 numVotesInFavourOfKicking = 4; public static final int NUMVOTESINFAVOUROFKICKING_FIELD_NUMBER = 4; private int numVotesInFavourOfKicking_; + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ public boolean hasNumVotesInFavourOfKicking() { return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ public int getNumVotesInFavourOfKicking() { return numVotesInFavourOfKicking_; } - - // required uint32 resultPlayerKicked = 5; - public static final int RESULTPLAYERKICKED_FIELD_NUMBER = 5; - private int resultPlayerKicked_; - public boolean hasResultPlayerKicked() { + + // required uint32 numVotesNeededToKick = 5; + public static final int NUMVOTESNEEDEDTOKICK_FIELD_NUMBER = 5; + private int numVotesNeededToKick_; + /** + * required uint32 numVotesNeededToKick = 5; + */ + public boolean hasNumVotesNeededToKick() { return ((bitField0_ & 0x00000010) == 0x00000010); } - public int getResultPlayerKicked() { - return resultPlayerKicked_; + /** + * required uint32 numVotesNeededToKick = 5; + */ + public int getNumVotesNeededToKick() { + return numVotesNeededToKick_; } - - // required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; - public static final int PETITIONENDREASON_FIELD_NUMBER = 6; - private de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason petitionEndReason_; - public boolean hasPetitionEndReason() { - return ((bitField0_ & 0x00000020) == 0x00000020); - } - public de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason getPetitionEndReason() { - return petitionEndReason_; - } - + private void initFields() { gameId_ = 0; petitionId_ = 0; numVotesAgainstKicking_ = 0; numVotesInFavourOfKicking_ = 0; - resultPlayerKicked_ = 0; - petitionEndReason_ = de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason.petitionEndEnoughVotes; + numVotesNeededToKick_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasGameId()) { memoizedIsInitialized = 0; return false; @@ -32474,18 +40189,14 @@ public final class ProtoBuf { memoizedIsInitialized = 0; return false; } - if (!hasResultPlayerKicked()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasPetitionEndReason()) { + if (!hasNumVotesNeededToKick()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -32502,18 +40213,15 @@ public final class ProtoBuf { output.writeUInt32(4, numVotesInFavourOfKicking_); } if (((bitField0_ & 0x00000010) == 0x00000010)) { - output.writeUInt32(5, resultPlayerKicked_); - } - if (((bitField0_ & 0x00000020) == 0x00000020)) { - output.writeEnum(6, petitionEndReason_.getNumber()); + output.writeUInt32(5, numVotesNeededToKick_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -32533,112 +40241,97 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000010) == 0x00000010)) { size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(5, resultPlayerKicked_); - } - if (((bitField0_ & 0x00000020) == 0x00000020)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(6, petitionEndReason_.getNumber()); + .computeUInt32Size(5, numVotesNeededToKick_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code KickPetitionUpdateMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.EndKickPetitionMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); gameId_ = 0; @@ -32649,41 +40342,29 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000004); numVotesInFavourOfKicking_ = 0; bitField0_ = (bitField0_ & ~0x00000008); - resultPlayerKicked_ = 0; + numVotesNeededToKick_ = 0; bitField0_ = (bitField0_ & ~0x00000010); - petitionEndReason_ = de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason.petitionEndEnoughVotes; - bitField0_ = (bitField0_ & ~0x00000020); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage build() { - de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage build() { + de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage result = new de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage(this); + + public de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage result = new de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -32705,17 +40386,13 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000010) == 0x00000010)) { to_bitField0_ |= 0x00000010; } - result.resultPlayerKicked_ = resultPlayerKicked_; - if (((from_bitField0_ & 0x00000020) == 0x00000020)) { - to_bitField0_ |= 0x00000020; - } - result.petitionEndReason_ = petitionEndReason_; + result.numVotesNeededToKick_ = numVotesNeededToKick_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.getDefaultInstance()) return this; if (other.hasGameId()) { setGameId(other.getGameId()); } @@ -32728,15 +40405,12 @@ public final class ProtoBuf { if (other.hasNumVotesInFavourOfKicking()) { setNumVotesInFavourOfKicking(other.getNumVotesInFavourOfKicking()); } - if (other.hasResultPlayerKicked()) { - setResultPlayerKicked(other.getResultPlayerKicked()); - } - if (other.hasPetitionEndReason()) { - setPetitionEndReason(other.getPetitionEndReason()); + if (other.hasNumVotesNeededToKick()) { + setNumVotesNeededToKick(other.getNumVotesNeededToKick()); } return this; } - + public final boolean isInitialized() { if (!hasGameId()) { @@ -32754,31 +40428,311 @@ public final class ProtoBuf { return false; } - if (!hasResultPlayerKicked()) { - - return false; - } - if (!hasPetitionEndReason()) { + if (!hasNumVotesNeededToKick()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 gameId = 1; + private int gameId_ ; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + /** + * required uint32 gameId = 1; + */ + public Builder setGameId(int value) { + bitField0_ |= 0x00000001; + gameId_ = value; + + return this; + } + /** + * required uint32 gameId = 1; + */ + public Builder clearGameId() { + bitField0_ = (bitField0_ & ~0x00000001); + gameId_ = 0; + + return this; + } + + // required uint32 petitionId = 2; + private int petitionId_ ; + /** + * required uint32 petitionId = 2; + */ + public boolean hasPetitionId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 petitionId = 2; + */ + public int getPetitionId() { + return petitionId_; + } + /** + * required uint32 petitionId = 2; + */ + public Builder setPetitionId(int value) { + bitField0_ |= 0x00000002; + petitionId_ = value; + + return this; + } + /** + * required uint32 petitionId = 2; + */ + public Builder clearPetitionId() { + bitField0_ = (bitField0_ & ~0x00000002); + petitionId_ = 0; + + return this; + } + + // required uint32 numVotesAgainstKicking = 3; + private int numVotesAgainstKicking_ ; + /** + * required uint32 numVotesAgainstKicking = 3; + */ + public boolean hasNumVotesAgainstKicking() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required uint32 numVotesAgainstKicking = 3; + */ + public int getNumVotesAgainstKicking() { + return numVotesAgainstKicking_; + } + /** + * required uint32 numVotesAgainstKicking = 3; + */ + public Builder setNumVotesAgainstKicking(int value) { + bitField0_ |= 0x00000004; + numVotesAgainstKicking_ = value; + + return this; + } + /** + * required uint32 numVotesAgainstKicking = 3; + */ + public Builder clearNumVotesAgainstKicking() { + bitField0_ = (bitField0_ & ~0x00000004); + numVotesAgainstKicking_ = 0; + + return this; + } + + // required uint32 numVotesInFavourOfKicking = 4; + private int numVotesInFavourOfKicking_ ; + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ + public boolean hasNumVotesInFavourOfKicking() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ + public int getNumVotesInFavourOfKicking() { + return numVotesInFavourOfKicking_; + } + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ + public Builder setNumVotesInFavourOfKicking(int value) { + bitField0_ |= 0x00000008; + numVotesInFavourOfKicking_ = value; + + return this; + } + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ + public Builder clearNumVotesInFavourOfKicking() { + bitField0_ = (bitField0_ & ~0x00000008); + numVotesInFavourOfKicking_ = 0; + + return this; + } + + // required uint32 numVotesNeededToKick = 5; + private int numVotesNeededToKick_ ; + /** + * required uint32 numVotesNeededToKick = 5; + */ + public boolean hasNumVotesNeededToKick() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required uint32 numVotesNeededToKick = 5; + */ + public int getNumVotesNeededToKick() { + return numVotesNeededToKick_; + } + /** + * required uint32 numVotesNeededToKick = 5; + */ + public Builder setNumVotesNeededToKick(int value) { + bitField0_ |= 0x00000010; + numVotesNeededToKick_ = value; + + return this; + } + /** + * required uint32 numVotesNeededToKick = 5; + */ + public Builder clearNumVotesNeededToKick() { + bitField0_ = (bitField0_ & ~0x00000010); + numVotesNeededToKick_ = 0; + + return this; + } + + // @@protoc_insertion_point(builder_scope:KickPetitionUpdateMessage) + } + + static { + defaultInstance = new KickPetitionUpdateMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:KickPetitionUpdateMessage) + } + + public interface EndKickPetitionMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 gameId = 1; + /** + * required uint32 gameId = 1; + */ + boolean hasGameId(); + /** + * required uint32 gameId = 1; + */ + int getGameId(); + + // required uint32 petitionId = 2; + /** + * required uint32 petitionId = 2; + */ + boolean hasPetitionId(); + /** + * required uint32 petitionId = 2; + */ + int getPetitionId(); + + // required uint32 numVotesAgainstKicking = 3; + /** + * required uint32 numVotesAgainstKicking = 3; + */ + boolean hasNumVotesAgainstKicking(); + /** + * required uint32 numVotesAgainstKicking = 3; + */ + int getNumVotesAgainstKicking(); + + // required uint32 numVotesInFavourOfKicking = 4; + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ + boolean hasNumVotesInFavourOfKicking(); + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ + int getNumVotesInFavourOfKicking(); + + // required uint32 resultPlayerKicked = 5; + /** + * required uint32 resultPlayerKicked = 5; + */ + boolean hasResultPlayerKicked(); + /** + * required uint32 resultPlayerKicked = 5; + */ + int getResultPlayerKicked(); + + // required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; + /** + * required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; + */ + boolean hasPetitionEndReason(); + /** + * required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; + */ + de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason getPetitionEndReason(); + } + /** + * Protobuf type {@code EndKickPetitionMessage} + */ + public static final class EndKickPetitionMessage extends + com.google.protobuf.GeneratedMessageLite + implements EndKickPetitionMessageOrBuilder { + // Use EndKickPetitionMessage.newBuilder() to construct. + private EndKickPetitionMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private EndKickPetitionMessage(boolean noInit) {} + + private static final EndKickPetitionMessage defaultInstance; + public static EndKickPetitionMessage getDefaultInstance() { + return defaultInstance; + } + + public EndKickPetitionMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private EndKickPetitionMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -32818,123 +40772,701 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public EndKickPetitionMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new EndKickPetitionMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code EndKickPetitionMessage.PetitionEndReason} + */ + public enum PetitionEndReason + implements com.google.protobuf.Internal.EnumLite { + /** + * petitionEndEnoughVotes = 0; + */ + petitionEndEnoughVotes(0, 0), + /** + * petitionEndTooFewPlayers = 1; + */ + petitionEndTooFewPlayers(1, 1), + /** + * petitionEndPlayerLeft = 2; + */ + petitionEndPlayerLeft(2, 2), + /** + * petitionEndTimeout = 3; + */ + petitionEndTimeout(3, 3), + ; + + /** + * petitionEndEnoughVotes = 0; + */ + public static final int petitionEndEnoughVotes_VALUE = 0; + /** + * petitionEndTooFewPlayers = 1; + */ + public static final int petitionEndTooFewPlayers_VALUE = 1; + /** + * petitionEndPlayerLeft = 2; + */ + public static final int petitionEndPlayerLeft_VALUE = 2; + /** + * petitionEndTimeout = 3; + */ + public static final int petitionEndTimeout_VALUE = 3; + + + public final int getNumber() { return value; } + + public static PetitionEndReason valueOf(int value) { + switch (value) { + case 0: return petitionEndEnoughVotes; + case 1: return petitionEndTooFewPlayers; + case 2: return petitionEndPlayerLeft; + case 3: return petitionEndTimeout; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public PetitionEndReason findValueByNumber(int number) { + return PetitionEndReason.valueOf(number); + } + }; + + private final int value; + + private PetitionEndReason(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:EndKickPetitionMessage.PetitionEndReason) + } + + private int bitField0_; + // required uint32 gameId = 1; + public static final int GAMEID_FIELD_NUMBER = 1; + private int gameId_; + /** + * required uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + + // required uint32 petitionId = 2; + public static final int PETITIONID_FIELD_NUMBER = 2; + private int petitionId_; + /** + * required uint32 petitionId = 2; + */ + public boolean hasPetitionId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 petitionId = 2; + */ + public int getPetitionId() { + return petitionId_; + } + + // required uint32 numVotesAgainstKicking = 3; + public static final int NUMVOTESAGAINSTKICKING_FIELD_NUMBER = 3; + private int numVotesAgainstKicking_; + /** + * required uint32 numVotesAgainstKicking = 3; + */ + public boolean hasNumVotesAgainstKicking() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required uint32 numVotesAgainstKicking = 3; + */ + public int getNumVotesAgainstKicking() { + return numVotesAgainstKicking_; + } + + // required uint32 numVotesInFavourOfKicking = 4; + public static final int NUMVOTESINFAVOUROFKICKING_FIELD_NUMBER = 4; + private int numVotesInFavourOfKicking_; + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ + public boolean hasNumVotesInFavourOfKicking() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ + public int getNumVotesInFavourOfKicking() { + return numVotesInFavourOfKicking_; + } + + // required uint32 resultPlayerKicked = 5; + public static final int RESULTPLAYERKICKED_FIELD_NUMBER = 5; + private int resultPlayerKicked_; + /** + * required uint32 resultPlayerKicked = 5; + */ + public boolean hasResultPlayerKicked() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required uint32 resultPlayerKicked = 5; + */ + public int getResultPlayerKicked() { + return resultPlayerKicked_; + } + + // required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; + public static final int PETITIONENDREASON_FIELD_NUMBER = 6; + private de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason petitionEndReason_; + /** + * required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; + */ + public boolean hasPetitionEndReason() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; + */ + public de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason getPetitionEndReason() { + return petitionEndReason_; + } + + private void initFields() { + gameId_ = 0; + petitionId_ = 0; + numVotesAgainstKicking_ = 0; + numVotesInFavourOfKicking_ = 0; + resultPlayerKicked_ = 0; + petitionEndReason_ = de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason.petitionEndEnoughVotes; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasGameId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPetitionId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasNumVotesAgainstKicking()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasNumVotesInFavourOfKicking()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasResultPlayerKicked()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasPetitionEndReason()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, petitionId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeUInt32(3, numVotesAgainstKicking_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeUInt32(4, numVotesInFavourOfKicking_); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeUInt32(5, resultPlayerKicked_); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeEnum(6, petitionEndReason_.getNumber()); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, petitionId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(3, numVotesAgainstKicking_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(4, numVotesInFavourOfKicking_); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(5, resultPlayerKicked_); + } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(6, petitionEndReason_.getNumber()); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code EndKickPetitionMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.EndKickPetitionMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + gameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + petitionId_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + numVotesAgainstKicking_ = 0; + bitField0_ = (bitField0_ & ~0x00000004); + numVotesInFavourOfKicking_ = 0; + bitField0_ = (bitField0_ & ~0x00000008); + resultPlayerKicked_ = 0; + bitField0_ = (bitField0_ & ~0x00000010); + petitionEndReason_ = de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason.petitionEndEnoughVotes; + bitField0_ = (bitField0_ & ~0x00000020); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage build() { + de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage result = new de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.gameId_ = gameId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.petitionId_ = petitionId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.numVotesAgainstKicking_ = numVotesAgainstKicking_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.numVotesInFavourOfKicking_ = numVotesInFavourOfKicking_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.resultPlayerKicked_ = resultPlayerKicked_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000020; + } + result.petitionEndReason_ = petitionEndReason_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.getDefaultInstance()) return this; + if (other.hasGameId()) { + setGameId(other.getGameId()); + } + if (other.hasPetitionId()) { + setPetitionId(other.getPetitionId()); + } + if (other.hasNumVotesAgainstKicking()) { + setNumVotesAgainstKicking(other.getNumVotesAgainstKicking()); + } + if (other.hasNumVotesInFavourOfKicking()) { + setNumVotesInFavourOfKicking(other.getNumVotesInFavourOfKicking()); + } + if (other.hasResultPlayerKicked()) { + setResultPlayerKicked(other.getResultPlayerKicked()); + } + if (other.hasPetitionEndReason()) { + setPetitionEndReason(other.getPetitionEndReason()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasGameId()) { + + return false; + } + if (!hasPetitionId()) { + + return false; + } + if (!hasNumVotesAgainstKicking()) { + + return false; + } + if (!hasNumVotesInFavourOfKicking()) { + + return false; + } + if (!hasResultPlayerKicked()) { + + return false; + } + if (!hasPetitionEndReason()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 gameId = 1; private int gameId_ ; + /** + * required uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * required uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * required uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // required uint32 petitionId = 2; private int petitionId_ ; + /** + * required uint32 petitionId = 2; + */ public boolean hasPetitionId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 petitionId = 2; + */ public int getPetitionId() { return petitionId_; } + /** + * required uint32 petitionId = 2; + */ public Builder setPetitionId(int value) { bitField0_ |= 0x00000002; petitionId_ = value; return this; } + /** + * required uint32 petitionId = 2; + */ public Builder clearPetitionId() { bitField0_ = (bitField0_ & ~0x00000002); petitionId_ = 0; return this; } - + // required uint32 numVotesAgainstKicking = 3; private int numVotesAgainstKicking_ ; + /** + * required uint32 numVotesAgainstKicking = 3; + */ public boolean hasNumVotesAgainstKicking() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required uint32 numVotesAgainstKicking = 3; + */ public int getNumVotesAgainstKicking() { return numVotesAgainstKicking_; } + /** + * required uint32 numVotesAgainstKicking = 3; + */ public Builder setNumVotesAgainstKicking(int value) { bitField0_ |= 0x00000004; numVotesAgainstKicking_ = value; return this; } + /** + * required uint32 numVotesAgainstKicking = 3; + */ public Builder clearNumVotesAgainstKicking() { bitField0_ = (bitField0_ & ~0x00000004); numVotesAgainstKicking_ = 0; return this; } - + // required uint32 numVotesInFavourOfKicking = 4; private int numVotesInFavourOfKicking_ ; + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ public boolean hasNumVotesInFavourOfKicking() { return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ public int getNumVotesInFavourOfKicking() { return numVotesInFavourOfKicking_; } + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ public Builder setNumVotesInFavourOfKicking(int value) { bitField0_ |= 0x00000008; numVotesInFavourOfKicking_ = value; return this; } + /** + * required uint32 numVotesInFavourOfKicking = 4; + */ public Builder clearNumVotesInFavourOfKicking() { bitField0_ = (bitField0_ & ~0x00000008); numVotesInFavourOfKicking_ = 0; return this; } - + // required uint32 resultPlayerKicked = 5; private int resultPlayerKicked_ ; + /** + * required uint32 resultPlayerKicked = 5; + */ public boolean hasResultPlayerKicked() { return ((bitField0_ & 0x00000010) == 0x00000010); } + /** + * required uint32 resultPlayerKicked = 5; + */ public int getResultPlayerKicked() { return resultPlayerKicked_; } + /** + * required uint32 resultPlayerKicked = 5; + */ public Builder setResultPlayerKicked(int value) { bitField0_ |= 0x00000010; resultPlayerKicked_ = value; return this; } + /** + * required uint32 resultPlayerKicked = 5; + */ public Builder clearResultPlayerKicked() { bitField0_ = (bitField0_ & ~0x00000010); resultPlayerKicked_ = 0; return this; } - + // required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; private de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason petitionEndReason_ = de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason.petitionEndEnoughVotes; + /** + * required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; + */ public boolean hasPetitionEndReason() { return ((bitField0_ & 0x00000020) == 0x00000020); } + /** + * required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; + */ public de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason getPetitionEndReason() { return petitionEndReason_; } + /** + * required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; + */ public Builder setPetitionEndReason(de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason value) { if (value == null) { throw new NullPointerException(); @@ -32944,373 +41476,188 @@ public final class ProtoBuf { return this; } + /** + * required .EndKickPetitionMessage.PetitionEndReason petitionEndReason = 6; + */ public Builder clearPetitionEndReason() { bitField0_ = (bitField0_ & ~0x00000020); petitionEndReason_ = de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PetitionEndReason.petitionEndEnoughVotes; return this; } - + // @@protoc_insertion_point(builder_scope:EndKickPetitionMessage) } - + static { defaultInstance = new EndKickPetitionMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:EndKickPetitionMessage) } - + public interface StatisticsMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // repeated .StatisticsMessage.StatisticsData statisticsData = 1; + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ java.util.List getStatisticsDataList(); + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData getStatisticsData(int index); + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ int getStatisticsDataCount(); } + /** + * Protobuf type {@code StatisticsMessage} + */ public static final class StatisticsMessage extends com.google.protobuf.GeneratedMessageLite implements StatisticsMessageOrBuilder { // Use StatisticsMessage.newBuilder() to construct. - private StatisticsMessage(Builder builder) { + private StatisticsMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private StatisticsMessage(boolean noInit) {} - + private static final StatisticsMessage defaultInstance; public static StatisticsMessage getDefaultInstance() { return defaultInstance; } - + public StatisticsMessage getDefaultInstanceForType() { return defaultInstance; } - + + private StatisticsMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + statisticsData_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000001; + } + statisticsData_.add(input.readMessage(de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.PARSER, extensionRegistry)); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) { + statisticsData_ = java.util.Collections.unmodifiableList(statisticsData_); + } + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public StatisticsMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new StatisticsMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + public interface StatisticsDataOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; + /** + * required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; + */ boolean hasStatisticsType(); + /** + * required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; + */ de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType getStatisticsType(); - + // required uint32 statisticsValue = 2; + /** + * required uint32 statisticsValue = 2; + */ boolean hasStatisticsValue(); + /** + * required uint32 statisticsValue = 2; + */ int getStatisticsValue(); } + /** + * Protobuf type {@code StatisticsMessage.StatisticsData} + */ public static final class StatisticsData extends com.google.protobuf.GeneratedMessageLite implements StatisticsDataOrBuilder { // Use StatisticsData.newBuilder() to construct. - private StatisticsData(Builder builder) { + private StatisticsData(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private StatisticsData(boolean noInit) {} - + private static final StatisticsData defaultInstance; public static StatisticsData getDefaultInstance() { return defaultInstance; } - + public StatisticsData getDefaultInstanceForType() { return defaultInstance; } - - public enum StatisticsType - implements com.google.protobuf.Internal.EnumLite { - statNumberOfPlayers(0, 1), - ; - - public static final int statNumberOfPlayers_VALUE = 1; - - - public final int getNumber() { return value; } - - public static StatisticsType valueOf(int value) { - switch (value) { - case 1: return statNumberOfPlayers; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public StatisticsType findValueByNumber(int number) { - return StatisticsType.valueOf(number); - } - }; - - private final int value; - - private StatisticsType(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:StatisticsMessage.StatisticsData.StatisticsType) - } - - private int bitField0_; - // required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; - public static final int STATISTICSTYPE_FIELD_NUMBER = 1; - private de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType statisticsType_; - public boolean hasStatisticsType() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType getStatisticsType() { - return statisticsType_; - } - - // required uint32 statisticsValue = 2; - public static final int STATISTICSVALUE_FIELD_NUMBER = 2; - private int statisticsValue_; - public boolean hasStatisticsValue() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getStatisticsValue() { - return statisticsValue_; - } - - private void initFields() { - statisticsType_ = de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType.statNumberOfPlayers; - statisticsValue_ = 0; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasStatisticsType()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasStatisticsValue()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeEnum(1, statisticsType_.getNumber()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, statisticsValue_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(1, statisticsType_.getNumber()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, statisticsValue_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom( + + private StatisticsData( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData, Builder> - implements de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsDataOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - statisticsType_ = de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType.statNumberOfPlayers; - bitField0_ = (bitField0_ & ~0x00000001); - statisticsValue_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData build() { - de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData buildPartial() { - de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData result = new de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.statisticsType_ = statisticsType_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.statisticsValue_ = statisticsValue_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData other) { - if (other == de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.getDefaultInstance()) return this; - if (other.hasStatisticsType()) { - setStatisticsType(other.getStatisticsType()); - } - if (other.hasStatisticsValue()) { - setStatisticsValue(other.getStatisticsValue()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasStatisticsType()) { - - return false; - } - if (!hasStatisticsValue()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -33330,18 +41677,345 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public StatisticsData parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new StatisticsData(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code StatisticsMessage.StatisticsData.StatisticsType} + */ + public enum StatisticsType + implements com.google.protobuf.Internal.EnumLite { + /** + * statNumberOfPlayers = 1; + */ + statNumberOfPlayers(0, 1), + ; + + /** + * statNumberOfPlayers = 1; + */ + public static final int statNumberOfPlayers_VALUE = 1; + + + public final int getNumber() { return value; } + + public static StatisticsType valueOf(int value) { + switch (value) { + case 1: return statNumberOfPlayers; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public StatisticsType findValueByNumber(int number) { + return StatisticsType.valueOf(number); + } + }; + + private final int value; + + private StatisticsType(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:StatisticsMessage.StatisticsData.StatisticsType) + } + + private int bitField0_; + // required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; + public static final int STATISTICSTYPE_FIELD_NUMBER = 1; + private de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType statisticsType_; + /** + * required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; + */ + public boolean hasStatisticsType() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; + */ + public de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType getStatisticsType() { + return statisticsType_; + } + + // required uint32 statisticsValue = 2; + public static final int STATISTICSVALUE_FIELD_NUMBER = 2; + private int statisticsValue_; + /** + * required uint32 statisticsValue = 2; + */ + public boolean hasStatisticsValue() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 statisticsValue = 2; + */ + public int getStatisticsValue() { + return statisticsValue_; + } + + private void initFields() { + statisticsType_ = de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType.statNumberOfPlayers; + statisticsValue_ = 0; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasStatisticsType()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasStatisticsValue()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeEnum(1, statisticsType_.getNumber()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, statisticsValue_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, statisticsType_.getNumber()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, statisticsValue_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code StatisticsMessage.StatisticsData} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData, Builder> + implements de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsDataOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + statisticsType_ = de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType.statNumberOfPlayers; + bitField0_ = (bitField0_ & ~0x00000001); + statisticsValue_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData build() { + de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData buildPartial() { + de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData result = new de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.statisticsType_ = statisticsType_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.statisticsValue_ = statisticsValue_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData other) { + if (other == de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.getDefaultInstance()) return this; + if (other.hasStatisticsType()) { + setStatisticsType(other.getStatisticsType()); + } + if (other.hasStatisticsValue()) { + setStatisticsValue(other.getStatisticsValue()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasStatisticsType()) { + + return false; + } + if (!hasStatisticsValue()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; private de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType statisticsType_ = de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType.statNumberOfPlayers; + /** + * required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; + */ public boolean hasStatisticsType() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; + */ public de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType getStatisticsType() { return statisticsType_; } + /** + * required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; + */ public Builder setStatisticsType(de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType value) { if (value == null) { throw new NullPointerException(); @@ -33351,66 +42025,96 @@ public final class ProtoBuf { return this; } + /** + * required .StatisticsMessage.StatisticsData.StatisticsType statisticsType = 1; + */ public Builder clearStatisticsType() { bitField0_ = (bitField0_ & ~0x00000001); statisticsType_ = de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.StatisticsType.statNumberOfPlayers; return this; } - + // required uint32 statisticsValue = 2; private int statisticsValue_ ; + /** + * required uint32 statisticsValue = 2; + */ public boolean hasStatisticsValue() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 statisticsValue = 2; + */ public int getStatisticsValue() { return statisticsValue_; } + /** + * required uint32 statisticsValue = 2; + */ public Builder setStatisticsValue(int value) { bitField0_ |= 0x00000002; statisticsValue_ = value; return this; } + /** + * required uint32 statisticsValue = 2; + */ public Builder clearStatisticsValue() { bitField0_ = (bitField0_ & ~0x00000002); statisticsValue_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:StatisticsMessage.StatisticsData) } - + static { defaultInstance = new StatisticsData(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:StatisticsMessage.StatisticsData) } - + // repeated .StatisticsMessage.StatisticsData statisticsData = 1; public static final int STATISTICSDATA_FIELD_NUMBER = 1; private java.util.List statisticsData_; + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public java.util.List getStatisticsDataList() { return statisticsData_; } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public java.util.List getStatisticsDataOrBuilderList() { return statisticsData_; } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public int getStatisticsDataCount() { return statisticsData_.size(); } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData getStatisticsData(int index) { return statisticsData_.get(index); } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsDataOrBuilder getStatisticsDataOrBuilder( int index) { return statisticsData_.get(index); } - + private void initFields() { statisticsData_ = java.util.Collections.emptyList(); } @@ -33418,7 +42122,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + for (int i = 0; i < getStatisticsDataCount(); i++) { if (!getStatisticsData(i).isInitialized()) { memoizedIsInitialized = 0; @@ -33428,7 +42132,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -33436,12 +42140,12 @@ public final class ProtoBuf { output.writeMessage(1, statisticsData_.get(i)); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; for (int i = 0; i < statisticsData_.size(); i++) { size += com.google.protobuf.CodedOutputStream @@ -33450,88 +42154,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.StatisticsMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.StatisticsMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.StatisticsMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.StatisticsMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.StatisticsMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.StatisticsMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.StatisticsMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.StatisticsMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.StatisticsMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.StatisticsMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.StatisticsMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code StatisticsMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.StatisticsMessage, Builder> @@ -33540,28 +42233,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); statisticsData_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.StatisticsMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.StatisticsMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.StatisticsMessage build() { de.pokerth.protocol.ProtoBuf.StatisticsMessage result = buildPartial(); if (!result.isInitialized()) { @@ -33569,17 +42262,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.StatisticsMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.StatisticsMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.StatisticsMessage buildPartial() { de.pokerth.protocol.ProtoBuf.StatisticsMessage result = new de.pokerth.protocol.ProtoBuf.StatisticsMessage(this); int from_bitField0_ = bitField0_; @@ -33590,7 +42273,7 @@ public final class ProtoBuf { result.statisticsData_ = statisticsData_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.StatisticsMessage other) { if (other == de.pokerth.protocol.ProtoBuf.StatisticsMessage.getDefaultInstance()) return this; if (!other.statisticsData_.isEmpty()) { @@ -33605,7 +42288,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { for (int i = 0; i < getStatisticsDataCount(); i++) { if (!getStatisticsData(i).isInitialized()) { @@ -33615,36 +42298,26 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 10: { - de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.Builder subBuilder = de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addStatisticsData(subBuilder.buildPartial()); - break; - } + de.pokerth.protocol.ProtoBuf.StatisticsMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.StatisticsMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // repeated .StatisticsMessage.StatisticsData statisticsData = 1; private java.util.List statisticsData_ = java.util.Collections.emptyList(); @@ -33654,16 +42327,28 @@ public final class ProtoBuf { bitField0_ |= 0x00000001; } } - + + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public java.util.List getStatisticsDataList() { return java.util.Collections.unmodifiableList(statisticsData_); } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public int getStatisticsDataCount() { return statisticsData_.size(); } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData getStatisticsData(int index) { return statisticsData_.get(index); } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public Builder setStatisticsData( int index, de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData value) { if (value == null) { @@ -33671,25 +42356,34 @@ public final class ProtoBuf { } ensureStatisticsDataIsMutable(); statisticsData_.set(index, value); - + return this; } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public Builder setStatisticsData( int index, de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.Builder builderForValue) { ensureStatisticsDataIsMutable(); statisticsData_.set(index, builderForValue.build()); - + return this; } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public Builder addStatisticsData(de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData value) { if (value == null) { throw new NullPointerException(); } ensureStatisticsDataIsMutable(); statisticsData_.add(value); - + return this; } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public Builder addStatisticsData( int index, de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData value) { if (value == null) { @@ -33697,383 +42391,147 @@ public final class ProtoBuf { } ensureStatisticsDataIsMutable(); statisticsData_.add(index, value); - + return this; } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public Builder addStatisticsData( de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.Builder builderForValue) { ensureStatisticsDataIsMutable(); statisticsData_.add(builderForValue.build()); - + return this; } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public Builder addStatisticsData( int index, de.pokerth.protocol.ProtoBuf.StatisticsMessage.StatisticsData.Builder builderForValue) { ensureStatisticsDataIsMutable(); statisticsData_.add(index, builderForValue.build()); - + return this; } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public Builder addAllStatisticsData( java.lang.Iterable values) { ensureStatisticsDataIsMutable(); super.addAll(values, statisticsData_); - + return this; } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public Builder clearStatisticsData() { statisticsData_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000001); - + return this; } + /** + * repeated .StatisticsMessage.StatisticsData statisticsData = 1; + */ public Builder removeStatisticsData(int index) { ensureStatisticsDataIsMutable(); statisticsData_.remove(index); - + return this; } - + // @@protoc_insertion_point(builder_scope:StatisticsMessage) } - + static { defaultInstance = new StatisticsMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:StatisticsMessage) } - + public interface ChatRequestMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // optional uint32 targetGameId = 1; + /** + * optional uint32 targetGameId = 1; + */ boolean hasTargetGameId(); + /** + * optional uint32 targetGameId = 1; + */ int getTargetGameId(); - + // optional uint32 targetPlayerId = 2; + /** + * optional uint32 targetPlayerId = 2; + */ boolean hasTargetPlayerId(); + /** + * optional uint32 targetPlayerId = 2; + */ int getTargetPlayerId(); - + // required string chatText = 3; + /** + * required string chatText = 3; + */ boolean hasChatText(); - String getChatText(); + /** + * required string chatText = 3; + */ + java.lang.String getChatText(); + /** + * required string chatText = 3; + */ + com.google.protobuf.ByteString + getChatTextBytes(); } + /** + * Protobuf type {@code ChatRequestMessage} + */ public static final class ChatRequestMessage extends com.google.protobuf.GeneratedMessageLite implements ChatRequestMessageOrBuilder { // Use ChatRequestMessage.newBuilder() to construct. - private ChatRequestMessage(Builder builder) { + private ChatRequestMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private ChatRequestMessage(boolean noInit) {} - + private static final ChatRequestMessage defaultInstance; public static ChatRequestMessage getDefaultInstance() { return defaultInstance; } - + public ChatRequestMessage getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // optional uint32 targetGameId = 1; - public static final int TARGETGAMEID_FIELD_NUMBER = 1; - private int targetGameId_; - public boolean hasTargetGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getTargetGameId() { - return targetGameId_; - } - - // optional uint32 targetPlayerId = 2; - public static final int TARGETPLAYERID_FIELD_NUMBER = 2; - private int targetPlayerId_; - public boolean hasTargetPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getTargetPlayerId() { - return targetPlayerId_; - } - - // required string chatText = 3; - public static final int CHATTEXT_FIELD_NUMBER = 3; - private java.lang.Object chatText_; - public boolean hasChatText() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public String getChatText() { - java.lang.Object ref = chatText_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - chatText_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getChatTextBytes() { - java.lang.Object ref = chatText_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - chatText_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - private void initFields() { - targetGameId_ = 0; - targetPlayerId_ = 0; - chatText_ = ""; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasChatText()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, targetGameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, targetPlayerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeBytes(3, getChatTextBytes()); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, targetGameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, targetPlayerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(3, getChatTextBytes()); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom( + + private ChatRequestMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ChatRequestMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.ChatRequestMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.ChatRequestMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.ChatRequestMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - targetGameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - targetPlayerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - chatText_ = ""; - bitField0_ = (bitField0_ & ~0x00000004); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.ChatRequestMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.ChatRequestMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.ChatRequestMessage build() { - de.pokerth.protocol.ProtoBuf.ChatRequestMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.ChatRequestMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.ChatRequestMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.ChatRequestMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.ChatRequestMessage result = new de.pokerth.protocol.ProtoBuf.ChatRequestMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.targetGameId_ = targetGameId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.targetPlayerId_ = targetPlayerId_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.chatText_ = chatText_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ChatRequestMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.ChatRequestMessage.getDefaultInstance()) return this; - if (other.hasTargetGameId()) { - setTargetGameId(other.getTargetGameId()); - } - if (other.hasTargetPlayerId()) { - setTargetPlayerId(other.getTargetPlayerId()); - } - if (other.hasChatText()) { - setChatText(other.getChatText()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasChatText()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -34094,68 +42552,444 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ChatRequestMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ChatRequestMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + private int bitField0_; + // optional uint32 targetGameId = 1; + public static final int TARGETGAMEID_FIELD_NUMBER = 1; + private int targetGameId_; + /** + * optional uint32 targetGameId = 1; + */ + public boolean hasTargetGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional uint32 targetGameId = 1; + */ + public int getTargetGameId() { + return targetGameId_; + } + + // optional uint32 targetPlayerId = 2; + public static final int TARGETPLAYERID_FIELD_NUMBER = 2; + private int targetPlayerId_; + /** + * optional uint32 targetPlayerId = 2; + */ + public boolean hasTargetPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional uint32 targetPlayerId = 2; + */ + public int getTargetPlayerId() { + return targetPlayerId_; + } + + // required string chatText = 3; + public static final int CHATTEXT_FIELD_NUMBER = 3; + private java.lang.Object chatText_; + /** + * required string chatText = 3; + */ + public boolean hasChatText() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required string chatText = 3; + */ + public java.lang.String getChatText() { + java.lang.Object ref = chatText_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + chatText_ = s; + } + return s; + } + } + /** + * required string chatText = 3; + */ + public com.google.protobuf.ByteString + getChatTextBytes() { + java.lang.Object ref = chatText_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + chatText_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private void initFields() { + targetGameId_ = 0; + targetPlayerId_ = 0; + chatText_ = ""; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasChatText()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, targetGameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, targetPlayerId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeBytes(3, getChatTextBytes()); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, targetGameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, targetPlayerId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(3, getChatTextBytes()); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.ChatRequestMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ChatRequestMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code ChatRequestMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.ChatRequestMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.ChatRequestMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.ChatRequestMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + targetGameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + targetPlayerId_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + chatText_ = ""; + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.ChatRequestMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.ChatRequestMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.ChatRequestMessage build() { + de.pokerth.protocol.ProtoBuf.ChatRequestMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.ChatRequestMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.ChatRequestMessage result = new de.pokerth.protocol.ProtoBuf.ChatRequestMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.targetGameId_ = targetGameId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.targetPlayerId_ = targetPlayerId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.chatText_ = chatText_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ChatRequestMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.ChatRequestMessage.getDefaultInstance()) return this; + if (other.hasTargetGameId()) { + setTargetGameId(other.getTargetGameId()); + } + if (other.hasTargetPlayerId()) { + setTargetPlayerId(other.getTargetPlayerId()); + } + if (other.hasChatText()) { + bitField0_ |= 0x00000004; + chatText_ = other.chatText_; + + } + return this; + } + + public final boolean isInitialized() { + if (!hasChatText()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.ChatRequestMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.ChatRequestMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // optional uint32 targetGameId = 1; private int targetGameId_ ; + /** + * optional uint32 targetGameId = 1; + */ public boolean hasTargetGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * optional uint32 targetGameId = 1; + */ public int getTargetGameId() { return targetGameId_; } + /** + * optional uint32 targetGameId = 1; + */ public Builder setTargetGameId(int value) { bitField0_ |= 0x00000001; targetGameId_ = value; return this; } + /** + * optional uint32 targetGameId = 1; + */ public Builder clearTargetGameId() { bitField0_ = (bitField0_ & ~0x00000001); targetGameId_ = 0; return this; } - + // optional uint32 targetPlayerId = 2; private int targetPlayerId_ ; + /** + * optional uint32 targetPlayerId = 2; + */ public boolean hasTargetPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * optional uint32 targetPlayerId = 2; + */ public int getTargetPlayerId() { return targetPlayerId_; } + /** + * optional uint32 targetPlayerId = 2; + */ public Builder setTargetPlayerId(int value) { bitField0_ |= 0x00000002; targetPlayerId_ = value; return this; } + /** + * optional uint32 targetPlayerId = 2; + */ public Builder clearTargetPlayerId() { bitField0_ = (bitField0_ & ~0x00000002); targetPlayerId_ = 0; return this; } - + // required string chatText = 3; private java.lang.Object chatText_ = ""; + /** + * required string chatText = 3; + */ public boolean hasChatText() { return ((bitField0_ & 0x00000004) == 0x00000004); } - public String getChatText() { + /** + * required string chatText = 3; + */ + public java.lang.String getChatText() { java.lang.Object ref = chatText_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); chatText_ = s; return s; } else { - return (String) ref; + return (java.lang.String) ref; } } - public Builder setChatText(String value) { + /** + * required string chatText = 3; + */ + public com.google.protobuf.ByteString + getChatTextBytes() { + java.lang.Object ref = chatText_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + chatText_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string chatText = 3; + */ + public Builder setChatText( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } @@ -34164,447 +42998,128 @@ public final class ProtoBuf { return this; } + /** + * required string chatText = 3; + */ public Builder clearChatText() { bitField0_ = (bitField0_ & ~0x00000004); chatText_ = getDefaultInstance().getChatText(); return this; } - void setChatText(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000004; + /** + * required string chatText = 3; + */ + public Builder setChatTextBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; chatText_ = value; + return this; } - + // @@protoc_insertion_point(builder_scope:ChatRequestMessage) } - + static { defaultInstance = new ChatRequestMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:ChatRequestMessage) } - + public interface ChatMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // optional uint32 gameId = 1; + /** + * optional uint32 gameId = 1; + */ boolean hasGameId(); + /** + * optional uint32 gameId = 1; + */ int getGameId(); - + // optional uint32 playerId = 2; + /** + * optional uint32 playerId = 2; + */ boolean hasPlayerId(); + /** + * optional uint32 playerId = 2; + */ int getPlayerId(); - + // required .ChatMessage.ChatType chatType = 3; + /** + * required .ChatMessage.ChatType chatType = 3; + */ boolean hasChatType(); + /** + * required .ChatMessage.ChatType chatType = 3; + */ de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType getChatType(); - + // required string chatText = 4; + /** + * required string chatText = 4; + */ boolean hasChatText(); - String getChatText(); + /** + * required string chatText = 4; + */ + java.lang.String getChatText(); + /** + * required string chatText = 4; + */ + com.google.protobuf.ByteString + getChatTextBytes(); } + /** + * Protobuf type {@code ChatMessage} + */ public static final class ChatMessage extends com.google.protobuf.GeneratedMessageLite implements ChatMessageOrBuilder { // Use ChatMessage.newBuilder() to construct. - private ChatMessage(Builder builder) { + private ChatMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private ChatMessage(boolean noInit) {} - + private static final ChatMessage defaultInstance; public static ChatMessage getDefaultInstance() { return defaultInstance; } - + public ChatMessage getDefaultInstanceForType() { return defaultInstance; } - - public enum ChatType - implements com.google.protobuf.Internal.EnumLite { - chatTypeLobby(0, 0), - chatTypeGame(1, 1), - chatTypeBot(2, 2), - chatTypeBroadcast(3, 3), - chatTypePrivate(4, 4), - ; - - public static final int chatTypeLobby_VALUE = 0; - public static final int chatTypeGame_VALUE = 1; - public static final int chatTypeBot_VALUE = 2; - public static final int chatTypeBroadcast_VALUE = 3; - public static final int chatTypePrivate_VALUE = 4; - - - public final int getNumber() { return value; } - - public static ChatType valueOf(int value) { - switch (value) { - case 0: return chatTypeLobby; - case 1: return chatTypeGame; - case 2: return chatTypeBot; - case 3: return chatTypeBroadcast; - case 4: return chatTypePrivate; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public ChatType findValueByNumber(int number) { - return ChatType.valueOf(number); - } - }; - - private final int value; - - private ChatType(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:ChatMessage.ChatType) - } - - private int bitField0_; - // optional uint32 gameId = 1; - public static final int GAMEID_FIELD_NUMBER = 1; - private int gameId_; - public boolean hasGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getGameId() { - return gameId_; - } - - // optional uint32 playerId = 2; - public static final int PLAYERID_FIELD_NUMBER = 2; - private int playerId_; - public boolean hasPlayerId() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getPlayerId() { - return playerId_; - } - - // required .ChatMessage.ChatType chatType = 3; - public static final int CHATTYPE_FIELD_NUMBER = 3; - private de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType chatType_; - public boolean hasChatType() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType getChatType() { - return chatType_; - } - - // required string chatText = 4; - public static final int CHATTEXT_FIELD_NUMBER = 4; - private java.lang.Object chatText_; - public boolean hasChatText() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public String getChatText() { - java.lang.Object ref = chatText_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - chatText_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getChatTextBytes() { - java.lang.Object ref = chatText_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - chatText_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - private void initFields() { - gameId_ = 0; - playerId_ = 0; - chatType_ = de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType.chatTypeLobby; - chatText_ = ""; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasChatType()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasChatText()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, playerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeEnum(3, chatType_.getNumber()); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeBytes(4, getChatTextBytes()); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, gameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, playerId_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(3, chatType_.getNumber()); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(4, getChatTextBytes()); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.ChatMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom( + + private ChatMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ChatMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.ChatMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.ChatMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.ChatMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - gameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - playerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - chatType_ = de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType.chatTypeLobby; - bitField0_ = (bitField0_ & ~0x00000004); - chatText_ = ""; - bitField0_ = (bitField0_ & ~0x00000008); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.ChatMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.ChatMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.ChatMessage build() { - de.pokerth.protocol.ProtoBuf.ChatMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.ChatMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.ChatMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.ChatMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.ChatMessage result = new de.pokerth.protocol.ProtoBuf.ChatMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.gameId_ = gameId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.playerId_ = playerId_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.chatType_ = chatType_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.chatText_ = chatText_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ChatMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.ChatMessage.getDefaultInstance()) return this; - if (other.hasGameId()) { - setGameId(other.getGameId()); - } - if (other.hasPlayerId()) { - setPlayerId(other.getPlayerId()); - } - if (other.hasChatType()) { - setChatType(other.getChatType()); - } - if (other.hasChatText()) { - setChatText(other.getChatText()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasChatType()) { - - return false; - } - if (!hasChatText()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -34634,60 +43149,542 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ChatMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ChatMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code ChatMessage.ChatType} + */ + public enum ChatType + implements com.google.protobuf.Internal.EnumLite { + /** + * chatTypeLobby = 0; + */ + chatTypeLobby(0, 0), + /** + * chatTypeGame = 1; + */ + chatTypeGame(1, 1), + /** + * chatTypeBot = 2; + */ + chatTypeBot(2, 2), + /** + * chatTypeBroadcast = 3; + */ + chatTypeBroadcast(3, 3), + /** + * chatTypePrivate = 4; + */ + chatTypePrivate(4, 4), + ; + + /** + * chatTypeLobby = 0; + */ + public static final int chatTypeLobby_VALUE = 0; + /** + * chatTypeGame = 1; + */ + public static final int chatTypeGame_VALUE = 1; + /** + * chatTypeBot = 2; + */ + public static final int chatTypeBot_VALUE = 2; + /** + * chatTypeBroadcast = 3; + */ + public static final int chatTypeBroadcast_VALUE = 3; + /** + * chatTypePrivate = 4; + */ + public static final int chatTypePrivate_VALUE = 4; + + + public final int getNumber() { return value; } + + public static ChatType valueOf(int value) { + switch (value) { + case 0: return chatTypeLobby; + case 1: return chatTypeGame; + case 2: return chatTypeBot; + case 3: return chatTypeBroadcast; + case 4: return chatTypePrivate; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public ChatType findValueByNumber(int number) { + return ChatType.valueOf(number); + } + }; + + private final int value; + + private ChatType(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:ChatMessage.ChatType) + } + + private int bitField0_; + // optional uint32 gameId = 1; + public static final int GAMEID_FIELD_NUMBER = 1; + private int gameId_; + /** + * optional uint32 gameId = 1; + */ + public boolean hasGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * optional uint32 gameId = 1; + */ + public int getGameId() { + return gameId_; + } + + // optional uint32 playerId = 2; + public static final int PLAYERID_FIELD_NUMBER = 2; + private int playerId_; + /** + * optional uint32 playerId = 2; + */ + public boolean hasPlayerId() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * optional uint32 playerId = 2; + */ + public int getPlayerId() { + return playerId_; + } + + // required .ChatMessage.ChatType chatType = 3; + public static final int CHATTYPE_FIELD_NUMBER = 3; + private de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType chatType_; + /** + * required .ChatMessage.ChatType chatType = 3; + */ + public boolean hasChatType() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + /** + * required .ChatMessage.ChatType chatType = 3; + */ + public de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType getChatType() { + return chatType_; + } + + // required string chatText = 4; + public static final int CHATTEXT_FIELD_NUMBER = 4; + private java.lang.Object chatText_; + /** + * required string chatText = 4; + */ + public boolean hasChatText() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * required string chatText = 4; + */ + public java.lang.String getChatText() { + java.lang.Object ref = chatText_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + chatText_ = s; + } + return s; + } + } + /** + * required string chatText = 4; + */ + public com.google.protobuf.ByteString + getChatTextBytes() { + java.lang.Object ref = chatText_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + chatText_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private void initFields() { + gameId_ = 0; + playerId_ = 0; + chatType_ = de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType.chatTypeLobby; + chatText_ = ""; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasChatType()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasChatText()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, playerId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeEnum(3, chatType_.getNumber()); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeBytes(4, getChatTextBytes()); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, gameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, playerId_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(3, chatType_.getNumber()); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(4, getChatTextBytes()); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ChatMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.ChatMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.ChatMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ChatMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code ChatMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.ChatMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.ChatMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.ChatMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + gameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + playerId_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + chatType_ = de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType.chatTypeLobby; + bitField0_ = (bitField0_ & ~0x00000004); + chatText_ = ""; + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.ChatMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.ChatMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.ChatMessage build() { + de.pokerth.protocol.ProtoBuf.ChatMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.ChatMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.ChatMessage result = new de.pokerth.protocol.ProtoBuf.ChatMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.gameId_ = gameId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.playerId_ = playerId_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.chatType_ = chatType_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.chatText_ = chatText_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ChatMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.ChatMessage.getDefaultInstance()) return this; + if (other.hasGameId()) { + setGameId(other.getGameId()); + } + if (other.hasPlayerId()) { + setPlayerId(other.getPlayerId()); + } + if (other.hasChatType()) { + setChatType(other.getChatType()); + } + if (other.hasChatText()) { + bitField0_ |= 0x00000008; + chatText_ = other.chatText_; + + } + return this; + } + + public final boolean isInitialized() { + if (!hasChatType()) { + + return false; + } + if (!hasChatText()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.ChatMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.ChatMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // optional uint32 gameId = 1; private int gameId_ ; + /** + * optional uint32 gameId = 1; + */ public boolean hasGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * optional uint32 gameId = 1; + */ public int getGameId() { return gameId_; } + /** + * optional uint32 gameId = 1; + */ public Builder setGameId(int value) { bitField0_ |= 0x00000001; gameId_ = value; return this; } + /** + * optional uint32 gameId = 1; + */ public Builder clearGameId() { bitField0_ = (bitField0_ & ~0x00000001); gameId_ = 0; return this; } - + // optional uint32 playerId = 2; private int playerId_ ; + /** + * optional uint32 playerId = 2; + */ public boolean hasPlayerId() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * optional uint32 playerId = 2; + */ public int getPlayerId() { return playerId_; } + /** + * optional uint32 playerId = 2; + */ public Builder setPlayerId(int value) { bitField0_ |= 0x00000002; playerId_ = value; return this; } + /** + * optional uint32 playerId = 2; + */ public Builder clearPlayerId() { bitField0_ = (bitField0_ & ~0x00000002); playerId_ = 0; return this; } - + // required .ChatMessage.ChatType chatType = 3; private de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType chatType_ = de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType.chatTypeLobby; + /** + * required .ChatMessage.ChatType chatType = 3; + */ public boolean hasChatType() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * required .ChatMessage.ChatType chatType = 3; + */ public de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType getChatType() { return chatType_; } + /** + * required .ChatMessage.ChatType chatType = 3; + */ public Builder setChatType(de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType value) { if (value == null) { throw new NullPointerException(); @@ -34697,29 +43694,59 @@ public final class ProtoBuf { return this; } + /** + * required .ChatMessage.ChatType chatType = 3; + */ public Builder clearChatType() { bitField0_ = (bitField0_ & ~0x00000004); chatType_ = de.pokerth.protocol.ProtoBuf.ChatMessage.ChatType.chatTypeLobby; return this; } - + // required string chatText = 4; private java.lang.Object chatText_ = ""; + /** + * required string chatText = 4; + */ public boolean hasChatText() { return ((bitField0_ & 0x00000008) == 0x00000008); } - public String getChatText() { + /** + * required string chatText = 4; + */ + public java.lang.String getChatText() { java.lang.Object ref = chatText_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); chatText_ = s; return s; } else { - return (String) ref; + return (java.lang.String) ref; } } - public Builder setChatText(String value) { + /** + * required string chatText = 4; + */ + public com.google.protobuf.ByteString + getChatTextBytes() { + java.lang.Object ref = chatText_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + chatText_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string chatText = 4; + */ + public Builder setChatText( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } @@ -34728,87 +43755,176 @@ public final class ProtoBuf { return this; } + /** + * required string chatText = 4; + */ public Builder clearChatText() { bitField0_ = (bitField0_ & ~0x00000008); chatText_ = getDefaultInstance().getChatText(); return this; } - void setChatText(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000008; + /** + * required string chatText = 4; + */ + public Builder setChatTextBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; chatText_ = value; + return this; } - + // @@protoc_insertion_point(builder_scope:ChatMessage) } - + static { defaultInstance = new ChatMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:ChatMessage) } - + public interface ChatRejectMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required string chatText = 1; + /** + * required string chatText = 1; + */ boolean hasChatText(); - String getChatText(); + /** + * required string chatText = 1; + */ + java.lang.String getChatText(); + /** + * required string chatText = 1; + */ + com.google.protobuf.ByteString + getChatTextBytes(); } + /** + * Protobuf type {@code ChatRejectMessage} + */ public static final class ChatRejectMessage extends com.google.protobuf.GeneratedMessageLite implements ChatRejectMessageOrBuilder { // Use ChatRejectMessage.newBuilder() to construct. - private ChatRejectMessage(Builder builder) { + private ChatRejectMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private ChatRejectMessage(boolean noInit) {} - + private static final ChatRejectMessage defaultInstance; public static ChatRejectMessage getDefaultInstance() { return defaultInstance; } - + public ChatRejectMessage getDefaultInstanceForType() { return defaultInstance; } - + + private ChatRejectMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + chatText_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ChatRejectMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ChatRejectMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required string chatText = 1; public static final int CHATTEXT_FIELD_NUMBER = 1; private java.lang.Object chatText_; + /** + * required string chatText = 1; + */ public boolean hasChatText() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public String getChatText() { + /** + * required string chatText = 1; + */ + public java.lang.String getChatText() { java.lang.Object ref = chatText_; - if (ref instanceof String) { - return (String) ref; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { chatText_ = s; } return s; } } - private com.google.protobuf.ByteString getChatTextBytes() { + /** + * required string chatText = 1; + */ + public com.google.protobuf.ByteString + getChatTextBytes() { java.lang.Object ref = chatText_; - if (ref instanceof String) { + if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); chatText_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } - + private void initFields() { chatText_ = ""; } @@ -34816,7 +43932,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasChatText()) { memoizedIsInitialized = 0; return false; @@ -34824,7 +43940,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -34832,12 +43948,12 @@ public final class ProtoBuf { output.writeBytes(1, getChatTextBytes()); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -34846,88 +43962,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.ChatRejectMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.ChatRejectMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ChatRejectMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.ChatRejectMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ChatRejectMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.ChatRejectMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ChatRejectMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.ChatRejectMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ChatRejectMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.ChatRejectMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ChatRejectMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code ChatRejectMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.ChatRejectMessage, Builder> @@ -34936,28 +44041,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); chatText_ = ""; bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.ChatRejectMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.ChatRejectMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.ChatRejectMessage build() { de.pokerth.protocol.ProtoBuf.ChatRejectMessage result = buildPartial(); if (!result.isInitialized()) { @@ -34965,17 +44070,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.ChatRejectMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.ChatRejectMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.ChatRejectMessage buildPartial() { de.pokerth.protocol.ProtoBuf.ChatRejectMessage result = new de.pokerth.protocol.ProtoBuf.ChatRejectMessage(this); int from_bitField0_ = bitField0_; @@ -34987,15 +44082,17 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ChatRejectMessage other) { if (other == de.pokerth.protocol.ProtoBuf.ChatRejectMessage.getDefaultInstance()) return this; if (other.hasChatText()) { - setChatText(other.getChatText()); + bitField0_ |= 0x00000001; + chatText_ = other.chatText_; + } return this; } - + public final boolean isInitialized() { if (!hasChatText()) { @@ -35003,51 +44100,69 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 10: { - bitField0_ |= 0x00000001; - chatText_ = input.readBytes(); - break; - } + de.pokerth.protocol.ProtoBuf.ChatRejectMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.ChatRejectMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required string chatText = 1; private java.lang.Object chatText_ = ""; + /** + * required string chatText = 1; + */ public boolean hasChatText() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public String getChatText() { + /** + * required string chatText = 1; + */ + public java.lang.String getChatText() { java.lang.Object ref = chatText_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); chatText_ = s; return s; } else { - return (String) ref; + return (java.lang.String) ref; } } - public Builder setChatText(String value) { + /** + * required string chatText = 1; + */ + public com.google.protobuf.ByteString + getChatTextBytes() { + java.lang.Object ref = chatText_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + chatText_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string chatText = 1; + */ + public Builder setChatText( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } @@ -35056,87 +44171,176 @@ public final class ProtoBuf { return this; } + /** + * required string chatText = 1; + */ public Builder clearChatText() { bitField0_ = (bitField0_ & ~0x00000001); chatText_ = getDefaultInstance().getChatText(); return this; } - void setChatText(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000001; + /** + * required string chatText = 1; + */ + public Builder setChatTextBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; chatText_ = value; + return this; } - + // @@protoc_insertion_point(builder_scope:ChatRejectMessage) } - + static { defaultInstance = new ChatRejectMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:ChatRejectMessage) } - + public interface DialogMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required string notificationText = 1; + /** + * required string notificationText = 1; + */ boolean hasNotificationText(); - String getNotificationText(); + /** + * required string notificationText = 1; + */ + java.lang.String getNotificationText(); + /** + * required string notificationText = 1; + */ + com.google.protobuf.ByteString + getNotificationTextBytes(); } + /** + * Protobuf type {@code DialogMessage} + */ public static final class DialogMessage extends com.google.protobuf.GeneratedMessageLite implements DialogMessageOrBuilder { // Use DialogMessage.newBuilder() to construct. - private DialogMessage(Builder builder) { + private DialogMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private DialogMessage(boolean noInit) {} - + private static final DialogMessage defaultInstance; public static DialogMessage getDefaultInstance() { return defaultInstance; } - + public DialogMessage getDefaultInstanceForType() { return defaultInstance; } - + + private DialogMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 10: { + bitField0_ |= 0x00000001; + notificationText_ = input.readBytes(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public DialogMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new DialogMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required string notificationText = 1; public static final int NOTIFICATIONTEXT_FIELD_NUMBER = 1; private java.lang.Object notificationText_; + /** + * required string notificationText = 1; + */ public boolean hasNotificationText() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public String getNotificationText() { + /** + * required string notificationText = 1; + */ + public java.lang.String getNotificationText() { java.lang.Object ref = notificationText_; - if (ref instanceof String) { - return (String) ref; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { + java.lang.String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { notificationText_ = s; } return s; } } - private com.google.protobuf.ByteString getNotificationTextBytes() { + /** + * required string notificationText = 1; + */ + public com.google.protobuf.ByteString + getNotificationTextBytes() { java.lang.Object ref = notificationText_; - if (ref instanceof String) { + if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); notificationText_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; } } - + private void initFields() { notificationText_ = ""; } @@ -35144,7 +44348,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasNotificationText()) { memoizedIsInitialized = 0; return false; @@ -35152,7 +44356,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -35160,12 +44364,12 @@ public final class ProtoBuf { output.writeBytes(1, getNotificationTextBytes()); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -35174,88 +44378,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.DialogMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.DialogMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.DialogMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.DialogMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.DialogMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.DialogMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.DialogMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.DialogMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.DialogMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.DialogMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.DialogMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code DialogMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.DialogMessage, Builder> @@ -35264,28 +44457,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); notificationText_ = ""; bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.DialogMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.DialogMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.DialogMessage build() { de.pokerth.protocol.ProtoBuf.DialogMessage result = buildPartial(); if (!result.isInitialized()) { @@ -35293,17 +44486,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.DialogMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.DialogMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.DialogMessage buildPartial() { de.pokerth.protocol.ProtoBuf.DialogMessage result = new de.pokerth.protocol.ProtoBuf.DialogMessage(this); int from_bitField0_ = bitField0_; @@ -35315,15 +44498,17 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.DialogMessage other) { if (other == de.pokerth.protocol.ProtoBuf.DialogMessage.getDefaultInstance()) return this; if (other.hasNotificationText()) { - setNotificationText(other.getNotificationText()); + bitField0_ |= 0x00000001; + notificationText_ = other.notificationText_; + } return this; } - + public final boolean isInitialized() { if (!hasNotificationText()) { @@ -35331,51 +44516,69 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 10: { - bitField0_ |= 0x00000001; - notificationText_ = input.readBytes(); - break; - } + de.pokerth.protocol.ProtoBuf.DialogMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.DialogMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required string notificationText = 1; private java.lang.Object notificationText_ = ""; + /** + * required string notificationText = 1; + */ public boolean hasNotificationText() { return ((bitField0_ & 0x00000001) == 0x00000001); } - public String getNotificationText() { + /** + * required string notificationText = 1; + */ + public java.lang.String getNotificationText() { java.lang.Object ref = notificationText_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); + if (!(ref instanceof java.lang.String)) { + java.lang.String s = ((com.google.protobuf.ByteString) ref) + .toStringUtf8(); notificationText_ = s; return s; } else { - return (String) ref; + return (java.lang.String) ref; } } - public Builder setNotificationText(String value) { + /** + * required string notificationText = 1; + */ + public com.google.protobuf.ByteString + getNotificationTextBytes() { + java.lang.Object ref = notificationText_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + notificationText_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * required string notificationText = 1; + */ + public Builder setNotificationText( + java.lang.String value) { if (value == null) { throw new NullPointerException(); } @@ -35384,357 +44587,103 @@ public final class ProtoBuf { return this; } + /** + * required string notificationText = 1; + */ public Builder clearNotificationText() { bitField0_ = (bitField0_ & ~0x00000001); notificationText_ = getDefaultInstance().getNotificationText(); return this; } - void setNotificationText(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000001; + /** + * required string notificationText = 1; + */ + public Builder setNotificationTextBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; notificationText_ = value; + return this; } - + // @@protoc_insertion_point(builder_scope:DialogMessage) } - + static { defaultInstance = new DialogMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:DialogMessage) } - + public interface TimeoutWarningMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; + /** + * required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; + */ boolean hasTimeoutReason(); + /** + * required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; + */ de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason getTimeoutReason(); - + // required uint32 remainingSeconds = 2; + /** + * required uint32 remainingSeconds = 2; + */ boolean hasRemainingSeconds(); + /** + * required uint32 remainingSeconds = 2; + */ int getRemainingSeconds(); } + /** + * Protobuf type {@code TimeoutWarningMessage} + */ public static final class TimeoutWarningMessage extends com.google.protobuf.GeneratedMessageLite implements TimeoutWarningMessageOrBuilder { // Use TimeoutWarningMessage.newBuilder() to construct. - private TimeoutWarningMessage(Builder builder) { + private TimeoutWarningMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private TimeoutWarningMessage(boolean noInit) {} - + private static final TimeoutWarningMessage defaultInstance; public static TimeoutWarningMessage getDefaultInstance() { return defaultInstance; } - + public TimeoutWarningMessage getDefaultInstanceForType() { return defaultInstance; } - - public enum TimeoutReason - implements com.google.protobuf.Internal.EnumLite { - timeoutNoDataReceived(0, 0), - timeoutInactiveGame(1, 1), - timeoutKickAfterAutofold(2, 2), - ; - - public static final int timeoutNoDataReceived_VALUE = 0; - public static final int timeoutInactiveGame_VALUE = 1; - public static final int timeoutKickAfterAutofold_VALUE = 2; - - - public final int getNumber() { return value; } - - public static TimeoutReason valueOf(int value) { - switch (value) { - case 0: return timeoutNoDataReceived; - case 1: return timeoutInactiveGame; - case 2: return timeoutKickAfterAutofold; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public TimeoutReason findValueByNumber(int number) { - return TimeoutReason.valueOf(number); - } - }; - - private final int value; - - private TimeoutReason(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:TimeoutWarningMessage.TimeoutReason) - } - - private int bitField0_; - // required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; - public static final int TIMEOUTREASON_FIELD_NUMBER = 1; - private de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason timeoutReason_; - public boolean hasTimeoutReason() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason getTimeoutReason() { - return timeoutReason_; - } - - // required uint32 remainingSeconds = 2; - public static final int REMAININGSECONDS_FIELD_NUMBER = 2; - private int remainingSeconds_; - public boolean hasRemainingSeconds() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public int getRemainingSeconds() { - return remainingSeconds_; - } - - private void initFields() { - timeoutReason_ = de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason.timeoutNoDataReceived; - remainingSeconds_ = 0; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasTimeoutReason()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasRemainingSeconds()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeEnum(1, timeoutReason_.getNumber()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt32(2, remainingSeconds_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(1, timeoutReason_.getNumber()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(2, remainingSeconds_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom( + + private TimeoutWarningMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.TimeoutWarningMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - timeoutReason_ = de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason.timeoutNoDataReceived; - bitField0_ = (bitField0_ & ~0x00000001); - remainingSeconds_ = 0; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage build() { - de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage result = new de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.timeoutReason_ = timeoutReason_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.remainingSeconds_ = remainingSeconds_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.getDefaultInstance()) return this; - if (other.hasTimeoutReason()) { - setTimeoutReason(other.getTimeoutReason()); - } - if (other.hasRemainingSeconds()) { - setRemainingSeconds(other.getRemainingSeconds()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasTimeoutReason()) { - - return false; - } - if (!hasRemainingSeconds()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -35754,18 +44703,363 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public TimeoutWarningMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new TimeoutWarningMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code TimeoutWarningMessage.TimeoutReason} + */ + public enum TimeoutReason + implements com.google.protobuf.Internal.EnumLite { + /** + * timeoutNoDataReceived = 0; + */ + timeoutNoDataReceived(0, 0), + /** + * timeoutInactiveGame = 1; + */ + timeoutInactiveGame(1, 1), + /** + * timeoutKickAfterAutofold = 2; + */ + timeoutKickAfterAutofold(2, 2), + ; + + /** + * timeoutNoDataReceived = 0; + */ + public static final int timeoutNoDataReceived_VALUE = 0; + /** + * timeoutInactiveGame = 1; + */ + public static final int timeoutInactiveGame_VALUE = 1; + /** + * timeoutKickAfterAutofold = 2; + */ + public static final int timeoutKickAfterAutofold_VALUE = 2; + + + public final int getNumber() { return value; } + + public static TimeoutReason valueOf(int value) { + switch (value) { + case 0: return timeoutNoDataReceived; + case 1: return timeoutInactiveGame; + case 2: return timeoutKickAfterAutofold; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public TimeoutReason findValueByNumber(int number) { + return TimeoutReason.valueOf(number); + } + }; + + private final int value; + + private TimeoutReason(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:TimeoutWarningMessage.TimeoutReason) + } + + private int bitField0_; + // required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; + public static final int TIMEOUTREASON_FIELD_NUMBER = 1; + private de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason timeoutReason_; + /** + * required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; + */ + public boolean hasTimeoutReason() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; + */ + public de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason getTimeoutReason() { + return timeoutReason_; + } + + // required uint32 remainingSeconds = 2; + public static final int REMAININGSECONDS_FIELD_NUMBER = 2; + private int remainingSeconds_; + /** + * required uint32 remainingSeconds = 2; + */ + public boolean hasRemainingSeconds() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required uint32 remainingSeconds = 2; + */ + public int getRemainingSeconds() { + return remainingSeconds_; + } + + private void initFields() { + timeoutReason_ = de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason.timeoutNoDataReceived; + remainingSeconds_ = 0; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasTimeoutReason()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasRemainingSeconds()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeEnum(1, timeoutReason_.getNumber()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt32(2, remainingSeconds_); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, timeoutReason_.getNumber()); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(2, remainingSeconds_); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code TimeoutWarningMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.TimeoutWarningMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + timeoutReason_ = de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason.timeoutNoDataReceived; + bitField0_ = (bitField0_ & ~0x00000001); + remainingSeconds_ = 0; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage build() { + de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage result = new de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.timeoutReason_ = timeoutReason_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.remainingSeconds_ = remainingSeconds_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.getDefaultInstance()) return this; + if (other.hasTimeoutReason()) { + setTimeoutReason(other.getTimeoutReason()); + } + if (other.hasRemainingSeconds()) { + setRemainingSeconds(other.getRemainingSeconds()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasTimeoutReason()) { + + return false; + } + if (!hasRemainingSeconds()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; private de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason timeoutReason_ = de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason.timeoutNoDataReceived; + /** + * required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; + */ public boolean hasTimeoutReason() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; + */ public de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason getTimeoutReason() { return timeoutReason_; } + /** + * required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; + */ public Builder setTimeoutReason(de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason value) { if (value == null) { throw new NullPointerException(); @@ -35775,173 +45069,227 @@ public final class ProtoBuf { return this; } + /** + * required .TimeoutWarningMessage.TimeoutReason timeoutReason = 1; + */ public Builder clearTimeoutReason() { bitField0_ = (bitField0_ & ~0x00000001); timeoutReason_ = de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.TimeoutReason.timeoutNoDataReceived; return this; } - + // required uint32 remainingSeconds = 2; private int remainingSeconds_ ; + /** + * required uint32 remainingSeconds = 2; + */ public boolean hasRemainingSeconds() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required uint32 remainingSeconds = 2; + */ public int getRemainingSeconds() { return remainingSeconds_; } + /** + * required uint32 remainingSeconds = 2; + */ public Builder setRemainingSeconds(int value) { bitField0_ |= 0x00000002; remainingSeconds_ = value; return this; } + /** + * required uint32 remainingSeconds = 2; + */ public Builder clearRemainingSeconds() { bitField0_ = (bitField0_ & ~0x00000002); remainingSeconds_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:TimeoutWarningMessage) } - + static { defaultInstance = new TimeoutWarningMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:TimeoutWarningMessage) } - + public interface ResetTimeoutMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { } + /** + * Protobuf type {@code ResetTimeoutMessage} + */ public static final class ResetTimeoutMessage extends com.google.protobuf.GeneratedMessageLite implements ResetTimeoutMessageOrBuilder { // Use ResetTimeoutMessage.newBuilder() to construct. - private ResetTimeoutMessage(Builder builder) { + private ResetTimeoutMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private ResetTimeoutMessage(boolean noInit) {} - + private static final ResetTimeoutMessage defaultInstance; public static ResetTimeoutMessage getDefaultInstance() { return defaultInstance; } - + public ResetTimeoutMessage getDefaultInstanceForType() { return defaultInstance; } - + + private ResetTimeoutMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ResetTimeoutMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ResetTimeoutMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private void initFields() { } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code ResetTimeoutMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage, Builder> @@ -35950,26 +45298,26 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage build() { de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage result = buildPartial(); if (!result.isInitialized()) { @@ -35977,348 +45325,113 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage buildPartial() { de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage result = new de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage(this); return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage other) { if (other == de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage.getDefaultInstance()) return this; return this; } - + public final boolean isInitialized() { return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } + de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - - + // @@protoc_insertion_point(builder_scope:ResetTimeoutMessage) } - + static { defaultInstance = new ResetTimeoutMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:ResetTimeoutMessage) } - + public interface ReportAvatarMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 reportedPlayerId = 1; + /** + * required uint32 reportedPlayerId = 1; + */ boolean hasReportedPlayerId(); + /** + * required uint32 reportedPlayerId = 1; + */ int getReportedPlayerId(); - + // required bytes reportedAvatarHash = 2; + /** + * required bytes reportedAvatarHash = 2; + */ boolean hasReportedAvatarHash(); + /** + * required bytes reportedAvatarHash = 2; + */ com.google.protobuf.ByteString getReportedAvatarHash(); } + /** + * Protobuf type {@code ReportAvatarMessage} + */ public static final class ReportAvatarMessage extends com.google.protobuf.GeneratedMessageLite implements ReportAvatarMessageOrBuilder { // Use ReportAvatarMessage.newBuilder() to construct. - private ReportAvatarMessage(Builder builder) { + private ReportAvatarMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private ReportAvatarMessage(boolean noInit) {} - + private static final ReportAvatarMessage defaultInstance; public static ReportAvatarMessage getDefaultInstance() { return defaultInstance; } - + public ReportAvatarMessage getDefaultInstanceForType() { return defaultInstance; } - - private int bitField0_; - // required uint32 reportedPlayerId = 1; - public static final int REPORTEDPLAYERID_FIELD_NUMBER = 1; - private int reportedPlayerId_; - public boolean hasReportedPlayerId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getReportedPlayerId() { - return reportedPlayerId_; - } - - // required bytes reportedAvatarHash = 2; - public static final int REPORTEDAVATARHASH_FIELD_NUMBER = 2; - private com.google.protobuf.ByteString reportedAvatarHash_; - public boolean hasReportedAvatarHash() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public com.google.protobuf.ByteString getReportedAvatarHash() { - return reportedAvatarHash_; - } - - private void initFields() { - reportedPlayerId_ = 0; - reportedAvatarHash_ = com.google.protobuf.ByteString.EMPTY; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasReportedPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasReportedAvatarHash()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, reportedPlayerId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeBytes(2, reportedAvatarHash_); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, reportedPlayerId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(2, reportedAvatarHash_); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom( + + private ReportAvatarMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ReportAvatarMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.ReportAvatarMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.ReportAvatarMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - reportedPlayerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - reportedAvatarHash_ = com.google.protobuf.ByteString.EMPTY; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.ReportAvatarMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.ReportAvatarMessage build() { - de.pokerth.protocol.ProtoBuf.ReportAvatarMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.ReportAvatarMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.ReportAvatarMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.ReportAvatarMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.ReportAvatarMessage result = new de.pokerth.protocol.ProtoBuf.ReportAvatarMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.reportedPlayerId_ = reportedPlayerId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.reportedAvatarHash_ = reportedAvatarHash_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ReportAvatarMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.getDefaultInstance()) return this; - if (other.hasReportedPlayerId()) { - setReportedPlayerId(other.getReportedPlayerId()); - } - if (other.hasReportedAvatarHash()) { - setReportedAvatarHash(other.getReportedAvatarHash()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasReportedPlayerId()) { - - return false; - } - if (!hasReportedAvatarHash()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -36334,181 +45447,84 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); } - - private int bitField0_; - - // required uint32 reportedPlayerId = 1; - private int reportedPlayerId_ ; - public boolean hasReportedPlayerId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getReportedPlayerId() { - return reportedPlayerId_; - } - public Builder setReportedPlayerId(int value) { - bitField0_ |= 0x00000001; - reportedPlayerId_ = value; - - return this; - } - public Builder clearReportedPlayerId() { - bitField0_ = (bitField0_ & ~0x00000001); - reportedPlayerId_ = 0; - - return this; - } - - // required bytes reportedAvatarHash = 2; - private com.google.protobuf.ByteString reportedAvatarHash_ = com.google.protobuf.ByteString.EMPTY; - public boolean hasReportedAvatarHash() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public com.google.protobuf.ByteString getReportedAvatarHash() { - return reportedAvatarHash_; - } - public Builder setReportedAvatarHash(com.google.protobuf.ByteString value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000002; - reportedAvatarHash_ = value; - - return this; - } - public Builder clearReportedAvatarHash() { - bitField0_ = (bitField0_ & ~0x00000002); - reportedAvatarHash_ = getDefaultInstance().getReportedAvatarHash(); - - return this; - } - - // @@protoc_insertion_point(builder_scope:ReportAvatarMessage) } - - static { - defaultInstance = new ReportAvatarMessage(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:ReportAvatarMessage) - } - - public interface ReportAvatarAckMessageOrBuilder - extends com.google.protobuf.MessageLiteOrBuilder { - - // required uint32 reportedPlayerId = 1; - boolean hasReportedPlayerId(); - int getReportedPlayerId(); - - // required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; - boolean hasReportAvatarResult(); - de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult getReportAvatarResult(); - } - public static final class ReportAvatarAckMessage extends - com.google.protobuf.GeneratedMessageLite - implements ReportAvatarAckMessageOrBuilder { - // Use ReportAvatarAckMessage.newBuilder() to construct. - private ReportAvatarAckMessage(Builder builder) { - super(builder); - } - private ReportAvatarAckMessage(boolean noInit) {} - - private static final ReportAvatarAckMessage defaultInstance; - public static ReportAvatarAckMessage getDefaultInstance() { - return defaultInstance; - } - - public ReportAvatarAckMessage getDefaultInstanceForType() { - return defaultInstance; - } - - public enum ReportAvatarResult - implements com.google.protobuf.Internal.EnumLite { - avatarReportAccepted(0, 0), - avatarReportDuplicate(1, 1), - avatarReportInvalid(2, 2), - ; - - public static final int avatarReportAccepted_VALUE = 0; - public static final int avatarReportDuplicate_VALUE = 1; - public static final int avatarReportInvalid_VALUE = 2; - - - public final int getNumber() { return value; } - - public static ReportAvatarResult valueOf(int value) { - switch (value) { - case 0: return avatarReportAccepted; - case 1: return avatarReportDuplicate; - case 2: return avatarReportInvalid; - default: return null; - } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ReportAvatarMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ReportAvatarMessage(input, extensionRegistry); } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public ReportAvatarResult findValueByNumber(int number) { - return ReportAvatarResult.valueOf(number); - } - }; - - private final int value; - - private ReportAvatarResult(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:ReportAvatarAckMessage.ReportAvatarResult) + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; } - + private int bitField0_; // required uint32 reportedPlayerId = 1; public static final int REPORTEDPLAYERID_FIELD_NUMBER = 1; private int reportedPlayerId_; + /** + * required uint32 reportedPlayerId = 1; + */ public boolean hasReportedPlayerId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 reportedPlayerId = 1; + */ public int getReportedPlayerId() { return reportedPlayerId_; } - - // required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; - public static final int REPORTAVATARRESULT_FIELD_NUMBER = 2; - private de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult_; - public boolean hasReportAvatarResult() { + + // required bytes reportedAvatarHash = 2; + public static final int REPORTEDAVATARHASH_FIELD_NUMBER = 2; + private com.google.protobuf.ByteString reportedAvatarHash_; + /** + * required bytes reportedAvatarHash = 2; + */ + public boolean hasReportedAvatarHash() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult getReportAvatarResult() { - return reportAvatarResult_; + /** + * required bytes reportedAvatarHash = 2; + */ + public com.google.protobuf.ByteString getReportedAvatarHash() { + return reportedAvatarHash_; } - + private void initFields() { reportedPlayerId_ = 0; - reportAvatarResult_ = de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult.avatarReportAccepted; + reportedAvatarHash_ = com.google.protobuf.ByteString.EMPTY; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasReportedPlayerId()) { memoizedIsInitialized = 0; return false; } - if (!hasReportAvatarResult()) { + if (!hasReportedAvatarHash()) { memoizedIsInitialized = 0; return false; } memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -36516,15 +45532,15 @@ public final class ProtoBuf { output.writeUInt32(1, reportedPlayerId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeEnum(2, reportAvatarResult_.getNumber()); + output.writeBytes(2, reportedAvatarHash_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -36532,145 +45548,124 @@ public final class ProtoBuf { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, reportAvatarResult_.getNumber()); + .computeBytesSize(2, reportedAvatarHash_); } memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - - public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom( + + public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom(byte[] data) + public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseDelimitedFrom(java.io.InputStream input) + public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseDelimitedFrom( + public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } - public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom( + public static de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage prototype) { + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ReportAvatarMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code ReportAvatarMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.newBuilder() + de.pokerth.protocol.ProtoBuf.ReportAvatarMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.ReportAvatarMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.newBuilder() private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); reportedPlayerId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); - reportAvatarResult_ = de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult.avatarReportAccepted; + reportedAvatarHash_ = com.google.protobuf.ByteString.EMPTY; bitField0_ = (bitField0_ & ~0x00000002); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - - public de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.getDefaultInstance(); + + public de.pokerth.protocol.ProtoBuf.ReportAvatarMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.getDefaultInstance(); } - - public de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage build() { - de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage result = buildPartial(); + + public de.pokerth.protocol.ProtoBuf.ReportAvatarMessage build() { + de.pokerth.protocol.ProtoBuf.ReportAvatarMessage result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - - private de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage result = new de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage(this); + + public de.pokerth.protocol.ProtoBuf.ReportAvatarMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.ReportAvatarMessage result = new de.pokerth.protocol.ProtoBuf.ReportAvatarMessage(this); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -36680,48 +45675,196 @@ public final class ProtoBuf { if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.reportAvatarResult_ = reportAvatarResult_; + result.reportedAvatarHash_ = reportedAvatarHash_; result.bitField0_ = to_bitField0_; return result; } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.getDefaultInstance()) return this; + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ReportAvatarMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.getDefaultInstance()) return this; if (other.hasReportedPlayerId()) { setReportedPlayerId(other.getReportedPlayerId()); } - if (other.hasReportAvatarResult()) { - setReportAvatarResult(other.getReportAvatarResult()); + if (other.hasReportedAvatarHash()) { + setReportedAvatarHash(other.getReportedAvatarHash()); } return this; } - + public final boolean isInitialized() { if (!hasReportedPlayerId()) { return false; } - if (!hasReportAvatarResult()) { + if (!hasReportedAvatarHash()) { return false; } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { + de.pokerth.protocol.ProtoBuf.ReportAvatarMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.ReportAvatarMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + private int bitField0_; + + // required uint32 reportedPlayerId = 1; + private int reportedPlayerId_ ; + /** + * required uint32 reportedPlayerId = 1; + */ + public boolean hasReportedPlayerId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 reportedPlayerId = 1; + */ + public int getReportedPlayerId() { + return reportedPlayerId_; + } + /** + * required uint32 reportedPlayerId = 1; + */ + public Builder setReportedPlayerId(int value) { + bitField0_ |= 0x00000001; + reportedPlayerId_ = value; + + return this; + } + /** + * required uint32 reportedPlayerId = 1; + */ + public Builder clearReportedPlayerId() { + bitField0_ = (bitField0_ & ~0x00000001); + reportedPlayerId_ = 0; + + return this; + } + + // required bytes reportedAvatarHash = 2; + private com.google.protobuf.ByteString reportedAvatarHash_ = com.google.protobuf.ByteString.EMPTY; + /** + * required bytes reportedAvatarHash = 2; + */ + public boolean hasReportedAvatarHash() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required bytes reportedAvatarHash = 2; + */ + public com.google.protobuf.ByteString getReportedAvatarHash() { + return reportedAvatarHash_; + } + /** + * required bytes reportedAvatarHash = 2; + */ + public Builder setReportedAvatarHash(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + reportedAvatarHash_ = value; + + return this; + } + /** + * required bytes reportedAvatarHash = 2; + */ + public Builder clearReportedAvatarHash() { + bitField0_ = (bitField0_ & ~0x00000002); + reportedAvatarHash_ = getDefaultInstance().getReportedAvatarHash(); + + return this; + } + + // @@protoc_insertion_point(builder_scope:ReportAvatarMessage) + } + + static { + defaultInstance = new ReportAvatarMessage(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:ReportAvatarMessage) + } + + public interface ReportAvatarAckMessageOrBuilder + extends com.google.protobuf.MessageLiteOrBuilder { + + // required uint32 reportedPlayerId = 1; + /** + * required uint32 reportedPlayerId = 1; + */ + boolean hasReportedPlayerId(); + /** + * required uint32 reportedPlayerId = 1; + */ + int getReportedPlayerId(); + + // required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; + /** + * required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; + */ + boolean hasReportAvatarResult(); + /** + * required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; + */ + de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult getReportAvatarResult(); + } + /** + * Protobuf type {@code ReportAvatarAckMessage} + */ + public static final class ReportAvatarAckMessage extends + com.google.protobuf.GeneratedMessageLite + implements ReportAvatarAckMessageOrBuilder { + // Use ReportAvatarAckMessage.newBuilder() to construct. + private ReportAvatarAckMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { + super(builder); + + } + private ReportAvatarAckMessage(boolean noInit) {} + + private static final ReportAvatarAckMessage defaultInstance; + public static ReportAvatarAckMessage getDefaultInstance() { + return defaultInstance; + } + + public ReportAvatarAckMessage getDefaultInstanceForType() { + return defaultInstance; + } + + private ReportAvatarAckMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -36741,39 +45884,396 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ReportAvatarAckMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ReportAvatarAckMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code ReportAvatarAckMessage.ReportAvatarResult} + */ + public enum ReportAvatarResult + implements com.google.protobuf.Internal.EnumLite { + /** + * avatarReportAccepted = 0; + */ + avatarReportAccepted(0, 0), + /** + * avatarReportDuplicate = 1; + */ + avatarReportDuplicate(1, 1), + /** + * avatarReportInvalid = 2; + */ + avatarReportInvalid(2, 2), + ; + + /** + * avatarReportAccepted = 0; + */ + public static final int avatarReportAccepted_VALUE = 0; + /** + * avatarReportDuplicate = 1; + */ + public static final int avatarReportDuplicate_VALUE = 1; + /** + * avatarReportInvalid = 2; + */ + public static final int avatarReportInvalid_VALUE = 2; + + + public final int getNumber() { return value; } + + public static ReportAvatarResult valueOf(int value) { + switch (value) { + case 0: return avatarReportAccepted; + case 1: return avatarReportDuplicate; + case 2: return avatarReportInvalid; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public ReportAvatarResult findValueByNumber(int number) { + return ReportAvatarResult.valueOf(number); + } + }; + + private final int value; + + private ReportAvatarResult(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:ReportAvatarAckMessage.ReportAvatarResult) + } + + private int bitField0_; + // required uint32 reportedPlayerId = 1; + public static final int REPORTEDPLAYERID_FIELD_NUMBER = 1; + private int reportedPlayerId_; + /** + * required uint32 reportedPlayerId = 1; + */ + public boolean hasReportedPlayerId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 reportedPlayerId = 1; + */ + public int getReportedPlayerId() { + return reportedPlayerId_; + } + + // required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; + public static final int REPORTAVATARRESULT_FIELD_NUMBER = 2; + private de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult_; + /** + * required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; + */ + public boolean hasReportAvatarResult() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; + */ + public de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult getReportAvatarResult() { + return reportAvatarResult_; + } + + private void initFields() { + reportedPlayerId_ = 0; + reportAvatarResult_ = de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult.avatarReportAccepted; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasReportedPlayerId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasReportAvatarResult()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, reportedPlayerId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeEnum(2, reportAvatarResult_.getNumber()); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, reportedPlayerId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(2, reportAvatarResult_.getNumber()); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code ReportAvatarAckMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + reportedPlayerId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + reportAvatarResult_ = de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult.avatarReportAccepted; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage build() { + de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage result = new de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.reportedPlayerId_ = reportedPlayerId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.reportAvatarResult_ = reportAvatarResult_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.getDefaultInstance()) return this; + if (other.hasReportedPlayerId()) { + setReportedPlayerId(other.getReportedPlayerId()); + } + if (other.hasReportAvatarResult()) { + setReportAvatarResult(other.getReportAvatarResult()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasReportedPlayerId()) { + + return false; + } + if (!hasReportAvatarResult()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 reportedPlayerId = 1; private int reportedPlayerId_ ; + /** + * required uint32 reportedPlayerId = 1; + */ public boolean hasReportedPlayerId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 reportedPlayerId = 1; + */ public int getReportedPlayerId() { return reportedPlayerId_; } + /** + * required uint32 reportedPlayerId = 1; + */ public Builder setReportedPlayerId(int value) { bitField0_ |= 0x00000001; reportedPlayerId_ = value; return this; } + /** + * required uint32 reportedPlayerId = 1; + */ public Builder clearReportedPlayerId() { bitField0_ = (bitField0_ & ~0x00000001); reportedPlayerId_ = 0; return this; } - + // required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; private de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult_ = de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult.avatarReportAccepted; + /** + * required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; + */ public boolean hasReportAvatarResult() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; + */ public de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult getReportAvatarResult() { return reportAvatarResult_; } + /** + * required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; + */ public Builder setReportAvatarResult(de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult value) { if (value == null) { throw new NullPointerException(); @@ -36783,60 +46283,131 @@ public final class ProtoBuf { return this; } + /** + * required .ReportAvatarAckMessage.ReportAvatarResult reportAvatarResult = 2; + */ public Builder clearReportAvatarResult() { bitField0_ = (bitField0_ & ~0x00000002); reportAvatarResult_ = de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.ReportAvatarResult.avatarReportAccepted; return this; } - + // @@protoc_insertion_point(builder_scope:ReportAvatarAckMessage) } - + static { defaultInstance = new ReportAvatarAckMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:ReportAvatarAckMessage) } - + public interface ReportGameMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 reportedGameId = 1; + /** + * required uint32 reportedGameId = 1; + */ boolean hasReportedGameId(); + /** + * required uint32 reportedGameId = 1; + */ int getReportedGameId(); } + /** + * Protobuf type {@code ReportGameMessage} + */ public static final class ReportGameMessage extends com.google.protobuf.GeneratedMessageLite implements ReportGameMessageOrBuilder { // Use ReportGameMessage.newBuilder() to construct. - private ReportGameMessage(Builder builder) { + private ReportGameMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private ReportGameMessage(boolean noInit) {} - + private static final ReportGameMessage defaultInstance; public static ReportGameMessage getDefaultInstance() { return defaultInstance; } - + public ReportGameMessage getDefaultInstanceForType() { return defaultInstance; } - + + private ReportGameMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + reportedGameId_ = input.readUInt32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ReportGameMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ReportGameMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required uint32 reportedGameId = 1; public static final int REPORTEDGAMEID_FIELD_NUMBER = 1; private int reportedGameId_; + /** + * required uint32 reportedGameId = 1; + */ public boolean hasReportedGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 reportedGameId = 1; + */ public int getReportedGameId() { return reportedGameId_; } - + private void initFields() { reportedGameId_ = 0; } @@ -36844,7 +46415,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasReportedGameId()) { memoizedIsInitialized = 0; return false; @@ -36852,7 +46423,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -36860,12 +46431,12 @@ public final class ProtoBuf { output.writeUInt32(1, reportedGameId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -36874,88 +46445,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.ReportGameMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.ReportGameMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ReportGameMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.ReportGameMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ReportGameMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.ReportGameMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ReportGameMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.ReportGameMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ReportGameMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.ReportGameMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ReportGameMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code ReportGameMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.ReportGameMessage, Builder> @@ -36964,28 +46524,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); reportedGameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.ReportGameMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.ReportGameMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.ReportGameMessage build() { de.pokerth.protocol.ProtoBuf.ReportGameMessage result = buildPartial(); if (!result.isInitialized()) { @@ -36993,17 +46553,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.ReportGameMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.ReportGameMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.ReportGameMessage buildPartial() { de.pokerth.protocol.ProtoBuf.ReportGameMessage result = new de.pokerth.protocol.ProtoBuf.ReportGameMessage(this); int from_bitField0_ = bitField0_; @@ -37015,7 +46565,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ReportGameMessage other) { if (other == de.pokerth.protocol.ProtoBuf.ReportGameMessage.getDefaultInstance()) return this; if (other.hasReportedGameId()) { @@ -37023,7 +46573,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasReportedGameId()) { @@ -37031,395 +46581,133 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - reportedGameId_ = input.readUInt32(); - break; - } + de.pokerth.protocol.ProtoBuf.ReportGameMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.ReportGameMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 reportedGameId = 1; private int reportedGameId_ ; + /** + * required uint32 reportedGameId = 1; + */ public boolean hasReportedGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 reportedGameId = 1; + */ public int getReportedGameId() { return reportedGameId_; } + /** + * required uint32 reportedGameId = 1; + */ public Builder setReportedGameId(int value) { bitField0_ |= 0x00000001; reportedGameId_ = value; return this; } + /** + * required uint32 reportedGameId = 1; + */ public Builder clearReportedGameId() { bitField0_ = (bitField0_ & ~0x00000001); reportedGameId_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:ReportGameMessage) } - + static { defaultInstance = new ReportGameMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:ReportGameMessage) } - + public interface ReportGameAckMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 reportedGameId = 1; + /** + * required uint32 reportedGameId = 1; + */ boolean hasReportedGameId(); + /** + * required uint32 reportedGameId = 1; + */ int getReportedGameId(); - + // required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; + /** + * required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; + */ boolean hasReportGameResult(); + /** + * required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; + */ de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult getReportGameResult(); } + /** + * Protobuf type {@code ReportGameAckMessage} + */ public static final class ReportGameAckMessage extends com.google.protobuf.GeneratedMessageLite implements ReportGameAckMessageOrBuilder { // Use ReportGameAckMessage.newBuilder() to construct. - private ReportGameAckMessage(Builder builder) { + private ReportGameAckMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private ReportGameAckMessage(boolean noInit) {} - + private static final ReportGameAckMessage defaultInstance; public static ReportGameAckMessage getDefaultInstance() { return defaultInstance; } - + public ReportGameAckMessage getDefaultInstanceForType() { return defaultInstance; } - - public enum ReportGameResult - implements com.google.protobuf.Internal.EnumLite { - gameReportAccepted(0, 0), - gameReportDuplicate(1, 1), - gameReportInvalid(2, 2), - ; - - public static final int gameReportAccepted_VALUE = 0; - public static final int gameReportDuplicate_VALUE = 1; - public static final int gameReportInvalid_VALUE = 2; - - - public final int getNumber() { return value; } - - public static ReportGameResult valueOf(int value) { - switch (value) { - case 0: return gameReportAccepted; - case 1: return gameReportDuplicate; - case 2: return gameReportInvalid; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public ReportGameResult findValueByNumber(int number) { - return ReportGameResult.valueOf(number); - } - }; - - private final int value; - - private ReportGameResult(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:ReportGameAckMessage.ReportGameResult) - } - - private int bitField0_; - // required uint32 reportedGameId = 1; - public static final int REPORTEDGAMEID_FIELD_NUMBER = 1; - private int reportedGameId_; - public boolean hasReportedGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getReportedGameId() { - return reportedGameId_; - } - - // required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; - public static final int REPORTGAMERESULT_FIELD_NUMBER = 2; - private de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult reportGameResult_; - public boolean hasReportGameResult() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult getReportGameResult() { - return reportGameResult_; - } - - private void initFields() { - reportedGameId_ = 0; - reportGameResult_ = de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult.gameReportAccepted; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasReportedGameId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasReportGameResult()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, reportedGameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeEnum(2, reportGameResult_.getNumber()); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, reportedGameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, reportGameResult_.getNumber()); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom( + + private ReportGameAckMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ReportGameAckMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.ReportGameAckMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.ReportGameAckMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - reportedGameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - reportGameResult_ = de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult.gameReportAccepted; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.ReportGameAckMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.ReportGameAckMessage build() { - de.pokerth.protocol.ProtoBuf.ReportGameAckMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.ReportGameAckMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.ReportGameAckMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.ReportGameAckMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.ReportGameAckMessage result = new de.pokerth.protocol.ProtoBuf.ReportGameAckMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.reportedGameId_ = reportedGameId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.reportGameResult_ = reportGameResult_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ReportGameAckMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.getDefaultInstance()) return this; - if (other.hasReportedGameId()) { - setReportedGameId(other.getReportedGameId()); - } - if (other.hasReportGameResult()) { - setReportGameResult(other.getReportGameResult()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasReportedGameId()) { - - return false; - } - if (!hasReportGameResult()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -37439,39 +46727,396 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ReportGameAckMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ReportGameAckMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code ReportGameAckMessage.ReportGameResult} + */ + public enum ReportGameResult + implements com.google.protobuf.Internal.EnumLite { + /** + * gameReportAccepted = 0; + */ + gameReportAccepted(0, 0), + /** + * gameReportDuplicate = 1; + */ + gameReportDuplicate(1, 1), + /** + * gameReportInvalid = 2; + */ + gameReportInvalid(2, 2), + ; + + /** + * gameReportAccepted = 0; + */ + public static final int gameReportAccepted_VALUE = 0; + /** + * gameReportDuplicate = 1; + */ + public static final int gameReportDuplicate_VALUE = 1; + /** + * gameReportInvalid = 2; + */ + public static final int gameReportInvalid_VALUE = 2; + + + public final int getNumber() { return value; } + + public static ReportGameResult valueOf(int value) { + switch (value) { + case 0: return gameReportAccepted; + case 1: return gameReportDuplicate; + case 2: return gameReportInvalid; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public ReportGameResult findValueByNumber(int number) { + return ReportGameResult.valueOf(number); + } + }; + + private final int value; + + private ReportGameResult(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:ReportGameAckMessage.ReportGameResult) + } + + private int bitField0_; + // required uint32 reportedGameId = 1; + public static final int REPORTEDGAMEID_FIELD_NUMBER = 1; + private int reportedGameId_; + /** + * required uint32 reportedGameId = 1; + */ + public boolean hasReportedGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 reportedGameId = 1; + */ + public int getReportedGameId() { + return reportedGameId_; + } + + // required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; + public static final int REPORTGAMERESULT_FIELD_NUMBER = 2; + private de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult reportGameResult_; + /** + * required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; + */ + public boolean hasReportGameResult() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; + */ + public de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult getReportGameResult() { + return reportGameResult_; + } + + private void initFields() { + reportedGameId_ = 0; + reportGameResult_ = de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult.gameReportAccepted; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasReportedGameId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasReportGameResult()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, reportedGameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeEnum(2, reportGameResult_.getNumber()); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, reportedGameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(2, reportGameResult_.getNumber()); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ReportGameAckMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code ReportGameAckMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.ReportGameAckMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.ReportGameAckMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + reportedGameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + reportGameResult_ = de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult.gameReportAccepted; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.ReportGameAckMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.ReportGameAckMessage build() { + de.pokerth.protocol.ProtoBuf.ReportGameAckMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.ReportGameAckMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.ReportGameAckMessage result = new de.pokerth.protocol.ProtoBuf.ReportGameAckMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.reportedGameId_ = reportedGameId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.reportGameResult_ = reportGameResult_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ReportGameAckMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.getDefaultInstance()) return this; + if (other.hasReportedGameId()) { + setReportedGameId(other.getReportedGameId()); + } + if (other.hasReportGameResult()) { + setReportGameResult(other.getReportGameResult()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasReportedGameId()) { + + return false; + } + if (!hasReportGameResult()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.ReportGameAckMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.ReportGameAckMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 reportedGameId = 1; private int reportedGameId_ ; + /** + * required uint32 reportedGameId = 1; + */ public boolean hasReportedGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 reportedGameId = 1; + */ public int getReportedGameId() { return reportedGameId_; } + /** + * required uint32 reportedGameId = 1; + */ public Builder setReportedGameId(int value) { bitField0_ |= 0x00000001; reportedGameId_ = value; return this; } + /** + * required uint32 reportedGameId = 1; + */ public Builder clearReportedGameId() { bitField0_ = (bitField0_ & ~0x00000001); reportedGameId_ = 0; return this; } - + // required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; private de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult reportGameResult_ = de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult.gameReportAccepted; + /** + * required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; + */ public boolean hasReportGameResult() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; + */ public de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult getReportGameResult() { return reportGameResult_; } + /** + * required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; + */ public Builder setReportGameResult(de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult value) { if (value == null) { throw new NullPointerException(); @@ -37481,87 +47126,249 @@ public final class ProtoBuf { return this; } + /** + * required .ReportGameAckMessage.ReportGameResult reportGameResult = 2; + */ public Builder clearReportGameResult() { bitField0_ = (bitField0_ & ~0x00000002); reportGameResult_ = de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.ReportGameResult.gameReportAccepted; return this; } - + // @@protoc_insertion_point(builder_scope:ReportGameAckMessage) } - + static { defaultInstance = new ReportGameAckMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:ReportGameAckMessage) } - + public interface ErrorMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required .ErrorMessage.ErrorReason errorReason = 1; + /** + * required .ErrorMessage.ErrorReason errorReason = 1; + */ boolean hasErrorReason(); + /** + * required .ErrorMessage.ErrorReason errorReason = 1; + */ de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason getErrorReason(); } + /** + * Protobuf type {@code ErrorMessage} + */ public static final class ErrorMessage extends com.google.protobuf.GeneratedMessageLite implements ErrorMessageOrBuilder { // Use ErrorMessage.newBuilder() to construct. - private ErrorMessage(Builder builder) { + private ErrorMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private ErrorMessage(boolean noInit) {} - + private static final ErrorMessage defaultInstance; public static ErrorMessage getDefaultInstance() { return defaultInstance; } - + public ErrorMessage getDefaultInstanceForType() { return defaultInstance; } - + + private ErrorMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + int rawValue = input.readEnum(); + de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason value = de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason.valueOf(rawValue); + if (value != null) { + bitField0_ |= 0x00000001; + errorReason_ = value; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public ErrorMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ErrorMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code ErrorMessage.ErrorReason} + */ public enum ErrorReason implements com.google.protobuf.Internal.EnumLite { + /** + * reserved = 0; + */ reserved(0, 0), + /** + * initVersionNotSupported = 1; + */ initVersionNotSupported(1, 1), + /** + * initServerFull = 2; + */ initServerFull(2, 2), + /** + * initAuthFailure = 3; + */ initAuthFailure(3, 3), + /** + * initPlayerNameInUse = 4; + */ initPlayerNameInUse(4, 4), + /** + * initInvalidPlayerName = 5; + */ initInvalidPlayerName(5, 5), + /** + * initServerMaintenance = 6; + */ initServerMaintenance(6, 6), + /** + * initBlocked = 7; + */ initBlocked(7, 7), + /** + * avatarTooLarge = 8; + */ avatarTooLarge(8, 8), + /** + * invalidPacket = 9; + */ invalidPacket(9, 9), + /** + * invalidState = 10; + */ invalidState(10, 10), + /** + * kickedFromServer = 11; + */ kickedFromServer(11, 11), + /** + * bannedFromServer = 12; + */ bannedFromServer(12, 12), + /** + * blockedByServer = 13; + */ blockedByServer(13, 13), + /** + * sessionTimeout = 14; + */ sessionTimeout(14, 14), ; - + + /** + * reserved = 0; + */ public static final int reserved_VALUE = 0; + /** + * initVersionNotSupported = 1; + */ public static final int initVersionNotSupported_VALUE = 1; + /** + * initServerFull = 2; + */ public static final int initServerFull_VALUE = 2; + /** + * initAuthFailure = 3; + */ public static final int initAuthFailure_VALUE = 3; + /** + * initPlayerNameInUse = 4; + */ public static final int initPlayerNameInUse_VALUE = 4; + /** + * initInvalidPlayerName = 5; + */ public static final int initInvalidPlayerName_VALUE = 5; + /** + * initServerMaintenance = 6; + */ public static final int initServerMaintenance_VALUE = 6; + /** + * initBlocked = 7; + */ public static final int initBlocked_VALUE = 7; + /** + * avatarTooLarge = 8; + */ public static final int avatarTooLarge_VALUE = 8; + /** + * invalidPacket = 9; + */ public static final int invalidPacket_VALUE = 9; + /** + * invalidState = 10; + */ public static final int invalidState_VALUE = 10; + /** + * kickedFromServer = 11; + */ public static final int kickedFromServer_VALUE = 11; + /** + * bannedFromServer = 12; + */ public static final int bannedFromServer_VALUE = 12; + /** + * blockedByServer = 13; + */ public static final int blockedByServer_VALUE = 13; + /** + * sessionTimeout = 14; + */ public static final int sessionTimeout_VALUE = 14; - - + + public final int getNumber() { return value; } - + public static ErrorReason valueOf(int value) { switch (value) { case 0: return reserved; @@ -37582,7 +47389,7 @@ public final class ProtoBuf { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -37594,27 +47401,33 @@ public final class ProtoBuf { return ErrorReason.valueOf(number); } }; - + private final int value; - + private ErrorReason(int index, int value) { this.value = value; } - + // @@protoc_insertion_point(enum_scope:ErrorMessage.ErrorReason) } - + private int bitField0_; // required .ErrorMessage.ErrorReason errorReason = 1; public static final int ERRORREASON_FIELD_NUMBER = 1; private de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason errorReason_; + /** + * required .ErrorMessage.ErrorReason errorReason = 1; + */ public boolean hasErrorReason() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .ErrorMessage.ErrorReason errorReason = 1; + */ public de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason getErrorReason() { return errorReason_; } - + private void initFields() { errorReason_ = de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason.reserved; } @@ -37622,7 +47435,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasErrorReason()) { memoizedIsInitialized = 0; return false; @@ -37630,7 +47443,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -37638,12 +47451,12 @@ public final class ProtoBuf { output.writeEnum(1, errorReason_.getNumber()); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -37652,88 +47465,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.ErrorMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.ErrorMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ErrorMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.ErrorMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ErrorMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.ErrorMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ErrorMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.ErrorMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.ErrorMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.ErrorMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.ErrorMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code ErrorMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.ErrorMessage, Builder> @@ -37742,28 +47544,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); errorReason_ = de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason.reserved; bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.ErrorMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.ErrorMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.ErrorMessage build() { de.pokerth.protocol.ProtoBuf.ErrorMessage result = buildPartial(); if (!result.isInitialized()) { @@ -37771,17 +47573,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.ErrorMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.ErrorMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.ErrorMessage buildPartial() { de.pokerth.protocol.ProtoBuf.ErrorMessage result = new de.pokerth.protocol.ProtoBuf.ErrorMessage(this); int from_bitField0_ = bitField0_; @@ -37793,7 +47585,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.ErrorMessage other) { if (other == de.pokerth.protocol.ProtoBuf.ErrorMessage.getDefaultInstance()) return this; if (other.hasErrorReason()) { @@ -37801,7 +47593,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasErrorReason()) { @@ -37809,47 +47601,43 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - int rawValue = input.readEnum(); - de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason value = de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason.valueOf(rawValue); - if (value != null) { - bitField0_ |= 0x00000001; - errorReason_ = value; - } - break; - } + de.pokerth.protocol.ProtoBuf.ErrorMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.ErrorMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required .ErrorMessage.ErrorReason errorReason = 1; private de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason errorReason_ = de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason.reserved; + /** + * required .ErrorMessage.ErrorReason errorReason = 1; + */ public boolean hasErrorReason() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .ErrorMessage.ErrorReason errorReason = 1; + */ public de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason getErrorReason() { return errorReason_; } + /** + * required .ErrorMessage.ErrorReason errorReason = 1; + */ public Builder setErrorReason(de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason value) { if (value == null) { throw new NullPointerException(); @@ -37859,60 +47647,131 @@ public final class ProtoBuf { return this; } + /** + * required .ErrorMessage.ErrorReason errorReason = 1; + */ public Builder clearErrorReason() { bitField0_ = (bitField0_ & ~0x00000001); errorReason_ = de.pokerth.protocol.ProtoBuf.ErrorMessage.ErrorReason.reserved; return this; } - + // @@protoc_insertion_point(builder_scope:ErrorMessage) } - + static { defaultInstance = new ErrorMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:ErrorMessage) } - + public interface AdminRemoveGameMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 removeGameId = 1; + /** + * required uint32 removeGameId = 1; + */ boolean hasRemoveGameId(); + /** + * required uint32 removeGameId = 1; + */ int getRemoveGameId(); } + /** + * Protobuf type {@code AdminRemoveGameMessage} + */ public static final class AdminRemoveGameMessage extends com.google.protobuf.GeneratedMessageLite implements AdminRemoveGameMessageOrBuilder { // Use AdminRemoveGameMessage.newBuilder() to construct. - private AdminRemoveGameMessage(Builder builder) { + private AdminRemoveGameMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private AdminRemoveGameMessage(boolean noInit) {} - + private static final AdminRemoveGameMessage defaultInstance; public static AdminRemoveGameMessage getDefaultInstance() { return defaultInstance; } - + public AdminRemoveGameMessage getDefaultInstanceForType() { return defaultInstance; } - + + private AdminRemoveGameMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + removeGameId_ = input.readUInt32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AdminRemoveGameMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AdminRemoveGameMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required uint32 removeGameId = 1; public static final int REMOVEGAMEID_FIELD_NUMBER = 1; private int removeGameId_; + /** + * required uint32 removeGameId = 1; + */ public boolean hasRemoveGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 removeGameId = 1; + */ public int getRemoveGameId() { return removeGameId_; } - + private void initFields() { removeGameId_ = 0; } @@ -37920,7 +47779,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasRemoveGameId()) { memoizedIsInitialized = 0; return false; @@ -37928,7 +47787,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -37936,12 +47795,12 @@ public final class ProtoBuf { output.writeUInt32(1, removeGameId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -37950,88 +47809,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code AdminRemoveGameMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage, Builder> @@ -38040,28 +47888,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); removeGameId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage build() { de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage result = buildPartial(); if (!result.isInitialized()) { @@ -38069,17 +47917,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage buildPartial() { de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage result = new de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage(this); int from_bitField0_ = bitField0_; @@ -38091,7 +47929,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage other) { if (other == de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage.getDefaultInstance()) return this; if (other.hasRemoveGameId()) { @@ -38099,7 +47937,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasRemoveGameId()) { @@ -38107,392 +47945,133 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - removeGameId_ = input.readUInt32(); - break; - } + de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 removeGameId = 1; private int removeGameId_ ; + /** + * required uint32 removeGameId = 1; + */ public boolean hasRemoveGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 removeGameId = 1; + */ public int getRemoveGameId() { return removeGameId_; } + /** + * required uint32 removeGameId = 1; + */ public Builder setRemoveGameId(int value) { bitField0_ |= 0x00000001; removeGameId_ = value; return this; } + /** + * required uint32 removeGameId = 1; + */ public Builder clearRemoveGameId() { bitField0_ = (bitField0_ & ~0x00000001); removeGameId_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:AdminRemoveGameMessage) } - + static { defaultInstance = new AdminRemoveGameMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:AdminRemoveGameMessage) } - + public interface AdminRemoveGameAckMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 removeGameId = 1; + /** + * required uint32 removeGameId = 1; + */ boolean hasRemoveGameId(); + /** + * required uint32 removeGameId = 1; + */ int getRemoveGameId(); - + // required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; + /** + * required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; + */ boolean hasRemoveGameResult(); + /** + * required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; + */ de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult getRemoveGameResult(); } + /** + * Protobuf type {@code AdminRemoveGameAckMessage} + */ public static final class AdminRemoveGameAckMessage extends com.google.protobuf.GeneratedMessageLite implements AdminRemoveGameAckMessageOrBuilder { // Use AdminRemoveGameAckMessage.newBuilder() to construct. - private AdminRemoveGameAckMessage(Builder builder) { + private AdminRemoveGameAckMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private AdminRemoveGameAckMessage(boolean noInit) {} - + private static final AdminRemoveGameAckMessage defaultInstance; public static AdminRemoveGameAckMessage getDefaultInstance() { return defaultInstance; } - + public AdminRemoveGameAckMessage getDefaultInstanceForType() { return defaultInstance; } - - public enum AdminRemoveGameResult - implements com.google.protobuf.Internal.EnumLite { - gameRemoveAccepted(0, 0), - gameRemoveInvalid(1, 1), - ; - - public static final int gameRemoveAccepted_VALUE = 0; - public static final int gameRemoveInvalid_VALUE = 1; - - - public final int getNumber() { return value; } - - public static AdminRemoveGameResult valueOf(int value) { - switch (value) { - case 0: return gameRemoveAccepted; - case 1: return gameRemoveInvalid; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public AdminRemoveGameResult findValueByNumber(int number) { - return AdminRemoveGameResult.valueOf(number); - } - }; - - private final int value; - - private AdminRemoveGameResult(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:AdminRemoveGameAckMessage.AdminRemoveGameResult) - } - - private int bitField0_; - // required uint32 removeGameId = 1; - public static final int REMOVEGAMEID_FIELD_NUMBER = 1; - private int removeGameId_; - public boolean hasRemoveGameId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getRemoveGameId() { - return removeGameId_; - } - - // required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; - public static final int REMOVEGAMERESULT_FIELD_NUMBER = 2; - private de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult_; - public boolean hasRemoveGameResult() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult getRemoveGameResult() { - return removeGameResult_; - } - - private void initFields() { - removeGameId_ = 0; - removeGameResult_ = de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult.gameRemoveAccepted; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasRemoveGameId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasRemoveGameResult()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, removeGameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeEnum(2, removeGameResult_.getNumber()); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, removeGameId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, removeGameResult_.getNumber()); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom( + + private AdminRemoveGameAckMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - removeGameId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - removeGameResult_ = de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult.gameRemoveAccepted; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage build() { - de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage result = new de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.removeGameId_ = removeGameId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.removeGameResult_ = removeGameResult_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.getDefaultInstance()) return this; - if (other.hasRemoveGameId()) { - setRemoveGameId(other.getRemoveGameId()); - } - if (other.hasRemoveGameResult()) { - setRemoveGameResult(other.getRemoveGameResult()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasRemoveGameId()) { - - return false; - } - if (!hasRemoveGameResult()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -38512,39 +48091,387 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AdminRemoveGameAckMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AdminRemoveGameAckMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code AdminRemoveGameAckMessage.AdminRemoveGameResult} + */ + public enum AdminRemoveGameResult + implements com.google.protobuf.Internal.EnumLite { + /** + * gameRemoveAccepted = 0; + */ + gameRemoveAccepted(0, 0), + /** + * gameRemoveInvalid = 1; + */ + gameRemoveInvalid(1, 1), + ; + + /** + * gameRemoveAccepted = 0; + */ + public static final int gameRemoveAccepted_VALUE = 0; + /** + * gameRemoveInvalid = 1; + */ + public static final int gameRemoveInvalid_VALUE = 1; + + + public final int getNumber() { return value; } + + public static AdminRemoveGameResult valueOf(int value) { + switch (value) { + case 0: return gameRemoveAccepted; + case 1: return gameRemoveInvalid; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public AdminRemoveGameResult findValueByNumber(int number) { + return AdminRemoveGameResult.valueOf(number); + } + }; + + private final int value; + + private AdminRemoveGameResult(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:AdminRemoveGameAckMessage.AdminRemoveGameResult) + } + + private int bitField0_; + // required uint32 removeGameId = 1; + public static final int REMOVEGAMEID_FIELD_NUMBER = 1; + private int removeGameId_; + /** + * required uint32 removeGameId = 1; + */ + public boolean hasRemoveGameId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 removeGameId = 1; + */ + public int getRemoveGameId() { + return removeGameId_; + } + + // required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; + public static final int REMOVEGAMERESULT_FIELD_NUMBER = 2; + private de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult_; + /** + * required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; + */ + public boolean hasRemoveGameResult() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; + */ + public de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult getRemoveGameResult() { + return removeGameResult_; + } + + private void initFields() { + removeGameId_ = 0; + removeGameResult_ = de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult.gameRemoveAccepted; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasRemoveGameId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasRemoveGameResult()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, removeGameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeEnum(2, removeGameResult_.getNumber()); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, removeGameId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(2, removeGameResult_.getNumber()); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code AdminRemoveGameAckMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + removeGameId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + removeGameResult_ = de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult.gameRemoveAccepted; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage build() { + de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage result = new de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.removeGameId_ = removeGameId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.removeGameResult_ = removeGameResult_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.getDefaultInstance()) return this; + if (other.hasRemoveGameId()) { + setRemoveGameId(other.getRemoveGameId()); + } + if (other.hasRemoveGameResult()) { + setRemoveGameResult(other.getRemoveGameResult()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasRemoveGameId()) { + + return false; + } + if (!hasRemoveGameResult()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 removeGameId = 1; private int removeGameId_ ; + /** + * required uint32 removeGameId = 1; + */ public boolean hasRemoveGameId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 removeGameId = 1; + */ public int getRemoveGameId() { return removeGameId_; } + /** + * required uint32 removeGameId = 1; + */ public Builder setRemoveGameId(int value) { bitField0_ |= 0x00000001; removeGameId_ = value; return this; } + /** + * required uint32 removeGameId = 1; + */ public Builder clearRemoveGameId() { bitField0_ = (bitField0_ & ~0x00000001); removeGameId_ = 0; return this; } - + // required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; private de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult_ = de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult.gameRemoveAccepted; + /** + * required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; + */ public boolean hasRemoveGameResult() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; + */ public de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult getRemoveGameResult() { return removeGameResult_; } + /** + * required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; + */ public Builder setRemoveGameResult(de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult value) { if (value == null) { throw new NullPointerException(); @@ -38554,60 +48481,131 @@ public final class ProtoBuf { return this; } + /** + * required .AdminRemoveGameAckMessage.AdminRemoveGameResult removeGameResult = 2; + */ public Builder clearRemoveGameResult() { bitField0_ = (bitField0_ & ~0x00000002); removeGameResult_ = de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.AdminRemoveGameResult.gameRemoveAccepted; return this; } - + // @@protoc_insertion_point(builder_scope:AdminRemoveGameAckMessage) } - + static { defaultInstance = new AdminRemoveGameAckMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:AdminRemoveGameAckMessage) } - + public interface AdminBanPlayerMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 banPlayerId = 1; + /** + * required uint32 banPlayerId = 1; + */ boolean hasBanPlayerId(); + /** + * required uint32 banPlayerId = 1; + */ int getBanPlayerId(); } + /** + * Protobuf type {@code AdminBanPlayerMessage} + */ public static final class AdminBanPlayerMessage extends com.google.protobuf.GeneratedMessageLite implements AdminBanPlayerMessageOrBuilder { // Use AdminBanPlayerMessage.newBuilder() to construct. - private AdminBanPlayerMessage(Builder builder) { + private AdminBanPlayerMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private AdminBanPlayerMessage(boolean noInit) {} - + private static final AdminBanPlayerMessage defaultInstance; public static AdminBanPlayerMessage getDefaultInstance() { return defaultInstance; } - + public AdminBanPlayerMessage getDefaultInstanceForType() { return defaultInstance; } - + + private AdminBanPlayerMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + banPlayerId_ = input.readUInt32(); + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AdminBanPlayerMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AdminBanPlayerMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + private int bitField0_; // required uint32 banPlayerId = 1; public static final int BANPLAYERID_FIELD_NUMBER = 1; private int banPlayerId_; + /** + * required uint32 banPlayerId = 1; + */ public boolean hasBanPlayerId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 banPlayerId = 1; + */ public int getBanPlayerId() { return banPlayerId_; } - + private void initFields() { banPlayerId_ = 0; } @@ -38615,7 +48613,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasBanPlayerId()) { memoizedIsInitialized = 0; return false; @@ -38623,7 +48621,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -38631,12 +48629,12 @@ public final class ProtoBuf { output.writeUInt32(1, banPlayerId_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -38645,88 +48643,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code AdminBanPlayerMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage, Builder> @@ -38735,28 +48722,28 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); banPlayerId_ = 0; bitField0_ = (bitField0_ & ~0x00000001); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage build() { de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage result = buildPartial(); if (!result.isInitialized()) { @@ -38764,17 +48751,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage buildPartial() { de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage result = new de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage(this); int from_bitField0_ = bitField0_; @@ -38786,7 +48763,7 @@ public final class ProtoBuf { result.bitField0_ = to_bitField0_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage other) { if (other == de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage.getDefaultInstance()) return this; if (other.hasBanPlayerId()) { @@ -38794,7 +48771,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasBanPlayerId()) { @@ -38802,401 +48779,133 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - bitField0_ |= 0x00000001; - banPlayerId_ = input.readUInt32(); - break; - } + de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; - + // required uint32 banPlayerId = 1; private int banPlayerId_ ; + /** + * required uint32 banPlayerId = 1; + */ public boolean hasBanPlayerId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 banPlayerId = 1; + */ public int getBanPlayerId() { return banPlayerId_; } + /** + * required uint32 banPlayerId = 1; + */ public Builder setBanPlayerId(int value) { bitField0_ |= 0x00000001; banPlayerId_ = value; return this; } + /** + * required uint32 banPlayerId = 1; + */ public Builder clearBanPlayerId() { bitField0_ = (bitField0_ & ~0x00000001); banPlayerId_ = 0; return this; } - + // @@protoc_insertion_point(builder_scope:AdminBanPlayerMessage) } - + static { defaultInstance = new AdminBanPlayerMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:AdminBanPlayerMessage) } - + public interface AdminBanPlayerAckMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required uint32 banPlayerId = 1; + /** + * required uint32 banPlayerId = 1; + */ boolean hasBanPlayerId(); + /** + * required uint32 banPlayerId = 1; + */ int getBanPlayerId(); - + // required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; + /** + * required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; + */ boolean hasBanPlayerResult(); + /** + * required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; + */ de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult getBanPlayerResult(); } + /** + * Protobuf type {@code AdminBanPlayerAckMessage} + */ public static final class AdminBanPlayerAckMessage extends com.google.protobuf.GeneratedMessageLite implements AdminBanPlayerAckMessageOrBuilder { // Use AdminBanPlayerAckMessage.newBuilder() to construct. - private AdminBanPlayerAckMessage(Builder builder) { + private AdminBanPlayerAckMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private AdminBanPlayerAckMessage(boolean noInit) {} - + private static final AdminBanPlayerAckMessage defaultInstance; public static AdminBanPlayerAckMessage getDefaultInstance() { return defaultInstance; } - + public AdminBanPlayerAckMessage getDefaultInstanceForType() { return defaultInstance; } - - public enum AdminBanPlayerResult - implements com.google.protobuf.Internal.EnumLite { - banPlayerAccepted(0, 0), - banPlayerPending(1, 1), - banPlayerNoDB(2, 2), - banPlayerDBError(3, 3), - banPlayerInvalid(4, 4), - ; - - public static final int banPlayerAccepted_VALUE = 0; - public static final int banPlayerPending_VALUE = 1; - public static final int banPlayerNoDB_VALUE = 2; - public static final int banPlayerDBError_VALUE = 3; - public static final int banPlayerInvalid_VALUE = 4; - - - public final int getNumber() { return value; } - - public static AdminBanPlayerResult valueOf(int value) { - switch (value) { - case 0: return banPlayerAccepted; - case 1: return banPlayerPending; - case 2: return banPlayerNoDB; - case 3: return banPlayerDBError; - case 4: return banPlayerInvalid; - default: return null; - } - } - - public static com.google.protobuf.Internal.EnumLiteMap - internalGetValueMap() { - return internalValueMap; - } - private static com.google.protobuf.Internal.EnumLiteMap - internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public AdminBanPlayerResult findValueByNumber(int number) { - return AdminBanPlayerResult.valueOf(number); - } - }; - - private final int value; - - private AdminBanPlayerResult(int index, int value) { - this.value = value; - } - - // @@protoc_insertion_point(enum_scope:AdminBanPlayerAckMessage.AdminBanPlayerResult) - } - - private int bitField0_; - // required uint32 banPlayerId = 1; - public static final int BANPLAYERID_FIELD_NUMBER = 1; - private int banPlayerId_; - public boolean hasBanPlayerId() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public int getBanPlayerId() { - return banPlayerId_; - } - - // required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; - public static final int BANPLAYERRESULT_FIELD_NUMBER = 2; - private de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult_; - public boolean hasBanPlayerResult() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult getBanPlayerResult() { - return banPlayerResult_; - } - - private void initFields() { - banPlayerId_ = 0; - banPlayerResult_ = de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult.banPlayerAccepted; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasBanPlayerId()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasBanPlayerResult()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeUInt32(1, banPlayerId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeEnum(2, banPlayerResult_.getNumber()); - } - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeUInt32Size(1, banPlayerId_); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeEnumSize(2, banPlayerResult_.getNumber()); - } - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom( + + private AdminBanPlayerAckMessage( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - public static final class Builder extends - com.google.protobuf.GeneratedMessageLite.Builder< - de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage, Builder> - implements de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessageOrBuilder { - // Construct using de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private void maybeForceBuilderInitialization() { - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - banPlayerId_ = 0; - bitField0_ = (bitField0_ & ~0x00000001); - banPlayerResult_ = de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult.banPlayerAccepted; - bitField0_ = (bitField0_ & ~0x00000002); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage getDefaultInstanceForType() { - return de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.getDefaultInstance(); - } - - public de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage build() { - de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage buildPartial() { - de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage result = new de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.banPlayerId_ = banPlayerId_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.banPlayerResult_ = banPlayerResult_; - result.bitField0_ = to_bitField0_; - return result; - } - - public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage other) { - if (other == de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.getDefaultInstance()) return this; - if (other.hasBanPlayerId()) { - setBanPlayerId(other.getBanPlayerId()); - } - if (other.hasBanPlayerResult()) { - setBanPlayerResult(other.getBanPlayerResult()); - } - return this; - } - - public final boolean isInitialized() { - if (!hasBanPlayerId()) { - - return false; - } - if (!hasBanPlayerResult()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - while (true) { + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + try { + boolean done = false; + while (!done) { int tag = input.readTag(); switch (tag) { case 0: - - return this; + done = true; + break; default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; } break; } @@ -39216,39 +48925,414 @@ public final class ProtoBuf { } } } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public AdminBanPlayerAckMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new AdminBanPlayerAckMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code AdminBanPlayerAckMessage.AdminBanPlayerResult} + */ + public enum AdminBanPlayerResult + implements com.google.protobuf.Internal.EnumLite { + /** + * banPlayerAccepted = 0; + */ + banPlayerAccepted(0, 0), + /** + * banPlayerPending = 1; + */ + banPlayerPending(1, 1), + /** + * banPlayerNoDB = 2; + */ + banPlayerNoDB(2, 2), + /** + * banPlayerDBError = 3; + */ + banPlayerDBError(3, 3), + /** + * banPlayerInvalid = 4; + */ + banPlayerInvalid(4, 4), + ; + + /** + * banPlayerAccepted = 0; + */ + public static final int banPlayerAccepted_VALUE = 0; + /** + * banPlayerPending = 1; + */ + public static final int banPlayerPending_VALUE = 1; + /** + * banPlayerNoDB = 2; + */ + public static final int banPlayerNoDB_VALUE = 2; + /** + * banPlayerDBError = 3; + */ + public static final int banPlayerDBError_VALUE = 3; + /** + * banPlayerInvalid = 4; + */ + public static final int banPlayerInvalid_VALUE = 4; + + + public final int getNumber() { return value; } + + public static AdminBanPlayerResult valueOf(int value) { + switch (value) { + case 0: return banPlayerAccepted; + case 1: return banPlayerPending; + case 2: return banPlayerNoDB; + case 3: return banPlayerDBError; + case 4: return banPlayerInvalid; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static com.google.protobuf.Internal.EnumLiteMap + internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public AdminBanPlayerResult findValueByNumber(int number) { + return AdminBanPlayerResult.valueOf(number); + } + }; + + private final int value; + + private AdminBanPlayerResult(int index, int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:AdminBanPlayerAckMessage.AdminBanPlayerResult) + } + + private int bitField0_; + // required uint32 banPlayerId = 1; + public static final int BANPLAYERID_FIELD_NUMBER = 1; + private int banPlayerId_; + /** + * required uint32 banPlayerId = 1; + */ + public boolean hasBanPlayerId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + /** + * required uint32 banPlayerId = 1; + */ + public int getBanPlayerId() { + return banPlayerId_; + } + + // required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; + public static final int BANPLAYERRESULT_FIELD_NUMBER = 2; + private de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult_; + /** + * required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; + */ + public boolean hasBanPlayerResult() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + /** + * required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; + */ + public de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult getBanPlayerResult() { + return banPlayerResult_; + } + + private void initFields() { + banPlayerId_ = 0; + banPlayerResult_ = de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult.banPlayerAccepted; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasBanPlayerId()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasBanPlayerResult()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt32(1, banPlayerId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeEnum(2, banPlayerResult_.getNumber()); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(1, banPlayerId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(2, banPlayerResult_.getNumber()); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseDelimitedFrom(input, extensionRegistry); + } + public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return PARSER.parseFrom(input); + } + public static de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return PARSER.parseFrom(input, extensionRegistry); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + /** + * Protobuf type {@code AdminBanPlayerAckMessage} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage, Builder> + implements de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessageOrBuilder { + // Construct using de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return new Builder(); + } + + public Builder clear() { + super.clear(); + banPlayerId_ = 0; + bitField0_ = (bitField0_ & ~0x00000001); + banPlayerResult_ = de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult.banPlayerAccepted; + bitField0_ = (bitField0_ & ~0x00000002); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage getDefaultInstanceForType() { + return de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.getDefaultInstance(); + } + + public de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage build() { + de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage buildPartial() { + de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage result = new de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage(this); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.banPlayerId_ = banPlayerId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.banPlayerResult_ = banPlayerResult_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage other) { + if (other == de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.getDefaultInstance()) return this; + if (other.hasBanPlayerId()) { + setBanPlayerId(other.getBanPlayerId()); + } + if (other.hasBanPlayerResult()) { + setBanPlayerResult(other.getBanPlayerResult()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasBanPlayerId()) { + + return false; + } + if (!hasBanPlayerResult()) { + + return false; + } + return true; + } + + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; } - private int bitField0_; - + // required uint32 banPlayerId = 1; private int banPlayerId_ ; + /** + * required uint32 banPlayerId = 1; + */ public boolean hasBanPlayerId() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required uint32 banPlayerId = 1; + */ public int getBanPlayerId() { return banPlayerId_; } + /** + * required uint32 banPlayerId = 1; + */ public Builder setBanPlayerId(int value) { bitField0_ |= 0x00000001; banPlayerId_ = value; return this; } + /** + * required uint32 banPlayerId = 1; + */ public Builder clearBanPlayerId() { bitField0_ = (bitField0_ & ~0x00000001); banPlayerId_ = 0; return this; } - + // required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; private de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult_ = de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult.banPlayerAccepted; + /** + * required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; + */ public boolean hasBanPlayerResult() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; + */ public de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult getBanPlayerResult() { return banPlayerResult_; } + /** + * required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; + */ public Builder setBanPlayerResult(de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult value) { if (value == null) { throw new NullPointerException(); @@ -39258,543 +49342,2642 @@ public final class ProtoBuf { return this; } + /** + * required .AdminBanPlayerAckMessage.AdminBanPlayerResult banPlayerResult = 2; + */ public Builder clearBanPlayerResult() { bitField0_ = (bitField0_ & ~0x00000002); banPlayerResult_ = de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.AdminBanPlayerResult.banPlayerAccepted; return this; } - + // @@protoc_insertion_point(builder_scope:AdminBanPlayerAckMessage) } - + static { defaultInstance = new AdminBanPlayerAckMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:AdminBanPlayerAckMessage) } - + public interface PokerTHMessageOrBuilder extends com.google.protobuf.MessageLiteOrBuilder { - + // required .PokerTHMessage.PokerTHMessageType messageType = 1; + /** + * required .PokerTHMessage.PokerTHMessageType messageType = 1; + */ boolean hasMessageType(); + /** + * required .PokerTHMessage.PokerTHMessageType messageType = 1; + */ de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType getMessageType(); - + // optional .AnnounceMessage announceMessage = 2; + /** + * optional .AnnounceMessage announceMessage = 2; + */ boolean hasAnnounceMessage(); + /** + * optional .AnnounceMessage announceMessage = 2; + */ de.pokerth.protocol.ProtoBuf.AnnounceMessage getAnnounceMessage(); - + // optional .InitMessage initMessage = 3; + /** + * optional .InitMessage initMessage = 3; + */ boolean hasInitMessage(); + /** + * optional .InitMessage initMessage = 3; + */ de.pokerth.protocol.ProtoBuf.InitMessage getInitMessage(); - + // optional .AuthServerChallengeMessage authServerChallengeMessage = 4; + /** + * optional .AuthServerChallengeMessage authServerChallengeMessage = 4; + */ boolean hasAuthServerChallengeMessage(); + /** + * optional .AuthServerChallengeMessage authServerChallengeMessage = 4; + */ de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage getAuthServerChallengeMessage(); - + // optional .AuthClientResponseMessage authClientResponseMessage = 5; + /** + * optional .AuthClientResponseMessage authClientResponseMessage = 5; + */ boolean hasAuthClientResponseMessage(); + /** + * optional .AuthClientResponseMessage authClientResponseMessage = 5; + */ de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage getAuthClientResponseMessage(); - + // optional .AuthServerVerificationMessage authServerVerificationMessage = 6; + /** + * optional .AuthServerVerificationMessage authServerVerificationMessage = 6; + */ boolean hasAuthServerVerificationMessage(); + /** + * optional .AuthServerVerificationMessage authServerVerificationMessage = 6; + */ de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage getAuthServerVerificationMessage(); - + // optional .InitAckMessage initAckMessage = 7; + /** + * optional .InitAckMessage initAckMessage = 7; + */ boolean hasInitAckMessage(); + /** + * optional .InitAckMessage initAckMessage = 7; + */ de.pokerth.protocol.ProtoBuf.InitAckMessage getInitAckMessage(); - + // optional .AvatarRequestMessage avatarRequestMessage = 8; + /** + * optional .AvatarRequestMessage avatarRequestMessage = 8; + */ boolean hasAvatarRequestMessage(); + /** + * optional .AvatarRequestMessage avatarRequestMessage = 8; + */ de.pokerth.protocol.ProtoBuf.AvatarRequestMessage getAvatarRequestMessage(); - + // optional .AvatarHeaderMessage avatarHeaderMessage = 9; + /** + * optional .AvatarHeaderMessage avatarHeaderMessage = 9; + */ boolean hasAvatarHeaderMessage(); + /** + * optional .AvatarHeaderMessage avatarHeaderMessage = 9; + */ de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage getAvatarHeaderMessage(); - + // optional .AvatarDataMessage avatarDataMessage = 10; + /** + * optional .AvatarDataMessage avatarDataMessage = 10; + */ boolean hasAvatarDataMessage(); + /** + * optional .AvatarDataMessage avatarDataMessage = 10; + */ de.pokerth.protocol.ProtoBuf.AvatarDataMessage getAvatarDataMessage(); - + // optional .AvatarEndMessage avatarEndMessage = 11; + /** + * optional .AvatarEndMessage avatarEndMessage = 11; + */ boolean hasAvatarEndMessage(); + /** + * optional .AvatarEndMessage avatarEndMessage = 11; + */ de.pokerth.protocol.ProtoBuf.AvatarEndMessage getAvatarEndMessage(); - + // optional .UnknownAvatarMessage unknownAvatarMessage = 12; + /** + * optional .UnknownAvatarMessage unknownAvatarMessage = 12; + */ boolean hasUnknownAvatarMessage(); + /** + * optional .UnknownAvatarMessage unknownAvatarMessage = 12; + */ de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage getUnknownAvatarMessage(); - + // optional .PlayerListMessage playerListMessage = 13; + /** + * optional .PlayerListMessage playerListMessage = 13; + */ boolean hasPlayerListMessage(); + /** + * optional .PlayerListMessage playerListMessage = 13; + */ de.pokerth.protocol.ProtoBuf.PlayerListMessage getPlayerListMessage(); - + // optional .GameListNewMessage gameListNewMessage = 14; + /** + * optional .GameListNewMessage gameListNewMessage = 14; + */ boolean hasGameListNewMessage(); + /** + * optional .GameListNewMessage gameListNewMessage = 14; + */ de.pokerth.protocol.ProtoBuf.GameListNewMessage getGameListNewMessage(); - + // optional .GameListUpdateMessage gameListUpdateMessage = 15; + /** + * optional .GameListUpdateMessage gameListUpdateMessage = 15; + */ boolean hasGameListUpdateMessage(); + /** + * optional .GameListUpdateMessage gameListUpdateMessage = 15; + */ de.pokerth.protocol.ProtoBuf.GameListUpdateMessage getGameListUpdateMessage(); - + // optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; + /** + * optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; + */ boolean hasGameListPlayerJoinedMessage(); + /** + * optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; + */ de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage getGameListPlayerJoinedMessage(); - + // optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; + /** + * optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; + */ boolean hasGameListPlayerLeftMessage(); + /** + * optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; + */ de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage getGameListPlayerLeftMessage(); - + // optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; + /** + * optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; + */ boolean hasGameListAdminChangedMessage(); + /** + * optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; + */ de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage getGameListAdminChangedMessage(); - + // optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; + /** + * optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; + */ boolean hasPlayerInfoRequestMessage(); + /** + * optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; + */ de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage getPlayerInfoRequestMessage(); - + // optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; + /** + * optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; + */ boolean hasPlayerInfoReplyMessage(); + /** + * optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; + */ de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage getPlayerInfoReplyMessage(); - + // optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; + /** + * optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; + */ boolean hasSubscriptionRequestMessage(); + /** + * optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; + */ de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage getSubscriptionRequestMessage(); - + // optional .JoinExistingGameMessage joinExistingGameMessage = 22; + /** + * optional .JoinExistingGameMessage joinExistingGameMessage = 22; + */ boolean hasJoinExistingGameMessage(); + /** + * optional .JoinExistingGameMessage joinExistingGameMessage = 22; + */ de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage getJoinExistingGameMessage(); - + // optional .JoinNewGameMessage joinNewGameMessage = 23; + /** + * optional .JoinNewGameMessage joinNewGameMessage = 23; + */ boolean hasJoinNewGameMessage(); + /** + * optional .JoinNewGameMessage joinNewGameMessage = 23; + */ de.pokerth.protocol.ProtoBuf.JoinNewGameMessage getJoinNewGameMessage(); - + // optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; + /** + * optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; + */ boolean hasRejoinExistingGameMessage(); + /** + * optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; + */ de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage getRejoinExistingGameMessage(); - + // optional .JoinGameAckMessage joinGameAckMessage = 25; + /** + * optional .JoinGameAckMessage joinGameAckMessage = 25; + */ boolean hasJoinGameAckMessage(); + /** + * optional .JoinGameAckMessage joinGameAckMessage = 25; + */ de.pokerth.protocol.ProtoBuf.JoinGameAckMessage getJoinGameAckMessage(); - + // optional .JoinGameFailedMessage joinGameFailedMessage = 26; + /** + * optional .JoinGameFailedMessage joinGameFailedMessage = 26; + */ boolean hasJoinGameFailedMessage(); + /** + * optional .JoinGameFailedMessage joinGameFailedMessage = 26; + */ de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage getJoinGameFailedMessage(); - + // optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; + /** + * optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; + */ boolean hasGamePlayerJoinedMessage(); + /** + * optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; + */ de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage getGamePlayerJoinedMessage(); - + // optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; + /** + * optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; + */ boolean hasGamePlayerLeftMessage(); + /** + * optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; + */ de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage getGamePlayerLeftMessage(); - + // optional .GameAdminChangedMessage gameAdminChangedMessage = 29; + /** + * optional .GameAdminChangedMessage gameAdminChangedMessage = 29; + */ boolean hasGameAdminChangedMessage(); + /** + * optional .GameAdminChangedMessage gameAdminChangedMessage = 29; + */ de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage getGameAdminChangedMessage(); - + // optional .RemovedFromGameMessage removedFromGameMessage = 30; + /** + * optional .RemovedFromGameMessage removedFromGameMessage = 30; + */ boolean hasRemovedFromGameMessage(); + /** + * optional .RemovedFromGameMessage removedFromGameMessage = 30; + */ de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage getRemovedFromGameMessage(); - + // optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; + /** + * optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; + */ boolean hasKickPlayerRequestMessage(); + /** + * optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; + */ de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage getKickPlayerRequestMessage(); - + // optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; + /** + * optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; + */ boolean hasLeaveGameRequestMessage(); + /** + * optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; + */ de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage getLeaveGameRequestMessage(); - + // optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; + /** + * optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; + */ boolean hasInvitePlayerToGameMessage(); + /** + * optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; + */ de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage getInvitePlayerToGameMessage(); - + // optional .InviteNotifyMessage inviteNotifyMessage = 34; + /** + * optional .InviteNotifyMessage inviteNotifyMessage = 34; + */ boolean hasInviteNotifyMessage(); + /** + * optional .InviteNotifyMessage inviteNotifyMessage = 34; + */ de.pokerth.protocol.ProtoBuf.InviteNotifyMessage getInviteNotifyMessage(); - + // optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; + /** + * optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; + */ boolean hasRejectGameInvitationMessage(); + /** + * optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; + */ de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage getRejectGameInvitationMessage(); - + // optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; + /** + * optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; + */ boolean hasRejectInvNotifyMessage(); + /** + * optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; + */ de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage getRejectInvNotifyMessage(); - + // optional .StartEventMessage startEventMessage = 37; + /** + * optional .StartEventMessage startEventMessage = 37; + */ boolean hasStartEventMessage(); + /** + * optional .StartEventMessage startEventMessage = 37; + */ de.pokerth.protocol.ProtoBuf.StartEventMessage getStartEventMessage(); - + // optional .StartEventAckMessage startEventAckMessage = 38; + /** + * optional .StartEventAckMessage startEventAckMessage = 38; + */ boolean hasStartEventAckMessage(); + /** + * optional .StartEventAckMessage startEventAckMessage = 38; + */ de.pokerth.protocol.ProtoBuf.StartEventAckMessage getStartEventAckMessage(); - + // optional .GameStartInitialMessage gameStartInitialMessage = 39; + /** + * optional .GameStartInitialMessage gameStartInitialMessage = 39; + */ boolean hasGameStartInitialMessage(); + /** + * optional .GameStartInitialMessage gameStartInitialMessage = 39; + */ de.pokerth.protocol.ProtoBuf.GameStartInitialMessage getGameStartInitialMessage(); - + // optional .GameStartRejoinMessage gameStartRejoinMessage = 40; + /** + * optional .GameStartRejoinMessage gameStartRejoinMessage = 40; + */ boolean hasGameStartRejoinMessage(); + /** + * optional .GameStartRejoinMessage gameStartRejoinMessage = 40; + */ de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage getGameStartRejoinMessage(); - + // optional .HandStartMessage handStartMessage = 41; + /** + * optional .HandStartMessage handStartMessage = 41; + */ boolean hasHandStartMessage(); + /** + * optional .HandStartMessage handStartMessage = 41; + */ de.pokerth.protocol.ProtoBuf.HandStartMessage getHandStartMessage(); - + // optional .PlayersTurnMessage playersTurnMessage = 42; + /** + * optional .PlayersTurnMessage playersTurnMessage = 42; + */ boolean hasPlayersTurnMessage(); + /** + * optional .PlayersTurnMessage playersTurnMessage = 42; + */ de.pokerth.protocol.ProtoBuf.PlayersTurnMessage getPlayersTurnMessage(); - + // optional .MyActionRequestMessage myActionRequestMessage = 43; + /** + * optional .MyActionRequestMessage myActionRequestMessage = 43; + */ boolean hasMyActionRequestMessage(); + /** + * optional .MyActionRequestMessage myActionRequestMessage = 43; + */ de.pokerth.protocol.ProtoBuf.MyActionRequestMessage getMyActionRequestMessage(); - + // optional .YourActionRejectedMessage yourActionRejectedMessage = 44; + /** + * optional .YourActionRejectedMessage yourActionRejectedMessage = 44; + */ boolean hasYourActionRejectedMessage(); + /** + * optional .YourActionRejectedMessage yourActionRejectedMessage = 44; + */ de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage getYourActionRejectedMessage(); - + // optional .PlayersActionDoneMessage playersActionDoneMessage = 45; + /** + * optional .PlayersActionDoneMessage playersActionDoneMessage = 45; + */ boolean hasPlayersActionDoneMessage(); + /** + * optional .PlayersActionDoneMessage playersActionDoneMessage = 45; + */ de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage getPlayersActionDoneMessage(); - + // optional .DealFlopCardsMessage dealFlopCardsMessage = 46; + /** + * optional .DealFlopCardsMessage dealFlopCardsMessage = 46; + */ boolean hasDealFlopCardsMessage(); + /** + * optional .DealFlopCardsMessage dealFlopCardsMessage = 46; + */ de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage getDealFlopCardsMessage(); - + // optional .DealTurnCardMessage dealTurnCardMessage = 47; + /** + * optional .DealTurnCardMessage dealTurnCardMessage = 47; + */ boolean hasDealTurnCardMessage(); + /** + * optional .DealTurnCardMessage dealTurnCardMessage = 47; + */ de.pokerth.protocol.ProtoBuf.DealTurnCardMessage getDealTurnCardMessage(); - + // optional .DealRiverCardMessage dealRiverCardMessage = 48; + /** + * optional .DealRiverCardMessage dealRiverCardMessage = 48; + */ boolean hasDealRiverCardMessage(); + /** + * optional .DealRiverCardMessage dealRiverCardMessage = 48; + */ de.pokerth.protocol.ProtoBuf.DealRiverCardMessage getDealRiverCardMessage(); - + // optional .AllInShowCardsMessage allInShowCardsMessage = 49; + /** + * optional .AllInShowCardsMessage allInShowCardsMessage = 49; + */ boolean hasAllInShowCardsMessage(); + /** + * optional .AllInShowCardsMessage allInShowCardsMessage = 49; + */ de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage getAllInShowCardsMessage(); - + // optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; + /** + * optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; + */ boolean hasEndOfHandShowCardsMessage(); + /** + * optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; + */ de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage getEndOfHandShowCardsMessage(); - + // optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; + /** + * optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; + */ boolean hasEndOfHandHideCardsMessage(); + /** + * optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; + */ de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage getEndOfHandHideCardsMessage(); - + // optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; + /** + * optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; + */ boolean hasShowMyCardsRequestMessage(); + /** + * optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; + */ de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage getShowMyCardsRequestMessage(); - + // optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; + /** + * optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; + */ boolean hasAfterHandShowCardsMessage(); + /** + * optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; + */ de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage getAfterHandShowCardsMessage(); - + // optional .EndOfGameMessage endOfGameMessage = 54; + /** + * optional .EndOfGameMessage endOfGameMessage = 54; + */ boolean hasEndOfGameMessage(); + /** + * optional .EndOfGameMessage endOfGameMessage = 54; + */ de.pokerth.protocol.ProtoBuf.EndOfGameMessage getEndOfGameMessage(); - + // optional .PlayerIdChangedMessage playerIdChangedMessage = 55; + /** + * optional .PlayerIdChangedMessage playerIdChangedMessage = 55; + */ boolean hasPlayerIdChangedMessage(); + /** + * optional .PlayerIdChangedMessage playerIdChangedMessage = 55; + */ de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage getPlayerIdChangedMessage(); - + // optional .AskKickPlayerMessage askKickPlayerMessage = 56; + /** + * optional .AskKickPlayerMessage askKickPlayerMessage = 56; + */ boolean hasAskKickPlayerMessage(); + /** + * optional .AskKickPlayerMessage askKickPlayerMessage = 56; + */ de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage getAskKickPlayerMessage(); - + // optional .AskKickDeniedMessage askKickDeniedMessage = 57; + /** + * optional .AskKickDeniedMessage askKickDeniedMessage = 57; + */ boolean hasAskKickDeniedMessage(); + /** + * optional .AskKickDeniedMessage askKickDeniedMessage = 57; + */ de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage getAskKickDeniedMessage(); - + // optional .StartKickPetitionMessage startKickPetitionMessage = 58; + /** + * optional .StartKickPetitionMessage startKickPetitionMessage = 58; + */ boolean hasStartKickPetitionMessage(); + /** + * optional .StartKickPetitionMessage startKickPetitionMessage = 58; + */ de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage getStartKickPetitionMessage(); - + // optional .VoteKickRequestMessage voteKickRequestMessage = 59; + /** + * optional .VoteKickRequestMessage voteKickRequestMessage = 59; + */ boolean hasVoteKickRequestMessage(); + /** + * optional .VoteKickRequestMessage voteKickRequestMessage = 59; + */ de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage getVoteKickRequestMessage(); - + // optional .VoteKickReplyMessage voteKickReplyMessage = 60; + /** + * optional .VoteKickReplyMessage voteKickReplyMessage = 60; + */ boolean hasVoteKickReplyMessage(); + /** + * optional .VoteKickReplyMessage voteKickReplyMessage = 60; + */ de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage getVoteKickReplyMessage(); - + // optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; + /** + * optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; + */ boolean hasKickPetitionUpdateMessage(); + /** + * optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; + */ de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage getKickPetitionUpdateMessage(); - + // optional .EndKickPetitionMessage endKickPetitionMessage = 62; + /** + * optional .EndKickPetitionMessage endKickPetitionMessage = 62; + */ boolean hasEndKickPetitionMessage(); + /** + * optional .EndKickPetitionMessage endKickPetitionMessage = 62; + */ de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage getEndKickPetitionMessage(); - + // optional .StatisticsMessage statisticsMessage = 63; + /** + * optional .StatisticsMessage statisticsMessage = 63; + */ boolean hasStatisticsMessage(); + /** + * optional .StatisticsMessage statisticsMessage = 63; + */ de.pokerth.protocol.ProtoBuf.StatisticsMessage getStatisticsMessage(); - + // optional .ChatRequestMessage chatRequestMessage = 64; + /** + * optional .ChatRequestMessage chatRequestMessage = 64; + */ boolean hasChatRequestMessage(); + /** + * optional .ChatRequestMessage chatRequestMessage = 64; + */ de.pokerth.protocol.ProtoBuf.ChatRequestMessage getChatRequestMessage(); - + // optional .ChatMessage chatMessage = 65; + /** + * optional .ChatMessage chatMessage = 65; + */ boolean hasChatMessage(); + /** + * optional .ChatMessage chatMessage = 65; + */ de.pokerth.protocol.ProtoBuf.ChatMessage getChatMessage(); - + // optional .ChatRejectMessage chatRejectMessage = 66; + /** + * optional .ChatRejectMessage chatRejectMessage = 66; + */ boolean hasChatRejectMessage(); + /** + * optional .ChatRejectMessage chatRejectMessage = 66; + */ de.pokerth.protocol.ProtoBuf.ChatRejectMessage getChatRejectMessage(); - + // optional .DialogMessage dialogMessage = 67; + /** + * optional .DialogMessage dialogMessage = 67; + */ boolean hasDialogMessage(); + /** + * optional .DialogMessage dialogMessage = 67; + */ de.pokerth.protocol.ProtoBuf.DialogMessage getDialogMessage(); - + // optional .TimeoutWarningMessage timeoutWarningMessage = 68; + /** + * optional .TimeoutWarningMessage timeoutWarningMessage = 68; + */ boolean hasTimeoutWarningMessage(); + /** + * optional .TimeoutWarningMessage timeoutWarningMessage = 68; + */ de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage getTimeoutWarningMessage(); - + // optional .ResetTimeoutMessage resetTimeoutMessage = 69; + /** + * optional .ResetTimeoutMessage resetTimeoutMessage = 69; + */ boolean hasResetTimeoutMessage(); + /** + * optional .ResetTimeoutMessage resetTimeoutMessage = 69; + */ de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage getResetTimeoutMessage(); - + // optional .ReportAvatarMessage reportAvatarMessage = 70; + /** + * optional .ReportAvatarMessage reportAvatarMessage = 70; + */ boolean hasReportAvatarMessage(); + /** + * optional .ReportAvatarMessage reportAvatarMessage = 70; + */ de.pokerth.protocol.ProtoBuf.ReportAvatarMessage getReportAvatarMessage(); - + // optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; + /** + * optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; + */ boolean hasReportAvatarAckMessage(); + /** + * optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; + */ de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage getReportAvatarAckMessage(); - + // optional .ReportGameMessage reportGameMessage = 72; + /** + * optional .ReportGameMessage reportGameMessage = 72; + */ boolean hasReportGameMessage(); + /** + * optional .ReportGameMessage reportGameMessage = 72; + */ de.pokerth.protocol.ProtoBuf.ReportGameMessage getReportGameMessage(); - + // optional .ReportGameAckMessage reportGameAckMessage = 73; + /** + * optional .ReportGameAckMessage reportGameAckMessage = 73; + */ boolean hasReportGameAckMessage(); + /** + * optional .ReportGameAckMessage reportGameAckMessage = 73; + */ de.pokerth.protocol.ProtoBuf.ReportGameAckMessage getReportGameAckMessage(); - + // optional .ErrorMessage errorMessage = 74; + /** + * optional .ErrorMessage errorMessage = 74; + */ boolean hasErrorMessage(); + /** + * optional .ErrorMessage errorMessage = 74; + */ de.pokerth.protocol.ProtoBuf.ErrorMessage getErrorMessage(); - + // optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; + /** + * optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; + */ boolean hasAdminRemoveGameMessage(); + /** + * optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; + */ de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage getAdminRemoveGameMessage(); - + // optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; + /** + * optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; + */ boolean hasAdminRemoveGameAckMessage(); + /** + * optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; + */ de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage getAdminRemoveGameAckMessage(); - + // optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; + /** + * optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; + */ boolean hasAdminBanPlayerMessage(); + /** + * optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; + */ de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage getAdminBanPlayerMessage(); - + // optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; + /** + * optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; + */ boolean hasAdminBanPlayerAckMessage(); + /** + * optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; + */ de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage getAdminBanPlayerAckMessage(); - + // optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; + /** + * optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; + */ boolean hasGameListSpectatorJoinedMessage(); + /** + * optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; + */ de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage getGameListSpectatorJoinedMessage(); - + // optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; + /** + * optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; + */ boolean hasGameListSpectatorLeftMessage(); + /** + * optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; + */ de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage getGameListSpectatorLeftMessage(); - + // optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; + /** + * optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; + */ boolean hasGameSpectatorJoinedMessage(); + /** + * optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; + */ de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage getGameSpectatorJoinedMessage(); - + // optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; + /** + * optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; + */ boolean hasGameSpectatorLeftMessage(); + /** + * optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; + */ de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage getGameSpectatorLeftMessage(); } + /** + * Protobuf type {@code PokerTHMessage} + */ public static final class PokerTHMessage extends com.google.protobuf.GeneratedMessageLite implements PokerTHMessageOrBuilder { // Use PokerTHMessage.newBuilder() to construct. - private PokerTHMessage(Builder builder) { + private PokerTHMessage(com.google.protobuf.GeneratedMessageLite.Builder builder) { super(builder); + } private PokerTHMessage(boolean noInit) {} - + private static final PokerTHMessage defaultInstance; public static PokerTHMessage getDefaultInstance() { return defaultInstance; } - + public PokerTHMessage getDefaultInstanceForType() { return defaultInstance; } - + + private PokerTHMessage( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + initFields(); + int mutable_bitField0_ = 0; + int mutable_bitField1_ = 0; + int mutable_bitField2_ = 0; + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!parseUnknownField(input, + extensionRegistry, tag)) { + done = true; + } + break; + } + case 8: { + int rawValue = input.readEnum(); + de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType value = de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType.valueOf(rawValue); + if (value != null) { + bitField0_ |= 0x00000001; + messageType_ = value; + } + break; + } + case 18: { + de.pokerth.protocol.ProtoBuf.AnnounceMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00000002) == 0x00000002)) { + subBuilder = announceMessage_.toBuilder(); + } + announceMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AnnounceMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(announceMessage_); + announceMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000002; + break; + } + case 26: { + de.pokerth.protocol.ProtoBuf.InitMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00000004) == 0x00000004)) { + subBuilder = initMessage_.toBuilder(); + } + initMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.InitMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(initMessage_); + initMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000004; + break; + } + case 34: { + de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00000008) == 0x00000008)) { + subBuilder = authServerChallengeMessage_.toBuilder(); + } + authServerChallengeMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(authServerChallengeMessage_); + authServerChallengeMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000008; + break; + } + case 42: { + de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00000010) == 0x00000010)) { + subBuilder = authClientResponseMessage_.toBuilder(); + } + authClientResponseMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(authClientResponseMessage_); + authClientResponseMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000010; + break; + } + case 50: { + de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00000020) == 0x00000020)) { + subBuilder = authServerVerificationMessage_.toBuilder(); + } + authServerVerificationMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(authServerVerificationMessage_); + authServerVerificationMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000020; + break; + } + case 58: { + de.pokerth.protocol.ProtoBuf.InitAckMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00000040) == 0x00000040)) { + subBuilder = initAckMessage_.toBuilder(); + } + initAckMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.InitAckMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(initAckMessage_); + initAckMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000040; + break; + } + case 66: { + de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00000080) == 0x00000080)) { + subBuilder = avatarRequestMessage_.toBuilder(); + } + avatarRequestMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(avatarRequestMessage_); + avatarRequestMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000080; + break; + } + case 74: { + de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00000100) == 0x00000100)) { + subBuilder = avatarHeaderMessage_.toBuilder(); + } + avatarHeaderMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(avatarHeaderMessage_); + avatarHeaderMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000100; + break; + } + case 82: { + de.pokerth.protocol.ProtoBuf.AvatarDataMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00000200) == 0x00000200)) { + subBuilder = avatarDataMessage_.toBuilder(); + } + avatarDataMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AvatarDataMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(avatarDataMessage_); + avatarDataMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000200; + break; + } + case 90: { + de.pokerth.protocol.ProtoBuf.AvatarEndMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00000400) == 0x00000400)) { + subBuilder = avatarEndMessage_.toBuilder(); + } + avatarEndMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AvatarEndMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(avatarEndMessage_); + avatarEndMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000400; + break; + } + case 98: { + de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00000800) == 0x00000800)) { + subBuilder = unknownAvatarMessage_.toBuilder(); + } + unknownAvatarMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(unknownAvatarMessage_); + unknownAvatarMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000800; + break; + } + case 106: { + de.pokerth.protocol.ProtoBuf.PlayerListMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00001000) == 0x00001000)) { + subBuilder = playerListMessage_.toBuilder(); + } + playerListMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.PlayerListMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(playerListMessage_); + playerListMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00001000; + break; + } + case 114: { + de.pokerth.protocol.ProtoBuf.GameListNewMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00002000) == 0x00002000)) { + subBuilder = gameListNewMessage_.toBuilder(); + } + gameListNewMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GameListNewMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameListNewMessage_); + gameListNewMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00002000; + break; + } + case 122: { + de.pokerth.protocol.ProtoBuf.GameListUpdateMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00004000) == 0x00004000)) { + subBuilder = gameListUpdateMessage_.toBuilder(); + } + gameListUpdateMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GameListUpdateMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameListUpdateMessage_); + gameListUpdateMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00004000; + break; + } + case 130: { + de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00008000) == 0x00008000)) { + subBuilder = gameListPlayerJoinedMessage_.toBuilder(); + } + gameListPlayerJoinedMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameListPlayerJoinedMessage_); + gameListPlayerJoinedMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00008000; + break; + } + case 138: { + de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00010000) == 0x00010000)) { + subBuilder = gameListPlayerLeftMessage_.toBuilder(); + } + gameListPlayerLeftMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameListPlayerLeftMessage_); + gameListPlayerLeftMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00010000; + break; + } + case 146: { + de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00020000) == 0x00020000)) { + subBuilder = gameListAdminChangedMessage_.toBuilder(); + } + gameListAdminChangedMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameListAdminChangedMessage_); + gameListAdminChangedMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00020000; + break; + } + case 154: { + de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00040000) == 0x00040000)) { + subBuilder = playerInfoRequestMessage_.toBuilder(); + } + playerInfoRequestMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(playerInfoRequestMessage_); + playerInfoRequestMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00040000; + break; + } + case 162: { + de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00080000) == 0x00080000)) { + subBuilder = playerInfoReplyMessage_.toBuilder(); + } + playerInfoReplyMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(playerInfoReplyMessage_); + playerInfoReplyMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00080000; + break; + } + case 170: { + de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00100000) == 0x00100000)) { + subBuilder = subscriptionRequestMessage_.toBuilder(); + } + subscriptionRequestMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(subscriptionRequestMessage_); + subscriptionRequestMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00100000; + break; + } + case 178: { + de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00200000) == 0x00200000)) { + subBuilder = joinExistingGameMessage_.toBuilder(); + } + joinExistingGameMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(joinExistingGameMessage_); + joinExistingGameMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00200000; + break; + } + case 186: { + de.pokerth.protocol.ProtoBuf.JoinNewGameMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00400000) == 0x00400000)) { + subBuilder = joinNewGameMessage_.toBuilder(); + } + joinNewGameMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.JoinNewGameMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(joinNewGameMessage_); + joinNewGameMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00400000; + break; + } + case 194: { + de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.Builder subBuilder = null; + if (((bitField0_ & 0x00800000) == 0x00800000)) { + subBuilder = rejoinExistingGameMessage_.toBuilder(); + } + rejoinExistingGameMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(rejoinExistingGameMessage_); + rejoinExistingGameMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00800000; + break; + } + case 202: { + de.pokerth.protocol.ProtoBuf.JoinGameAckMessage.Builder subBuilder = null; + if (((bitField0_ & 0x01000000) == 0x01000000)) { + subBuilder = joinGameAckMessage_.toBuilder(); + } + joinGameAckMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.JoinGameAckMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(joinGameAckMessage_); + joinGameAckMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x01000000; + break; + } + case 210: { + de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.Builder subBuilder = null; + if (((bitField0_ & 0x02000000) == 0x02000000)) { + subBuilder = joinGameFailedMessage_.toBuilder(); + } + joinGameFailedMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(joinGameFailedMessage_); + joinGameFailedMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x02000000; + break; + } + case 218: { + de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.Builder subBuilder = null; + if (((bitField0_ & 0x04000000) == 0x04000000)) { + subBuilder = gamePlayerJoinedMessage_.toBuilder(); + } + gamePlayerJoinedMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gamePlayerJoinedMessage_); + gamePlayerJoinedMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x04000000; + break; + } + case 226: { + de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.Builder subBuilder = null; + if (((bitField0_ & 0x08000000) == 0x08000000)) { + subBuilder = gamePlayerLeftMessage_.toBuilder(); + } + gamePlayerLeftMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gamePlayerLeftMessage_); + gamePlayerLeftMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x08000000; + break; + } + case 234: { + de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.Builder subBuilder = null; + if (((bitField0_ & 0x10000000) == 0x10000000)) { + subBuilder = gameAdminChangedMessage_.toBuilder(); + } + gameAdminChangedMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameAdminChangedMessage_); + gameAdminChangedMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x10000000; + break; + } + case 242: { + de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.Builder subBuilder = null; + if (((bitField0_ & 0x20000000) == 0x20000000)) { + subBuilder = removedFromGameMessage_.toBuilder(); + } + removedFromGameMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(removedFromGameMessage_); + removedFromGameMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x20000000; + break; + } + case 250: { + de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage.Builder subBuilder = null; + if (((bitField0_ & 0x40000000) == 0x40000000)) { + subBuilder = kickPlayerRequestMessage_.toBuilder(); + } + kickPlayerRequestMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(kickPlayerRequestMessage_); + kickPlayerRequestMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x40000000; + break; + } + case 258: { + de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.Builder subBuilder = null; + if (((bitField0_ & 0x80000000) == 0x80000000)) { + subBuilder = leaveGameRequestMessage_.toBuilder(); + } + leaveGameRequestMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(leaveGameRequestMessage_); + leaveGameRequestMessage_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x80000000; + break; + } + case 266: { + de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00000001) == 0x00000001)) { + subBuilder = invitePlayerToGameMessage_.toBuilder(); + } + invitePlayerToGameMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(invitePlayerToGameMessage_); + invitePlayerToGameMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00000001; + break; + } + case 274: { + de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00000002) == 0x00000002)) { + subBuilder = inviteNotifyMessage_.toBuilder(); + } + inviteNotifyMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(inviteNotifyMessage_); + inviteNotifyMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00000002; + break; + } + case 282: { + de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00000004) == 0x00000004)) { + subBuilder = rejectGameInvitationMessage_.toBuilder(); + } + rejectGameInvitationMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(rejectGameInvitationMessage_); + rejectGameInvitationMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00000004; + break; + } + case 290: { + de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00000008) == 0x00000008)) { + subBuilder = rejectInvNotifyMessage_.toBuilder(); + } + rejectInvNotifyMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(rejectInvNotifyMessage_); + rejectInvNotifyMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00000008; + break; + } + case 298: { + de.pokerth.protocol.ProtoBuf.StartEventMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00000010) == 0x00000010)) { + subBuilder = startEventMessage_.toBuilder(); + } + startEventMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.StartEventMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(startEventMessage_); + startEventMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00000010; + break; + } + case 306: { + de.pokerth.protocol.ProtoBuf.StartEventAckMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00000020) == 0x00000020)) { + subBuilder = startEventAckMessage_.toBuilder(); + } + startEventAckMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.StartEventAckMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(startEventAckMessage_); + startEventAckMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00000020; + break; + } + case 314: { + de.pokerth.protocol.ProtoBuf.GameStartInitialMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00000040) == 0x00000040)) { + subBuilder = gameStartInitialMessage_.toBuilder(); + } + gameStartInitialMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GameStartInitialMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameStartInitialMessage_); + gameStartInitialMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00000040; + break; + } + case 322: { + de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00000080) == 0x00000080)) { + subBuilder = gameStartRejoinMessage_.toBuilder(); + } + gameStartRejoinMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameStartRejoinMessage_); + gameStartRejoinMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00000080; + break; + } + case 330: { + de.pokerth.protocol.ProtoBuf.HandStartMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00000100) == 0x00000100)) { + subBuilder = handStartMessage_.toBuilder(); + } + handStartMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.HandStartMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(handStartMessage_); + handStartMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00000100; + break; + } + case 338: { + de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00000200) == 0x00000200)) { + subBuilder = playersTurnMessage_.toBuilder(); + } + playersTurnMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(playersTurnMessage_); + playersTurnMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00000200; + break; + } + case 346: { + de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00000400) == 0x00000400)) { + subBuilder = myActionRequestMessage_.toBuilder(); + } + myActionRequestMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(myActionRequestMessage_); + myActionRequestMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00000400; + break; + } + case 354: { + de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00000800) == 0x00000800)) { + subBuilder = yourActionRejectedMessage_.toBuilder(); + } + yourActionRejectedMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(yourActionRejectedMessage_); + yourActionRejectedMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00000800; + break; + } + case 362: { + de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00001000) == 0x00001000)) { + subBuilder = playersActionDoneMessage_.toBuilder(); + } + playersActionDoneMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(playersActionDoneMessage_); + playersActionDoneMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00001000; + break; + } + case 370: { + de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00002000) == 0x00002000)) { + subBuilder = dealFlopCardsMessage_.toBuilder(); + } + dealFlopCardsMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(dealFlopCardsMessage_); + dealFlopCardsMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00002000; + break; + } + case 378: { + de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00004000) == 0x00004000)) { + subBuilder = dealTurnCardMessage_.toBuilder(); + } + dealTurnCardMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(dealTurnCardMessage_); + dealTurnCardMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00004000; + break; + } + case 386: { + de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00008000) == 0x00008000)) { + subBuilder = dealRiverCardMessage_.toBuilder(); + } + dealRiverCardMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(dealRiverCardMessage_); + dealRiverCardMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00008000; + break; + } + case 394: { + de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00010000) == 0x00010000)) { + subBuilder = allInShowCardsMessage_.toBuilder(); + } + allInShowCardsMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(allInShowCardsMessage_); + allInShowCardsMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00010000; + break; + } + case 402: { + de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00020000) == 0x00020000)) { + subBuilder = endOfHandShowCardsMessage_.toBuilder(); + } + endOfHandShowCardsMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(endOfHandShowCardsMessage_); + endOfHandShowCardsMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00020000; + break; + } + case 410: { + de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00040000) == 0x00040000)) { + subBuilder = endOfHandHideCardsMessage_.toBuilder(); + } + endOfHandHideCardsMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(endOfHandHideCardsMessage_); + endOfHandHideCardsMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00040000; + break; + } + case 418: { + de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00080000) == 0x00080000)) { + subBuilder = showMyCardsRequestMessage_.toBuilder(); + } + showMyCardsRequestMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(showMyCardsRequestMessage_); + showMyCardsRequestMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00080000; + break; + } + case 426: { + de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00100000) == 0x00100000)) { + subBuilder = afterHandShowCardsMessage_.toBuilder(); + } + afterHandShowCardsMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(afterHandShowCardsMessage_); + afterHandShowCardsMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00100000; + break; + } + case 434: { + de.pokerth.protocol.ProtoBuf.EndOfGameMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00200000) == 0x00200000)) { + subBuilder = endOfGameMessage_.toBuilder(); + } + endOfGameMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.EndOfGameMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(endOfGameMessage_); + endOfGameMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00200000; + break; + } + case 442: { + de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00400000) == 0x00400000)) { + subBuilder = playerIdChangedMessage_.toBuilder(); + } + playerIdChangedMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(playerIdChangedMessage_); + playerIdChangedMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00400000; + break; + } + case 450: { + de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.Builder subBuilder = null; + if (((bitField1_ & 0x00800000) == 0x00800000)) { + subBuilder = askKickPlayerMessage_.toBuilder(); + } + askKickPlayerMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(askKickPlayerMessage_); + askKickPlayerMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x00800000; + break; + } + case 458: { + de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.Builder subBuilder = null; + if (((bitField1_ & 0x01000000) == 0x01000000)) { + subBuilder = askKickDeniedMessage_.toBuilder(); + } + askKickDeniedMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(askKickDeniedMessage_); + askKickDeniedMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x01000000; + break; + } + case 466: { + de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.Builder subBuilder = null; + if (((bitField1_ & 0x02000000) == 0x02000000)) { + subBuilder = startKickPetitionMessage_.toBuilder(); + } + startKickPetitionMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(startKickPetitionMessage_); + startKickPetitionMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x02000000; + break; + } + case 474: { + de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.Builder subBuilder = null; + if (((bitField1_ & 0x04000000) == 0x04000000)) { + subBuilder = voteKickRequestMessage_.toBuilder(); + } + voteKickRequestMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(voteKickRequestMessage_); + voteKickRequestMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x04000000; + break; + } + case 482: { + de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.Builder subBuilder = null; + if (((bitField1_ & 0x08000000) == 0x08000000)) { + subBuilder = voteKickReplyMessage_.toBuilder(); + } + voteKickReplyMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(voteKickReplyMessage_); + voteKickReplyMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x08000000; + break; + } + case 490: { + de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.Builder subBuilder = null; + if (((bitField1_ & 0x10000000) == 0x10000000)) { + subBuilder = kickPetitionUpdateMessage_.toBuilder(); + } + kickPetitionUpdateMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(kickPetitionUpdateMessage_); + kickPetitionUpdateMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x10000000; + break; + } + case 498: { + de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.Builder subBuilder = null; + if (((bitField1_ & 0x20000000) == 0x20000000)) { + subBuilder = endKickPetitionMessage_.toBuilder(); + } + endKickPetitionMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(endKickPetitionMessage_); + endKickPetitionMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x20000000; + break; + } + case 506: { + de.pokerth.protocol.ProtoBuf.StatisticsMessage.Builder subBuilder = null; + if (((bitField1_ & 0x40000000) == 0x40000000)) { + subBuilder = statisticsMessage_.toBuilder(); + } + statisticsMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.StatisticsMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(statisticsMessage_); + statisticsMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x40000000; + break; + } + case 514: { + de.pokerth.protocol.ProtoBuf.ChatRequestMessage.Builder subBuilder = null; + if (((bitField1_ & 0x80000000) == 0x80000000)) { + subBuilder = chatRequestMessage_.toBuilder(); + } + chatRequestMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.ChatRequestMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(chatRequestMessage_); + chatRequestMessage_ = subBuilder.buildPartial(); + } + bitField1_ |= 0x80000000; + break; + } + case 522: { + de.pokerth.protocol.ProtoBuf.ChatMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00000001) == 0x00000001)) { + subBuilder = chatMessage_.toBuilder(); + } + chatMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.ChatMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(chatMessage_); + chatMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00000001; + break; + } + case 530: { + de.pokerth.protocol.ProtoBuf.ChatRejectMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00000002) == 0x00000002)) { + subBuilder = chatRejectMessage_.toBuilder(); + } + chatRejectMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.ChatRejectMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(chatRejectMessage_); + chatRejectMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00000002; + break; + } + case 538: { + de.pokerth.protocol.ProtoBuf.DialogMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00000004) == 0x00000004)) { + subBuilder = dialogMessage_.toBuilder(); + } + dialogMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.DialogMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(dialogMessage_); + dialogMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00000004; + break; + } + case 546: { + de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00000008) == 0x00000008)) { + subBuilder = timeoutWarningMessage_.toBuilder(); + } + timeoutWarningMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(timeoutWarningMessage_); + timeoutWarningMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00000008; + break; + } + case 554: { + de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00000010) == 0x00000010)) { + subBuilder = resetTimeoutMessage_.toBuilder(); + } + resetTimeoutMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(resetTimeoutMessage_); + resetTimeoutMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00000010; + break; + } + case 562: { + de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00000020) == 0x00000020)) { + subBuilder = reportAvatarMessage_.toBuilder(); + } + reportAvatarMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(reportAvatarMessage_); + reportAvatarMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00000020; + break; + } + case 570: { + de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00000040) == 0x00000040)) { + subBuilder = reportAvatarAckMessage_.toBuilder(); + } + reportAvatarAckMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(reportAvatarAckMessage_); + reportAvatarAckMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00000040; + break; + } + case 578: { + de.pokerth.protocol.ProtoBuf.ReportGameMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00000080) == 0x00000080)) { + subBuilder = reportGameMessage_.toBuilder(); + } + reportGameMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.ReportGameMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(reportGameMessage_); + reportGameMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00000080; + break; + } + case 586: { + de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00000100) == 0x00000100)) { + subBuilder = reportGameAckMessage_.toBuilder(); + } + reportGameAckMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(reportGameAckMessage_); + reportGameAckMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00000100; + break; + } + case 594: { + de.pokerth.protocol.ProtoBuf.ErrorMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00000200) == 0x00000200)) { + subBuilder = errorMessage_.toBuilder(); + } + errorMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.ErrorMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(errorMessage_); + errorMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00000200; + break; + } + case 602: { + de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00000400) == 0x00000400)) { + subBuilder = adminRemoveGameMessage_.toBuilder(); + } + adminRemoveGameMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(adminRemoveGameMessage_); + adminRemoveGameMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00000400; + break; + } + case 610: { + de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00000800) == 0x00000800)) { + subBuilder = adminRemoveGameAckMessage_.toBuilder(); + } + adminRemoveGameAckMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(adminRemoveGameAckMessage_); + adminRemoveGameAckMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00000800; + break; + } + case 618: { + de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00001000) == 0x00001000)) { + subBuilder = adminBanPlayerMessage_.toBuilder(); + } + adminBanPlayerMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(adminBanPlayerMessage_); + adminBanPlayerMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00001000; + break; + } + case 626: { + de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00002000) == 0x00002000)) { + subBuilder = adminBanPlayerAckMessage_.toBuilder(); + } + adminBanPlayerAckMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(adminBanPlayerAckMessage_); + adminBanPlayerAckMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00002000; + break; + } + case 634: { + de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00004000) == 0x00004000)) { + subBuilder = gameListSpectatorJoinedMessage_.toBuilder(); + } + gameListSpectatorJoinedMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameListSpectatorJoinedMessage_); + gameListSpectatorJoinedMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00004000; + break; + } + case 642: { + de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00008000) == 0x00008000)) { + subBuilder = gameListSpectatorLeftMessage_.toBuilder(); + } + gameListSpectatorLeftMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameListSpectatorLeftMessage_); + gameListSpectatorLeftMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00008000; + break; + } + case 650: { + de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00010000) == 0x00010000)) { + subBuilder = gameSpectatorJoinedMessage_.toBuilder(); + } + gameSpectatorJoinedMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameSpectatorJoinedMessage_); + gameSpectatorJoinedMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00010000; + break; + } + case 658: { + de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.Builder subBuilder = null; + if (((bitField2_ & 0x00020000) == 0x00020000)) { + subBuilder = gameSpectatorLeftMessage_.toBuilder(); + } + gameSpectatorLeftMessage_ = input.readMessage(de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(gameSpectatorLeftMessage_); + gameSpectatorLeftMessage_ = subBuilder.buildPartial(); + } + bitField2_ |= 0x00020000; + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e.getMessage()).setUnfinishedMessage(this); + } finally { + makeExtensionsImmutable(); + } + } + public static com.google.protobuf.Parser PARSER = + new com.google.protobuf.AbstractParser() { + public PokerTHMessage parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new PokerTHMessage(input, extensionRegistry); + } + }; + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + /** + * Protobuf enum {@code PokerTHMessage.PokerTHMessageType} + */ public enum PokerTHMessageType implements com.google.protobuf.Internal.EnumLite { + /** + * Type_AnnounceMessage = 1; + */ Type_AnnounceMessage(0, 1), + /** + * Type_InitMessage = 2; + */ Type_InitMessage(1, 2), + /** + * Type_AuthServerChallengeMessage = 3; + */ Type_AuthServerChallengeMessage(2, 3), + /** + * Type_AuthClientResponseMessage = 4; + */ Type_AuthClientResponseMessage(3, 4), + /** + * Type_AuthServerVerificationMessage = 5; + */ Type_AuthServerVerificationMessage(4, 5), + /** + * Type_InitAckMessage = 6; + */ Type_InitAckMessage(5, 6), + /** + * Type_AvatarRequestMessage = 7; + */ Type_AvatarRequestMessage(6, 7), + /** + * Type_AvatarHeaderMessage = 8; + */ Type_AvatarHeaderMessage(7, 8), + /** + * Type_AvatarDataMessage = 9; + */ Type_AvatarDataMessage(8, 9), + /** + * Type_AvatarEndMessage = 10; + */ Type_AvatarEndMessage(9, 10), + /** + * Type_UnknownAvatarMessage = 11; + */ Type_UnknownAvatarMessage(10, 11), + /** + * Type_PlayerListMessage = 12; + */ Type_PlayerListMessage(11, 12), + /** + * Type_GameListNewMessage = 13; + */ Type_GameListNewMessage(12, 13), + /** + * Type_GameListUpdateMessage = 14; + */ Type_GameListUpdateMessage(13, 14), + /** + * Type_GameListPlayerJoinedMessage = 15; + */ Type_GameListPlayerJoinedMessage(14, 15), + /** + * Type_GameListPlayerLeftMessage = 16; + */ Type_GameListPlayerLeftMessage(15, 16), + /** + * Type_GameListAdminChangedMessage = 17; + */ Type_GameListAdminChangedMessage(16, 17), + /** + * Type_PlayerInfoRequestMessage = 18; + */ Type_PlayerInfoRequestMessage(17, 18), + /** + * Type_PlayerInfoReplyMessage = 19; + */ Type_PlayerInfoReplyMessage(18, 19), + /** + * Type_SubscriptionRequestMessage = 20; + */ Type_SubscriptionRequestMessage(19, 20), + /** + * Type_JoinExistingGameMessage = 21; + */ Type_JoinExistingGameMessage(20, 21), + /** + * Type_JoinNewGameMessage = 22; + */ Type_JoinNewGameMessage(21, 22), + /** + * Type_RejoinExistingGameMessage = 23; + */ Type_RejoinExistingGameMessage(22, 23), + /** + * Type_JoinGameAckMessage = 24; + */ Type_JoinGameAckMessage(23, 24), + /** + * Type_JoinGameFailedMessage = 25; + */ Type_JoinGameFailedMessage(24, 25), + /** + * Type_GamePlayerJoinedMessage = 26; + */ Type_GamePlayerJoinedMessage(25, 26), + /** + * Type_GamePlayerLeftMessage = 27; + */ Type_GamePlayerLeftMessage(26, 27), + /** + * Type_GameAdminChangedMessage = 28; + */ Type_GameAdminChangedMessage(27, 28), + /** + * Type_RemovedFromGameMessage = 29; + */ Type_RemovedFromGameMessage(28, 29), + /** + * Type_KickPlayerRequestMessage = 30; + */ Type_KickPlayerRequestMessage(29, 30), + /** + * Type_LeaveGameRequestMessage = 31; + */ Type_LeaveGameRequestMessage(30, 31), + /** + * Type_InvitePlayerToGameMessage = 32; + */ Type_InvitePlayerToGameMessage(31, 32), + /** + * Type_InviteNotifyMessage = 33; + */ Type_InviteNotifyMessage(32, 33), + /** + * Type_RejectGameInvitationMessage = 34; + */ Type_RejectGameInvitationMessage(33, 34), + /** + * Type_RejectInvNotifyMessage = 35; + */ Type_RejectInvNotifyMessage(34, 35), + /** + * Type_StartEventMessage = 36; + */ Type_StartEventMessage(35, 36), + /** + * Type_StartEventAckMessage = 37; + */ Type_StartEventAckMessage(36, 37), + /** + * Type_GameStartInitialMessage = 38; + */ Type_GameStartInitialMessage(37, 38), + /** + * Type_GameStartRejoinMessage = 39; + */ Type_GameStartRejoinMessage(38, 39), + /** + * Type_HandStartMessage = 40; + */ Type_HandStartMessage(39, 40), + /** + * Type_PlayersTurnMessage = 41; + */ Type_PlayersTurnMessage(40, 41), + /** + * Type_MyActionRequestMessage = 42; + */ Type_MyActionRequestMessage(41, 42), + /** + * Type_YourActionRejectedMessage = 43; + */ Type_YourActionRejectedMessage(42, 43), + /** + * Type_PlayersActionDoneMessage = 44; + */ Type_PlayersActionDoneMessage(43, 44), + /** + * Type_DealFlopCardsMessage = 45; + */ Type_DealFlopCardsMessage(44, 45), + /** + * Type_DealTurnCardMessage = 46; + */ Type_DealTurnCardMessage(45, 46), + /** + * Type_DealRiverCardMessage = 47; + */ Type_DealRiverCardMessage(46, 47), + /** + * Type_AllInShowCardsMessage = 48; + */ Type_AllInShowCardsMessage(47, 48), + /** + * Type_EndOfHandShowCardsMessage = 49; + */ Type_EndOfHandShowCardsMessage(48, 49), + /** + * Type_EndOfHandHideCardsMessage = 50; + */ Type_EndOfHandHideCardsMessage(49, 50), + /** + * Type_ShowMyCardsRequestMessage = 51; + */ Type_ShowMyCardsRequestMessage(50, 51), + /** + * Type_AfterHandShowCardsMessage = 52; + */ Type_AfterHandShowCardsMessage(51, 52), + /** + * Type_EndOfGameMessage = 53; + */ Type_EndOfGameMessage(52, 53), + /** + * Type_PlayerIdChangedMessage = 54; + */ Type_PlayerIdChangedMessage(53, 54), + /** + * Type_AskKickPlayerMessage = 55; + */ Type_AskKickPlayerMessage(54, 55), + /** + * Type_AskKickDeniedMessage = 56; + */ Type_AskKickDeniedMessage(55, 56), + /** + * Type_StartKickPetitionMessage = 57; + */ Type_StartKickPetitionMessage(56, 57), + /** + * Type_VoteKickRequestMessage = 58; + */ Type_VoteKickRequestMessage(57, 58), + /** + * Type_VoteKickReplyMessage = 59; + */ Type_VoteKickReplyMessage(58, 59), + /** + * Type_KickPetitionUpdateMessage = 60; + */ Type_KickPetitionUpdateMessage(59, 60), + /** + * Type_EndKickPetitionMessage = 61; + */ Type_EndKickPetitionMessage(60, 61), + /** + * Type_StatisticsMessage = 62; + */ Type_StatisticsMessage(61, 62), + /** + * Type_ChatRequestMessage = 63; + */ Type_ChatRequestMessage(62, 63), + /** + * Type_ChatMessage = 64; + */ Type_ChatMessage(63, 64), + /** + * Type_ChatRejectMessage = 65; + */ Type_ChatRejectMessage(64, 65), + /** + * Type_DialogMessage = 66; + */ Type_DialogMessage(65, 66), + /** + * Type_TimeoutWarningMessage = 67; + */ Type_TimeoutWarningMessage(66, 67), + /** + * Type_ResetTimeoutMessage = 68; + */ Type_ResetTimeoutMessage(67, 68), + /** + * Type_ReportAvatarMessage = 69; + */ Type_ReportAvatarMessage(68, 69), + /** + * Type_ReportAvatarAckMessage = 70; + */ Type_ReportAvatarAckMessage(69, 70), + /** + * Type_ReportGameMessage = 71; + */ Type_ReportGameMessage(70, 71), + /** + * Type_ReportGameAckMessage = 72; + */ Type_ReportGameAckMessage(71, 72), + /** + * Type_ErrorMessage = 73; + */ Type_ErrorMessage(72, 73), + /** + * Type_AdminRemoveGameMessage = 74; + */ Type_AdminRemoveGameMessage(73, 74), + /** + * Type_AdminRemoveGameAckMessage = 75; + */ Type_AdminRemoveGameAckMessage(74, 75), + /** + * Type_AdminBanPlayerMessage = 76; + */ Type_AdminBanPlayerMessage(75, 76), + /** + * Type_AdminBanPlayerAckMessage = 77; + */ Type_AdminBanPlayerAckMessage(76, 77), + /** + * Type_GameListSpectatorJoinedMessage = 78; + */ Type_GameListSpectatorJoinedMessage(77, 78), + /** + * Type_GameListSpectatorLeftMessage = 79; + */ Type_GameListSpectatorLeftMessage(78, 79), + /** + * Type_GameSpectatorJoinedMessage = 80; + */ Type_GameSpectatorJoinedMessage(79, 80), + /** + * Type_GameSpectatorLeftMessage = 81; + */ Type_GameSpectatorLeftMessage(80, 81), ; - + + /** + * Type_AnnounceMessage = 1; + */ public static final int Type_AnnounceMessage_VALUE = 1; + /** + * Type_InitMessage = 2; + */ public static final int Type_InitMessage_VALUE = 2; + /** + * Type_AuthServerChallengeMessage = 3; + */ public static final int Type_AuthServerChallengeMessage_VALUE = 3; + /** + * Type_AuthClientResponseMessage = 4; + */ public static final int Type_AuthClientResponseMessage_VALUE = 4; + /** + * Type_AuthServerVerificationMessage = 5; + */ public static final int Type_AuthServerVerificationMessage_VALUE = 5; + /** + * Type_InitAckMessage = 6; + */ public static final int Type_InitAckMessage_VALUE = 6; + /** + * Type_AvatarRequestMessage = 7; + */ public static final int Type_AvatarRequestMessage_VALUE = 7; + /** + * Type_AvatarHeaderMessage = 8; + */ public static final int Type_AvatarHeaderMessage_VALUE = 8; + /** + * Type_AvatarDataMessage = 9; + */ public static final int Type_AvatarDataMessage_VALUE = 9; + /** + * Type_AvatarEndMessage = 10; + */ public static final int Type_AvatarEndMessage_VALUE = 10; + /** + * Type_UnknownAvatarMessage = 11; + */ public static final int Type_UnknownAvatarMessage_VALUE = 11; + /** + * Type_PlayerListMessage = 12; + */ public static final int Type_PlayerListMessage_VALUE = 12; + /** + * Type_GameListNewMessage = 13; + */ public static final int Type_GameListNewMessage_VALUE = 13; + /** + * Type_GameListUpdateMessage = 14; + */ public static final int Type_GameListUpdateMessage_VALUE = 14; + /** + * Type_GameListPlayerJoinedMessage = 15; + */ public static final int Type_GameListPlayerJoinedMessage_VALUE = 15; + /** + * Type_GameListPlayerLeftMessage = 16; + */ public static final int Type_GameListPlayerLeftMessage_VALUE = 16; + /** + * Type_GameListAdminChangedMessage = 17; + */ public static final int Type_GameListAdminChangedMessage_VALUE = 17; + /** + * Type_PlayerInfoRequestMessage = 18; + */ public static final int Type_PlayerInfoRequestMessage_VALUE = 18; + /** + * Type_PlayerInfoReplyMessage = 19; + */ public static final int Type_PlayerInfoReplyMessage_VALUE = 19; + /** + * Type_SubscriptionRequestMessage = 20; + */ public static final int Type_SubscriptionRequestMessage_VALUE = 20; + /** + * Type_JoinExistingGameMessage = 21; + */ public static final int Type_JoinExistingGameMessage_VALUE = 21; + /** + * Type_JoinNewGameMessage = 22; + */ public static final int Type_JoinNewGameMessage_VALUE = 22; + /** + * Type_RejoinExistingGameMessage = 23; + */ public static final int Type_RejoinExistingGameMessage_VALUE = 23; + /** + * Type_JoinGameAckMessage = 24; + */ public static final int Type_JoinGameAckMessage_VALUE = 24; + /** + * Type_JoinGameFailedMessage = 25; + */ public static final int Type_JoinGameFailedMessage_VALUE = 25; + /** + * Type_GamePlayerJoinedMessage = 26; + */ public static final int Type_GamePlayerJoinedMessage_VALUE = 26; + /** + * Type_GamePlayerLeftMessage = 27; + */ public static final int Type_GamePlayerLeftMessage_VALUE = 27; + /** + * Type_GameAdminChangedMessage = 28; + */ public static final int Type_GameAdminChangedMessage_VALUE = 28; + /** + * Type_RemovedFromGameMessage = 29; + */ public static final int Type_RemovedFromGameMessage_VALUE = 29; + /** + * Type_KickPlayerRequestMessage = 30; + */ public static final int Type_KickPlayerRequestMessage_VALUE = 30; + /** + * Type_LeaveGameRequestMessage = 31; + */ public static final int Type_LeaveGameRequestMessage_VALUE = 31; + /** + * Type_InvitePlayerToGameMessage = 32; + */ public static final int Type_InvitePlayerToGameMessage_VALUE = 32; + /** + * Type_InviteNotifyMessage = 33; + */ public static final int Type_InviteNotifyMessage_VALUE = 33; + /** + * Type_RejectGameInvitationMessage = 34; + */ public static final int Type_RejectGameInvitationMessage_VALUE = 34; + /** + * Type_RejectInvNotifyMessage = 35; + */ public static final int Type_RejectInvNotifyMessage_VALUE = 35; + /** + * Type_StartEventMessage = 36; + */ public static final int Type_StartEventMessage_VALUE = 36; + /** + * Type_StartEventAckMessage = 37; + */ public static final int Type_StartEventAckMessage_VALUE = 37; + /** + * Type_GameStartInitialMessage = 38; + */ public static final int Type_GameStartInitialMessage_VALUE = 38; + /** + * Type_GameStartRejoinMessage = 39; + */ public static final int Type_GameStartRejoinMessage_VALUE = 39; + /** + * Type_HandStartMessage = 40; + */ public static final int Type_HandStartMessage_VALUE = 40; + /** + * Type_PlayersTurnMessage = 41; + */ public static final int Type_PlayersTurnMessage_VALUE = 41; + /** + * Type_MyActionRequestMessage = 42; + */ public static final int Type_MyActionRequestMessage_VALUE = 42; + /** + * Type_YourActionRejectedMessage = 43; + */ public static final int Type_YourActionRejectedMessage_VALUE = 43; + /** + * Type_PlayersActionDoneMessage = 44; + */ public static final int Type_PlayersActionDoneMessage_VALUE = 44; + /** + * Type_DealFlopCardsMessage = 45; + */ public static final int Type_DealFlopCardsMessage_VALUE = 45; + /** + * Type_DealTurnCardMessage = 46; + */ public static final int Type_DealTurnCardMessage_VALUE = 46; + /** + * Type_DealRiverCardMessage = 47; + */ public static final int Type_DealRiverCardMessage_VALUE = 47; + /** + * Type_AllInShowCardsMessage = 48; + */ public static final int Type_AllInShowCardsMessage_VALUE = 48; + /** + * Type_EndOfHandShowCardsMessage = 49; + */ public static final int Type_EndOfHandShowCardsMessage_VALUE = 49; + /** + * Type_EndOfHandHideCardsMessage = 50; + */ public static final int Type_EndOfHandHideCardsMessage_VALUE = 50; + /** + * Type_ShowMyCardsRequestMessage = 51; + */ public static final int Type_ShowMyCardsRequestMessage_VALUE = 51; + /** + * Type_AfterHandShowCardsMessage = 52; + */ public static final int Type_AfterHandShowCardsMessage_VALUE = 52; + /** + * Type_EndOfGameMessage = 53; + */ public static final int Type_EndOfGameMessage_VALUE = 53; + /** + * Type_PlayerIdChangedMessage = 54; + */ public static final int Type_PlayerIdChangedMessage_VALUE = 54; + /** + * Type_AskKickPlayerMessage = 55; + */ public static final int Type_AskKickPlayerMessage_VALUE = 55; + /** + * Type_AskKickDeniedMessage = 56; + */ public static final int Type_AskKickDeniedMessage_VALUE = 56; + /** + * Type_StartKickPetitionMessage = 57; + */ public static final int Type_StartKickPetitionMessage_VALUE = 57; + /** + * Type_VoteKickRequestMessage = 58; + */ public static final int Type_VoteKickRequestMessage_VALUE = 58; + /** + * Type_VoteKickReplyMessage = 59; + */ public static final int Type_VoteKickReplyMessage_VALUE = 59; + /** + * Type_KickPetitionUpdateMessage = 60; + */ public static final int Type_KickPetitionUpdateMessage_VALUE = 60; + /** + * Type_EndKickPetitionMessage = 61; + */ public static final int Type_EndKickPetitionMessage_VALUE = 61; + /** + * Type_StatisticsMessage = 62; + */ public static final int Type_StatisticsMessage_VALUE = 62; + /** + * Type_ChatRequestMessage = 63; + */ public static final int Type_ChatRequestMessage_VALUE = 63; + /** + * Type_ChatMessage = 64; + */ public static final int Type_ChatMessage_VALUE = 64; + /** + * Type_ChatRejectMessage = 65; + */ public static final int Type_ChatRejectMessage_VALUE = 65; + /** + * Type_DialogMessage = 66; + */ public static final int Type_DialogMessage_VALUE = 66; + /** + * Type_TimeoutWarningMessage = 67; + */ public static final int Type_TimeoutWarningMessage_VALUE = 67; + /** + * Type_ResetTimeoutMessage = 68; + */ public static final int Type_ResetTimeoutMessage_VALUE = 68; + /** + * Type_ReportAvatarMessage = 69; + */ public static final int Type_ReportAvatarMessage_VALUE = 69; + /** + * Type_ReportAvatarAckMessage = 70; + */ public static final int Type_ReportAvatarAckMessage_VALUE = 70; + /** + * Type_ReportGameMessage = 71; + */ public static final int Type_ReportGameMessage_VALUE = 71; + /** + * Type_ReportGameAckMessage = 72; + */ public static final int Type_ReportGameAckMessage_VALUE = 72; + /** + * Type_ErrorMessage = 73; + */ public static final int Type_ErrorMessage_VALUE = 73; + /** + * Type_AdminRemoveGameMessage = 74; + */ public static final int Type_AdminRemoveGameMessage_VALUE = 74; + /** + * Type_AdminRemoveGameAckMessage = 75; + */ public static final int Type_AdminRemoveGameAckMessage_VALUE = 75; + /** + * Type_AdminBanPlayerMessage = 76; + */ public static final int Type_AdminBanPlayerMessage_VALUE = 76; + /** + * Type_AdminBanPlayerAckMessage = 77; + */ public static final int Type_AdminBanPlayerAckMessage_VALUE = 77; + /** + * Type_GameListSpectatorJoinedMessage = 78; + */ public static final int Type_GameListSpectatorJoinedMessage_VALUE = 78; + /** + * Type_GameListSpectatorLeftMessage = 79; + */ public static final int Type_GameListSpectatorLeftMessage_VALUE = 79; + /** + * Type_GameSpectatorJoinedMessage = 80; + */ public static final int Type_GameSpectatorJoinedMessage_VALUE = 80; + /** + * Type_GameSpectatorLeftMessage = 81; + */ public static final int Type_GameSpectatorLeftMessage_VALUE = 81; - - + + public final int getNumber() { return value; } - + public static PokerTHMessageType valueOf(int value) { switch (value) { case 1: return Type_AnnounceMessage; @@ -39881,7 +52064,7 @@ public final class ProtoBuf { default: return null; } } - + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; @@ -39893,839 +52076,1331 @@ public final class ProtoBuf { return PokerTHMessageType.valueOf(number); } }; - + private final int value; - + private PokerTHMessageType(int index, int value) { this.value = value; } - + // @@protoc_insertion_point(enum_scope:PokerTHMessage.PokerTHMessageType) } - + private int bitField0_; private int bitField1_; private int bitField2_; // required .PokerTHMessage.PokerTHMessageType messageType = 1; public static final int MESSAGETYPE_FIELD_NUMBER = 1; private de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType messageType_; + /** + * required .PokerTHMessage.PokerTHMessageType messageType = 1; + */ public boolean hasMessageType() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .PokerTHMessage.PokerTHMessageType messageType = 1; + */ public de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType getMessageType() { return messageType_; } - + // optional .AnnounceMessage announceMessage = 2; public static final int ANNOUNCEMESSAGE_FIELD_NUMBER = 2; private de.pokerth.protocol.ProtoBuf.AnnounceMessage announceMessage_; + /** + * optional .AnnounceMessage announceMessage = 2; + */ public boolean hasAnnounceMessage() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * optional .AnnounceMessage announceMessage = 2; + */ public de.pokerth.protocol.ProtoBuf.AnnounceMessage getAnnounceMessage() { return announceMessage_; } - + // optional .InitMessage initMessage = 3; public static final int INITMESSAGE_FIELD_NUMBER = 3; private de.pokerth.protocol.ProtoBuf.InitMessage initMessage_; + /** + * optional .InitMessage initMessage = 3; + */ public boolean hasInitMessage() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional .InitMessage initMessage = 3; + */ public de.pokerth.protocol.ProtoBuf.InitMessage getInitMessage() { return initMessage_; } - + // optional .AuthServerChallengeMessage authServerChallengeMessage = 4; public static final int AUTHSERVERCHALLENGEMESSAGE_FIELD_NUMBER = 4; private de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage authServerChallengeMessage_; + /** + * optional .AuthServerChallengeMessage authServerChallengeMessage = 4; + */ public boolean hasAuthServerChallengeMessage() { return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * optional .AuthServerChallengeMessage authServerChallengeMessage = 4; + */ public de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage getAuthServerChallengeMessage() { return authServerChallengeMessage_; } - + // optional .AuthClientResponseMessage authClientResponseMessage = 5; public static final int AUTHCLIENTRESPONSEMESSAGE_FIELD_NUMBER = 5; private de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage authClientResponseMessage_; + /** + * optional .AuthClientResponseMessage authClientResponseMessage = 5; + */ public boolean hasAuthClientResponseMessage() { return ((bitField0_ & 0x00000010) == 0x00000010); } + /** + * optional .AuthClientResponseMessage authClientResponseMessage = 5; + */ public de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage getAuthClientResponseMessage() { return authClientResponseMessage_; } - + // optional .AuthServerVerificationMessage authServerVerificationMessage = 6; public static final int AUTHSERVERVERIFICATIONMESSAGE_FIELD_NUMBER = 6; private de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage authServerVerificationMessage_; + /** + * optional .AuthServerVerificationMessage authServerVerificationMessage = 6; + */ public boolean hasAuthServerVerificationMessage() { return ((bitField0_ & 0x00000020) == 0x00000020); } + /** + * optional .AuthServerVerificationMessage authServerVerificationMessage = 6; + */ public de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage getAuthServerVerificationMessage() { return authServerVerificationMessage_; } - + // optional .InitAckMessage initAckMessage = 7; public static final int INITACKMESSAGE_FIELD_NUMBER = 7; private de.pokerth.protocol.ProtoBuf.InitAckMessage initAckMessage_; + /** + * optional .InitAckMessage initAckMessage = 7; + */ public boolean hasInitAckMessage() { return ((bitField0_ & 0x00000040) == 0x00000040); } + /** + * optional .InitAckMessage initAckMessage = 7; + */ public de.pokerth.protocol.ProtoBuf.InitAckMessage getInitAckMessage() { return initAckMessage_; } - + // optional .AvatarRequestMessage avatarRequestMessage = 8; public static final int AVATARREQUESTMESSAGE_FIELD_NUMBER = 8; private de.pokerth.protocol.ProtoBuf.AvatarRequestMessage avatarRequestMessage_; + /** + * optional .AvatarRequestMessage avatarRequestMessage = 8; + */ public boolean hasAvatarRequestMessage() { return ((bitField0_ & 0x00000080) == 0x00000080); } + /** + * optional .AvatarRequestMessage avatarRequestMessage = 8; + */ public de.pokerth.protocol.ProtoBuf.AvatarRequestMessage getAvatarRequestMessage() { return avatarRequestMessage_; } - + // optional .AvatarHeaderMessage avatarHeaderMessage = 9; public static final int AVATARHEADERMESSAGE_FIELD_NUMBER = 9; private de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage avatarHeaderMessage_; + /** + * optional .AvatarHeaderMessage avatarHeaderMessage = 9; + */ public boolean hasAvatarHeaderMessage() { return ((bitField0_ & 0x00000100) == 0x00000100); } + /** + * optional .AvatarHeaderMessage avatarHeaderMessage = 9; + */ public de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage getAvatarHeaderMessage() { return avatarHeaderMessage_; } - + // optional .AvatarDataMessage avatarDataMessage = 10; public static final int AVATARDATAMESSAGE_FIELD_NUMBER = 10; private de.pokerth.protocol.ProtoBuf.AvatarDataMessage avatarDataMessage_; + /** + * optional .AvatarDataMessage avatarDataMessage = 10; + */ public boolean hasAvatarDataMessage() { return ((bitField0_ & 0x00000200) == 0x00000200); } + /** + * optional .AvatarDataMessage avatarDataMessage = 10; + */ public de.pokerth.protocol.ProtoBuf.AvatarDataMessage getAvatarDataMessage() { return avatarDataMessage_; } - + // optional .AvatarEndMessage avatarEndMessage = 11; public static final int AVATARENDMESSAGE_FIELD_NUMBER = 11; private de.pokerth.protocol.ProtoBuf.AvatarEndMessage avatarEndMessage_; + /** + * optional .AvatarEndMessage avatarEndMessage = 11; + */ public boolean hasAvatarEndMessage() { return ((bitField0_ & 0x00000400) == 0x00000400); } + /** + * optional .AvatarEndMessage avatarEndMessage = 11; + */ public de.pokerth.protocol.ProtoBuf.AvatarEndMessage getAvatarEndMessage() { return avatarEndMessage_; } - + // optional .UnknownAvatarMessage unknownAvatarMessage = 12; public static final int UNKNOWNAVATARMESSAGE_FIELD_NUMBER = 12; private de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage unknownAvatarMessage_; + /** + * optional .UnknownAvatarMessage unknownAvatarMessage = 12; + */ public boolean hasUnknownAvatarMessage() { return ((bitField0_ & 0x00000800) == 0x00000800); } + /** + * optional .UnknownAvatarMessage unknownAvatarMessage = 12; + */ public de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage getUnknownAvatarMessage() { return unknownAvatarMessage_; } - + // optional .PlayerListMessage playerListMessage = 13; public static final int PLAYERLISTMESSAGE_FIELD_NUMBER = 13; private de.pokerth.protocol.ProtoBuf.PlayerListMessage playerListMessage_; + /** + * optional .PlayerListMessage playerListMessage = 13; + */ public boolean hasPlayerListMessage() { return ((bitField0_ & 0x00001000) == 0x00001000); } + /** + * optional .PlayerListMessage playerListMessage = 13; + */ public de.pokerth.protocol.ProtoBuf.PlayerListMessage getPlayerListMessage() { return playerListMessage_; } - + // optional .GameListNewMessage gameListNewMessage = 14; public static final int GAMELISTNEWMESSAGE_FIELD_NUMBER = 14; private de.pokerth.protocol.ProtoBuf.GameListNewMessage gameListNewMessage_; + /** + * optional .GameListNewMessage gameListNewMessage = 14; + */ public boolean hasGameListNewMessage() { return ((bitField0_ & 0x00002000) == 0x00002000); } + /** + * optional .GameListNewMessage gameListNewMessage = 14; + */ public de.pokerth.protocol.ProtoBuf.GameListNewMessage getGameListNewMessage() { return gameListNewMessage_; } - + // optional .GameListUpdateMessage gameListUpdateMessage = 15; public static final int GAMELISTUPDATEMESSAGE_FIELD_NUMBER = 15; private de.pokerth.protocol.ProtoBuf.GameListUpdateMessage gameListUpdateMessage_; + /** + * optional .GameListUpdateMessage gameListUpdateMessage = 15; + */ public boolean hasGameListUpdateMessage() { return ((bitField0_ & 0x00004000) == 0x00004000); } + /** + * optional .GameListUpdateMessage gameListUpdateMessage = 15; + */ public de.pokerth.protocol.ProtoBuf.GameListUpdateMessage getGameListUpdateMessage() { return gameListUpdateMessage_; } - + // optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; public static final int GAMELISTPLAYERJOINEDMESSAGE_FIELD_NUMBER = 16; private de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage gameListPlayerJoinedMessage_; + /** + * optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; + */ public boolean hasGameListPlayerJoinedMessage() { return ((bitField0_ & 0x00008000) == 0x00008000); } + /** + * optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; + */ public de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage getGameListPlayerJoinedMessage() { return gameListPlayerJoinedMessage_; } - + // optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; public static final int GAMELISTPLAYERLEFTMESSAGE_FIELD_NUMBER = 17; private de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage gameListPlayerLeftMessage_; + /** + * optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; + */ public boolean hasGameListPlayerLeftMessage() { return ((bitField0_ & 0x00010000) == 0x00010000); } + /** + * optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; + */ public de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage getGameListPlayerLeftMessage() { return gameListPlayerLeftMessage_; } - + // optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; public static final int GAMELISTADMINCHANGEDMESSAGE_FIELD_NUMBER = 18; private de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage gameListAdminChangedMessage_; + /** + * optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; + */ public boolean hasGameListAdminChangedMessage() { return ((bitField0_ & 0x00020000) == 0x00020000); } + /** + * optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; + */ public de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage getGameListAdminChangedMessage() { return gameListAdminChangedMessage_; } - + // optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; public static final int PLAYERINFOREQUESTMESSAGE_FIELD_NUMBER = 19; private de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage playerInfoRequestMessage_; + /** + * optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; + */ public boolean hasPlayerInfoRequestMessage() { return ((bitField0_ & 0x00040000) == 0x00040000); } + /** + * optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; + */ public de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage getPlayerInfoRequestMessage() { return playerInfoRequestMessage_; } - + // optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; public static final int PLAYERINFOREPLYMESSAGE_FIELD_NUMBER = 20; private de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage playerInfoReplyMessage_; + /** + * optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; + */ public boolean hasPlayerInfoReplyMessage() { return ((bitField0_ & 0x00080000) == 0x00080000); } + /** + * optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; + */ public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage getPlayerInfoReplyMessage() { return playerInfoReplyMessage_; } - + // optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; public static final int SUBSCRIPTIONREQUESTMESSAGE_FIELD_NUMBER = 21; private de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage subscriptionRequestMessage_; + /** + * optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; + */ public boolean hasSubscriptionRequestMessage() { return ((bitField0_ & 0x00100000) == 0x00100000); } + /** + * optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; + */ public de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage getSubscriptionRequestMessage() { return subscriptionRequestMessage_; } - + // optional .JoinExistingGameMessage joinExistingGameMessage = 22; public static final int JOINEXISTINGGAMEMESSAGE_FIELD_NUMBER = 22; private de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage joinExistingGameMessage_; + /** + * optional .JoinExistingGameMessage joinExistingGameMessage = 22; + */ public boolean hasJoinExistingGameMessage() { return ((bitField0_ & 0x00200000) == 0x00200000); } + /** + * optional .JoinExistingGameMessage joinExistingGameMessage = 22; + */ public de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage getJoinExistingGameMessage() { return joinExistingGameMessage_; } - + // optional .JoinNewGameMessage joinNewGameMessage = 23; public static final int JOINNEWGAMEMESSAGE_FIELD_NUMBER = 23; private de.pokerth.protocol.ProtoBuf.JoinNewGameMessage joinNewGameMessage_; + /** + * optional .JoinNewGameMessage joinNewGameMessage = 23; + */ public boolean hasJoinNewGameMessage() { return ((bitField0_ & 0x00400000) == 0x00400000); } + /** + * optional .JoinNewGameMessage joinNewGameMessage = 23; + */ public de.pokerth.protocol.ProtoBuf.JoinNewGameMessage getJoinNewGameMessage() { return joinNewGameMessage_; } - + // optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; public static final int REJOINEXISTINGGAMEMESSAGE_FIELD_NUMBER = 24; private de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage rejoinExistingGameMessage_; + /** + * optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; + */ public boolean hasRejoinExistingGameMessage() { return ((bitField0_ & 0x00800000) == 0x00800000); } + /** + * optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; + */ public de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage getRejoinExistingGameMessage() { return rejoinExistingGameMessage_; } - + // optional .JoinGameAckMessage joinGameAckMessage = 25; public static final int JOINGAMEACKMESSAGE_FIELD_NUMBER = 25; private de.pokerth.protocol.ProtoBuf.JoinGameAckMessage joinGameAckMessage_; + /** + * optional .JoinGameAckMessage joinGameAckMessage = 25; + */ public boolean hasJoinGameAckMessage() { return ((bitField0_ & 0x01000000) == 0x01000000); } + /** + * optional .JoinGameAckMessage joinGameAckMessage = 25; + */ public de.pokerth.protocol.ProtoBuf.JoinGameAckMessage getJoinGameAckMessage() { return joinGameAckMessage_; } - + // optional .JoinGameFailedMessage joinGameFailedMessage = 26; public static final int JOINGAMEFAILEDMESSAGE_FIELD_NUMBER = 26; private de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage joinGameFailedMessage_; + /** + * optional .JoinGameFailedMessage joinGameFailedMessage = 26; + */ public boolean hasJoinGameFailedMessage() { return ((bitField0_ & 0x02000000) == 0x02000000); } + /** + * optional .JoinGameFailedMessage joinGameFailedMessage = 26; + */ public de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage getJoinGameFailedMessage() { return joinGameFailedMessage_; } - + // optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; public static final int GAMEPLAYERJOINEDMESSAGE_FIELD_NUMBER = 27; private de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage gamePlayerJoinedMessage_; + /** + * optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; + */ public boolean hasGamePlayerJoinedMessage() { return ((bitField0_ & 0x04000000) == 0x04000000); } + /** + * optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; + */ public de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage getGamePlayerJoinedMessage() { return gamePlayerJoinedMessage_; } - + // optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; public static final int GAMEPLAYERLEFTMESSAGE_FIELD_NUMBER = 28; private de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage gamePlayerLeftMessage_; + /** + * optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; + */ public boolean hasGamePlayerLeftMessage() { return ((bitField0_ & 0x08000000) == 0x08000000); } + /** + * optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; + */ public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage getGamePlayerLeftMessage() { return gamePlayerLeftMessage_; } - + // optional .GameAdminChangedMessage gameAdminChangedMessage = 29; public static final int GAMEADMINCHANGEDMESSAGE_FIELD_NUMBER = 29; private de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage gameAdminChangedMessage_; + /** + * optional .GameAdminChangedMessage gameAdminChangedMessage = 29; + */ public boolean hasGameAdminChangedMessage() { return ((bitField0_ & 0x10000000) == 0x10000000); } + /** + * optional .GameAdminChangedMessage gameAdminChangedMessage = 29; + */ public de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage getGameAdminChangedMessage() { return gameAdminChangedMessage_; } - + // optional .RemovedFromGameMessage removedFromGameMessage = 30; public static final int REMOVEDFROMGAMEMESSAGE_FIELD_NUMBER = 30; private de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage removedFromGameMessage_; + /** + * optional .RemovedFromGameMessage removedFromGameMessage = 30; + */ public boolean hasRemovedFromGameMessage() { return ((bitField0_ & 0x20000000) == 0x20000000); } + /** + * optional .RemovedFromGameMessage removedFromGameMessage = 30; + */ public de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage getRemovedFromGameMessage() { return removedFromGameMessage_; } - + // optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; public static final int KICKPLAYERREQUESTMESSAGE_FIELD_NUMBER = 31; private de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage kickPlayerRequestMessage_; + /** + * optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; + */ public boolean hasKickPlayerRequestMessage() { return ((bitField0_ & 0x40000000) == 0x40000000); } + /** + * optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; + */ public de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage getKickPlayerRequestMessage() { return kickPlayerRequestMessage_; } - + // optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; public static final int LEAVEGAMEREQUESTMESSAGE_FIELD_NUMBER = 32; private de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage leaveGameRequestMessage_; + /** + * optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; + */ public boolean hasLeaveGameRequestMessage() { return ((bitField0_ & 0x80000000) == 0x80000000); } + /** + * optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; + */ public de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage getLeaveGameRequestMessage() { return leaveGameRequestMessage_; } - + // optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; public static final int INVITEPLAYERTOGAMEMESSAGE_FIELD_NUMBER = 33; private de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage invitePlayerToGameMessage_; + /** + * optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; + */ public boolean hasInvitePlayerToGameMessage() { return ((bitField1_ & 0x00000001) == 0x00000001); } + /** + * optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; + */ public de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage getInvitePlayerToGameMessage() { return invitePlayerToGameMessage_; } - + // optional .InviteNotifyMessage inviteNotifyMessage = 34; public static final int INVITENOTIFYMESSAGE_FIELD_NUMBER = 34; private de.pokerth.protocol.ProtoBuf.InviteNotifyMessage inviteNotifyMessage_; + /** + * optional .InviteNotifyMessage inviteNotifyMessage = 34; + */ public boolean hasInviteNotifyMessage() { return ((bitField1_ & 0x00000002) == 0x00000002); } + /** + * optional .InviteNotifyMessage inviteNotifyMessage = 34; + */ public de.pokerth.protocol.ProtoBuf.InviteNotifyMessage getInviteNotifyMessage() { return inviteNotifyMessage_; } - + // optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; public static final int REJECTGAMEINVITATIONMESSAGE_FIELD_NUMBER = 35; private de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage rejectGameInvitationMessage_; + /** + * optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; + */ public boolean hasRejectGameInvitationMessage() { return ((bitField1_ & 0x00000004) == 0x00000004); } + /** + * optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; + */ public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage getRejectGameInvitationMessage() { return rejectGameInvitationMessage_; } - + // optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; public static final int REJECTINVNOTIFYMESSAGE_FIELD_NUMBER = 36; private de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage rejectInvNotifyMessage_; + /** + * optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; + */ public boolean hasRejectInvNotifyMessage() { return ((bitField1_ & 0x00000008) == 0x00000008); } + /** + * optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; + */ public de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage getRejectInvNotifyMessage() { return rejectInvNotifyMessage_; } - + // optional .StartEventMessage startEventMessage = 37; public static final int STARTEVENTMESSAGE_FIELD_NUMBER = 37; private de.pokerth.protocol.ProtoBuf.StartEventMessage startEventMessage_; + /** + * optional .StartEventMessage startEventMessage = 37; + */ public boolean hasStartEventMessage() { return ((bitField1_ & 0x00000010) == 0x00000010); } + /** + * optional .StartEventMessage startEventMessage = 37; + */ public de.pokerth.protocol.ProtoBuf.StartEventMessage getStartEventMessage() { return startEventMessage_; } - + // optional .StartEventAckMessage startEventAckMessage = 38; public static final int STARTEVENTACKMESSAGE_FIELD_NUMBER = 38; private de.pokerth.protocol.ProtoBuf.StartEventAckMessage startEventAckMessage_; + /** + * optional .StartEventAckMessage startEventAckMessage = 38; + */ public boolean hasStartEventAckMessage() { return ((bitField1_ & 0x00000020) == 0x00000020); } + /** + * optional .StartEventAckMessage startEventAckMessage = 38; + */ public de.pokerth.protocol.ProtoBuf.StartEventAckMessage getStartEventAckMessage() { return startEventAckMessage_; } - + // optional .GameStartInitialMessage gameStartInitialMessage = 39; public static final int GAMESTARTINITIALMESSAGE_FIELD_NUMBER = 39; private de.pokerth.protocol.ProtoBuf.GameStartInitialMessage gameStartInitialMessage_; + /** + * optional .GameStartInitialMessage gameStartInitialMessage = 39; + */ public boolean hasGameStartInitialMessage() { return ((bitField1_ & 0x00000040) == 0x00000040); } + /** + * optional .GameStartInitialMessage gameStartInitialMessage = 39; + */ public de.pokerth.protocol.ProtoBuf.GameStartInitialMessage getGameStartInitialMessage() { return gameStartInitialMessage_; } - + // optional .GameStartRejoinMessage gameStartRejoinMessage = 40; public static final int GAMESTARTREJOINMESSAGE_FIELD_NUMBER = 40; private de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage gameStartRejoinMessage_; + /** + * optional .GameStartRejoinMessage gameStartRejoinMessage = 40; + */ public boolean hasGameStartRejoinMessage() { return ((bitField1_ & 0x00000080) == 0x00000080); } + /** + * optional .GameStartRejoinMessage gameStartRejoinMessage = 40; + */ public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage getGameStartRejoinMessage() { return gameStartRejoinMessage_; } - + // optional .HandStartMessage handStartMessage = 41; public static final int HANDSTARTMESSAGE_FIELD_NUMBER = 41; private de.pokerth.protocol.ProtoBuf.HandStartMessage handStartMessage_; + /** + * optional .HandStartMessage handStartMessage = 41; + */ public boolean hasHandStartMessage() { return ((bitField1_ & 0x00000100) == 0x00000100); } + /** + * optional .HandStartMessage handStartMessage = 41; + */ public de.pokerth.protocol.ProtoBuf.HandStartMessage getHandStartMessage() { return handStartMessage_; } - + // optional .PlayersTurnMessage playersTurnMessage = 42; public static final int PLAYERSTURNMESSAGE_FIELD_NUMBER = 42; private de.pokerth.protocol.ProtoBuf.PlayersTurnMessage playersTurnMessage_; + /** + * optional .PlayersTurnMessage playersTurnMessage = 42; + */ public boolean hasPlayersTurnMessage() { return ((bitField1_ & 0x00000200) == 0x00000200); } + /** + * optional .PlayersTurnMessage playersTurnMessage = 42; + */ public de.pokerth.protocol.ProtoBuf.PlayersTurnMessage getPlayersTurnMessage() { return playersTurnMessage_; } - + // optional .MyActionRequestMessage myActionRequestMessage = 43; public static final int MYACTIONREQUESTMESSAGE_FIELD_NUMBER = 43; private de.pokerth.protocol.ProtoBuf.MyActionRequestMessage myActionRequestMessage_; + /** + * optional .MyActionRequestMessage myActionRequestMessage = 43; + */ public boolean hasMyActionRequestMessage() { return ((bitField1_ & 0x00000400) == 0x00000400); } + /** + * optional .MyActionRequestMessage myActionRequestMessage = 43; + */ public de.pokerth.protocol.ProtoBuf.MyActionRequestMessage getMyActionRequestMessage() { return myActionRequestMessage_; } - + // optional .YourActionRejectedMessage yourActionRejectedMessage = 44; public static final int YOURACTIONREJECTEDMESSAGE_FIELD_NUMBER = 44; private de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage yourActionRejectedMessage_; + /** + * optional .YourActionRejectedMessage yourActionRejectedMessage = 44; + */ public boolean hasYourActionRejectedMessage() { return ((bitField1_ & 0x00000800) == 0x00000800); } + /** + * optional .YourActionRejectedMessage yourActionRejectedMessage = 44; + */ public de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage getYourActionRejectedMessage() { return yourActionRejectedMessage_; } - + // optional .PlayersActionDoneMessage playersActionDoneMessage = 45; public static final int PLAYERSACTIONDONEMESSAGE_FIELD_NUMBER = 45; private de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage playersActionDoneMessage_; + /** + * optional .PlayersActionDoneMessage playersActionDoneMessage = 45; + */ public boolean hasPlayersActionDoneMessage() { return ((bitField1_ & 0x00001000) == 0x00001000); } + /** + * optional .PlayersActionDoneMessage playersActionDoneMessage = 45; + */ public de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage getPlayersActionDoneMessage() { return playersActionDoneMessage_; } - + // optional .DealFlopCardsMessage dealFlopCardsMessage = 46; public static final int DEALFLOPCARDSMESSAGE_FIELD_NUMBER = 46; private de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage dealFlopCardsMessage_; + /** + * optional .DealFlopCardsMessage dealFlopCardsMessage = 46; + */ public boolean hasDealFlopCardsMessage() { return ((bitField1_ & 0x00002000) == 0x00002000); } + /** + * optional .DealFlopCardsMessage dealFlopCardsMessage = 46; + */ public de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage getDealFlopCardsMessage() { return dealFlopCardsMessage_; } - + // optional .DealTurnCardMessage dealTurnCardMessage = 47; public static final int DEALTURNCARDMESSAGE_FIELD_NUMBER = 47; private de.pokerth.protocol.ProtoBuf.DealTurnCardMessage dealTurnCardMessage_; + /** + * optional .DealTurnCardMessage dealTurnCardMessage = 47; + */ public boolean hasDealTurnCardMessage() { return ((bitField1_ & 0x00004000) == 0x00004000); } + /** + * optional .DealTurnCardMessage dealTurnCardMessage = 47; + */ public de.pokerth.protocol.ProtoBuf.DealTurnCardMessage getDealTurnCardMessage() { return dealTurnCardMessage_; } - + // optional .DealRiverCardMessage dealRiverCardMessage = 48; public static final int DEALRIVERCARDMESSAGE_FIELD_NUMBER = 48; private de.pokerth.protocol.ProtoBuf.DealRiverCardMessage dealRiverCardMessage_; + /** + * optional .DealRiverCardMessage dealRiverCardMessage = 48; + */ public boolean hasDealRiverCardMessage() { return ((bitField1_ & 0x00008000) == 0x00008000); } + /** + * optional .DealRiverCardMessage dealRiverCardMessage = 48; + */ public de.pokerth.protocol.ProtoBuf.DealRiverCardMessage getDealRiverCardMessage() { return dealRiverCardMessage_; } - + // optional .AllInShowCardsMessage allInShowCardsMessage = 49; public static final int ALLINSHOWCARDSMESSAGE_FIELD_NUMBER = 49; private de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage allInShowCardsMessage_; + /** + * optional .AllInShowCardsMessage allInShowCardsMessage = 49; + */ public boolean hasAllInShowCardsMessage() { return ((bitField1_ & 0x00010000) == 0x00010000); } + /** + * optional .AllInShowCardsMessage allInShowCardsMessage = 49; + */ public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage getAllInShowCardsMessage() { return allInShowCardsMessage_; } - + // optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; public static final int ENDOFHANDSHOWCARDSMESSAGE_FIELD_NUMBER = 50; private de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage endOfHandShowCardsMessage_; + /** + * optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; + */ public boolean hasEndOfHandShowCardsMessage() { return ((bitField1_ & 0x00020000) == 0x00020000); } + /** + * optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; + */ public de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage getEndOfHandShowCardsMessage() { return endOfHandShowCardsMessage_; } - + // optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; public static final int ENDOFHANDHIDECARDSMESSAGE_FIELD_NUMBER = 51; private de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage endOfHandHideCardsMessage_; + /** + * optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; + */ public boolean hasEndOfHandHideCardsMessage() { return ((bitField1_ & 0x00040000) == 0x00040000); } + /** + * optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; + */ public de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage getEndOfHandHideCardsMessage() { return endOfHandHideCardsMessage_; } - + // optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; public static final int SHOWMYCARDSREQUESTMESSAGE_FIELD_NUMBER = 52; private de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage showMyCardsRequestMessage_; + /** + * optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; + */ public boolean hasShowMyCardsRequestMessage() { return ((bitField1_ & 0x00080000) == 0x00080000); } + /** + * optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; + */ public de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage getShowMyCardsRequestMessage() { return showMyCardsRequestMessage_; } - + // optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; public static final int AFTERHANDSHOWCARDSMESSAGE_FIELD_NUMBER = 53; private de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage afterHandShowCardsMessage_; + /** + * optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; + */ public boolean hasAfterHandShowCardsMessage() { return ((bitField1_ & 0x00100000) == 0x00100000); } + /** + * optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; + */ public de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage getAfterHandShowCardsMessage() { return afterHandShowCardsMessage_; } - + // optional .EndOfGameMessage endOfGameMessage = 54; public static final int ENDOFGAMEMESSAGE_FIELD_NUMBER = 54; private de.pokerth.protocol.ProtoBuf.EndOfGameMessage endOfGameMessage_; + /** + * optional .EndOfGameMessage endOfGameMessage = 54; + */ public boolean hasEndOfGameMessage() { return ((bitField1_ & 0x00200000) == 0x00200000); } + /** + * optional .EndOfGameMessage endOfGameMessage = 54; + */ public de.pokerth.protocol.ProtoBuf.EndOfGameMessage getEndOfGameMessage() { return endOfGameMessage_; } - + // optional .PlayerIdChangedMessage playerIdChangedMessage = 55; public static final int PLAYERIDCHANGEDMESSAGE_FIELD_NUMBER = 55; private de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage playerIdChangedMessage_; + /** + * optional .PlayerIdChangedMessage playerIdChangedMessage = 55; + */ public boolean hasPlayerIdChangedMessage() { return ((bitField1_ & 0x00400000) == 0x00400000); } + /** + * optional .PlayerIdChangedMessage playerIdChangedMessage = 55; + */ public de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage getPlayerIdChangedMessage() { return playerIdChangedMessage_; } - + // optional .AskKickPlayerMessage askKickPlayerMessage = 56; public static final int ASKKICKPLAYERMESSAGE_FIELD_NUMBER = 56; private de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage askKickPlayerMessage_; + /** + * optional .AskKickPlayerMessage askKickPlayerMessage = 56; + */ public boolean hasAskKickPlayerMessage() { return ((bitField1_ & 0x00800000) == 0x00800000); } + /** + * optional .AskKickPlayerMessage askKickPlayerMessage = 56; + */ public de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage getAskKickPlayerMessage() { return askKickPlayerMessage_; } - + // optional .AskKickDeniedMessage askKickDeniedMessage = 57; public static final int ASKKICKDENIEDMESSAGE_FIELD_NUMBER = 57; private de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage askKickDeniedMessage_; + /** + * optional .AskKickDeniedMessage askKickDeniedMessage = 57; + */ public boolean hasAskKickDeniedMessage() { return ((bitField1_ & 0x01000000) == 0x01000000); } + /** + * optional .AskKickDeniedMessage askKickDeniedMessage = 57; + */ public de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage getAskKickDeniedMessage() { return askKickDeniedMessage_; } - + // optional .StartKickPetitionMessage startKickPetitionMessage = 58; public static final int STARTKICKPETITIONMESSAGE_FIELD_NUMBER = 58; private de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage startKickPetitionMessage_; + /** + * optional .StartKickPetitionMessage startKickPetitionMessage = 58; + */ public boolean hasStartKickPetitionMessage() { return ((bitField1_ & 0x02000000) == 0x02000000); } + /** + * optional .StartKickPetitionMessage startKickPetitionMessage = 58; + */ public de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage getStartKickPetitionMessage() { return startKickPetitionMessage_; } - + // optional .VoteKickRequestMessage voteKickRequestMessage = 59; public static final int VOTEKICKREQUESTMESSAGE_FIELD_NUMBER = 59; private de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage voteKickRequestMessage_; + /** + * optional .VoteKickRequestMessage voteKickRequestMessage = 59; + */ public boolean hasVoteKickRequestMessage() { return ((bitField1_ & 0x04000000) == 0x04000000); } + /** + * optional .VoteKickRequestMessage voteKickRequestMessage = 59; + */ public de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage getVoteKickRequestMessage() { return voteKickRequestMessage_; } - + // optional .VoteKickReplyMessage voteKickReplyMessage = 60; public static final int VOTEKICKREPLYMESSAGE_FIELD_NUMBER = 60; private de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage voteKickReplyMessage_; + /** + * optional .VoteKickReplyMessage voteKickReplyMessage = 60; + */ public boolean hasVoteKickReplyMessage() { return ((bitField1_ & 0x08000000) == 0x08000000); } + /** + * optional .VoteKickReplyMessage voteKickReplyMessage = 60; + */ public de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage getVoteKickReplyMessage() { return voteKickReplyMessage_; } - + // optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; public static final int KICKPETITIONUPDATEMESSAGE_FIELD_NUMBER = 61; private de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage kickPetitionUpdateMessage_; + /** + * optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; + */ public boolean hasKickPetitionUpdateMessage() { return ((bitField1_ & 0x10000000) == 0x10000000); } + /** + * optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; + */ public de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage getKickPetitionUpdateMessage() { return kickPetitionUpdateMessage_; } - + // optional .EndKickPetitionMessage endKickPetitionMessage = 62; public static final int ENDKICKPETITIONMESSAGE_FIELD_NUMBER = 62; private de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage endKickPetitionMessage_; + /** + * optional .EndKickPetitionMessage endKickPetitionMessage = 62; + */ public boolean hasEndKickPetitionMessage() { return ((bitField1_ & 0x20000000) == 0x20000000); } + /** + * optional .EndKickPetitionMessage endKickPetitionMessage = 62; + */ public de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage getEndKickPetitionMessage() { return endKickPetitionMessage_; } - + // optional .StatisticsMessage statisticsMessage = 63; public static final int STATISTICSMESSAGE_FIELD_NUMBER = 63; private de.pokerth.protocol.ProtoBuf.StatisticsMessage statisticsMessage_; + /** + * optional .StatisticsMessage statisticsMessage = 63; + */ public boolean hasStatisticsMessage() { return ((bitField1_ & 0x40000000) == 0x40000000); } + /** + * optional .StatisticsMessage statisticsMessage = 63; + */ public de.pokerth.protocol.ProtoBuf.StatisticsMessage getStatisticsMessage() { return statisticsMessage_; } - + // optional .ChatRequestMessage chatRequestMessage = 64; public static final int CHATREQUESTMESSAGE_FIELD_NUMBER = 64; private de.pokerth.protocol.ProtoBuf.ChatRequestMessage chatRequestMessage_; + /** + * optional .ChatRequestMessage chatRequestMessage = 64; + */ public boolean hasChatRequestMessage() { return ((bitField1_ & 0x80000000) == 0x80000000); } + /** + * optional .ChatRequestMessage chatRequestMessage = 64; + */ public de.pokerth.protocol.ProtoBuf.ChatRequestMessage getChatRequestMessage() { return chatRequestMessage_; } - + // optional .ChatMessage chatMessage = 65; public static final int CHATMESSAGE_FIELD_NUMBER = 65; private de.pokerth.protocol.ProtoBuf.ChatMessage chatMessage_; + /** + * optional .ChatMessage chatMessage = 65; + */ public boolean hasChatMessage() { return ((bitField2_ & 0x00000001) == 0x00000001); } + /** + * optional .ChatMessage chatMessage = 65; + */ public de.pokerth.protocol.ProtoBuf.ChatMessage getChatMessage() { return chatMessage_; } - + // optional .ChatRejectMessage chatRejectMessage = 66; public static final int CHATREJECTMESSAGE_FIELD_NUMBER = 66; private de.pokerth.protocol.ProtoBuf.ChatRejectMessage chatRejectMessage_; + /** + * optional .ChatRejectMessage chatRejectMessage = 66; + */ public boolean hasChatRejectMessage() { return ((bitField2_ & 0x00000002) == 0x00000002); } + /** + * optional .ChatRejectMessage chatRejectMessage = 66; + */ public de.pokerth.protocol.ProtoBuf.ChatRejectMessage getChatRejectMessage() { return chatRejectMessage_; } - + // optional .DialogMessage dialogMessage = 67; public static final int DIALOGMESSAGE_FIELD_NUMBER = 67; private de.pokerth.protocol.ProtoBuf.DialogMessage dialogMessage_; + /** + * optional .DialogMessage dialogMessage = 67; + */ public boolean hasDialogMessage() { return ((bitField2_ & 0x00000004) == 0x00000004); } + /** + * optional .DialogMessage dialogMessage = 67; + */ public de.pokerth.protocol.ProtoBuf.DialogMessage getDialogMessage() { return dialogMessage_; } - + // optional .TimeoutWarningMessage timeoutWarningMessage = 68; public static final int TIMEOUTWARNINGMESSAGE_FIELD_NUMBER = 68; private de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage timeoutWarningMessage_; + /** + * optional .TimeoutWarningMessage timeoutWarningMessage = 68; + */ public boolean hasTimeoutWarningMessage() { return ((bitField2_ & 0x00000008) == 0x00000008); } + /** + * optional .TimeoutWarningMessage timeoutWarningMessage = 68; + */ public de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage getTimeoutWarningMessage() { return timeoutWarningMessage_; } - + // optional .ResetTimeoutMessage resetTimeoutMessage = 69; public static final int RESETTIMEOUTMESSAGE_FIELD_NUMBER = 69; private de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage resetTimeoutMessage_; + /** + * optional .ResetTimeoutMessage resetTimeoutMessage = 69; + */ public boolean hasResetTimeoutMessage() { return ((bitField2_ & 0x00000010) == 0x00000010); } + /** + * optional .ResetTimeoutMessage resetTimeoutMessage = 69; + */ public de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage getResetTimeoutMessage() { return resetTimeoutMessage_; } - + // optional .ReportAvatarMessage reportAvatarMessage = 70; public static final int REPORTAVATARMESSAGE_FIELD_NUMBER = 70; private de.pokerth.protocol.ProtoBuf.ReportAvatarMessage reportAvatarMessage_; + /** + * optional .ReportAvatarMessage reportAvatarMessage = 70; + */ public boolean hasReportAvatarMessage() { return ((bitField2_ & 0x00000020) == 0x00000020); } + /** + * optional .ReportAvatarMessage reportAvatarMessage = 70; + */ public de.pokerth.protocol.ProtoBuf.ReportAvatarMessage getReportAvatarMessage() { return reportAvatarMessage_; } - + // optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; public static final int REPORTAVATARACKMESSAGE_FIELD_NUMBER = 71; private de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage reportAvatarAckMessage_; + /** + * optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; + */ public boolean hasReportAvatarAckMessage() { return ((bitField2_ & 0x00000040) == 0x00000040); } + /** + * optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; + */ public de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage getReportAvatarAckMessage() { return reportAvatarAckMessage_; } - + // optional .ReportGameMessage reportGameMessage = 72; public static final int REPORTGAMEMESSAGE_FIELD_NUMBER = 72; private de.pokerth.protocol.ProtoBuf.ReportGameMessage reportGameMessage_; + /** + * optional .ReportGameMessage reportGameMessage = 72; + */ public boolean hasReportGameMessage() { return ((bitField2_ & 0x00000080) == 0x00000080); } + /** + * optional .ReportGameMessage reportGameMessage = 72; + */ public de.pokerth.protocol.ProtoBuf.ReportGameMessage getReportGameMessage() { return reportGameMessage_; } - + // optional .ReportGameAckMessage reportGameAckMessage = 73; public static final int REPORTGAMEACKMESSAGE_FIELD_NUMBER = 73; private de.pokerth.protocol.ProtoBuf.ReportGameAckMessage reportGameAckMessage_; + /** + * optional .ReportGameAckMessage reportGameAckMessage = 73; + */ public boolean hasReportGameAckMessage() { return ((bitField2_ & 0x00000100) == 0x00000100); } + /** + * optional .ReportGameAckMessage reportGameAckMessage = 73; + */ public de.pokerth.protocol.ProtoBuf.ReportGameAckMessage getReportGameAckMessage() { return reportGameAckMessage_; } - + // optional .ErrorMessage errorMessage = 74; public static final int ERRORMESSAGE_FIELD_NUMBER = 74; private de.pokerth.protocol.ProtoBuf.ErrorMessage errorMessage_; + /** + * optional .ErrorMessage errorMessage = 74; + */ public boolean hasErrorMessage() { return ((bitField2_ & 0x00000200) == 0x00000200); } + /** + * optional .ErrorMessage errorMessage = 74; + */ public de.pokerth.protocol.ProtoBuf.ErrorMessage getErrorMessage() { return errorMessage_; } - + // optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; public static final int ADMINREMOVEGAMEMESSAGE_FIELD_NUMBER = 75; private de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage adminRemoveGameMessage_; + /** + * optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; + */ public boolean hasAdminRemoveGameMessage() { return ((bitField2_ & 0x00000400) == 0x00000400); } + /** + * optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; + */ public de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage getAdminRemoveGameMessage() { return adminRemoveGameMessage_; } - + // optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; public static final int ADMINREMOVEGAMEACKMESSAGE_FIELD_NUMBER = 76; private de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage adminRemoveGameAckMessage_; + /** + * optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; + */ public boolean hasAdminRemoveGameAckMessage() { return ((bitField2_ & 0x00000800) == 0x00000800); } + /** + * optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; + */ public de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage getAdminRemoveGameAckMessage() { return adminRemoveGameAckMessage_; } - + // optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; public static final int ADMINBANPLAYERMESSAGE_FIELD_NUMBER = 77; private de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage adminBanPlayerMessage_; + /** + * optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; + */ public boolean hasAdminBanPlayerMessage() { return ((bitField2_ & 0x00001000) == 0x00001000); } + /** + * optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; + */ public de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage getAdminBanPlayerMessage() { return adminBanPlayerMessage_; } - + // optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; public static final int ADMINBANPLAYERACKMESSAGE_FIELD_NUMBER = 78; private de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage adminBanPlayerAckMessage_; + /** + * optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; + */ public boolean hasAdminBanPlayerAckMessage() { return ((bitField2_ & 0x00002000) == 0x00002000); } + /** + * optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; + */ public de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage getAdminBanPlayerAckMessage() { return adminBanPlayerAckMessage_; } - + // optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; public static final int GAMELISTSPECTATORJOINEDMESSAGE_FIELD_NUMBER = 79; private de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage_; + /** + * optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; + */ public boolean hasGameListSpectatorJoinedMessage() { return ((bitField2_ & 0x00004000) == 0x00004000); } + /** + * optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; + */ public de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage getGameListSpectatorJoinedMessage() { return gameListSpectatorJoinedMessage_; } - + // optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; public static final int GAMELISTSPECTATORLEFTMESSAGE_FIELD_NUMBER = 80; private de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage gameListSpectatorLeftMessage_; + /** + * optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; + */ public boolean hasGameListSpectatorLeftMessage() { return ((bitField2_ & 0x00008000) == 0x00008000); } + /** + * optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; + */ public de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage getGameListSpectatorLeftMessage() { return gameListSpectatorLeftMessage_; } - + // optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; public static final int GAMESPECTATORJOINEDMESSAGE_FIELD_NUMBER = 81; private de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage gameSpectatorJoinedMessage_; + /** + * optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; + */ public boolean hasGameSpectatorJoinedMessage() { return ((bitField2_ & 0x00010000) == 0x00010000); } + /** + * optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; + */ public de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage getGameSpectatorJoinedMessage() { return gameSpectatorJoinedMessage_; } - + // optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; public static final int GAMESPECTATORLEFTMESSAGE_FIELD_NUMBER = 82; private de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage gameSpectatorLeftMessage_; + /** + * optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; + */ public boolean hasGameSpectatorLeftMessage() { return ((bitField2_ & 0x00020000) == 0x00020000); } + /** + * optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; + */ public de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage getGameSpectatorLeftMessage() { return gameSpectatorLeftMessage_; } - + private void initFields() { messageType_ = de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType.Type_AnnounceMessage; announceMessage_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.getDefaultInstance(); @@ -40814,7 +53489,7 @@ public final class ProtoBuf { public final boolean isInitialized() { byte isInitialized = memoizedIsInitialized; if (isInitialized != -1) return isInitialized == 1; - + if (!hasMessageType()) { memoizedIsInitialized = 0; return false; @@ -41290,7 +53965,7 @@ public final class ProtoBuf { memoizedIsInitialized = 1; return true; } - + public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { getSerializedSize(); @@ -41541,12 +54216,12 @@ public final class ProtoBuf { output.writeMessage(82, gameSpectatorLeftMessage_); } } - + private int memoizedSerializedSize = -1; public int getSerializedSize() { int size = memoizedSerializedSize; if (size != -1) return size; - + size = 0; if (((bitField0_ & 0x00000001) == 0x00000001)) { size += com.google.protobuf.CodedOutputStream @@ -41879,88 +54554,77 @@ public final class ProtoBuf { memoizedSerializedSize = size; return size; } - + private static final long serialVersionUID = 0L; @java.lang.Override protected java.lang.Object writeReplace() throws java.io.ObjectStreamException { return super.writeReplace(); } - + public static de.pokerth.protocol.ProtoBuf.PokerTHMessage parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.PokerTHMessage parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PokerTHMessage parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); + return PARSER.parseFrom(data); } public static de.pokerth.protocol.ProtoBuf.PokerTHMessage parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(data, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PokerTHMessage parseFrom(java.io.InputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.PokerTHMessage parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PokerTHMessage parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input); } public static de.pokerth.protocol.ProtoBuf.PokerTHMessage parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } + return PARSER.parseDelimitedFrom(input, extensionRegistry); } public static de.pokerth.protocol.ProtoBuf.PokerTHMessage parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); + return PARSER.parseFrom(input); } public static de.pokerth.protocol.ProtoBuf.PokerTHMessage parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); + return PARSER.parseFrom(input, extensionRegistry); } - + public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } public static Builder newBuilder(de.pokerth.protocol.ProtoBuf.PokerTHMessage prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } - + + /** + * Protobuf type {@code PokerTHMessage} + */ public static final class Builder extends com.google.protobuf.GeneratedMessageLite.Builder< de.pokerth.protocol.ProtoBuf.PokerTHMessage, Builder> @@ -41969,13 +54633,13 @@ public final class ProtoBuf { private Builder() { maybeForceBuilderInitialization(); } - + private void maybeForceBuilderInitialization() { } private static Builder create() { return new Builder(); } - + public Builder clear() { super.clear(); messageType_ = de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType.Type_AnnounceMessage; @@ -42144,15 +54808,15 @@ public final class ProtoBuf { bitField2_ = (bitField2_ & ~0x00020000); return this; } - + public Builder clone() { return create().mergeFrom(buildPartial()); } - + public de.pokerth.protocol.ProtoBuf.PokerTHMessage getDefaultInstanceForType() { return de.pokerth.protocol.ProtoBuf.PokerTHMessage.getDefaultInstance(); } - + public de.pokerth.protocol.ProtoBuf.PokerTHMessage build() { de.pokerth.protocol.ProtoBuf.PokerTHMessage result = buildPartial(); if (!result.isInitialized()) { @@ -42160,17 +54824,7 @@ public final class ProtoBuf { } return result; } - - private de.pokerth.protocol.ProtoBuf.PokerTHMessage buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - de.pokerth.protocol.ProtoBuf.PokerTHMessage result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - + public de.pokerth.protocol.ProtoBuf.PokerTHMessage buildPartial() { de.pokerth.protocol.ProtoBuf.PokerTHMessage result = new de.pokerth.protocol.ProtoBuf.PokerTHMessage(this); int from_bitField0_ = bitField0_; @@ -42512,7 +55166,7 @@ public final class ProtoBuf { result.bitField2_ = to_bitField2_; return result; } - + public Builder mergeFrom(de.pokerth.protocol.ProtoBuf.PokerTHMessage other) { if (other == de.pokerth.protocol.ProtoBuf.PokerTHMessage.getDefaultInstance()) return this; if (other.hasMessageType()) { @@ -42763,7 +55417,7 @@ public final class ProtoBuf { } return this; } - + public final boolean isInitialized() { if (!hasMessageType()) { @@ -43239,778 +55893,45 @@ public final class ProtoBuf { } return true; } - + public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - - return this; - default: { - if (!parseUnknownField(input, extensionRegistry, tag)) { - - return this; - } - break; - } - case 8: { - int rawValue = input.readEnum(); - de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType value = de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType.valueOf(rawValue); - if (value != null) { - bitField0_ |= 0x00000001; - messageType_ = value; - } - break; - } - case 18: { - de.pokerth.protocol.ProtoBuf.AnnounceMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AnnounceMessage.newBuilder(); - if (hasAnnounceMessage()) { - subBuilder.mergeFrom(getAnnounceMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAnnounceMessage(subBuilder.buildPartial()); - break; - } - case 26: { - de.pokerth.protocol.ProtoBuf.InitMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.InitMessage.newBuilder(); - if (hasInitMessage()) { - subBuilder.mergeFrom(getInitMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setInitMessage(subBuilder.buildPartial()); - break; - } - case 34: { - de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage.newBuilder(); - if (hasAuthServerChallengeMessage()) { - subBuilder.mergeFrom(getAuthServerChallengeMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAuthServerChallengeMessage(subBuilder.buildPartial()); - break; - } - case 42: { - de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage.newBuilder(); - if (hasAuthClientResponseMessage()) { - subBuilder.mergeFrom(getAuthClientResponseMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAuthClientResponseMessage(subBuilder.buildPartial()); - break; - } - case 50: { - de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage.newBuilder(); - if (hasAuthServerVerificationMessage()) { - subBuilder.mergeFrom(getAuthServerVerificationMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAuthServerVerificationMessage(subBuilder.buildPartial()); - break; - } - case 58: { - de.pokerth.protocol.ProtoBuf.InitAckMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.InitAckMessage.newBuilder(); - if (hasInitAckMessage()) { - subBuilder.mergeFrom(getInitAckMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setInitAckMessage(subBuilder.buildPartial()); - break; - } - case 66: { - de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.newBuilder(); - if (hasAvatarRequestMessage()) { - subBuilder.mergeFrom(getAvatarRequestMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAvatarRequestMessage(subBuilder.buildPartial()); - break; - } - case 74: { - de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.newBuilder(); - if (hasAvatarHeaderMessage()) { - subBuilder.mergeFrom(getAvatarHeaderMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAvatarHeaderMessage(subBuilder.buildPartial()); - break; - } - case 82: { - de.pokerth.protocol.ProtoBuf.AvatarDataMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AvatarDataMessage.newBuilder(); - if (hasAvatarDataMessage()) { - subBuilder.mergeFrom(getAvatarDataMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAvatarDataMessage(subBuilder.buildPartial()); - break; - } - case 90: { - de.pokerth.protocol.ProtoBuf.AvatarEndMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AvatarEndMessage.newBuilder(); - if (hasAvatarEndMessage()) { - subBuilder.mergeFrom(getAvatarEndMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAvatarEndMessage(subBuilder.buildPartial()); - break; - } - case 98: { - de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage.newBuilder(); - if (hasUnknownAvatarMessage()) { - subBuilder.mergeFrom(getUnknownAvatarMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setUnknownAvatarMessage(subBuilder.buildPartial()); - break; - } - case 106: { - de.pokerth.protocol.ProtoBuf.PlayerListMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.PlayerListMessage.newBuilder(); - if (hasPlayerListMessage()) { - subBuilder.mergeFrom(getPlayerListMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setPlayerListMessage(subBuilder.buildPartial()); - break; - } - case 114: { - de.pokerth.protocol.ProtoBuf.GameListNewMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GameListNewMessage.newBuilder(); - if (hasGameListNewMessage()) { - subBuilder.mergeFrom(getGameListNewMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameListNewMessage(subBuilder.buildPartial()); - break; - } - case 122: { - de.pokerth.protocol.ProtoBuf.GameListUpdateMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GameListUpdateMessage.newBuilder(); - if (hasGameListUpdateMessage()) { - subBuilder.mergeFrom(getGameListUpdateMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameListUpdateMessage(subBuilder.buildPartial()); - break; - } - case 130: { - de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage.newBuilder(); - if (hasGameListPlayerJoinedMessage()) { - subBuilder.mergeFrom(getGameListPlayerJoinedMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameListPlayerJoinedMessage(subBuilder.buildPartial()); - break; - } - case 138: { - de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage.newBuilder(); - if (hasGameListPlayerLeftMessage()) { - subBuilder.mergeFrom(getGameListPlayerLeftMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameListPlayerLeftMessage(subBuilder.buildPartial()); - break; - } - case 146: { - de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.newBuilder(); - if (hasGameListAdminChangedMessage()) { - subBuilder.mergeFrom(getGameListAdminChangedMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameListAdminChangedMessage(subBuilder.buildPartial()); - break; - } - case 154: { - de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage.newBuilder(); - if (hasPlayerInfoRequestMessage()) { - subBuilder.mergeFrom(getPlayerInfoRequestMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setPlayerInfoRequestMessage(subBuilder.buildPartial()); - break; - } - case 162: { - de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.newBuilder(); - if (hasPlayerInfoReplyMessage()) { - subBuilder.mergeFrom(getPlayerInfoReplyMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setPlayerInfoReplyMessage(subBuilder.buildPartial()); - break; - } - case 170: { - de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.newBuilder(); - if (hasSubscriptionRequestMessage()) { - subBuilder.mergeFrom(getSubscriptionRequestMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setSubscriptionRequestMessage(subBuilder.buildPartial()); - break; - } - case 178: { - de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.newBuilder(); - if (hasJoinExistingGameMessage()) { - subBuilder.mergeFrom(getJoinExistingGameMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setJoinExistingGameMessage(subBuilder.buildPartial()); - break; - } - case 186: { - de.pokerth.protocol.ProtoBuf.JoinNewGameMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.JoinNewGameMessage.newBuilder(); - if (hasJoinNewGameMessage()) { - subBuilder.mergeFrom(getJoinNewGameMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setJoinNewGameMessage(subBuilder.buildPartial()); - break; - } - case 194: { - de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.newBuilder(); - if (hasRejoinExistingGameMessage()) { - subBuilder.mergeFrom(getRejoinExistingGameMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setRejoinExistingGameMessage(subBuilder.buildPartial()); - break; - } - case 202: { - de.pokerth.protocol.ProtoBuf.JoinGameAckMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.JoinGameAckMessage.newBuilder(); - if (hasJoinGameAckMessage()) { - subBuilder.mergeFrom(getJoinGameAckMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setJoinGameAckMessage(subBuilder.buildPartial()); - break; - } - case 210: { - de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.newBuilder(); - if (hasJoinGameFailedMessage()) { - subBuilder.mergeFrom(getJoinGameFailedMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setJoinGameFailedMessage(subBuilder.buildPartial()); - break; - } - case 218: { - de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.newBuilder(); - if (hasGamePlayerJoinedMessage()) { - subBuilder.mergeFrom(getGamePlayerJoinedMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGamePlayerJoinedMessage(subBuilder.buildPartial()); - break; - } - case 226: { - de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.newBuilder(); - if (hasGamePlayerLeftMessage()) { - subBuilder.mergeFrom(getGamePlayerLeftMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGamePlayerLeftMessage(subBuilder.buildPartial()); - break; - } - case 234: { - de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.newBuilder(); - if (hasGameAdminChangedMessage()) { - subBuilder.mergeFrom(getGameAdminChangedMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameAdminChangedMessage(subBuilder.buildPartial()); - break; - } - case 242: { - de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.newBuilder(); - if (hasRemovedFromGameMessage()) { - subBuilder.mergeFrom(getRemovedFromGameMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setRemovedFromGameMessage(subBuilder.buildPartial()); - break; - } - case 250: { - de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage.newBuilder(); - if (hasKickPlayerRequestMessage()) { - subBuilder.mergeFrom(getKickPlayerRequestMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setKickPlayerRequestMessage(subBuilder.buildPartial()); - break; - } - case 258: { - de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.newBuilder(); - if (hasLeaveGameRequestMessage()) { - subBuilder.mergeFrom(getLeaveGameRequestMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setLeaveGameRequestMessage(subBuilder.buildPartial()); - break; - } - case 266: { - de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage.newBuilder(); - if (hasInvitePlayerToGameMessage()) { - subBuilder.mergeFrom(getInvitePlayerToGameMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setInvitePlayerToGameMessage(subBuilder.buildPartial()); - break; - } - case 274: { - de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.newBuilder(); - if (hasInviteNotifyMessage()) { - subBuilder.mergeFrom(getInviteNotifyMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setInviteNotifyMessage(subBuilder.buildPartial()); - break; - } - case 282: { - de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.newBuilder(); - if (hasRejectGameInvitationMessage()) { - subBuilder.mergeFrom(getRejectGameInvitationMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setRejectGameInvitationMessage(subBuilder.buildPartial()); - break; - } - case 290: { - de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.newBuilder(); - if (hasRejectInvNotifyMessage()) { - subBuilder.mergeFrom(getRejectInvNotifyMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setRejectInvNotifyMessage(subBuilder.buildPartial()); - break; - } - case 298: { - de.pokerth.protocol.ProtoBuf.StartEventMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.StartEventMessage.newBuilder(); - if (hasStartEventMessage()) { - subBuilder.mergeFrom(getStartEventMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setStartEventMessage(subBuilder.buildPartial()); - break; - } - case 306: { - de.pokerth.protocol.ProtoBuf.StartEventAckMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.StartEventAckMessage.newBuilder(); - if (hasStartEventAckMessage()) { - subBuilder.mergeFrom(getStartEventAckMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setStartEventAckMessage(subBuilder.buildPartial()); - break; - } - case 314: { - de.pokerth.protocol.ProtoBuf.GameStartInitialMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GameStartInitialMessage.newBuilder(); - if (hasGameStartInitialMessage()) { - subBuilder.mergeFrom(getGameStartInitialMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameStartInitialMessage(subBuilder.buildPartial()); - break; - } - case 322: { - de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.newBuilder(); - if (hasGameStartRejoinMessage()) { - subBuilder.mergeFrom(getGameStartRejoinMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameStartRejoinMessage(subBuilder.buildPartial()); - break; - } - case 330: { - de.pokerth.protocol.ProtoBuf.HandStartMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.HandStartMessage.newBuilder(); - if (hasHandStartMessage()) { - subBuilder.mergeFrom(getHandStartMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setHandStartMessage(subBuilder.buildPartial()); - break; - } - case 338: { - de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.newBuilder(); - if (hasPlayersTurnMessage()) { - subBuilder.mergeFrom(getPlayersTurnMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setPlayersTurnMessage(subBuilder.buildPartial()); - break; - } - case 346: { - de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.newBuilder(); - if (hasMyActionRequestMessage()) { - subBuilder.mergeFrom(getMyActionRequestMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setMyActionRequestMessage(subBuilder.buildPartial()); - break; - } - case 354: { - de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.newBuilder(); - if (hasYourActionRejectedMessage()) { - subBuilder.mergeFrom(getYourActionRejectedMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setYourActionRejectedMessage(subBuilder.buildPartial()); - break; - } - case 362: { - de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.newBuilder(); - if (hasPlayersActionDoneMessage()) { - subBuilder.mergeFrom(getPlayersActionDoneMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setPlayersActionDoneMessage(subBuilder.buildPartial()); - break; - } - case 370: { - de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.newBuilder(); - if (hasDealFlopCardsMessage()) { - subBuilder.mergeFrom(getDealFlopCardsMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setDealFlopCardsMessage(subBuilder.buildPartial()); - break; - } - case 378: { - de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.newBuilder(); - if (hasDealTurnCardMessage()) { - subBuilder.mergeFrom(getDealTurnCardMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setDealTurnCardMessage(subBuilder.buildPartial()); - break; - } - case 386: { - de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.newBuilder(); - if (hasDealRiverCardMessage()) { - subBuilder.mergeFrom(getDealRiverCardMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setDealRiverCardMessage(subBuilder.buildPartial()); - break; - } - case 394: { - de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.newBuilder(); - if (hasAllInShowCardsMessage()) { - subBuilder.mergeFrom(getAllInShowCardsMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAllInShowCardsMessage(subBuilder.buildPartial()); - break; - } - case 402: { - de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage.newBuilder(); - if (hasEndOfHandShowCardsMessage()) { - subBuilder.mergeFrom(getEndOfHandShowCardsMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setEndOfHandShowCardsMessage(subBuilder.buildPartial()); - break; - } - case 410: { - de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.newBuilder(); - if (hasEndOfHandHideCardsMessage()) { - subBuilder.mergeFrom(getEndOfHandHideCardsMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setEndOfHandHideCardsMessage(subBuilder.buildPartial()); - break; - } - case 418: { - de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage.newBuilder(); - if (hasShowMyCardsRequestMessage()) { - subBuilder.mergeFrom(getShowMyCardsRequestMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setShowMyCardsRequestMessage(subBuilder.buildPartial()); - break; - } - case 426: { - de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage.newBuilder(); - if (hasAfterHandShowCardsMessage()) { - subBuilder.mergeFrom(getAfterHandShowCardsMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAfterHandShowCardsMessage(subBuilder.buildPartial()); - break; - } - case 434: { - de.pokerth.protocol.ProtoBuf.EndOfGameMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.EndOfGameMessage.newBuilder(); - if (hasEndOfGameMessage()) { - subBuilder.mergeFrom(getEndOfGameMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setEndOfGameMessage(subBuilder.buildPartial()); - break; - } - case 442: { - de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.newBuilder(); - if (hasPlayerIdChangedMessage()) { - subBuilder.mergeFrom(getPlayerIdChangedMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setPlayerIdChangedMessage(subBuilder.buildPartial()); - break; - } - case 450: { - de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.newBuilder(); - if (hasAskKickPlayerMessage()) { - subBuilder.mergeFrom(getAskKickPlayerMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAskKickPlayerMessage(subBuilder.buildPartial()); - break; - } - case 458: { - de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.newBuilder(); - if (hasAskKickDeniedMessage()) { - subBuilder.mergeFrom(getAskKickDeniedMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAskKickDeniedMessage(subBuilder.buildPartial()); - break; - } - case 466: { - de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.newBuilder(); - if (hasStartKickPetitionMessage()) { - subBuilder.mergeFrom(getStartKickPetitionMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setStartKickPetitionMessage(subBuilder.buildPartial()); - break; - } - case 474: { - de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.newBuilder(); - if (hasVoteKickRequestMessage()) { - subBuilder.mergeFrom(getVoteKickRequestMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setVoteKickRequestMessage(subBuilder.buildPartial()); - break; - } - case 482: { - de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.newBuilder(); - if (hasVoteKickReplyMessage()) { - subBuilder.mergeFrom(getVoteKickReplyMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setVoteKickReplyMessage(subBuilder.buildPartial()); - break; - } - case 490: { - de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.newBuilder(); - if (hasKickPetitionUpdateMessage()) { - subBuilder.mergeFrom(getKickPetitionUpdateMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setKickPetitionUpdateMessage(subBuilder.buildPartial()); - break; - } - case 498: { - de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.newBuilder(); - if (hasEndKickPetitionMessage()) { - subBuilder.mergeFrom(getEndKickPetitionMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setEndKickPetitionMessage(subBuilder.buildPartial()); - break; - } - case 506: { - de.pokerth.protocol.ProtoBuf.StatisticsMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.StatisticsMessage.newBuilder(); - if (hasStatisticsMessage()) { - subBuilder.mergeFrom(getStatisticsMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setStatisticsMessage(subBuilder.buildPartial()); - break; - } - case 514: { - de.pokerth.protocol.ProtoBuf.ChatRequestMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.ChatRequestMessage.newBuilder(); - if (hasChatRequestMessage()) { - subBuilder.mergeFrom(getChatRequestMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setChatRequestMessage(subBuilder.buildPartial()); - break; - } - case 522: { - de.pokerth.protocol.ProtoBuf.ChatMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.ChatMessage.newBuilder(); - if (hasChatMessage()) { - subBuilder.mergeFrom(getChatMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setChatMessage(subBuilder.buildPartial()); - break; - } - case 530: { - de.pokerth.protocol.ProtoBuf.ChatRejectMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.ChatRejectMessage.newBuilder(); - if (hasChatRejectMessage()) { - subBuilder.mergeFrom(getChatRejectMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setChatRejectMessage(subBuilder.buildPartial()); - break; - } - case 538: { - de.pokerth.protocol.ProtoBuf.DialogMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.DialogMessage.newBuilder(); - if (hasDialogMessage()) { - subBuilder.mergeFrom(getDialogMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setDialogMessage(subBuilder.buildPartial()); - break; - } - case 546: { - de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.newBuilder(); - if (hasTimeoutWarningMessage()) { - subBuilder.mergeFrom(getTimeoutWarningMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setTimeoutWarningMessage(subBuilder.buildPartial()); - break; - } - case 554: { - de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage.newBuilder(); - if (hasResetTimeoutMessage()) { - subBuilder.mergeFrom(getResetTimeoutMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setResetTimeoutMessage(subBuilder.buildPartial()); - break; - } - case 562: { - de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.newBuilder(); - if (hasReportAvatarMessage()) { - subBuilder.mergeFrom(getReportAvatarMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setReportAvatarMessage(subBuilder.buildPartial()); - break; - } - case 570: { - de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.newBuilder(); - if (hasReportAvatarAckMessage()) { - subBuilder.mergeFrom(getReportAvatarAckMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setReportAvatarAckMessage(subBuilder.buildPartial()); - break; - } - case 578: { - de.pokerth.protocol.ProtoBuf.ReportGameMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.ReportGameMessage.newBuilder(); - if (hasReportGameMessage()) { - subBuilder.mergeFrom(getReportGameMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setReportGameMessage(subBuilder.buildPartial()); - break; - } - case 586: { - de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.newBuilder(); - if (hasReportGameAckMessage()) { - subBuilder.mergeFrom(getReportGameAckMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setReportGameAckMessage(subBuilder.buildPartial()); - break; - } - case 594: { - de.pokerth.protocol.ProtoBuf.ErrorMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.ErrorMessage.newBuilder(); - if (hasErrorMessage()) { - subBuilder.mergeFrom(getErrorMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setErrorMessage(subBuilder.buildPartial()); - break; - } - case 602: { - de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage.newBuilder(); - if (hasAdminRemoveGameMessage()) { - subBuilder.mergeFrom(getAdminRemoveGameMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAdminRemoveGameMessage(subBuilder.buildPartial()); - break; - } - case 610: { - de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.newBuilder(); - if (hasAdminRemoveGameAckMessage()) { - subBuilder.mergeFrom(getAdminRemoveGameAckMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAdminRemoveGameAckMessage(subBuilder.buildPartial()); - break; - } - case 618: { - de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage.newBuilder(); - if (hasAdminBanPlayerMessage()) { - subBuilder.mergeFrom(getAdminBanPlayerMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAdminBanPlayerMessage(subBuilder.buildPartial()); - break; - } - case 626: { - de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.newBuilder(); - if (hasAdminBanPlayerAckMessage()) { - subBuilder.mergeFrom(getAdminBanPlayerAckMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setAdminBanPlayerAckMessage(subBuilder.buildPartial()); - break; - } - case 634: { - de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage.newBuilder(); - if (hasGameListSpectatorJoinedMessage()) { - subBuilder.mergeFrom(getGameListSpectatorJoinedMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameListSpectatorJoinedMessage(subBuilder.buildPartial()); - break; - } - case 642: { - de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage.newBuilder(); - if (hasGameListSpectatorLeftMessage()) { - subBuilder.mergeFrom(getGameListSpectatorLeftMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameListSpectatorLeftMessage(subBuilder.buildPartial()); - break; - } - case 650: { - de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.newBuilder(); - if (hasGameSpectatorJoinedMessage()) { - subBuilder.mergeFrom(getGameSpectatorJoinedMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameSpectatorJoinedMessage(subBuilder.buildPartial()); - break; - } - case 658: { - de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.Builder subBuilder = de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.newBuilder(); - if (hasGameSpectatorLeftMessage()) { - subBuilder.mergeFrom(getGameSpectatorLeftMessage()); - } - input.readMessage(subBuilder, extensionRegistry); - setGameSpectatorLeftMessage(subBuilder.buildPartial()); - break; - } + de.pokerth.protocol.ProtoBuf.PokerTHMessage parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (de.pokerth.protocol.ProtoBuf.PokerTHMessage) e.getUnfinishedMessage(); + throw e; + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); } } + return this; } - private int bitField0_; private int bitField1_; private int bitField2_; - + // required .PokerTHMessage.PokerTHMessageType messageType = 1; private de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType messageType_ = de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType.Type_AnnounceMessage; + /** + * required .PokerTHMessage.PokerTHMessageType messageType = 1; + */ public boolean hasMessageType() { return ((bitField0_ & 0x00000001) == 0x00000001); } + /** + * required .PokerTHMessage.PokerTHMessageType messageType = 1; + */ public de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType getMessageType() { return messageType_; } + /** + * required .PokerTHMessage.PokerTHMessageType messageType = 1; + */ public Builder setMessageType(de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType value) { if (value == null) { throw new NullPointerException(); @@ -44020,37 +55941,55 @@ public final class ProtoBuf { return this; } + /** + * required .PokerTHMessage.PokerTHMessageType messageType = 1; + */ public Builder clearMessageType() { bitField0_ = (bitField0_ & ~0x00000001); messageType_ = de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType.Type_AnnounceMessage; return this; } - + // optional .AnnounceMessage announceMessage = 2; private de.pokerth.protocol.ProtoBuf.AnnounceMessage announceMessage_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.getDefaultInstance(); + /** + * optional .AnnounceMessage announceMessage = 2; + */ public boolean hasAnnounceMessage() { return ((bitField0_ & 0x00000002) == 0x00000002); } + /** + * optional .AnnounceMessage announceMessage = 2; + */ public de.pokerth.protocol.ProtoBuf.AnnounceMessage getAnnounceMessage() { return announceMessage_; } + /** + * optional .AnnounceMessage announceMessage = 2; + */ public Builder setAnnounceMessage(de.pokerth.protocol.ProtoBuf.AnnounceMessage value) { if (value == null) { throw new NullPointerException(); } announceMessage_ = value; - + bitField0_ |= 0x00000002; return this; } + /** + * optional .AnnounceMessage announceMessage = 2; + */ public Builder setAnnounceMessage( de.pokerth.protocol.ProtoBuf.AnnounceMessage.Builder builderForValue) { announceMessage_ = builderForValue.build(); - + bitField0_ |= 0x00000002; return this; } + /** + * optional .AnnounceMessage announceMessage = 2; + */ public Builder mergeAnnounceMessage(de.pokerth.protocol.ProtoBuf.AnnounceMessage value) { if (((bitField0_ & 0x00000002) == 0x00000002) && announceMessage_ != de.pokerth.protocol.ProtoBuf.AnnounceMessage.getDefaultInstance()) { @@ -44059,41 +55998,59 @@ public final class ProtoBuf { } else { announceMessage_ = value; } - + bitField0_ |= 0x00000002; return this; } + /** + * optional .AnnounceMessage announceMessage = 2; + */ public Builder clearAnnounceMessage() { announceMessage_ = de.pokerth.protocol.ProtoBuf.AnnounceMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000002); return this; } - + // optional .InitMessage initMessage = 3; private de.pokerth.protocol.ProtoBuf.InitMessage initMessage_ = de.pokerth.protocol.ProtoBuf.InitMessage.getDefaultInstance(); + /** + * optional .InitMessage initMessage = 3; + */ public boolean hasInitMessage() { return ((bitField0_ & 0x00000004) == 0x00000004); } + /** + * optional .InitMessage initMessage = 3; + */ public de.pokerth.protocol.ProtoBuf.InitMessage getInitMessage() { return initMessage_; } + /** + * optional .InitMessage initMessage = 3; + */ public Builder setInitMessage(de.pokerth.protocol.ProtoBuf.InitMessage value) { if (value == null) { throw new NullPointerException(); } initMessage_ = value; - + bitField0_ |= 0x00000004; return this; } + /** + * optional .InitMessage initMessage = 3; + */ public Builder setInitMessage( de.pokerth.protocol.ProtoBuf.InitMessage.Builder builderForValue) { initMessage_ = builderForValue.build(); - + bitField0_ |= 0x00000004; return this; } + /** + * optional .InitMessage initMessage = 3; + */ public Builder mergeInitMessage(de.pokerth.protocol.ProtoBuf.InitMessage value) { if (((bitField0_ & 0x00000004) == 0x00000004) && initMessage_ != de.pokerth.protocol.ProtoBuf.InitMessage.getDefaultInstance()) { @@ -44102,41 +56059,59 @@ public final class ProtoBuf { } else { initMessage_ = value; } - + bitField0_ |= 0x00000004; return this; } + /** + * optional .InitMessage initMessage = 3; + */ public Builder clearInitMessage() { initMessage_ = de.pokerth.protocol.ProtoBuf.InitMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000004); return this; } - + // optional .AuthServerChallengeMessage authServerChallengeMessage = 4; private de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage authServerChallengeMessage_ = de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage.getDefaultInstance(); + /** + * optional .AuthServerChallengeMessage authServerChallengeMessage = 4; + */ public boolean hasAuthServerChallengeMessage() { return ((bitField0_ & 0x00000008) == 0x00000008); } + /** + * optional .AuthServerChallengeMessage authServerChallengeMessage = 4; + */ public de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage getAuthServerChallengeMessage() { return authServerChallengeMessage_; } + /** + * optional .AuthServerChallengeMessage authServerChallengeMessage = 4; + */ public Builder setAuthServerChallengeMessage(de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage value) { if (value == null) { throw new NullPointerException(); } authServerChallengeMessage_ = value; - + bitField0_ |= 0x00000008; return this; } + /** + * optional .AuthServerChallengeMessage authServerChallengeMessage = 4; + */ public Builder setAuthServerChallengeMessage( de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage.Builder builderForValue) { authServerChallengeMessage_ = builderForValue.build(); - + bitField0_ |= 0x00000008; return this; } + /** + * optional .AuthServerChallengeMessage authServerChallengeMessage = 4; + */ public Builder mergeAuthServerChallengeMessage(de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage value) { if (((bitField0_ & 0x00000008) == 0x00000008) && authServerChallengeMessage_ != de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage.getDefaultInstance()) { @@ -44145,41 +56120,59 @@ public final class ProtoBuf { } else { authServerChallengeMessage_ = value; } - + bitField0_ |= 0x00000008; return this; } + /** + * optional .AuthServerChallengeMessage authServerChallengeMessage = 4; + */ public Builder clearAuthServerChallengeMessage() { authServerChallengeMessage_ = de.pokerth.protocol.ProtoBuf.AuthServerChallengeMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000008); return this; } - + // optional .AuthClientResponseMessage authClientResponseMessage = 5; private de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage authClientResponseMessage_ = de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage.getDefaultInstance(); + /** + * optional .AuthClientResponseMessage authClientResponseMessage = 5; + */ public boolean hasAuthClientResponseMessage() { return ((bitField0_ & 0x00000010) == 0x00000010); } + /** + * optional .AuthClientResponseMessage authClientResponseMessage = 5; + */ public de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage getAuthClientResponseMessage() { return authClientResponseMessage_; } + /** + * optional .AuthClientResponseMessage authClientResponseMessage = 5; + */ public Builder setAuthClientResponseMessage(de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage value) { if (value == null) { throw new NullPointerException(); } authClientResponseMessage_ = value; - + bitField0_ |= 0x00000010; return this; } + /** + * optional .AuthClientResponseMessage authClientResponseMessage = 5; + */ public Builder setAuthClientResponseMessage( de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage.Builder builderForValue) { authClientResponseMessage_ = builderForValue.build(); - + bitField0_ |= 0x00000010; return this; } + /** + * optional .AuthClientResponseMessage authClientResponseMessage = 5; + */ public Builder mergeAuthClientResponseMessage(de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage value) { if (((bitField0_ & 0x00000010) == 0x00000010) && authClientResponseMessage_ != de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage.getDefaultInstance()) { @@ -44188,41 +56181,59 @@ public final class ProtoBuf { } else { authClientResponseMessage_ = value; } - + bitField0_ |= 0x00000010; return this; } + /** + * optional .AuthClientResponseMessage authClientResponseMessage = 5; + */ public Builder clearAuthClientResponseMessage() { authClientResponseMessage_ = de.pokerth.protocol.ProtoBuf.AuthClientResponseMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000010); return this; } - + // optional .AuthServerVerificationMessage authServerVerificationMessage = 6; private de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage authServerVerificationMessage_ = de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage.getDefaultInstance(); + /** + * optional .AuthServerVerificationMessage authServerVerificationMessage = 6; + */ public boolean hasAuthServerVerificationMessage() { return ((bitField0_ & 0x00000020) == 0x00000020); } + /** + * optional .AuthServerVerificationMessage authServerVerificationMessage = 6; + */ public de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage getAuthServerVerificationMessage() { return authServerVerificationMessage_; } + /** + * optional .AuthServerVerificationMessage authServerVerificationMessage = 6; + */ public Builder setAuthServerVerificationMessage(de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage value) { if (value == null) { throw new NullPointerException(); } authServerVerificationMessage_ = value; - + bitField0_ |= 0x00000020; return this; } + /** + * optional .AuthServerVerificationMessage authServerVerificationMessage = 6; + */ public Builder setAuthServerVerificationMessage( de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage.Builder builderForValue) { authServerVerificationMessage_ = builderForValue.build(); - + bitField0_ |= 0x00000020; return this; } + /** + * optional .AuthServerVerificationMessage authServerVerificationMessage = 6; + */ public Builder mergeAuthServerVerificationMessage(de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage value) { if (((bitField0_ & 0x00000020) == 0x00000020) && authServerVerificationMessage_ != de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage.getDefaultInstance()) { @@ -44231,41 +56242,59 @@ public final class ProtoBuf { } else { authServerVerificationMessage_ = value; } - + bitField0_ |= 0x00000020; return this; } + /** + * optional .AuthServerVerificationMessage authServerVerificationMessage = 6; + */ public Builder clearAuthServerVerificationMessage() { authServerVerificationMessage_ = de.pokerth.protocol.ProtoBuf.AuthServerVerificationMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000020); return this; } - + // optional .InitAckMessage initAckMessage = 7; private de.pokerth.protocol.ProtoBuf.InitAckMessage initAckMessage_ = de.pokerth.protocol.ProtoBuf.InitAckMessage.getDefaultInstance(); + /** + * optional .InitAckMessage initAckMessage = 7; + */ public boolean hasInitAckMessage() { return ((bitField0_ & 0x00000040) == 0x00000040); } + /** + * optional .InitAckMessage initAckMessage = 7; + */ public de.pokerth.protocol.ProtoBuf.InitAckMessage getInitAckMessage() { return initAckMessage_; } + /** + * optional .InitAckMessage initAckMessage = 7; + */ public Builder setInitAckMessage(de.pokerth.protocol.ProtoBuf.InitAckMessage value) { if (value == null) { throw new NullPointerException(); } initAckMessage_ = value; - + bitField0_ |= 0x00000040; return this; } + /** + * optional .InitAckMessage initAckMessage = 7; + */ public Builder setInitAckMessage( de.pokerth.protocol.ProtoBuf.InitAckMessage.Builder builderForValue) { initAckMessage_ = builderForValue.build(); - + bitField0_ |= 0x00000040; return this; } + /** + * optional .InitAckMessage initAckMessage = 7; + */ public Builder mergeInitAckMessage(de.pokerth.protocol.ProtoBuf.InitAckMessage value) { if (((bitField0_ & 0x00000040) == 0x00000040) && initAckMessage_ != de.pokerth.protocol.ProtoBuf.InitAckMessage.getDefaultInstance()) { @@ -44274,41 +56303,59 @@ public final class ProtoBuf { } else { initAckMessage_ = value; } - + bitField0_ |= 0x00000040; return this; } + /** + * optional .InitAckMessage initAckMessage = 7; + */ public Builder clearInitAckMessage() { initAckMessage_ = de.pokerth.protocol.ProtoBuf.InitAckMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000040); return this; } - + // optional .AvatarRequestMessage avatarRequestMessage = 8; private de.pokerth.protocol.ProtoBuf.AvatarRequestMessage avatarRequestMessage_ = de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.getDefaultInstance(); + /** + * optional .AvatarRequestMessage avatarRequestMessage = 8; + */ public boolean hasAvatarRequestMessage() { return ((bitField0_ & 0x00000080) == 0x00000080); } + /** + * optional .AvatarRequestMessage avatarRequestMessage = 8; + */ public de.pokerth.protocol.ProtoBuf.AvatarRequestMessage getAvatarRequestMessage() { return avatarRequestMessage_; } + /** + * optional .AvatarRequestMessage avatarRequestMessage = 8; + */ public Builder setAvatarRequestMessage(de.pokerth.protocol.ProtoBuf.AvatarRequestMessage value) { if (value == null) { throw new NullPointerException(); } avatarRequestMessage_ = value; - + bitField0_ |= 0x00000080; return this; } + /** + * optional .AvatarRequestMessage avatarRequestMessage = 8; + */ public Builder setAvatarRequestMessage( de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.Builder builderForValue) { avatarRequestMessage_ = builderForValue.build(); - + bitField0_ |= 0x00000080; return this; } + /** + * optional .AvatarRequestMessage avatarRequestMessage = 8; + */ public Builder mergeAvatarRequestMessage(de.pokerth.protocol.ProtoBuf.AvatarRequestMessage value) { if (((bitField0_ & 0x00000080) == 0x00000080) && avatarRequestMessage_ != de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.getDefaultInstance()) { @@ -44317,41 +56364,59 @@ public final class ProtoBuf { } else { avatarRequestMessage_ = value; } - + bitField0_ |= 0x00000080; return this; } + /** + * optional .AvatarRequestMessage avatarRequestMessage = 8; + */ public Builder clearAvatarRequestMessage() { avatarRequestMessage_ = de.pokerth.protocol.ProtoBuf.AvatarRequestMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000080); return this; } - + // optional .AvatarHeaderMessage avatarHeaderMessage = 9; private de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage avatarHeaderMessage_ = de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.getDefaultInstance(); + /** + * optional .AvatarHeaderMessage avatarHeaderMessage = 9; + */ public boolean hasAvatarHeaderMessage() { return ((bitField0_ & 0x00000100) == 0x00000100); } + /** + * optional .AvatarHeaderMessage avatarHeaderMessage = 9; + */ public de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage getAvatarHeaderMessage() { return avatarHeaderMessage_; } + /** + * optional .AvatarHeaderMessage avatarHeaderMessage = 9; + */ public Builder setAvatarHeaderMessage(de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage value) { if (value == null) { throw new NullPointerException(); } avatarHeaderMessage_ = value; - + bitField0_ |= 0x00000100; return this; } + /** + * optional .AvatarHeaderMessage avatarHeaderMessage = 9; + */ public Builder setAvatarHeaderMessage( de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.Builder builderForValue) { avatarHeaderMessage_ = builderForValue.build(); - + bitField0_ |= 0x00000100; return this; } + /** + * optional .AvatarHeaderMessage avatarHeaderMessage = 9; + */ public Builder mergeAvatarHeaderMessage(de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage value) { if (((bitField0_ & 0x00000100) == 0x00000100) && avatarHeaderMessage_ != de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.getDefaultInstance()) { @@ -44360,41 +56425,59 @@ public final class ProtoBuf { } else { avatarHeaderMessage_ = value; } - + bitField0_ |= 0x00000100; return this; } + /** + * optional .AvatarHeaderMessage avatarHeaderMessage = 9; + */ public Builder clearAvatarHeaderMessage() { avatarHeaderMessage_ = de.pokerth.protocol.ProtoBuf.AvatarHeaderMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000100); return this; } - + // optional .AvatarDataMessage avatarDataMessage = 10; private de.pokerth.protocol.ProtoBuf.AvatarDataMessage avatarDataMessage_ = de.pokerth.protocol.ProtoBuf.AvatarDataMessage.getDefaultInstance(); + /** + * optional .AvatarDataMessage avatarDataMessage = 10; + */ public boolean hasAvatarDataMessage() { return ((bitField0_ & 0x00000200) == 0x00000200); } + /** + * optional .AvatarDataMessage avatarDataMessage = 10; + */ public de.pokerth.protocol.ProtoBuf.AvatarDataMessage getAvatarDataMessage() { return avatarDataMessage_; } + /** + * optional .AvatarDataMessage avatarDataMessage = 10; + */ public Builder setAvatarDataMessage(de.pokerth.protocol.ProtoBuf.AvatarDataMessage value) { if (value == null) { throw new NullPointerException(); } avatarDataMessage_ = value; - + bitField0_ |= 0x00000200; return this; } + /** + * optional .AvatarDataMessage avatarDataMessage = 10; + */ public Builder setAvatarDataMessage( de.pokerth.protocol.ProtoBuf.AvatarDataMessage.Builder builderForValue) { avatarDataMessage_ = builderForValue.build(); - + bitField0_ |= 0x00000200; return this; } + /** + * optional .AvatarDataMessage avatarDataMessage = 10; + */ public Builder mergeAvatarDataMessage(de.pokerth.protocol.ProtoBuf.AvatarDataMessage value) { if (((bitField0_ & 0x00000200) == 0x00000200) && avatarDataMessage_ != de.pokerth.protocol.ProtoBuf.AvatarDataMessage.getDefaultInstance()) { @@ -44403,41 +56486,59 @@ public final class ProtoBuf { } else { avatarDataMessage_ = value; } - + bitField0_ |= 0x00000200; return this; } + /** + * optional .AvatarDataMessage avatarDataMessage = 10; + */ public Builder clearAvatarDataMessage() { avatarDataMessage_ = de.pokerth.protocol.ProtoBuf.AvatarDataMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000200); return this; } - + // optional .AvatarEndMessage avatarEndMessage = 11; private de.pokerth.protocol.ProtoBuf.AvatarEndMessage avatarEndMessage_ = de.pokerth.protocol.ProtoBuf.AvatarEndMessage.getDefaultInstance(); + /** + * optional .AvatarEndMessage avatarEndMessage = 11; + */ public boolean hasAvatarEndMessage() { return ((bitField0_ & 0x00000400) == 0x00000400); } + /** + * optional .AvatarEndMessage avatarEndMessage = 11; + */ public de.pokerth.protocol.ProtoBuf.AvatarEndMessage getAvatarEndMessage() { return avatarEndMessage_; } + /** + * optional .AvatarEndMessage avatarEndMessage = 11; + */ public Builder setAvatarEndMessage(de.pokerth.protocol.ProtoBuf.AvatarEndMessage value) { if (value == null) { throw new NullPointerException(); } avatarEndMessage_ = value; - + bitField0_ |= 0x00000400; return this; } + /** + * optional .AvatarEndMessage avatarEndMessage = 11; + */ public Builder setAvatarEndMessage( de.pokerth.protocol.ProtoBuf.AvatarEndMessage.Builder builderForValue) { avatarEndMessage_ = builderForValue.build(); - + bitField0_ |= 0x00000400; return this; } + /** + * optional .AvatarEndMessage avatarEndMessage = 11; + */ public Builder mergeAvatarEndMessage(de.pokerth.protocol.ProtoBuf.AvatarEndMessage value) { if (((bitField0_ & 0x00000400) == 0x00000400) && avatarEndMessage_ != de.pokerth.protocol.ProtoBuf.AvatarEndMessage.getDefaultInstance()) { @@ -44446,41 +56547,59 @@ public final class ProtoBuf { } else { avatarEndMessage_ = value; } - + bitField0_ |= 0x00000400; return this; } + /** + * optional .AvatarEndMessage avatarEndMessage = 11; + */ public Builder clearAvatarEndMessage() { avatarEndMessage_ = de.pokerth.protocol.ProtoBuf.AvatarEndMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000400); return this; } - + // optional .UnknownAvatarMessage unknownAvatarMessage = 12; private de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage unknownAvatarMessage_ = de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage.getDefaultInstance(); + /** + * optional .UnknownAvatarMessage unknownAvatarMessage = 12; + */ public boolean hasUnknownAvatarMessage() { return ((bitField0_ & 0x00000800) == 0x00000800); } + /** + * optional .UnknownAvatarMessage unknownAvatarMessage = 12; + */ public de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage getUnknownAvatarMessage() { return unknownAvatarMessage_; } + /** + * optional .UnknownAvatarMessage unknownAvatarMessage = 12; + */ public Builder setUnknownAvatarMessage(de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage value) { if (value == null) { throw new NullPointerException(); } unknownAvatarMessage_ = value; - + bitField0_ |= 0x00000800; return this; } + /** + * optional .UnknownAvatarMessage unknownAvatarMessage = 12; + */ public Builder setUnknownAvatarMessage( de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage.Builder builderForValue) { unknownAvatarMessage_ = builderForValue.build(); - + bitField0_ |= 0x00000800; return this; } + /** + * optional .UnknownAvatarMessage unknownAvatarMessage = 12; + */ public Builder mergeUnknownAvatarMessage(de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage value) { if (((bitField0_ & 0x00000800) == 0x00000800) && unknownAvatarMessage_ != de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage.getDefaultInstance()) { @@ -44489,41 +56608,59 @@ public final class ProtoBuf { } else { unknownAvatarMessage_ = value; } - + bitField0_ |= 0x00000800; return this; } + /** + * optional .UnknownAvatarMessage unknownAvatarMessage = 12; + */ public Builder clearUnknownAvatarMessage() { unknownAvatarMessage_ = de.pokerth.protocol.ProtoBuf.UnknownAvatarMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00000800); return this; } - + // optional .PlayerListMessage playerListMessage = 13; private de.pokerth.protocol.ProtoBuf.PlayerListMessage playerListMessage_ = de.pokerth.protocol.ProtoBuf.PlayerListMessage.getDefaultInstance(); + /** + * optional .PlayerListMessage playerListMessage = 13; + */ public boolean hasPlayerListMessage() { return ((bitField0_ & 0x00001000) == 0x00001000); } + /** + * optional .PlayerListMessage playerListMessage = 13; + */ public de.pokerth.protocol.ProtoBuf.PlayerListMessage getPlayerListMessage() { return playerListMessage_; } + /** + * optional .PlayerListMessage playerListMessage = 13; + */ public Builder setPlayerListMessage(de.pokerth.protocol.ProtoBuf.PlayerListMessage value) { if (value == null) { throw new NullPointerException(); } playerListMessage_ = value; - + bitField0_ |= 0x00001000; return this; } + /** + * optional .PlayerListMessage playerListMessage = 13; + */ public Builder setPlayerListMessage( de.pokerth.protocol.ProtoBuf.PlayerListMessage.Builder builderForValue) { playerListMessage_ = builderForValue.build(); - + bitField0_ |= 0x00001000; return this; } + /** + * optional .PlayerListMessage playerListMessage = 13; + */ public Builder mergePlayerListMessage(de.pokerth.protocol.ProtoBuf.PlayerListMessage value) { if (((bitField0_ & 0x00001000) == 0x00001000) && playerListMessage_ != de.pokerth.protocol.ProtoBuf.PlayerListMessage.getDefaultInstance()) { @@ -44532,41 +56669,59 @@ public final class ProtoBuf { } else { playerListMessage_ = value; } - + bitField0_ |= 0x00001000; return this; } + /** + * optional .PlayerListMessage playerListMessage = 13; + */ public Builder clearPlayerListMessage() { playerListMessage_ = de.pokerth.protocol.ProtoBuf.PlayerListMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00001000); return this; } - + // optional .GameListNewMessage gameListNewMessage = 14; private de.pokerth.protocol.ProtoBuf.GameListNewMessage gameListNewMessage_ = de.pokerth.protocol.ProtoBuf.GameListNewMessage.getDefaultInstance(); + /** + * optional .GameListNewMessage gameListNewMessage = 14; + */ public boolean hasGameListNewMessage() { return ((bitField0_ & 0x00002000) == 0x00002000); } + /** + * optional .GameListNewMessage gameListNewMessage = 14; + */ public de.pokerth.protocol.ProtoBuf.GameListNewMessage getGameListNewMessage() { return gameListNewMessage_; } + /** + * optional .GameListNewMessage gameListNewMessage = 14; + */ public Builder setGameListNewMessage(de.pokerth.protocol.ProtoBuf.GameListNewMessage value) { if (value == null) { throw new NullPointerException(); } gameListNewMessage_ = value; - + bitField0_ |= 0x00002000; return this; } + /** + * optional .GameListNewMessage gameListNewMessage = 14; + */ public Builder setGameListNewMessage( de.pokerth.protocol.ProtoBuf.GameListNewMessage.Builder builderForValue) { gameListNewMessage_ = builderForValue.build(); - + bitField0_ |= 0x00002000; return this; } + /** + * optional .GameListNewMessage gameListNewMessage = 14; + */ public Builder mergeGameListNewMessage(de.pokerth.protocol.ProtoBuf.GameListNewMessage value) { if (((bitField0_ & 0x00002000) == 0x00002000) && gameListNewMessage_ != de.pokerth.protocol.ProtoBuf.GameListNewMessage.getDefaultInstance()) { @@ -44575,41 +56730,59 @@ public final class ProtoBuf { } else { gameListNewMessage_ = value; } - + bitField0_ |= 0x00002000; return this; } + /** + * optional .GameListNewMessage gameListNewMessage = 14; + */ public Builder clearGameListNewMessage() { gameListNewMessage_ = de.pokerth.protocol.ProtoBuf.GameListNewMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00002000); return this; } - + // optional .GameListUpdateMessage gameListUpdateMessage = 15; private de.pokerth.protocol.ProtoBuf.GameListUpdateMessage gameListUpdateMessage_ = de.pokerth.protocol.ProtoBuf.GameListUpdateMessage.getDefaultInstance(); + /** + * optional .GameListUpdateMessage gameListUpdateMessage = 15; + */ public boolean hasGameListUpdateMessage() { return ((bitField0_ & 0x00004000) == 0x00004000); } + /** + * optional .GameListUpdateMessage gameListUpdateMessage = 15; + */ public de.pokerth.protocol.ProtoBuf.GameListUpdateMessage getGameListUpdateMessage() { return gameListUpdateMessage_; } + /** + * optional .GameListUpdateMessage gameListUpdateMessage = 15; + */ public Builder setGameListUpdateMessage(de.pokerth.protocol.ProtoBuf.GameListUpdateMessage value) { if (value == null) { throw new NullPointerException(); } gameListUpdateMessage_ = value; - + bitField0_ |= 0x00004000; return this; } + /** + * optional .GameListUpdateMessage gameListUpdateMessage = 15; + */ public Builder setGameListUpdateMessage( de.pokerth.protocol.ProtoBuf.GameListUpdateMessage.Builder builderForValue) { gameListUpdateMessage_ = builderForValue.build(); - + bitField0_ |= 0x00004000; return this; } + /** + * optional .GameListUpdateMessage gameListUpdateMessage = 15; + */ public Builder mergeGameListUpdateMessage(de.pokerth.protocol.ProtoBuf.GameListUpdateMessage value) { if (((bitField0_ & 0x00004000) == 0x00004000) && gameListUpdateMessage_ != de.pokerth.protocol.ProtoBuf.GameListUpdateMessage.getDefaultInstance()) { @@ -44618,41 +56791,59 @@ public final class ProtoBuf { } else { gameListUpdateMessage_ = value; } - + bitField0_ |= 0x00004000; return this; } + /** + * optional .GameListUpdateMessage gameListUpdateMessage = 15; + */ public Builder clearGameListUpdateMessage() { gameListUpdateMessage_ = de.pokerth.protocol.ProtoBuf.GameListUpdateMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00004000); return this; } - + // optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; private de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage gameListPlayerJoinedMessage_ = de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage.getDefaultInstance(); + /** + * optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; + */ public boolean hasGameListPlayerJoinedMessage() { return ((bitField0_ & 0x00008000) == 0x00008000); } + /** + * optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; + */ public de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage getGameListPlayerJoinedMessage() { return gameListPlayerJoinedMessage_; } + /** + * optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; + */ public Builder setGameListPlayerJoinedMessage(de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage value) { if (value == null) { throw new NullPointerException(); } gameListPlayerJoinedMessage_ = value; - + bitField0_ |= 0x00008000; return this; } + /** + * optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; + */ public Builder setGameListPlayerJoinedMessage( de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage.Builder builderForValue) { gameListPlayerJoinedMessage_ = builderForValue.build(); - + bitField0_ |= 0x00008000; return this; } + /** + * optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; + */ public Builder mergeGameListPlayerJoinedMessage(de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage value) { if (((bitField0_ & 0x00008000) == 0x00008000) && gameListPlayerJoinedMessage_ != de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage.getDefaultInstance()) { @@ -44661,41 +56852,59 @@ public final class ProtoBuf { } else { gameListPlayerJoinedMessage_ = value; } - + bitField0_ |= 0x00008000; return this; } + /** + * optional .GameListPlayerJoinedMessage gameListPlayerJoinedMessage = 16; + */ public Builder clearGameListPlayerJoinedMessage() { gameListPlayerJoinedMessage_ = de.pokerth.protocol.ProtoBuf.GameListPlayerJoinedMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00008000); return this; } - + // optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; private de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage gameListPlayerLeftMessage_ = de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage.getDefaultInstance(); + /** + * optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; + */ public boolean hasGameListPlayerLeftMessage() { return ((bitField0_ & 0x00010000) == 0x00010000); } + /** + * optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; + */ public de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage getGameListPlayerLeftMessage() { return gameListPlayerLeftMessage_; } + /** + * optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; + */ public Builder setGameListPlayerLeftMessage(de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage value) { if (value == null) { throw new NullPointerException(); } gameListPlayerLeftMessage_ = value; - + bitField0_ |= 0x00010000; return this; } + /** + * optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; + */ public Builder setGameListPlayerLeftMessage( de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage.Builder builderForValue) { gameListPlayerLeftMessage_ = builderForValue.build(); - + bitField0_ |= 0x00010000; return this; } + /** + * optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; + */ public Builder mergeGameListPlayerLeftMessage(de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage value) { if (((bitField0_ & 0x00010000) == 0x00010000) && gameListPlayerLeftMessage_ != de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage.getDefaultInstance()) { @@ -44704,41 +56913,59 @@ public final class ProtoBuf { } else { gameListPlayerLeftMessage_ = value; } - + bitField0_ |= 0x00010000; return this; } + /** + * optional .GameListPlayerLeftMessage gameListPlayerLeftMessage = 17; + */ public Builder clearGameListPlayerLeftMessage() { gameListPlayerLeftMessage_ = de.pokerth.protocol.ProtoBuf.GameListPlayerLeftMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00010000); return this; } - + // optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; private de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage gameListAdminChangedMessage_ = de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.getDefaultInstance(); + /** + * optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; + */ public boolean hasGameListAdminChangedMessage() { return ((bitField0_ & 0x00020000) == 0x00020000); } + /** + * optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; + */ public de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage getGameListAdminChangedMessage() { return gameListAdminChangedMessage_; } + /** + * optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; + */ public Builder setGameListAdminChangedMessage(de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage value) { if (value == null) { throw new NullPointerException(); } gameListAdminChangedMessage_ = value; - + bitField0_ |= 0x00020000; return this; } + /** + * optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; + */ public Builder setGameListAdminChangedMessage( de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.Builder builderForValue) { gameListAdminChangedMessage_ = builderForValue.build(); - + bitField0_ |= 0x00020000; return this; } + /** + * optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; + */ public Builder mergeGameListAdminChangedMessage(de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage value) { if (((bitField0_ & 0x00020000) == 0x00020000) && gameListAdminChangedMessage_ != de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.getDefaultInstance()) { @@ -44747,41 +56974,59 @@ public final class ProtoBuf { } else { gameListAdminChangedMessage_ = value; } - + bitField0_ |= 0x00020000; return this; } + /** + * optional .GameListAdminChangedMessage gameListAdminChangedMessage = 18; + */ public Builder clearGameListAdminChangedMessage() { gameListAdminChangedMessage_ = de.pokerth.protocol.ProtoBuf.GameListAdminChangedMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00020000); return this; } - + // optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; private de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage playerInfoRequestMessage_ = de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage.getDefaultInstance(); + /** + * optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; + */ public boolean hasPlayerInfoRequestMessage() { return ((bitField0_ & 0x00040000) == 0x00040000); } + /** + * optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; + */ public de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage getPlayerInfoRequestMessage() { return playerInfoRequestMessage_; } + /** + * optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; + */ public Builder setPlayerInfoRequestMessage(de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage value) { if (value == null) { throw new NullPointerException(); } playerInfoRequestMessage_ = value; - + bitField0_ |= 0x00040000; return this; } + /** + * optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; + */ public Builder setPlayerInfoRequestMessage( de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage.Builder builderForValue) { playerInfoRequestMessage_ = builderForValue.build(); - + bitField0_ |= 0x00040000; return this; } + /** + * optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; + */ public Builder mergePlayerInfoRequestMessage(de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage value) { if (((bitField0_ & 0x00040000) == 0x00040000) && playerInfoRequestMessage_ != de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage.getDefaultInstance()) { @@ -44790,41 +57035,59 @@ public final class ProtoBuf { } else { playerInfoRequestMessage_ = value; } - + bitField0_ |= 0x00040000; return this; } + /** + * optional .PlayerInfoRequestMessage playerInfoRequestMessage = 19; + */ public Builder clearPlayerInfoRequestMessage() { playerInfoRequestMessage_ = de.pokerth.protocol.ProtoBuf.PlayerInfoRequestMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00040000); return this; } - + // optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; private de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage playerInfoReplyMessage_ = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.getDefaultInstance(); + /** + * optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; + */ public boolean hasPlayerInfoReplyMessage() { return ((bitField0_ & 0x00080000) == 0x00080000); } + /** + * optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; + */ public de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage getPlayerInfoReplyMessage() { return playerInfoReplyMessage_; } + /** + * optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; + */ public Builder setPlayerInfoReplyMessage(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage value) { if (value == null) { throw new NullPointerException(); } playerInfoReplyMessage_ = value; - + bitField0_ |= 0x00080000; return this; } + /** + * optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; + */ public Builder setPlayerInfoReplyMessage( de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.Builder builderForValue) { playerInfoReplyMessage_ = builderForValue.build(); - + bitField0_ |= 0x00080000; return this; } + /** + * optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; + */ public Builder mergePlayerInfoReplyMessage(de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage value) { if (((bitField0_ & 0x00080000) == 0x00080000) && playerInfoReplyMessage_ != de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.getDefaultInstance()) { @@ -44833,41 +57096,59 @@ public final class ProtoBuf { } else { playerInfoReplyMessage_ = value; } - + bitField0_ |= 0x00080000; return this; } + /** + * optional .PlayerInfoReplyMessage playerInfoReplyMessage = 20; + */ public Builder clearPlayerInfoReplyMessage() { playerInfoReplyMessage_ = de.pokerth.protocol.ProtoBuf.PlayerInfoReplyMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00080000); return this; } - + // optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; private de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage subscriptionRequestMessage_ = de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.getDefaultInstance(); + /** + * optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; + */ public boolean hasSubscriptionRequestMessage() { return ((bitField0_ & 0x00100000) == 0x00100000); } + /** + * optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; + */ public de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage getSubscriptionRequestMessage() { return subscriptionRequestMessage_; } + /** + * optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; + */ public Builder setSubscriptionRequestMessage(de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage value) { if (value == null) { throw new NullPointerException(); } subscriptionRequestMessage_ = value; - + bitField0_ |= 0x00100000; return this; } + /** + * optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; + */ public Builder setSubscriptionRequestMessage( de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.Builder builderForValue) { subscriptionRequestMessage_ = builderForValue.build(); - + bitField0_ |= 0x00100000; return this; } + /** + * optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; + */ public Builder mergeSubscriptionRequestMessage(de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage value) { if (((bitField0_ & 0x00100000) == 0x00100000) && subscriptionRequestMessage_ != de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.getDefaultInstance()) { @@ -44876,41 +57157,59 @@ public final class ProtoBuf { } else { subscriptionRequestMessage_ = value; } - + bitField0_ |= 0x00100000; return this; } + /** + * optional .SubscriptionRequestMessage subscriptionRequestMessage = 21; + */ public Builder clearSubscriptionRequestMessage() { subscriptionRequestMessage_ = de.pokerth.protocol.ProtoBuf.SubscriptionRequestMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00100000); return this; } - + // optional .JoinExistingGameMessage joinExistingGameMessage = 22; private de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage joinExistingGameMessage_ = de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.getDefaultInstance(); + /** + * optional .JoinExistingGameMessage joinExistingGameMessage = 22; + */ public boolean hasJoinExistingGameMessage() { return ((bitField0_ & 0x00200000) == 0x00200000); } + /** + * optional .JoinExistingGameMessage joinExistingGameMessage = 22; + */ public de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage getJoinExistingGameMessage() { return joinExistingGameMessage_; } + /** + * optional .JoinExistingGameMessage joinExistingGameMessage = 22; + */ public Builder setJoinExistingGameMessage(de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage value) { if (value == null) { throw new NullPointerException(); } joinExistingGameMessage_ = value; - + bitField0_ |= 0x00200000; return this; } + /** + * optional .JoinExistingGameMessage joinExistingGameMessage = 22; + */ public Builder setJoinExistingGameMessage( de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.Builder builderForValue) { joinExistingGameMessage_ = builderForValue.build(); - + bitField0_ |= 0x00200000; return this; } + /** + * optional .JoinExistingGameMessage joinExistingGameMessage = 22; + */ public Builder mergeJoinExistingGameMessage(de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage value) { if (((bitField0_ & 0x00200000) == 0x00200000) && joinExistingGameMessage_ != de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.getDefaultInstance()) { @@ -44919,41 +57218,59 @@ public final class ProtoBuf { } else { joinExistingGameMessage_ = value; } - + bitField0_ |= 0x00200000; return this; } + /** + * optional .JoinExistingGameMessage joinExistingGameMessage = 22; + */ public Builder clearJoinExistingGameMessage() { joinExistingGameMessage_ = de.pokerth.protocol.ProtoBuf.JoinExistingGameMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00200000); return this; } - + // optional .JoinNewGameMessage joinNewGameMessage = 23; private de.pokerth.protocol.ProtoBuf.JoinNewGameMessage joinNewGameMessage_ = de.pokerth.protocol.ProtoBuf.JoinNewGameMessage.getDefaultInstance(); + /** + * optional .JoinNewGameMessage joinNewGameMessage = 23; + */ public boolean hasJoinNewGameMessage() { return ((bitField0_ & 0x00400000) == 0x00400000); } + /** + * optional .JoinNewGameMessage joinNewGameMessage = 23; + */ public de.pokerth.protocol.ProtoBuf.JoinNewGameMessage getJoinNewGameMessage() { return joinNewGameMessage_; } + /** + * optional .JoinNewGameMessage joinNewGameMessage = 23; + */ public Builder setJoinNewGameMessage(de.pokerth.protocol.ProtoBuf.JoinNewGameMessage value) { if (value == null) { throw new NullPointerException(); } joinNewGameMessage_ = value; - + bitField0_ |= 0x00400000; return this; } + /** + * optional .JoinNewGameMessage joinNewGameMessage = 23; + */ public Builder setJoinNewGameMessage( de.pokerth.protocol.ProtoBuf.JoinNewGameMessage.Builder builderForValue) { joinNewGameMessage_ = builderForValue.build(); - + bitField0_ |= 0x00400000; return this; } + /** + * optional .JoinNewGameMessage joinNewGameMessage = 23; + */ public Builder mergeJoinNewGameMessage(de.pokerth.protocol.ProtoBuf.JoinNewGameMessage value) { if (((bitField0_ & 0x00400000) == 0x00400000) && joinNewGameMessage_ != de.pokerth.protocol.ProtoBuf.JoinNewGameMessage.getDefaultInstance()) { @@ -44962,41 +57279,59 @@ public final class ProtoBuf { } else { joinNewGameMessage_ = value; } - + bitField0_ |= 0x00400000; return this; } + /** + * optional .JoinNewGameMessage joinNewGameMessage = 23; + */ public Builder clearJoinNewGameMessage() { joinNewGameMessage_ = de.pokerth.protocol.ProtoBuf.JoinNewGameMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00400000); return this; } - + // optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; private de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage rejoinExistingGameMessage_ = de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.getDefaultInstance(); + /** + * optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; + */ public boolean hasRejoinExistingGameMessage() { return ((bitField0_ & 0x00800000) == 0x00800000); } + /** + * optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; + */ public de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage getRejoinExistingGameMessage() { return rejoinExistingGameMessage_; } + /** + * optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; + */ public Builder setRejoinExistingGameMessage(de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage value) { if (value == null) { throw new NullPointerException(); } rejoinExistingGameMessage_ = value; - + bitField0_ |= 0x00800000; return this; } + /** + * optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; + */ public Builder setRejoinExistingGameMessage( de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.Builder builderForValue) { rejoinExistingGameMessage_ = builderForValue.build(); - + bitField0_ |= 0x00800000; return this; } + /** + * optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; + */ public Builder mergeRejoinExistingGameMessage(de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage value) { if (((bitField0_ & 0x00800000) == 0x00800000) && rejoinExistingGameMessage_ != de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.getDefaultInstance()) { @@ -45005,41 +57340,59 @@ public final class ProtoBuf { } else { rejoinExistingGameMessage_ = value; } - + bitField0_ |= 0x00800000; return this; } + /** + * optional .RejoinExistingGameMessage rejoinExistingGameMessage = 24; + */ public Builder clearRejoinExistingGameMessage() { rejoinExistingGameMessage_ = de.pokerth.protocol.ProtoBuf.RejoinExistingGameMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x00800000); return this; } - + // optional .JoinGameAckMessage joinGameAckMessage = 25; private de.pokerth.protocol.ProtoBuf.JoinGameAckMessage joinGameAckMessage_ = de.pokerth.protocol.ProtoBuf.JoinGameAckMessage.getDefaultInstance(); + /** + * optional .JoinGameAckMessage joinGameAckMessage = 25; + */ public boolean hasJoinGameAckMessage() { return ((bitField0_ & 0x01000000) == 0x01000000); } + /** + * optional .JoinGameAckMessage joinGameAckMessage = 25; + */ public de.pokerth.protocol.ProtoBuf.JoinGameAckMessage getJoinGameAckMessage() { return joinGameAckMessage_; } + /** + * optional .JoinGameAckMessage joinGameAckMessage = 25; + */ public Builder setJoinGameAckMessage(de.pokerth.protocol.ProtoBuf.JoinGameAckMessage value) { if (value == null) { throw new NullPointerException(); } joinGameAckMessage_ = value; - + bitField0_ |= 0x01000000; return this; } + /** + * optional .JoinGameAckMessage joinGameAckMessage = 25; + */ public Builder setJoinGameAckMessage( de.pokerth.protocol.ProtoBuf.JoinGameAckMessage.Builder builderForValue) { joinGameAckMessage_ = builderForValue.build(); - + bitField0_ |= 0x01000000; return this; } + /** + * optional .JoinGameAckMessage joinGameAckMessage = 25; + */ public Builder mergeJoinGameAckMessage(de.pokerth.protocol.ProtoBuf.JoinGameAckMessage value) { if (((bitField0_ & 0x01000000) == 0x01000000) && joinGameAckMessage_ != de.pokerth.protocol.ProtoBuf.JoinGameAckMessage.getDefaultInstance()) { @@ -45048,41 +57401,59 @@ public final class ProtoBuf { } else { joinGameAckMessage_ = value; } - + bitField0_ |= 0x01000000; return this; } + /** + * optional .JoinGameAckMessage joinGameAckMessage = 25; + */ public Builder clearJoinGameAckMessage() { joinGameAckMessage_ = de.pokerth.protocol.ProtoBuf.JoinGameAckMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x01000000); return this; } - + // optional .JoinGameFailedMessage joinGameFailedMessage = 26; private de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage joinGameFailedMessage_ = de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.getDefaultInstance(); + /** + * optional .JoinGameFailedMessage joinGameFailedMessage = 26; + */ public boolean hasJoinGameFailedMessage() { return ((bitField0_ & 0x02000000) == 0x02000000); } + /** + * optional .JoinGameFailedMessage joinGameFailedMessage = 26; + */ public de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage getJoinGameFailedMessage() { return joinGameFailedMessage_; } + /** + * optional .JoinGameFailedMessage joinGameFailedMessage = 26; + */ public Builder setJoinGameFailedMessage(de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage value) { if (value == null) { throw new NullPointerException(); } joinGameFailedMessage_ = value; - + bitField0_ |= 0x02000000; return this; } + /** + * optional .JoinGameFailedMessage joinGameFailedMessage = 26; + */ public Builder setJoinGameFailedMessage( de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.Builder builderForValue) { joinGameFailedMessage_ = builderForValue.build(); - + bitField0_ |= 0x02000000; return this; } + /** + * optional .JoinGameFailedMessage joinGameFailedMessage = 26; + */ public Builder mergeJoinGameFailedMessage(de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage value) { if (((bitField0_ & 0x02000000) == 0x02000000) && joinGameFailedMessage_ != de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.getDefaultInstance()) { @@ -45091,41 +57462,59 @@ public final class ProtoBuf { } else { joinGameFailedMessage_ = value; } - + bitField0_ |= 0x02000000; return this; } + /** + * optional .JoinGameFailedMessage joinGameFailedMessage = 26; + */ public Builder clearJoinGameFailedMessage() { joinGameFailedMessage_ = de.pokerth.protocol.ProtoBuf.JoinGameFailedMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x02000000); return this; } - + // optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; private de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage gamePlayerJoinedMessage_ = de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.getDefaultInstance(); + /** + * optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; + */ public boolean hasGamePlayerJoinedMessage() { return ((bitField0_ & 0x04000000) == 0x04000000); } + /** + * optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; + */ public de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage getGamePlayerJoinedMessage() { return gamePlayerJoinedMessage_; } + /** + * optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; + */ public Builder setGamePlayerJoinedMessage(de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage value) { if (value == null) { throw new NullPointerException(); } gamePlayerJoinedMessage_ = value; - + bitField0_ |= 0x04000000; return this; } + /** + * optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; + */ public Builder setGamePlayerJoinedMessage( de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.Builder builderForValue) { gamePlayerJoinedMessage_ = builderForValue.build(); - + bitField0_ |= 0x04000000; return this; } + /** + * optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; + */ public Builder mergeGamePlayerJoinedMessage(de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage value) { if (((bitField0_ & 0x04000000) == 0x04000000) && gamePlayerJoinedMessage_ != de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.getDefaultInstance()) { @@ -45134,41 +57523,59 @@ public final class ProtoBuf { } else { gamePlayerJoinedMessage_ = value; } - + bitField0_ |= 0x04000000; return this; } + /** + * optional .GamePlayerJoinedMessage gamePlayerJoinedMessage = 27; + */ public Builder clearGamePlayerJoinedMessage() { gamePlayerJoinedMessage_ = de.pokerth.protocol.ProtoBuf.GamePlayerJoinedMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x04000000); return this; } - + // optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; private de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage gamePlayerLeftMessage_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.getDefaultInstance(); + /** + * optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; + */ public boolean hasGamePlayerLeftMessage() { return ((bitField0_ & 0x08000000) == 0x08000000); } + /** + * optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; + */ public de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage getGamePlayerLeftMessage() { return gamePlayerLeftMessage_; } + /** + * optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; + */ public Builder setGamePlayerLeftMessage(de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage value) { if (value == null) { throw new NullPointerException(); } gamePlayerLeftMessage_ = value; - + bitField0_ |= 0x08000000; return this; } + /** + * optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; + */ public Builder setGamePlayerLeftMessage( de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.Builder builderForValue) { gamePlayerLeftMessage_ = builderForValue.build(); - + bitField0_ |= 0x08000000; return this; } + /** + * optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; + */ public Builder mergeGamePlayerLeftMessage(de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage value) { if (((bitField0_ & 0x08000000) == 0x08000000) && gamePlayerLeftMessage_ != de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.getDefaultInstance()) { @@ -45177,41 +57584,59 @@ public final class ProtoBuf { } else { gamePlayerLeftMessage_ = value; } - + bitField0_ |= 0x08000000; return this; } + /** + * optional .GamePlayerLeftMessage gamePlayerLeftMessage = 28; + */ public Builder clearGamePlayerLeftMessage() { gamePlayerLeftMessage_ = de.pokerth.protocol.ProtoBuf.GamePlayerLeftMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x08000000); return this; } - + // optional .GameAdminChangedMessage gameAdminChangedMessage = 29; private de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage gameAdminChangedMessage_ = de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.getDefaultInstance(); + /** + * optional .GameAdminChangedMessage gameAdminChangedMessage = 29; + */ public boolean hasGameAdminChangedMessage() { return ((bitField0_ & 0x10000000) == 0x10000000); } + /** + * optional .GameAdminChangedMessage gameAdminChangedMessage = 29; + */ public de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage getGameAdminChangedMessage() { return gameAdminChangedMessage_; } + /** + * optional .GameAdminChangedMessage gameAdminChangedMessage = 29; + */ public Builder setGameAdminChangedMessage(de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage value) { if (value == null) { throw new NullPointerException(); } gameAdminChangedMessage_ = value; - + bitField0_ |= 0x10000000; return this; } + /** + * optional .GameAdminChangedMessage gameAdminChangedMessage = 29; + */ public Builder setGameAdminChangedMessage( de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.Builder builderForValue) { gameAdminChangedMessage_ = builderForValue.build(); - + bitField0_ |= 0x10000000; return this; } + /** + * optional .GameAdminChangedMessage gameAdminChangedMessage = 29; + */ public Builder mergeGameAdminChangedMessage(de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage value) { if (((bitField0_ & 0x10000000) == 0x10000000) && gameAdminChangedMessage_ != de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.getDefaultInstance()) { @@ -45220,41 +57645,59 @@ public final class ProtoBuf { } else { gameAdminChangedMessage_ = value; } - + bitField0_ |= 0x10000000; return this; } + /** + * optional .GameAdminChangedMessage gameAdminChangedMessage = 29; + */ public Builder clearGameAdminChangedMessage() { gameAdminChangedMessage_ = de.pokerth.protocol.ProtoBuf.GameAdminChangedMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x10000000); return this; } - + // optional .RemovedFromGameMessage removedFromGameMessage = 30; private de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage removedFromGameMessage_ = de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.getDefaultInstance(); + /** + * optional .RemovedFromGameMessage removedFromGameMessage = 30; + */ public boolean hasRemovedFromGameMessage() { return ((bitField0_ & 0x20000000) == 0x20000000); } + /** + * optional .RemovedFromGameMessage removedFromGameMessage = 30; + */ public de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage getRemovedFromGameMessage() { return removedFromGameMessage_; } + /** + * optional .RemovedFromGameMessage removedFromGameMessage = 30; + */ public Builder setRemovedFromGameMessage(de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage value) { if (value == null) { throw new NullPointerException(); } removedFromGameMessage_ = value; - + bitField0_ |= 0x20000000; return this; } + /** + * optional .RemovedFromGameMessage removedFromGameMessage = 30; + */ public Builder setRemovedFromGameMessage( de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.Builder builderForValue) { removedFromGameMessage_ = builderForValue.build(); - + bitField0_ |= 0x20000000; return this; } + /** + * optional .RemovedFromGameMessage removedFromGameMessage = 30; + */ public Builder mergeRemovedFromGameMessage(de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage value) { if (((bitField0_ & 0x20000000) == 0x20000000) && removedFromGameMessage_ != de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.getDefaultInstance()) { @@ -45263,41 +57706,59 @@ public final class ProtoBuf { } else { removedFromGameMessage_ = value; } - + bitField0_ |= 0x20000000; return this; } + /** + * optional .RemovedFromGameMessage removedFromGameMessage = 30; + */ public Builder clearRemovedFromGameMessage() { removedFromGameMessage_ = de.pokerth.protocol.ProtoBuf.RemovedFromGameMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x20000000); return this; } - + // optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; private de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage kickPlayerRequestMessage_ = de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage.getDefaultInstance(); + /** + * optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; + */ public boolean hasKickPlayerRequestMessage() { return ((bitField0_ & 0x40000000) == 0x40000000); } + /** + * optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; + */ public de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage getKickPlayerRequestMessage() { return kickPlayerRequestMessage_; } + /** + * optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; + */ public Builder setKickPlayerRequestMessage(de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage value) { if (value == null) { throw new NullPointerException(); } kickPlayerRequestMessage_ = value; - + bitField0_ |= 0x40000000; return this; } + /** + * optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; + */ public Builder setKickPlayerRequestMessage( de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage.Builder builderForValue) { kickPlayerRequestMessage_ = builderForValue.build(); - + bitField0_ |= 0x40000000; return this; } + /** + * optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; + */ public Builder mergeKickPlayerRequestMessage(de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage value) { if (((bitField0_ & 0x40000000) == 0x40000000) && kickPlayerRequestMessage_ != de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage.getDefaultInstance()) { @@ -45306,41 +57767,59 @@ public final class ProtoBuf { } else { kickPlayerRequestMessage_ = value; } - + bitField0_ |= 0x40000000; return this; } + /** + * optional .KickPlayerRequestMessage kickPlayerRequestMessage = 31; + */ public Builder clearKickPlayerRequestMessage() { kickPlayerRequestMessage_ = de.pokerth.protocol.ProtoBuf.KickPlayerRequestMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x40000000); return this; } - + // optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; private de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage leaveGameRequestMessage_ = de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.getDefaultInstance(); + /** + * optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; + */ public boolean hasLeaveGameRequestMessage() { return ((bitField0_ & 0x80000000) == 0x80000000); } + /** + * optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; + */ public de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage getLeaveGameRequestMessage() { return leaveGameRequestMessage_; } + /** + * optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; + */ public Builder setLeaveGameRequestMessage(de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage value) { if (value == null) { throw new NullPointerException(); } leaveGameRequestMessage_ = value; - + bitField0_ |= 0x80000000; return this; } + /** + * optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; + */ public Builder setLeaveGameRequestMessage( de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.Builder builderForValue) { leaveGameRequestMessage_ = builderForValue.build(); - + bitField0_ |= 0x80000000; return this; } + /** + * optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; + */ public Builder mergeLeaveGameRequestMessage(de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage value) { if (((bitField0_ & 0x80000000) == 0x80000000) && leaveGameRequestMessage_ != de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.getDefaultInstance()) { @@ -45349,41 +57828,59 @@ public final class ProtoBuf { } else { leaveGameRequestMessage_ = value; } - + bitField0_ |= 0x80000000; return this; } + /** + * optional .LeaveGameRequestMessage leaveGameRequestMessage = 32; + */ public Builder clearLeaveGameRequestMessage() { leaveGameRequestMessage_ = de.pokerth.protocol.ProtoBuf.LeaveGameRequestMessage.getDefaultInstance(); - + bitField0_ = (bitField0_ & ~0x80000000); return this; } - + // optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; private de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage invitePlayerToGameMessage_ = de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage.getDefaultInstance(); + /** + * optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; + */ public boolean hasInvitePlayerToGameMessage() { return ((bitField1_ & 0x00000001) == 0x00000001); } + /** + * optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; + */ public de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage getInvitePlayerToGameMessage() { return invitePlayerToGameMessage_; } + /** + * optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; + */ public Builder setInvitePlayerToGameMessage(de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage value) { if (value == null) { throw new NullPointerException(); } invitePlayerToGameMessage_ = value; - + bitField1_ |= 0x00000001; return this; } + /** + * optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; + */ public Builder setInvitePlayerToGameMessage( de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage.Builder builderForValue) { invitePlayerToGameMessage_ = builderForValue.build(); - + bitField1_ |= 0x00000001; return this; } + /** + * optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; + */ public Builder mergeInvitePlayerToGameMessage(de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage value) { if (((bitField1_ & 0x00000001) == 0x00000001) && invitePlayerToGameMessage_ != de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage.getDefaultInstance()) { @@ -45392,41 +57889,59 @@ public final class ProtoBuf { } else { invitePlayerToGameMessage_ = value; } - + bitField1_ |= 0x00000001; return this; } + /** + * optional .InvitePlayerToGameMessage invitePlayerToGameMessage = 33; + */ public Builder clearInvitePlayerToGameMessage() { invitePlayerToGameMessage_ = de.pokerth.protocol.ProtoBuf.InvitePlayerToGameMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00000001); return this; } - + // optional .InviteNotifyMessage inviteNotifyMessage = 34; private de.pokerth.protocol.ProtoBuf.InviteNotifyMessage inviteNotifyMessage_ = de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.getDefaultInstance(); + /** + * optional .InviteNotifyMessage inviteNotifyMessage = 34; + */ public boolean hasInviteNotifyMessage() { return ((bitField1_ & 0x00000002) == 0x00000002); } + /** + * optional .InviteNotifyMessage inviteNotifyMessage = 34; + */ public de.pokerth.protocol.ProtoBuf.InviteNotifyMessage getInviteNotifyMessage() { return inviteNotifyMessage_; } + /** + * optional .InviteNotifyMessage inviteNotifyMessage = 34; + */ public Builder setInviteNotifyMessage(de.pokerth.protocol.ProtoBuf.InviteNotifyMessage value) { if (value == null) { throw new NullPointerException(); } inviteNotifyMessage_ = value; - + bitField1_ |= 0x00000002; return this; } + /** + * optional .InviteNotifyMessage inviteNotifyMessage = 34; + */ public Builder setInviteNotifyMessage( de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.Builder builderForValue) { inviteNotifyMessage_ = builderForValue.build(); - + bitField1_ |= 0x00000002; return this; } + /** + * optional .InviteNotifyMessage inviteNotifyMessage = 34; + */ public Builder mergeInviteNotifyMessage(de.pokerth.protocol.ProtoBuf.InviteNotifyMessage value) { if (((bitField1_ & 0x00000002) == 0x00000002) && inviteNotifyMessage_ != de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.getDefaultInstance()) { @@ -45435,41 +57950,59 @@ public final class ProtoBuf { } else { inviteNotifyMessage_ = value; } - + bitField1_ |= 0x00000002; return this; } + /** + * optional .InviteNotifyMessage inviteNotifyMessage = 34; + */ public Builder clearInviteNotifyMessage() { inviteNotifyMessage_ = de.pokerth.protocol.ProtoBuf.InviteNotifyMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00000002); return this; } - + // optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; private de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage rejectGameInvitationMessage_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.getDefaultInstance(); + /** + * optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; + */ public boolean hasRejectGameInvitationMessage() { return ((bitField1_ & 0x00000004) == 0x00000004); } + /** + * optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; + */ public de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage getRejectGameInvitationMessage() { return rejectGameInvitationMessage_; } + /** + * optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; + */ public Builder setRejectGameInvitationMessage(de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage value) { if (value == null) { throw new NullPointerException(); } rejectGameInvitationMessage_ = value; - + bitField1_ |= 0x00000004; return this; } + /** + * optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; + */ public Builder setRejectGameInvitationMessage( de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.Builder builderForValue) { rejectGameInvitationMessage_ = builderForValue.build(); - + bitField1_ |= 0x00000004; return this; } + /** + * optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; + */ public Builder mergeRejectGameInvitationMessage(de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage value) { if (((bitField1_ & 0x00000004) == 0x00000004) && rejectGameInvitationMessage_ != de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.getDefaultInstance()) { @@ -45478,41 +58011,59 @@ public final class ProtoBuf { } else { rejectGameInvitationMessage_ = value; } - + bitField1_ |= 0x00000004; return this; } + /** + * optional .RejectGameInvitationMessage rejectGameInvitationMessage = 35; + */ public Builder clearRejectGameInvitationMessage() { rejectGameInvitationMessage_ = de.pokerth.protocol.ProtoBuf.RejectGameInvitationMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00000004); return this; } - + // optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; private de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage rejectInvNotifyMessage_ = de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.getDefaultInstance(); + /** + * optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; + */ public boolean hasRejectInvNotifyMessage() { return ((bitField1_ & 0x00000008) == 0x00000008); } + /** + * optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; + */ public de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage getRejectInvNotifyMessage() { return rejectInvNotifyMessage_; } + /** + * optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; + */ public Builder setRejectInvNotifyMessage(de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage value) { if (value == null) { throw new NullPointerException(); } rejectInvNotifyMessage_ = value; - + bitField1_ |= 0x00000008; return this; } + /** + * optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; + */ public Builder setRejectInvNotifyMessage( de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.Builder builderForValue) { rejectInvNotifyMessage_ = builderForValue.build(); - + bitField1_ |= 0x00000008; return this; } + /** + * optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; + */ public Builder mergeRejectInvNotifyMessage(de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage value) { if (((bitField1_ & 0x00000008) == 0x00000008) && rejectInvNotifyMessage_ != de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.getDefaultInstance()) { @@ -45521,41 +58072,59 @@ public final class ProtoBuf { } else { rejectInvNotifyMessage_ = value; } - + bitField1_ |= 0x00000008; return this; } + /** + * optional .RejectInvNotifyMessage rejectInvNotifyMessage = 36; + */ public Builder clearRejectInvNotifyMessage() { rejectInvNotifyMessage_ = de.pokerth.protocol.ProtoBuf.RejectInvNotifyMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00000008); return this; } - + // optional .StartEventMessage startEventMessage = 37; private de.pokerth.protocol.ProtoBuf.StartEventMessage startEventMessage_ = de.pokerth.protocol.ProtoBuf.StartEventMessage.getDefaultInstance(); + /** + * optional .StartEventMessage startEventMessage = 37; + */ public boolean hasStartEventMessage() { return ((bitField1_ & 0x00000010) == 0x00000010); } + /** + * optional .StartEventMessage startEventMessage = 37; + */ public de.pokerth.protocol.ProtoBuf.StartEventMessage getStartEventMessage() { return startEventMessage_; } + /** + * optional .StartEventMessage startEventMessage = 37; + */ public Builder setStartEventMessage(de.pokerth.protocol.ProtoBuf.StartEventMessage value) { if (value == null) { throw new NullPointerException(); } startEventMessage_ = value; - + bitField1_ |= 0x00000010; return this; } + /** + * optional .StartEventMessage startEventMessage = 37; + */ public Builder setStartEventMessage( de.pokerth.protocol.ProtoBuf.StartEventMessage.Builder builderForValue) { startEventMessage_ = builderForValue.build(); - + bitField1_ |= 0x00000010; return this; } + /** + * optional .StartEventMessage startEventMessage = 37; + */ public Builder mergeStartEventMessage(de.pokerth.protocol.ProtoBuf.StartEventMessage value) { if (((bitField1_ & 0x00000010) == 0x00000010) && startEventMessage_ != de.pokerth.protocol.ProtoBuf.StartEventMessage.getDefaultInstance()) { @@ -45564,41 +58133,59 @@ public final class ProtoBuf { } else { startEventMessage_ = value; } - + bitField1_ |= 0x00000010; return this; } + /** + * optional .StartEventMessage startEventMessage = 37; + */ public Builder clearStartEventMessage() { startEventMessage_ = de.pokerth.protocol.ProtoBuf.StartEventMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00000010); return this; } - + // optional .StartEventAckMessage startEventAckMessage = 38; private de.pokerth.protocol.ProtoBuf.StartEventAckMessage startEventAckMessage_ = de.pokerth.protocol.ProtoBuf.StartEventAckMessage.getDefaultInstance(); + /** + * optional .StartEventAckMessage startEventAckMessage = 38; + */ public boolean hasStartEventAckMessage() { return ((bitField1_ & 0x00000020) == 0x00000020); } + /** + * optional .StartEventAckMessage startEventAckMessage = 38; + */ public de.pokerth.protocol.ProtoBuf.StartEventAckMessage getStartEventAckMessage() { return startEventAckMessage_; } + /** + * optional .StartEventAckMessage startEventAckMessage = 38; + */ public Builder setStartEventAckMessage(de.pokerth.protocol.ProtoBuf.StartEventAckMessage value) { if (value == null) { throw new NullPointerException(); } startEventAckMessage_ = value; - + bitField1_ |= 0x00000020; return this; } + /** + * optional .StartEventAckMessage startEventAckMessage = 38; + */ public Builder setStartEventAckMessage( de.pokerth.protocol.ProtoBuf.StartEventAckMessage.Builder builderForValue) { startEventAckMessage_ = builderForValue.build(); - + bitField1_ |= 0x00000020; return this; } + /** + * optional .StartEventAckMessage startEventAckMessage = 38; + */ public Builder mergeStartEventAckMessage(de.pokerth.protocol.ProtoBuf.StartEventAckMessage value) { if (((bitField1_ & 0x00000020) == 0x00000020) && startEventAckMessage_ != de.pokerth.protocol.ProtoBuf.StartEventAckMessage.getDefaultInstance()) { @@ -45607,41 +58194,59 @@ public final class ProtoBuf { } else { startEventAckMessage_ = value; } - + bitField1_ |= 0x00000020; return this; } + /** + * optional .StartEventAckMessage startEventAckMessage = 38; + */ public Builder clearStartEventAckMessage() { startEventAckMessage_ = de.pokerth.protocol.ProtoBuf.StartEventAckMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00000020); return this; } - + // optional .GameStartInitialMessage gameStartInitialMessage = 39; private de.pokerth.protocol.ProtoBuf.GameStartInitialMessage gameStartInitialMessage_ = de.pokerth.protocol.ProtoBuf.GameStartInitialMessage.getDefaultInstance(); + /** + * optional .GameStartInitialMessage gameStartInitialMessage = 39; + */ public boolean hasGameStartInitialMessage() { return ((bitField1_ & 0x00000040) == 0x00000040); } + /** + * optional .GameStartInitialMessage gameStartInitialMessage = 39; + */ public de.pokerth.protocol.ProtoBuf.GameStartInitialMessage getGameStartInitialMessage() { return gameStartInitialMessage_; } + /** + * optional .GameStartInitialMessage gameStartInitialMessage = 39; + */ public Builder setGameStartInitialMessage(de.pokerth.protocol.ProtoBuf.GameStartInitialMessage value) { if (value == null) { throw new NullPointerException(); } gameStartInitialMessage_ = value; - + bitField1_ |= 0x00000040; return this; } + /** + * optional .GameStartInitialMessage gameStartInitialMessage = 39; + */ public Builder setGameStartInitialMessage( de.pokerth.protocol.ProtoBuf.GameStartInitialMessage.Builder builderForValue) { gameStartInitialMessage_ = builderForValue.build(); - + bitField1_ |= 0x00000040; return this; } + /** + * optional .GameStartInitialMessage gameStartInitialMessage = 39; + */ public Builder mergeGameStartInitialMessage(de.pokerth.protocol.ProtoBuf.GameStartInitialMessage value) { if (((bitField1_ & 0x00000040) == 0x00000040) && gameStartInitialMessage_ != de.pokerth.protocol.ProtoBuf.GameStartInitialMessage.getDefaultInstance()) { @@ -45650,41 +58255,59 @@ public final class ProtoBuf { } else { gameStartInitialMessage_ = value; } - + bitField1_ |= 0x00000040; return this; } + /** + * optional .GameStartInitialMessage gameStartInitialMessage = 39; + */ public Builder clearGameStartInitialMessage() { gameStartInitialMessage_ = de.pokerth.protocol.ProtoBuf.GameStartInitialMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00000040); return this; } - + // optional .GameStartRejoinMessage gameStartRejoinMessage = 40; private de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage gameStartRejoinMessage_ = de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.getDefaultInstance(); + /** + * optional .GameStartRejoinMessage gameStartRejoinMessage = 40; + */ public boolean hasGameStartRejoinMessage() { return ((bitField1_ & 0x00000080) == 0x00000080); } + /** + * optional .GameStartRejoinMessage gameStartRejoinMessage = 40; + */ public de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage getGameStartRejoinMessage() { return gameStartRejoinMessage_; } + /** + * optional .GameStartRejoinMessage gameStartRejoinMessage = 40; + */ public Builder setGameStartRejoinMessage(de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage value) { if (value == null) { throw new NullPointerException(); } gameStartRejoinMessage_ = value; - + bitField1_ |= 0x00000080; return this; } + /** + * optional .GameStartRejoinMessage gameStartRejoinMessage = 40; + */ public Builder setGameStartRejoinMessage( de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.Builder builderForValue) { gameStartRejoinMessage_ = builderForValue.build(); - + bitField1_ |= 0x00000080; return this; } + /** + * optional .GameStartRejoinMessage gameStartRejoinMessage = 40; + */ public Builder mergeGameStartRejoinMessage(de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage value) { if (((bitField1_ & 0x00000080) == 0x00000080) && gameStartRejoinMessage_ != de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.getDefaultInstance()) { @@ -45693,41 +58316,59 @@ public final class ProtoBuf { } else { gameStartRejoinMessage_ = value; } - + bitField1_ |= 0x00000080; return this; } + /** + * optional .GameStartRejoinMessage gameStartRejoinMessage = 40; + */ public Builder clearGameStartRejoinMessage() { gameStartRejoinMessage_ = de.pokerth.protocol.ProtoBuf.GameStartRejoinMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00000080); return this; } - + // optional .HandStartMessage handStartMessage = 41; private de.pokerth.protocol.ProtoBuf.HandStartMessage handStartMessage_ = de.pokerth.protocol.ProtoBuf.HandStartMessage.getDefaultInstance(); + /** + * optional .HandStartMessage handStartMessage = 41; + */ public boolean hasHandStartMessage() { return ((bitField1_ & 0x00000100) == 0x00000100); } + /** + * optional .HandStartMessage handStartMessage = 41; + */ public de.pokerth.protocol.ProtoBuf.HandStartMessage getHandStartMessage() { return handStartMessage_; } + /** + * optional .HandStartMessage handStartMessage = 41; + */ public Builder setHandStartMessage(de.pokerth.protocol.ProtoBuf.HandStartMessage value) { if (value == null) { throw new NullPointerException(); } handStartMessage_ = value; - + bitField1_ |= 0x00000100; return this; } + /** + * optional .HandStartMessage handStartMessage = 41; + */ public Builder setHandStartMessage( de.pokerth.protocol.ProtoBuf.HandStartMessage.Builder builderForValue) { handStartMessage_ = builderForValue.build(); - + bitField1_ |= 0x00000100; return this; } + /** + * optional .HandStartMessage handStartMessage = 41; + */ public Builder mergeHandStartMessage(de.pokerth.protocol.ProtoBuf.HandStartMessage value) { if (((bitField1_ & 0x00000100) == 0x00000100) && handStartMessage_ != de.pokerth.protocol.ProtoBuf.HandStartMessage.getDefaultInstance()) { @@ -45736,41 +58377,59 @@ public final class ProtoBuf { } else { handStartMessage_ = value; } - + bitField1_ |= 0x00000100; return this; } + /** + * optional .HandStartMessage handStartMessage = 41; + */ public Builder clearHandStartMessage() { handStartMessage_ = de.pokerth.protocol.ProtoBuf.HandStartMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00000100); return this; } - + // optional .PlayersTurnMessage playersTurnMessage = 42; private de.pokerth.protocol.ProtoBuf.PlayersTurnMessage playersTurnMessage_ = de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.getDefaultInstance(); + /** + * optional .PlayersTurnMessage playersTurnMessage = 42; + */ public boolean hasPlayersTurnMessage() { return ((bitField1_ & 0x00000200) == 0x00000200); } + /** + * optional .PlayersTurnMessage playersTurnMessage = 42; + */ public de.pokerth.protocol.ProtoBuf.PlayersTurnMessage getPlayersTurnMessage() { return playersTurnMessage_; } + /** + * optional .PlayersTurnMessage playersTurnMessage = 42; + */ public Builder setPlayersTurnMessage(de.pokerth.protocol.ProtoBuf.PlayersTurnMessage value) { if (value == null) { throw new NullPointerException(); } playersTurnMessage_ = value; - + bitField1_ |= 0x00000200; return this; } + /** + * optional .PlayersTurnMessage playersTurnMessage = 42; + */ public Builder setPlayersTurnMessage( de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.Builder builderForValue) { playersTurnMessage_ = builderForValue.build(); - + bitField1_ |= 0x00000200; return this; } + /** + * optional .PlayersTurnMessage playersTurnMessage = 42; + */ public Builder mergePlayersTurnMessage(de.pokerth.protocol.ProtoBuf.PlayersTurnMessage value) { if (((bitField1_ & 0x00000200) == 0x00000200) && playersTurnMessage_ != de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.getDefaultInstance()) { @@ -45779,41 +58438,59 @@ public final class ProtoBuf { } else { playersTurnMessage_ = value; } - + bitField1_ |= 0x00000200; return this; } + /** + * optional .PlayersTurnMessage playersTurnMessage = 42; + */ public Builder clearPlayersTurnMessage() { playersTurnMessage_ = de.pokerth.protocol.ProtoBuf.PlayersTurnMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00000200); return this; } - + // optional .MyActionRequestMessage myActionRequestMessage = 43; private de.pokerth.protocol.ProtoBuf.MyActionRequestMessage myActionRequestMessage_ = de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.getDefaultInstance(); + /** + * optional .MyActionRequestMessage myActionRequestMessage = 43; + */ public boolean hasMyActionRequestMessage() { return ((bitField1_ & 0x00000400) == 0x00000400); } + /** + * optional .MyActionRequestMessage myActionRequestMessage = 43; + */ public de.pokerth.protocol.ProtoBuf.MyActionRequestMessage getMyActionRequestMessage() { return myActionRequestMessage_; } + /** + * optional .MyActionRequestMessage myActionRequestMessage = 43; + */ public Builder setMyActionRequestMessage(de.pokerth.protocol.ProtoBuf.MyActionRequestMessage value) { if (value == null) { throw new NullPointerException(); } myActionRequestMessage_ = value; - + bitField1_ |= 0x00000400; return this; } + /** + * optional .MyActionRequestMessage myActionRequestMessage = 43; + */ public Builder setMyActionRequestMessage( de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.Builder builderForValue) { myActionRequestMessage_ = builderForValue.build(); - + bitField1_ |= 0x00000400; return this; } + /** + * optional .MyActionRequestMessage myActionRequestMessage = 43; + */ public Builder mergeMyActionRequestMessage(de.pokerth.protocol.ProtoBuf.MyActionRequestMessage value) { if (((bitField1_ & 0x00000400) == 0x00000400) && myActionRequestMessage_ != de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.getDefaultInstance()) { @@ -45822,41 +58499,59 @@ public final class ProtoBuf { } else { myActionRequestMessage_ = value; } - + bitField1_ |= 0x00000400; return this; } + /** + * optional .MyActionRequestMessage myActionRequestMessage = 43; + */ public Builder clearMyActionRequestMessage() { myActionRequestMessage_ = de.pokerth.protocol.ProtoBuf.MyActionRequestMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00000400); return this; } - + // optional .YourActionRejectedMessage yourActionRejectedMessage = 44; private de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage yourActionRejectedMessage_ = de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.getDefaultInstance(); + /** + * optional .YourActionRejectedMessage yourActionRejectedMessage = 44; + */ public boolean hasYourActionRejectedMessage() { return ((bitField1_ & 0x00000800) == 0x00000800); } + /** + * optional .YourActionRejectedMessage yourActionRejectedMessage = 44; + */ public de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage getYourActionRejectedMessage() { return yourActionRejectedMessage_; } + /** + * optional .YourActionRejectedMessage yourActionRejectedMessage = 44; + */ public Builder setYourActionRejectedMessage(de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage value) { if (value == null) { throw new NullPointerException(); } yourActionRejectedMessage_ = value; - + bitField1_ |= 0x00000800; return this; } + /** + * optional .YourActionRejectedMessage yourActionRejectedMessage = 44; + */ public Builder setYourActionRejectedMessage( de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.Builder builderForValue) { yourActionRejectedMessage_ = builderForValue.build(); - + bitField1_ |= 0x00000800; return this; } + /** + * optional .YourActionRejectedMessage yourActionRejectedMessage = 44; + */ public Builder mergeYourActionRejectedMessage(de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage value) { if (((bitField1_ & 0x00000800) == 0x00000800) && yourActionRejectedMessage_ != de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.getDefaultInstance()) { @@ -45865,41 +58560,59 @@ public final class ProtoBuf { } else { yourActionRejectedMessage_ = value; } - + bitField1_ |= 0x00000800; return this; } + /** + * optional .YourActionRejectedMessage yourActionRejectedMessage = 44; + */ public Builder clearYourActionRejectedMessage() { yourActionRejectedMessage_ = de.pokerth.protocol.ProtoBuf.YourActionRejectedMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00000800); return this; } - + // optional .PlayersActionDoneMessage playersActionDoneMessage = 45; private de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage playersActionDoneMessage_ = de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.getDefaultInstance(); + /** + * optional .PlayersActionDoneMessage playersActionDoneMessage = 45; + */ public boolean hasPlayersActionDoneMessage() { return ((bitField1_ & 0x00001000) == 0x00001000); } + /** + * optional .PlayersActionDoneMessage playersActionDoneMessage = 45; + */ public de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage getPlayersActionDoneMessage() { return playersActionDoneMessage_; } + /** + * optional .PlayersActionDoneMessage playersActionDoneMessage = 45; + */ public Builder setPlayersActionDoneMessage(de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage value) { if (value == null) { throw new NullPointerException(); } playersActionDoneMessage_ = value; - + bitField1_ |= 0x00001000; return this; } + /** + * optional .PlayersActionDoneMessage playersActionDoneMessage = 45; + */ public Builder setPlayersActionDoneMessage( de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.Builder builderForValue) { playersActionDoneMessage_ = builderForValue.build(); - + bitField1_ |= 0x00001000; return this; } + /** + * optional .PlayersActionDoneMessage playersActionDoneMessage = 45; + */ public Builder mergePlayersActionDoneMessage(de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage value) { if (((bitField1_ & 0x00001000) == 0x00001000) && playersActionDoneMessage_ != de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.getDefaultInstance()) { @@ -45908,41 +58621,59 @@ public final class ProtoBuf { } else { playersActionDoneMessage_ = value; } - + bitField1_ |= 0x00001000; return this; } + /** + * optional .PlayersActionDoneMessage playersActionDoneMessage = 45; + */ public Builder clearPlayersActionDoneMessage() { playersActionDoneMessage_ = de.pokerth.protocol.ProtoBuf.PlayersActionDoneMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00001000); return this; } - + // optional .DealFlopCardsMessage dealFlopCardsMessage = 46; private de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage dealFlopCardsMessage_ = de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.getDefaultInstance(); + /** + * optional .DealFlopCardsMessage dealFlopCardsMessage = 46; + */ public boolean hasDealFlopCardsMessage() { return ((bitField1_ & 0x00002000) == 0x00002000); } + /** + * optional .DealFlopCardsMessage dealFlopCardsMessage = 46; + */ public de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage getDealFlopCardsMessage() { return dealFlopCardsMessage_; } + /** + * optional .DealFlopCardsMessage dealFlopCardsMessage = 46; + */ public Builder setDealFlopCardsMessage(de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage value) { if (value == null) { throw new NullPointerException(); } dealFlopCardsMessage_ = value; - + bitField1_ |= 0x00002000; return this; } + /** + * optional .DealFlopCardsMessage dealFlopCardsMessage = 46; + */ public Builder setDealFlopCardsMessage( de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.Builder builderForValue) { dealFlopCardsMessage_ = builderForValue.build(); - + bitField1_ |= 0x00002000; return this; } + /** + * optional .DealFlopCardsMessage dealFlopCardsMessage = 46; + */ public Builder mergeDealFlopCardsMessage(de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage value) { if (((bitField1_ & 0x00002000) == 0x00002000) && dealFlopCardsMessage_ != de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.getDefaultInstance()) { @@ -45951,41 +58682,59 @@ public final class ProtoBuf { } else { dealFlopCardsMessage_ = value; } - + bitField1_ |= 0x00002000; return this; } + /** + * optional .DealFlopCardsMessage dealFlopCardsMessage = 46; + */ public Builder clearDealFlopCardsMessage() { dealFlopCardsMessage_ = de.pokerth.protocol.ProtoBuf.DealFlopCardsMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00002000); return this; } - + // optional .DealTurnCardMessage dealTurnCardMessage = 47; private de.pokerth.protocol.ProtoBuf.DealTurnCardMessage dealTurnCardMessage_ = de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.getDefaultInstance(); + /** + * optional .DealTurnCardMessage dealTurnCardMessage = 47; + */ public boolean hasDealTurnCardMessage() { return ((bitField1_ & 0x00004000) == 0x00004000); } + /** + * optional .DealTurnCardMessage dealTurnCardMessage = 47; + */ public de.pokerth.protocol.ProtoBuf.DealTurnCardMessage getDealTurnCardMessage() { return dealTurnCardMessage_; } + /** + * optional .DealTurnCardMessage dealTurnCardMessage = 47; + */ public Builder setDealTurnCardMessage(de.pokerth.protocol.ProtoBuf.DealTurnCardMessage value) { if (value == null) { throw new NullPointerException(); } dealTurnCardMessage_ = value; - + bitField1_ |= 0x00004000; return this; } + /** + * optional .DealTurnCardMessage dealTurnCardMessage = 47; + */ public Builder setDealTurnCardMessage( de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.Builder builderForValue) { dealTurnCardMessage_ = builderForValue.build(); - + bitField1_ |= 0x00004000; return this; } + /** + * optional .DealTurnCardMessage dealTurnCardMessage = 47; + */ public Builder mergeDealTurnCardMessage(de.pokerth.protocol.ProtoBuf.DealTurnCardMessage value) { if (((bitField1_ & 0x00004000) == 0x00004000) && dealTurnCardMessage_ != de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.getDefaultInstance()) { @@ -45994,41 +58743,59 @@ public final class ProtoBuf { } else { dealTurnCardMessage_ = value; } - + bitField1_ |= 0x00004000; return this; } + /** + * optional .DealTurnCardMessage dealTurnCardMessage = 47; + */ public Builder clearDealTurnCardMessage() { dealTurnCardMessage_ = de.pokerth.protocol.ProtoBuf.DealTurnCardMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00004000); return this; } - + // optional .DealRiverCardMessage dealRiverCardMessage = 48; private de.pokerth.protocol.ProtoBuf.DealRiverCardMessage dealRiverCardMessage_ = de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.getDefaultInstance(); + /** + * optional .DealRiverCardMessage dealRiverCardMessage = 48; + */ public boolean hasDealRiverCardMessage() { return ((bitField1_ & 0x00008000) == 0x00008000); } + /** + * optional .DealRiverCardMessage dealRiverCardMessage = 48; + */ public de.pokerth.protocol.ProtoBuf.DealRiverCardMessage getDealRiverCardMessage() { return dealRiverCardMessage_; } + /** + * optional .DealRiverCardMessage dealRiverCardMessage = 48; + */ public Builder setDealRiverCardMessage(de.pokerth.protocol.ProtoBuf.DealRiverCardMessage value) { if (value == null) { throw new NullPointerException(); } dealRiverCardMessage_ = value; - + bitField1_ |= 0x00008000; return this; } + /** + * optional .DealRiverCardMessage dealRiverCardMessage = 48; + */ public Builder setDealRiverCardMessage( de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.Builder builderForValue) { dealRiverCardMessage_ = builderForValue.build(); - + bitField1_ |= 0x00008000; return this; } + /** + * optional .DealRiverCardMessage dealRiverCardMessage = 48; + */ public Builder mergeDealRiverCardMessage(de.pokerth.protocol.ProtoBuf.DealRiverCardMessage value) { if (((bitField1_ & 0x00008000) == 0x00008000) && dealRiverCardMessage_ != de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.getDefaultInstance()) { @@ -46037,41 +58804,59 @@ public final class ProtoBuf { } else { dealRiverCardMessage_ = value; } - + bitField1_ |= 0x00008000; return this; } + /** + * optional .DealRiverCardMessage dealRiverCardMessage = 48; + */ public Builder clearDealRiverCardMessage() { dealRiverCardMessage_ = de.pokerth.protocol.ProtoBuf.DealRiverCardMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00008000); return this; } - + // optional .AllInShowCardsMessage allInShowCardsMessage = 49; private de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage allInShowCardsMessage_ = de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.getDefaultInstance(); + /** + * optional .AllInShowCardsMessage allInShowCardsMessage = 49; + */ public boolean hasAllInShowCardsMessage() { return ((bitField1_ & 0x00010000) == 0x00010000); } + /** + * optional .AllInShowCardsMessage allInShowCardsMessage = 49; + */ public de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage getAllInShowCardsMessage() { return allInShowCardsMessage_; } + /** + * optional .AllInShowCardsMessage allInShowCardsMessage = 49; + */ public Builder setAllInShowCardsMessage(de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage value) { if (value == null) { throw new NullPointerException(); } allInShowCardsMessage_ = value; - + bitField1_ |= 0x00010000; return this; } + /** + * optional .AllInShowCardsMessage allInShowCardsMessage = 49; + */ public Builder setAllInShowCardsMessage( de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.Builder builderForValue) { allInShowCardsMessage_ = builderForValue.build(); - + bitField1_ |= 0x00010000; return this; } + /** + * optional .AllInShowCardsMessage allInShowCardsMessage = 49; + */ public Builder mergeAllInShowCardsMessage(de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage value) { if (((bitField1_ & 0x00010000) == 0x00010000) && allInShowCardsMessage_ != de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.getDefaultInstance()) { @@ -46080,41 +58865,59 @@ public final class ProtoBuf { } else { allInShowCardsMessage_ = value; } - + bitField1_ |= 0x00010000; return this; } + /** + * optional .AllInShowCardsMessage allInShowCardsMessage = 49; + */ public Builder clearAllInShowCardsMessage() { allInShowCardsMessage_ = de.pokerth.protocol.ProtoBuf.AllInShowCardsMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00010000); return this; } - + // optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; private de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage endOfHandShowCardsMessage_ = de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage.getDefaultInstance(); + /** + * optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; + */ public boolean hasEndOfHandShowCardsMessage() { return ((bitField1_ & 0x00020000) == 0x00020000); } + /** + * optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; + */ public de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage getEndOfHandShowCardsMessage() { return endOfHandShowCardsMessage_; } + /** + * optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; + */ public Builder setEndOfHandShowCardsMessage(de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage value) { if (value == null) { throw new NullPointerException(); } endOfHandShowCardsMessage_ = value; - + bitField1_ |= 0x00020000; return this; } + /** + * optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; + */ public Builder setEndOfHandShowCardsMessage( de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage.Builder builderForValue) { endOfHandShowCardsMessage_ = builderForValue.build(); - + bitField1_ |= 0x00020000; return this; } + /** + * optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; + */ public Builder mergeEndOfHandShowCardsMessage(de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage value) { if (((bitField1_ & 0x00020000) == 0x00020000) && endOfHandShowCardsMessage_ != de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage.getDefaultInstance()) { @@ -46123,41 +58926,59 @@ public final class ProtoBuf { } else { endOfHandShowCardsMessage_ = value; } - + bitField1_ |= 0x00020000; return this; } + /** + * optional .EndOfHandShowCardsMessage endOfHandShowCardsMessage = 50; + */ public Builder clearEndOfHandShowCardsMessage() { endOfHandShowCardsMessage_ = de.pokerth.protocol.ProtoBuf.EndOfHandShowCardsMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00020000); return this; } - + // optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; private de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage endOfHandHideCardsMessage_ = de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.getDefaultInstance(); + /** + * optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; + */ public boolean hasEndOfHandHideCardsMessage() { return ((bitField1_ & 0x00040000) == 0x00040000); } + /** + * optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; + */ public de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage getEndOfHandHideCardsMessage() { return endOfHandHideCardsMessage_; } + /** + * optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; + */ public Builder setEndOfHandHideCardsMessage(de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage value) { if (value == null) { throw new NullPointerException(); } endOfHandHideCardsMessage_ = value; - + bitField1_ |= 0x00040000; return this; } + /** + * optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; + */ public Builder setEndOfHandHideCardsMessage( de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.Builder builderForValue) { endOfHandHideCardsMessage_ = builderForValue.build(); - + bitField1_ |= 0x00040000; return this; } + /** + * optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; + */ public Builder mergeEndOfHandHideCardsMessage(de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage value) { if (((bitField1_ & 0x00040000) == 0x00040000) && endOfHandHideCardsMessage_ != de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.getDefaultInstance()) { @@ -46166,41 +58987,59 @@ public final class ProtoBuf { } else { endOfHandHideCardsMessage_ = value; } - + bitField1_ |= 0x00040000; return this; } + /** + * optional .EndOfHandHideCardsMessage endOfHandHideCardsMessage = 51; + */ public Builder clearEndOfHandHideCardsMessage() { endOfHandHideCardsMessage_ = de.pokerth.protocol.ProtoBuf.EndOfHandHideCardsMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00040000); return this; } - + // optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; private de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage showMyCardsRequestMessage_ = de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage.getDefaultInstance(); + /** + * optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; + */ public boolean hasShowMyCardsRequestMessage() { return ((bitField1_ & 0x00080000) == 0x00080000); } + /** + * optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; + */ public de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage getShowMyCardsRequestMessage() { return showMyCardsRequestMessage_; } + /** + * optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; + */ public Builder setShowMyCardsRequestMessage(de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage value) { if (value == null) { throw new NullPointerException(); } showMyCardsRequestMessage_ = value; - + bitField1_ |= 0x00080000; return this; } + /** + * optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; + */ public Builder setShowMyCardsRequestMessage( de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage.Builder builderForValue) { showMyCardsRequestMessage_ = builderForValue.build(); - + bitField1_ |= 0x00080000; return this; } + /** + * optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; + */ public Builder mergeShowMyCardsRequestMessage(de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage value) { if (((bitField1_ & 0x00080000) == 0x00080000) && showMyCardsRequestMessage_ != de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage.getDefaultInstance()) { @@ -46209,41 +59048,59 @@ public final class ProtoBuf { } else { showMyCardsRequestMessage_ = value; } - + bitField1_ |= 0x00080000; return this; } + /** + * optional .ShowMyCardsRequestMessage showMyCardsRequestMessage = 52; + */ public Builder clearShowMyCardsRequestMessage() { showMyCardsRequestMessage_ = de.pokerth.protocol.ProtoBuf.ShowMyCardsRequestMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00080000); return this; } - + // optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; private de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage afterHandShowCardsMessage_ = de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage.getDefaultInstance(); + /** + * optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; + */ public boolean hasAfterHandShowCardsMessage() { return ((bitField1_ & 0x00100000) == 0x00100000); } + /** + * optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; + */ public de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage getAfterHandShowCardsMessage() { return afterHandShowCardsMessage_; } + /** + * optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; + */ public Builder setAfterHandShowCardsMessage(de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage value) { if (value == null) { throw new NullPointerException(); } afterHandShowCardsMessage_ = value; - + bitField1_ |= 0x00100000; return this; } + /** + * optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; + */ public Builder setAfterHandShowCardsMessage( de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage.Builder builderForValue) { afterHandShowCardsMessage_ = builderForValue.build(); - + bitField1_ |= 0x00100000; return this; } + /** + * optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; + */ public Builder mergeAfterHandShowCardsMessage(de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage value) { if (((bitField1_ & 0x00100000) == 0x00100000) && afterHandShowCardsMessage_ != de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage.getDefaultInstance()) { @@ -46252,41 +59109,59 @@ public final class ProtoBuf { } else { afterHandShowCardsMessage_ = value; } - + bitField1_ |= 0x00100000; return this; } + /** + * optional .AfterHandShowCardsMessage afterHandShowCardsMessage = 53; + */ public Builder clearAfterHandShowCardsMessage() { afterHandShowCardsMessage_ = de.pokerth.protocol.ProtoBuf.AfterHandShowCardsMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00100000); return this; } - + // optional .EndOfGameMessage endOfGameMessage = 54; private de.pokerth.protocol.ProtoBuf.EndOfGameMessage endOfGameMessage_ = de.pokerth.protocol.ProtoBuf.EndOfGameMessage.getDefaultInstance(); + /** + * optional .EndOfGameMessage endOfGameMessage = 54; + */ public boolean hasEndOfGameMessage() { return ((bitField1_ & 0x00200000) == 0x00200000); } + /** + * optional .EndOfGameMessage endOfGameMessage = 54; + */ public de.pokerth.protocol.ProtoBuf.EndOfGameMessage getEndOfGameMessage() { return endOfGameMessage_; } + /** + * optional .EndOfGameMessage endOfGameMessage = 54; + */ public Builder setEndOfGameMessage(de.pokerth.protocol.ProtoBuf.EndOfGameMessage value) { if (value == null) { throw new NullPointerException(); } endOfGameMessage_ = value; - + bitField1_ |= 0x00200000; return this; } + /** + * optional .EndOfGameMessage endOfGameMessage = 54; + */ public Builder setEndOfGameMessage( de.pokerth.protocol.ProtoBuf.EndOfGameMessage.Builder builderForValue) { endOfGameMessage_ = builderForValue.build(); - + bitField1_ |= 0x00200000; return this; } + /** + * optional .EndOfGameMessage endOfGameMessage = 54; + */ public Builder mergeEndOfGameMessage(de.pokerth.protocol.ProtoBuf.EndOfGameMessage value) { if (((bitField1_ & 0x00200000) == 0x00200000) && endOfGameMessage_ != de.pokerth.protocol.ProtoBuf.EndOfGameMessage.getDefaultInstance()) { @@ -46295,41 +59170,59 @@ public final class ProtoBuf { } else { endOfGameMessage_ = value; } - + bitField1_ |= 0x00200000; return this; } + /** + * optional .EndOfGameMessage endOfGameMessage = 54; + */ public Builder clearEndOfGameMessage() { endOfGameMessage_ = de.pokerth.protocol.ProtoBuf.EndOfGameMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00200000); return this; } - + // optional .PlayerIdChangedMessage playerIdChangedMessage = 55; private de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage playerIdChangedMessage_ = de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.getDefaultInstance(); + /** + * optional .PlayerIdChangedMessage playerIdChangedMessage = 55; + */ public boolean hasPlayerIdChangedMessage() { return ((bitField1_ & 0x00400000) == 0x00400000); } + /** + * optional .PlayerIdChangedMessage playerIdChangedMessage = 55; + */ public de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage getPlayerIdChangedMessage() { return playerIdChangedMessage_; } + /** + * optional .PlayerIdChangedMessage playerIdChangedMessage = 55; + */ public Builder setPlayerIdChangedMessage(de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage value) { if (value == null) { throw new NullPointerException(); } playerIdChangedMessage_ = value; - + bitField1_ |= 0x00400000; return this; } + /** + * optional .PlayerIdChangedMessage playerIdChangedMessage = 55; + */ public Builder setPlayerIdChangedMessage( de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.Builder builderForValue) { playerIdChangedMessage_ = builderForValue.build(); - + bitField1_ |= 0x00400000; return this; } + /** + * optional .PlayerIdChangedMessage playerIdChangedMessage = 55; + */ public Builder mergePlayerIdChangedMessage(de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage value) { if (((bitField1_ & 0x00400000) == 0x00400000) && playerIdChangedMessage_ != de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.getDefaultInstance()) { @@ -46338,41 +59231,59 @@ public final class ProtoBuf { } else { playerIdChangedMessage_ = value; } - + bitField1_ |= 0x00400000; return this; } + /** + * optional .PlayerIdChangedMessage playerIdChangedMessage = 55; + */ public Builder clearPlayerIdChangedMessage() { playerIdChangedMessage_ = de.pokerth.protocol.ProtoBuf.PlayerIdChangedMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00400000); return this; } - + // optional .AskKickPlayerMessage askKickPlayerMessage = 56; private de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage askKickPlayerMessage_ = de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.getDefaultInstance(); + /** + * optional .AskKickPlayerMessage askKickPlayerMessage = 56; + */ public boolean hasAskKickPlayerMessage() { return ((bitField1_ & 0x00800000) == 0x00800000); } + /** + * optional .AskKickPlayerMessage askKickPlayerMessage = 56; + */ public de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage getAskKickPlayerMessage() { return askKickPlayerMessage_; } + /** + * optional .AskKickPlayerMessage askKickPlayerMessage = 56; + */ public Builder setAskKickPlayerMessage(de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage value) { if (value == null) { throw new NullPointerException(); } askKickPlayerMessage_ = value; - + bitField1_ |= 0x00800000; return this; } + /** + * optional .AskKickPlayerMessage askKickPlayerMessage = 56; + */ public Builder setAskKickPlayerMessage( de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.Builder builderForValue) { askKickPlayerMessage_ = builderForValue.build(); - + bitField1_ |= 0x00800000; return this; } + /** + * optional .AskKickPlayerMessage askKickPlayerMessage = 56; + */ public Builder mergeAskKickPlayerMessage(de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage value) { if (((bitField1_ & 0x00800000) == 0x00800000) && askKickPlayerMessage_ != de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.getDefaultInstance()) { @@ -46381,41 +59292,59 @@ public final class ProtoBuf { } else { askKickPlayerMessage_ = value; } - + bitField1_ |= 0x00800000; return this; } + /** + * optional .AskKickPlayerMessage askKickPlayerMessage = 56; + */ public Builder clearAskKickPlayerMessage() { askKickPlayerMessage_ = de.pokerth.protocol.ProtoBuf.AskKickPlayerMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x00800000); return this; } - + // optional .AskKickDeniedMessage askKickDeniedMessage = 57; private de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage askKickDeniedMessage_ = de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.getDefaultInstance(); + /** + * optional .AskKickDeniedMessage askKickDeniedMessage = 57; + */ public boolean hasAskKickDeniedMessage() { return ((bitField1_ & 0x01000000) == 0x01000000); } + /** + * optional .AskKickDeniedMessage askKickDeniedMessage = 57; + */ public de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage getAskKickDeniedMessage() { return askKickDeniedMessage_; } + /** + * optional .AskKickDeniedMessage askKickDeniedMessage = 57; + */ public Builder setAskKickDeniedMessage(de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage value) { if (value == null) { throw new NullPointerException(); } askKickDeniedMessage_ = value; - + bitField1_ |= 0x01000000; return this; } + /** + * optional .AskKickDeniedMessage askKickDeniedMessage = 57; + */ public Builder setAskKickDeniedMessage( de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.Builder builderForValue) { askKickDeniedMessage_ = builderForValue.build(); - + bitField1_ |= 0x01000000; return this; } + /** + * optional .AskKickDeniedMessage askKickDeniedMessage = 57; + */ public Builder mergeAskKickDeniedMessage(de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage value) { if (((bitField1_ & 0x01000000) == 0x01000000) && askKickDeniedMessage_ != de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.getDefaultInstance()) { @@ -46424,41 +59353,59 @@ public final class ProtoBuf { } else { askKickDeniedMessage_ = value; } - + bitField1_ |= 0x01000000; return this; } + /** + * optional .AskKickDeniedMessage askKickDeniedMessage = 57; + */ public Builder clearAskKickDeniedMessage() { askKickDeniedMessage_ = de.pokerth.protocol.ProtoBuf.AskKickDeniedMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x01000000); return this; } - + // optional .StartKickPetitionMessage startKickPetitionMessage = 58; private de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage startKickPetitionMessage_ = de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.getDefaultInstance(); + /** + * optional .StartKickPetitionMessage startKickPetitionMessage = 58; + */ public boolean hasStartKickPetitionMessage() { return ((bitField1_ & 0x02000000) == 0x02000000); } + /** + * optional .StartKickPetitionMessage startKickPetitionMessage = 58; + */ public de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage getStartKickPetitionMessage() { return startKickPetitionMessage_; } + /** + * optional .StartKickPetitionMessage startKickPetitionMessage = 58; + */ public Builder setStartKickPetitionMessage(de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage value) { if (value == null) { throw new NullPointerException(); } startKickPetitionMessage_ = value; - + bitField1_ |= 0x02000000; return this; } + /** + * optional .StartKickPetitionMessage startKickPetitionMessage = 58; + */ public Builder setStartKickPetitionMessage( de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.Builder builderForValue) { startKickPetitionMessage_ = builderForValue.build(); - + bitField1_ |= 0x02000000; return this; } + /** + * optional .StartKickPetitionMessage startKickPetitionMessage = 58; + */ public Builder mergeStartKickPetitionMessage(de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage value) { if (((bitField1_ & 0x02000000) == 0x02000000) && startKickPetitionMessage_ != de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.getDefaultInstance()) { @@ -46467,41 +59414,59 @@ public final class ProtoBuf { } else { startKickPetitionMessage_ = value; } - + bitField1_ |= 0x02000000; return this; } + /** + * optional .StartKickPetitionMessage startKickPetitionMessage = 58; + */ public Builder clearStartKickPetitionMessage() { startKickPetitionMessage_ = de.pokerth.protocol.ProtoBuf.StartKickPetitionMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x02000000); return this; } - + // optional .VoteKickRequestMessage voteKickRequestMessage = 59; private de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage voteKickRequestMessage_ = de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.getDefaultInstance(); + /** + * optional .VoteKickRequestMessage voteKickRequestMessage = 59; + */ public boolean hasVoteKickRequestMessage() { return ((bitField1_ & 0x04000000) == 0x04000000); } + /** + * optional .VoteKickRequestMessage voteKickRequestMessage = 59; + */ public de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage getVoteKickRequestMessage() { return voteKickRequestMessage_; } + /** + * optional .VoteKickRequestMessage voteKickRequestMessage = 59; + */ public Builder setVoteKickRequestMessage(de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage value) { if (value == null) { throw new NullPointerException(); } voteKickRequestMessage_ = value; - + bitField1_ |= 0x04000000; return this; } + /** + * optional .VoteKickRequestMessage voteKickRequestMessage = 59; + */ public Builder setVoteKickRequestMessage( de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.Builder builderForValue) { voteKickRequestMessage_ = builderForValue.build(); - + bitField1_ |= 0x04000000; return this; } + /** + * optional .VoteKickRequestMessage voteKickRequestMessage = 59; + */ public Builder mergeVoteKickRequestMessage(de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage value) { if (((bitField1_ & 0x04000000) == 0x04000000) && voteKickRequestMessage_ != de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.getDefaultInstance()) { @@ -46510,41 +59475,59 @@ public final class ProtoBuf { } else { voteKickRequestMessage_ = value; } - + bitField1_ |= 0x04000000; return this; } + /** + * optional .VoteKickRequestMessage voteKickRequestMessage = 59; + */ public Builder clearVoteKickRequestMessage() { voteKickRequestMessage_ = de.pokerth.protocol.ProtoBuf.VoteKickRequestMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x04000000); return this; } - + // optional .VoteKickReplyMessage voteKickReplyMessage = 60; private de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage voteKickReplyMessage_ = de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.getDefaultInstance(); + /** + * optional .VoteKickReplyMessage voteKickReplyMessage = 60; + */ public boolean hasVoteKickReplyMessage() { return ((bitField1_ & 0x08000000) == 0x08000000); } + /** + * optional .VoteKickReplyMessage voteKickReplyMessage = 60; + */ public de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage getVoteKickReplyMessage() { return voteKickReplyMessage_; } + /** + * optional .VoteKickReplyMessage voteKickReplyMessage = 60; + */ public Builder setVoteKickReplyMessage(de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage value) { if (value == null) { throw new NullPointerException(); } voteKickReplyMessage_ = value; - + bitField1_ |= 0x08000000; return this; } + /** + * optional .VoteKickReplyMessage voteKickReplyMessage = 60; + */ public Builder setVoteKickReplyMessage( de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.Builder builderForValue) { voteKickReplyMessage_ = builderForValue.build(); - + bitField1_ |= 0x08000000; return this; } + /** + * optional .VoteKickReplyMessage voteKickReplyMessage = 60; + */ public Builder mergeVoteKickReplyMessage(de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage value) { if (((bitField1_ & 0x08000000) == 0x08000000) && voteKickReplyMessage_ != de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.getDefaultInstance()) { @@ -46553,41 +59536,59 @@ public final class ProtoBuf { } else { voteKickReplyMessage_ = value; } - + bitField1_ |= 0x08000000; return this; } + /** + * optional .VoteKickReplyMessage voteKickReplyMessage = 60; + */ public Builder clearVoteKickReplyMessage() { voteKickReplyMessage_ = de.pokerth.protocol.ProtoBuf.VoteKickReplyMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x08000000); return this; } - + // optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; private de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage kickPetitionUpdateMessage_ = de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.getDefaultInstance(); + /** + * optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; + */ public boolean hasKickPetitionUpdateMessage() { return ((bitField1_ & 0x10000000) == 0x10000000); } + /** + * optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; + */ public de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage getKickPetitionUpdateMessage() { return kickPetitionUpdateMessage_; } + /** + * optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; + */ public Builder setKickPetitionUpdateMessage(de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage value) { if (value == null) { throw new NullPointerException(); } kickPetitionUpdateMessage_ = value; - + bitField1_ |= 0x10000000; return this; } + /** + * optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; + */ public Builder setKickPetitionUpdateMessage( de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.Builder builderForValue) { kickPetitionUpdateMessage_ = builderForValue.build(); - + bitField1_ |= 0x10000000; return this; } + /** + * optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; + */ public Builder mergeKickPetitionUpdateMessage(de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage value) { if (((bitField1_ & 0x10000000) == 0x10000000) && kickPetitionUpdateMessage_ != de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.getDefaultInstance()) { @@ -46596,41 +59597,59 @@ public final class ProtoBuf { } else { kickPetitionUpdateMessage_ = value; } - + bitField1_ |= 0x10000000; return this; } + /** + * optional .KickPetitionUpdateMessage kickPetitionUpdateMessage = 61; + */ public Builder clearKickPetitionUpdateMessage() { kickPetitionUpdateMessage_ = de.pokerth.protocol.ProtoBuf.KickPetitionUpdateMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x10000000); return this; } - + // optional .EndKickPetitionMessage endKickPetitionMessage = 62; private de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage endKickPetitionMessage_ = de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.getDefaultInstance(); + /** + * optional .EndKickPetitionMessage endKickPetitionMessage = 62; + */ public boolean hasEndKickPetitionMessage() { return ((bitField1_ & 0x20000000) == 0x20000000); } + /** + * optional .EndKickPetitionMessage endKickPetitionMessage = 62; + */ public de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage getEndKickPetitionMessage() { return endKickPetitionMessage_; } + /** + * optional .EndKickPetitionMessage endKickPetitionMessage = 62; + */ public Builder setEndKickPetitionMessage(de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage value) { if (value == null) { throw new NullPointerException(); } endKickPetitionMessage_ = value; - + bitField1_ |= 0x20000000; return this; } + /** + * optional .EndKickPetitionMessage endKickPetitionMessage = 62; + */ public Builder setEndKickPetitionMessage( de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.Builder builderForValue) { endKickPetitionMessage_ = builderForValue.build(); - + bitField1_ |= 0x20000000; return this; } + /** + * optional .EndKickPetitionMessage endKickPetitionMessage = 62; + */ public Builder mergeEndKickPetitionMessage(de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage value) { if (((bitField1_ & 0x20000000) == 0x20000000) && endKickPetitionMessage_ != de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.getDefaultInstance()) { @@ -46639,41 +59658,59 @@ public final class ProtoBuf { } else { endKickPetitionMessage_ = value; } - + bitField1_ |= 0x20000000; return this; } + /** + * optional .EndKickPetitionMessage endKickPetitionMessage = 62; + */ public Builder clearEndKickPetitionMessage() { endKickPetitionMessage_ = de.pokerth.protocol.ProtoBuf.EndKickPetitionMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x20000000); return this; } - + // optional .StatisticsMessage statisticsMessage = 63; private de.pokerth.protocol.ProtoBuf.StatisticsMessage statisticsMessage_ = de.pokerth.protocol.ProtoBuf.StatisticsMessage.getDefaultInstance(); + /** + * optional .StatisticsMessage statisticsMessage = 63; + */ public boolean hasStatisticsMessage() { return ((bitField1_ & 0x40000000) == 0x40000000); } + /** + * optional .StatisticsMessage statisticsMessage = 63; + */ public de.pokerth.protocol.ProtoBuf.StatisticsMessage getStatisticsMessage() { return statisticsMessage_; } + /** + * optional .StatisticsMessage statisticsMessage = 63; + */ public Builder setStatisticsMessage(de.pokerth.protocol.ProtoBuf.StatisticsMessage value) { if (value == null) { throw new NullPointerException(); } statisticsMessage_ = value; - + bitField1_ |= 0x40000000; return this; } + /** + * optional .StatisticsMessage statisticsMessage = 63; + */ public Builder setStatisticsMessage( de.pokerth.protocol.ProtoBuf.StatisticsMessage.Builder builderForValue) { statisticsMessage_ = builderForValue.build(); - + bitField1_ |= 0x40000000; return this; } + /** + * optional .StatisticsMessage statisticsMessage = 63; + */ public Builder mergeStatisticsMessage(de.pokerth.protocol.ProtoBuf.StatisticsMessage value) { if (((bitField1_ & 0x40000000) == 0x40000000) && statisticsMessage_ != de.pokerth.protocol.ProtoBuf.StatisticsMessage.getDefaultInstance()) { @@ -46682,41 +59719,59 @@ public final class ProtoBuf { } else { statisticsMessage_ = value; } - + bitField1_ |= 0x40000000; return this; } + /** + * optional .StatisticsMessage statisticsMessage = 63; + */ public Builder clearStatisticsMessage() { statisticsMessage_ = de.pokerth.protocol.ProtoBuf.StatisticsMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x40000000); return this; } - + // optional .ChatRequestMessage chatRequestMessage = 64; private de.pokerth.protocol.ProtoBuf.ChatRequestMessage chatRequestMessage_ = de.pokerth.protocol.ProtoBuf.ChatRequestMessage.getDefaultInstance(); + /** + * optional .ChatRequestMessage chatRequestMessage = 64; + */ public boolean hasChatRequestMessage() { return ((bitField1_ & 0x80000000) == 0x80000000); } + /** + * optional .ChatRequestMessage chatRequestMessage = 64; + */ public de.pokerth.protocol.ProtoBuf.ChatRequestMessage getChatRequestMessage() { return chatRequestMessage_; } + /** + * optional .ChatRequestMessage chatRequestMessage = 64; + */ public Builder setChatRequestMessage(de.pokerth.protocol.ProtoBuf.ChatRequestMessage value) { if (value == null) { throw new NullPointerException(); } chatRequestMessage_ = value; - + bitField1_ |= 0x80000000; return this; } + /** + * optional .ChatRequestMessage chatRequestMessage = 64; + */ public Builder setChatRequestMessage( de.pokerth.protocol.ProtoBuf.ChatRequestMessage.Builder builderForValue) { chatRequestMessage_ = builderForValue.build(); - + bitField1_ |= 0x80000000; return this; } + /** + * optional .ChatRequestMessage chatRequestMessage = 64; + */ public Builder mergeChatRequestMessage(de.pokerth.protocol.ProtoBuf.ChatRequestMessage value) { if (((bitField1_ & 0x80000000) == 0x80000000) && chatRequestMessage_ != de.pokerth.protocol.ProtoBuf.ChatRequestMessage.getDefaultInstance()) { @@ -46725,41 +59780,59 @@ public final class ProtoBuf { } else { chatRequestMessage_ = value; } - + bitField1_ |= 0x80000000; return this; } + /** + * optional .ChatRequestMessage chatRequestMessage = 64; + */ public Builder clearChatRequestMessage() { chatRequestMessage_ = de.pokerth.protocol.ProtoBuf.ChatRequestMessage.getDefaultInstance(); - + bitField1_ = (bitField1_ & ~0x80000000); return this; } - + // optional .ChatMessage chatMessage = 65; private de.pokerth.protocol.ProtoBuf.ChatMessage chatMessage_ = de.pokerth.protocol.ProtoBuf.ChatMessage.getDefaultInstance(); + /** + * optional .ChatMessage chatMessage = 65; + */ public boolean hasChatMessage() { return ((bitField2_ & 0x00000001) == 0x00000001); } + /** + * optional .ChatMessage chatMessage = 65; + */ public de.pokerth.protocol.ProtoBuf.ChatMessage getChatMessage() { return chatMessage_; } + /** + * optional .ChatMessage chatMessage = 65; + */ public Builder setChatMessage(de.pokerth.protocol.ProtoBuf.ChatMessage value) { if (value == null) { throw new NullPointerException(); } chatMessage_ = value; - + bitField2_ |= 0x00000001; return this; } + /** + * optional .ChatMessage chatMessage = 65; + */ public Builder setChatMessage( de.pokerth.protocol.ProtoBuf.ChatMessage.Builder builderForValue) { chatMessage_ = builderForValue.build(); - + bitField2_ |= 0x00000001; return this; } + /** + * optional .ChatMessage chatMessage = 65; + */ public Builder mergeChatMessage(de.pokerth.protocol.ProtoBuf.ChatMessage value) { if (((bitField2_ & 0x00000001) == 0x00000001) && chatMessage_ != de.pokerth.protocol.ProtoBuf.ChatMessage.getDefaultInstance()) { @@ -46768,41 +59841,59 @@ public final class ProtoBuf { } else { chatMessage_ = value; } - + bitField2_ |= 0x00000001; return this; } + /** + * optional .ChatMessage chatMessage = 65; + */ public Builder clearChatMessage() { chatMessage_ = de.pokerth.protocol.ProtoBuf.ChatMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00000001); return this; } - + // optional .ChatRejectMessage chatRejectMessage = 66; private de.pokerth.protocol.ProtoBuf.ChatRejectMessage chatRejectMessage_ = de.pokerth.protocol.ProtoBuf.ChatRejectMessage.getDefaultInstance(); + /** + * optional .ChatRejectMessage chatRejectMessage = 66; + */ public boolean hasChatRejectMessage() { return ((bitField2_ & 0x00000002) == 0x00000002); } + /** + * optional .ChatRejectMessage chatRejectMessage = 66; + */ public de.pokerth.protocol.ProtoBuf.ChatRejectMessage getChatRejectMessage() { return chatRejectMessage_; } + /** + * optional .ChatRejectMessage chatRejectMessage = 66; + */ public Builder setChatRejectMessage(de.pokerth.protocol.ProtoBuf.ChatRejectMessage value) { if (value == null) { throw new NullPointerException(); } chatRejectMessage_ = value; - + bitField2_ |= 0x00000002; return this; } + /** + * optional .ChatRejectMessage chatRejectMessage = 66; + */ public Builder setChatRejectMessage( de.pokerth.protocol.ProtoBuf.ChatRejectMessage.Builder builderForValue) { chatRejectMessage_ = builderForValue.build(); - + bitField2_ |= 0x00000002; return this; } + /** + * optional .ChatRejectMessage chatRejectMessage = 66; + */ public Builder mergeChatRejectMessage(de.pokerth.protocol.ProtoBuf.ChatRejectMessage value) { if (((bitField2_ & 0x00000002) == 0x00000002) && chatRejectMessage_ != de.pokerth.protocol.ProtoBuf.ChatRejectMessage.getDefaultInstance()) { @@ -46811,41 +59902,59 @@ public final class ProtoBuf { } else { chatRejectMessage_ = value; } - + bitField2_ |= 0x00000002; return this; } + /** + * optional .ChatRejectMessage chatRejectMessage = 66; + */ public Builder clearChatRejectMessage() { chatRejectMessage_ = de.pokerth.protocol.ProtoBuf.ChatRejectMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00000002); return this; } - + // optional .DialogMessage dialogMessage = 67; private de.pokerth.protocol.ProtoBuf.DialogMessage dialogMessage_ = de.pokerth.protocol.ProtoBuf.DialogMessage.getDefaultInstance(); + /** + * optional .DialogMessage dialogMessage = 67; + */ public boolean hasDialogMessage() { return ((bitField2_ & 0x00000004) == 0x00000004); } + /** + * optional .DialogMessage dialogMessage = 67; + */ public de.pokerth.protocol.ProtoBuf.DialogMessage getDialogMessage() { return dialogMessage_; } + /** + * optional .DialogMessage dialogMessage = 67; + */ public Builder setDialogMessage(de.pokerth.protocol.ProtoBuf.DialogMessage value) { if (value == null) { throw new NullPointerException(); } dialogMessage_ = value; - + bitField2_ |= 0x00000004; return this; } + /** + * optional .DialogMessage dialogMessage = 67; + */ public Builder setDialogMessage( de.pokerth.protocol.ProtoBuf.DialogMessage.Builder builderForValue) { dialogMessage_ = builderForValue.build(); - + bitField2_ |= 0x00000004; return this; } + /** + * optional .DialogMessage dialogMessage = 67; + */ public Builder mergeDialogMessage(de.pokerth.protocol.ProtoBuf.DialogMessage value) { if (((bitField2_ & 0x00000004) == 0x00000004) && dialogMessage_ != de.pokerth.protocol.ProtoBuf.DialogMessage.getDefaultInstance()) { @@ -46854,41 +59963,59 @@ public final class ProtoBuf { } else { dialogMessage_ = value; } - + bitField2_ |= 0x00000004; return this; } + /** + * optional .DialogMessage dialogMessage = 67; + */ public Builder clearDialogMessage() { dialogMessage_ = de.pokerth.protocol.ProtoBuf.DialogMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00000004); return this; } - + // optional .TimeoutWarningMessage timeoutWarningMessage = 68; private de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage timeoutWarningMessage_ = de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.getDefaultInstance(); + /** + * optional .TimeoutWarningMessage timeoutWarningMessage = 68; + */ public boolean hasTimeoutWarningMessage() { return ((bitField2_ & 0x00000008) == 0x00000008); } + /** + * optional .TimeoutWarningMessage timeoutWarningMessage = 68; + */ public de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage getTimeoutWarningMessage() { return timeoutWarningMessage_; } + /** + * optional .TimeoutWarningMessage timeoutWarningMessage = 68; + */ public Builder setTimeoutWarningMessage(de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage value) { if (value == null) { throw new NullPointerException(); } timeoutWarningMessage_ = value; - + bitField2_ |= 0x00000008; return this; } + /** + * optional .TimeoutWarningMessage timeoutWarningMessage = 68; + */ public Builder setTimeoutWarningMessage( de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.Builder builderForValue) { timeoutWarningMessage_ = builderForValue.build(); - + bitField2_ |= 0x00000008; return this; } + /** + * optional .TimeoutWarningMessage timeoutWarningMessage = 68; + */ public Builder mergeTimeoutWarningMessage(de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage value) { if (((bitField2_ & 0x00000008) == 0x00000008) && timeoutWarningMessage_ != de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.getDefaultInstance()) { @@ -46897,41 +60024,59 @@ public final class ProtoBuf { } else { timeoutWarningMessage_ = value; } - + bitField2_ |= 0x00000008; return this; } + /** + * optional .TimeoutWarningMessage timeoutWarningMessage = 68; + */ public Builder clearTimeoutWarningMessage() { timeoutWarningMessage_ = de.pokerth.protocol.ProtoBuf.TimeoutWarningMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00000008); return this; } - + // optional .ResetTimeoutMessage resetTimeoutMessage = 69; private de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage resetTimeoutMessage_ = de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage.getDefaultInstance(); + /** + * optional .ResetTimeoutMessage resetTimeoutMessage = 69; + */ public boolean hasResetTimeoutMessage() { return ((bitField2_ & 0x00000010) == 0x00000010); } + /** + * optional .ResetTimeoutMessage resetTimeoutMessage = 69; + */ public de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage getResetTimeoutMessage() { return resetTimeoutMessage_; } + /** + * optional .ResetTimeoutMessage resetTimeoutMessage = 69; + */ public Builder setResetTimeoutMessage(de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage value) { if (value == null) { throw new NullPointerException(); } resetTimeoutMessage_ = value; - + bitField2_ |= 0x00000010; return this; } + /** + * optional .ResetTimeoutMessage resetTimeoutMessage = 69; + */ public Builder setResetTimeoutMessage( de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage.Builder builderForValue) { resetTimeoutMessage_ = builderForValue.build(); - + bitField2_ |= 0x00000010; return this; } + /** + * optional .ResetTimeoutMessage resetTimeoutMessage = 69; + */ public Builder mergeResetTimeoutMessage(de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage value) { if (((bitField2_ & 0x00000010) == 0x00000010) && resetTimeoutMessage_ != de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage.getDefaultInstance()) { @@ -46940,41 +60085,59 @@ public final class ProtoBuf { } else { resetTimeoutMessage_ = value; } - + bitField2_ |= 0x00000010; return this; } + /** + * optional .ResetTimeoutMessage resetTimeoutMessage = 69; + */ public Builder clearResetTimeoutMessage() { resetTimeoutMessage_ = de.pokerth.protocol.ProtoBuf.ResetTimeoutMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00000010); return this; } - + // optional .ReportAvatarMessage reportAvatarMessage = 70; private de.pokerth.protocol.ProtoBuf.ReportAvatarMessage reportAvatarMessage_ = de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.getDefaultInstance(); + /** + * optional .ReportAvatarMessage reportAvatarMessage = 70; + */ public boolean hasReportAvatarMessage() { return ((bitField2_ & 0x00000020) == 0x00000020); } + /** + * optional .ReportAvatarMessage reportAvatarMessage = 70; + */ public de.pokerth.protocol.ProtoBuf.ReportAvatarMessage getReportAvatarMessage() { return reportAvatarMessage_; } + /** + * optional .ReportAvatarMessage reportAvatarMessage = 70; + */ public Builder setReportAvatarMessage(de.pokerth.protocol.ProtoBuf.ReportAvatarMessage value) { if (value == null) { throw new NullPointerException(); } reportAvatarMessage_ = value; - + bitField2_ |= 0x00000020; return this; } + /** + * optional .ReportAvatarMessage reportAvatarMessage = 70; + */ public Builder setReportAvatarMessage( de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.Builder builderForValue) { reportAvatarMessage_ = builderForValue.build(); - + bitField2_ |= 0x00000020; return this; } + /** + * optional .ReportAvatarMessage reportAvatarMessage = 70; + */ public Builder mergeReportAvatarMessage(de.pokerth.protocol.ProtoBuf.ReportAvatarMessage value) { if (((bitField2_ & 0x00000020) == 0x00000020) && reportAvatarMessage_ != de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.getDefaultInstance()) { @@ -46983,41 +60146,59 @@ public final class ProtoBuf { } else { reportAvatarMessage_ = value; } - + bitField2_ |= 0x00000020; return this; } + /** + * optional .ReportAvatarMessage reportAvatarMessage = 70; + */ public Builder clearReportAvatarMessage() { reportAvatarMessage_ = de.pokerth.protocol.ProtoBuf.ReportAvatarMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00000020); return this; } - + // optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; private de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage reportAvatarAckMessage_ = de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.getDefaultInstance(); + /** + * optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; + */ public boolean hasReportAvatarAckMessage() { return ((bitField2_ & 0x00000040) == 0x00000040); } + /** + * optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; + */ public de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage getReportAvatarAckMessage() { return reportAvatarAckMessage_; } + /** + * optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; + */ public Builder setReportAvatarAckMessage(de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage value) { if (value == null) { throw new NullPointerException(); } reportAvatarAckMessage_ = value; - + bitField2_ |= 0x00000040; return this; } + /** + * optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; + */ public Builder setReportAvatarAckMessage( de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.Builder builderForValue) { reportAvatarAckMessage_ = builderForValue.build(); - + bitField2_ |= 0x00000040; return this; } + /** + * optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; + */ public Builder mergeReportAvatarAckMessage(de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage value) { if (((bitField2_ & 0x00000040) == 0x00000040) && reportAvatarAckMessage_ != de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.getDefaultInstance()) { @@ -47026,41 +60207,59 @@ public final class ProtoBuf { } else { reportAvatarAckMessage_ = value; } - + bitField2_ |= 0x00000040; return this; } + /** + * optional .ReportAvatarAckMessage reportAvatarAckMessage = 71; + */ public Builder clearReportAvatarAckMessage() { reportAvatarAckMessage_ = de.pokerth.protocol.ProtoBuf.ReportAvatarAckMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00000040); return this; } - + // optional .ReportGameMessage reportGameMessage = 72; private de.pokerth.protocol.ProtoBuf.ReportGameMessage reportGameMessage_ = de.pokerth.protocol.ProtoBuf.ReportGameMessage.getDefaultInstance(); + /** + * optional .ReportGameMessage reportGameMessage = 72; + */ public boolean hasReportGameMessage() { return ((bitField2_ & 0x00000080) == 0x00000080); } + /** + * optional .ReportGameMessage reportGameMessage = 72; + */ public de.pokerth.protocol.ProtoBuf.ReportGameMessage getReportGameMessage() { return reportGameMessage_; } + /** + * optional .ReportGameMessage reportGameMessage = 72; + */ public Builder setReportGameMessage(de.pokerth.protocol.ProtoBuf.ReportGameMessage value) { if (value == null) { throw new NullPointerException(); } reportGameMessage_ = value; - + bitField2_ |= 0x00000080; return this; } + /** + * optional .ReportGameMessage reportGameMessage = 72; + */ public Builder setReportGameMessage( de.pokerth.protocol.ProtoBuf.ReportGameMessage.Builder builderForValue) { reportGameMessage_ = builderForValue.build(); - + bitField2_ |= 0x00000080; return this; } + /** + * optional .ReportGameMessage reportGameMessage = 72; + */ public Builder mergeReportGameMessage(de.pokerth.protocol.ProtoBuf.ReportGameMessage value) { if (((bitField2_ & 0x00000080) == 0x00000080) && reportGameMessage_ != de.pokerth.protocol.ProtoBuf.ReportGameMessage.getDefaultInstance()) { @@ -47069,41 +60268,59 @@ public final class ProtoBuf { } else { reportGameMessage_ = value; } - + bitField2_ |= 0x00000080; return this; } + /** + * optional .ReportGameMessage reportGameMessage = 72; + */ public Builder clearReportGameMessage() { reportGameMessage_ = de.pokerth.protocol.ProtoBuf.ReportGameMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00000080); return this; } - + // optional .ReportGameAckMessage reportGameAckMessage = 73; private de.pokerth.protocol.ProtoBuf.ReportGameAckMessage reportGameAckMessage_ = de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.getDefaultInstance(); + /** + * optional .ReportGameAckMessage reportGameAckMessage = 73; + */ public boolean hasReportGameAckMessage() { return ((bitField2_ & 0x00000100) == 0x00000100); } + /** + * optional .ReportGameAckMessage reportGameAckMessage = 73; + */ public de.pokerth.protocol.ProtoBuf.ReportGameAckMessage getReportGameAckMessage() { return reportGameAckMessage_; } + /** + * optional .ReportGameAckMessage reportGameAckMessage = 73; + */ public Builder setReportGameAckMessage(de.pokerth.protocol.ProtoBuf.ReportGameAckMessage value) { if (value == null) { throw new NullPointerException(); } reportGameAckMessage_ = value; - + bitField2_ |= 0x00000100; return this; } + /** + * optional .ReportGameAckMessage reportGameAckMessage = 73; + */ public Builder setReportGameAckMessage( de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.Builder builderForValue) { reportGameAckMessage_ = builderForValue.build(); - + bitField2_ |= 0x00000100; return this; } + /** + * optional .ReportGameAckMessage reportGameAckMessage = 73; + */ public Builder mergeReportGameAckMessage(de.pokerth.protocol.ProtoBuf.ReportGameAckMessage value) { if (((bitField2_ & 0x00000100) == 0x00000100) && reportGameAckMessage_ != de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.getDefaultInstance()) { @@ -47112,41 +60329,59 @@ public final class ProtoBuf { } else { reportGameAckMessage_ = value; } - + bitField2_ |= 0x00000100; return this; } + /** + * optional .ReportGameAckMessage reportGameAckMessage = 73; + */ public Builder clearReportGameAckMessage() { reportGameAckMessage_ = de.pokerth.protocol.ProtoBuf.ReportGameAckMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00000100); return this; } - + // optional .ErrorMessage errorMessage = 74; private de.pokerth.protocol.ProtoBuf.ErrorMessage errorMessage_ = de.pokerth.protocol.ProtoBuf.ErrorMessage.getDefaultInstance(); + /** + * optional .ErrorMessage errorMessage = 74; + */ public boolean hasErrorMessage() { return ((bitField2_ & 0x00000200) == 0x00000200); } + /** + * optional .ErrorMessage errorMessage = 74; + */ public de.pokerth.protocol.ProtoBuf.ErrorMessage getErrorMessage() { return errorMessage_; } + /** + * optional .ErrorMessage errorMessage = 74; + */ public Builder setErrorMessage(de.pokerth.protocol.ProtoBuf.ErrorMessage value) { if (value == null) { throw new NullPointerException(); } errorMessage_ = value; - + bitField2_ |= 0x00000200; return this; } + /** + * optional .ErrorMessage errorMessage = 74; + */ public Builder setErrorMessage( de.pokerth.protocol.ProtoBuf.ErrorMessage.Builder builderForValue) { errorMessage_ = builderForValue.build(); - + bitField2_ |= 0x00000200; return this; } + /** + * optional .ErrorMessage errorMessage = 74; + */ public Builder mergeErrorMessage(de.pokerth.protocol.ProtoBuf.ErrorMessage value) { if (((bitField2_ & 0x00000200) == 0x00000200) && errorMessage_ != de.pokerth.protocol.ProtoBuf.ErrorMessage.getDefaultInstance()) { @@ -47155,41 +60390,59 @@ public final class ProtoBuf { } else { errorMessage_ = value; } - + bitField2_ |= 0x00000200; return this; } + /** + * optional .ErrorMessage errorMessage = 74; + */ public Builder clearErrorMessage() { errorMessage_ = de.pokerth.protocol.ProtoBuf.ErrorMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00000200); return this; } - + // optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; private de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage adminRemoveGameMessage_ = de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage.getDefaultInstance(); + /** + * optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; + */ public boolean hasAdminRemoveGameMessage() { return ((bitField2_ & 0x00000400) == 0x00000400); } + /** + * optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; + */ public de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage getAdminRemoveGameMessage() { return adminRemoveGameMessage_; } + /** + * optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; + */ public Builder setAdminRemoveGameMessage(de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage value) { if (value == null) { throw new NullPointerException(); } adminRemoveGameMessage_ = value; - + bitField2_ |= 0x00000400; return this; } + /** + * optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; + */ public Builder setAdminRemoveGameMessage( de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage.Builder builderForValue) { adminRemoveGameMessage_ = builderForValue.build(); - + bitField2_ |= 0x00000400; return this; } + /** + * optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; + */ public Builder mergeAdminRemoveGameMessage(de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage value) { if (((bitField2_ & 0x00000400) == 0x00000400) && adminRemoveGameMessage_ != de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage.getDefaultInstance()) { @@ -47198,41 +60451,59 @@ public final class ProtoBuf { } else { adminRemoveGameMessage_ = value; } - + bitField2_ |= 0x00000400; return this; } + /** + * optional .AdminRemoveGameMessage adminRemoveGameMessage = 75; + */ public Builder clearAdminRemoveGameMessage() { adminRemoveGameMessage_ = de.pokerth.protocol.ProtoBuf.AdminRemoveGameMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00000400); return this; } - + // optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; private de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage adminRemoveGameAckMessage_ = de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.getDefaultInstance(); + /** + * optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; + */ public boolean hasAdminRemoveGameAckMessage() { return ((bitField2_ & 0x00000800) == 0x00000800); } + /** + * optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; + */ public de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage getAdminRemoveGameAckMessage() { return adminRemoveGameAckMessage_; } + /** + * optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; + */ public Builder setAdminRemoveGameAckMessage(de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage value) { if (value == null) { throw new NullPointerException(); } adminRemoveGameAckMessage_ = value; - + bitField2_ |= 0x00000800; return this; } + /** + * optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; + */ public Builder setAdminRemoveGameAckMessage( de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.Builder builderForValue) { adminRemoveGameAckMessage_ = builderForValue.build(); - + bitField2_ |= 0x00000800; return this; } + /** + * optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; + */ public Builder mergeAdminRemoveGameAckMessage(de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage value) { if (((bitField2_ & 0x00000800) == 0x00000800) && adminRemoveGameAckMessage_ != de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.getDefaultInstance()) { @@ -47241,41 +60512,59 @@ public final class ProtoBuf { } else { adminRemoveGameAckMessage_ = value; } - + bitField2_ |= 0x00000800; return this; } + /** + * optional .AdminRemoveGameAckMessage adminRemoveGameAckMessage = 76; + */ public Builder clearAdminRemoveGameAckMessage() { adminRemoveGameAckMessage_ = de.pokerth.protocol.ProtoBuf.AdminRemoveGameAckMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00000800); return this; } - + // optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; private de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage adminBanPlayerMessage_ = de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage.getDefaultInstance(); + /** + * optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; + */ public boolean hasAdminBanPlayerMessage() { return ((bitField2_ & 0x00001000) == 0x00001000); } + /** + * optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; + */ public de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage getAdminBanPlayerMessage() { return adminBanPlayerMessage_; } + /** + * optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; + */ public Builder setAdminBanPlayerMessage(de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage value) { if (value == null) { throw new NullPointerException(); } adminBanPlayerMessage_ = value; - + bitField2_ |= 0x00001000; return this; } + /** + * optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; + */ public Builder setAdminBanPlayerMessage( de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage.Builder builderForValue) { adminBanPlayerMessage_ = builderForValue.build(); - + bitField2_ |= 0x00001000; return this; } + /** + * optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; + */ public Builder mergeAdminBanPlayerMessage(de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage value) { if (((bitField2_ & 0x00001000) == 0x00001000) && adminBanPlayerMessage_ != de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage.getDefaultInstance()) { @@ -47284,41 +60573,59 @@ public final class ProtoBuf { } else { adminBanPlayerMessage_ = value; } - + bitField2_ |= 0x00001000; return this; } + /** + * optional .AdminBanPlayerMessage adminBanPlayerMessage = 77; + */ public Builder clearAdminBanPlayerMessage() { adminBanPlayerMessage_ = de.pokerth.protocol.ProtoBuf.AdminBanPlayerMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00001000); return this; } - + // optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; private de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage adminBanPlayerAckMessage_ = de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.getDefaultInstance(); + /** + * optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; + */ public boolean hasAdminBanPlayerAckMessage() { return ((bitField2_ & 0x00002000) == 0x00002000); } + /** + * optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; + */ public de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage getAdminBanPlayerAckMessage() { return adminBanPlayerAckMessage_; } + /** + * optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; + */ public Builder setAdminBanPlayerAckMessage(de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage value) { if (value == null) { throw new NullPointerException(); } adminBanPlayerAckMessage_ = value; - + bitField2_ |= 0x00002000; return this; } + /** + * optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; + */ public Builder setAdminBanPlayerAckMessage( de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.Builder builderForValue) { adminBanPlayerAckMessage_ = builderForValue.build(); - + bitField2_ |= 0x00002000; return this; } + /** + * optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; + */ public Builder mergeAdminBanPlayerAckMessage(de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage value) { if (((bitField2_ & 0x00002000) == 0x00002000) && adminBanPlayerAckMessage_ != de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.getDefaultInstance()) { @@ -47327,41 +60634,59 @@ public final class ProtoBuf { } else { adminBanPlayerAckMessage_ = value; } - + bitField2_ |= 0x00002000; return this; } + /** + * optional .AdminBanPlayerAckMessage adminBanPlayerAckMessage = 78; + */ public Builder clearAdminBanPlayerAckMessage() { adminBanPlayerAckMessage_ = de.pokerth.protocol.ProtoBuf.AdminBanPlayerAckMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00002000); return this; } - + // optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; private de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage_ = de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage.getDefaultInstance(); + /** + * optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; + */ public boolean hasGameListSpectatorJoinedMessage() { return ((bitField2_ & 0x00004000) == 0x00004000); } + /** + * optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; + */ public de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage getGameListSpectatorJoinedMessage() { return gameListSpectatorJoinedMessage_; } + /** + * optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; + */ public Builder setGameListSpectatorJoinedMessage(de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage value) { if (value == null) { throw new NullPointerException(); } gameListSpectatorJoinedMessage_ = value; - + bitField2_ |= 0x00004000; return this; } + /** + * optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; + */ public Builder setGameListSpectatorJoinedMessage( de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage.Builder builderForValue) { gameListSpectatorJoinedMessage_ = builderForValue.build(); - + bitField2_ |= 0x00004000; return this; } + /** + * optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; + */ public Builder mergeGameListSpectatorJoinedMessage(de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage value) { if (((bitField2_ & 0x00004000) == 0x00004000) && gameListSpectatorJoinedMessage_ != de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage.getDefaultInstance()) { @@ -47370,41 +60695,59 @@ public final class ProtoBuf { } else { gameListSpectatorJoinedMessage_ = value; } - + bitField2_ |= 0x00004000; return this; } + /** + * optional .GameListSpectatorJoinedMessage gameListSpectatorJoinedMessage = 79; + */ public Builder clearGameListSpectatorJoinedMessage() { gameListSpectatorJoinedMessage_ = de.pokerth.protocol.ProtoBuf.GameListSpectatorJoinedMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00004000); return this; } - + // optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; private de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage gameListSpectatorLeftMessage_ = de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage.getDefaultInstance(); + /** + * optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; + */ public boolean hasGameListSpectatorLeftMessage() { return ((bitField2_ & 0x00008000) == 0x00008000); } + /** + * optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; + */ public de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage getGameListSpectatorLeftMessage() { return gameListSpectatorLeftMessage_; } + /** + * optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; + */ public Builder setGameListSpectatorLeftMessage(de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage value) { if (value == null) { throw new NullPointerException(); } gameListSpectatorLeftMessage_ = value; - + bitField2_ |= 0x00008000; return this; } + /** + * optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; + */ public Builder setGameListSpectatorLeftMessage( de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage.Builder builderForValue) { gameListSpectatorLeftMessage_ = builderForValue.build(); - + bitField2_ |= 0x00008000; return this; } + /** + * optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; + */ public Builder mergeGameListSpectatorLeftMessage(de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage value) { if (((bitField2_ & 0x00008000) == 0x00008000) && gameListSpectatorLeftMessage_ != de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage.getDefaultInstance()) { @@ -47413,41 +60756,59 @@ public final class ProtoBuf { } else { gameListSpectatorLeftMessage_ = value; } - + bitField2_ |= 0x00008000; return this; } + /** + * optional .GameListSpectatorLeftMessage gameListSpectatorLeftMessage = 80; + */ public Builder clearGameListSpectatorLeftMessage() { gameListSpectatorLeftMessage_ = de.pokerth.protocol.ProtoBuf.GameListSpectatorLeftMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00008000); return this; } - + // optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; private de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage gameSpectatorJoinedMessage_ = de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.getDefaultInstance(); + /** + * optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; + */ public boolean hasGameSpectatorJoinedMessage() { return ((bitField2_ & 0x00010000) == 0x00010000); } + /** + * optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; + */ public de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage getGameSpectatorJoinedMessage() { return gameSpectatorJoinedMessage_; } + /** + * optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; + */ public Builder setGameSpectatorJoinedMessage(de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage value) { if (value == null) { throw new NullPointerException(); } gameSpectatorJoinedMessage_ = value; - + bitField2_ |= 0x00010000; return this; } + /** + * optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; + */ public Builder setGameSpectatorJoinedMessage( de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.Builder builderForValue) { gameSpectatorJoinedMessage_ = builderForValue.build(); - + bitField2_ |= 0x00010000; return this; } + /** + * optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; + */ public Builder mergeGameSpectatorJoinedMessage(de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage value) { if (((bitField2_ & 0x00010000) == 0x00010000) && gameSpectatorJoinedMessage_ != de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.getDefaultInstance()) { @@ -47456,41 +60817,59 @@ public final class ProtoBuf { } else { gameSpectatorJoinedMessage_ = value; } - + bitField2_ |= 0x00010000; return this; } + /** + * optional .GameSpectatorJoinedMessage gameSpectatorJoinedMessage = 81; + */ public Builder clearGameSpectatorJoinedMessage() { gameSpectatorJoinedMessage_ = de.pokerth.protocol.ProtoBuf.GameSpectatorJoinedMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00010000); return this; } - + // optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; private de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage gameSpectatorLeftMessage_ = de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.getDefaultInstance(); + /** + * optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; + */ public boolean hasGameSpectatorLeftMessage() { return ((bitField2_ & 0x00020000) == 0x00020000); } + /** + * optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; + */ public de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage getGameSpectatorLeftMessage() { return gameSpectatorLeftMessage_; } + /** + * optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; + */ public Builder setGameSpectatorLeftMessage(de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage value) { if (value == null) { throw new NullPointerException(); } gameSpectatorLeftMessage_ = value; - + bitField2_ |= 0x00020000; return this; } + /** + * optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; + */ public Builder setGameSpectatorLeftMessage( de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.Builder builderForValue) { gameSpectatorLeftMessage_ = builderForValue.build(); - + bitField2_ |= 0x00020000; return this; } + /** + * optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; + */ public Builder mergeGameSpectatorLeftMessage(de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage value) { if (((bitField2_ & 0x00020000) == 0x00020000) && gameSpectatorLeftMessage_ != de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.getDefaultInstance()) { @@ -47499,31 +60878,34 @@ public final class ProtoBuf { } else { gameSpectatorLeftMessage_ = value; } - + bitField2_ |= 0x00020000; return this; } + /** + * optional .GameSpectatorLeftMessage gameSpectatorLeftMessage = 82; + */ public Builder clearGameSpectatorLeftMessage() { gameSpectatorLeftMessage_ = de.pokerth.protocol.ProtoBuf.GameSpectatorLeftMessage.getDefaultInstance(); - + bitField2_ = (bitField2_ & ~0x00020000); return this; } - + // @@protoc_insertion_point(builder_scope:PokerTHMessage) } - + static { defaultInstance = new PokerTHMessage(true); defaultInstance.initFields(); } - + // @@protoc_insertion_point(class_scope:PokerTHMessage) } - - + + static { } - + // @@protoc_insertion_point(outer_class_scope) } From 6e553513896ccdda3a7bdf9a06394c4ef51a05ab Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 8 Jun 2013 20:22:27 +0200 Subject: [PATCH 003/128] Trying to fix link order for newer libgsasl. --- pokerth_game.pro | 2 +- pokerth_server.pro | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pokerth_game.pro b/pokerth_game.pro index 7ca9cf35..6e78c724 100644 --- a/pokerth_game.pro +++ b/pokerth_game.pro @@ -358,12 +358,12 @@ win32 { -lcrypto \ -lssh2 \ -lgnutls \ - -lnettle \ -lhogweed \ -lgmp \ -lgcrypt \ -lgpg-error \ -lgsasl \ + -lnettle \ -lidn \ -lintl \ -lprotobuf diff --git a/pokerth_server.pro b/pokerth_server.pro index 69957cb7..822d03e9 100644 --- a/pokerth_server.pro +++ b/pokerth_server.pro @@ -131,7 +131,7 @@ win32 { debug:LIBPATH += debug/lib release:LIBPATH += release/lib - LIBS += -lssl -lcrypto -lssh2 -lgnutls -lnettle -lhogweed -lgmp -lgcrypt -lgpg-error -lgsasl -lidn -lintl -lprotobuf -ltinyxml -lsqlite3 -lntlm + LIBS += -lssl -lcrypto -lssh2 -lgnutls -lhogweed -lgmp -lgcrypt -lgpg-error -lgsasl -lnettle -lidn -lintl -lprotobuf -ltinyxml -lsqlite3 -lntlm LIBS += -lboost_thread_win32-mt LIBS += -lboost_filesystem-mt LIBS += -lboost_regex-mt From 00543b7560583fa86498428d706581b947b2b9a1 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 16 Jun 2013 10:43:13 +0200 Subject: [PATCH 004/128] More work on spectator mode. --- pokerth.proto | 1 + src/net/common/servergame.cpp | 11 ++- src/net/common/servergamestate.cpp | 57 ++++++++++++--- src/net/common/serverlobbythread.cpp | 44 +++++++++-- src/net/common/sessionmanager.cpp | 16 ++-- src/net/servergame.h | 2 +- src/net/servergamestate.h | 23 ++++-- src/net/serverlobbythread.h | 4 +- src/net/sessiondata.h | 2 +- src/net/sessionmanager.h | 8 +- src/third_party/protobuf/pokerth.pb.cc | 33 +++++++++ src/third_party/protobuf/pokerth.pb.h | 34 ++++++++- tests/src/de/pokerth/protocol/ProtoBuf.java | 81 +++++++++++++++++++++ 13 files changed, 271 insertions(+), 45 deletions(-) diff --git a/pokerth.proto b/pokerth.proto index 5cbfdbd1..f8563d69 100644 --- a/pokerth.proto +++ b/pokerth.proto @@ -307,6 +307,7 @@ message JoinGameAckMessage { required uint32 gameId = 1; required bool areYouGameAdmin = 2; required NetGameInfo gameInfo = 3; + optional bool spectateOnly = 4; } message JoinGameFailedMessage { diff --git a/src/net/common/servergame.cpp b/src/net/common/servergame.cpp index 305529d8..4e6cbcb0 100644 --- a/src/net/common/servergame.cpp +++ b/src/net/common/servergame.cpp @@ -108,10 +108,15 @@ ServerGame::GetCreatorDBId() const } void -ServerGame::AddSession(boost::shared_ptr session) +ServerGame::AddSession(boost::shared_ptr session, bool spectateOnly) { - if (session) - GetState().HandleNewSession(shared_from_this(), session); + if (session) { + if (spectateOnly) { + GetState().HandleNewSpectator(shared_from_this(), session); + } else { + GetState().HandleNewPlayer(shared_from_this(), session); + } + } } void diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index 2d7bd063..374b1f01 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -384,13 +384,25 @@ AbstractServerGameStateReceiving::CreateNetPacketPlayerJoined(unsigned gameId, c } boost::shared_ptr -AbstractServerGameStateReceiving::CreateNetPacketJoinGameAck(const ServerGame &server, const PlayerData &playerData) +AbstractServerGameStateReceiving::CreateNetPacketSpectatorJoined(unsigned gameId, const PlayerData &playerData) +{ + boost::shared_ptr packet(new NetPacket); + packet->GetMsg()->set_messagetype(PokerTHMessage::Type_GameSpectatorJoinedMessage); + GameSpectatorJoinedMessage *netGameSpectator = packet->GetMsg()->mutable_gamespectatorjoinedmessage(); + netGameSpectator->set_gameid(gameId); + netGameSpectator->set_playerid(playerData.GetUniqueId()); + return packet; +} + +boost::shared_ptr +AbstractServerGameStateReceiving::CreateNetPacketJoinGameAck(const ServerGame &server, const PlayerData &playerData, bool spectateOnly) { boost::shared_ptr packet(new NetPacket); packet->GetMsg()->set_messagetype(PokerTHMessage::Type_JoinGameAckMessage); JoinGameAckMessage *netJoinReply = packet->GetMsg()->mutable_joingameackmessage(); netJoinReply->set_gameid(server.GetId()); netJoinReply->set_areyougameadmin(playerData.IsGameAdmin()); + netJoinReply->set_spectateonly(spectateOnly); NetGameInfo *gameInfo = netJoinReply->mutable_gameinfo(); NetPacket::SetGameData(server.GetGameData(), *gameInfo); @@ -399,13 +411,13 @@ AbstractServerGameStateReceiving::CreateNetPacketJoinGameAck(const ServerGame &s } void -AbstractServerGameStateReceiving::AcceptNewSession(boost::shared_ptr server, boost::shared_ptr session) +AbstractServerGameStateReceiving::AcceptNewSession(boost::shared_ptr server, boost::shared_ptr session, bool spectateOnly) { // Set game admin, if applicable. session->GetPlayerData()->SetGameAdmin(session->GetPlayerData()->GetUniqueId() == server->GetAdminPlayerId()); // Send ack to client. - server->GetLobbyThread().GetSender().Send(session, CreateNetPacketJoinGameAck(*server, *session->GetPlayerData())); + server->GetLobbyThread().GetSender().Send(session, CreateNetPacketJoinGameAck(*server, *session->GetPlayerData(), spectateOnly)); // Send notifications for connected players to client. PlayerDataList tmpPlayerList(server->GetFullPlayerDataList()); @@ -416,14 +428,22 @@ AbstractServerGameStateReceiving::AcceptNewSession(boost::shared_ptr ++player_i; } - // Send "Player Joined" to other fully connected clients. - server->SendToAllPlayers(CreateNetPacketPlayerJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game); + // Send "Player Joined"/"Spectator Joined" to other fully connected clients. + if (spectateOnly) { + server->SendToAllPlayers(CreateNetPacketSpectatorJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game); + } else { + server->SendToAllPlayers(CreateNetPacketPlayerJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game); + } // Accept session. server->GetSessionManager().AddSession(session); // Notify lobby. - server->GetLobbyThread().NotifyPlayerJoinedGame(server->GetId(), session->GetPlayerData()->GetUniqueId()); + if (spectateOnly) { + server->GetLobbyThread().NotifySpectatorJoinedGame(server->GetId(), session->GetPlayerData()->GetUniqueId()); + } else { + server->GetLobbyThread().NotifyPlayerJoinedGame(server->GetId(), session->GetPlayerData()->GetUniqueId()); + } } //----------------------------------------------------------------------------- @@ -471,7 +491,7 @@ ServerGameStateInit::NotifySessionRemoved(boost::shared_ptr server) } void -ServerGameStateInit::HandleNewSession(boost::shared_ptr server, boost::shared_ptr session) +ServerGameStateInit::HandleNewPlayer(boost::shared_ptr server, boost::shared_ptr session) { if (session && session->GetPlayerData()) { const GameData &tmpGameData = server->GetGameData(); @@ -480,7 +500,7 @@ ServerGameStateInit::HandleNewSession(boost::shared_ptr server, boos server->MoveSessionToLobby(session, NTF_NET_REMOVED_GAME_FULL); } else { - AcceptNewSession(server, session); + AcceptNewSession(server, session, false); if (server->GetCurNumberOfPlayers() == tmpGameData.maxNumberOfPlayers) { // Automatically start the game if it is full. @@ -490,6 +510,11 @@ ServerGameStateInit::HandleNewSession(boost::shared_ptr server, boos } } +void +ServerGameStateInit::HandleNewSpectator(boost::shared_ptr server, boost::shared_ptr session) +{ +} + void ServerGameStateInit::RegisterAdminTimer(boost::shared_ptr server) { @@ -701,12 +726,17 @@ ServerGameStateStartGame::Exit(boost::shared_ptr server) } void -ServerGameStateStartGame::HandleNewSession(boost::shared_ptr server, boost::shared_ptr session) +ServerGameStateStartGame::HandleNewPlayer(boost::shared_ptr server, boost::shared_ptr session) { // Do not accept new sessions in this state. server->MoveSessionToLobby(session, NTF_NET_REMOVED_ALREADY_RUNNING); } +void +ServerGameStateStartGame::HandleNewSpectator(boost::shared_ptr server, boost::shared_ptr session) +{ +} + void ServerGameStateStartGame::InternalProcessPacket(boost::shared_ptr server, boost::shared_ptr session, boost::shared_ptr packet) { @@ -774,7 +804,7 @@ AbstractServerGameStateRunning::~AbstractServerGameStateRunning() } void -AbstractServerGameStateRunning::HandleNewSession(boost::shared_ptr server, boost::shared_ptr session) +AbstractServerGameStateRunning::HandleNewPlayer(boost::shared_ptr server, boost::shared_ptr session) { // Verify that the user is allowed to rejoin. @@ -782,7 +812,7 @@ AbstractServerGameStateRunning::HandleNewSession(boost::shared_ptr s boost::shared_ptr tmpPlayer = server->GetPlayerInterfaceFromGame(session->GetPlayerData()->GetName()); if (tmpPlayer && tmpPlayer->getMyGuid() == session->GetPlayerData()->GetOldGuid()) { // The player wants to rejoin. - AcceptNewSession(server, session); + AcceptNewSession(server, session, false); // Remember: We need to initiate a rejoin when starting the next hand. server->AddRejoinPlayer(session->GetPlayerData()->GetUniqueId()); @@ -802,6 +832,11 @@ AbstractServerGameStateRunning::HandleNewSession(boost::shared_ptr s } } +void +AbstractServerGameStateRunning::HandleNewSpectator(boost::shared_ptr server, boost::shared_ptr session) +{ +} + void AbstractServerGameStateRunning::InternalProcessPacket(boost::shared_ptr server, boost::shared_ptr session, boost::shared_ptr packet) { diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index dbb2865a..9b42e3b9 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -367,18 +367,18 @@ ServerLobbyThread::ReAddSession(boost::shared_ptr session, int reas } void -ServerLobbyThread::MoveSessionToGame(boost::shared_ptr game, boost::shared_ptr session, bool autoLeave) +ServerLobbyThread::MoveSessionToGame(boost::shared_ptr game, boost::shared_ptr session, bool autoLeave, bool spectateOnly) { // Remove session from the lobby. m_sessionManager.RemoveSession(session->GetId()); // Session is now in game state. - session->SetState(SessionData::Game); + session->SetState(spectateOnly ? SessionData::Spectating: SessionData::Game); // Store it in the list of game sessions. m_gameSessionManager.AddSession(session); // Set the game id of the session. session->SetGame(game); // Add session to the game. - game->AddSession(session); + game->AddSession(session, spectateOnly); // Optionally enable auto leave after game finish. if (autoLeave) game->SetPlayerAutoLeaveOnFinish(session->GetPlayerData()->GetUniqueId()); @@ -465,6 +465,34 @@ ServerLobbyThread::NotifyPlayerLeftGame(unsigned gameId, unsigned playerId) m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); } +void +ServerLobbyThread::NotifySpectatorJoinedGame(unsigned gameId, unsigned playerId) +{ + // Send notification to players in lobby. + boost::shared_ptr packet(new NetPacket); + packet->GetMsg()->set_messagetype(PokerTHMessage::Type_GameListSpectatorJoinedMessage); + GameListSpectatorJoinedMessage *netListMsg = packet->GetMsg()->mutable_gamelistspectatorjoinedmessage(); + netListMsg->set_gameid(gameId); + netListMsg->set_playerid(playerId); + + m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); +} + +void +ServerLobbyThread::NotifySpectatorLeftGame(unsigned gameId, unsigned playerId) +{ + // Send notification to players in lobby. + boost::shared_ptr packet(new NetPacket); + packet->GetMsg()->set_messagetype(PokerTHMessage::Type_GameListSpectatorLeftMessage); + GameListSpectatorLeftMessage *netListMsg = packet->GetMsg()->mutable_gamelistspectatorleftmessage(); + netListMsg->set_gameid(gameId); + netListMsg->set_playerid(playerId); + + m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); +} + void ServerLobbyThread::NotifyGameAdminChanged(unsigned gameId, unsigned newAdminPlayerId) { @@ -1315,7 +1343,7 @@ ServerLobbyThread::HandleNetPacketCreateGame(boost::shared_ptr sess // Add game to list of games. InternalAddGame(game); - MoveSessionToGame(game, session, newGame.autoleave()); + MoveSessionToGame(game, session, newGame.autoleave(), false); } } @@ -1332,8 +1360,9 @@ ServerLobbyThread::HandleNetPacketJoinGame(boost::shared_ptr sessio if (pos != m_gameMap.end()) { boost::shared_ptr game = pos->second; const GameData &tmpData = game->GetGameData(); + // As guest, you are only allowed to join normal games or to join as spectator. if (session->GetPlayerData()->GetRights() == PLAYER_RIGHTS_GUEST - && tmpData.gameType != GAME_TYPE_NORMAL) { + && tmpData.gameType != GAME_TYPE_NORMAL && !joinGame.spectateonly()) { SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_GUEST_FORBIDDEN); } else if (tmpData.gameType == GAME_TYPE_INVITE_ONLY && !game->IsPlayerInvited(session->GetPlayerData()->GetUniqueId())) { @@ -1341,13 +1370,14 @@ ServerLobbyThread::HandleNetPacketJoinGame(boost::shared_ptr sessio } else if (!game->CheckPassword(password)) { SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_INVALID_PASSWORD); } else if (tmpData.gameType == GAME_TYPE_RANKING + && !joinGame.spectateonly() && session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR && session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4V6 && session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4 && game->IsClientAddressConnected(session->GetClientAddr())) { SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_IP_BLOCKED); } else { - MoveSessionToGame(game, session, joinGame.autoleave()); + MoveSessionToGame(game, session, joinGame.autoleave(), joinGame.spectateonly()); } } else { SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_GAME_INVALID); @@ -1362,7 +1392,7 @@ ServerLobbyThread::HandleNetPacketRejoinGame(boost::shared_ptr sess if (pos != m_gameMap.end()) { boost::shared_ptr game = pos->second; - MoveSessionToGame(game, session, rejoinGame.autoleave()); + MoveSessionToGame(game, session, rejoinGame.autoleave(), false); } else { SendJoinGameFailed(session, rejoinGame.gameid(), NTF_NET_JOIN_GAME_INVALID); } diff --git a/src/net/common/sessionmanager.cpp b/src/net/common/sessionmanager.cpp index 8bc53b13..3d3f545b 100644 --- a/src/net/common/sessionmanager.cpp +++ b/src/net/common/sessionmanager.cpp @@ -169,7 +169,7 @@ SessionManager::GetPlayerDataList() const } PlayerIdList -SessionManager::GetPlayerIdList(SessionData::State state) const +SessionManager::GetPlayerIdList(int state) const { PlayerIdList playerList; boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex); @@ -179,7 +179,7 @@ SessionManager::GetPlayerIdList(SessionData::State state) const while (session_i != session_end) { // Get all players in the game. - if (session_i->second->GetState() == state) { + if (session_i->second->GetState() & state != 0) { playerList.push_back(session_i->second->GetPlayerData()->GetUniqueId()); } ++session_i; @@ -319,7 +319,7 @@ SessionManager::GetEstablishedSessionCount() } void -SessionManager::SendToAllSessions(SenderHelper &sender, boost::shared_ptr packet, SessionData::State state) +SessionManager::SendToAllSessions(SenderHelper &sender, boost::shared_ptr packet, int state) { boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex); @@ -331,14 +331,14 @@ SessionManager::SendToAllSessions(SenderHelper &sender, boost::shared_ptrsecond->GetState() == state) + if (i->second->GetState() & state != 0) sender.Send(i->second, packet); ++i; } } void -SessionManager::SendLobbyMsgToAllSessions(SenderHelper &sender, boost::shared_ptr packet, SessionData::State state) +SessionManager::SendLobbyMsgToAllSessions(SenderHelper &sender, boost::shared_ptr packet, int state) { boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex); @@ -350,14 +350,14 @@ SessionManager::SendLobbyMsgToAllSessions(SenderHelper &sender, boost::shared_pt throw ServerException(__FILE__, __LINE__, ERR_NET_INVALID_SESSION, 0); // Send each client (with a certain state) a copy of the packet. - if (i->second->GetState() == state && i->second->WantsLobbyMsg()) + if (i->second->GetState() & state != 0 && i->second->WantsLobbyMsg()) sender.Send(i->second, packet); ++i; } } void -SessionManager::SendToAllButOneSessions(SenderHelper &sender, boost::shared_ptr packet, SessionId except, SessionData::State state) +SessionManager::SendToAllButOneSessions(SenderHelper &sender, boost::shared_ptr packet, SessionId except, int state) { boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex); @@ -366,7 +366,7 @@ SessionManager::SendToAllButOneSessions(SenderHelper &sender, boost::shared_ptr< while (i != end) { // Send each fully connected client but one a copy of the packet. - if (i->second->GetState() == state) + if (i->second->GetState() & state != 0) if (i->first != except) sender.Send(i->second, packet); ++i; diff --git a/src/net/servergame.h b/src/net/servergame.h index 1d731d28..6d74b4d8 100644 --- a/src/net/servergame.h +++ b/src/net/servergame.h @@ -66,7 +66,7 @@ public: const std::string &GetName() const; unsigned GetCreatorDBId() const; - void AddSession(boost::shared_ptr session); + void AddSession(boost::shared_ptr session, bool spectateOnly); void RemovePlayer(unsigned playerId, unsigned errorCode); void MutePlayer(unsigned playerId, bool mute); void MarkPlayerAsInactive(unsigned playerId); diff --git a/src/net/servergamestate.h b/src/net/servergamestate.h index ca0ca57c..3999a3bd 100644 --- a/src/net/servergamestate.h +++ b/src/net/servergamestate.h @@ -60,8 +60,10 @@ public: virtual void NotifyGameAdminChanged(boost::shared_ptr server) = 0; virtual void NotifySessionRemoved(boost::shared_ptr server) = 0; - // Handling of a new session. - virtual void HandleNewSession(boost::shared_ptr server, boost::shared_ptr session) = 0; + // Handling of a new player session. + virtual void HandleNewPlayer(boost::shared_ptr server, boost::shared_ptr session) = 0; + // Handling of a new spectator session. + virtual void HandleNewSpectator(boost::shared_ptr server, boost::shared_ptr session) = 0; // Main processing function of the current state. virtual void ProcessPacket(boost::shared_ptr server, boost::shared_ptr session, boost::shared_ptr packet) = 0; @@ -78,9 +80,10 @@ public: virtual void ProcessPacket(boost::shared_ptr server, boost::shared_ptr session, boost::shared_ptr packet); static boost::shared_ptr CreateNetPacketPlayerJoined(unsigned gameId, const PlayerData &playerData); - static boost::shared_ptr CreateNetPacketJoinGameAck(const ServerGame &server, const PlayerData &playerData); + static boost::shared_ptr CreateNetPacketSpectatorJoined(unsigned gameId, const PlayerData &playerData); + static boost::shared_ptr CreateNetPacketJoinGameAck(const ServerGame &server, const PlayerData &playerData, bool spectateOnly); - static void AcceptNewSession(boost::shared_ptr server, boost::shared_ptr session); + static void AcceptNewSession(boost::shared_ptr server, boost::shared_ptr session, bool spectateOnly); protected: @@ -100,7 +103,8 @@ public: virtual void NotifyGameAdminChanged(boost::shared_ptr server); virtual void NotifySessionRemoved(boost::shared_ptr server); - virtual void HandleNewSession(boost::shared_ptr server, boost::shared_ptr session); + virtual void HandleNewPlayer(boost::shared_ptr server, boost::shared_ptr session); + virtual void HandleNewSpectator(boost::shared_ptr server, boost::shared_ptr session); protected: ServerGameStateInit(); @@ -132,7 +136,8 @@ public: virtual void NotifyGameAdminChanged(boost::shared_ptr /*server*/) {} virtual void NotifySessionRemoved(boost::shared_ptr /*server*/) {} - virtual void HandleNewSession(boost::shared_ptr server, boost::shared_ptr session); + virtual void HandleNewPlayer(boost::shared_ptr server, boost::shared_ptr session); + virtual void HandleNewSpectator(boost::shared_ptr server, boost::shared_ptr session); protected: ServerGameStateStartGame(); @@ -150,7 +155,8 @@ class AbstractServerGameStateRunning : public AbstractServerGameStateReceiving public: virtual ~AbstractServerGameStateRunning(); - virtual void HandleNewSession(boost::shared_ptr server, boost::shared_ptr session); + virtual void HandleNewPlayer(boost::shared_ptr server, boost::shared_ptr session); + virtual void HandleNewSpectator(boost::shared_ptr server, boost::shared_ptr session); protected: virtual void InternalProcessPacket(boost::shared_ptr server, boost::shared_ptr session, boost::shared_ptr packet); @@ -252,7 +258,8 @@ public: virtual void NotifySessionRemoved(boost::shared_ptr /*server*/) {} // Handling of a new session. - virtual void HandleNewSession(boost::shared_ptr /*server*/, boost::shared_ptr /*session*/) {} + virtual void HandleNewPlayer(boost::shared_ptr /*server*/, boost::shared_ptr /*session*/) {} + virtual void HandleNewSpectator(boost::shared_ptr /*server*/, boost::shared_ptr /*session*/) {} // Main processing function of the current state. virtual void ProcessPacket(boost::shared_ptr /*server*/, boost::shared_ptr /*session*/, boost::shared_ptr /*packet*/) {} diff --git a/src/net/serverlobbythread.h b/src/net/serverlobbythread.h index fd93a4aa..ee675e7d 100644 --- a/src/net/serverlobbythread.h +++ b/src/net/serverlobbythread.h @@ -72,13 +72,15 @@ public: void AddConnection(boost::shared_ptr sock); void ReAddSession(boost::shared_ptr session, int reason, unsigned gameId); - void MoveSessionToGame(boost::shared_ptr game, boost::shared_ptr session, bool autoLeave); + void MoveSessionToGame(boost::shared_ptr game, boost::shared_ptr session, bool autoLeave, bool spectateOnly); void SessionError(boost::shared_ptr session, int errorCode); void ResubscribeLobbyMsg(boost::shared_ptr session); void NotifyPlayerJoinedLobby(unsigned playerId); void NotifyPlayerLeftLobby(unsigned playerId); void NotifyPlayerJoinedGame(unsigned gameId, unsigned playerId); void NotifyPlayerLeftGame(unsigned gameId, unsigned playerId); + void NotifySpectatorJoinedGame(unsigned gameId, unsigned playerId); + void NotifySpectatorLeftGame(unsigned gameId, unsigned playerId); void NotifyGameAdminChanged(unsigned gameId, unsigned newAdminPlayerId); void NotifyStartingGame(unsigned gameId); void NotifyReopeningGame(unsigned gameId); diff --git a/src/net/sessiondata.h b/src/net/sessiondata.h index 20347722..591b5272 100644 --- a/src/net/sessiondata.h +++ b/src/net/sessiondata.h @@ -58,7 +58,7 @@ class ServerGame; class SessionData : public boost::enable_shared_from_this { public: - enum State { Init, ReceivingAvatar, Established, Game, Closed }; + enum State { Init = 1, ReceivingAvatar = 2, Established = 4, Game = 8, Spectating = 16, Closed = 32 }; SessionData(boost::shared_ptr sock, SessionId id, SessionDataCallback &cb, boost::asio::io_service &ioService); ~SessionData(); diff --git a/src/net/sessionmanager.h b/src/net/sessionmanager.h index 526f5159..03247215 100644 --- a/src/net/sessionmanager.h +++ b/src/net/sessionmanager.h @@ -61,7 +61,7 @@ public: boost::shared_ptr GetSessionByUniquePlayerId(unsigned uniqueId, bool initSessions = false) const; PlayerDataList GetPlayerDataList() const; - PlayerIdList GetPlayerIdList(SessionData::State state) const; + PlayerIdList GetPlayerIdList(int state) const; bool IsPlayerConnected(const std::string &playerName) const; bool IsPlayerConnected(unsigned uniqueId) const; bool IsClientAddressConnected(const std::string &clientAddress) const; @@ -75,9 +75,9 @@ public: unsigned GetRawSessionCount(); unsigned GetEstablishedSessionCount(); - void SendToAllSessions(SenderHelper &sender, boost::shared_ptr packet, SessionData::State state); - void SendLobbyMsgToAllSessions(SenderHelper &sender, boost::shared_ptr packet, SessionData::State state); - void SendToAllButOneSessions(SenderHelper &sender, boost::shared_ptr packet, SessionId except, SessionData::State state); + void SendToAllSessions(SenderHelper &sender, boost::shared_ptr packet, int state); + void SendLobbyMsgToAllSessions(SenderHelper &sender, boost::shared_ptr packet, int state); + void SendToAllButOneSessions(SenderHelper &sender, boost::shared_ptr packet, SessionId except, int state); protected: diff --git a/src/third_party/protobuf/pokerth.pb.cc b/src/third_party/protobuf/pokerth.pb.cc index 43921e79..0f3c20e9 100644 --- a/src/third_party/protobuf/pokerth.pb.cc +++ b/src/third_party/protobuf/pokerth.pb.cc @@ -8012,6 +8012,7 @@ void RejoinExistingGameMessage::Swap(RejoinExistingGameMessage* other) { const int JoinGameAckMessage::kGameIdFieldNumber; const int JoinGameAckMessage::kAreYouGameAdminFieldNumber; const int JoinGameAckMessage::kGameInfoFieldNumber; +const int JoinGameAckMessage::kSpectateOnlyFieldNumber; #endif // !_MSC_VER JoinGameAckMessage::JoinGameAckMessage() @@ -8039,6 +8040,7 @@ void JoinGameAckMessage::SharedCtor() { gameid_ = 0u; areyougameadmin_ = false; gameinfo_ = NULL; + spectateonly_ = false; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -8083,6 +8085,7 @@ void JoinGameAckMessage::Clear() { if (has_gameinfo()) { if (gameinfo_ != NULL) gameinfo_->::NetGameInfo::Clear(); } + spectateonly_ = false; } ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -8134,6 +8137,22 @@ bool JoinGameAckMessage::MergePartialFromCodedStream( } else { goto handle_uninterpreted; } + if (input->ExpectTag(32)) goto parse_spectateOnly; + break; + } + + // optional bool spectateOnly = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_spectateOnly: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &spectateonly_))); + set_has_spectateonly(); + } else { + goto handle_uninterpreted; + } if (input->ExpectAtEnd()) return true; break; } @@ -8171,6 +8190,11 @@ void JoinGameAckMessage::SerializeWithCachedSizes( 3, this->gameinfo(), output); } + // optional bool spectateOnly = 4; + if (has_spectateonly()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->spectateonly(), output); + } + } int JoinGameAckMessage::ByteSize() const { @@ -8196,6 +8220,11 @@ int JoinGameAckMessage::ByteSize() const { this->gameinfo()); } + // optional bool spectateOnly = 4; + if (has_spectateonly()) { + total_size += 1 + 1; + } + } GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; @@ -8220,6 +8249,9 @@ void JoinGameAckMessage::MergeFrom(const JoinGameAckMessage& from) { if (from.has_gameinfo()) { mutable_gameinfo()->::NetGameInfo::MergeFrom(from.gameinfo()); } + if (from.has_spectateonly()) { + set_spectateonly(from.spectateonly()); + } } } @@ -8243,6 +8275,7 @@ void JoinGameAckMessage::Swap(JoinGameAckMessage* other) { std::swap(gameid_, other->gameid_); std::swap(areyougameadmin_, other->areyougameadmin_); std::swap(gameinfo_, other->gameinfo_); + std::swap(spectateonly_, other->spectateonly_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } diff --git a/src/third_party/protobuf/pokerth.pb.h b/src/third_party/protobuf/pokerth.pb.h index c8e237b3..95a07c44 100644 --- a/src/third_party/protobuf/pokerth.pb.h +++ b/src/third_party/protobuf/pokerth.pb.h @@ -3950,6 +3950,13 @@ class JoinGameAckMessage : public ::google::protobuf::MessageLite { inline ::NetGameInfo* release_gameinfo(); inline void set_allocated_gameinfo(::NetGameInfo* gameinfo); + // optional bool spectateOnly = 4; + inline bool has_spectateonly() const; + inline void clear_spectateonly(); + static const int kSpectateOnlyFieldNumber = 4; + inline bool spectateonly() const; + inline void set_spectateonly(bool value); + // @@protoc_insertion_point(class_scope:JoinGameAckMessage) private: inline void set_has_gameid(); @@ -3958,13 +3965,16 @@ class JoinGameAckMessage : public ::google::protobuf::MessageLite { inline void clear_has_areyougameadmin(); inline void set_has_gameinfo(); inline void clear_has_gameinfo(); + inline void set_has_spectateonly(); + inline void clear_has_spectateonly(); ::google::protobuf::uint32 gameid_; bool areyougameadmin_; + bool spectateonly_; ::NetGameInfo* gameinfo_; mutable int _cached_size_; - ::google::protobuf::uint32 _has_bits_[(3 + 31) / 32]; + ::google::protobuf::uint32 _has_bits_[(4 + 31) / 32]; #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER friend void protobuf_AddDesc_pokerth_2eproto_impl(); @@ -14528,6 +14538,28 @@ inline void JoinGameAckMessage::set_allocated_gameinfo(::NetGameInfo* gameinfo) } } +// optional bool spectateOnly = 4; +inline bool JoinGameAckMessage::has_spectateonly() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void JoinGameAckMessage::set_has_spectateonly() { + _has_bits_[0] |= 0x00000008u; +} +inline void JoinGameAckMessage::clear_has_spectateonly() { + _has_bits_[0] &= ~0x00000008u; +} +inline void JoinGameAckMessage::clear_spectateonly() { + spectateonly_ = false; + clear_has_spectateonly(); +} +inline bool JoinGameAckMessage::spectateonly() const { + return spectateonly_; +} +inline void JoinGameAckMessage::set_spectateonly(bool value) { + set_has_spectateonly(); + spectateonly_ = value; +} + // ------------------------------------------------------------------- // JoinGameFailedMessage diff --git a/tests/src/de/pokerth/protocol/ProtoBuf.java b/tests/src/de/pokerth/protocol/ProtoBuf.java index 48404e34..d3fb8bbb 100644 --- a/tests/src/de/pokerth/protocol/ProtoBuf.java +++ b/tests/src/de/pokerth/protocol/ProtoBuf.java @@ -17979,6 +17979,16 @@ public final class ProtoBuf { * required .NetGameInfo gameInfo = 3; */ de.pokerth.protocol.ProtoBuf.NetGameInfo getGameInfo(); + + // optional bool spectateOnly = 4; + /** + * optional bool spectateOnly = 4; + */ + boolean hasSpectateOnly(); + /** + * optional bool spectateOnly = 4; + */ + boolean getSpectateOnly(); } /** * Protobuf type {@code JoinGameAckMessage} @@ -18046,6 +18056,11 @@ public final class ProtoBuf { bitField0_ |= 0x00000004; break; } + case 32: { + bitField0_ |= 0x00000008; + spectateOnly_ = input.readBool(); + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -18121,10 +18136,27 @@ public final class ProtoBuf { return gameInfo_; } + // optional bool spectateOnly = 4; + public static final int SPECTATEONLY_FIELD_NUMBER = 4; + private boolean spectateOnly_; + /** + * optional bool spectateOnly = 4; + */ + public boolean hasSpectateOnly() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional bool spectateOnly = 4; + */ + public boolean getSpectateOnly() { + return spectateOnly_; + } + private void initFields() { gameId_ = 0; areYouGameAdmin_ = false; gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); + spectateOnly_ = false; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -18163,6 +18195,9 @@ public final class ProtoBuf { if (((bitField0_ & 0x00000004) == 0x00000004)) { output.writeMessage(3, gameInfo_); } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeBool(4, spectateOnly_); + } } private int memoizedSerializedSize = -1; @@ -18183,6 +18218,10 @@ public final class ProtoBuf { size += com.google.protobuf.CodedOutputStream .computeMessageSize(3, gameInfo_); } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(4, spectateOnly_); + } memoizedSerializedSize = size; return size; } @@ -18280,6 +18319,8 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000002); gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); bitField0_ = (bitField0_ & ~0x00000004); + spectateOnly_ = false; + bitField0_ = (bitField0_ & ~0x00000008); return this; } @@ -18315,6 +18356,10 @@ public final class ProtoBuf { to_bitField0_ |= 0x00000004; } result.gameInfo_ = gameInfo_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.spectateOnly_ = spectateOnly_; result.bitField0_ = to_bitField0_; return result; } @@ -18330,6 +18375,9 @@ public final class ProtoBuf { if (other.hasGameInfo()) { mergeGameInfo(other.getGameInfo()); } + if (other.hasSpectateOnly()) { + setSpectateOnly(other.getSpectateOnly()); + } return this; } @@ -18499,6 +18547,39 @@ public final class ProtoBuf { return this; } + // optional bool spectateOnly = 4; + private boolean spectateOnly_ ; + /** + * optional bool spectateOnly = 4; + */ + public boolean hasSpectateOnly() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + /** + * optional bool spectateOnly = 4; + */ + public boolean getSpectateOnly() { + return spectateOnly_; + } + /** + * optional bool spectateOnly = 4; + */ + public Builder setSpectateOnly(boolean value) { + bitField0_ |= 0x00000008; + spectateOnly_ = value; + + return this; + } + /** + * optional bool spectateOnly = 4; + */ + public Builder clearSpectateOnly() { + bitField0_ = (bitField0_ & ~0x00000008); + spectateOnly_ = false; + + return this; + } + // @@protoc_insertion_point(builder_scope:JoinGameAckMessage) } From cbd6b40f851d7e49994635ac3935a60c678b48fe Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 16 Jun 2013 15:56:34 +0200 Subject: [PATCH 005/128] Fixing operator order when checking for state bit. --- src/net/common/sessionmanager.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/net/common/sessionmanager.cpp b/src/net/common/sessionmanager.cpp index 3d3f545b..628057ac 100644 --- a/src/net/common/sessionmanager.cpp +++ b/src/net/common/sessionmanager.cpp @@ -179,7 +179,7 @@ SessionManager::GetPlayerIdList(int state) const while (session_i != session_end) { // Get all players in the game. - if (session_i->second->GetState() & state != 0) { + if ((session_i->second->GetState() & state) != 0) { playerList.push_back(session_i->second->GetPlayerData()->GetUniqueId()); } ++session_i; @@ -331,7 +331,7 @@ SessionManager::SendToAllSessions(SenderHelper &sender, boost::shared_ptrsecond->GetState() & state != 0) + if ((i->second->GetState() & state) != 0) sender.Send(i->second, packet); ++i; } @@ -350,7 +350,7 @@ SessionManager::SendLobbyMsgToAllSessions(SenderHelper &sender, boost::shared_pt throw ServerException(__FILE__, __LINE__, ERR_NET_INVALID_SESSION, 0); // Send each client (with a certain state) a copy of the packet. - if (i->second->GetState() & state != 0 && i->second->WantsLobbyMsg()) + if ((i->second->GetState() & state) != 0 && i->second->WantsLobbyMsg()) sender.Send(i->second, packet); ++i; } @@ -366,7 +366,7 @@ SessionManager::SendToAllButOneSessions(SenderHelper &sender, boost::shared_ptr< while (i != end) { // Send each fully connected client but one a copy of the packet. - if (i->second->GetState() & state != 0) + if ((i->second->GetState() & state) != 0) if (i->first != except) sender.Send(i->second, packet); ++i; From 48aa2c2cec92104d62ce6e7ea20a51887a372533 Mon Sep 17 00:00:00 2001 From: doitux Date: Mon, 17 Jun 2013 09:52:41 +0200 Subject: [PATCH 006/128] add vietnamese translation (thx to phongtom), complete translation source update --- data/translations/pokerth_vi.qm | Bin 0 -> 204966 bytes pokerth_game.pro | 3 +- .../qt/settingsdialog/settingsdialogimpl.cpp | 1 + ts/pokerth_START_HERE.ts | 1078 +-- ts/pokerth_af.ts | 1048 +-- ts/pokerth_bg.ts | 1050 +-- ts/pokerth_ca.ts | 1048 +-- ts/pokerth_cz.ts | 56 +- ts/pokerth_de.ts | 1046 +-- ts/pokerth_dk.ts | 1050 +-- ts/pokerth_es.ts | 1046 +-- ts/pokerth_fi.ts | 1046 +-- ts/pokerth_fr.ts | 1046 +-- ts/pokerth_gd.ts | 1877 ++--- ts/pokerth_gl.ts | 1046 +-- ts/pokerth_gr.ts | 1050 +-- ts/pokerth_hu.ts | 1046 +-- ts/pokerth_it.ts | 1046 +-- ts/pokerth_jp.ts | 1046 +-- ts/pokerth_lt.ts | 1048 +-- ts/pokerth_nl.ts | 1046 +-- ts/pokerth_no.ts | 1048 +-- ts/pokerth_pl.ts | 1046 +-- ts/pokerth_ptbr.ts | 56 +- ts/pokerth_ptpt.ts | 1046 +-- ts/pokerth_ru.ts | 1046 +-- ts/pokerth_sk.ts | 1046 +-- ts/pokerth_sv.ts | 1050 +-- ts/pokerth_ta.ts | 1048 +-- ts/pokerth_tr.ts | 1050 +-- ts/pokerth_vi.ts | 6202 +++++++++++++++++ ts/pokerth_zhcn.ts | 1046 +-- 32 files changed, 21301 insertions(+), 13106 deletions(-) create mode 100644 data/translations/pokerth_vi.qm create mode 100644 ts/pokerth_vi.ts diff --git a/data/translations/pokerth_vi.qm b/data/translations/pokerth_vi.qm new file mode 100644 index 0000000000000000000000000000000000000000..ee9dcc206440cc55da229aec6b1444932c1c83df GIT binary patch literal 204966 zcmeEP2VhiH*1qp$CS}qPvHos+1`$+}&_s+FO+qI?ge;b|?90qcGGt14Gm{Wpuz+1r z*R{L4=-Ruky^E-bSk|t)ilS>-%ev~iHvGSH?`zWsMFn@3H8+`g@0N4VIrsEC{tn-^ zkAHmOS!;IM;r`z)zxVG=jO}m~V{B(8)yx*{z7f$*J%P8fdy;59yNGsB6zvEm-xNUG z%A`vMqiti-Uv6VejxcH8@uHpD%3FERWX1~iWAdQ$8FSBK(z8Q&D}Q@4W0U`kahLK| zcE=c-a{!b68s@G1t&6e4S1{?NM|mrMcQ8Nv<>**3E9qVDPm-b-N@e_C}YgaPYJ7+WLn`4>lpNp7u z;-k!6jOR~(gt>RT0P~qB+P_cYt^CdF%sp;bCY^UBb5B7(-;QGL)?1nMrw5tayO>GK zKW6U0Sxox#4$R&A2Ylbb+zU=;(t3rtPjNBnxe#yVyZ2}Ab64W;^F_OUE^p=agPHr9 z-!kcqi9MO=(F>O`Y27odY+M7A?l^)~ z{`PYwxBr%HciJaR8h$PNzX9lfQ8!ZteTwtt)9w8-tiuj9{(*HcO>3>v4;j^!r^{>y>*k>5RMB{wwkMnK!UG2cE~Izem}eLoweEo?vtOk7Uw0 ztJ$0-%dvldV{J=LV$$eGSlcO>_eBS=wnu)4b{T8?_95)&3^wy2QA&7N!OOKgFDgxO;gyxfeB1LW+6Lx$u~^CVsCcvmDv9` z{Ae#@(#<#WR$lV4XfMB;9efw&ee);m;0FNbrRTHX_@2RjF9zD*$E5piV!xe$exDr4 zTltR5Sg_(ROuq4b79x0z8YnrfROSG%LkSfl{{&sCA4cPW#CNsA*;3446 zwf~X^UNe$0&u^rv=*e2w{BI93YP6yR^K6s_BdNmp+r^?tFAN#3ba z|FxLca}P5{T-nRL&A(v5#Rm`Niw-pYMvNcUZX z@#{{JR)%+B(gin3t3SVs$wxdPJ@LB`lmC04^tAgDCSA9dxAI@sNH0|F&E%sON-qq% zpUEdLl3txSl1VpSF1`Lo@P$+Rq!0c%p2_FkAXi>^5tCQHBM)12HTarGt{ZU|lO}mZ zJ7Zto%Ez81j~FzXN!1_94J%G$@(F9?ef5{Y?=Ir4{B5l~6a0(~9V*W~s+mdq>$3VX z=wj4z-pWP2M*E4}er*FQDA-Z%90NQ*s#KnTRwDz0ko8A#rpOQSR$ewhUi32XX{#pr z=t{u9^gz*eJt&{P9{9NaB>93}YZ)81wS47C?}Hw8m#;o)8k3~~@*T$lo@cF(uO zN%t1XkI%cGNoQBetG9iP$uHd_uX%GOlP`Nweo+Enx&3wdrAO`qJf4(aId2S;|L~^# zhU;jCPUR0L{}o5wAo-JC;O#+=%m00BIr?dlzg)QzeCxvkR$Rnn?_~uAr#3Koxl~Z% z!+firFDN+@{P)@G3x0Ju@bmBY7Yy-y$>fWs73>rXG3 z`qCRrzMd7#-VXfbr2)K^zpE(le{?)!m4_4rh;Q8Rhl0R^)IL`bU4?Ve_l;2|I(&Un!Rg(f17GS3&bSEghq?;R9=rvU!nYTk z-93j%LxTku9k7f^Pk&Z$+3<@P`});_8wSp2^0k428%EDza%x<>BV@ZcZxP#Qt-;zz@PiJEcoDV!10+y1^=0M6O&dQRj_{1D)5hMUGB$k0Umfo z`>}`?2GF~KCW@w-pu5)KXlda@EwyL@VNGK4`y#+47u>$Emm;a!rnDobkUEP1VgvrZ(@6zvklF1(rbwy@lK7R?hj=BZw zZ1cK~esfDE?S7hT$)TSxR&j`H$$zo`7j5ra`VY`^=nL0z1i4eW?!kGm-v_Rf z-a3r2rLVb88R-T($6Tj9zL-g|!LBo1SpUA4igxPlyp=uEU1xO%5&Y&->nYowo{fHtSu8HJHbm zM$x{qjJNVP2e~eO3;XlQ9(PG1TlvmOXt6I(k8)jenuONJ zTlvlfXkGaG4`_?gKJ2=7_+?D03ySvZ=Xfg@t`M!-@49aP#Z2zM)pf&?1DISg&~;<~ z3h;~7t|wMKj`yzQt?cu-o_Y5TCf)s@>-jB1*oR$3J8duC%AR9gFWd`!zt81*@$;jx zzi+r+8i(~B?{U4nHMl--0l!aL?E0Vx`xYMQ`ryBfkUNT8pL~b&W#S0YUhyz*%VjU3cUTh z>s#VOe_HBhtJgF6sm1QXEAjVZFT0Cwo5|$2-gOs$Qi1b(Pq*iI;L{mLxy$CwWNhWX z-DT&29)JHEcg4IlOuB1;d+U>cpJ&#&x7!kM)n~egELh8Ab*+2YJ%G7rSs=IgC1SVZR&D}c!`|+p8+aCdUAM8GR67cNR748dmew)dcZ0o-8LiB$`v-^)r z(a%+{y8n0;);IoQ_a%SB=ks=RUm7@q$(J{{FTZ;s98L6_^?Z|ng2s{5yCedqI5)+W2( zoL9@_tFCmfJ8Bt|PWyxVy?1eryS8!vbDRhKxKy;->+Ua}eT_-;yoCk(pU31A&o3+{ ze1BwN;g&n?hI3sKZOgl&?ds*NT(*^Hm;AA?YV!4r4ZerB(q$hMD(5#a`RRQNciRi= zx%#ofvE%n=((i6B+;93$khh*LoOCVt#x+X|r#}$^KRc#yX6H@V_vZ?`UfdD#NPpox z=_AIrxVmuOD*V0nyTb0v4`cFvGYW%WKMeisRNl&8-(DDLoCZ1YY0*w!#9LV%R2Z#! z5b~a0ctkts;CEXV9yR<{?Bl}1V<7j+|EeooGHfyQy0B3vaGm&*Xns6yEjRGvKSP!h6=@ z@0ZsUKJdk0?C0HukMyJUKEqr2=93B^tpr{T_)p>EP1wKS+`7{v=+Ye_VY~cUQzh|oefO>>(hlFo(ej+!Cm;(Ac;w1mlX{- z=QFJ9uA(hskaKT4u4v1DX-t}4R#ZLx9wz(tE*kdD3MO4Pv8e7z;M=DQiblQwIb*x+ ziW=`Lz&=bXnsNfs=>i3Rfa&%SE!b!k~c*zi>^6k9h1H~rRchU051CZMYm0LGx^qMiq@0?e?R+k(Tit4 zi}nAz=#^K%&!*f_^y)TMkn2|${r&oC@S!V<-dJ}T`0?+G)|G6*+)&A+zx5V<^Vmnw|8_5~IOJIH!Ly3D=>%Q`FDu^u7U0F1 z{^DOf__&&6I@t%)^k6d?k@m`0iIM*Y^77?)ww? z&551gZ@r^uK3!8XTYBEb@82tfN#HiXz@cQE`c25E`Dh3 zw`iM+SG)|o{_C%bS51EdfB&QS@jLLo{(r?!v|@j*Dky&9OPpJMbBkX)6ziOMV2Lzx z3G|M=ON!rE#-wr2l~f*r@z1}hWWZwRxwqU{vg_@b$BS3;R=)ell6`jBALsPpCDR|n zyf3aOnE^dnRZZ&ij|+yuYO+7`+elx=%^;&AHGgzU8faTv;hl&R(`RuTC zaXx!WPUzDiH!LkV>6ixSi9<@x{{2GOQ%>fsT-aT5!PVeXi_a{%@ZC?bKd+Wt_(dCI z1ICtIyg&F;&3(L;-Pe{}!Z1#Mf5~Mv4NOw>lDm#Nn91_Al83Ls`P^|+$;0;!2cI2Z zva)qg$lZIDtU3boT>Vep%3qHyS@kgfUNE-g@r!YOEPt!y`8PqATO3*P>Pdjt1-q2I zdh=m8|F$Z5Z_!muuDo8f=MFFV_(|}C>!+3cYv4*ecU8&1TAs%`)RIp|Vm)iVEcxPm zob#8RQ1aioF6do1m3*}m=-{ro9@hH__~Ud>$pG++x9{`pFsqu$1t)uU?85gge%{J~ zvppks1wI_P(lct^9@wwBp3w(A$>d2>JbNBmz@%M{@$7Z~F-%_cqNic-5S)vnJPm|b z`&}s7Y4>`j+;R!v@SbO8bBM{W@8@Yfpbhjpm$!1^*Pa9ZI2h;a3!a0&0)9U8G;ig* zN<7|UuzxrDJw89a|J@fJZTefFE03qE^)a0LeI9+_bKpDYdLqN{UiD3${sGIF{Qgd! zV@g*s`QnIY>2*6p&bvdjH$BE%dC6g()0&om4<76}>m=aYQ3rd7uGrv%Jj=(RpR+&p zT|HGbt zwWFViKeg6_eM#hsuDv>(8aTZT~X#+Q&O1cy@aGk!opUb(o-Qcu?t2n?pNqHh`bnidpF=+_I<<6B_H?gG$d|i1q#B&C(0TH!xPSvh2RVO1 z>BndF}2K#Z_XQitS-4*&lL+P5ucQN_+Crh7v@h~RO zJh1d{uWpaON0h$4JN|y6qjc@s#Y}#0Y3ZAtBbhw#Po?iI`JBl|t}Xpy`zq}Bx25Y( zS_WJA@UpVtzOV~ESGL6mXrDclxAM0ymTg^C!Q{_kWmTtr4!g_KWmRAL&@L|95&FJ- z{tji;Z$HDN#owUCelPAW8?tac^rR_e!;S*}+<8RV?mOb|T`w-%ee|Wkle^1mPEjEj zTwOMD1@z`yk1HDmeNYY_Q#N+&K}1yu>9zm4NQLL<1^nZBy zD$lQB54^j4)i&S*S0Nx{NLEukGCsd)4o6Kr=ORnpHUl&2&c(G#7A$V@sqZQ*yPGIs;=U22m0KO7@zhc(2+d$tsvEl&c zX42#fD-PXpEbP*YD%us$@2?hAbbR2096zC==bqogo^naW{NH`bq}}eRnE!jg`$(n*SKM&UlT5z*jfz{!@Z5dxR^0l`M9|%uiu-4*1AjTL;(^ydhZiy*TE)jr z(A(MvRQ%`Y+n|r{QaRw^JE0E`tsL+q=5y7e%0cG?-e(Q0+@@|1Cg1f!vvmG8W|vgRLt*cI-m9Q6tC@9YyRM?a1AU$U}t%-hRg|1GWD>x++=6bM)D zcLwmKaztg*Er6%{u*%jq0q2wMsGK_&{lC;&`I}YnxeXazdF&#rN= zw7Bx&mq4edZd3Wl{`Z1j*H=DuF6OtSrt;;r`$LXhTKTsF=EG;mD!gsz0<-5eD3{8GTGZ z7jtN=+2~r+C4%|mY`Oy`H2)Qt_Zxr?LHKP0R;eMRuzEZ-gpI^cj{{ob=^#FhG9Bx- z;SsI6j`th|bW-he7YkS2j@@$ZeX#0f^y9#R1jy5#zJYga=>Dcz4TZu{B@hM#6M(05 z_ybzKGGwIUF~R8VBG5*=%#ENYl(4RNyTV~WSw&Y}nl50U8JM-KrRqh#@x4_Kra@K* zidpEe7442f+oSOPQ6}noSkJU?QV;gcpos){RP!CFrs1UCsA=lem|qKCQojZ+Q#w=u&2{)WF3Z**Y>)Hm(40{ZoXc1=DJ1+@|V3tUTwt2Fv( z8XY`j1@)M6h4yU4+7yhw7CfNV+N|^Em_(Y0TGc~FR)Z+DU_^^z#hV#-X9gO2&XCehBt2MSUuy6kwdfQ8cFO zS}3ZthPySrZA#LS+pFmje>ep8#@XC(r9DQh41WsArwfvg`AqeY(ZoZe8;Z?iGBQ7Q zFpdtv41fhyH*mI~8`#om9wZKi(uth|KH{jjpFaz%;Rh$-D8ZGm)ewHHgQ2=d_xA!W zN>GbL)J~Gm02G`AJpr{}(@E$c23^wJrAFJr;Xs50Flo2!LN8{#hT(XoHDEp@4EeBw z2IB;_(%~1+IEj(Jhfkes6WC)2yy*mG!szt)Onq`87&QJBMhDz%!91rqrWTkQOFRx1z*fTbWh%I!TB9DWa5i0m>=R4%#)zL5hU}p+r;)` zZB>_X((#hy2mq}i0>>xBKm}0+gmwa=e-Ou)ee?t%d)kYrm*6)LZwqD{m+8j(Lij@oY)dhO*$01EDlk`q% z+pyPU&!MB!)GSQ_(8k+O@r239O(vH4s1rIO37NeZpZ5=ok13)$j|U-yB+&-FNhX72 zw#p(^_mUvu)aBC%z|pEtxXALdF>-s=^XM^xHPcM8iL2j7*G}HS^t5K_-rPp z)kDu7G73K$L;ZbfztSI$LA(fYu}$goN4p%dDr8s9tHxj!f=$Sz6^mc>`2zvc`*D&5 zV8n~{DDC~0R1EcBjRm5H4KKBBpEO-lx$pI>kex?Yb1641FO)BIs9MQ;W7AG{UY}9x z=RyhzpeA?!{?;L)PeGlDHX+e>{OOX7hP}*5yEa7=EV#YVq9R)XBo4NmO9r-hZD42$ zY9;|q$PK2{ke-%<;EW`!C-20@rD@Yjy>TemqSK6aGE#wP|4FG3);*G>;&;om^BGn` z^AwT>TB>FezW)Fd8pxQaIN64_`IGhfjAWgea0@#7~ zxmZKyRMPh2kNO|uXm>EkBuGA?0gQukf z&OvUzgr6p+WfsXKmIT~X*e`_tj5NocYWCu20~TO$#Gg0V!NE)c&<16akb?68!qf)S zaU!DFAfL%WE}+>V6#X9!?Ci~qN2Y~kJkG%Btk^hU&9sr$*g1J2lePs6F%g$1x7oII zurHJIZCpfVhe3N5$50)c1M|4b>f%hFM0HLdoRg|kp*;DC*8zFq%Y`|)$CM7)HjO@C z-9(>1S~pt@hI^rD!B!si_Y}bjR6e7>5hiw3Z&BN|01sfe&$ORI{vhF>WQ7~JEE0ql z=NV2P?T}9B)Fdf|T0w0zDNF9Rh6r;_7nSB%bw5(os?A12poO|YmPwU^XW>!A6GejD8D|ch08DeJ$j$w#@ z8nCksaWleNc%UH`&IBN?VIg?aqHhQOO9S}s{2iaBqQjF80u6FQ zPAH5BqEIIed|mTuh}%F!kP4%;@a}=n>LQ5CAL{i-Rl;Gz_{6sjHX^-te7oK-A* z7dS8jeCR<3sZ}(?#)V)oaMMnM%m&QSbcnkx7-NE84TL*6Bdul=QUGoSKuDIiW}wA8 z7P6L#9u(?=Ff(_uCP!y=0Rs)3>&%-(#mf&Z=n z%07HE9&c-SP9V9;|Jn!d%s2X>w={@&Q9eU2Cvy5Egiq)>q1e~)o@n%b%tgaG>9-#I zM$ec%)L~u`{1Y?k;cS7dMG89t|Mg*pe*SC?p6S7iym+77+dY_zhPC#gRq@x}_-qkh zQyrc($E3B?p$~gy?U=2P78?D)oS(BB1D0ae+zuUo7BY18Oz76r; zTJRl>Yrh%6lMDF__rjc_3E%eN8$b4o;8)LgXGFpi_MGZ52JLPTqXqDkxntzKwV$Gy z*I-|w_({+qSacc?>B46w#OpC~kk6=}k4U`|<`5I5r^5KI9@x@@U8NPpe@`$Y91P?0 z^iRg($I`ub}7M%RY*&bqeQb+acn*K|dLfiWZMB2gXAs#;&vSKZ(lPaign z??Oat!}y>URh1C9$v)Nd@l01#TM(@_t@Ha-Lt?6H7%vo%Xnzl$q6g}{kqA2K8LkBU z$`MLmmp`i2M0!*&!bE#?t)@>`d-hfqdB$U4#LhO1uM>l{hkgCRn7>aoRKifSrb7+- z1O4?wXZnNfv4}E9#evW=bZ_xx#J^Ch->WBT{Mo1ZJG-LwV@8ZHzo*XYA!r5Fz}~d5 z9<%eB`O%slRaZMPk**q=c)b?viT3ZU1XaD$AF7Fld+JB@EU^A=4@aZnVBALmts@%u zfzF5LZ&Cm4fv~r`#vk&*?OKm15n!x8(RDSJ-Gl#V(F6ekIqN8kv4?4)Mq_IpkyPHx69{)vMno=KZbd`wPE zJl#_^6HoVqlZl(pn1>Sy8bYujAtUjia;~3_a5~^ZfJ~;tE%7KaS7{#~@le>Djw&J0 zkd-VR2T}_ZjNMq*zSaE%w_dq4%kI6+pQTD~(RSkrEp zJF}q}Vv9;7L=nd)Y@jeGqBz=j3cR52bPF3u#G)rj2-ES*V2(|MQ62avuxdkAkO+-B z%peBLG@;A}O_q*NzFZr(O13p=AkQ~QBHGZi)P`t! zzR||5x!mT7aKOA=MMk8J$3G^4FObZ-0DCtDQbZ8{NOB=Qk|<>)%3P!!kRgxshI(+A zF#d`{`dNUm`*^OjX-i(Y%sdemro{FAq)6Jo4dcRj{UEb`U~3ALu0WpKD12M5gC})z zvp32AX6U8}J|U0sJKUp3X~Yx&Ksh*TITsU8i||%5+a&C8;>$)fSn(Ii9Tq8%i7 zw*mSpIMny!a2>oiGW%~{{4M*ulW|VylX>p;!<{DIABHwhvwus?-Ha4A&ST8HXfHyw zi8sB@c^k#qzJc!rA2LIBNH-9UDlN}GM2B5M)JRwSR0 zCbxNUom^+1=RHoRuBmNr9Ea`3=RMgu4Z?Ek%=bwy)c}c2>!0A3taZaZDj|P7Z*M zON>Jri#Vj}hE_d14<*W!9#pTXR}k=ow|U@?BN}OwnSXVILjN;osVZH%*0GN>daQ@) z5k;TpVm5gfh&pduuy%O$&v68sXor7Jl?> zYN36bGj24-qFrGS)=7g2KnhHk^T)IO&)b@F(m; za^R1IL#evAVE4;Hqf{&kfAA`<^(KVm+kx%-t!?^6=&>t&D&raURCw=6TKFm~=9~uw`x4JX{)kDZl zD+*STvnqALaode$*FK!CnMa_5GO zvVK$X6s0%mXsJel>1HQfq|jh9#L=-f2Y!pPI>hJ50Y;&ciSxDLXJI@-AVqaxD&IqC zaUml_fcg-8l%P-5!Vsv$FM~+C%DBDarSf>dK(4`>PA*J=3qhmAOX7HmG)G)NeJUCy zg_(F#gEi5P0!Q$ZYV&T|VbXiBJuzQ1i4+0i#%(Zk8uAOV&}Fh)Wh&CGj#L-3WLCFAXXc&`FxN<2>>j zcX-jBT*r9>VYNY_2ymu^qvUm@55X}5o$~33skEou(~9zN+&Jl3c{pwyIOY>oQYETf z1AVGA|0>aObY?eHm{-*oH<>Z7WI%R$$`F49gNHaC>{L0 z-QwmxlpLkgjOO+_*Famr^G(g84X14oyq?m<%v&-|4M%*JPP28Ky~Z7Z;yg@!YS5<} zA*8CfIUiExaP@CUC8B&tl_-lO>L6uwlGljq9u&jnCn^P_&TzOV7J$cNm-#V7owaET zP`PtTIN%$q1;t0=HHRI3Qw+|jZm3b_z#|^ejLL;nL^~p`$iQ6}s9L!fqNRd8v8blk zgnN1r`xc5uHiJdYz`Y!PV@;;djjs*$8&NW>MwyEHh;)2|3XK#L#_K*t%r9}D8>&Q- zuY|`G@Eb#n=R~csPE>xxl~LyNCP2)%4C6m zpVl5hM1(n`tT7;BuXQa#7nyLjkY;-~hoHCo9QRfT2H9%AIZh3V8{Kq+2df*dQbvs! zF}7yZh>;_QE6!*u{1q1wGhDHQ8!YVqp59M4rJUrwpLy?RD*Zk0{UrNY4XjOO-BPoh zU7~)NFM0R#r^iGMJ02{amIuq$0^vzO3e0L)f=x@h*h4D)@uTW)@^yLL&2b9nbvIG> zcEfAfX4Ks%7%UP{qp0gnHH4KK1oip@it6)0;C0Hm-z!FH_s8>60_Pj#2P5C&FSU-j zUAcS?R!OH?M^Xjz_##(SL4Lz)l;`80M8$hbY0k$##m7Ho_C%AUPUXFb5+ktS_5nx9 z6HNubP}&IRyM5<@`CT0^UO}?l;fOt=`uExfl*!l_wf;wW!I7YMu`RK*1_Y^lI%9x2OJQLTOFLax}Jov`l z=iG|qHi2tV>=p6jZg4a5-%W%xAxa7P_}{iKFxmSj{C&i)={}W2?;rg=hx14(J1wq> zY6e%Q*t0xlnzUD^p2ZP%EO#DpT ztDogGN^vUYPl=!ElyLF_VRws{44kq4bc2~Nwn=U{3@${eg%PG>sCK z>31_K&1c1X2N5Gi#o1dCXO_JC>EnO%y6+Fa2XRAeBgD0+e4-bY9BT9VVH;9L|EHGt zQ&1njXbN$eRs6DH9-&G3f_8aLy8V%;S-flJQXnV7j4Cy}_l(>>d1 zX2gN%mQV68kS_0omQUG4#Gx1PPsn~i*;_u=$p0prZvcNS%=6}-&2CLQ7hk}eB1Wh% zG+BAb5<`0?JYz)9beR~%Uu$_Dy+K!?W_Lsr{$)7TKf1d(v>RyJaujo z)JYyU^XwyPBF{sV`=QO!?&QUylJ4E0RFYH0RhpFh-GP0y>C(BkBk_5BR77$Qd0O4H zX_cg%esJ0RKK)$#HOT6HLJkcw$ca%rJmRjR-h6T75%e(}_^k4<5 zUIaH**aCR4sMZdhr$oKBPD*)@Zy2AMSJ_bAjOBQWyx%Wl1UjK@{We~QO_jS(l_M_Y z94%a zE8VpdKZk@aB7&$M(&79(i9#P%apvUrZBykm$+j=57DHS^Sfjx=zz3e^pR^}c+7O?l z-d*~1Bjglswd?<2T>2bDNh@saX%A?k8QdMTZFFcH!Bx zS3{E)0s?nOhbt3xl#ccpNtjmlCDJZYOFd#{Uk+F1M753%|8S*Q)x#EIZH`D~;SeD} zj}}HBALYEYz)r77SOKQ2E5yIGpam z@-4JTaN)f0-QE`(AE@$#~cj|NuDxDn*_+EP>?ei3)TQ-r-k9nXeuKE{j))KR2w6B5`p!RLnSnJ&3kk)6AWRleSy=o#1{tvA0 z`N~PZ{K`rBnh0i1-5`8UI{cOtNtCaOWWvE&`^l_iKsgKZ;idU0t0Mgze#tiO`xf5j z1CZm}1pgM*$5-I}4zYT)seM@a`&&}o-?DLc&>0Jnybqc4#`@q}?nAcN553u85HGhKqY*DXH3QkXFjffwk zm=?+giR9@G5x$#BPM%$3h3+|^oB_%jpq!myNmP|650I=+wK1uhQ#~j$jKAnEqy=oh z1S&Qu_2-Jj`thWKTvnY<8Ze_Nf4WnV;GgG~n+om4=gNuP8_LX4K~oA^I^$HH-AK6t zbmOcSpObz~S#v~dRQZi4j?P8OlkCLr6hBC{?t0LR#;KWdgY0Y`=W~>MpyEmD&5IEf zyg|8oW_}PoEADh7sunqWl(Qh}<0a#DJ|g(1k#6Hd=$to{E(Ts-@l zlW|>Wba@_L4}B`N_3xKy^@^vxjnBhLzY%srx^I=v0LtAYn(VQ-c``QUIq%QGd0RNA z6g3O!24$7!`fRA=Ech+yw4@(t|3iE?*Oe#Zd!GB6_f6!vFY#c?xXo2c7FMG^PHo+3 zc`V7kR2|yP*d^(hvfpg^m!2S+_p({2Hk$ZtGS23C^v}VglkargaG6-tLkI!G$Tp(? zFUiKpK)Z}2x)JgxxA<#5e=-!U$>&c->qj6pGN;=JH)@JXbwjHjo~L<{ zsfQ%X`d>mKlC_3}JfFV4zN~kO<{Iv}A^D?5Vo$>GR!HP8D2a6H?B-tv1`Rguo>hkV zb#HBlu4y5J_SWM5+g+`F+Z^*hQiSO?#-d$eJ@U)gH|K??$}n@QOg=!DnMK3(zOX+U zTd-fY>xF*|R**cjImgr&59c_C>W0l5EsZ=gh5lEgAcrODR|AUQr>Vn{`VjGZ6;(&V zSro?gEE>&=mL z4H(5=;+q!7I|AWo|IdQrNh4cO$3gc4Ql$U4FkB0D(k<>yc?#dkD=fFmA@kYu`AX z7IA^MVP9C+eiqzKHMj-$Jo<9}3eRn^oI2UH^G_a>~&y@aGZRL~K*?=#2RlOP26y5r3yM zNAY_ldTn_EOh)-cuY95xrSrsx!R9Z&6{%p(U=X_K)C_^8G#@g@HZbuU6{C(%63AbE zYr1%UuJBnJmrA7$z?BG{Tur4xY}cXSs98S)$g)FRxXsb}u}e`WY&!N$w^T)0A$k zT1USD2g&Uu%HsyAt^+@!Qk%~jSctF`UWPZdb10vf_|qgN5`MISS2!>3p*>#9d61WV zD)y1{0vjX3NE4!PPLqe&e8c1h4*q0e8x>x@onuDw`*z9ZpmiBo3-|}6vkCX*gWRp@ z#J=9DS2<^*@9El%@dzEDq>4JhNm&!`2{Vysp1jO++FV{KT?mqy=RoXThv;=SZ zJ9Zp<=EY}}Y|xMIc`9esz4(Muxe3m_z%lS^lt!mBmoPE{+yy>Xy~Dq6H!vQ1U3C-x zo-XPp4j)B{V?hI5;LbEMVfAOmXCf7W`niISO5d5ByB8OJ5yqRr1SS?EFv~FynlCS7 zZqXX%Al+!a$;Y!KkZ#B(G$+D+^keSi@R8W3DTa5)*N;4p5-Lf}bZ~oap#n z0d=g2%Ta(3aZn-4iM;|f7`#D1Hfha{6VxkCP3%b*ej|=Vv?S!ZXw}<*T`g9dd&zjS z7y^aZ5iQ!ODK+T5A9$f5$&3`(@@4zu zwM%CL>&A!oRoL-S*!dA`EbxJT8_7nClrDa?Ilp8A9Q8qqx0x4@3JOe@o=KsnnbLmf z`xcJxiNWc_r=5~;yG6Bj_*FZuIwid-IdrlXpH5-x3<=DXFWSJZiQ_wUFXD$nUvu#1 zxU(QNcc4!E(o{p{*E_Z7KGlb}2cY9rH>63pQBzBeYzO!dlf4OKoqC@It!cO$N!m;) zcd`M}09eX}hav!W@#I=y-0vZ=cj)6A&MA5v0t)&i=tB9Kp?V9PK3=~SS5Y@Z`;P1Y}FKY zOtO^6fMSVOP5OHddL@f}2UbgeH*=o=6{O>HW-;#77rq?wHgy@kL-O~F=n=Zs_fft^ z;S0e|BTfL&vsU|?8r%}|18#n+rwaqp+?qzv8{pJ+rXux$^c}2=Ab0@QMP5lN%SWZT zh@6|b47u^NMY6FJTQl)z+GuYm}s`5yd(jH_L>3VgW?R#@_;FU;meW zZEbvQ2V+fsCVr+{MW+2q@ElrmudY$VHKFc2bOAEq;ye~kWTO+QOZVr8*^-&qBx7y=tF)B%Te%i7z|X z&`rPAH8f(yiFdf9U(#L1l4u$v-s)U_@L}&sv?T#|0sn+#7>c{{u}1zkS>OWrYoYPH zjyD4MmktOf=G%Ca%qz^;CzCr+iHfZ8#Y+UucJm?(|q7kVqKDop9-aQ=3w3 z7EWo~&D#cNu)>D0k=BF;a6wwQ!rG=NLq?__VvxgMoZOLzn|`x&A+w#Wk)@q!sO`Pn zt%AFpkw6;Nn&5ZwMJ6EOG~CIBs$#w_r|4hM==0_BW(Awe!;K=GJ=9y{mNs_4t<{Iy zfFt#}^wR{#yr`Q4hJZN}3uxhSF7j+f{!~YaPp>&8y;BH`xmu%58mH z3n!T(wh_0oM=9}_3vbyrx)3_ir%bg#RX9N-gvbRr6|5N&9dVl%u@^Q73Mb-DzT6hR z8=J$U-;%bDV9R+6=^s}B5$x^=F***IA#xU0r5e7| zcnTs7a4u>AsB*fd^(X-qQ{Z@%3#3}1ir4|1U{(|kiiN$5+1R+9Y8G~Q2+5KJZ3+vu zfiY+XE(AoHxIk%zt|irT0>^Hw&0c;cB618?K3gC)C!d@~spbn$wOEse?4^{7-s$?d zocb{73_FWu6h8;ZU&n`8j3I=9wXG@?~IAtL}~45hp9Fe%%u@NOk!N94GPa>fI zQac~OiF;;zG9Amcc*?Z8^`b|5D*$Cy9OnTeDw-%_4PRLhOp*3IYQ)G=zZAD@Umdb`3fMB?JfFhY)W zgqvs_oil>}Mod3OCjeirX#%sR382+MrFokN_K9%lcCMUwc|AZ{h^@?+i;4%lx%gT* zAk%`%+7@nF#ayfzBminB3x{U{P#|M~Mq!f#oe23eLh2G2fY)JWBIU%KpOf*Kn+YVd4xetWw3(1eL~*PWsAh+cJ7Hx8SSF#B z1uL^xbKI1$3Fw;Y>j#WD6nK2m#)r)VnV2+iBr!cD1*hVyo5;sbubB#xNl14wOa$i2 ztD$+s07FvKDDad#68&6JBWyDvXhJnTR@vltxZ|jp7X~7k(OWgd(`s76?d|;{7^!+n z3`YlOk7C`b6$JE!z@>;}GoV>^f_%*4UxX~eA}#o#ZCfz24Xh`iFaR~}xcnppG-G)) zq3wo&4988vW*8h6){AGs2W^nf0Z3u@j%R7AftRreE}92OO{OItOM;+cTXQ&svr=mr zn}RT7N>gpGddlJ%h0SWns|D!ot#I^(P;96zJcr-1?Kq~#vFY*0Gbm0ZyCfT5f?(e? z3gOs0);L=8NbR(_qcz2FNWrbl2tD&h zx-=g@0%}n_)l6nhyxKv~$p)g#&ktg44xKU4 z+)^mi7^3LR-DKrKnO`4{lYkCRuopn}c`jQz4JM|J84ua*4P%L+GDF?r#uAhAGY`2f z7B1595`=pT-lfeP&yHq`GV`Z0U=K3JF?Te_0moRUXHaDF0&=UtSBWZ3 zN=R6mL(dpELF-T{!kEiSmj03%X7#j9hMQd^trFVfH&|oHO=}u{4Ru~jgp-7=Fb#rP zO6^zLq4c2)rNR|`u1aPedS^cL3Un!Q)w%e@)^cIUq&s^Mp_TEF=cPYS3xx+w4fP^2-Dij-5sJ(2 z&km6T4P&0zM{!g~MPfF@FWPD6#L~;Wi7>P`X!{xJ0)H?TR6?;J3P~y94s(h*;KD#Q z!^psdI#6{Lc(C1ZNvj%(kY~Np3;izB; z!=_aoI+(Tj+sxKFapFRA+|d2Up#T>AK0n-moY0!Das=}f<3J1fVE)g(pcGbNif1g@Ayxp&11Bt-C z1-*isa>?XpISewhonhp~!sv#Sf!|DbF4;L!#VC{v896j!Ve$^?#1Koy^&u9|k9axT zJiS3aAI!+yD4OX|F6RPT!c@#ttt$SM$Kd>cpua!HT}QxQ<&JQFmuED~bIIc&Iqn6bN2 zIm(BQVlLJmZ)r$~rls7JNHY!yfs}JWl9X&=%_J$4jBKsN=6q>Iw2b48O(8Tm#RQYX z#&czR)GQ)F#<2yyB(m4UGbUbyO9kkyoDhza;W7@7pv(m4XF8W>;^CID+i59x&^X&5 z>pcSoW80?8olOOE2b43PY8mGO$Z1kpGy$k6ap zfO}5Anyr#142EYBU1zOw%aIszPFJ{33HKOY6mDxtIo!c0Yav# z5jNpl+daZIK#jHbZ`dB`S8OJ|6E{tZhXs#8g3hNdZ=R{kB7GLIc}TU0zrXO8Sbj<* zvyx3Kec`-pIb)g2oY@7iD1e-BfdV%m8zqoi^6W{>3TL8 zC#?8KVyh@)8eiNm^Bj{)4~gPzc4{gW3-f`Ch`ZpZ?;u9E^lRy@Uv%1OgJ*n?!mE(% zQ~eW`&p`gAs&wgE$3E4mv-}b-N89KZbtTuKNG0>Q7v}l7L6IU(gMLzh&5`&|6gj0r zhbFhASRqlskDf879NtTvvM$W-|Cv1Re z)oH{zr8hOD9Fk{_Qg-EXFzZfChKvbsaAAYnkF7}zn&6L6AR?|OL_U=WNlZVF<6t*@ z9=%1l%0m5`As;Dcfo~~3T#QcEd5V@YGp!tEFW!%couViR3hX!I%A!_1YBO092aq-U z9Vhu=5<|sB9_(vYT!azNsJNKcs!9Pz$v9_t^)@tNDGf%DUD>pSlD0>H5V>Fpr;W9o z60)))47Y=qr%2iD4~m0H+2er3CB7hsVHF7hH#*VtpO{z-F_D})NlE(Q^H~V~f91BJD^qqfyZ(Pc` zQZP(n(3=h8BKXq~+nFA&!?8slaO9=yIPT}aInf8uOc6A?RYapZVx6%kM%ZY|Ikp(V z91hn4VFd4()IA~Ga++X@aW)uhf{1M1UqIjYJL0MlJ3%=oluAYi1CN2+Knh~EtHRe1Dil!aMy|oz691EVd>LH`5Gmp{>H8}MR z1497;+ki$YY>XS$hC(^!p)U?2dC+jM@oGW9JenDuR3c4(2%IVjwf!xuY;;}%JJcHv zg!TINKup_vXaiQ$g;a@l3UfsM5|6`!kTql!B>@Z>U2D__CB~N)h!5nrJhBk@po?3J zb9$LLhhBjN5krqLhIhP$ETY z1OY7_K4e@bp@Xi?Ln;PjKB6Oz7QChuB`ypZmD4h}M_C4O9gh!_o{A-l>SR6^vCy)- zu>}!N%2ZUWG7@RiqS)5xt^?;Cp+*R&8<~Odo7EN4{W}ppg~LM)WyIAAbQCaTCzNfn zIw)!kwBvm>hnGcFiiDRtH9gDAJ78og7ey8!FJA_g$s$Y-JLXZ*h=RR1m_o`NH5kr5 z9kR)j_1!6O7Bz-&ov)txt22)miz zAH?4m1?;@oM-C2aBRq|`UR*~Aqc?LeyBNJtm5>;~sPMlD*_!Z|jxCM>H1^!KM8C+a zRTTh7X;Ss}m@o4HS6exB!t+WJ#SQ$(*Nrj^#C(?nh$PyPIKY(%v_k421;NaVGdWQw z-*2*R*26YRhl{Yya^40|Qb8G^S~w3$XM!u)hj_@DgLm$00dHa>GBA-&s6=pQJO8Cm z4dFBlgQ9y#^dWktvrr`Oda8$v}u&9K0wbWKE{1N$paDYUU|a zaFQd>Bu&5`oL+_{Br`)E#9t;(LqW5(A?{?w4kD(7 zSX#j9ps-0-7y5a!Y+CFXkBN|gL8mI{h);!pMgXMaX%-GJa=y{;Z5)i^X%ZpqB)+O9 z-5*5`CagR@KSYsPUJXCnaF@D28Wu`z+8I>y8IW~?sz@r_UchMz^HDj4+4WtwXwqXL z&96)#5{sw-H8auBE>Tf0Iz?&P_5o1b6bp2!*(9)S`TIIfPL45{+$8iAaj^KZrkIWk zJ5*(o8sX-xw96!VieVNaD#Erf6rqP0pq6oex5gnsf?o|x88Q5XXc51hW;KYL7qXDY z0HYToYjShi{Gb@`Yj8kh=DcP6eIR=rL!gvwHH&C8h`&j9zbR}k$0G1;3r{`GYLBMO z)lgL?BNTSvz4QYP0v}T=2^Gz1Kjro3q9u$#k3udX>Iq)#Q6j0?n6)q(PqdhOA&?8 zKs4D|bq!`mPI&5mTW}l!HgrSq({qOOT0)TA7U=9u6E*5p2|OH+T61nXzIl%6w6_oUm+?-IQWx zNjf2pwU&QFpP0W-$BJ>+rL_YzL>6u>x+b(BHImRTf({+%XLUB9xl4ym2>~bH78sr>KB%yAh0=(88*Yf z6Kv1IJy1>!@00RL+`}R9ph#a>&mu0--jdB6=dT4THwq1OW@ehx?ALf;32c@C5SJU0u}OgoRatYL@nVTUWIKBG*~f?+S!PVy=y{VKCM=&OumJi^F~ z$UrdhMIfxf9o{jAS1K*-&qU?!oai%tIINjtys-Fi6(YX8)3?$7gQqtKHujRU$vnjcSFerVZzi6p$1F8 zNmUuiX@DeZr{ErWm`BjB)l1O?ErbY&?#!Lf1HD;iP>qhLDjT6R zogAcBP{)(;837!+g*C4&CeDwk&=*kVRhb;aO?#OUo*+XVlB?3$P0>VX9Vl{<5ozdU zqJBD*oM&Ot#7H!p&7?E{FOxTcVx4>9UN4@AI=k$DkGSkMLz|a7oVQ^pz z*bChw!gjR)^?#GpKsVXIO;)E2n}N-M7!%nwY_v`7wk z;p}$~`X!D=LXXZNmZ*aJX+#HJh$YMc&qMT+t%3VRz(ZPc_kbQLAl9i9B2J<`t3pVx zC5n@U2(ZW|Or{UdaN+IDn~Bn}fXEMtK}idT3c!Jqlf-T0_BIwx*20Lx%gj;=r2&X1 z@LIcpmvkti+@+s(M1nkNZca>ePljhI^H>A%8l8ATZRM^JYuu8_{&r}laEfH4B;>O5 z7>gF1xejWYtZP~pYNEjjO^Kci2Id$X?`J1t0<^&Ncw<5lhR?y8K=ey5lCnf30?UFm z1J7ifi&`KY>&c8p#h3#1Vq2G7cr&v>iB>MoGSWYYJ=-`^g14g@sy=7lxdFTjLC&(MvU9Dm?9Z{ z408y6OE8;Q1XY4QJC*79k#Tz}FewpZMq6Z~b<=WNK%KibabX4AQb;7@_03NTJzV@F+LB6bgJsm<-F_Z9;92E#f*i zi@v3ux2NjQglaf>Ubg1v=0^C8^BM?ni$H*6k);H$BS<`(tWpMLP53IEx;HgY@17b}MJ#99$1B)03_|C8yjh@V8a&+DtOCW{ zbcft~d&FsKPu8VP!=iM+$tf5VPSf;kV!O!@K~3J>@poklRDgKhHlluxbbG_9LqQaipV$)$pT_q_ZK0?)*=TQ zy_+_;Y(13$P%-Y$hS*~DQaC-<2hl9!9B8BZvD!}jT$o~``t{EKg;_VM5b=M`@OGs| z4J#HrQkd#9&Z&$?6GpkW-`@Db7B!kNir_o^&suv?i-s7#EJ|<%1|qee!U5o4bG{rw z9skS@4tkj|jELT8H^9}RC?J_d;T&$fEM#yJf{7`%1Kmu%MJ6ih*opgFqicxhN~5l} zE5ymVfX-QnVS7H3u=$b{OZQb$3pK=AZ+VL!7GGSLf#Qr=VoL_{?g(6@OvM}EN?QEU zu2|N{%0cKNhMT=e4-m#hr+V)?RGSY)sqXRK_Pb5Ut7Yh6!j8!TjJ1%Lf9MCzRVnu zY&={=2KvQY#fs_e{%jJa`91}sP@Ify=c4z0{@yG`tzu(*d)6+zmwC+0l`cM|4~ zGyGm%s7Aw;NgD1zf~M{h3VS5m=}Pu|G8quZ`2Y64JVws*yl*Ix%jJ@yD4L>VMOlAZ z$uvcC4@xwxtSDOKQWPnX)QY>h49Cjs%AMaGcah zir5a&HbIIcaD~)x-NbExpl}VNR@Bx_5hsWp6tw}j{r#Tjy}o;RD3)#7&~kU?``+Vu zpZB>B`cn>L@M1c!??R_l?_2>D7@mW34%$BAAcA3|1Vp@Rd{e`_Lrye$fnNHuz*nLe z-)BS|!6^WB=R1Zm`Y4wVcokkF;)jM8)M7i>egOdnwURC95-2UIK{|O?IKR3<`tZFWeWeZ>El zQ1bg^jtz{-FgU7^j_f8!5ZR*!rnK~c^W*b#2K|0 z>k`#a@O=d&(Q}O*Xn9rbR*^tZxE3Ct>09dN-*&Ny?2y9OcKg>7n8sI2F4I88f2AL0U|ei{k1C5sS?c;O4!U zMg3b~fOOUk#Y^>mMU@u<+vEsFLg&rGb&i4ukQR7Jck6R->lD6oTV>wCWXpWvqkG`c zq=HLZd|bgDov&Ul&rceY_j!Q>vM~?bEhZZ$%xlzKtaL%BQ&m+0PFaB`zA3DVali~i zpt~E_&+YC#mN=8mc%_H%k?3iVd&zAMPz9$Ux48^i<^_EIEVj-!N+|e#?1hRN zQ6r$#}adY{MG(fMY-R&92Rv6j6z@*JxfcG`ql zb&n>WAp36_v56+HH`lhd4~LdYcX3iM<7JFn1HLhM_O}8s@AWf0Kj5t>F&!{Xg7|wLKmB2iAXuP` z^B@TZ9vs;HE7~yR88l4A$9ITXz0P|!5fF3V8rO~)(y>lM^NW}3X3a(hb9;-Z$ z4Ul+wd1>48)iMY4S&;jLK{7~QPF5pgZd^CJQH4XBRAY)<^!vN(Ns+sRE3w-qsER{i zR2>h4Mn_U(NU`Iekl(O|hw3X<`L0(yuZNS2|4p`&RDwyGi zs3D)q=X3oEnbvMmUFhwTa*uAz?Ux#Zb{W?5WyafagE1-jQU`psM0R-yFGKUh|5Zw0 zC{C!u#n-d<64FG-nT)npwzORsT@!l3Owf@_$mc1^aJW}O<*21I2A>H>6jQ<49Bg(i zAhWF>okjoZlHd;1kpOV)STsZT@qcQgCov**R5CoKF?kIf4PiO@v(0|LC;seerw)03P%Al;M`8n!2dM->Pmf(OHE_|$02e5VZjyKFB=b#ZhYfYa zQ%6IG)ItP&GB)Ll7@VP91USKOCnY=MBEnb`J{f8w2xBDRUTh+U4F8@)P#ukK8i!KK za>ryHYuJ*9+qQ+$MC^U?S}5_h14cEr0F0$*+b*WNiYKHNi*lhtc+Z1aDo`j?cu604 z(uo#P=t6cnk2z}1l0X?nZDs+|Wpok))5siR3Q&7cZ;C~^1XXrp<2)s1;)NRP_Ju~f zQO2;iUt*R_9vrhZJ=lR^=W+OTH@Y`M^H$7)6@t@ri@|!#HF-`HzQL5XfD_2{_}B0^ zZ62Dh;X%9$Q=&;r`;ji@ALSwVG+9=hIkAvJK3&fLId>m_| zJCF+2n{sv;LYxECT~a7sUF|3uSM3)Q4?Vc#Y61D5F{+LtWlTpw{di#1smGs61?>96NysqmnNByV}2^e z&p6ZHnKS;Gf+sa|Azq~BUD2ZZzOWPN~D9bEzv=C6QqNW7xA~+TXhnlpt!ehx! z_d6`XrI87Ubo5d`1>vf1G!aBQ%=Y$!Y)KtUk%9@cxD>l>VI8FTI+nO&q1%kkqeoe> z4jJ|Xqu5o@4=h)R`)J^HFK?j9b)Xwr*nktDc=Fx;{mR0Y zhuyn77f{>}r4~vTkbMjHEo{>ArA}Py9w^+%ZIwkg`Ig1PN7?G-tAdQ@L4SDiCZ7zS zGMFKmLHX{*Y7-Lj;b^|g%=wx`@swv(X76llvHDtb2)kGI+xIV4+pklJI2^sumfBPn zIA#8sQ63ceq=VAv;wrOQOAzF>v=&?GjsHHtl%xmLU&$NDldqWje;mS0*VMJv0$!}T zyM#})P@K}owsaz$aw|Jb36+EZ6(ZqD1h*DF?)Xyo#PKCm=tBAP6KI-;X3h29RN+x) zLvbg{zjeBk=V8LQo=duQu~U-QnLX|H#m;5Kkrf**vtQk|2rpGJxzB#_U5lVa&3aV{ z%3^1!dYwy$-dpC-)|z{NhNA_e+ww5}eRlkt?odY-QA(gR_&bXd@8X**gabqv%);Nc_Hdyb5Vc*$fVHcp#*K>p;FRb9MUC$YAf8jE##uTIKxWt@D3>L^+2c!&S zZTweo2$y2Xar+G2knotN)|&M37K_4K-iqn<&nF_VcAK%Dg$!Ho6sHy(LQM8s5Pv1t z9J+zSdMHN0Ly*o`@lwwRmIqXerOko1XaAST z-tKCTzSu+^7dU~hgBIWOVv`lX?Ug(nnNll-LopYD9sqVoOerJc&v^mX`-Py6!@lG+ zFH9{IvyNY^ylh6lk`!vG&>}cISGYBW>uE7IRbEXzs)Cl6fJ&>jiQ;dn$Y{Su2+t5^ zDMY7jo^hf1iIzlCMqvsQPkM! zxAPXKGXO;&|AmIXyIw-L4=Q9(Vm&kH4@#_m_hV@F%F))r)1x(zFo5C3q15h|$efYl zw}5(EC6)We5Q4@yIjFYo{cW!_z%dGu==b1bpbg>1YiP23NokNV5HeFg!VUYZfWcSm zjCC}_TT8|-P?vtf&B_CAn@_%i+ICe~7Lm({rpNGR$T?SC_;O60f&mbA8zRBF>9_qr zA%y-z0HL=CCs%UCm0nFDZyISS114oZTcp)~_lVRV<#R02sWPKE9bC3=0tP`v!6D{s zS6CD`?AqsR0)CV*TV=n+WRX{QJ-n2OqObhp5sI8s6hL3<43I>{l7g+~<%WYe(xQ8E zwF-*`Zu!|bM1>5*FTcYA?0}a8q{a{r-%oBr2+-&8ZC#!sZ>EM%Qz=8q>AmA;Iq4ZJ z--~LCXHh@=+YksX^}U9|zyc<0-?lV$pOMM}fIt(|l#~Dt8i&i_ z^YVBibC@9NtqS6^tn_8>0XG0i8?9wPqO*qW81yeBC|g#cgnA{hzvVMPZACZ+c#!AW z0-~y75}EBDZC3)KDV)+Va%53RBRz;pEKSPm6R#ts6{3Cz*MnSE)4MGC`-`R(g~Kc0 zo1!XV$s*`ly>SLomAju1cOb)Zyy1ha^6 zopmrDV_WyM6G%@iiJF?CNaQZ0j+I>qSR*xzdtXLAJWRg*hk-tPlfIjcz`#EG;pW;> zb!nqmdpaQ~Q%L=Ancl(y#_0%qYK8fMcf%&p)=JUlPS2L*3QnNL*{@MCawbwri7FB# z`?%jx@1O`97#GT7)r%FP(TZsn?qr2+$ht3i={Olu&@`YQ)MHDm2^;r~1wK#kxryEd zH}|00GOGk)A(D7|QN8q0Y=5=#?ZA1z9d&62Ws2!murA*Xcq^L#7fy31cF1W#g>71s z2fEw07A`%>djoa@XX5xDVLrB8^HS}0ltN^FS>ZC{xR_dI-Xy7|-(@C~Yuzhd{mpK9 zkn2;}FKU}w{ti-75&6cOj(5Sb7agpk;&rE8oF{%bHc}`l7~BW=)8p@v@p%~{)KREz z7SFNI^cs(~sduQpzgMOG@ty{TaG0|@9{g)&V|@k{s{j;gTJwHs#J z0cg-0#EQfaGh(&1EYPwy?MIVj+;Qdbu9Kn>*oZBo@Fj+S4Gr1<#;i{Hu%S3u>oopL zeT&@)t&*E0T)5(C#2U+k;4ME!(C@|V^}dsXeg|b08xSIgXx+@GHF43ZBr06szMe;{*E_0VocdU~G=!ce!KG_kdbHN)@&l!i$QXYS4I zBdCOF>i8s{rw`>#p%qf?(m{%~GbN!Q@jUB^eG|`9P#0T)dt=*NtJ4!smw1IWWs)st zxUsnC7ssHxQABSU72=^?7Gu$4IHQk?bdw@hpwL#r>maszSqusckBCoo&m80lq}3yG zexuX996e3je>Td}s>XGR;>vvo4Kbdi$;q!Be=jTeEKa+U=Ov&?S6VIP5 zdH!7D`Ew=DKa+U=nUd$vC!Rl_@w^!8ajD6w$c4WSDT+2)3*(E4F)n6|!Mc8Yo)H4? zuRND{JS^3*DtR%3h{PaechMF9j${sI8I8kDTL=Yk5ZCq?#%4%QpX)j_K-0zzUL z_lA4|N%X=e#sMkht@V0b8jE?inD-G1%*wbxjkr zb#7~{;B&a;i~*XI;2WkpGOke5BCg_TT6^h>VJ07qsu5}dlGR9DprVA(eV&iJH7oiGJy|ETO)rOHji!+T0KssQ6K6H2M^8?MuPXHYm z^jkg?GT;SR@iJg?uZ$T#`8dNt44aB=Ib7!OmOWzsQYKqR5o$3eK)LUWoP8Y718#w# z^@DCnj4|u>YlHr5bbMj8x!gaIu{f4_ib;W$>G5Be;cMexm*eV5x5m)+ktc!N&7ijF zv&}lf9U+TEFF`HrWXX|7)04tGm^E#d=yH#rMunJbn#fEuXLh$ByR#C{)2#39&??vu zWuN?M9!u{hb2lkHz)iK^?@4HJ{#+Tb%bY8ljP3LDfS~2i0wECPj3GXYs^DAIjV!D; z8g=PZm$(hbUNDWKu zzJASjyvUNk2(oCvDUq}E)a%%WlkAhBCF(Bl6YP-*BrXI7+ojE{Id%n9Ip8X*R@f?TS6r9Y0`q5K6bTIj)@J?)(xYD(0Udr=$QaLIX?I@D>l<29Te;- zk$0jze-ioZ$ZhSkABeI|f~^K!EOe>V28ex!osiHNquRaFiI%ER|6o7o_pQ#-(xzAj zGXMrjPL!$DJY_25ol=D=8aEnG6GR})6i|rkalZ@0&>3|>WsJ{J8nNc+ z47SeON;@Ku{bn^B$kk%f%V%D;x{hdr$2Pxcn47vrafy$XPzb!w#VsP!F&4vzHF^?K-r)wbdhd&Xe1 zwQP&C!`*Ls0OJmiJiILsfHMw^d3fn7nYfA$%-dY=-Hf6B6!LV2D@@#~2{){wqWi`> zVQJKU)Hz}u6$(I~iQ2#w=|u`0vPW|izuADlG|M3CdPA;+J<_aky|Zq?$inVCq*o{Z z5(h2%bMk;t_N9p`J<)1&ZA!eiMwN%*aWsoKYs%a=M;4#)YZ+b&&sg!3sTE_b8H6P7KKVNoWTJ{eDiWJ$ z-c7lfHE&E!a>;{;8>2pxUO^TydXI$*^I;iFf*7TzX;=ypV>7^TbXYu{B zx!c$9nH2@naP}8GF1R=n5dcLQiFfgaEGJ8(aIq|u30Bddf}8_xN8}n!SsBApm7$ljN*ipoy21>?SQ@J8R z>^xa}noe4YNb!UX4RtLYgA-L;ul(}S>mX%&;8p)3mf@Dxb!XCxn{OvTJ zJRN)EDC`+C^4(KlZ4>g=D)6k24b95u8}RsU;HeF1`OE~X6@0#kWY=l@_Y_8+#A&dz zQLA!P#$r(jN^WeoIt5EdAOB4t`e+QRw@;ps-&sJVj&F|RZEH_qstEsj0`GjxjKjBB zzNs%OM13M)8$aPsKBs+6r)4D0zKOMv2kn#PlMPVQwIWB8r1z+4^c(EZb9#CBj@ zoqvn#o5XJW`01bE@49}@PYZAdpKxC0KidFJKE+NFvw;3OV3huzE8vMT9W4JTu89_x z{3m#(Y>FH{W6zZ*Zg*Hu?Tss75l;psaxX|&#eWT~)xOWL%{V;rb~!WDF7ux9yUcqc z+@*iUo(|8h1Dv>wlcLp*dmyO{E*RV>Ibr|>E7kd5RBW$NGP|p7bQGtEvy~#~VdX)G;Lp*2ce#&v-lRy7aD81tQbfiT+J$ zVSm%?mT9ca-WvVJ-zmLqN_|dP(tF!KKK{Vz=jIk)nSUxeyLjPzH2=b>^XKNGiOK2d zmmZy)o<6;JTE93tH8VZ^)WwNtVzu92pPioG*w~obcytO48>Sa8O<#IyZgRE1);c;f zjSjxeT7RnEuTPv9JI)VJ9A9lz>nDz{(L&3Vv?nG$hG$U4@@jt~LaYjP_$MaN^LYBi z@m_xup(TuXdt!nQOxJon477e2k&e-iM;oiiH=69Nqj=*i!b=;I8{O*q zwb)0rsKh>y_&WK7d+m4mqmBS*EaZuaB?&p1jZoUO@i@OWqXJ;Od2r~C4hMqWayc(@`8_Q4FgM*_8PR>av!H{ewt0?$3X!obq zkrae-Pg4+2@e1JEc8irE>&SCr3%5>tHbNs!q}0KX{x}Y=)#=VYID`K!FJm&}L2aWB z5M#9>GdvClBjRkT_-`Hm^??r4fERx7fbg%J7Y>j3LRsJ*)C&-4nZhz`md*BQbS&zu zNK6B|YCuG!EeSG(Mdk{7WTKFL>D!OMtZvO7DvXh+rp3%GasFL#Azl_%I^o{*gl^H$ zqOrHqAx@=-z?y9+Hhvqoj$_Q?e71qxwof|bNjXe-#O1eOL8|aRC z6T>aW&%#4H6f+69U`9x^ZzU~J4mx*UYPj~6M5xlWoIi*x}P zU%=)_8cV@=`_F?l{NM_QY2k;p^2p*TaI#ji7re-H$&CFIUT~VlJ7muk5L*d>B%9U$ zV2ffA;7EH~u|P%Lpy{@Vn*3|}-1?PcHzK6GM5it?1(+`Ip_FKn6h!W3F4IMI9Z(kW zV#w`(dW#f82&1M*y*wnew@9&Sy4KEcGqvKIO^6r3JXMcgtGo&;m9kTfqk9$73pHN0 zBA{-qCE@tQtFWQ*8CpwJ+x;%-(r*(X|I1s1+$hG^tZ@!Y#~0W?cI{OJ`1ZS<)~k!? zu+&>aOFSrKrhEZ6aF$8rpS+y1JR}N(H%=Ogo~QrW;@@ zcUbZc+L0brzw>bLTM`dPVK9h>z{P{9krH$OA*69I%E&{2lBHC5hCQ5NV%zxJI&b?dxaPpH zXKhmfVc>A21krvTmM2Z%w&~j5&b1oMPD4BbBP51{w5~6a(EOJ*EXJJcHJQXuTLElE zFhTuKywx(e8IG*3=IkJyb0=YeR*XfNF{Ek3V=OitBwI$+7MNRoGlJ{A*Y8b@r8D+B za4Bz~Crl#}pYgjh^$ZuXcQFk01~*t`$O<;7S?zroxoE_U=VpZ)iQ#2%>E1i%GOAl0 z6lj7S3hSCQ8|zK-Le7ryoJtmWHfw?4GJg#5kb!2OLE#(cjCrZz6{j~SdAGwQ#+H^1w;n?buN!VJxuIWj*0P!vd!4=p2q++wJs67cB1jj_$U~LvFM!5Ahb?qiNBnBzOBc zCPjOLMrBl3-Tw-@b>9xTsq{6Lmet_R8uI(dusl=Wd2$(koDCF{?5S$vxED+ys~hl7u&I>dOYTD47=Q4djnDE7!mba+-Doq-29C{7^JpQY=QBB_p7 z#k+2d=p`nQ?_Aq7p@qT4J{9AEj0t-~FBw4o1p%<z$Ng$>Za$@I5xJ9)wp9}n2uXmsybnXn9rWK#Wsg!OvW$dpJFLlB%0*y| zDh6vte=2|`e)p;a1B!-npFfA zVl%9S*raVpp41I{t|jbGpRD7ZF9XCTkq3yUOq*3zzKM0f6%1~}2;}5S z)b)A@nyaGSp~`Fco#u{1_{qFhAB=I|xiu*eb@0&CIwG@nDvKY&MGbmJ0xM_ip~AB z`v4YMHG+3o!u6Si*AB|?eS`oOExFfxy%B+D)9h74rbMG{fhW%O4$>=|D^tA96%zA1o42?5>xFa(;bB`QEc)+bB1UiQqpY^?!gisV`wv1~@XLt*m z`E2EVz)3Co$Bt=QN0{#N2v&vnrQ*+;mDd4@*~(*Jbef{zqtk9AXu_rk_yF+a4r~a5 zf8ti!L{@T$Pi2TFkHnKh@}7EUq)phwfg}!uAv$3!BolcU2gy_E6V_=R&v7YJuf&D@({j7+k zUFb*@K%YQj&|{M36n@J-uN{2%LBuLD*)ExuaWm5~{@?d?Iz~J=aTy5+t;2Uyjy`rcLY-;Eo<8xxV^emt zArn6`M6Ru$x+O`0_J03MQgkD!?4&&?X#z;fP;tu7MA{=pGL+SGM-6R_%K|o$G*1fn-jNlcPo*uhxNU5Hzz{2@5e~zT*(q2h+apkq(z30G z=PaH~N*gThq&_a|bdY-GfjrSm#KWj}PUA9Y>`Fwnz-FP*ZAnXkSS_H^@|`fs&DS=Z z2DcAugg#ur^GmV;Zaet{$j^n5!=c_>w#>XZ4M8&_!H!niPfV~oaHBinB!wV1GfaXs zxtZZdH=ZbYb^xbbq_tgUQNcyBQNu(?<*AfRjvR5KiKbLI26%9hJqV<~g4DaOwtBFG zG?)!pcO7!j!U5TnQi%#>r;z^laEwPLGY~R3;>b5{aYWqUTO9F5^WH*^=xOx#H_y9v zj`qkkbF{erd?8Wnm6>#LJ@Q(4Y}Sh6lF_y6#ETj3%A{lX?O321%HlgEejG1KMbP3htLhZEzaA_VY#+_xOQP3e(kAL47u8bi(K@pqH5jZ1}oM`DHc zp~-S(r)8@ow!~$uP^v1jq?AZix4(Q#swz$H{4Um;NLvl)DVjaY8N5kf z9HW2fPfPYoNn3*$324it-iTlAo*y8#{r%-VV`*fQvH*Zt%>MePN zq#?SvEWsy|kSnTeoTyJ+m3{~rL4cKic~kea02tk*IXw&fc-3Hoe=bclZKi(CnB*Dy-UU+-+%sw#V z^2|Ok-yBwOE1ujEaShb*Q1xnCmPf{t_peC4_05SFk9+3c zN%7zoMp=;X@!k{H73Do4ti!&WRXH#o*UfCdD^N_?1~ltwjo_A?z!E>$^#ttP=ox8r zHhQYM;$dX@S}xvJr%U_c!pygu6qSA3Pk+xa)^}EHblf90Y%FwH5XZ2w&+*wc)_Ec~ z%z5H)G~t7rCnTNjEMW*L^)7^ zr^<@BERKYnd(@JhKv6$5an$B^S!(`nDcOjsyy_)!6S4h-EgPBj-eW;s+f)tRAkZ+i z88<_2J>9J7Sac9&!9??5ISs-zMT{h+_badh^85PuzYu%i3+Ru`uFU=LeYc2-lLIv3 zMDNL(t<#L|6U)t&f%c<}Ubu8Vrvek;mRwSI{43&b!jYo9l|(HVqoh6LG_|z3#oW%f zD>b*U54eTN*`hokN=fs~)nKK^%)iBowcKnsd#eqprkn-7!)Q(Yrqut2+9M6nUEpX+ z$@6tCcbiguTESXMU1kj)p^*OX;5>LHu2gX7f^(bNF-OnKscP+V9#CUrLDSc>4BUB% zu};H_lQ-6kujq)iVdH8SMnRbl669PNN)(`@%MdmNH};)#owfA=FVa(OWY9`MyR4nF z-l?XRrw?{5k(TGdy4Pl-$k9nr|GX_6Z>lMoN)ed#5t)Q0 zPyBo3|H~d)Df!z`_ow0neBA$8YG4jDNshN?zCh%H3J&;^unK>1I!Bzo2$( zZx!=$iygMFt#*GqQ*}NMte5Q$=nkh--!?qR@r1ZtJ$t&tN`-y4L~4SCit{NJr&^r?EYU&LV!8`g?8_vSE3yZ+D| zQ-sUCYFO{HmG8J=_dnI-uY2XMyfs6vm7#0thXxMYotSE+$$e-sLT60?7PDyvTZ-ysO}A$|5jEk+4dHy2Fl#=Ile zo;q*bM=~)j&9s7WO*g~-*bJrk_oN{*+&)i8Ni3S(X9GAEXSzmN%}u=TT>A=|<)A_< zcv+*{1C4KO=IwB=6bjWw5;#XRQ}D>W<2>rG4^Z+d7pLz{!yR%f>Y%#CjQM)#c}vJH zv~Dj8NUyRu^z{x0&MUN@h4tg0y79I@+4Oc41XgM}=PmUy;)8IwH8h;6;b`(Ym&7Ir zV7kvv5uI+LJvK?xY?L=0_(G}=Kx|+K=3N}t^a04dWB0{mNVXPW6CKJDf9VDqyMUH& zef*cNWr-Y@BEMDyC13lR4Err7qYLYFQ~Z$WJ7Ids#B`KANE{{LgPs?n08tQeY&oTy zg+Mnmnwsz(Hgn0v>0{SrO!K$qzFea~?vziauMu|kIf3FT>N2R}5U;kx>Pu;|c8^VD zo{nPVCl9WNGG-15XJGSk=eNtwQN*^SNl6BhB$-dyWOs*?l@d{HD3~_u#nr{KIUNuU zhT44aJRp)P*rHr1P6+KRS3Pwgz2joDcDXmLDr)Zi{num>fp7B^lql*ol>L2YF4OM} zpC#eIVr&ZkCGmOIphkm+p?bD0@EKkxt5MkKq%_xK0tDC--beL%{G^t(g7uJp|B(5gxsU5sqe#aP%5R z_(0|eAGn4Qj%AK;>>5V+VCD!PyoM1T%N*gcYZ&22GDrB4+!6jhgp!X-xt=;SVZAxl zj+(Sku-1JI8Z^reU&al?J%!??4Ik-}p^!L{NGpOP2I|}!_=c?U4-xu~-;C6fyvx3O z#G~_7RA7r+K%#@|Y~CA9h@}8l*g?M!y8$lhN(aJaZb|u%6xx$~I*nuY3KM!9cy`pxBL4TjKstIE&0wf(uA0aru%MX}qKTQ>9&@Z)!c zabGDWU=6EMM&q$Hh$uBYXD#E_#g_cr@5_DT_H#`3LrNDxb;TBXQLi(AAVeyW9!aaSv;;%` zY83(N!HMLux8J?SmEy`I)lOMwvZJuQAQtJvorJ&pUEz8evs#X*0H&TLeVvh`Yr}fj z>0X|O9F2}YU~h7kF%X!eR0SBaK>^WDakCK4wmAsH`sy7ZHD+PTzuPcX?UEPj5VQ8Q5PtI#%`)2v7F^8MspG75>iLTL%V{}3s2O|Ju!mI(~w7nRPrYjepTC zedJPO4LyeQ7X48CH9#kW^0>k7(7}woD{sv6ux5M)Ooc32`vuhC$|2md#P%*s`eaL= z#m|_TGhv2);8LMDjm)6D^|Zv$mF(ZwweDcL8=XnsvPIBKH1=V=L8=YP_`JLLAU^j` zoT(hC@P?j2=KwEkV7;(UL);LJoGo(BOg`H{ThfDPj^Li2Ihre4pl66_OI!yJ__DZj zti?KRn%^m{VPUH-*!^zYjzC3pXE~w@U>?vS=mcMoLnHt`kL|^-MnE&}G@2y*(3GT# zF1zdfriHz)fYfz^k#?DpTod^$W#wq)G?t~pOix4>h&5u{7uQP3V&A1xunkvKwqR|w z8B;VJ^hV3{=0$LZWDTG;^jmsg(?-xVDTVdTbb`{bBnm73Rv%hm+f9{Kds0z2u+mFF z1_KMkB$Ri+Pi8EzChi})f&L83^nnsou2mMQL3W@c3mrTiEZ!}PVXj_}5>dO>K$p{Y z6Xw6Xxz{u1hQS?5Xbq!Z9*4>;Y5>JjD>nP@)#*uUp;Wvkl%2wDxiR8lT`OeHKKv%j zt?EkDgtX7*RUODPUEWiTTFqPg&t$AUEwbR!Ae4mkBPnnPE^>UEG;dHIwLHp7q}pwT zh?A6CCS^Cv)p}#HGk~d~jV2D{{DKkfPJ42rskQ|L1&=p_b=)QEV9j#qo1NBD=W5<;Sx028 z^wis^#E6;#shRAQ%;_5jl}Nw8;`V;0&gs;bycy4D?9VdC;OMzqn8ZnXm*g7q-{1B# zt0wPepOD!*8*MnONiOKUA;Q@p`HwcU*=GBzYe)m@6W1 zLES)3UyWUtZ5W}Sdm$0$W~3&IrpZR57l92*!w`pnEh}g7E8MpLmW39bAOmb|D10?{ zsiTM-k&dPTUNDR@4_IxnZ^J94J+~pSXd`J_#gybby+EASywOg?G`23v0KcV}B~5$D z@{BbJPiU(P!z|pYW*5-ir?whhZfq`f7}T}gsiDyl>{|!~nryZaJvF)9Y_#f8b2)1E z-`9&aJA-b7?x49rJF}FhO$43tVliC-fkJ+rp+^J=df#Gm4UK;L!l_ihF&3d*h~Jy) ztb7i4?MmgC+v_MhB%hnVaxCu<4yT6D^>f|OPK=ztfTLQh%*Tgam|L9B8}^yhu$D<$ zn`fM2YPhzG4$5SuKg_)d6J0_Sp2qaZpOR~vw~~*hR+2djx2tLoHmxN(c>neIl)Y!I z++P)4-Jpk%%wUnGfoJXsrh8+rnF|Rl2JHbI0v@X;!ir64Ufva&#XIBIGfrr&S9?7e zr?kVydRL=w$-{FOgwD){W`x#42;*|e%IL*CFLe=$AoN0`JVkQI_jvy-aSYd8vCRdT z8Ef1@m;=5cx}J?my&{G%O2k*C?@ddnR@O?LMT2rX3>I38_>^FM=NgJ#u~J_TqSi0+%f6zM9av9h_Cew58?l`&J zZC8|)i<|IG1M3!~0fw_ul>ZE4WSn-Sjm959BV_9;)<(ueALa5rA#rP>SCT`$2^d28 zhDffXI5`2cr`BbJ+PrzK#R@o;lvglETn3_ED%Ph!+xw6^i;a{0J}w>Ywa`P+Hb{~u z>S+27+Ct~C@Z)uuk~-~b;7TUO)mrSJY^vovFm}4bhof#oBGEUhxXR%3>V`&ynS=`3 zv;I)Q$yZ<%G(oS{B1`_5koDXSc1a=oUi4JAt15pELRI!6KyLtUw*qhwF@cnBkR7K6 zt(9uGSrxG(Z-g^$VU|BQ{sztw#@ME9ECCO8v)(;Nk%+PB(E_En@;x9&!GPu}R0|@% z1eZEB->nB6HWrqZSYOs^?n|!b48+j#CGEyNt>Szbh#Z1+JJgD5s~DgYl{sa+#7*26 zDsr@C5`%f>UkyB8+vir{%jt=Tn|DBe5(}v2U3`P%Pzw{zWRq$Vz)6EIA6&6=PSOUKQsTs3raFel1^5i<9hfi5!j@)@Q2=7>!>kJ?x!_ftPU&YNM z-uTK?+6x^fB!<1UHm9O7MJKt-d>`cHiW_Hj5w++kV2Y3s*Lspl}Uqg}BFd^bPFbiue?H#GeoZ;EufW*r^2$g6}QZ z0q7P@?aj&q3Vpqb~ALr~p>`=4fzi=-M1D_YFk1vqY) zJp5~Pil11`rjy&B!Y(b%fwhMM+N=4^!TRix;J&lAcG41Bz&tANz3RZ?} zcy`b(mknpdW0}0G2P=obAv z4ZFu?IYe_%FIP10G;bGs5evYsyx<_b!1&!KTJAWH9^nHpvue@3JC<@9GnS<)WQkIl zk7>#d(BI<&^rNTnd#h+NW=f?ald}iDGZ^@y@#^G(;Xpu(01R=#*8pSdj|GM?tii!} zmyL-pqe^)LbHFcRg7m;h7G|TdvVq5d7i8csR5snJc3kXqHxNQnjEMV?RY!l3>=XZr zPsxq3`?+;wQMz1?qQjWS^?ge&e#>YPUYf|GTEnSm6Z1%^hL)>Rg=)hI>APrQFS~{L z1=*-?w=nFVTAVj7d>ydB^P(1%QThin7MK)si&m)F1eQD7Xi+L*FI$63T$8lK15bnr zmG@ckV-gCjSP!fmQe@>p;_4zcnzDan+gluJ?Ddm{kq~)z>Qp9ePO>*c6m?(tN!o3z z^aaK?J2gcskugE7SNm(NLK2<50$#aL^7As@Lgjg>M!+?!Lp59qxWqkn1q;u+1+3SX z3g=(Sgn;#(I!sKcZG~6FKxhhvw>8Lp9zxb4l+;p%uU#zxR4a3#>4mr@XI`G1OOw0g z2P{aFH)p6dePYc@FLNw zXee67y=#I#^zaki3mtj9e?fF$&@ z&OL4IqAe(&i(96dyj8TWnN%y2kP)}5J>Y=yvH}JATY`V95eTO5Y6~Ws`lb!ZqLmD$ zv^amQ!ko6sK&>`PtaPGkyu@za}xwX z?nRerS7ibBvjYQfwQ||5b7Y~_xl%1uM)!mK{kcf9#*;(YJkW-=FF;uan)_qHuo*NT;@U$@pshw3&!z~28f5e)3> z5T`y%^uRUNeinl;3`X!2#=ar}}6jI&IsI6;@9aUjSt z$>q7pbi{N#*mD)t#rSRukvt*cO^s>+l^orH$%EoYLs0Y@T?8_Ur-4LLlH5RI>5QnF zeWPYp5+vrEjF*e3?3U5WD-co`N7je!jFk41`WKF0b#!W2HlQ`ldiWk8MrZ(j(79QA zZ49@UhHAou3NjOy6s^+F(rC@RA&+)+4KHSl>c@+@i2~PYYeM^6;*t>u%Hd9tw~MTpCpru#&9wc!HpB^!%`E~ z25=?e9T{O#zS0*S7+a*1IQ97?PSHyLm_mu7w1Er^IHoB8A87rwL6fwjsd6RF}xP-o{km?zels z2!|^_gPq%ea*1dK7XO;TVlDd+>@UC;d-lL#;P|%;>1x4l4SWD>@=0Ic%$MHp0{7do zdDpBw2H^;?iM+job`xPb?&8)~I}8G-H<17*D5Fm!3oL3>5%_1bw+r`9X0^(27~VC6 z58*_|zv*y!`{JN`xrE(}!;#F|Q8syixA6_VjTre0ZmhdrYPRd0jb3!Bv0A;-M66*E zHvZof)usFqSUNGE58*Slbz~PS;_u*oSoeiq1&vY$HfIKs@bsM52furz>%EmDF$#^- zg3YWcRPIaew2Q-3ND<$_Dv}{68lsZklTs#+|F67)xDLPzA%SYgjjHSGh?dr9fB5*N zlnrnEdyhEG0Lf?dGiMFJx8l2Ihb8+;Ay)jC6!g=^Ju8NcwuWQ%3Sqt1$rXRBoYcL)qla|rhOK&)C*j;ynQ?Dync-~v1%FJD61tEyKn%XcN(Fu%+$ef_V%dgs zO#czHebLMJg510*#6go5rX|u0F)VHYTj8(hm#tw2(XNm-cn2lW5qFZZmj*b1L%)T; zZQ0H?`L-MWE)?cztCMQwFnY9i^j~V8bmoy zXrR#ijG2Py+>)w6MN>xr`=^22UZhNfow^Mn;)cYIXj*obv#CKZRK6;wHfOO1ei2nP zqRMly@~EAs9awnw>U3cRpR#H9J0&`nO6hiB(;rJyj z*lGGyQwNZ&h<4xz+~_>uc+It)0wR?ugf2aV2_C@&sR410>5@`=4m^^sC6yZUF^u^r z#$-(s28yM}F2k1n2Of<~_)!vLQnQ`HY)3hpNIDEqQwisK=G}MTX!Hy!Fhr%Z?!m0{ z*xhBx$wl_6L(9Xin8J1YRCj&Qfr`rW) zNll|wd4J`c1INf*zuS8MxlAyJZ(K~gak2D`=M!%{pZUgA$*pjAFR}HzVx`=2H+||x zu0vwVyHhtJcUoUUZg|d+Dj}Cbm??OJtX<@^t2um1wF-%&qWNq^Xu#iA)*SpNtpj5+ zqJBv4{3H_nx=6TQY+Pl@+D@z9SPN=lr>3S=kb?P}p{(`%peeFe>S-)A!F^MtPw8|5 z!pNkHlj=MGZ+Q)jR_%aPqb*Qu*qUt!X_YskeXKOJ3V8`-9D4)ktTM+oQA>F5MCC;Y zV-$;8BBBwz98U{Hnv4)@$}4TDw^8B$i+V0|bcQmmfS~p(>;v;E)*%tvAhPU`L)Ug6 zMuJ%sl9`tA@<(J>5q3dVVB-QpEp zFjo+ELsenw_)_l^O-G1GGgW6*UQAxv+$>W(IO0#71>zz}%hC^YS7GdAvaHfbOYG#;VK z5;27(;855&j1U9bF?@P!$n4QvKUn-g=-wmURRSEgxThP9lav zXI%|O6WxvCUlwLs*t1|Iomn(?(*Wh(jgu!)76bQyG=-QETZSgp-c{qQot0HZ-5uc){LSaCYKZr(*GrW=#jEFv( z7jEslZi{h?8s1J{u*p-f@kh%LB;azIMB2#; zD2?u6_%H3%m#YA$)&>&qC{wM1STC{33$F&urI_E$!BDGQq(ZFOvjCpu&?KF2V8byh zad1J02Snr(-M~X=Tc*fN$xoM+zoHLkt|$wcdO#M-Og!p){}*?orRo-8BbX14X(m{m zX2DfacvVO)9fgZ?^E5TD!L_I^rTo?Yx9rs#btKEPUk1Yny9%uX@hh8TVy4QFx#o#; zb7<;Ims!=(TR&~Or)Rk5Fuz_wSa?Y`oD}>q54V`I;uI!Z1~mwnaMP66Uj{6md>cIopH~fci))Tq2bOo&pY*`!FfoA0ts0+( zo^7n+LklLW_k@7Sl^#!I?k(dAq-Zuv!1&|(VZTBNfWQLJ&D-dge9*o=?DY8r7Ql_` z6t4DDa>?e1RM_=P4{oSkx+Qr4H0UFHf=P8cjpfPTO+RxtO9?|xQuCVy)!QRsTQrPl z4gFP!K>)>!v`R2nYF_crAMqPU37M+=lX3 z7XGG}8^`Db!Eu-Uh+q1k{d#j<5WMiF=OT0~SM>s%8Sf0CK|8qNs;a*dTqz#EqymWH zR51pwg$4BtHUsoOrnXe5mZG)Iij~kt5~;`x%474`k&?d5N@n?oaC3IS9ZEUaU=NpF zwkO0lm{vlXdt``R;66wo8+&XPF#Gel$H4F=>)_*&Ou#b7)NQhXHvUSB${xiJx&>P8 z#ejQ)v0RPzgb{u70sG;Cb){IES*NbDhxIYVw}zEo?U~+JWh+z3%?9;SwV4XP@uWGD`m#G>m~v5jK`u&$fOJz8 zdsk0ejV4r#Qv3=EUD{@-(fBm~axYYbjGYve>vpqCKc^_Xq!rV7W)vL~VxUKh(-tCuq|9!{4g{vEjDWxea;x+WNs$hQUOo(%h_4M{lQh!s zKZl-o*bsrIY#FCaL+@#EAX@#|xlhzxlC+cuOg7fw%T2n^PI@tDqLC|A?Tbe!0PPT) z>BbtfqS||p ze#p#hv493^ia|hwd<-}v2S!t$^@wViJtzV`)2$~LrufgGXA|HTkTLWrlkGRIHfjT@ z9>`_jj>0%rzKnn+t*ofFecHQ{Y6vNnDpF1yR)q=o=WBQ#_cbLtdjLJKfC@~T zhgD$`*AzXPCaG+B&}!v_>Blk_SAr1&(uB;8#acxho+OYOf|$jx{30I=7ilj2u*=-? z2*NHu$3a1NZSOoU$tKS+G^_}vH-Y?FT2qqdS$n59xY&&)Jpoo!C@&@gKGpZg22u!ceb$SRx#)q2Rg5x8?P$Q^o3e`>-Ry{Pmz#39-YRF0;p!!VZv&0bh(*VoZnvjWINViM;X-4VL)LY;Fxy(DGoz1v|jW z!C2}*e_z4Da|{(Ld6}(aql^d;1?NB!A!Uo^z&A+_{55@y2VwlO#tTjk!+NyqtSW}S zTLilv(G+YP2sPpT%)MSvMCXJQ$Yla~FanX*`eKx<%MQu+>MMCP4nPs+l!4lWM8E!b zbNxuu0JflJ7Vp2ICix3&n?QCg-mNle7N?V2F6QzTEII?!PJxVxTXH-MWiUQ$zMpFo@#0#nX}^HG7|Sm!5Pq!e03?9j zmiLQxvflwS(9YzPD_D|4NqRmhC-aE=ac$%ecODOmIOldHIw(+}ffNMlUY!nOz(M}t zD&illPJ6`#s#v!!1W}WgpO5FicMaqy8Ik2;J#hKR%Lo7?eEpr0r^n-9x;Yf;rw}lb zv?Ev?xW02vE9~~fc@G>`2@Up`eUzJXdNxqthK~Dp;e1z%P&8C9kjGZNi{45M!4G2p zmt**^^|;7S(v}=Qk`qqLSCSFQaF*~;dnq_i7%XIA!-&V!T^K%8sPc-9lcrt@#8ET+*IKm~DE@axXtOQeL3ppH(7`9UZEKK}VeMwZmji&a${@iI zDq%h)c+wHWq|OqOWNJBYU?Vg_YD*QcjD$KRjKVBW2v>|IBL}k6VlYvzn*Q(055R+4 zy^01t;WT0gqXim#OvJC`*lxZ(tN?d#fYzFDc0yi+Z{K+jeH$X z(i&pxKEp~{694N3-tse#vss)CXon#sBG?-HgmMxUaBYzrb4q#J-}0->763C;xx$9c z^V-lTOA4V#Bq$3tQqd<7L@#G(ogPT%NDPs{&Ub76=Vc7d7bs1hICEv9`=g z?21Tjh5AZ7CwKTYjG<+u{9#{`!?s39+6oxJ0Wyc4F_Y|jHWj@Bqf)KfrU{o05T$$a z29tl8-L}-AS43Yb;9;L~+|;_}a>=qG2(m*-kX8bnMaA6pcY=}H?5y3%Qc@pb>}`c_ z0U}8Wz6JcCkn3S|%)>}n_YIQ6$}gj6qZ(a#@#w>1`n4v0B(C55N2_f8>QW(}*Z` z2y#ybRvU@lw03z(@}YcUlRB#>&D#)=wU#FYP5{PB)tZRNxi^T%&G{q!4Z#1zJ)R1cUwOICzw+&z{7u>%M&`rN&&dk z%UyJcE5F_W)l!SZVn_L{jCV>-^0s^Qu&kZ|fAMGTGCQ+8QH^dkg~Ok}WkVfd9w zl?7R8zp(~C1KJ=VMtBL5K?uRJRnxaki=f_=j#ym0bn5S2c(&SR%fsxwIKM7U?QD=t zEAUc_QR3`cQ*SIIMx)<=;F1fte}*NbgP25fHOm3Ei$ZASl=!l&g5kk!^FByGDRa>h zAcfZOyUpyNQAAWxlXI0O(3(f=%PC#ZZAwC&1}3@Og{Y1yYT#LLW;3|3*@v8VrqO7z zJDz+|v+?t+_CtyybuThwCD6ntZXqWPjMb=1oewZh8@?yaB3%=2OF`tffP2Nxb8W~b zJs!cbZI!C57~oixDTo+bZ|k9WthgxP^6_ni5AU=$3Q5c49%{_d_ik+Ct7wyi2Zg;$ zH5&@Fn?-(_KS{#N8CJ^fQVNcShG`lQ#T=n*My>bgrQuPad5H`Vl5k4{(j+_?N@Fc& z@t`M%* zlHXA<)XGt75OGOAtiWvEa_*x0P7eB=$+=awOPh}L59FUA1A3DrVJrGN^`r<3NYOPc z;FMUml9TOEPj&|74dN5s9}{)eoJKRwSIJP_y0@O(s3um3k{A&3h!|lf`w@1@s7d`G zznN<&R^?wBWr1pF7QUj@wzCLZlk!c$Q?^)>Un7r{4eV=Q}I$Cl|$17dH)R z$VI4Zd$o?Vh5^4 zgV&}gE9C_ za6>$P@b-5YHv)jafzRu(xu~pciLT3v6lOu|PYY(tW>CcHph>Bh_VUrhbI(pFU+QRv zhsZkgY6wBSi;@61)rH>5sm@hbb>ff&EvS{)+C5yoYI7upnK)#+(?C3WsoG_9D-Sbg z_+PNx25>fdktB9q5n+ic!q>4eh(|eMRF=rYzAmbeP*zZhAjuEa*CTP1cqU)%c*=4k z3Otiqi2x?8Y8ypL5xy&m6{=pK+^BRsBn+7ditCDklrhyK2LQhp0DuB2)kRMqlKzfR zXG(9~Yhjj!>*j}7Xe{93ia!g176FND9-cq#5((*%yLZwMv)bFz8j?>5l#qbaZLD?R zoraddItem(QString(tr("Swedish")+" "+QString::fromUtf8("(svenska)")),"sv"); comboBox_switchLanguage->addItem(QString(tr("Tamil")+" "+QString::fromUtf8("(தமிழ்)")),"ta"); comboBox_switchLanguage->addItem(QString(tr("Turkish")+" "+QString::fromUtf8("(Tϋrkçe)")),"tr"); + comboBox_switchLanguage->addItem(QString(tr("Vietnamese")+" "+QString::fromUtf8("(Tiếng Việt)")),"vi"); #ifdef GUI_800x480 connect( pushButton_ok, SIGNAL( clicked() ), this, SLOT( isAccepted() ) ); diff --git a/ts/pokerth_START_HERE.ts b/ts/pokerth_START_HERE.ts index 15c586c3..75a3b75a 100644 --- a/ts/pokerth_START_HERE.ts +++ b/ts/pokerth_START_HERE.ts @@ -1283,60 +1283,60 @@ p, li { white-space: pre-wrap; } - + Joining a private Game - + You are about to join a private game. Please enter the password! - + open - - - - + + + + Game Info - - + + Game - - + + Players - - + + State - - + + P - - + + Available Players @@ -1356,137 +1356,137 @@ p, li { white-space: pre-wrap; } - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - + Connected players - max. %1 - - + + T - - - + + + sec (action) - - - + + + sec (hand delay) - - + + Connected players - Max. %1 - + running - - + + running games: %1 - - + + open games: %1 - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? - - + + connected players: %1 @@ -1502,1316 +1502,1345 @@ Feel free to invite other players by right-clicking on their nick in the availab - - + + Time - + Show player stats - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players - + hands - + minutes - + double blinds - + manual blinds order - + Server Error - + You should not kick yourself from this game! - + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -3768,7 +3797,7 @@ Please enter an valid picture! - + Factory Settings @@ -3886,7 +3915,13 @@ Please enter an valid picture! - + + + Server Password: + + + + OK @@ -4033,14 +4068,14 @@ Please enter an valid picture! - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4060,41 +4095,41 @@ Please enter an valid picture! - + - + Server Port: - + - + Use SCTP - + - + Use IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> @@ -4104,7 +4139,7 @@ Please enter an valid picture! - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4112,61 +4147,61 @@ p, li { white-space: pre-wrap; } - - + + Server Address: - - + + Use password for private game: - - + + Computer Engine - - + + Opponent 6: - - + + Opponent 5: - - + + Opponent 4: - - + + Opponent 3: - - + + Opponent 2: - - + + Opponent 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4174,50 +4209,50 @@ p, li { white-space: pre-wrap; } - - + + Enable/Disable Logging + + + + Log File Directory: + + + + + + Write log after every: + + + + + + action (high frequent disc access) + + + + + + hand (medium disc access) + + - Log File Directory: - - - - - - Write log after every: - - - - - - action (high frequent disc access) - - - - - - hand (medium disc access) - - - - - game (low disc access) - + Log Messages - + Player Nicks/Avatars @@ -4256,29 +4291,29 @@ p, li { white-space: pre-wrap; } - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -4318,8 +4353,8 @@ p, li { white-space: pre-wrap; } - - + + Avatar Server: @@ -4405,84 +4440,84 @@ p, li { white-space: pre-wrap; } - - + + Game - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - - Default game name: - - - - + - Default game type: + Default game name: + Default game type: + + + + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4491,20 +4526,20 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: - - + + Opponent 8: - - + + Opponent 9: @@ -4512,69 +4547,69 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error - + The entered flipside picture doesn't exist. Please enter an valid picture! - - + + The log file directory doesn't exist. Please select an valid directory! - + Language Changed - + You have changed application language to %1. Please restart PokerTH to load new language! - + Select your flipside picture - + Images (*.png *.jpg *.gif) - + Open Directory - - + + Blinds Error - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. - + The entered server list address is not a valid URL. Please enter a valid server list address! @@ -4631,230 +4666,240 @@ Please enter a valid server list address! - German + Galician - Greek + German - Hungarian + Greek - Italian + Hungarian - Japanese + Italian - Lithuania + Japanese - Norwegian + Lithuania - Polish + Norwegian - Portuguese-Brazilian + Polish - Portuguese-Portuguese + Portuguese-Brazilian - Russian + Portuguese-Portuguese - Scottish Gaelic + Russian - Slovak + Scottish Gaelic - Spanish + Slovak - Swedish + Spanish - Tamil + Swedish + Tamil + + + + Turkish - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5292,35 +5337,66 @@ Please reenter the password and try again. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + The password is too long. Please choose another one. @@ -5495,7 +5571,7 @@ Please reenter the password and try again. - + Server Message diff --git a/ts/pokerth_af.ts b/ts/pokerth_af.ts index b015dbde..a58f6532 100644 --- a/ts/pokerth_af.ts +++ b/ts/pokerth_af.ts @@ -1793,46 +1793,46 @@ p, li { white-space: pre-wrap; } Spel begin. Wag asseblief... - + Joining a private Game By 'n privaat spel aansluit - + You are about to join a private game. Please enter the password! Jy gaan nou by 'n privaat spel aansluit. Tik asseblief die wagwoord in! - + open maak oop - - - - + + + + Game Info Spelinfo - - + + Game Spel - - + + Players Spelers - - + + State Staat @@ -1842,15 +1842,15 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Available Players Beskikbare spelers @@ -1870,42 +1870,42 @@ p, li { white-space: pre-wrap; } Spelers se info... - - - + + + Standard Standaard - - - + + + Registered players only Net geregistreerde spelers - - - + + + Invited players only Net genooide spelers - - - + + + Ranking game Gradeerspel - + Connected players - max. %1 Gekoppelde spelers: maks %1 - - + + T T @@ -1916,104 +1916,120 @@ p, li { white-space: pre-wrap; } - - + + Time - + + + Admin action ... + + + + + Total kickban + + + + Report inappropriate game name Rapporteer onvanpaste spelnaam - - - + + Close game + + + + + + sec (action) sek (aksie) - - - + + + sec (hand delay) sek (handvertraging) - - + + Connected players - Max. %1 Gekoppelde spelers: maks %1 - + running aan die gang - - + + running games: %1 spelle aan die gang: %1 - - + + open games: %1 oop spelle: %1 - + Invite %1 Nooi %1 - + Ignore %1 Ignoreer %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 het %1 uitgenooi na %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 het die uitnodiging na %2 van die hand gewys.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 kan nie by %2 aansluit nie want hy of sy is besig.</span> - - + + The game will start in<br><b>%1</b> seconds. Die spel begin oor<br><b>%1</b> sekondes. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Jy het by 'n spel aangesluit met die tipe "nooi-alleen". Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers te regskliek. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Jy is deur <b>%2</b> na die spel <b>%1</b> genooi.<br>Wil jy by daardie spel aansluit? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Jy sal nie meer kletsboodskappe of speluitnodigings van hierdie gebruiker kry nie.<br>Wil jy regtig speler <b>%1</b> op jou ignoreerlys sit? - - + + connected players: %1 gekoppelde spelers: %1 @@ -2024,7 +2040,7 @@ Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers t - + Show player stats Wys spelerstatistiek @@ -2037,1304 +2053,1317 @@ Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers t sek (handvertraging) - - + + Connected players Gekoppelde spelers - + hands hande - + minutes minute - + double blinds dubbelblindes - + manual blinds order handmatige blindesvolgorde - + Server Error Bedienerfout - + You should not kick yourself from this game! Jy moenie jouself uit hierdie spel skop nie! - + search for player ... soek vir speler... - + Chat is only available to registered players. Klets werk net vir geregistreerde spelers. - + Invite player ... Nooi speler... - + Ignore player ... Ignoreer speler... - + %1 is playing in "%2". %1 speel in "%2". - + %1 is not playing at the moment. %1 speel nie op die oomblik nie. - - + + PokerTH - Info Message PokerTH - Inligtingsboodskap - - + + + + PokerTH - Question PokerTH - Vraag - + Afghanistan Afghanistan - + ALand Islands Alandeilande - + Albania Albanië - + Algeria Algerië - + American Samoa Amerikaanse Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarktika - + Antigua And Barbuda Antigua en Barbuda - + Argentina Argentinië - + Armenia Armenië - + Aruba Aruba - + Australia Australië - + Austria Oostenryk - + Azerbaijan Azerbeidjans - + Bahamas Bahamas - + Bahrain Bahrein - + Bangladesh Bangladesj - + Barbados Barbados - + Belarus Belarus - + Belgium België - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhoetan - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnië en Herzegowina - + Botswana Botswana - + Bouvet Island Bouveteiland - + Brazil Brasilië - + British Indian Ocean Territory Britse Indiese Oseaangebied - + Brunei Darussalam Broenei Darussalam - + Bulgaria Bulgarye - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodja - + Cameroon Kameroen - + Canada Kanada - + Cape Verde Kaap Verde - + Cayman Islands Kaaimaneilande - + Central African Republic Sentraal-Afrikaanse Republiek - + Chad Tsjad - + Chile Chili - + China Sjina - + Christmas Island Christmaseiland - + Cocos (Keeling) Islands Kokoseilande - + Colombia Colombia - + Comoros Comore - + Congo Kongo - + Congo, The Democratic Republic Of The Kongo, Demokratiese Republiek van die - + Cook Islands Cookeilande - + Costa Rica Costa Rica - + Cote D'Ivoire Ivoorkus - + Croatia Kroasië - + Cuba Kuba - + Cyprus Ciprus - + Czech Republic Tsjeggiese Republiek - + Denmark Denemarke - + Djibouti Djiboeti - + Dominica Dominica - + Dominican Republic Dominikaanse Republiek - + Ecuador Ecuador - + Egypt Egipte - + El Salvador El Salvador - + Equatorial Guinea Ekwatoriaal-Guinee - + Eritrea Eritrea - + Estonia Estland - + Ethiopia Etiopië - + Falkland Islands (Malvinas) Falklandeilande - + Faroe Islands Faroër-eilande - + Fiji Fidji - + Finland Finland - + France Frankryk - + French Guiana Frans-Guinee - + French Polynesia Frans-Polinesië - + French Southern Territories Franse Suidelike Gebiede - + Gabon Gaboen - + Gambia Gambië - + Georgia Georgië - + Germany Duitsland - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Griekeland - + Greenland Groenland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinee - + Guinea-Bissau Guinee-Bissau - + Guyana Guyana - + Haiti Haïti - + Heard Island And Mcdonald Islands Heard- en McDonald-eilande - + Holy See (Vatican City State) Vatikaanstad - + Honduras Honduras - + Hong Kong Hongkong - + Hungary Hongarye - + Iceland Ysland - + India Indië - + Indonesia Indonesië - + Iran, Islamic Republic Of Iran, Islamitiese Republiek van - + Iraq Irak - + Ireland Ierland - + Isle Of Man Eiland Man - + Israel Israel - + Italy Italië - + Jamaica Jamaika - + Japan Japan - + Jersey Jersey - + Jordan Jordanië - + Kazakhstan Kazakhstan - + Kenya Kenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Korea, Demokratiese Volksrepubliek van - + Korea, Republic Of Korea, Republiek van - + Kuwait Koeweit - + Kyrgyzstan Kirgisistan - + Lao People'S Democratic Republic Lao Volks- Demokratiese Republiek - + Latvia Letland - + Lebanon Libanon - + Lesotho Lesotho - + Liberia Liberië - + Libyan Arab Jamahiriya Libië - + Liechtenstein Liechtenstein - + Lithuania Litaue - + Luxembourg Luxemburg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Masedonië (FYROM) - + Madagascar Madagaskar - + Malawi Malawi - + Malaysia Maleisië - + Maldives Maledive - + Mali Mali - + Malta Malta - + Marshall Islands Marshalleilande - + Martinique Martinique - + Mauritania Mauritanië - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Meksiko - + Micronesia, Federated States Of Mikronesië, Federale State van - + Moldova, Republic Of Moldowa, Republiek van - + Monaco Monaco - + Mongolia Mongolië - + Montserrat Montserrat - + Morocco Marokko - + Mozambique Mosambiek - + Myanmar Birma - + Namibia Namibië - + Nauru Nauru - + Nepal Nepal - + Netherlands Nederland - + Netherlands Antilles Nederlandse Antille - + New Caledonia Nieu-Caledonië - + New Zealand Nieu-Seeland - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigerië - + Niue Niue - + Norfolk Island Norfolkeiland - + Northern Mariana Islands Noordelike Marianaeilande - + Norway Noorweë - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Palesteinse Gebied, Besette - + Panama Panama - + Papua New Guinea Papoea-Nieu-Guinee - + Paraguay Paraguay - + Peru Peru - + Philippines Filippyne - + Pitcairn Pitcairn - + Poland Pole - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Katar - + Reunion Reunion - + Romania Roemenië - + Russian Federation Russiese Federasie - + Rwanda Rwanda - + Saint Helena Sint Helena - + Saint Kitts And Nevis Sint Kitts en Nevis - + Saint Lucia Sint Lucia - + Saint Pierre And Miquelon Sint Pierre en Miquelon - + Saint Vincent And The Grenadines Sint Vincent en die Grenadine - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe Sao Tome en Principe - + Saudi Arabia Saoedi-Arabië - + Senegal Senegal - + Serbia And Montenegro Serwië en Montenegro - + Seychelles Seychelle - + Sierra Leone Sierra Leone - + Singapore Singapoer - + Slovakia Slowakye - + Slovenia Slowenië - + Solomon Islands Salomonseilande - + Somalia Somalië - + South Africa Suid-Afrika - + South Georgia And The South Sandwich Islands Suid-Georgië en die Suid-Sandwich-eilande - + Spain Spanje - + Sri Lanka Sri Lanka - + Sudan Soedan - + Suriname Suriname - + Svalbard And Jan Mayen Svalbard en Jan Mayen - + Swaziland Swaziland - + Sweden Swede - + Switzerland Switserland - + Syrian Arab Republic Sirië, Arabiese Republiek van - + Taiwan, Province Of China Taiwan (Republiek van Sjina) - + Tajikistan Tadjikistan - + Tanzania, United Republic Of Tanzanië, Verenigde Republiek van - + Thailand Thailand - + Timor-Leste Oos-Timor - + Togo Togo - + Tokelau Tokelau - + Tonga Tongaans - + Trinidad And Tobago Trinidad en Tobago - + Tunisia Tunisië - + Turkey Turkye - + Turkmenistan Turkmenistan - + Turks And Caicos Islands Turkse en Caicos-eilande - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Oekraïne - + United Arab Emirates Verenigde Arabiese Emirate - + United Kingdom Verenigde Koninkryk - + United States Verenigde State - + United States Minor Outlying Islands Verenigde State se Klein Buite-eilande - + Uruguay Uruguay - + Uzbekistan Oesbekistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Viëtnam - + Virgin Islands, British Britse Maagde-eilande - + Virgin Islands, U.S. Amerikaanse Maagde-eilande - + Wallis And Futuna Wallis en Futuna - + Western Sahara Wes-Sahara - + Yemen Jemen - + Zambia Zambië - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Is jy seker jy wil die spelnaam van "%1" as onvanpas rapporteer? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -4337,7 +4366,7 @@ Tik asseblief 'n geldige prent in! - + Factory Settings Fabrieksinstellings @@ -4598,7 +4627,13 @@ p, li { white-space: pre-wrap; } Wys spelinstellings-dialoog by elke nuwe spel - + + + Server Password: + + + + OK @@ -4652,14 +4687,14 @@ p, li { white-space: pre-wrap; } Voer uit as HTML - - + + Reset all settings to default ... Stel alle instellings terug na verstek... - - + + Note: You can not reset all settings to default during a running game! Let wel: Jy kan nie tydens 'n aktiewe spel alle instellings terugstel na verstek nie! @@ -4699,41 +4734,41 @@ p, li { white-space: pre-wrap; } - + - + Server Port: Bedienerpoort: - + - + Use SCTP Gebruik SCTP - + - + Use IPv6 Gebruik IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Wat is dit?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Wat is dit?</a> @@ -4743,7 +4778,7 @@ p, li { white-space: pre-wrap; } Internetspel-instellings - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4754,61 +4789,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Let wel: verstek-</span><span style=" font-weight:600; font-style:italic;">spelinstellings</span><span style=" font-style:italic;"> soos "Maksimum getal spelers", "Begingeld" en "Klein blinde" sal gebruik word </span><span style=" font-weight:600; font-style:italic;">uit die netwerkspel-instellings.</span></p></body></html> - - + + Server Address: Bedieneradres: - - + + Use password for private game: Gebruik wagwoord vir private spel: - - + + Computer Engine Rekenaarenjin - - + + Opponent 6: Opponent 6: - - + + Opponent 5: Opponent 5: - - + + Opponent 4: Opponent 4: - - + + Opponent 3: Opponent 3: - - + + Opponent 2: Opponent 2: - - + + Opponent 1: Opponent 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4819,8 +4854,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Let wel: Beste avatargehalte met prentratio soos </span><span style=" font-weight:600; font-style:italic;">width=50, height=50.</span></p></body></html> - - + + Enable/Disable Logging Aktiveer/deaktiveer logskryf @@ -4829,44 +4864,44 @@ p, li { white-space: pre-wrap; } Stoor loglêers vir - - + + Log File Directory: Loglêer-gids: - - + + Write log after every: Skryf loglêer na elke: - - + + action (high frequent disc access) aksie (baie gereelde skyftoegang) - - + + hand (medium disc access) hand (medium skyftoegang) - - + + game (low disc access) spel (min skyftoegang) - + Log Messages Logboodskappe - + Player Nicks/Avatars Speler-kenname/avatars @@ -4905,29 +4940,29 @@ p, li { white-space: pre-wrap; } Handmatige bedieneropstelling - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: Stoor loglêers vir: - - + + Day(s) Dag(e) @@ -4967,8 +5002,8 @@ p, li { white-space: pre-wrap; } - - + + Avatar Server: Avatarbediener: @@ -5069,84 +5104,84 @@ p, li { white-space: pre-wrap; } Bediener - - + + Game Spel - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Verstek spelnaam: - - + + Default game type: Verstek speltipe: - - + + Standard Standaard - - + + Registered players only Net geregistreerde spelers - - + + Invited players only Net genooide spelers - - + + Ranking game Gradeerspel - - + + Show lobby chat Wys voorkamerklets - - + + Automatically leave the table after the game finished Verlaat tafel outomaties sodra spel afgehandel is - - + + Ignored Players Geïgnoreerde spelers - - + + Player Speler - - + + Remove Player Verwyder speler - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5159,20 +5194,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Mensspeler:<br /><span style=" font-style:italic;">(Hierdie kennaam sal ook gebruik word vir die aanlynspel-aanmeld)</span></p></body></html> - - + + Opponent 7: Opponent 7: - - + + Opponent 8: Opponent 8: - - + + Opponent 9: Opponent 9: @@ -5195,120 +5230,120 @@ p, li { white-space: pre-wrap; } Frans - + German Duits - + Hungarian Hongaars - + Italian Italiaans - + Lithuania Litaus - + Norwegian Noors - + Portuguese-Brazilian Portuguees (Brasiliaans) - + Portuguese-Portuguese Portuguees (Portuguees) - + Russian Russies - + Slovak Slowaaks - + Spanish Spaans - + Turkish Turks - - - - - + + + + + Settings Error Instellingsfout - + The entered flipside picture doesn't exist. Please enter an valid picture! Die ingetikte omkeerkantprent bestaan nie. Tik asseblief 'n geldige prent in! - - + + The log file directory doesn't exist. Please select an valid directory! Die loglêer-gids bestaan nie. Kies asseblief 'n geldige gids! - + Language Changed Taal verander - + You have changed application language to %1. Please restart PokerTH to load new language! Jy het die program se taal na %1 verander. Herbegin asseblief PokerTH om nuwe taal te laai. - + Select your flipside picture Kies jou omkeerkantprent - + Images (*.png *.jpg *.gif) Prente (*.png *.jpg *.gif) - + Open Directory Maak gids oop - - + + Blinds Error Blindes-fout - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5322,7 +5357,7 @@ Hierdie eerste-klein-blinde-waarde sal na die maksimum toegelate waarde gestel w Bulgaars - + Polish Pools @@ -5332,17 +5367,17 @@ Hierdie eerste-klein-blinde-waarde sal na die maksimum toegelate waarde gestel w Sjinees - + Greek Grieks - + Swedish Sweeds - + The entered server list address is not a valid URL. Please enter a valid server list address! Die ingetikte bedienerlysadres is nie 'n geldige URL nie. @@ -5374,155 +5409,165 @@ Tik asseblief 'n geldige bedienerlysadres in. Deens - + + Galician + + + + Japanese Japannees - + Scottish Gaelic - + Tamil Tamil - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! Die opponentname is nie uniek nie. Kies asseblief verskillende name vir die opponente! - + Settings Information Instellingsinligting - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Jy het die loglêer-gids verander. Herbegin asseblief PokerTH om die nuwe gids vir loglêers te laai! - - + + Maintainer Name Onderhouer se naam - - + + Maintainer EMail Onderhouer se posadres - - + + Create Date Skep datum - + Windows Behaviour Venstergedrag - + scaleable vergroot/kleinbaar - + fixed vasgestel - + Minimum Size Minimumgrootte - + Maximum Size Maksimumgrootte - + Fixed Size Vaste grootte - + State Staat - + Please select your game table style Kies asseblief jou speltafelstyl - + PokerTH game table styles (*.xml) PokerTH-speltafelstyle (*.xml) - + Game Table Style Error Speltafelstyl-fout - + Selected game table style file is already in the list. Please select another one to add! Gekose speltafelstyl-lêer is reeds in die lys. Kies asseblief 'n ander om by te voeg. - + Game Table Style File Error Speltafelstyl-lêerfout - + Could not load game table style file correctly. Style will not be placed into list! Kon nie speltafelstyl-lêer korrek laai nie. Styl sal nie by lys gevoeg word nie. - + Please select your card deck style Kies asseblief jou kaartpakstyl. - + PokerTH card deck styles (*.xml) PokerTH-kaartpakstyle (*.xml) - + Card Deck Style Error Kaartpakstyl-fout - + Selected card deck style file is already in the list. Please select another one to add! Gekose kaartpakstyl-lêer is reeds in die lys. Kies asseblief 'n ander om by te voeg. - + Card Deck Style File Error Kaartpakstyl-lêerfout - + Could not load card deck style file correctly. Style will not be placed into list! Kon nie kaartpakstyl-lêer korrek laai nie. @@ -5561,12 +5606,12 @@ Styl sal nie by lys gevoeg word nie. PokerTH se skoonteks-log (*.txt) - + PokerTH - Settings PokerTH - Instellings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Let op! Dit sal al jou persoonlike instellings skrap en PokerTH verlaat! @@ -6059,17 +6104,17 @@ Please reenter the password and try again. Tik asseblief weer die wagwoord in, en probeer weer. - + The avatar report was accepted by the server. Thank you. Die avatarrapport is deur die bediener aanvaar. Dankie. - + This avatar was already reported by another player. Hierdie avatar is reeds deur 'n ander speler gerapporteer. - + An error occurred while reporting the avatar. 'n Interne fout het voorgekom toe avatar gerapporteer is. @@ -6247,25 +6292,56 @@ Tik asseblief weer die wagwoord in, en probeer weer. - + Server Message Bedienerboodskap - + The game name report was accepted by the server. Thank you. Die spelnaamrapport is deur die bediener aanvaar. Dankie. - + This game name was already reported by another player. Hierdie spelnaam is reeds deur 'n ander speler gerapporteer. - + An error occurred while reporting the game name. 'n Fout het voorgekom toe die spelnaam gerapporteer is. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + PokerTH %1 diff --git a/ts/pokerth_bg.ts b/ts/pokerth_bg.ts index f397dd88..df09d566 100644 --- a/ts/pokerth_bg.ts +++ b/ts/pokerth_bg.ts @@ -1521,46 +1521,46 @@ p, li { white-space: pre-wrap; } Играта на %1 - + Joining a private Game Присъединяване към частна игра - + You are about to join a private game. Please enter the password! Присъединявате се към частна игра. Моля вкарайте паролата! - + open отвори - - - - + + + + Game Info Информация за играта - - + + Game Игра - - + + Players Играчи - - + + State Статус @@ -1570,15 +1570,15 @@ p, li { white-space: pre-wrap; } - - + + P - - + + Available Players Свободни играчи @@ -1598,47 +1598,47 @@ p, li { white-space: pre-wrap; } - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - + Connected players - max. %1 - - + + T @@ -1654,98 +1654,114 @@ p, li { white-space: pre-wrap; } - - + + Time - + Show player stats - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players - Max. %1 - + running работи - - + + running games: %1 течящи игри: %1 - - + + open games: %1 отворени игри: %1 - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -1754,1310 +1770,1323 @@ Feel free to invite other players by right-clicking on their nick in the availab играчи в чата: %1 - - + + connected players: %1 свързани играчи: %1 - - + + Connected players - + hands ръце - + minutes минути - + double blinds удвои входа - + manual blinds order персонализиран ред за входа - + Server Error Грешка със сървъра - + You should not kick yourself from this game! Не би трябвало да игонвате себе си от тази игра! - + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -4717,7 +4746,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings @@ -4835,7 +4864,7 @@ p, li { white-space: pre-wrap; } Свири съобщенията в интернет/мрежова игра като например "играч се присъедини към играта" - + OK @@ -4980,14 +5009,14 @@ p, li { white-space: pre-wrap; } Изтрйи - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5016,46 +5045,48 @@ p, li { white-space: pre-wrap; } Настройки на сървъра за игра в мрежа + + Server Password: - Парола за сървъра: + Парола за сървъра: - + - + Server Port: Порт за сървъра: - + - + Use SCTP Използвай SCTP - + - + Use IPv6 Използвай IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Какво е това?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Какво е това?</a> @@ -5065,7 +5096,7 @@ p, li { white-space: pre-wrap; } Настройки за игра в мрежата - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5080,14 +5111,14 @@ p, li { white-space: pre-wrap; } Настройки на сървъра за игра в Интернет (Посветен сървър) - - + + Server Address: Адрес на сървъра: - - + + Use password for private game: Парола за лична игра: @@ -5116,49 +5147,49 @@ p, li { white-space: pre-wrap; } Псевдоними на играчите - - + + Computer Engine Компютърен мотор - - + + Opponent 6: Съперник 6: - - + + Opponent 5: Съперник 5: - - + + Opponent 4: Съперник 4: - - + + Opponent 3: Съперник 3: - - + + Opponent 2: Съперник 2: - - + + Opponent 1: Съперник 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5166,13 +5197,13 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Забележка: най-доброто качество за картинката на аватара е с пропорция около </span><span style=" font-weight:600; font-style:italic;">широчина=50, височина=50.</span></p></body></html> - + Human Player: Жив играч: - - + + Enable/Disable Logging Пусни/Спри регистрирането @@ -5185,14 +5216,14 @@ p, li { white-space: pre-wrap; } Ден(дни) - - + + Log File Directory: Папка за регистър файловете: - - + + Write log after every: Записвай в регисъра всеки: @@ -5202,42 +5233,42 @@ p, li { white-space: pre-wrap; } - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + action (high frequent disc access) действие (високо ниво на ползване на твърдия диск) - - + + hand (medium disc access) ръка (средно ниво на ползване на твърдия диск) - - + + game (low disc access) игра (слабо ниво на ползване на твърдия диск) - + Log Messages Регистър съобщения - + Player Nicks/Avatars Псевдоними/Аватари на играчите @@ -5270,14 +5301,14 @@ p, li { white-space: pre-wrap; } - - + + Store log files for: - - + + Day(s) @@ -5316,8 +5347,8 @@ p, li { white-space: pre-wrap; } Парола: - - + + Avatar Server: @@ -5403,84 +5434,84 @@ p, li { white-space: pre-wrap; } - - + + Game Игра - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - - Default game name: - - - - + - Default game type: + Default game name: + Default game type: + + + + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5489,14 +5520,14 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Съперник 1: {7:?} - - + + Opponent 8: Съперник 1: {8:?} @@ -5505,8 +5536,8 @@ p, li { white-space: pre-wrap; } Съперник 1: {10:?} - - + + Opponent 9: Съперник 1: {10:?} {9:?} @@ -5529,22 +5560,22 @@ p, li { white-space: pre-wrap; } Френски - + German Немски - + Hungarian Унгарски - + Italian Италиански - + Norwegian Норвежки @@ -5553,85 +5584,85 @@ p, li { white-space: pre-wrap; } Португалски - + Russian Руски - + Slovak Словенски - + Spanish Испански - + Turkish Турски - - - - - + + + + + Settings Error Грешка в настройките - + The entered flipside picture doesn't exist. Please enter an valid picture! Въведената картинка за гръб на тестето не съществува Моля въведете валидна картинка! - - + + The log file directory doesn't exist. Please select an valid directory! Папката за регистър файла не съществува. Моля изберете валидна папка! - + Language Changed Езикъте е променен - + You have changed application language to %1. Please restart PokerTH to load new language! Сменихте езика за апликацията с %1. Моля рестартирайте PokerTH за да заредите новия език! - + Select your flipside picture Изберете картинка за тестето - + Images (*.png *.jpg *.gif) Картинки (*.png *.jpg *.gif) - + Open Directory Отвори папка - - + + Blinds Error Грешка с Входа - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5640,7 +5671,7 @@ This first-small-blind-value will be set to maximum allowed value. Този пръв малък вход ще бъде променен с максималната позволена стойност. - + The entered server list address is not a valid URL. Please enter a valid server list address! @@ -5681,191 +5712,201 @@ Please enter a valid server list address! - + + Galician + + + + Greek - + Japanese - + Lithuania - + Polish - + Portuguese-Brazilian - + Portuguese-Portuguese - + Scottish Gaelic - + Swedish - + Tamil - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State Статус - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6331,17 +6372,17 @@ Please reenter the password and try again. Моля вкарайте наново паролата. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. @@ -6529,25 +6570,56 @@ Please choose a different name. - + Server Message - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + PokerTH %1 diff --git a/ts/pokerth_ca.ts b/ts/pokerth_ca.ts index aa910430..1900114f 100644 --- a/ts/pokerth_ca.ts +++ b/ts/pokerth_ca.ts @@ -1866,60 +1866,60 @@ p, li { white-space: pre-wrap; } S'està començant la partida. Si us plau, espereu... - - - + + + sec (action) segons (acció) - - - + + + sec (hand delay) segons (retard entre mans) - + Joining a private Game S'està unint a una partida privada - + You are about to join a private game. Please enter the password! Esteu a punt d'unir-vos a una partida privada. Si us plau, introduiu la contrasenya! - + open obert - - - - + + + + Game Info Informació de la partida - - + + Game Partida - - + + Players Jugadors - - + + State Estat @@ -1929,15 +1929,15 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Available Players Jugadors disponibles @@ -1957,47 +1957,47 @@ p, li { white-space: pre-wrap; } Informació dels jugadors ... - + Report inappropriate game name Reporteu un nom de joc no apropiat - - - + + + Standard Estàndard - - - + + + Registered players only Només es permeten jugadors registrats - - - + + + Invited players only Només es permeten jugadors invitats - - - + + + Ranking game Partida de rànquing - + Connected players - max. %1 Jugadors conectats - màxim %1 - - + + T T @@ -2013,1317 +2013,1344 @@ p, li { white-space: pre-wrap; } - - + + Time - + Show player stats Mostra les estadístiques dels jugadors - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players - Max. %1 Jugadors conectats - Màxim %1 - + running a marxa - - + + running games: %1 partides a marxa:%1 - - + + open games: %1 partides obertes: %1 - + Invite %1 Invita a en %1 - + Ignore %1 Ignora a en %1 - + %1 is playing in "%2". %1 està jugant a "%2". - + %1 is not playing at the moment. %1 no està jugant al moment. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 ha estat invitat a %2 per %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 ha rebutjat l'invitació a %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 no pot unir-se a %2 perquè està ocupat.</span> - - + + The game will start in<br><b>%1</b> seconds. La partida començarà en<br><b>%1</b> segons. - + Afghanistan Afghanistan - + ALand Islands Illes Åland - + Albania Albània - + Algeria Algèria - + American Samoa Samoa nord-americana - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antàrtida - + Antigua And Barbuda Antigua i Barbuda - + Argentina Argentina - + Armenia Armènia - + Aruba Aruba - + Australia Austràlia - + Austria Àustria - + Azerbaijan Azerbaidjan - + Bahamas Bahames - + Bahrain Bahrain - + Bangladesh Bangla Desh - + Barbados Barbados - + Belarus Bielorússia - + Belgium Bèlgica - + Belize Belize - + Benin Benin - + Bermuda Bermudes - + Bhutan Bhutan - + Bolivia Bolívia - + Bosnia And Herzegovina Bòsnia i Hercegovina - + Botswana Botswana - + Bouvet Island Illa Bouvet - + Brazil Brasil - + British Indian Ocean Territory Territori Britànic de l'Oceà Índic - + Brunei Darussalam Brunei - + Bulgaria Bulgària - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Cambodja - + Cameroon Camerun - + Canada Canadà - + Cape Verde Cap Verd - + Cayman Islands Illes Cayman - + Central African Republic República Centreafricana - + Chad Txad - + Chile Xile - + China Xina - + Christmas Island Illa Christmas - + Cocos (Keeling) Islands Illes Cocos (Keeling) - + Colombia Colòmbia - + Comoros Comores - + Congo Congo - + Congo, The Democratic Republic Of The Congo, República Democràtica del - + Cook Islands Illes Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Costa d'Ivori - + Croatia Croàcia - + Cuba Cuba - + Cyprus Xipre - + Czech Republic República Txeca - + Denmark Dinamarca - + Djibouti Djibouti - + Dominica Dominica - + Dominican Republic República Dominicana - + Ecuador Equador - + Egypt Egipte - + El Salvador El Salvador - + Equatorial Guinea Guinea Equatorial - + Eritrea Eritrea - + Estonia Estònia - + Ethiopia Etiòpia - + Falkland Islands (Malvinas) Illes Malvines (Falkland) - + Faroe Islands Illes Fèroe - + Fiji Fiji - + Finland Finlàndia - + France Frància - + French Guiana Guaiana Francesa - + French Polynesia Polinèsia Francesa - + French Southern Territories Territoris Francesos del Sud - + Gabon Gabon - + Gambia Gàmbia - + Georgia Geòrgia - + Germany Alemanya - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grècia - + Greenland Grenlàndia - + Grenada Grenada - + Guadeloupe Guadalupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea Bissau - + Guyana Guyana - + Haiti Haití - + Heard Island And Mcdonald Islands Illes Heard i McDonald - + Holy See (Vatican City State) Santa Seu (Estat de la Ciutat del Vaticà) - + Honduras Hondures - + Hong Kong Hong Kong - + Hungary Hongria - + Iceland Islàndia - + India Índia - + Indonesia Indonèsia - + Iran, Islamic Republic Of Iran, República Islàmica de l' - + Iraq Iraq - + Ireland Irlanda - + Isle Of Man Illa de Man - + Israel Israel - + Italy Itàlia - + Jamaica Jamaica - + Japan Japó - + Jersey Jersey - + Jordan Jordània - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Corea, República Popular Democràtica de - + Korea, Republic Of Corea, República de - + Kuwait Kuwait - + Kyrgyzstan Kirguizistan - + Lao People'S Democratic Republic Laos, República Popular Democràtica de - + Latvia Letònia - + Lebanon Líban - + Lesotho Lesotho - + Liberia Libèria - + Libyan Arab Jamahiriya Líbia - + Liechtenstein Liechtenstein - + Lithuania Lituània - + Luxembourg Luxemburg - + Macao Macau - + Macedonia, The Former Yugoslav Republic Of Macedònia, Exrepública Iugoslava de - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malàisia - + Maldives Maldives - + Mali Mali - + Malta Malta - + Marshall Islands Illes Marshall - + Martinique Martinica - + Mauritania Mauritània - + Mauritius Maurici - + Mayotte Mayotte - + Mexico Mèxic - + Micronesia, Federated States Of Micronèsia, Estats Federats de - + Moldova, Republic Of Moldàvia, Principat de - + Monaco Mònaco - + Mongolia Mongòlia - + Montserrat Montserrat - + Morocco Marroc - + Mozambique Moçambic - + Myanmar Myanmar - + Namibia Namíbia - + Nauru Nauru - + Nepal Nepal - + Netherlands Països Baixos - + Netherlands Antilles Antilles Neerlandeses - + New Caledonia Nova Caledònia - + New Zealand Nova Zelanda - + Nicaragua Nicaragua - + Niger Níger - + Nigeria Nigèria - + Niue Niue - + Norfolk Island Illa Norfolk - + Northern Mariana Islands Illes Mariannes Septentrionals - + Norway Noruega - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Territoris Palestins Ocupats - + Panama Panamà - + Papua New Guinea Papua Nova Guinea - + Paraguay Paraguai - + Peru Perú - + Philippines Filipines - + Pitcairn Illes Pitcairn - + Poland Polònia - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Qatar - + Reunion Illa de la Reunió - + Romania Romania - + Russian Federation Federació Russa - + Rwanda Rwanda - + Saint Helena Santa Helena - + Saint Kitts And Nevis Saint Christopher i Nevis - + Saint Lucia Saint Lucia - + Saint Pierre And Miquelon Saint-Pierre i Miquelon - + Saint Vincent And The Grenadines Saint Vincent i les Grenadines - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe São Tomé i Príncipe - + Saudi Arabia Aràbia Saudita - + Senegal Senegal - + Serbia And Montenegro Sèrbia i Montenegro - + Seychelles Seychelles - + Sierra Leone Sierra Leone - + Singapore Singapur - + Slovakia Eslovàquia - + Slovenia Eslovènia - + Solomon Islands Illes Salomó - + Somalia Somàlia - + South Africa Sud-àfrica - + South Georgia And The South Sandwich Islands Illes Geòrgia del Sud i Sandwich del Sud - + Spain Espanya - + Sri Lanka Sri Lanka - + Sudan Sudan - + Suriname Surinam - + Svalbard And Jan Mayen Svalbard i Jan Mayen - + Swaziland Swazilàndia - + Sweden Suècia - + Switzerland Suïssa - + Syrian Arab Republic República Àrab Siriana - + Taiwan, Province Of China Taiwan (República de la Xina) - + Tajikistan Tadjikistan - + Tanzania, United Republic Of Tanzània, República Unida de - + Thailand Tailàndia - + Timor-Leste Timor Oriental - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinidad i Tobago - + Tunisia Tunísia - + Turkey Turquia - + Turkmenistan Turkmenistan - + Turks And Caicos Islands Illes Turks i Caicos - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ucraïna - + United Arab Emirates Emirats Àrabs Units - + United Kingdom Regne Unit - + United States Estats Units d'Amèrica - + United States Minor Outlying Islands Illes Perifèriques Menors dels Estats Units d'Amèrica - + Uruguay Uruguai - + Uzbekistan Uzbekistan - + Vanuatu Vanuatu - + Venezuela Veneçuela - + Viet Nam Vietnam - + Virgin Islands, British Illes Verges Britàniques - + Virgin Islands, U.S. Illes Verges Nord-americanes - + Wallis And Futuna Wallis i Futuna - + Western Sahara Sàhara Occidental - + Yemen Iemen - + Zambia Zàmbia - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Esteu segur que voleu reportar el nom de joc: "%1" com a no apropriat? - + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + + + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Heu entrat a una partida on s'uneix només per invitació. Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llista de jugadors disponibles. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Heu estat invitat a la partida <b>%1</b> per <b>%2</b>.<br>Voleu unir-vos a la partida? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? No rebreu més missatges del xat o invitacions de partides d'aquest usuari.<br>Realment voleu posar el jugador <b>%1</b> a la llista per ignorar? @@ -3332,54 +3359,54 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist jugadors al xat: %1 - - + + connected players: %1 jugadors conectats: %1 - - + + Connected players Jugadors conectats - + hands mans - + minutes minuts - + double blinds duplicar cegues - + manual blinds order ordre de cegues manuals - + Server Error Error del servidor - + You should not kick yourself from this game! No es pot expulsar-vos a vos mateix de la partida! - + search for player ... Cerqueu jugadors ... - + Chat is only available to registered players. El xat només està disponible per a jugadors registrats. @@ -3388,7 +3415,7 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist Invita el jugador %1 - + Invite player ... Invita el jugador... @@ -3397,7 +3424,7 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist Ignora el jugador %1 - + Ignore player ... Ignora el jugador... @@ -3408,8 +3435,8 @@ You can invite other players with right-click on their nick in the left availabl Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llista de jugadors disponibles que es troba a l'esquerra. - - + + PokerTH - Info Message PokerTH - Missatge d'informació @@ -3434,8 +3461,10 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist No rebreu més missatges del xat o invitacions de partides d'aquest usuari.<br>Realment voleu posar el jugador <b>%1</b> a la llista per ignorar? - - + + + + PokerTH - Question PokerTH - Pregunta @@ -4457,7 +4486,7 @@ Si us plau, introduiu un imatge vàlid! - + Factory Settings Valors per defecte @@ -4718,7 +4747,13 @@ p, li { white-space: pre-wrap; } Mostra diàleg de configuració d'opcions en cada partida nova - + + + Server Password: + + + + OK @@ -4784,14 +4819,14 @@ p, li { white-space: pre-wrap; } Suprimeix - - + + Reset all settings to default ... Reinicialitzar tots els paràmetres als valors per defecte ... - - + + Note: You can not reset all settings to default during a running game! Teniu en compte que no podeu reinicialitzar tots els paràmetres als valors per defecte quan s'està executant una partida. @@ -4815,41 +4850,41 @@ p, li { white-space: pre-wrap; } - + - + Server Port: Port de servidor: - + - + Use SCTP Utilitza SCTP - + - + Use IPv6 Utilitza IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Què és això?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Què és això?</a> @@ -4859,7 +4894,7 @@ p, li { white-space: pre-wrap; } Configuració de partida d'internet - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4870,61 +4905,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Atenció: </span><span style=" font-weight:600; font-style:italic;">Opcions de partida </span><span style=" font-style:italic;">predeterminats, com "Nombre màxim de jugadors", "Diners inicials", i "Cega petita" s'utilitzaràn </span><span style=" font-weight:600; font-style:italic;">de les Opcions de partida a la xarxa.</span></p></body></html> - - + + Server Address: Adreça de servidor: - - + + Use password for private game: Utilitza contrasenya per a partida privada: - - + + Computer Engine Motor d'ordenador - - + + Opponent 6: Adversari 6: - - + + Opponent 5: Adversari 5: - - + + Opponent 4: Adversari 4: - - + + Opponent 3: Adversari 3: - - + + Opponent 2: Adversari 2: - - + + Opponent 1: Adversari 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4935,8 +4970,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Atenció: Millor qualitat d'avatar amb proporció d'imatge com aquest: </span><span style=" font-weight:600; font-style:italic;">amplada=50, alçada=50.</span></p></body></html> - - + + Enable/Disable Logging Activa/Desactiva registre @@ -4945,44 +4980,44 @@ p, li { white-space: pre-wrap; } Emmagatzemar arxius de registre per - - + + Log File Directory: Carpeta del arxiu de registre: - - + + Write log after every: Escriu registre després de cada: - - + + action (high frequent disc access) acció (accès a disc molt frequent) - - + + hand (medium disc access) mà (accès al disc mitjà) - - + + game (low disc access) partida (accès al disc baix) - + Log Messages Registra els missatges - + Player Nicks/Avatars Noms d'usuari/Avatars de jugador @@ -5021,29 +5056,29 @@ p, li { white-space: pre-wrap; } Configuració manual del servidor - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: Emmagatzemar arxius de registre per: - - + + Day(s) Dia/Dies @@ -5083,8 +5118,8 @@ p, li { white-space: pre-wrap; } - - + + Avatar Server: Servidor d'avatars: @@ -5185,84 +5220,84 @@ p, li { white-space: pre-wrap; } Servidor - - + + Game Partida - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Nom predeterminat de partida: - - + + Default game type: Tipus predeterminat de partida: - - + + Standard Estàndard - - + + Registered players only Només jugadors registrats - - + + Invited players only Només jugadors invitats - - + + Ranking game Partida de rànquing - - + + Show lobby chat Mostra el xat - - + + Automatically leave the table after the game finished Sortir automaticament de la taula després que s'hagi acabat la partida - - + + Ignored Players Jugadors ignorats - - + + Player Jugador - - + + Remove Player Eliminar jugador - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5275,20 +5310,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Jugador humà:<br /><span style=" font-style:italic;">(Aquest nom d'usuari també s'utilitzarà per a l'entrada al joc en línia)</span></p></body></html> - - + + Opponent 7: Adversari 7: - - + + Opponent 8: Adversari 8: - - + + Opponent 9: Adversari 9: @@ -5311,125 +5346,125 @@ p, li { white-space: pre-wrap; } francès - + German alemany - + Hungarian hongarès - + Italian italià - + Lithuania lituà - + Norwegian noruec - + Portuguese-Brazilian portuguès-brasiler - + Portuguese-Portuguese portuguès-portuguès - + Russian rus - + Slovak eslovac - + Spanish castellà - + Tamil tàmil - + Turkish turc - - - - - + + + + + Settings Error Error de configuració - + The entered flipside picture doesn't exist. Please enter an valid picture! L'imatge de revés introduït no existeix. Si us plau, introdueu-ne una vàlida! - - + + The log file directory doesn't exist. Please select an valid directory! El directori d'arxiu de registre no existeix. Si us plau, seleccioneu un directori vàlid! - + Language Changed llengua canviada - + You have changed application language to %1. Please restart PokerTH to load new language! Heu canviat la llengua de l'aplicació a %1. Si us plau, reiniceu el PokerTH per carregar la nova llengua! - + Select your flipside picture Seleccioneu el vostre imatge del revés de la baralla - + Images (*.png *.jpg *.gif) imatges (*.png *.jpg *.gif) - + Open Directory diccionari obert - - + + Blinds Error Error de cegues - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5443,7 +5478,7 @@ Aquest valor per a la primera cega petita s'utilizarà com al valor màxim búlgar - + Polish polonès @@ -5463,17 +5498,17 @@ Aquest valor per a la primera cega petita s'utilizarà com al valor màxim català - + Greek grec - + Swedish suec - + The entered server list address is not a valid URL. Please enter a valid server list address! L'adreça de llista de servidors introduït no és un URL vàlid. @@ -5495,150 +5530,160 @@ Si us plau, introdueu una adreça de llista de servidor vàlida! danès - + + Galician + + + + Japanese japonès - + Scottish Gaelic - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! Els noms d'oponents no són úniques. Si us plau, escolliu altres noms per cada oponent. - + Settings Information Informació sobre els paràmetres - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Heu canviat el directori de fitxers de registre. Si us plau, reinicialitzeu el PokerTH per utilitzar el nou directori pels fitxers de registre. - - + + Maintainer Name nom del mantenidor - - + + Maintainer EMail correu electrònic del mantenidor - - + + Create Date Data de creació - + Windows Behaviour Comportament de les finestres - + scaleable escalable - + fixed fix - + Minimum Size mida mínima - + Maximum Size mida màxima - + Fixed Size mida fixa - + State Estat - + Please select your game table style Si us plau, seleccioneu el vostre estil de taula - + PokerTH game table styles (*.xml) Estils de taula PokerTH (*.xml) - + Game Table Style Error Error d'estil de taula - + Selected game table style file is already in the list. Please select another one to add! L'arxiu d'estil de taula seleccionat ja existeix a la llista. Si us plau, seleccioneu-ne un altre per afegir! - + Game Table Style File Error Error d'arxiu d'estil de taula - + Could not load game table style file correctly. Style will not be placed into list! No s'ha pogut carregar l'arxiu de l'estil de taula correctament. L'estil no es posarà a la llista! - + Please select your card deck style Si us plau, seleccioneu el vostre estil de baralla - + PokerTH card deck styles (*.xml) Estils de baralla PokerTH (*.xml) - + Card Deck Style Error Error d'estil de baralla - + Selected card deck style file is already in the list. Please select another one to add! L'arxiu d'estil de baralla seleccionat ja existeix a la llista. Si us plau, seleccioneu-ne un altre per afegir! - + Card Deck Style File Error Error d'arxiu d'estil de baralla - + Could not load card deck style file correctly. Style will not be placed into list! No s'ha pogut carregar l'arxiu d'estil de baralla correctament. @@ -5685,12 +5730,12 @@ L'estil no es posarà a la llista! Registre PokerTH SQL (*.pdb) - + PokerTH - Settings PokerTH - Paràmetres - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Atenció: Això esborrarà tots els vostres paràmetres i tancarà el PokerTH. @@ -6177,17 +6222,17 @@ Please reenter the password and try again. Si us plau, torneu a introduir la contrasenya i torneu-ho a provar una altra vegada. - + The avatar report was accepted by the server. Thank you. El servidor ha rebut el denunci d'avatar. Gràcies. - + This avatar was already reported by another player. Aquest avatar ja s'ha denunciat per un altre jugador. - + An error occurred while reporting the avatar. Un error s'ha produït mentre s'estava denunciant l'avatar. @@ -6375,25 +6420,56 @@ Si us plau, trieu-ne un altre. - + Server Message Missatge de servidor - + The game name report was accepted by the server. Thank you. L'informe del nom de joc ha sigut acceptat pel servidor. Gràcies. - + This game name was already reported by another player. Aquest informe de nom de joc ja ha estat reportat per un altre jugador. - + An error occurred while reporting the game name. S'ha produït un error quan s'estava reportant el nom de joc. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + PokerTH %1 diff --git a/ts/pokerth_cz.ts b/ts/pokerth_cz.ts index 965f7149..5df721e7 100644 --- a/ts/pokerth_cz.ts +++ b/ts/pokerth_cz.ts @@ -3333,6 +3333,27 @@ Další hráče můžete pozvat pravým kliknutím na jejich přezdívku v sezna Time Čas + + Admin action ... + + + + Total kickban + + + + Close game + + + + Are you sure you want to close the game: +"%1"? + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -4230,7 +4251,7 @@ p, li { white-space: pre-wrap; } Server Password: - Heslo serveru: + Heslo serveru: Server Port: @@ -5048,6 +5069,14 @@ Opravdu se chcete vrátit do továrního nastavení? Scottish Gaelic + + Galician + + + + Vietnamese + + startNetworkGameDialog @@ -5560,6 +5589,31 @@ Prosím, zkontrolujte své uživatelské jméno a heslo. Start Network Game Začít síťovou hru + + The game was closed. + + + + The game could not be closed. + + + + The player was kicked and banned permanently. + + + + The player was kicked, but could not be banned because it was a guest player. + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + The player could not be found. + + tabs diff --git a/ts/pokerth_de.ts b/ts/pokerth_de.ts index cda55a1d..8ec8d1ed 100644 --- a/ts/pokerth_de.ts +++ b/ts/pokerth_de.ts @@ -3148,62 +3148,62 @@ p, li { white-space: pre-wrap; } Spiel - + Joining a private Game Einem privaten Spiel beitreten - + You are about to join a private game. Please enter the password! Dies ist ein privates Spiel. Bitte Kennwort eingeben! - - - - + + + + Game Info Spieldaten - - + + Connected players Verbundene Spieler - + Server Error Serverfehler - + You should not kick yourself from this game! Sie sollten sich nicht selbst des Spiels verweisen! - + running läuft - - + + Game Spiel - - + + Players Spieler - - + + State Status @@ -3212,27 +3212,27 @@ p, li { white-space: pre-wrap; } Privat - + open offen - + hands Runden - + minutes Minuten - + double blinds Blinds verdoppeln - + manual blinds order Eigene Blinds-Reihenfolge @@ -3247,16 +3247,16 @@ p, li { white-space: pre-wrap; } - - + + P Prv (Privat) passt in die Spalte rein Prv - - + + Available Players Verfügbare Spieler @@ -3277,45 +3277,45 @@ p, li { white-space: pre-wrap; } - + Show player stats Zeige Spielerstatistiken - + Report inappropriate game name Unpassenden Spielnamen melden - - - + + + Standard Standard - - - + + + Registered players only Nur registrierte Spieler - - - + + + Invited players only Nur eingeladene Spieler - - - + + + Ranking game Ranking-Spiel - + Connected players - max. %1 Verbundene Spieler - max. %1 @@ -3328,1230 +3328,1241 @@ p, li { white-space: pre-wrap; } Sek. (Hand-Verzögerung) - + Afghanistan Afghanistan - + ALand Islands Åland - + Albania Albanien - + Algeria Algerien - + American Samoa Amerikanisch-Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarktika - + Antigua And Barbuda Antigua und Barbuda - + Argentina Argentinien - + Armenia Armenien - + Aruba Aruba - + Australia Australien - + Austria Österreich - + Azerbaijan Aserbaidschan - + Bahamas Bahamas - + Bahrain Bahrain - + Bangladesh Bangladesch - + Barbados Barbados - + Belarus Weißrussland - + Belgium Belgien - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivien - + Bosnia And Herzegovina Bosnien und Herzegowina - + Botswana Botsuana - + Bouvet Island Bouvetinsel - + Brazil Brasilien - + British Indian Ocean Territory Britisches Territorium im Indischen Ozean - + Brunei Darussalam Brunei - + Bulgaria Bulgarien - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodscha - + Cameroon Kamerun - + Canada Kanada - + Cape Verde Kap Verde - + Cayman Islands Kaimaninseln - + Central African Republic Zentralafrikanische Republik - + Chad Tschad - + Chile Chile - + China China - + Christmas Island Weihnachtsinsel - + Cocos (Keeling) Islands Kokosinseln - + Colombia Kolumbien - + Comoros Komoren - + Congo Kongo - + Congo, The Democratic Republic Of The Demokratische Republik Kongo - + Cook Islands Cookinseln - + Costa Rica Costa Rica - + Cote D'Ivoire Elfenbeinküste - + Croatia Kroatien - + Cuba Kuba - + Cyprus Zypern - + Czech Republic Tschechien - + Denmark Dänemark - + Djibouti Dschibuti - + Dominica Dominica - + Dominican Republic Dominikanische Republik - + Ecuador Ecuador - + Egypt Ägypten - + El Salvador El Salvador - + Equatorial Guinea Äquatorialguinea - + Eritrea Eritrea - + Estonia Estland - + Ethiopia Äthiopien - + Falkland Islands (Malvinas) Falklandinseln - + Faroe Islands Färöer - + Fiji Fidschi - + Finland Finnland - + France Frankreich - + French Guiana Französisch-Guayana - + French Polynesia Französisch-Polynesien - + French Southern Territories Französische Süd- und Antarktisgebiete - + Gabon Gabun - + Gambia Gambia - + Georgia Georgien - + Germany Deutschland - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Griechenland - + Greenland Grönland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bissau - + Guyana Guyana - + Haiti Haiti - + Heard Island And Mcdonald Islands Heard und McDonaldinseln - + Holy See (Vatican City State) Heiliger Stuhl (Staat Vatikanstadt) - + Honduras Honduras - + Hong Kong Hongkong - + Hungary Ungarn - + Iceland Island - + India Indien - + Indonesia Indonesien - + Iran, Islamic Republic Of Iran - + Iraq Irak - + Ireland Irland - + Isle Of Man Isle of Man - + Israel Israel - + Italy Italien - + Jamaica Jamaika - + Japan Japan - + Jersey Jersey - + Jordan Jordanien - + Kazakhstan Kasachstan - + Kenya Kenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Nordkorea - + Korea, Republic Of Südkorea - + Kuwait Kuwait - + Kyrgyzstan Kirgisistan - + Lao People'S Democratic Republic Laos - + Latvia Lettland - + Lebanon Libanon - + Lesotho Lesotho - + Liberia Liberia - + Libyan Arab Jamahiriya Libyen - + Liechtenstein Liechtenstein - + Lithuania Litauen - + Luxembourg Luxemburg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Mazedonien - + Madagascar Madagaskar - + Malawi Malawi - + Malaysia Malaysia - + Maldives Malediven - + Mali Mali - + Malta Malta - + Marshall Islands Marshallinseln - + Martinique Martinique - + Mauritania Mauretanien - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Mexiko - + Micronesia, Federated States Of Föderierte_Staaten_von_Mikronesien - + Moldova, Republic Of Moldawien - + Monaco Monaco - + Mongolia Mongolei - + Montserrat Montserrat - + Morocco Marokko - + Mozambique Mosambik - + Myanmar Myanmar - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Niederlande - + Netherlands Antilles Niederländische Antillen - + New Caledonia Neukaledonien - + New Zealand Neuseeland - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Norfolkinsel - + Northern Mariana Islands Nördliche Marianen - + Norway Norwegen - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Palästina - + Panama Panama - + Papua New Guinea Papua-Neuguinea - + Paraguay Paraguay - + Peru Peru - + Philippines Philippinen - + Pitcairn Pitcairninseln - + Poland Polen - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Katar - + Reunion Reunion - + Romania Rumänien - + Russian Federation Russland - + Rwanda Ruanda - + Saint Helena St. Helena - + Saint Kitts And Nevis St._Kitts_und_Nevis - + Saint Lucia St. Lucia - + Saint Pierre And Miquelon Saint-Pierre und Miquelon - + Saint Vincent And The Grenadines St. Vincent und die Grenadinen - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe São Tomé und Príncipe - + Saudi Arabia Saudi-Arabien - + Senegal Senegal - + Serbia And Montenegro Serbien und Montenegro - + Seychelles Seychellen - + Sierra Leone Sierra Leone - + Singapore Singapur - + Slovakia Slowakei - + Slovenia Slowenien - + Solomon Islands Salomonen - + Somalia Somalia - + South Africa Südafrika - + South Georgia And The South Sandwich Islands Südgeorgien und die Südlichen Sandwichinseln - + Spain Spanien - + Sri Lanka Sri Lanka - + Sudan Sudan - + Suriname Suriname - + Svalbard And Jan Mayen Spitzbergen und Jan Mayen - + Swaziland Swasiland - + Sweden Schweden - + Switzerland Schweiz - + Syrian Arab Republic Syrien - + Taiwan, Province Of China Taiwan - + Tajikistan Tadschikistan - + Tanzania, United Republic Of Tansania - + Thailand Thailand - + Timor-Leste Osttimor - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinidad und Tobago - + Tunisia Tunesien - + Turkey Türkei - + Turkmenistan Turkmenistan - + Turks And Caicos Islands Turks- und Caicosinseln - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ukraine - + United Arab Emirates Vereinigte Arabische Emirate - + United Kingdom Vereinigtes Königreich - + United States Vereinigte Staaten - + United States Minor Outlying Islands United States Minor Outlying Islands - + Uruguay Uruguay - + Uzbekistan Usbekistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Vietnam - + Virgin Islands, British Britische Jungferninseln - + Virgin Islands, U.S. Amerikanische Jungferninseln - + Wallis And Futuna Wallis und Futuna - + Western Sahara Westsahara - + Yemen Jemen - + Zambia Sambia - + Zimbabwe Simbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Sind Sie sicher, dass Sie den Spielnamen "%1" als unpassend melden möchten? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + - - + + T Typ passt in die Spalte rein Typ @@ -4568,88 +4579,104 @@ p, li { white-space: pre-wrap; } - - + + Time Zeit - - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + + sec (action) Sek. (Aktion) - - - + + + sec (hand delay) Sek. (Hand-Verzögerung) - - + + Connected players - Max. %1 Verbundene Spieler - max. %1 - - + + running games: %1 Laufende Spiele: %1 - - + + open games: %1 Offene Spiele: %1 - + Invite %1 %1 einladen - + Ignore %1 %1 ignorieren - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 wurde zu %2 von %3 eingeladen.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 hat die Einladung zu %2 abgelehnt.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 kann %2 nicht beitreten, da er beschäftigt ist.</span> - - + + The game will start in<br><b>%1</b> seconds. Das Spiel startet in<br><b>%1</b> Sekunden. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Sie sind einem Spiel mit dem Typ "nur Einladungen" beigetreten. Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerliste mit der rechten Maustaste klicken. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Sie wurden von <b>%2</b> zu dem Spiel <b>%1</b> eingeladen.<br>Möchten Sie diesem Spiel beitreten? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Sie werden keine Chat-Nachrichten oder Spieleinladungen mehr von diesem Spieler erhalten.<br>Möchten Sie den Spieler <b>%1</b> wirklich auf Ihre Ignorier-Liste setzen? @@ -4658,50 +4685,52 @@ Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerli Spieler im Chat: %1 - - + + connected players: %1 Verbundene Spieler: %1 - + search for player ... nach Spieler suchen... - + Chat is only available to registered players. Der Chat steht nur registrierten Spielern zur Verfügung. - + Invite player ... Spieler einladen... - + Ignore player ... Spieler ignorieren... - + %1 is playing in "%2". %1 spielt in "%2". - + %1 is not playing at the moment. %1 spielt derzeit nicht. - - + + PokerTH - Info Message PokerTH - Infomeldung - - + + + + PokerTH - Question PokerTH - Frage @@ -6101,72 +6130,74 @@ p, li { white-space: pre-wrap; } - + - + Server Port: Serverport: - + - + Use IPv6 IPv6 benutzen + + Server Password: - Serverkennwort: + Serverkennwort: - - + + Computer Engine Computer-Engine - - + + Opponent 5: Gegner 5: - - + + Opponent 3: Gegner 3: - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Hinweis: Standard-Spieleinstellungen, wie "Maximale Anzahl Spieler", "Startgeld" und "Small Blind", werden von den Netzwerkspiel-Einstellungen übernommen. - + (This nick will also be used for the online game login) (Dieser Nickname wird auch für die Anmeldung zum Onlinespiel verwendet) - - + + Opponent 2: Gegner 2: - - + + Opponent 1: Gegner 1: - - + + Opponent 4: Gegner 4: - + Human Player: Menschlicher Spieler: @@ -6179,15 +6210,15 @@ p, li { white-space: pre-wrap; } Tag(e) - - + + Log File Directory: Verzeichnis der Logdatei: - + Log Messages Log-Nachrichten @@ -6296,8 +6327,8 @@ p, li { white-space: pre-wrap; } Engine-Version für Computergegener: - - + + Enable/Disable Logging Loggen an/aus @@ -6306,8 +6337,8 @@ p, li { white-space: pre-wrap; } Speichere Logdateien für - - + + Write log after every: Schreibe Logdateien nach jeder/jedem: @@ -6329,25 +6360,25 @@ p, li { white-space: pre-wrap; } - + - + Use SCTP SCTP benutzen - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://de.wikipedia.org/wiki/IPv6">Was ist das?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://de.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Was ist das?</a> @@ -6390,31 +6421,31 @@ p, li { white-space: pre-wrap; } Zeit für Spieleraktion (Sek.): - - + + Opponent 6: Gegner 6: - + Note: Best avatar quality with image ratio like width=50, height=50. Hinweis: Beste Avatar-Qualität bei einem Seitenverhältnis wie Breite=50 und Höhe=50. - - + + action (high frequent disc access) Aktion (häufiger Festplattenzugriff) - - + + hand (medium disc access) Runde (mittlerer Festplattenzugriff) - - + + game (low disc access) Spiel (geringer Festplattenzugriff) @@ -6444,14 +6475,14 @@ p, li { white-space: pre-wrap; } Internetserver-Einstellungen (dedizierter Server) - - + + Server Address: Serveradresse: - - + + Use password for private game: Benutze Kennwort für private Spiele: @@ -6605,7 +6636,7 @@ p, li { white-space: pre-wrap; } Lobbychat (IRC-Server) aktivieren/deaktivieren - + Player Nicks/Avatars Spielernicknamen/-avatare @@ -6677,7 +6708,7 @@ p, li { white-space: pre-wrap; } Sek. - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -6688,7 +6719,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Hinweis: Standard-</span><span style=" font-weight:600; font-style:italic;">Spieleinstellungen</span><span style=" font-style:italic;"> - wie "Maximale Anzahl Spieler", "Startgeld" und "Small Blind" - werden von den </span><span style=" font-weight:600; font-style:italic;">Einstellungen für Netzwerkspiel</span><span style=" font-style:italic;"> übernommen.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -6707,7 +6738,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings Standardeinstellung @@ -6783,8 +6814,8 @@ p, li { white-space: pre-wrap; } Manuelle Serverkonfiguration - - + + Game Spiel @@ -6801,78 +6832,78 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Hinweis: Standard-</span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Spieleinstellungen</span><span style=" font-size:12pt; font-style:italic;"> - wie &quot;Maximale Spieleranzahl&quot;, &quot;Startgeld&quot; und &quot;Small Blind&quot; werden aus den </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Einstellungen für Netzwerkspiele</span> übernommen.</p></body></html> - - + + Default game name: Standard-Spielname: - - + + Default game type: Standard-Spieltyp: - - + + Standard Standard - - + + Registered players only Nur registrierte Spieler - - + + Invited players only Nur eingeladene Spieler - - + + Ranking game Ranking-Spiel - - + + Show lobby chat Lobby-Chat anzeigen - - + + Automatically leave the table after the game finished Automatisch den Tisch verlassen wenn das Spiel endet - - + + Ignored Players Ignorierte Spieler - - + + Player Spieler - - + + Remove Player Spieler entfernen - + OK OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6885,14 +6916,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Menschlicher Spieler:<br /><span style=" font-style:italic;">(Dieser Nickname wird auch für die Anmeldung zum Onlinespiel verwendet)</span></p></body></html> - - + + Store log files for: Speichere Logdateien für: - - + + Day(s) Tag(e) @@ -6917,14 +6948,14 @@ p, li { white-space: pre-wrap; } Exportieren als HTML - - + + Reset all settings to default ... Alle Einstellungen zurücksetzen - - + + Note: You can not reset all settings to default during a running game! Hinweis: Sie können während eines laufenden Spieles die Einstellungen nicht zurücksetzen @@ -7039,8 +7070,8 @@ p, li { white-space: pre-wrap; } Kennwort: - - + + Avatar Server: Avatarserver: @@ -7134,14 +7165,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Menschlicher Spieler:<br /><span style=" font-size:11pt; font-style:italic;">(Dieser Nickname wird auch für die Anmeldung zum Onlinespiel verwendet)</span></p></body></html> - - + + Opponent 7: Gegner 7: - - + + Opponent 8: Gegner 8: @@ -7150,8 +7181,8 @@ p, li { white-space: pre-wrap; } Gegner 6: {10:?} - - + + Opponent 9: Gegner 9: @@ -7159,11 +7190,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Einstellungsfehler @@ -7180,7 +7211,7 @@ Please select an valid directory! Bitte wählen Sie ein gültiges Verzeichnis! - + Select your flipside picture Wähle das Rückseitenbild @@ -7189,12 +7220,12 @@ Bitte wählen Sie ein gültiges Verzeichnis! Bilder (*.png) - + Open Directory Öffne Verzeichnis - + Images (*.png *.jpg *.gif) Bilder (*.png *.jpg *.gif) @@ -7207,14 +7238,14 @@ Bitte wählen Sie ein gültiges Verzeichnis! Español (Spanisch) - - + + Blinds Error Blinds-Fehler - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7238,12 +7269,12 @@ Der erste Small Blind wird auf den größten erlaubten Wert gesetzt.Französisch - + German Deutsch - + Hungarian Ungarisch @@ -7256,65 +7287,70 @@ Der erste Small Blind wird auf den größten erlaubten Wert gesetzt.Português (Portugiesisch) - + Russian Russisch - + Turkish Türkisch - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! Die Namen der Gegner müssen verschieden sein. Bitte wähen Sie unterschiedliche Namen für jeden Gegner! - + Language Changed Sprache geändert - + You have changed application language to %1. Please restart PokerTH to load new language! Sie haben die Sprache auf %1 geändert. Bitte starten Sie PokerTH neu um die neue Sprache zu laden! - + Italian Italienisch - + Slovak Slowakisch - + The entered flipside picture doesn't exist. Please enter an valid picture! Das Rückseitenbild existiert nicht. Bitte geben Sie ein gültiges Bild an! - - + + The log file directory doesn't exist. Please select an valid directory! Das Logdateien-Verzeichnis existiert nicht. Bitte wählen Sie ein gültiges Verzeichnis! - + Norwegian Norwegisch - + Spanish Spanisch @@ -7324,7 +7360,7 @@ Bitte wählen Sie ein gültiges Verzeichnis! Bulgarisch - + Polish Polnisch @@ -7334,17 +7370,17 @@ Bitte wählen Sie ein gültiges Verzeichnis! Chinesisch - + Greek Griechisch - + Swedish Schwedisch - + The entered server list address is not a valid URL. Please enter a valid server list address! Die eingegebene Adresse ist keine gültige URL. @@ -7376,32 +7412,37 @@ Bitte geben Sie eine gültige Serverlisten-Adresse ein! Dänisch - + + Galician + + + + Japanese Japanisch - + Lithuania Litauisch - + Portuguese-Brazilian Brasilianisches Portugiesisch - + Portuguese-Portuguese Portugiesisch - + Scottish Gaelic - + Tamil Tamilisch @@ -7414,133 +7455,133 @@ Bitte geben Sie eine gültige Serverlisten-Adresse ein! Französisch (français) - + Settings Information Einstellungsinformation - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Sie haben das Verzeichnish für die Log-Dateien geändert. Bitte starten Sie PokerTH neu, so dass das neue Verzeichnis für die Log-Dateien benutzt wird. - - + + Maintainer Name Name des Betreuers - - + + Maintainer EMail E-Mail-Adr. des Betreuers - - + + Create Date Erstellt am - + Windows Behaviour Fensterverhalten - + scaleable skalierbar - + fixed fixiert - + Minimum Size Mindestgröße - + Maximum Size Maximale Größe - + Fixed Size Feste Größe - + State Status - + Please select your game table style Bitte wählen Sie Ihren Spieltisch-Stil - + PokerTH game table styles (*.xml) PokerTH-Spieltisch-Stile (*.xml) - + Game Table Style Error Spieltisch-Stilfehler - + Selected game table style file is already in the list. Please select another one to add! Die gewählte Spieltisch-Stildatei ist bereits in der Liste enthalten. Bitte wählen Sie eine andere, um sie hinzuzufügen! - + Game Table Style File Error Spieltisch-Stildatei-Fehler - + Could not load game table style file correctly. Style will not be placed into list! Die Spieltisch-Stildatei konnte nicht korrekt geladen werden. Der Stil wird nicht zur Liste hinzugefügt! - + Please select your card deck style Bitte wählen Sie Ihren Kartendeck-Stil - + PokerTH card deck styles (*.xml) PokerTH-Kartendeck-Stil (*.xml) - + Card Deck Style Error Kartendeck-Stilfehler - + Selected card deck style file is already in the list. Please select another one to add! Die gewählte Kartendeck-Stildatei ist bereits in der Liste enthalten. Bitte wählen Sie eine andere, um sie hinzuzufügen! - + Card Deck Style File Error Kartendeck-Stildatei-Fehler - + Could not load card deck style file correctly. Style will not be placed into list! Die Kartendeck-Stildatei konnte nicht korrekt geladen werden. @@ -7579,12 +7620,12 @@ Der Stil wird nicht zur Liste hinzugefügt! PokerTH-Reintext-Log (*.txt) - + PokerTH - Settings PokerTH - Einstellungen - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Achtung: alle persönlichen Einstellungen werden gelöscht und PokerTH wird beendet! @@ -8132,35 +8173,66 @@ Please reenter the password and try again. Bitte geben Sie das Kennwort erneut ein und versuchen Sie es nochmal. - + The avatar report was accepted by the server. Thank you. Die Meldung zum Avatar wurde vom Server akzeptiert. Vielen Dank. - + This avatar was already reported by another player. Dieser Avatar wurde bereits von einem anderen Spieler gemeldet. - + An error occurred while reporting the avatar. Es trat ein Fehler beim Melden des Avatars auf. - + The game name report was accepted by the server. Thank you. Die Meldung über den Spielnamen wurde vom Server akzeptiert. Vielen Dank. - + This game name was already reported by another player. Dieser Spielname wurde schon durch einen anderen Spieler gemeldet. - + An error occurred while reporting the game name. Es trat ein Fehler beim Melden des Spielnamens auf. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + The password is too long. Please choose another one. @@ -8323,7 +8395,7 @@ Bitte wählen Sie einen anderen Namen. - + Server Message Servermeldung diff --git a/ts/pokerth_dk.ts b/ts/pokerth_dk.ts index 6c5aa88e..3c5e2a00 100644 --- a/ts/pokerth_dk.ts +++ b/ts/pokerth_dk.ts @@ -1861,46 +1861,46 @@ p, li { white-space: pre-wrap; } %1's spil - + Joining a private Game Tilslut et privat spil - + You are about to join a private game. Please enter the password! Du er ved at tilslutte et privat spil. Indtast venligst adgangskode! - + open åben - - - - + + + + Game Info Spilinformation - - + + Game Spil - - + + Players Spillere - - + + State Tilstand @@ -1910,15 +1910,15 @@ p, li { white-space: pre-wrap; } - - + + P - - + + Available Players Tilgængelige spillere @@ -1938,47 +1938,47 @@ p, li { white-space: pre-wrap; } - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - + Connected players - max. %1 - - + + T @@ -1994,98 +1994,114 @@ p, li { white-space: pre-wrap; } - - + + Time - + Show player stats - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players - Max. %1 - + running igangværende - - + + running games: %1 igangværende spil: %1 - - + + open games: %1 åbne spil: %1 - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -2094,1310 +2110,1323 @@ Feel free to invite other players by right-clicking on their nick in the availab spillere i chat: %1 - - + + connected players: %1 tilsluttede spillere: %1 - - + + Connected players - + hands hænder - + minutes minutter - + double blinds dobbelt blinds - + manual blinds order manuel blinds-orden - + Server Error Server fejl - + You should not kick yourself from this game! Du skal ikke smide dig selv ud af dette spil! - + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -4722,46 +4751,48 @@ p, li { white-space: pre-wrap; } Netværks-server indstillinger + + Server Password: - Server adgangskode: + Server adgangskode: - + - + Server Port: Server port: - + - + Use SCTP Benyt SCTP - + - + Use IPv6 Benyt IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Hvad er dette?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Hvad er dette?</a> @@ -4771,7 +4802,7 @@ p, li { white-space: pre-wrap; } Internet-spil indstillinger - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4782,14 +4813,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note: Standard </span><span style=" font-weight:600; font-style:italic;">Spilindstillinger</span><span style=" font-style:italic;"> som "maksimalt antal spillere", "Start beløb" og "Small blind" vil blive brugt </span><span style=" font-weight:600; font-style:italic;">fra netværk-spil indstillinger.</span></p></body></html> - - + + Server Address: Server adresse: - - + + Use password for private game: Benyt adgangskode for privat spil: @@ -4806,49 +4837,49 @@ p, li { white-space: pre-wrap; } #pokerth - - + + Computer Engine Computer motor - - + + Opponent 6: Modstander 6: - - + + Opponent 5: Modstander 5: - - + + Opponent 4: Modstander 4: - - + + Opponent 3: Modstander 3: - - + + Opponent 2: Modstander 2: - - + + Opponent 1: Modstander 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4859,13 +4890,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note: Bedste avatar-kvalitet ved billed-størrelse omkring </span><span style=" font-weight:600; font-style:italic;">bredde=50, højde=50.</span></p></body></html> - + Human Player: Menneskespiller: - - + + Enable/Disable Logging Slå til/fra logning @@ -4874,14 +4905,14 @@ p, li { white-space: pre-wrap; } Gem filer for - - + + Log File Directory: Logfil sti: - - + + Write log after every: Skriv log efter hvert: @@ -4891,42 +4922,42 @@ p, li { white-space: pre-wrap; } - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + action (high frequent disc access) handling (højt-forekommende disk-adgang) - - + + hand (medium disc access) hånd (mellem-forekommende disk-adgang) - - + + game (low disc access) spil (lavt-forekommende disk-adgang) - + Log Messages log beskeder - + Player Nicks/Avatars Spiller navn/avatars @@ -4938,7 +4969,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings @@ -5019,89 +5050,89 @@ p, li { white-space: pre-wrap; } Manuel serverkonfiguration - - + + Game Spil - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - - Default game name: - - - - + - Default game type: + Default game name: + Default game type: + + + + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5110,26 +5141,26 @@ p, li { white-space: pre-wrap; } - - + + Store log files for: - - + + Day(s) Dag(e) - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5176,8 +5207,8 @@ p, li { white-space: pre-wrap; } Adgangskode: - - + + Avatar Server: Avatar-server: @@ -5259,14 +5290,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Få nye PokerTH kortbagsider ...</span></a></p></body></html> - - + + Opponent 7: Modstander 7: - - + + Opponent 8: Modstander 8: @@ -5275,8 +5306,8 @@ p, li { white-space: pre-wrap; } Modstander 10: - - + + Opponent 9: Modstander 9: @@ -5299,22 +5330,22 @@ p, li { white-space: pre-wrap; } Fransk - + German Tysk - + Hungarian Ungarsk - + Italian Italiensk - + Norwegian Norsk @@ -5323,90 +5354,90 @@ p, li { white-space: pre-wrap; } Portugisisk - + Russian Russisk - + Slovak Slovakisk - + Spanish Spansk - + Tamil - + Turkish Tyrkisk - - - - - + + + + + Settings Error Indstillingsfejl - + The entered flipside picture doesn't exist. Please enter an valid picture! Det indtastede bagside-billede eksiterer ikke. Indtast venligts et brugbart billede! - - + + The log file directory doesn't exist. Please select an valid directory! Log-filens sti eksisterer ikke. Vælge venligst en brugbar sti! - + Language Changed Sprog ændret - + You have changed application language to %1. Please restart PokerTH to load new language! Du har ændret programmets sprog til %1. Genstart venligst PokerTH for at indlæse det nye sprog! - + Select your flipside picture Vælg dit bagside-billede - + Images (*.png *.jpg *.gif) Billeder (*.png *.jpg *.gif) - + Open Directory Åben sti - - + + Blinds Error Blinds-fejl - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5420,7 +5451,7 @@ Dene første-small-blind-værdi vil blive sat to den maksimale tiladte værdi.Bulgarisk - + Polish Polsk @@ -5445,32 +5476,32 @@ Dene første-small-blind-værdi vil blive sat to den maksimale tiladte værdi. - + Greek Græsk - + Lithuania - + Portuguese-Brazilian - + Portuguese-Portuguese - + Swedish Svensk - + The entered server list address is not a valid URL. Please enter a valid server list address! Den indtastede serverlise adresse er ikke en brugbar URL. @@ -5487,160 +5518,170 @@ Indtast venligst en brugbar serverliste adresse! Dansk - + + Galician + + + + Japanese - + Scottish Gaelic - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Vedligeholders navn - - + + Maintainer EMail Vedligeholders email - - + + Create Date Oprettelsesdato - + Windows Behaviour Vinduernes adfærd - + scaleable Skalérbar - + fixed fast - + Minimum Size Mindste størrelse - + Maximum Size Største størrelse - + Fixed Size Fast størrelse - + State Tilstand - + Please select your game table style Vælg venligst din pokerbord-skin - + PokerTH game table styles (*.xml) PokerTH pokerbord-skins(*.xml) - + Game Table Style Error Pokerbord-skin fejl - + Selected game table style file is already in the list. Please select another one to add! Det valgte pokerbord-skin er allerede på listen. Vælg venligst et andet at tilføje! - + Game Table Style File Error Pokerbord-skin fil-fejl - + Could not load game table style file correctly. Style will not be placed into list! Kunne ikke indlæse pokerbord-skin filen korrekt. Skin'et vil ikke blive tilføjet til listen! - + Please select your card deck style Vælg venligst din kort-bagside - + PokerTH card deck styles (*.xml) PokerTH kort-bagsider(*.xml) - + Card Deck Style Error Kort-bagside fejl - + Selected card deck style file is already in the list. Please select another one to add! Den valgte kort-bagsidefil er allerede på listen. Vælg venligst en anden for at tilføje! - + Card Deck Style File Error Kort-bagside-filfejl - + Could not load card deck style file correctly. Style will not be placed into list! Kunne ikke indlæse kort-bagsidefilen korrekt. Kortbagsiden vil ikke blive tilføjet til listen! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6163,35 +6204,66 @@ Please reenter the password and try again. Indtast venligst adgangskoden igen. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + The password is too long. Please choose another one. @@ -6354,7 +6426,7 @@ Vælg venligst et andet navn. - + Server Message Server-besked diff --git a/ts/pokerth_es.ts b/ts/pokerth_es.ts index 199c8a2b..e6bfcde3 100644 --- a/ts/pokerth_es.ts +++ b/ts/pokerth_es.ts @@ -3552,46 +3552,46 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info Información de la partida - + Server Error Error en el servidor - + You should not kick yourself from this game! No puede expulsarse a usted mismo. - + Joining a private Game Accediendo a una partida privada - - + + Game Partida - - + + Players Jugadores - - + + State Estado @@ -3600,43 +3600,43 @@ p, li { white-space: pre-wrap; } Privado - + You are about to join a private game. Please enter the password! Va a unirse a una partida privada. Introduzca la contraseña. - + running en marcha - + open abierta - - + + Connected players Jugadores conectados - + hands manos - + minutes minutos - + double blinds duplicar ciegas - + manual blinds order orden manual de ciegas @@ -3651,15 +3651,15 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Available Players Jugadores disponibles @@ -3680,45 +3680,45 @@ p, li { white-space: pre-wrap; } - + Show player stats Mostrar estadísticas del jugador - + Report inappropriate game name Informar de nombre de partida inapropiado - - - + + + Standard Normal - - - + + + Registered players only Sólo registrados - - - + + + Invited players only Sólo invitados - - - + + + Ranking game Clasificatoria - + Connected players - max. %1 Jugadores conectados - máx. %1 @@ -3731,1231 +3731,1242 @@ p, li { white-space: pre-wrap; } seg (por mano) - + Afghanistan Afganistán - + ALand Islands Alandia - + Albania Albania - + Algeria Argelia - + American Samoa Samoa Americana - + Andorra Andorra - + Angola Angola - + Anguilla Anguila - + Antarctica Antártica - + Antigua And Barbuda Antigua y Barbuda - + Argentina Argentina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Azerbaiyán - + Bahamas Bahamas - + Bahrain Baréin - + Bangladesh Bangladés - + Barbados Barbados - + Belarus Bielorrusia - + Belgium Bélgica - + Belize Belice - + Benin Benín - + Bermuda Bermudas - + Bhutan Bután - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia y Herzegovina - + Botswana Botsuana - + Bouvet Island Isla Bouvet - + Brazil Brasil - + British Indian Ocean Territory Territorio británico del Océano Índico - + Brunei Darussalam Brunéi - + Bulgaria Bulgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Camboya - + Cameroon Camerún - + Canada Canadá - + Cape Verde Cabo Verde - + Cayman Islands Islas Caimán - + Central African Republic República Centroafricana - + Chad Chad - + Chile Chile - + China China - + Christmas Island Isla de Navidad - + Cocos (Keeling) Islands Islas Cocos - + Colombia Colombia - + Comoros Comoras - + Congo Congo - + Congo, The Democratic Republic Of The Congo, República Democrática del - + Cook Islands Islas Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Costa de Marfil - + Croatia Croacia - + Cuba Cuba - + Cyprus Chripe - + Czech Republic República Checa - + Denmark Dinamarca - + Djibouti Yibuti - + Dominica Dominica - + Dominican Republic República Dominicana - + Ecuador Ecuador - + Egypt Egipto - + El Salvador El Salvador - + Equatorial Guinea Guinea Ecuatorial - + Eritrea Eritrea - + Estonia Estonia - + Ethiopia Etiopía - + Falkland Islands (Malvinas) Islas Malvinas - + Faroe Islands Islas Feroe - + Fiji Fiji - + Finland Finlandia - + France Francia - + French Guiana Guayana Francesa - + French Polynesia Polinesia Francesa - + French Southern Territories Territorios Franceses del Sur - + Gabon Gabón - + Gambia Gambia - + Georgia Georgia - + Germany Alemania - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grecia - + Greenland Groenlandia - + Grenada Granada - + Guadeloupe Guadalupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bissau - + Guyana Guayana - + Haiti Haití - + Heard Island And Mcdonald Islands Islas Heard y McDonald - + Holy See (Vatican City State) Santa Sede (Ciudad Estado del Vaticano) - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Hungría - + Iceland Islandia - + India India - + Indonesia Indonesia - + Iran, Islamic Republic Of Irán, República Islámica de - + Iraq Irak - + Ireland Irlanda - + Isle Of Man Islan de Man - + Israel Israel - + Italy Italia - + Jamaica Jamaica - + Japan Japón - + Jersey Jersey - + Jordan Jordania - + Kazakhstan Kazajistán - + Kenya Kenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Corea, República Popular Democrática de - + Korea, Republic Of Corea, República de - + Kuwait Kuwait - + Kyrgyzstan Kirguistán - + Lao People'S Democratic Republic Lao, República Democrática Popular - + Latvia Letonia - + Lebanon Líbano - + Lesotho Lesoto - + Liberia Liberia - + Libyan Arab Jamahiriya Libia - + Liechtenstein Liechtenstein - + Lithuania Lituania - + Luxembourg Luxemburgo - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia, Antigua República Yugoslava de - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malasia - + Maldives Maldivas - + Mali Mali - + Malta Malta - + Marshall Islands Islas Marshall - + Martinique Martinica - + Mauritania Mauritania - + Mauritius Mauricio - + Mayotte Mayotte - + Mexico México - + Micronesia, Federated States Of Micronesia, Estados Federados de - + Moldova, Republic Of Moldavia, República de - + Monaco Mónaco - + Mongolia Mongolia - + Montserrat Montserrat - + Morocco Marruecos - + Mozambique Mozambique - + Myanmar Myanmar - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Holanda - + Netherlands Antilles Antillas Holandesas - + New Caledonia Nueva Caledonia - + New Zealand Nueva Zelanda - + Nicaragua Nicaragua - + Niger Níger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Isla Norfolk - + Northern Mariana Islands Islas Marianas del Norte - + Norway Noruega - + Oman Omán - + Pakistan Pakistán - + Palau Palaos - + Palestinian Territory, Occupied Palestina, Territorio Ocupado de - + Panama Panamá - + Papua New Guinea Papua Nueva Guinea - + Paraguay Paraguay - + Peru Perú - + Philippines Filipinas - + Pitcairn Pitcairn - + Poland Polonia - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Catar - + Reunion Reunión - + Romania Rumanía - + Russian Federation Federacíon Rusa - + Rwanda Ruanda - + Saint Helena Santa Helena - + Saint Kitts And Nevis San Cristóbal y Nieves - + Saint Lucia Santa Lucía - + Saint Pierre And Miquelon San Pedro y Miquelón - + Saint Vincent And The Grenadines San Vicente y las Granadinas - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe Santo Tomé y Príncipe - + Saudi Arabia Arabia Saudí - + Senegal Senegal - + Serbia And Montenegro Serbia y Montenegro - + Seychelles Seychelles - + Sierra Leone Sierra Leona - + Singapore Singapur - + Slovakia Eslovaquia - + Slovenia Eslovenia - + Solomon Islands Islas Salomón - + Somalia Somalia - + South Africa Sudáfrica - + South Georgia And The South Sandwich Islands Islas Georgias del Sur y Sandwich del Sur - + Spain España - + Sri Lanka Sri Lanka - + Sudan Sudán - + Suriname Surinam - + Svalbard And Jan Mayen Svalbard y Jan Mayen - + Swaziland Suazilandia - + Sweden Suecia - + Switzerland Suiza - + Syrian Arab Republic Siria, República Árabe - + Taiwan, Province Of China Taiwan, Provincia de China - + Tajikistan Tayikistán - + Tanzania, United Republic Of Tanzania, República Unida de - + Thailand Tailandia - + Timor-Leste Timor Oriental - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinidad y Tobago - + Tunisia Túnez - + Turkey Turquía - + Turkmenistan Turkmenistán - + Turks And Caicos Islands Islas Turcas y Caicos - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ucrania - + United Arab Emirates Emiratos Árabes Unidos - + United Kingdom Reino Unido - + United States Estados Unidos - + United States Minor Outlying Islands Islas Ultramarinas de Estados Unidos - + Uruguay Uruguay - + Uzbekistan Uzbekistán - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Vietnam - + Virgin Islands, British Islas Vírgenes Británicas - + Virgin Islands, U.S. Islas Vírgenes de los Estados Unidos - + Wallis And Futuna Wallis y Futuna - + Western Sahara Sáhara Occidental - + Yemen Yemen - + Zambia Zambia - + Zimbabwe Zimbabue - + Are you sure you want to report the game name: "%1" as inappropriate? ¿Está seguro de que desea informar de que el nombre "%1" es inapropiado? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + - - + + T T @@ -4971,88 +4982,104 @@ p, li { white-space: pre-wrap; } - - + + Time Tiempo - - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + + sec (action) seg (acción) - - - + + + sec (hand delay) seg (por mano) - - + + Connected players - Max. %1 Jugadores conectados - máx. %1 - - + + running games: %1 partidas en marcha: %1 - - + + open games: %1 partidas abiertas: %1 - + Invite %1 Invitar a %1 - + Ignore %1 Ignorar a %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 ha sido invitado a %2 por %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 ha rechazado la invitación a %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 no se puede unir a %2 porque está ocupado.</span> - - + + The game will start in<br><b>%1</b> seconds. La partida comenzará en<br><b>%1</b> segundos. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Ha entrado en una partida sólo para invitados. Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en la lista de jugadores. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Ha sido invitado a la partida <b>%1</b> por <b>%2</b>.<br>¿Quiere unirse a esa partida? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Ya no recibirá más mensajes de charla o invitaciones de este usuario.<br>¿Seguro que desea añadir al usuario <b>%1</b>a la lista de ignorados? @@ -5061,50 +5088,52 @@ Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en jugadores en charla: %1 - - + + connected players: %1 jugadores conectados: %1 - + search for player ... buscar jugador ... - + Chat is only available to registered players. La charla sólo está disponible para usuarios registrados. - + Invite player ... Invitar jugador ... - + Ignore player ... Ignorar jugador ... - + %1 is playing in "%2". %1 está jugando en "%2". - + %1 is not playing at the moment. %1 no está jugando en este momento. - - + + PokerTH - Info Message PokerTH - Mensaje de información - - + + + + PokerTH - Question PokerTH - Pregunta @@ -6511,43 +6540,45 @@ p, li { white-space: pre-wrap; } - + - + Server Port: Puerto del servidor: - + - + Use IPv6 Usar IPv6 + + Server Password: - Contraseña del servidor: + Contraseña del servidor: Network Game Default Settings Opciones predeterminadas de la partida en red - - + + Computer Engine Jugador virtual - - + + Opponent 5: Oponente 5: - - + + Opponent 3: Oponente 3: @@ -6564,31 +6595,31 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Jugador humano:<br /><span style=" font-size:11pt; font-style:italic;">(Este apodo se utilizará también para acceder a las partidas en Internet)</span></p></body></html> - - + + Opponent 2: Oponente 2: - - + + Opponent 6: Oponente 6: - - + + Opponent 1: Oponente 1: - - + + Opponent 4: Oponente 4: - + Human Player: Jugador humano: @@ -6601,15 +6632,15 @@ p, li { white-space: pre-wrap; } Día(s) - - + + Log File Directory: Directorio del archivo de registro: - + Log Messages Mensajes de registro @@ -6700,8 +6731,8 @@ p, li { white-space: pre-wrap; } Versión del motor para los ordenadores oponentes: - - + + Enable/Disable Logging Activar/Desactivar registro @@ -6710,8 +6741,8 @@ p, li { white-space: pre-wrap; } Guardar los archivos de registro durante - - + + Write log after every: Escribir el registro cada: @@ -6733,25 +6764,25 @@ p, li { white-space: pre-wrap; } - + - + Use SCTP Utilizar SCTP - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">¿Qué es esto?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">¿Qué es esto?</a> @@ -6794,20 +6825,20 @@ p, li { white-space: pre-wrap; } Tiempo de acción del jugador (seg): - - + + action (high frequent disc access) acción (acceso a disco muy frecuente) - - + + hand (medium disc access) mano (acceso a disco medio) - - + + game (low disc access) partida (acceso a disco bajo) @@ -6844,14 +6875,14 @@ p, li { white-space: pre-wrap; } Opciones del servidor de Internet (dedicado) - - + + Server Address: Dirección del servidor: - - + + Use password for private game: Utilizar contraseña para partida privada: @@ -7045,7 +7076,7 @@ p, li { white-space: pre-wrap; } Activar/Desactivar la sala de charla (servidor IRC) - + Player Nicks/Avatars Apodos/Avatares de los jugadores @@ -7107,7 +7138,7 @@ p, li { white-space: pre-wrap; } s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -7118,7 +7149,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: Las </span><span style=" font-weight:600; font-style:italic;">opciones de la partida</span><span style=" font-style:italic;"> predeterminadas, como "Número máximo de jugadores", "Dinero inicial" y "Ciega pequeña" se leerán </span><span style=" font-weight:600; font-style:italic;">de las opciones de partida en red.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -7137,7 +7168,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings Configuración original @@ -7219,8 +7250,8 @@ p, li { white-space: pre-wrap; } Configuración manual del servidor - - + + Game Partida @@ -7237,83 +7268,83 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Nota: Se utilizarán </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">opciones de partida</span><span style=" font-size:12pt; font-style:italic;"> predeterminadas como &quot;Número máximo de jugadores&quot;, &quot;Dinero inicial&quot; y &quot;Ciega pequeña&quot; </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">de la configuración de partidas en red.</span></p></body></html> - - + + Default game name: Nombre de partida: - - + + Default game type: Tipo de partida: - - + + Standard Normal - - + + Registered players only Sólo registrados - - + + Invited players only Sólo invitados - - + + Ranking game Clasificatoria - - + + Show lobby chat Mostrar charla principal - - + + Automatically leave the table after the game finished Abandonar la mesa automáticamente al terminar la partida - - + + Ignored Players Jugadores ignorados - - + + Player Jugador - - + + Remove Player Eliminar jugador - + Note: Best avatar quality with image ratio like width=50, height=50. Nota: la mejor calidad de avatar se obtiene con una imagen con ancho=alto=50. - + OK Aceptar - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7326,14 +7357,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-style:italic;">(Este apodo también se utilizará para el acceso a partidas en Internet)</span></p></body></html> - - + + Store log files for: Guardar registros durante: - - + + Day(s) Día(s) @@ -7358,14 +7389,14 @@ p, li { white-space: pre-wrap; } Exportar como HTML - - + + Reset all settings to default ... Reiniciar todos los parámetros... - - + + Note: You can not reset all settings to default during a running game! Nota: no es posible reiniciar los parámetros durante una partida. @@ -7432,8 +7463,8 @@ p, li { white-space: pre-wrap; } Contraseña: - - + + Avatar Server: Servidor de avatares: @@ -7520,24 +7551,24 @@ p, li { white-space: pre-wrap; } Nota: la mejor calidad se obtiene con una imagen de ancho=48 y alto=76. - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Nota: las preferencias predeterminadas, como el número máximo de jugadores, el dinero inicial y la ciega pequeña se obtendrá de la configuración de partidas en red. - + (This nick will also be used for the online game login) (Este apodo también se utilizará en las partidas de Internet) - - + + Opponent 7: Oponente 7: - - + + Opponent 8: Oponente 8: @@ -7546,8 +7577,8 @@ p, li { white-space: pre-wrap; } Oponente 4: {10:?} - - + + Opponent 9: Oponente 9: @@ -7555,11 +7586,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Error en las preferencias @@ -7576,7 +7607,7 @@ Please select an valid directory! Introduzca un directorio válido. - + Select your flipside picture Seleccione la imagen del respaldo @@ -7585,24 +7616,24 @@ Introduzca un directorio válido. Imágenes (*.png) - + Open Directory Abrir directorio - + Images (*.png *.jpg *.gif) Imágenes (*.png *.jpg *.gif) - - + + Blinds Error Error en las ciegas - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7626,12 +7657,12 @@ El valor de la primera ciega pequeña será el máximo permitido. Francés - + German Alemán - + Hungarian Húngaro @@ -7640,59 +7671,59 @@ El valor de la primera ciega pequeña será el máximo permitido. Portugués - + Russian Ruso - + Turkish Turco - + Language Changed El idioma ha cambiado - + You have changed application language to %1. Please restart PokerTH to load new language! Ha cambiado el idioma de la aplicación a %1. Reinicie PokerTH para cargar el nuevo idioma. - + Italian Italiano - + Slovak Eslovaco - + The entered flipside picture doesn't exist. Please enter an valid picture! La imagen del respaldo introducida no existe. Seleccione una imagen válida. - - + + The log file directory doesn't exist. Please select an valid directory! El directorio del archivo de registro no existe. Seleccione un directorio válido. - + Norwegian Noruego - + Spanish Español @@ -7702,7 +7733,7 @@ Seleccione un directorio válido. Búlgaro - + Polish Polaco @@ -7712,17 +7743,17 @@ Seleccione un directorio válido. Chino - + Greek Griego - + Swedish Sueco - + The entered server list address is not a valid URL. Please enter a valid server list address! La dirección de la lista de servidores introducida no es una URL válida. @@ -7754,170 +7785,180 @@ Introduzca una dirección válida. Danés - + + Galician + + + + Japanese Japonés - + Lithuania Lituano - + Portuguese-Brazilian Portugués Brasil - + Portuguese-Portuguese Portugués Portugal - + Scottish Gaelic - + Tamil Tamil - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! Los nombres de los oponentes no son únicos. Introduzca un nombre distinto para cada oponente. - + Settings Information Información de configuración - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Ha cambiado el directorio del archivo de registro. Reinicie PokerTH para comenzar a utilizar el nuevo directorio. - - + + Maintainer Name Nombre del mantenedor - - + + Maintainer EMail eMail del mantenedor - - + + Create Date Fecha de creación - + Windows Behaviour Comportamiento de las ventanas - + scaleable escalable - + fixed fijo - + Minimum Size Tamaño mínimo - + Maximum Size Tamaño máximo - + Fixed Size Tamaño fijo - + State Estado - + Please select your game table style Seleccione su estilo de mesa - + PokerTH game table styles (*.xml) Estilos de mesa de PokerTH (*.xml) - + Game Table Style Error Error en el estilo de mesa - + Selected game table style file is already in the list. Please select another one to add! El estilo de mesa seleccionado ya está en la lista. Seleccione otro para añadirlo. - + Game Table Style File Error Error en el archivo del estilo de mesa - + Could not load game table style file correctly. Style will not be placed into list! No se puede cargar el archivo de estilo de mesa. El estilo no aparecerá en la lista. - + Please select your card deck style Seleccione su estilo de baraja - + PokerTH card deck styles (*.xml) Estilos de baraja de PokerTH (*.xml) - + Card Deck Style Error Error en el estilo de baraja - + Selected card deck style file is already in the list. Please select another one to add! El estilo de baraja seleccionado ya está en la lista. Seleccione otro para añadirlo. - + Card Deck Style File Error Error en el archivo del estilo de baraja - + Could not load card deck style file correctly. Style will not be placed into list! No se puede cargar el archivo de estilo de baraja. @@ -7956,12 +7997,12 @@ El estilo no aparecerá en la lista. Registro de texto plano de PokerTH (*.txt) - + PokerTH - Settings PokerTH - Configuración - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Atención: esto eliminará todos sus cambios en la configuración y cerrará PokerTH. @@ -8506,35 +8547,66 @@ Please reenter the password and try again. Vuelva a introducir la contraseña e inténtelo de nuevo. - + The avatar report was accepted by the server. Thank you. El informe sobre el avatar ha sido aceptado por el servidor. Gracias. - + This avatar was already reported by another player. Otro jugador ya ha informado sobre este avatar. - + An error occurred while reporting the avatar. Ha ocurrido un error al informar sobre el avatar. - + The game name report was accepted by the server. Thank you. El informe sobre el nombre ha sido aceptado. Gracias. - + This game name was already reported by another player. Otro jugador ya ha informado sobre el nombre de esta partida. - + An error occurred while reporting the game name. Ha ocurrido un error al informar sobre el nombre. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + The password is too long. Please choose another one. @@ -8697,7 +8769,7 @@ Por favor, elija un nombre diferente. - + Server Message Mensaje del servidor diff --git a/ts/pokerth_fi.ts b/ts/pokerth_fi.ts index eb1e1c85..992cace6 100644 --- a/ts/pokerth_fi.ts +++ b/ts/pokerth_fi.ts @@ -1997,46 +1997,46 @@ p, li { white-space: pre-wrap; } %1'n peli - + Joining a private Game Liitytään yksityiseen peliin - + You are about to join a private game. Please enter the password! Olet liittymässä yksityiseen peliin. Anna salasana! - + open avoin - - - - + + + + Game Info Peli-info - - + + Game Peli - - + + Players Pelaajat - - + + State Tila @@ -2046,15 +2046,15 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Available Players Vapaat pelaajat @@ -2074,47 +2074,47 @@ p, li { white-space: pre-wrap; } Pelaajan tiedot ... - + Report inappropriate game name - - - + + + Standard Tavallinen - - - + + + Registered players only Vain rekistöröityneet pelaajat - - - + + + Invited players only Vain kutsutut pelaajat - - - + + + Ranking game Sijoituspeli - + Connected players - max. %1 Yhdistettyjä pelaajia - maks. %1 - - + + T T @@ -2130,99 +2130,115 @@ p, li { white-space: pre-wrap; } - - + + Time - + Show player stats Näytä pelaajatilastot - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players - Max. %1 Yhdistettyjä pelaajia - Maks. %1 - + running käynnissä - - + + running games: %1 pelejä käynnissä: %1 - - + + open games: %1 avoimia pelejä: %1 - + Invite %1 Kutsu %1 - + Ignore %1 Jätä %1 huomiotta - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 on kutsu peliin%2 pelaajan %3 toimesta.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 on hylännyt kutsun peliin %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 ei voi liittyä peliin %2, koska hän on kiireinen.</span> - - + + The game will start in<br><b>%1</b> seconds. Peli alkaa <br><b>%1</b> sekunnin kuluttua. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Olet liittynyt vain kutsutuille tarkoitettuun peliin. Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaiden pelaajien listasta. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Sinut on kutsuttu peliin<b>%1</b> pelaajan <b>%2</b> toimesta.<br>Haluatko liittyä tähän peliin? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Et saa enää chat-viestejä tai pelikutsuja tältä käyttäjältä.<br>Haluatko varmasti jättää pelaajan<b>%1</b> huomiotta? @@ -2231,1310 +2247,1323 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid Pelaajia chatissa: %1 - - + + connected players: %1 yhdistettyjä pelaajia: %1 - - + + Connected players Yhdistetyt pelaajat - + hands kädet - + minutes minuutit - + double blinds tupla sokkopanokset - + manual blinds order manuaalinen sokkopanosjärjestys - + Server Error Palvelinvirhe - + You should not kick yourself from this game! Sinun ei tule potkaista itseäsi tästä pelistä! - + search for player ... hae pelaajaa ... - + Chat is only available to registered players. Chat on vain rekistöröityneille pelaajille. - + Invite player ... Kutsu pelaaja ... - + Ignore player ... Jätä pelaaja huomiotta ... - + %1 is playing in "%2". %1 on pelissä "%2". - + %1 is not playing at the moment. %1 ei pelaa tällä hetkellä. - - + + PokerTH - Info Message PokerTH - Infoviesti - - + + + + PokerTH - Question PokerTH - Kysymys - + Afghanistan Afganistan - + ALand Islands Ahvenanmaa - + Albania Albania - + Algeria Algeria - + American Samoa Amerikan Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Etelämanner - + Antigua And Barbuda Antigua ja Barbuda - + Argentina Argentiina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Itävalta - + Azerbaijan Azerbaidžan - + Bahamas Bahama - + Bahrain Bahrain - + Bangladesh Bangladesh - + Barbados Barbados - + Belarus Valko-Venäjä - + Belgium Belgia - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia ja Hertsegovina - + Botswana Botswana - + Bouvet Island Bouvet'nsaari - + Brazil Brasilia - + British Indian Ocean Territory Brittiläinen Intian valtameren alue - + Brunei Darussalam Brunei - + Bulgaria Bulgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodža - + Cameroon Kamerun - + Canada Kanada - + Cape Verde Kap Verde - + Cayman Islands Caymansaaret - + Central African Republic Keski-Afrikan tasavalta - + Chad - + Chile - + China Kiina - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba Kuuba - + Cyprus - + Czech Republic - + Denmark Tanska - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt Egypti - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia Viro - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland Suomi - + France Ranska - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany Saksa - + Ghana - + Gibraltar - + Greece Kreikka - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary Unkari - + Iceland Islanti - + India Intia - + Indonesia - + Iran, Islamic Republic Of - + Iraq Irak - + Ireland Irlanti - + Isle Of Man - + Israel Israeli - + Italy Italia - + Jamaica Jamaika - + Japan Japani - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania liettua - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico Meksiko - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway Norja - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru Peru - + Philippines Filippiinit - + Pitcairn - + Poland Puola - + Portugal Portugali - + Puerto Rico - + Qatar - + Reunion - + Romania Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia Slovakia - + Slovenia Slovenia - + Solomon Islands - + Somalia Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain Espanja - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden Ruotsi - + Switzerland Sveitsi - + Syrian Arab Republic - + Taiwan, Province Of China Taiwan, Kiinan maakunta - + Tajikistan - + Tanzania, United Republic Of - + Thailand Thaimaa - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey Turkki - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States Yhdysvallat - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -5137,46 +5166,48 @@ p, li { white-space: pre-wrap; } Verkkopelin asetukset + + Server Password: - Palvelimen salasana: + Palvelimen salasana: - + - + Server Port: Palvelinportti: - + - + Use SCTP Käytä SCTP - + - + Use IPv6 Käytä IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://fi.wikipedia.org/wiki/Ipv6">Mikä tämä on?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Mikä tämä on?</a> @@ -5186,7 +5217,7 @@ p, li { white-space: pre-wrap; } Internet-pelin asetukset - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5201,14 +5232,14 @@ p, li { white-space: pre-wrap; } Internet-peliasetukset (pysyvä palvelin) - - + + Server Address: Palvelinosoite: - - + + Use password for private game: Käytä salasanaa yksityiseen peliin: @@ -5237,49 +5268,49 @@ p, li { white-space: pre-wrap; } Pelaajien nimimerkit - - + + Computer Engine Tietokonealusta - - + + Opponent 6: Vastustaja 6: - - + + Opponent 5: Vastustaja 5: - - + + Opponent 4: Vastustaja 4: - - + + Opponent 3: Vastustaja 3: - - + + Opponent 2: Vastustaja 2: - - + + Opponent 1: Vastustaja 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5290,13 +5321,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Huom: Paras laatu kuvilla, joiden suhteet vastaavat </span><span style=" font-weight:600; font-style:italic;">leveys=50, korkeus=50.</span></p></body></html> - + Human Player: Ihmispelaaja: - - + + Enable/Disable Logging Salli/estä kirjautuminen @@ -5305,14 +5336,14 @@ p, li { white-space: pre-wrap; } Tallenna logit kohteeseen - - + + Log File Directory: Lokikansio: - - + + Write log after every: Kirjoita loki jokaisen: @@ -5322,42 +5353,42 @@ p, li { white-space: pre-wrap; } - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + action (high frequent disc access) toiminnon jälkeen (korkea levynkäyttö) - - + + hand (medium disc access) Käden jälkeen (keskiverto levynkäyttö) - - + + game (low disc access) pelin jälkeen (alhainen levynkäyttö) - + Log Messages Lokiviestit - + Player Nicks/Avatars Pelaajien nimimerkit/avatarit @@ -5369,7 +5400,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings @@ -5457,89 +5488,89 @@ p, li { white-space: pre-wrap; } Manuaalinen palvelinmuotoilu - - + + Game Peli - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Oletus pelinimi: - - + + Default game type: Oletuspelityyppi: - - + + Standard Tavallinen - - + + Registered players only Vain rekistöröityneet pelaajat - - + + Invited players only Vain kutsutut pelaajat - - + + Ranking game Sijoituspeli - - + + Show lobby chat Näytä aulan chat - - + + Automatically leave the table after the game finished Poistu pöydästä automaattisesti pelin päätyttyä - - + + Ignored Players Jätä pelaaja huomiotta - - + + Player Pelaaja - - + + Remove Player Poista pelaaja - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5552,14 +5583,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ihmispelaaja:<br /><span style=" font-style:italic;">(Tätä nimimerkkiä käytetään myös online-peliin kirjautumisessa)</span></p></body></html> - - + + Store log files for: Säilö lokitiedostot sijaintiin: - - + + Day(s) Päivä(ä) @@ -5572,14 +5603,14 @@ p, li { white-space: pre-wrap; } Vie HTML-tiedostoon - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5626,8 +5657,8 @@ p, li { white-space: pre-wrap; } Salasana: - - + + Avatar Server: Avataripalvelin: @@ -5709,14 +5740,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Hanki uusia PokerTH-korttipakkatyylejä ...</span></a></p></body></html> - - + + Opponent 7: Vastustaja 7: - - + + Opponent 8: Vastustaja 8: @@ -5725,8 +5756,8 @@ p, li { white-space: pre-wrap; } Vastustaja 1: {10:?} - - + + Opponent 9: Vastustaja 9: @@ -5749,22 +5780,22 @@ p, li { white-space: pre-wrap; } ranska - + German saksa - + Hungarian unkari - + Italian italia - + Norwegian norja @@ -5773,90 +5804,90 @@ p, li { white-space: pre-wrap; } portugali - + Russian venäjä - + Slovak slovakia - + Spanish espanja - + Tamil tamil - + Turkish turkki - - - - - + + + + + Settings Error Asetusvirhe - + The entered flipside picture doesn't exist. Please enter an valid picture! Valittua kääntöpuolikuvaa ei ole olemassa. Valitse olemassa oleva kuva! - - + + The log file directory doesn't exist. Please select an valid directory! Lokikansiota ei ole olemassa. Valitse olemassa oleva kansio! - + Language Changed Kieli vaihdettu - + You have changed application language to %1. Please restart PokerTH to load new language! Olet vaihtanut ohjelman kieleen %1. Käynnistä PokerTH ladataksesi uusi kieli! - + Select your flipside picture Valitse kääntöpuolikuvasi - + Images (*.png *.jpg *.gif) Kuvat (*.png *.jpg *.gif) - + Open Directory Avaa kansio - - + + Blinds Error Sokkopanosvirhe - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5870,7 +5901,7 @@ Tämä "ensimmäinen pieni sokkopanosarvo" asetetaan suurimmaksi salli bulgaria - + Polish puola @@ -5895,32 +5926,32 @@ Tämä "ensimmäinen pieni sokkopanosarvo" asetetaan suurimmaksi salli tšekki - + Greek kreikka - + Lithuania liettua - + Portuguese-Brazilian brasilianportugali - + Portuguese-Portuguese portugalinportugali - + Swedish ruotsi - + The entered server list address is not a valid URL. Please enter a valid server list address! Valittu palvelinlistaosoite ei ole kelvollinen URL. @@ -5937,148 +5968,158 @@ Valitse kelvollinen palvelinlistaosoite! tanska - + + Galician + + + + Japanese japani - + Scottish Gaelic - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Ylläpitäjän nimi - - + + Maintainer EMail Ylläpitäjän Email - - + + Create Date Luontipäivämäärä - + Windows Behaviour Ikkunan käyttäyminen - + scaleable Skaalattava - + fixed määritelty - + Minimum Size Minimi koko - + Maximum Size Maksimi koko - + Fixed Size Määritelty koko - + State Tila - + Please select your game table style Valitse pelipöytätyylisi - + PokerTH game table styles (*.xml) PokerTH-pelipöytätyyli (*.xml) - + Game Table Style Error Pelipöytätyylin virhe - + Selected game table style file is already in the list. Please select another one to add! Valittu pelipöytätyyli on jo listassa. Valitse toinen lisätäksesi se! - + Game Table Style File Error Pelipöytätyylin virhe - + Could not load game table style file correctly. Style will not be placed into list! Pelipöytätyylin lataaminen ei onnistunut ongelmitta. Tyyliä ei aseteta listaan! - + Please select your card deck style Valitse korttipakkatyylisi - + PokerTH card deck styles (*.xml) PokerTH-korttipakkatyylit /*.xml) - + Card Deck Style Error Korttipakkatyylin virhe - + Selected card deck style file is already in the list. Please select another one to add! Valittu korttipakkatyyli on jo listassa. Valitse toinen lisätäksesi se! - + Card Deck Style File Error Korttipakkatyylin virhe - + Could not load card deck style file correctly. Style will not be placed into list! Korttipakkatyylin lataaminen ei onnistunut ongelmitta. @@ -6117,12 +6158,12 @@ Tyyliä ei aseteta listaan! PokerTH SQL loki (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6650,35 +6691,66 @@ Please reenter the password and try again. Kirjoita salasana uudestaan ja yritä uudestaan. - + The avatar report was accepted by the server. Thank you. Palvelin hyväksyi ilmoituksen avatarista. Kiitoksia. - + This avatar was already reported by another player. Toinen pelaaja oli jo ilmoittanut tästä avatarista. - + An error occurred while reporting the avatar. Virhe tapahtui avatarin ilmoittamisessa. - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + The password is too long. Please choose another one. @@ -6841,7 +6913,7 @@ Valitse toinen nimi. - + Server Message Palvelinviesti diff --git a/ts/pokerth_fr.ts b/ts/pokerth_fr.ts index 9adabcc9..a2b2b0ae 100644 --- a/ts/pokerth_fr.ts +++ b/ts/pokerth_fr.ts @@ -3496,46 +3496,46 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info Infos sur la partie - + Server Error Erreur du serveur - + You should not kick yourself from this game! Vous ne pouvez pas vous expulser vous-même de la partie ! - + Joining a private Game Rejoindre une partie privée - - + + Game Partie - - + + Players Joueurs - - + + State Statut @@ -3544,43 +3544,43 @@ p, li { white-space: pre-wrap; } Privé - + You are about to join a private game. Please enter the password! Vous êtes sur le point de rejoindre une partie privée. Veuillez entrer le mot de passe. - + running en cours - + open ouvert - - + + Connected players Joueurs connectés - + hands mains - + minutes minutes - + double blinds blinds doublées - + manual blinds order ordre manuel des blinds @@ -3595,15 +3595,15 @@ p, li { white-space: pre-wrap; } - - + + P Privée - - + + Available Players Joueurs connectés @@ -3624,45 +3624,45 @@ p, li { white-space: pre-wrap; } - + Show player stats Montrer les statistiques du joueur - + Report inappropriate game name Signaler un nom de partie inapproprié - - - + + + Standard Standard - - - + + + Registered players only Que les joueurs enregistrés - - - + + + Invited players only Que les joueurs invités - - - + + + Ranking game Classement - + Connected players - max. %1 Joueurs dans la partie - Max : %1 @@ -3675,1231 +3675,1242 @@ p, li { white-space: pre-wrap; } sec (durée de la main) - + Afghanistan Afghanistan - + ALand Islands Iles d'Aland - + Albania Albanie - + Algeria Algérie - + American Samoa Samoa Américaines - + Andorra Andorre - + Angola Angola - + Anguilla Anguilla - + Antarctica Antartique - + Antigua And Barbuda Antigua et Barduda - + Argentina Argentine - + Armenia Arménie - + Aruba Aruba - + Australia Australie - + Austria Autriche - + Azerbaijan Azerbaïdjan - + Bahamas Bahamas - + Bahrain Bahreïn - + Bangladesh Bangladesh - + Barbados Barbade - + Belarus Biélorussie - + Belgium Belgique - + Belize Belize - + Benin Bénin - + Bermuda Bermudes - + Bhutan Bhoutan - + Bolivia Bolivie - + Bosnia And Herzegovina Bosnie-Herzégovine - + Botswana Botswana - + Bouvet Island Ile Bouvet - + Brazil Brésil - + British Indian Ocean Territory Territoire britannique de l'océan indien - + Brunei Darussalam Brunei Darussalam - + Bulgaria Bulgarie - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Cambodge - + Cameroon Cameroun - + Canada Canada - + Cape Verde Cap Vert - + Cayman Islands Iles Caïmans - + Central African Republic République Centrale d'Afrique - + Chad Tchad - + Chile Chili - + China Chine - + Christmas Island Ile Christmas - + Cocos (Keeling) Islands Iles Cocos - + Colombia Colombie - + Comoros Comores - + Congo Congo - + Congo, The Democratic Republic Of The République Démocratique du Congo - + Cook Islands Iles Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Côte d'Ivoire - + Croatia Croatie - + Cuba Cuba - + Cyprus Chypre - + Czech Republic République Tchèque - + Denmark Danemark - + Djibouti Djibouti - + Dominica Dominique - + Dominican Republic République Dominicaine - + Ecuador Equateur - + Egypt Egypte - + El Salvador El Salvador - + Equatorial Guinea Guinée Equatoriale - + Eritrea Erythrée - + Estonia Estonie - + Ethiopia Ethiopie - + Falkland Islands (Malvinas) Iles Malouines - + Faroe Islands Iles Féroé - + Fiji Fidji - + Finland Finlande - + France France - + French Guiana Guinée Française - + French Polynesia Polynésie Française - + French Southern Territories Territoire Français du Sud - + Gabon Gabon - + Gambia Gambie - + Georgia Géorgie - + Germany Allemagne - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grèce - + Greenland Groenland - + Grenada Grenade - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernesey - + Guinea Guinée - + Guinea-Bissau Guinée-Bissau - + Guyana Guyane - + Haiti Haïti - + Heard Island And Mcdonald Islands Iles Heard et MacDonald - + Holy See (Vatican City State) Saint-Siège (Etat du Vatican) - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Hongrie - + Iceland Islande - + India Inde - + Indonesia Indonésie - + Iran, Islamic Republic Of République Islamique d'Iran - + Iraq Irak - + Ireland Irelande - + Isle Of Man Ile de Man - + Israel Israël - + Italy Italie - + Jamaica Jamaïque - + Japan Japon - + Jersey Jersey - + Jordan Jordanie - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of République Démocratique Populaire de Corée - + Korea, Republic Of République de Corée - + Kuwait Koweït - + Kyrgyzstan Kirghizistan - + Lao People'S Democratic Republic République Démocratique Populaire du Laos - + Latvia Lettonie - + Lebanon Liban - + Lesotho Lesotho - + Liberia Libéria - + Libyan Arab Jamahiriya Jamahiriya Arabe Libyenne - + Liechtenstein Liechtenstein - + Lithuania Lituanien - + Luxembourg Luxembourg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Ex-République Yougoslave de Macédoine - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malaysie - + Maldives Maldives - + Mali Mali - + Malta Malte - + Marshall Islands Iles Marshall - + Martinique Martinique - + Mauritania Mauritanie - + Mauritius Ile Maurice - + Mayotte Mayotte - + Mexico Mexique - + Micronesia, Federated States Of Etats Fédérés de Micronésie - + Moldova, Republic Of République de Moldavie - + Monaco Monaco - + Mongolia Mongolie - + Montserrat Montserrat - + Morocco Maroc - + Mozambique Mozambique - + Myanmar Birmanie - + Namibia Namibie - + Nauru Nauru - + Nepal Népal - + Netherlands Pays Bas - + Netherlands Antilles Antilles néerlandaises - + New Caledonia Nouvelle Calédonie - + New Zealand Nouvelle Zélande - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Ile Norfolk - + Northern Mariana Islands Iles Mariannes du Nord - + Norway Norvège - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Territoire Palestinien Occupé - + Panama Panama - + Papua New Guinea Papouasie-Nouvelle-Guinée - + Paraguay Paraguay - + Peru Pérou - + Philippines Philippines - + Pitcairn Iles Pitcairn - + Poland Pologne - + Portugal Portugal - + Puerto Rico Porto Rico - + Qatar Qatar - + Reunion Réunion - + Romania Roumanie - + Russian Federation Fédération de Russie - + Rwanda Rwanda - + Saint Helena Saint-Hélène - + Saint Kitts And Nevis Saint-Christophe-et-Niévès - + Saint Lucia Sainte-Lucie - + Saint Pierre And Miquelon Saint-Pierre-et-Miquelon - + Saint Vincent And The Grenadines Saint-Vincent-et-les-Grenadines - + Samoa Samoa - + San Marino Saint-Marin - + Sao Tome And Principe Sao Tome et Principe - + Saudi Arabia Arabie Saoudite - + Senegal Sénégal - + Serbia And Montenegro Serbie-et-Monténégro - + Seychelles Seychelles - + Sierra Leone Sierra Leone - + Singapore Singapour - + Slovakia Slovaquie - + Slovenia Slovénie - + Solomon Islands Iles Solomon - + Somalia Somalie - + South Africa Afrique du Sud - + South Georgia And The South Sandwich Islands Iles de la Géorgie du Sud et Sandwich du Sud - + Spain Espagne - + Sri Lanka Sri Lanka - + Sudan Soudan - + Suriname Suriname - + Svalbard And Jan Mayen Svalbard et Jan Mayen - + Swaziland Swaziland - + Sweden Suède - + Switzerland Suisse - + Syrian Arab Republic République Arabe Syrienne - + Taiwan, Province Of China Taïwan, Province de Chine - + Tajikistan Tadjikistan - + Tanzania, United Republic Of République Unie de Tanzanie - + Thailand Thaïlande - + Timor-Leste Timor-Leste - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinité et Tobago - + Tunisia Tunisie - + Turkey Turquie - + Turkmenistan Turkménistan - + Turks And Caicos Islands Iles Turques-et-Caïques - + Tuvalu Tuvalu - + Uganda Ouganda - + Ukraine Ukraine - + United Arab Emirates Emirats Arabes Unis - + United Kingdom Royaume Uni - + United States Etats-Unis - + United States Minor Outlying Islands Iles Mineures Eloignées des Etats-Unis - + Uruguay Uruguay - + Uzbekistan Ouzbékistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Viêt Nam - + Virgin Islands, British Iles Vierges Britanniques - + Virgin Islands, U.S. Iles Vierges des Etats-Unis - + Wallis And Futuna Wallis et Futuna - + Western Sahara Sahara Occidental - + Yemen Yémen - + Zambia Zambie - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Etes-vous sûr de vouloir signaler le nom de partie : "%1" comme inapproprié ? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + - - + + T Type @@ -4915,71 +4926,87 @@ p, li { white-space: pre-wrap; } - - + + Time Durée - - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + + sec (action) sec (action) - - - + + + sec (hand delay) sec (durée de la main) - - + + Connected players - Max. %1 Joueurs dans la partie - Max : %1 - - + + running games: %1 Parties en cours : %1 - - + + open games: %1 Parties ouvertes : %1 - + Invite %1 Inviter %1 - + Ignore %1 Ignorer %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 a été invité dans la partie %2 par %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 a décliné l'invitation de %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 ne peut pas joindre la partie de %2 car il est occupé.</span> - - + + The game will start in<br><b>%1</b> seconds. La partie va démarrer dans <br><b>%1</b> seconde(s). @@ -4992,14 +5019,14 @@ p, li { white-space: pre-wrap; } %1 ne joue pas actuellement. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Vous êtes entré dans une partie où seuls les joueurs invités sont admis. Invitez d'autres joueurs en faisant un clic droit sur leurs pseudos dans la liste des Joueurs disponibles - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Vous avez été invité dans la partie <b>%1</b> par <b>%2</b>.<br>Voulez-vous joindre cette partie? @@ -5012,7 +5039,7 @@ Invitez d'autres joueurs en faisant un clic droit sur leurs pseudos dans la <span style='color:red;'>%1 ne peut pas joindre la partie de %2 car il est occupé.</span> - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Vous êtes sur le point de mettre le joueur <b>%1</b> dans la liste de joueurs ignorés. Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joueur, continuer ? @@ -5022,18 +5049,18 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue joueurs sur le tchat : %1 - - + + connected players: %1 Joueurs connectés : %1 - + search for player ... Rechercher un joueur ... - + Chat is only available to registered players. Le tchat n'est accessible qu'aux joueurs enregistrés. @@ -5042,7 +5069,7 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue Inviter le joueur %1 - + Invite player ... Inviter le joueur ... @@ -5051,23 +5078,23 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue Ignorer le joueur %1 - + Ignore player ... Ignorer le joueur ... - + %1 is playing in "%2". %1 joue actuellement dans la partie "%2" - + %1 is not playing at the moment. %1 ne joue pas actuellement - - + + PokerTH - Info Message PokerTH - Message d'information @@ -5076,8 +5103,10 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue <span style='color:blue;'>%1 a été invité dans la partie %2 par %3.</span> - - + + + + PokerTH - Question PokerTH - Question @@ -6472,43 +6501,45 @@ p, li { white-space: pre-wrap; } - + - + Server Port: Port du serveur : - + - + Use IPv6 Utiliser IPv6 + + Server Password: - Mot de passe serveur : + Mot de passe serveur : Network Game Default Settings Paramètres réseau par défaut - - + + Computer Engine Moteur IA - - + + Opponent 5: Adversaire 5 : - - + + Opponent 3: Adversaire 3 : @@ -6525,31 +6556,31 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(This nick will also be used for the online game login)</span></p></body></html> - - + + Opponent 2: Adversaire 2 : - - + + Opponent 6: Adversaire 6 : - - + + Opponent 1: Adversaire 1 : - - + + Opponent 4: Adversaire 4 : - + Human Player: Joueur humain : @@ -6562,15 +6593,15 @@ p, li { white-space: pre-wrap; } Jour(s) - - + + Log File Directory: Chemin des fichiers log : - + Log Messages Journalisation (log) @@ -6661,8 +6692,8 @@ p, li { white-space: pre-wrap; } Version du moteur pour les adversaires IA : - - + + Enable/Disable Logging Activer/Désactiver la journalisation @@ -6671,8 +6702,8 @@ p, li { white-space: pre-wrap; } Activer la journalisation pour - - + + Write log after every: Écrire dans le log après chaque : @@ -6694,25 +6725,25 @@ p, li { white-space: pre-wrap; } - + - + Use SCTP Utiliser SCTP - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://fr.wikipedia.org/wiki/Ipv6">Qu'est-ce que c'est ?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://fr.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Qu'est-ce que c'est ?</a> @@ -6755,20 +6786,20 @@ p, li { white-space: pre-wrap; } Temps alloué pour l'action du joueur (en secondes): - - + + action (high frequent disc access) Evènement (élevé - accès disque fréquent) - - + + hand (medium disc access) Main (moyenne - accès disque normal) - - + + game (low disc access) Partie (bas - accès disque réduit) @@ -6805,14 +6836,14 @@ p, li { white-space: pre-wrap; } Paramètres serveur Internet (serveur dédié) - - + + Server Address: Adresse serveur : - - + + Use password for private game: Utiliser un mot de passe pour la partie privée : @@ -7002,7 +7033,7 @@ p, li { white-space: pre-wrap; } Activer/Désactiver le chat (Serveur IRC) - + Player Nicks/Avatars Pseudos/Avatars joueur @@ -7064,7 +7095,7 @@ p, li { white-space: pre-wrap; } s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -7075,7 +7106,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : </span><span style=" font-weight:600; font-style:italic;">Les paramètres de partie solo</span><span style=" font-style:italic;"> comme "Nombre maximal de joueurs", "Bourse initiale" et "Petite Blind" seront utilisés </span>par défaut <span style=" font-weight:600; font-style:italic;">pour les paramètres de jeu réseau.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -7094,7 +7125,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings Paramètres par défaut @@ -7176,8 +7207,8 @@ p, li { white-space: pre-wrap; } Configuration manuelle du serveur - - + + Game Partie @@ -7193,84 +7224,84 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : </span><span style=" font-weight:600; font-style:italic;">Les paramètres de partie solo</span><span style=" font-style:italic;"> comme "Nombre maximal de joueurs", "Bourse initiale" et "Petite Blind" seront utilisés </span>par défaut <span style=" font-weight:600; font-style:italic;">pour les paramètres de jeu réseau.</span></p></body></html> - - + + Default game name: Nom de la partie par défaut : - - + + Default game type: Type de jeu par défaut : - - + + Standard Standard - - + + Registered players only Que les joueurs enregistrés - - + + Invited players only Que les joueurs invités - - + + Ranking game Classement - - + + Show lobby chat Afficher l'onglet de tchat (en bas à gauche) Montrer le tchat - - + + Automatically leave the table after the game finished Quitter automatiquement la table à la fin de la partie - - + + Ignored Players Joueurs ignorés - - + + Player Joueur - - + + Remove Player Enlever ce joueur - + Note: Best avatar quality with image ratio like width=50, height=50. Note : Pour une meilleure qualité, utilisez une image avec largeur=50, hauteur=50. - + OK OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7283,14 +7314,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Mon pseudo :<br /><span style=" font-style:italic;">(Ce pseudo sera également utilisé pour le "nom d'utilisateur" des parties internet)</span></p></body></html> - - + + Store log files for: Garder les logs pendant : - - + + Day(s) Jour(s) @@ -7315,14 +7346,14 @@ p, li { white-space: pre-wrap; } Exporter en HTML - - + + Reset all settings to default ... Réinitialiser les paramètres à leurs valeurs d'origine - - + + Note: You can not reset all settings to default during a running game! Note : Vous ne pouvez pas réinitialiser les paramètres pendant une partie en cours ! @@ -7389,8 +7420,8 @@ p, li { white-space: pre-wrap; } Mot de passe : - - + + Avatar Server: Serveur d'avatars : @@ -7469,24 +7500,24 @@ p, li { white-space: pre-wrap; } Note : Pour une meilleure qualité, utilisez une image avec largeur=48, hauteur=76. - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Les paramètres de partie solo comme "Nombre maximal de joueurs", "Bourse initiale" et "Petite Blind" seront utilisés par défaut pour les paramètres de jeu réseau. - + (This nick will also be used for the online game login) (ce pseudo sera aussi utilisé pour vos jeux en ligne PokerTH) - - + + Opponent 7: Adversaire 7 : - - + + Opponent 8: Adversaire 8 : @@ -7495,8 +7526,8 @@ p, li { white-space: pre-wrap; } Adversaire 4 : {10:?} - - + + Opponent 9: Adversaire 9 : @@ -7504,11 +7535,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Erreur de paramètres @@ -7525,7 +7556,7 @@ Please select an valid directory! Veuillez sélectionner un répertoire valide! - + Select your flipside picture Sélectionnez une image pour le dos des cartes @@ -7534,24 +7565,24 @@ Veuillez sélectionner un répertoire valide! Images (*.png) - + Open Directory Parcourir - + Images (*.png *.jpg *.gif) Images (*.png *.jpg *.gif) - - + + Blinds Error Erreur de blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7575,12 +7606,12 @@ La première blind sera fixée à la valeur maximum possible. Français - + German Allemand - + Hungarian Hongrois @@ -7589,59 +7620,59 @@ La première blind sera fixée à la valeur maximum possible. Portuguais - + Russian Russe - + Turkish Turque - + Language Changed Langue changée - + You have changed application language to %1. Please restart PokerTH to load new language! Vous avez changé la langue de l'application pour %1. Veuillez redémarrer PokerTH pour charger cette langue ! - + Italian Italien - + Slovak Slovaque - + The entered flipside picture doesn't exist. Please enter an valid picture! L'image pour le dos de carte n'existe pas. Veuillez entrer une image valide ! - - + + The log file directory doesn't exist. Please select an valid directory! Le répertoire des fichiers log n'existe pas. Veuillez sélectionner un répertoire valide ! - + Norwegian Norvégien - + Spanish Espagnol @@ -7651,7 +7682,7 @@ Veuillez sélectionner un répertoire valide ! Bulgare - + Polish Polonais @@ -7661,17 +7692,17 @@ Veuillez sélectionner un répertoire valide ! Chinois - + Greek Grec - + Swedish Suédois - + The entered server list address is not a valid URL. Please enter a valid server list address! L'adresse de la liste de serveurs n'est pas une URL valide. @@ -7703,170 +7734,180 @@ Veuillez entrer une adresse de liste de serveurs valide ! Danois - + + Galician + + + + Japanese Japonais - + Lithuania Lituanien - + Portuguese-Brazilian Portugais-Brésil - + Portuguese-Portuguese Portugais-Portugal - + Scottish Gaelic - + Tamil Tamil - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! Les noms d'adversaires sont indentiques. Choisissez des noms différents pour chaque adversaire ! - + Settings Information Information sur les paramètres - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Vous avez changé le répertoire pour les fichiers de journalisation (logs). Relancez PokerTH pour prendre en compte ce changement. - - + + Maintainer Name Nom de l'auteur - - + + Maintainer EMail Email de l'auteur - - + + Create Date Date de création - + Windows Behaviour Comportement de la fenêtre - + scaleable étirable - + fixed fixe - + Minimum Size Taille minimum - + Maximum Size Taille maximum - + Fixed Size Taille fixe - + State Statut - + Please select your game table style Veuillez sélectionner votre style de table de jeu - + PokerTH game table styles (*.xml) Styles de table de jeu PokerTH (*.xml) - + Game Table Style Error Erreur de style de table de jeu - + Selected game table style file is already in the list. Please select another one to add! Le fichier de style de table de jeu sélectionné est déjà dans la liste. Veuillez en sélectionner un autre à ajouter ! - + Game Table Style File Error Erreur sur le fichier style de table de jeu - + Could not load game table style file correctly. Style will not be placed into list! Impossible de charger correctement le fichier de style de table de jeu. Le style ne sera pas placé dans la liste ! - + Please select your card deck style Veuillez choisir votre style de carte - + PokerTH card deck styles (*.xml) Styles de carte PokerTH (*.xml) - + Card Deck Style Error Erreur de style de carte - + Selected card deck style file is already in the list. Please select another one to add! Le fichier de style de carte sélectionné est déjà dans la liste. Veuillez en sélectionner un autre à ajouter ! - + Card Deck Style File Error Erreur sur le fichier de carte - + Could not load card deck style file correctly. Style will not be placed into list! Impossible de charger correctement le fichier de carte. @@ -7905,12 +7946,12 @@ Le style ne sera pas placé dans la liste ! PokerTH plain text log (*.txt) - + PokerTH - Settings PokerTH - Paramètres - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Attention : ceci va supprimer tous vos paramètres personnels et fermer PokerTH ! @@ -8459,35 +8500,66 @@ Please reenter the password and try again. Veuillez entrer le mot de passe à nouveau et réessayez. - + The avatar report was accepted by the server. Thank you. Le rapport d'avatar inapproprié a été accepté par le serveur. Merci. - + This avatar was already reported by another player. Cet avatar a déjà été rapporté comme inapproprié par un autre joueur. - + An error occurred while reporting the avatar. Une erreur s'est produite lors du rapport d'avatar. - + The game name report was accepted by the server. Thank you. Le signalement du nom de partie a été accepté par le serveur. Merci. - + This game name was already reported by another player. Ce nom de partie a déjà été signalé par un autre joueur. - + An error occurred while reporting the game name. Une erreur est survenue lors du signalement du nom de partie. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + The password is too long. Please choose another one. @@ -8650,7 +8722,7 @@ Veuillez choisir un nom différent. - + Server Message Message du serveur diff --git a/ts/pokerth_gd.ts b/ts/pokerth_gd.ts index f39c5d42..d5aaea86 100644 --- a/ts/pokerth_gd.ts +++ b/ts/pokerth_gd.ts @@ -2,6 +2,407 @@ UTF-8 + + + + Selected card deck style "%1" seems to be outdated. + The current PokerTH card deck style version is "%2", but this style has version "%3" set. + +Please contact the card deck style builder %4. + Tha stoidhle a' phaca chairt "%1" a thagh thu ro shean a rèir coltais. + Is "%2" an tionndadh làithreach aig an stoidhle paca aig PokerTH, ach tha tionndadh "%3" suidhichte airson an stoidhle seo. + +Feuch an cuir thu fios dha neach-togail %4 stoidhle a' phaca. + + + Selected card deck style "%1" seems to be incomplete or defective. + +The value(s) of "%2" is/are missing. + +Please contact the card deck style builder %3. + Tha stoidhle a' phaca chairt "%1" a thagh thu neo-iomlan no briste. + +Tha an luach/na luachan aig "%2" a dhìth. + +Feuch an cuir thu fios dha neach-togail %3 stoidhle a' phaca. + + + Selected card deck style "%1" seems to be incomplete or defective. +The card picture(s) "%2" is/are not available. + +Please contact the card deck style builder %3. + Tha stoidhle a' phaca chairt "%1" a thagh thu neo-iomlan no briste. +Tha dealbh(an) na cairte "%2" a dhìth. + +Feuch an cuir thu fios dha neach-togail %3 stoidhle a' phaca. + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Singleplayer games with up to 9 computer-opponents</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-size:8pt;"> with result tables</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Einnsean poker airson &quot;Texas Hold'em&quot; Poker mòr-chòrdte</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Geamannan aon-chluicheadair le suas gu 9 co-fharpaisichean coimpiutair</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Geamannan lìonraidh ioma-chluicheadair<br />- Geamannan air an eadar-lìon<br />- Eadar-aghaidh a ghabhas atharrachadh le gailearaidh dhe stoidhlichean air loidhne<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Làrach-lìn rangachaidh</span></a><span style=" font-size:8pt;"> le clàraichean nan toraidhean</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Project page: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Authors: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, engine development</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - basic architecture, network development, windows package, MacOS package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Duilleag a' phròiseict: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Ùghdaran: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - beachd tòiseachaidh, dealbhadh bunasach, prògramachadh na h-eadar-aghaidh, deasachadh grafaigeachd na h-eadar-aghaidh, pacaid linux</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - beachd tòiseachaidh, dealbhadh bunasach, leasachadh an einnsein</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - dealbhadh bunasach, leasachadh lìonraidh, pacaid windows, pacaid MacOS</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - a' chiad dealbhachadh grafaigeachd na h-eadar-aghaidh</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Singleplayer games with up to 9 computer-opponents</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> with result tables</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Einnsean poker airson &quot;Texas Hold'em&quot; Poker mòr-chòrdte</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Geamannan aon-chluicheadair le suas gu 9 co-fharpaisichean coimpiutair</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Geamannan lìonraidh ioma-chluicheadair<br />- Geamannan air an eadar-lìon<br />- Eadar-aghaidh a ghabhas atharrachadh le gailearaidh dhe stoidhlichean air loidhne<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Làrach-lìn rangachaidh</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> le clàraichean nan toraidhean</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Authors: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, engine development</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - basic architecture, network development, windows package, MacOS package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Ùghdaran: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - beachd tòiseachaidh, dealbhadh bunasach, prògramachadh na h-eadar-aghaidh, deasachadh grafaigeachd na h-eadar-aghaidh, pacaid linux</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - beachd tòiseachaidh, dealbhadh bunasach, leasachadh an einnsein</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - - dealbhadh bunasach, leasachadh lìonraidh, pacaid windows, pacaid MacOS</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - a' chiad dealbhachadh grafaigeachd na h-eadar-aghaidh</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">for different popular avatar picture resources</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for people avatar pictures</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for &quot;misc&quot; avatar pictures</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different gpl licensed sounds</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for self recorded chip sounds</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different patches</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for internet-game-server hosting and administration</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for startwindow background gfx and danuxi1 table background</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for moderating forum and organise bugtracker and feature requests</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for new table sounds</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">airson caochladh ghoireasan dealbhan avatar mòr-chòrdte</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson dealbhan avatar dhaoine</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson dealbhan avatar &quot;measgaichte&quot;</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson caochladh fuaime fon cheadachas gpl</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson fuaimean nam bonn a chlàraich e fhèin</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson caochladh patch</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson òstadh is rianachd frithealaichean nan geamannan eadar-lìn</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson èifeachd grafaigeach an sgrìn-tòiseachaidh is cùlaibh a' bhùird danuxi1</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson obair-mhaoir air a' bhòrd-bhrath is rianachd a' bugtracker is iarrtasan nam feart</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson fuaimean a' bhùird ùra</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Click here to view the online rankings</span></a></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Briog an-seo gus an rangachadh air loidhne fhaicinn</span></a></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Create new user account</span></a></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Cruthaich cunntas a' chleachdaiche ùr</span></a></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Note: Best quality with image ratio like </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">width=48, height=76.</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">leud=48, àirde=76.</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Note: Default </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Game Settings</span><span style=" font-size:12pt; font-style:italic;"> like &quot;Maximum number of players&quot;, &quot;Start Cash&quot; and &quot;Small Blind&quot; will be used </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">from Network Game Settings.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">An aire: thèid </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Roghainnean a' gheama</span><span style=" font-size:12pt; font-style:italic;"> bunaiteach mar &quot;An àireamh as motha dhe chluicheadairean&quot;, &quot;Airgead tòiseachaidh&quot; is &quot;Small Blind&quot; a chleachdadh </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">bho Roghainnean a' gheama lìonraidh.</span></p></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(This nick will also be used for the online game login)</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(Thèid am far-ainm seo a chleachdadh airson an logadh a-steach dha gheamannan air loidhne cuideachd)</span></p></body></html> + + + Preview: + Ro-shealladh: + + + Export as HTML + Às-phortaich mar HTML + + + Export as txt + Às-phortaich mar txt + + + Save as ... + Sàbhail mar ... + + + Delete + Sguab às + + + Log File + Faidhle loga + + + PokerTH - Delete log files + PokerTH - Sguab às dha dh'fhaidhlichean loga + + + Do you really want to delete the selected log files? + A bheil thu cinnteach gu bheil thu airson na faidhlichean loga a thagh thu a sguabadh às? + + + Export PokerTH log file to HTML + Às-phortaich faidhle loga PokerTH gu HTML + + + PokerTH HTML log (*.html) + Loga HTML aig PokerTH (*.html) + + + Export PokerTH log file to plain text + Às-phortaich faidhle loga PokerTH gu teacsa lom + + + PokerTH plain text log (*.txt) + Loga teacsa lom aig PokerTH (*.txt) + + + Save PokerTH log file + Sàbhail faidhle loga PokerTH + + + PokerTH SQL log (*.pdb) + Loga SQL aig PokerTH (*.pdb) + + CardDeckStyleReader @@ -109,436 +510,6 @@ Please select a card deck style and try again! Tagh stoidhle airson paca chairt is feuch ris a-rithist! - - - - - Selected card deck style "%1" seems to be outdated. - The current PokerTH card deck style version is "%2", but this style has version "%3" set. - -Please contact the card deck style builder %4. - Tha stoidhle a' phaca chairt "%1" a thagh thu ro shean a rèir coltais. - Is "%2" an tionndadh làithreach aig an stoidhle paca aig PokerTH, ach tha tionndadh "%3" suidhichte airson an stoidhle seo. - -Feuch an cuir thu fios dha neach-togail %4 stoidhle a' phaca. - - - - Selected card deck style "%1" seems to be incomplete or defective. - -The value(s) of "%2" is/are missing. - -Please contact the card deck style builder %3. - Tha stoidhle a' phaca chairt "%1" a thagh thu neo-iomlan no briste. - -Tha an luach/na luachan aig "%2" a dhìth. - -Feuch an cuir thu fios dha neach-togail %3 stoidhle a' phaca. - - - - Selected card deck style "%1" seems to be incomplete or defective. -The card picture(s) "%2" is/are not available. - -Please contact the card deck style builder %3. - Tha stoidhle a' phaca chairt "%1" a thagh thu neo-iomlan no briste. -Tha dealbh(an) na cairte "%2" a dhìth. - -Feuch an cuir thu fios dha neach-togail %3 stoidhle a' phaca. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Singleplayer games with up to 9 computer-opponents</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-size:8pt;"> with result tables</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Einnsean poker airson &quot;Texas Hold'em&quot; Poker mòr-chòrdte</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Geamannan aon-chluicheadair le suas gu 9 co-fharpaisichean coimpiutair</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Geamannan lìonraidh ioma-chluicheadair<br />- Geamannan air an eadar-lìon<br />- Eadar-aghaidh a ghabhas atharrachadh le gailearaidh dhe stoidhlichean air loidhne<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Làrach-lìn rangachaidh</span></a><span style=" font-size:8pt;"> le clàraichean nan toraidhean</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Project page: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Authors: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, engine development</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - basic architecture, network development, windows package, MacOS package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Duilleag a' phròiseict: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Ùghdaran: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - beachd tòiseachaidh, dealbhadh bunasach, prògramachadh na h-eadar-aghaidh, deasachadh grafaigeachd na h-eadar-aghaidh, pacaid linux</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - beachd tòiseachaidh, dealbhadh bunasach, leasachadh an einnsein</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - dealbhadh bunasach, leasachadh lìonraidh, pacaid windows, pacaid MacOS</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - a' chiad dealbhachadh grafaigeachd na h-eadar-aghaidh</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Singleplayer games with up to 9 computer-opponents</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> with result tables</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Einnsean poker airson &quot;Texas Hold'em&quot; Poker mòr-chòrdte</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Geamannan aon-chluicheadair le suas gu 9 co-fharpaisichean coimpiutair</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Geamannan lìonraidh ioma-chluicheadair<br />- Geamannan air an eadar-lìon<br />- Eadar-aghaidh a ghabhas atharrachadh le gailearaidh dhe stoidhlichean air loidhne<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Làrach-lìn rangachaidh</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> le clàraichean nan toraidhean</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Authors: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, engine development</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - basic architecture, network development, windows package, MacOS package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Ùghdaran: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - beachd tòiseachaidh, dealbhadh bunasach, prògramachadh na h-eadar-aghaidh, deasachadh grafaigeachd na h-eadar-aghaidh, pacaid linux</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - beachd tòiseachaidh, dealbhadh bunasach, leasachadh an einnsein</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - - dealbhadh bunasach, leasachadh lìonraidh, pacaid windows, pacaid MacOS</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - a' chiad dealbhachadh grafaigeachd na h-eadar-aghaidh</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">for different popular avatar picture resources</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for people avatar pictures</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for &quot;misc&quot; avatar pictures</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different gpl licensed sounds</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for self recorded chip sounds</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different patches</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for internet-game-server hosting and administration</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for startwindow background gfx and danuxi1 table background</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for moderating forum and organise bugtracker and feature requests</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for new table sounds</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">airson caochladh ghoireasan dealbhan avatar mòr-chòrdte</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson dealbhan avatar dhaoine</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson dealbhan avatar &quot;measgaichte&quot;</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson caochladh fuaime fon cheadachas gpl</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson fuaimean nam bonn a chlàraich e fhèin</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson caochladh patch</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson òstadh is rianachd frithealaichean nan geamannan eadar-lìn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson èifeachd grafaigeach an sgrìn-tòiseachaidh is cùlaibh a' bhùird danuxi1</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson obair-mhaoir air a' bhòrd-bhrath is rianachd a' bugtracker is iarrtasan nam feart</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson fuaimean a' bhùird ùra</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Click here to view the online rankings</span></a></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Briog an-seo gus an rangachadh air loidhne fhaicinn</span></a></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Create new user account</span></a></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Cruthaich cunntas a' chleachdaiche ùr</span></a></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Note: Best quality with image ratio like </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">width=48, height=76.</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">leud=48, àirde=76.</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Note: Default </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Game Settings</span><span style=" font-size:12pt; font-style:italic;"> like &quot;Maximum number of players&quot;, &quot;Start Cash&quot; and &quot;Small Blind&quot; will be used </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">from Network Game Settings.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">An aire: thèid </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Roghainnean a' gheama</span><span style=" font-size:12pt; font-style:italic;"> bunaiteach mar &quot;An àireamh as motha dhe chluicheadairean&quot;, &quot;Airgead tòiseachaidh&quot; is &quot;Small Blind&quot; a chleachdadh </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">bho Roghainnean a' gheama lìonraidh.</span></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(This nick will also be used for the online game login)</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(Thèid am far-ainm seo a chleachdadh airson an logadh a-steach dha gheamannan air loidhne cuideachd)</span></p></body></html> - - - - Preview: - Ro-shealladh: - - - - Export as HTML - Às-phortaich mar HTML - - - - Export as txt - Às-phortaich mar txt - - - - Save as ... - Sàbhail mar ... - - - - Delete - Sguab às - - - - Log File - Faidhle loga - - - - PokerTH - Delete log files - PokerTH - Sguab às dha dh'fhaidhlichean loga - - - - Do you really want to delete the selected log files? - A bheil thu cinnteach gu bheil thu airson na faidhlichean loga a thagh thu a sguabadh às? - - - - Export PokerTH log file to HTML - Às-phortaich faidhle loga PokerTH gu HTML - - - - PokerTH HTML log (*.html) - Loga HTML aig PokerTH (*.html) - - - - Export PokerTH log file to plain text - Às-phortaich faidhle loga PokerTH gu teacsa lom - - - - PokerTH plain text log (*.txt) - Loga teacsa lom aig PokerTH (*.txt) - - - - Save PokerTH log file - Sàbhail faidhle loga PokerTH - - - - PokerTH SQL log (*.pdb) - Loga SQL aig PokerTH (*.pdb) - - ChatTools @@ -1783,60 +1754,60 @@ p, li { white-space: pre-wrap; } A' tòiseachadh air geama. Fuirich greis ... - + Joining a private Game A' gabhail ann an geama prìobhaideach - + You are about to join a private game. Please enter the password! Tha thu an impis gabhail ann an geama prìobhaideach. An cuir thu a-steach am facal-faire? - + open fosgailte - - - - + + + + Game Info Fiosrachadh a' gheama - - + + Game Geama - - + + Players Cluicheadairean - - + + State Staid - - + + P P - - + + Available Players Cluicheadairean ri làimh @@ -1856,138 +1827,138 @@ p, li { white-space: pre-wrap; } Fiosrachadh a' chluicheadair ... - + Report inappropriate game name Aithris ainm cluicheadair mì-iomchaidh - - - + + + Standard Àbhaisteach - - - + + + Registered players only Cluicheadairean a chlàraich a-mhàin - - - + + + Invited players only Cluicheadairean a fhuair cuireadh a-mhàin - - - + + + Ranking game Geama rangachaidh - + Connected players - max. %1 Cluicheadairean ceangailte - %1 air a char as motha - - + + T S - - - + + + sec (action) diog (gnìomhachd) - - - + + + sec (hand delay) diog (dàil na làimhe) - - + + Connected players - Max. %1 Cluicheadairean ceangailte - %1 air a char as motha - + running ga ruith - - + + running games: %1 geamannan gan ruith: %1 - - + + open games: %1 geamannan fosgailte: %1 - + Invite %1 Thoir cuireadh dha %1 - + Ignore %1 Leig seachad %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>Thug %3 cuireadh dha %1 airson %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>dhiùlt %1 an cuireadh airson %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>Chan urrainn dha %1 gabhail ann an %2 oir tha e trang.</span> - - + + The game will start in<br><b>%1</b> seconds. Tòisichidh a' gheama ann an<br><b>%1</b> diog. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Ghabh thu ann an geama dhen t-seòrsa "le cuireadh a-mhàin". Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-ainm air liosta nan cluicheadairean ri làimh. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Fhuair thu cuireadh dhan gheama <b>%1</b> le <b>%2</b>.<br>A bheil thu airson gabhail sa gheama seo? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Chan fhaigh thu teachdaireachdan cabadaich no cuiridhean bhon chleachdaiche seo tuilleadh.<br>A bheil thu cinnteach gu bheil thu airson an cluicheadair <b>%1</b> a chur air an liosta neo-shuime agad? - - + + connected players: %1 cluicheadairean ceangailte: %1 @@ -2003,1317 +1974,1346 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a - - + + Time Ùine - + Show player stats Seall stadastaireachd a' chluicheadair - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players Cluicheadairean ceangailte - + hands làmhan - + minutes mionaidean - + double blinds blinds dùbailte - + manual blinds order òrdugh nam blinds a làimh - + Server Error Mearachd an fhrithealaiche - + You should not kick yourself from this game! Cha bu chòir dhut a' bhròg a thoirt dhut fhèin! - + search for player ... a' lorg cluicheadair ... - + Chat is only available to registered players. Chan eil a' chabadaich ri làimh ach airson chluicheadairean a' chlàraich. - + Invite player ... Thoir cuireadh dha chluicheadair ... - + Ignore player ... Leig seachad an cluicheadair ... - + %1 is playing in "%2". Tha %1 a' cluiche ann an "%2". - + %1 is not playing at the moment. Chan eil %1 a' cluiche an-dràsta. - - + + PokerTH - Info Message PokerTH - Brath fiosrachaidh - - + + + + PokerTH - Question PokerTH - Ceist - + Afghanistan Afghanastàn - + ALand Islands Na h-Eileanan Àland - + Albania Albàinia - + Algeria Aildiria - + American Samoa Samotha na h-Aimeireaga - + Andorra Andorra - + Angola Angòla - + Anguilla Anguilia - + Antarctica An Antartaig - + Antigua And Barbuda Aintìoga agus Barbuda - + Argentina An Argantain - + Armenia Airmeinia - + Aruba Arùba - + Australia Astràilia - + Austria An Ostair - + Azerbaijan Asarbaideàn - + Bahamas Na h-Eileanan Bhathama - + Bahrain Bachrain - + Bangladesh Bangladais - + Barbados Barbados - + Belarus A' Bhealaruis - + Belgium A' Bheilg - + Belize A' Bheilìs - + Benin Beinin - + Bermuda Bearmùda - + Bhutan Butàn - + Bolivia Boilibhia - + Bosnia And Herzegovina Bosna is Hearsagobhana - + Botswana Botsuana - + Bouvet Island Eilean Bouvet - + Brazil Braisil - + British Indian Ocean Territory Ranntair Breatannach Cuan nan Innseachan - + Brunei Darussalam Brùnaigh Dàr as-Salàm - + Bulgaria A' Bhulgair - + Burkina Faso Buirciona Faso - + Burundi Burundaidh - + Cambodia Cambuidea - + Cameroon Camarun - + Canada Canada - + Cape Verde An Ceap Uaine - + Cayman Islands Na h-Eileanan Caimean - + Central African Republic Poblachd Meadhan Afraga - + Chad An t-Seàd - + Chile An t-Sile - + China An t-Sìn - + Christmas Island Eilean na Nollaig - + Cocos (Keeling) Islands Na h-Eileanan Cocos (Keeling) - + Colombia Coloimbia - + Comoros Comoros - + Congo Congo - + Congo, The Democratic Republic Of The Congo, Poblachd Dheamocratach - + Cook Islands Eileanan Cook - + Costa Rica Costa Rìcea - + Cote D'Ivoire Côte d'Ivoire - + Croatia A' Chròthais - + Cuba Cùba - + Cyprus Cìopras - + Czech Republic Poblachd na Seice - + Denmark An Danmhairg - + Djibouti Diobùtaidh - + Dominica Doiminicea - + Dominican Republic A' Phoblachd Dhoiminiceach - + Ecuador Eacuador - + Egypt An Èiphit - + El Salvador An Salbhador - + Equatorial Guinea Gini Mheadhan-Chriosach - + Eritrea Eartra - + Estonia An Eastoin - + Ethiopia An Itiop - + Falkland Islands (Malvinas) Na h-Eileanan Fàclannach (Malvinas) - + Faroe Islands Na h-Eileanan Fàro - + Fiji Fìdi - + Finland An Fhionnlann - + France An Fhraing - + French Guiana Guidheàna na Frainge - + French Polynesia Poilinèis na Frainge - + French Southern Territories Ranntairean a Deas na Frainge - + Gabon Gabon - + Gambia A' Ghaimbia - + Georgia A' Chairtbheil - + Germany A' Ghearmailt - + Ghana Gàna - + Gibraltar Diobraltar - + Greece A' Ghreug - + Greenland A' Ghraonlann - + Grenada Greanàda - + Guadeloupe Guadalup - + Guam Guam - + Guatemala Guatamala - + Guernsey Geàrnsaidh - + Guinea Gini - + Guinea-Bissau Gini-Bioso - + Guyana Guidheàna - + Haiti Haidhti - + Heard Island And Mcdonald Islands Eilean Heard is MhicDhòmhnaill - + Holy See (Vatican City State) A' Chathair Naomh (Stàit Cathair na Bhatacain) - + Honduras Hondùras - + Hong Kong Hong Kong - + Hungary An Ungair - + Iceland Innis Tìle - + India Na h-Innseachan - + Indonesia Na h-Innd Innse - + Iran, Islamic Republic Of Ioràn, Poblachd Ioslamach - + Iraq Ioràc - + Ireland Èirinn - + Isle Of Man Eilean Mhanainn - + Israel Iosrael - + Italy An Eadailt - + Jamaica Diameuga - + Japan An t-Seapan - + Jersey Deàrsaidh - + Jordan Iòrdan - + Kazakhstan Casachstàn - + Kenya Ceinia - + Kiribati Ciribeas - + Korea, Democratic People'S Republic Of Coirèa, Sluagh-phoblachd Dheamocratach - + Korea, Republic Of Choirèa, Poblachd - + Kuwait Cuibhèit - + Kyrgyzstan Cìorgastan - + Lao People'S Democratic Republic Làtho, Sluagh-phoblachd Dheamocratach - + Latvia An Laitbhe - + Lebanon Leabanon - + Lesotho Leasoto - + Liberia Libèir - + Libyan Arab Jamahiriya Libia, Sluagh-phoblachd Mhòr Shòisealach Arabach - + Liechtenstein Lichtenstein - + Lithuania An Liotuain - + Luxembourg Lugsamburg - + Macao Macàthu - + Macedonia, The Former Yugoslav Republic Of A' Mhasadon, Seann-Phoblachd Iùgoslabhach - + Madagascar Madagasgar - + Malawi Malabhaidh - + Malaysia Malaidhsea - + Maldives Na h-Eileanan Maladaibh - + Mali Màili - + Malta Malta - + Marshall Islands Eileanan Mharshall - + Martinique Mairtinic - + Mauritania Moratàinea - + Mauritius Na h-Eileanan Mhoiriseas - + Mayotte Mayotte - + Mexico Meagsago - + Micronesia, Federated States Of Na Meanbh-Eileanan, Stàitean Feadarail - + Moldova, Republic Of A' Mholdobha, Poblachd - + Monaco Monaco - + Mongolia Dùthaich nam Mongol - + Montserrat Montsarat - + Morocco Moroco - + Mozambique Mòsaimbic - + Myanmar Miànmar - + Namibia An Namaib - + Nauru Nauru - + Nepal Neapàl - + Netherlands Na Tìrean Ìsle - + Netherlands Antilles Eileanan Aintilia nan Tìrean Ìsle - + New Caledonia Cailleann Nuadh - + New Zealand Sealainn Nuadh - + Nicaragua Niocaragua - + Niger Nìgeir - + Nigeria Nigèiria - + Niue Niue - + Norfolk Island Eilean Norfolk - + Northern Mariana Islands Na h-Eileanan Mairianach a Tuath - + Norway An Nirribhidh - + Oman Omàn - + Pakistan Pagastàn - + Palau Palabh - + Palestinian Territory, Occupied A' phalastain, Ranntair fo fhor-ghlacadh - + Panama Panama - + Papua New Guinea Gini Nuadh Phaputhach - + Paraguay Paraguaidh - + Peru Pearù - + Philippines Na h-Eileanan Filipineach - + Pitcairn Peit a' Chàirn - + Poland A' Phòlainn - + Portugal A' Phortagail - + Puerto Rico Porto Rìceo - + Qatar Catar - + Reunion Réunion - + Romania Romàinia - + Russian Federation An Co-nasgadh Ruiseach - + Rwanda Rubhanda - + Saint Helena Eilean Naomh Eilidh - + Saint Kitts And Nevis Naomh Crìstean is Nibheis - + Saint Lucia Naomh Lùisea - + Saint Pierre And Miquelon Saint Pierre is Miquelon - + Saint Vincent And The Grenadines Naomh Bhionsant agus Eileanan Greanadach - + Samoa Samotha - + San Marino San Marino - + Sao Tome And Principe São Tomé is Príncipe - + Saudi Arabia Aràibia nan Sabhd - + Senegal Seanagal - + Serbia And Montenegro An t-Sèirb is am Monadh Negrach - + Seychelles Na h-Eileanan Sheiseall - + Sierra Leone Siarra Leòmhann - + Singapore Singeapòr - + Slovakia An t-Slòbhac - + Slovenia An t-Slòbhain - + Solomon Islands Eileanan Sholaimh - + Somalia Somàilia - + South Africa Afraga a Deas - + South Georgia And The South Sandwich Islands Seòrsea a Deas is na h-Eileanan Sandwich a Deas - + Spain An Spàinn - + Sri Lanka Sri Lanca - + Sudan Sudàn - + Suriname Suranam - + Svalbard And Jan Mayen Svalbard is Jan Mayen - + Swaziland Dùthaich nan Suasaidh - + Sweden An t-Suain - + Switzerland An Eilbheis - + Syrian Arab Republic Siridhea, Poblachd Arabach - + Taiwan, Province Of China Taidh-Bhàn, Mòr-roinn na Sìne - + Tajikistan Taidigeastàn - + Tanzania, United Republic Of An Tansan, Poblachd Aonaichte - + Thailand Dùthaich nan Tàidh - + Timor-Leste Tìomor an Ear - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trianaid is Tobago - + Tunisia Tuinisea - + Turkey An Tuirc - + Turkmenistan Turcmanastàn - + Turks And Caicos Islands Na h-Eileanan Turcach is Caiceo - + Tuvalu Tubhalu - + Uganda Uganda - + Ukraine An Ucràin - + United Arab Emirates Na h-Iomaratan Arabach Aonaichte - + United Kingdom An Rìoghachd Aonaichte - + United States Na Stàitean Aonaichte - + United States Minor Outlying Islands Meanbh-Eileanan Iomallach nan Stàitean Aonaichte - + Uruguay Uruguaidh - + Uzbekistan Usbagastan - + Vanuatu Vanuatu - + Venezuela A' Bheiniseala - + Viet Nam Bhiet-Nam - + Virgin Islands, British Eileanan Breatannach na Maighdinn - + Virgin Islands, U.S. Eileanan na Maighdinn aig na Stàitean Aonaichte - + Wallis And Futuna Uallas agus Futuna - + Western Sahara Sathara an Iar - + Yemen An Eaman - + Zambia Sàimbia - + Zimbabwe An t-Sìombab - + Are you sure you want to report the game name: "%1" as inappropriate? A bheil thu cinnteach gu bheil thu airson ainm a' gheama: "%1" aithris mar mhì-iomchaidh? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -4280,7 +4280,7 @@ Feuch an cuir thu a-steach dealbh dligheach! - + Factory Settings Roghainnean an fhactaraidh @@ -4523,7 +4523,13 @@ Feuch an cuir thu a-steach dealbh dligheach! Seall còmhradh airson roghainnean a' gheama le toiseach gach geama ùir - + + + Server Password: + + + + OK Ceart ma-thà @@ -4545,14 +4551,14 @@ Feuch an cuir thu a-steach dealbh dligheach! Crìochan ùine airson gnìomhachd a' chluicheadair: - - + + Reset all settings to default ... Ath-shuidhich na h-uile roghainn dhan bhun-roghainn ... - - + + Note: You can not reset all settings to default during a running game! An aire: chan urrainn dhut na h-uile roghainn ath-shuidheachadh dhan bhun-roghainn nuair a bhios geama a' ruith! @@ -4572,41 +4578,41 @@ Feuch an cuir thu a-steach dealbh dligheach! - + - + Server Port: Port an fhrithealaiche: - + - + Use SCTP Cleachd SCTP - + - + Use IPv6 Cleachd IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Dè th' ann?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Dè th' ann?</a> @@ -4616,7 +4622,7 @@ Feuch an cuir thu a-steach dealbh dligheach! Roghainnean a' gheama eadar-lìn - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4627,61 +4633,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: thèid </span><span style=" font-weight:600; font-style:italic;">Roghainnean a' gheama</span><span style=" font-style:italic;"> bunaiteach mar "An àireamh as motha dhe chluicheadairean", "Airgead tòiseachaidh" is "Small Blind" a chleachdadh </span><span style=" font-weight:600; font-style:italic;">bho Roghainnean a' gheama lìonraidh.</span></p></body></html> - - + + Server Address: Seòladh an fhrithealaiche: - - + + Use password for private game: Cleachd facal-faire airson geama phrìobhaideach: - - + + Computer Engine Einnsean coimpiutair - - + + Opponent 6: Co-fharpaisiche 6: - - + + Opponent 5: Co-fharpaisiche 5: - - + + Opponent 4: Co-fharpaisiche 4: - - + + Opponent 3: Co-fharpaisiche 3: - - + + Opponent 2: Co-fharpaisiche 2: - - + + Opponent 1: Co-fharpaisiche 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4692,50 +4698,50 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: gheibh thu an càileachd as fhearr aig an avatar le co-mheas deilbh mar </span><span style=" font-weight:600; font-style:italic;">leud=50, àirde=50.</span></p></body></html> - - + + Enable/Disable Logging Cuir logadh an comas/à comas - - + + Log File Directory: Pasgan aig an fhaidhle logaidh: - - + + Write log after every: Sgrìobh loga an dèidh gach: - - + + action (high frequent disc access) gnìomhachd (inntrigeadh dhan diosga gu tric) - - + + hand (medium disc access) làmh (inntrigeadh dhan diosga meadhanach) - - + + game (low disc access) geama (inntrigeadh dhan diosga ainneamh) - + Log Messages Logaich teachdaireachdan - + Player Nicks/Avatars Far-ainmean/avataran nan cluicheadairean @@ -4774,29 +4780,29 @@ p, li { white-space: pre-wrap; } Rèiteachaidh an fhrithealaiche a làimh - + Human Player: Cluicheadair daonna: - + (This nick will also be used for the online game login) (Logaidh tu a-steach leis an fhar-ainm seo dha gheamannan air loidhne cuideachd) - + Note: Best avatar quality with image ratio like width=50, height=50. An aire: gheibh thu an càileachd as fhearr aig an avatar le co-mheas deilbh mar leud=50, àirde=50. - - + + Store log files for: Sàbhail faidhlichean logaidh fad: - - + + Day(s) Là(ithean) @@ -4836,8 +4842,8 @@ p, li { white-space: pre-wrap; } An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar leud=48, àirde=76. - - + + Avatar Server: Frithealaiche an avatar: @@ -4938,84 +4944,84 @@ p, li { white-space: pre-wrap; } Frithealaiche - - + + Game Geama - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. An aire: Thèid roghainnean bunaiteach a' gheama mar "An àireamh as motha dhe chluicheadairean", "Airgead tòiseachaidh" is "Small Blind" a chleachdadh bho "Roghainnean a' gheama lìonraidh". - - + + Default game name: Ainm bunaiteach a' gheama: - - + + Default game type: Seòrsa bunaiteach a' gheama: - - + + Standard Àbhaisteach - - + + Registered players only Cluicheadairean a chlàraich a-mhàin - - + + Invited players only Cluicheadairean a fhuair cuireadh a-mhàin - - + + Ranking game Geama rangachaidh - - + + Show lobby chat Seall cabadaich an lobaidh - - + + Automatically leave the table after the game finished Fàg am bòrd gu fèin-obrachail nuair a thig crìoch air a' gheama - - + + Ignored Players Cluicheadairean air an liosta neo-shuime - - + + Player Cluicheadair - - + + Remove Player Thoir an cluicheadair air falbh - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5028,20 +5034,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cluicheadair daonna:<br /><span style=" font-style:italic;">(Logaidh tu a-steach leis an fhar-ainm seo dha gheamannan air loidhne cuideachd)</span></p></body></html> - - + + Opponent 7: Co-fharpaisiche 7: - - + + Opponent 8: Co-fharpaisiche 8: - - + + Opponent 9: Co-fharpaisiche 9: @@ -5049,65 +5055,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Mearachd leis na roghainnean - + The entered flipside picture doesn't exist. Please enter an valid picture! Chan eil an dealbh cùlaibh a chuir thu a-steach ann. Feuch an cuir thu a-steach dealbh dligheach! - - + + The log file directory doesn't exist. Please select an valid directory! Chan eil am pasgan airson an fhaidhle loga ann. Feuch an tagh thu pasgan dligheach! - + Language Changed Cànan air atharrachadh - + You have changed application language to %1. Please restart PokerTH to load new language! Dh'atharraich thu cànan an aplacaid gu %1. Feuch an ath-thòisich thu PokerTH gus an cànan ùr a luchdadh! - + Select your flipside picture Tagh an dealbh cùlaibh agad - + Images (*.png *.jpg *.gif) Dealbhan (*.png *.jpg *.gif) - + Open Directory Fosgail pasgan - - + + Blinds Error Mearachd le blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5116,7 +5122,7 @@ nas lugha na a' chiad small blind! Thèid luach a' chiad small blind seo a shuidheachadh air an luach ceadaichte as motha. - + The entered server list address is not a valid URL. Please enter a valid server list address! Chan eil an seòladh aig liosta nam frithealaichean a chuir thu a-steach na URL dligheach. @@ -5174,236 +5180,246 @@ Feuch an cuir thu a-steach seòladh aig liosta nam frithealaichean dligheach! + Galician + + + + German Gearmailtis - + Greek Greugais - + Hungarian Ungairis - + Italian Eadailtis - + Japanese Seapanais - + Lithuania Liotuainis - + Norwegian Nirribhis - + Polish Pòlainnis - + Portuguese-Brazilian Portagailis Bhraisileach - + Portuguese-Portuguese Portagailis na Portagaile - + Russian Ruisis - + Scottish Gaelic Gàidhlig na h-Alba - + Slovak Slòbhacais - + Spanish Spàinntis - + Swedish Suainis - + Tamil Taimilis - + Turkish Turcais - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! Chan eil ainm fa leth aig gach co-fharpaisiche. Feuch an tagh thu ainm eadar-dhealaichte airson gach co-fharpaisiche! - + Settings Information Fiosrachadh nan roghainnean - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Ah'dhatharraich thu pasgan am faidhle loga. Feuch an ath-thòisich thu PokerTH gus am pasgan ùr airson nam faidhlichean loga a chleachdadh! - - + + Maintainer Name Ainm an neach-glèidhidh - - + + Maintainer EMail Post-d an neach-glèidhidh - - + + Create Date Ceann-latha a' chruthachaidh - + Windows Behaviour Giùlan Windows - + scaleable gabhaidh e sgèileadh - + fixed suidhichte - + Minimum Size Meud as lugha - + Maximum Size Meud as motha - + Fixed Size Meud suidhichte - + State Staid - + Please select your game table style Tagh stoidhle aig bòrd a' gheama - + PokerTH game table styles (*.xml) Stoidhlean bòrd a' gheama aig PokerTH (*.xml) - + Game Table Style Error Mearachd le stoidhle bòrd a' gheama - + Selected game table style file is already in the list. Please select another one to add! Tha an stoidhle bùird a thagh thu air an liosta mu thràth. Feuch an tagh thu tè eile airson cur ris! - + Game Table Style File Error Mearachd le faidhle airson stoidhle bòrd a' gheama - + Could not load game table style file correctly. Style will not be placed into list! Cha b' urrainn dhuinn am faidhle airson stoidhle bòrd a' gheama a luchdadh mar bu chòir. Cha tèid an stoidhle a cur ris an liosta! - + Please select your card deck style Tagh an stoidhle airson a' phaca cairt agad - + PokerTH card deck styles (*.xml) Stoidhle paca chairt aig PokerTH (*.xml) - + Card Deck Style Error Mearachd le stoidhle airson paca chairt - + Selected card deck style file is already in the list. Please select another one to add! Tha am faidhle airson stoidhle paca chairt air an liosta mu thràth. Feuch an tagh thu fear eile airson cur ris! - + Card Deck Style File Error Mearachd le faidhle airson stoidhle paca chairt - + Could not load card deck style file correctly. Style will not be placed into list! Cha b' urrainn dhuinn am faidhle airson stoidhle paca chairt a luchdadh mar bu chòir. Cha tèid an stoidhle a chur ris an liosta! - + PokerTH - Settings PokerTH - Roghainnean - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? An aire: sguabaidh seo às dha na roghainnean pearsanta agad uile is dùinidh e PokerTH! @@ -5852,35 +5868,66 @@ Please reenter the password and try again. Cuir am facal-faire a-steach turas eile is feuch ris a-rithist. - + The avatar report was accepted by the server. Thank you. Ghabh am frithealaiche ris an aithris air avatar. Mòran taing. - + This avatar was already reported by another player. Chaidh an t-avatar seo aithris le cluicheadair eile mu thràth. - + An error occurred while reporting the avatar. Thachair mearachd le aithris air an avatar. - + The game name report was accepted by the server. Thank you. Ghabh am frithealaiche ris an aithris air ainm a' gheama. Mòran taing. - + This game name was already reported by another player. Chaidh ainm a' gheama seo aithris le cluicheadair eile mu thràth. - + An error occurred while reporting the game name. Thachair mearachd le aithris air ainm a' gheama. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + The password is too long. Please choose another one. @@ -6055,7 +6102,7 @@ Cuir am facal-faire a-steach turas eile is feuch ris a-rithist. - + Server Message Brath an fhrithealaiche diff --git a/ts/pokerth_gl.ts b/ts/pokerth_gl.ts index 8463d087..d9fadb44 100644 --- a/ts/pokerth_gl.ts +++ b/ts/pokerth_gl.ts @@ -1351,61 +1351,61 @@ p, li { white-space: pre-wrap; } Comezando a partida… - + Joining a private Game Uníndose a unha partida privada… - + You are about to join a private game. Please enter the password! Esta partida é privada, polo que debe introducir o contrasinal. - + open Aberta - - - - + + + + Game Info Información da partida - - + + Game Partida - - + + Players Xogadores - - + + State Estado - - + + P Privada. P - - + + Available Players Xogadores dispoñíbeis @@ -1425,139 +1425,139 @@ p, li { white-space: pre-wrap; } Información… - + Report inappropriate game name Informar de que o nome non é axeitado - - - + + + Standard Estándar - - - + + + Registered players only Para xogadores rexistrados - - - + + + Invited players only Acceso só con invitación - - - + + + Ranking game Partida de puntuación - + Connected players - max. %1 Xogadores conectados (límite: %1) - - + + T Tipo T - - - + + + sec (action) segundos por quenda - - - + + + sec (hand delay) segundos entre mans - - + + Connected players - Max. %1 Xogadores conectados (límite: %1) - + running En marcha - - + + running games: %1 Partidas en marcha: %1 - - + + open games: %1 Partidas abertas: %1 - + Invite %1 Convidar a %1 - + Ignore %1 Ignorar a %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 convidou a %1 a unirse a %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 rexeitou a invitación para %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 non pode unirse a %2 porque está ocupado.</span> - - + + The game will start in<br><b>%1</b> seconds. A partida comeza en <br><b>%1</b> segundos. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Uniuse a unha partida privada, á que só se pode acceder previa invitación. Para convidar a outros xogadores, prema co botón secundario a súa entrada na lista de xogadores dispoñíbeis, e use o menú de contexto. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? <b>%2</b> convidouno á partida <b>%1</b>.<br>Quere unirse? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Non volverá recibir mensaxes de conversa ou invitacións a partidas deste usuario.<br>Está seguro de que quere poñer a <b>%1</b> na súa lista de xogadores ignorados? - - + + connected players: %1 Xogadores conectados: %1 @@ -1573,1316 +1573,1345 @@ Para convidar a outros xogadores, prema co botón secundario a súa entrada na l - - + + Time Tempos - + Show player stats Estatísticas - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players Xogadores conectados - + hands mans - + minutes minutos - + double blinds dobre - + manual blinds order serie predefinida - + Server Error Erro do servidor - + You should not kick yourself from this game! Non debería expulsarse a si mesmo da partida! - + search for player ... Buscar un xogador… - + Chat is only available to registered players. Só os xogadores rexistrados poden participar a conversa. - + Invite player ... Convidar… - + Ignore player ... Ignorar… - + %1 is playing in "%2". %1 está a xogar en «%2». - + %1 is not playing at the moment. %1 non está a xogar. - - + + PokerTH - Info Message PokerTH — Mensaxe de información - - + + + + PokerTH - Question PokerTH — Pregunta - + Afghanistan Afganistán - + ALand Islands Åland - + Albania Albania - + Algeria Alxeria - + American Samoa Samoa Americana - + Andorra Andorra - + Angola Angola - + Anguilla Anguila - + Antarctica Antártida - + Antigua And Barbuda Antiga e Barbuda - + Argentina Arxentina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Acerbaixán - + Bahamas Bahamas - + Bahrain Bahrein - + Bangladesh Bangladesh - + Barbados Barbados - + Belarus Bielorrusia - + Belgium Bélxica - + Belize Belice - + Benin Benín - + Bermuda Bermuda - + Bhutan Bután - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia e Hercegovina - + Botswana Botsuana - + Bouvet Island Illa Bouvet - + Brazil Brasil - + British Indian Ocean Territory Territorio Británico do Océano Índico - + Brunei Darussalam Brunei - + Bulgaria Bulgaria - + Burkina Faso Burquina Faso - + Burundi Burundi - + Cambodia Camboxa - + Cameroon Camerún - + Canada Canadá - + Cape Verde Cabo Verde - + Cayman Islands Illas Caimán - + Central African Republic República Centroafricana - + Chad Chad - + Chile Chile - + China China - + Christmas Island Illa de Nadal - + Cocos (Keeling) Islands Illas Cocos (Keeling) - + Colombia Colombia - + Comoros Comores - + Congo Congo - + Congo, The Democratic Republic Of The República democrática do Congo - + Cook Islands Illas Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Costa do Marfil - + Croatia Croacia - + Cuba Cuba - + Cyprus Chipre - + Czech Republic República Checa - + Denmark Dinamarca - + Djibouti Xibutí - + Dominica Dominica - + Dominican Republic República Dominicana - + Ecuador Ecuador - + Egypt Exipto - + El Salvador O Salvador - + Equatorial Guinea Guinea Ecuatorial - + Eritrea Eritrea - + Estonia Estonia - + Ethiopia Etiopía - + Falkland Islands (Malvinas) Illas Malvinas (Falkland) - + Faroe Islands Illas Feroe - + Fiji Fidxi - + Finland Finlandia - + France Francia - + French Guiana Güiana Francesa - + French Polynesia Polinesia Francesa - + French Southern Territories Terras Austrais e Antárticas Francesas - + Gabon Gabón - + Gambia Gambia - + Georgia Xeorxia - + Germany Alemaña - + Ghana Gana - + Gibraltar Xibraltar - + Greece Grecia - + Greenland Grenlandia - + Grenada Granada - + Guadeloupe Guadalupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bisau - + Guyana Güiana - + Haiti Haití - + Heard Island And Mcdonald Islands Illa Heard e Illas McDonald - + Holy See (Vatican City State) Cidade do Vaticano - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Hungría - + Iceland Islandia - + India India - + Indonesia Indonesia - + Iran, Islamic Republic Of Irán - + Iraq Iraq - + Ireland Irlanda - + Isle Of Man Illa de Man - + Israel Israel - + Italy Italia - + Jamaica Xamaica - + Japan Xapón - + Jersey Xersei - + Jordan Xordania - + Kazakhstan Casaquistán - + Kenya Quenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Corea do Norte - + Korea, Republic Of Corea do Sur - + Kuwait Kuwait - + Kyrgyzstan Quirguicistán - + Lao People'S Democratic Republic Laos - + Latvia Letonia - + Lebanon Líbano - + Lesotho Lesoto - + Liberia Liberia - + Libyan Arab Jamahiriya Libia - + Liechtenstein Liechtenstein - + Lithuania Lituania - + Luxembourg Luxemburgo - + Macao Macau - + Macedonia, The Former Yugoslav Republic Of Macedonia - + Madagascar Madagascar - + Malawi Malaui - + Malaysia Malaisia - + Maldives Maldivas - + Mali Malí - + Malta Malta - + Marshall Islands Illas Marshall - + Martinique Martinica - + Mauritania Mauritania - + Mauritius Mauricio - + Mayotte Mayotte - + Mexico México - + Micronesia, Federated States Of Micronesia - + Moldova, Republic Of Moldavia - + Monaco Mónaco - + Mongolia Mongolia - + Montserrat Montserrat - + Morocco Marrocos - + Mozambique Mozambique - + Myanmar Birmania - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Países Baixos - + Netherlands Antilles Antillas Neerlandesas - + New Caledonia Nova Caledonia - + New Zealand Nova Zelandia - + Nicaragua Nicaragua - + Niger Níxer - + Nigeria Nixeria - + Niue Niue - + Norfolk Island Illa Norfolk - + Northern Mariana Islands Marianas do Norte - + Norway Noruega - + Oman Omán - + Pakistan Paquistán - + Palau Palau - + Palestinian Territory, Occupied Territorios palestinos ocupados - + Panama Panamá - + Papua New Guinea Papúa Nova Guinea - + Paraguay Paraguai - + Peru Perú - + Philippines Filipinas - + Pitcairn Pitcairn - + Poland Polonia - + Portugal Portugal - + Puerto Rico Porto Rico - + Qatar Qatar - + Reunion Reunión - + Romania Romanía - + Russian Federation Rusia - + Rwanda Ruanda - + Saint Helena Santa Helena - + Saint Kitts And Nevis Saint Kitts e Nevis - + Saint Lucia Santa Lucía - + Saint Pierre And Miquelon San Pedro e Miguelón - + Saint Vincent And The Grenadines San Vicente e Granadinas - + Samoa Samoa - + San Marino San Mariño - + Sao Tome And Principe San Tomé e Príncipe - + Saudi Arabia Arabia Saudí - + Senegal Senegal - + Serbia And Montenegro Serbia e Montenegro - + Seychelles Seixeles - + Sierra Leone Serra Leoa - + Singapore Singapur - + Slovakia Eslovaquia - + Slovenia Eslovenia - + Solomon Islands Illas Salomón - + Somalia Somalia - + South Africa Sudáfrica - + South Georgia And The South Sandwich Islands Illas Xeorxias do Sur e Sandwich do Sur - + Spain España - + Sri Lanka Sri Lanka - + Sudan Sudán - + Suriname Suriname - + Svalbard And Jan Mayen Svalbard e Jan Mayen - + Swaziland Suacilandia - + Sweden Suecia - + Switzerland Suíza - + Syrian Arab Republic Siria - + Taiwan, Province Of China Taiwán - + Tajikistan Taxiquistán - + Tanzania, United Republic Of Tanzania - + Thailand Tailandia - + Timor-Leste Timor-Leste - + Togo Togo - + Tokelau Toquelau - + Tonga Tonga - + Trinidad And Tobago Trindade e Tobago - + Tunisia Tunisia - + Turkey Turquía - + Turkmenistan Turcomenistán - + Turks And Caicos Islands Turks e Caicos - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ucraína - + United Arab Emirates Emiratos Árabes Unidos - + United Kingdom Reino Unido - + United States Estados Unidos de América - + United States Minor Outlying Islands Illas ultramariñas dos Estados Unidos de América - + Uruguay Uruguai - + Uzbekistan Usbequistán - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Vietnam - + Virgin Islands, British Illas Virxes Británicas - + Virgin Islands, U.S. Illas Virxes Estadounidenses - + Wallis And Futuna Wallis-e-Futuna - + Western Sahara Sáhara Occidental - + Yemen Iemen - + Zambia Zambia - + Zimbabwe Cimbabue - + Are you sure you want to report the game name: "%1" as inappropriate? Está seguro de que quere informar de que o nome da partida «%1» non é axeitado? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -3847,7 +3876,7 @@ Please enter an valid picture! - + Factory Settings Configuración predeterminada @@ -3965,7 +3994,13 @@ Please enter an valid picture! Sons para notificacións de rede. Por exemplo: «uniuse un xogador». - + + + Server Password: + + + + OK Aceptar @@ -4112,14 +4147,14 @@ Please enter an valid picture! Límite de tempo para cada xogador: - - + + Reset all settings to default ... Restaurar a configuración predeterminada - - + + Note: You can not reset all settings to default during a running game! Nota: non pode restaurar a configuración predeterminada durante unha partida. @@ -4139,41 +4174,41 @@ Please enter an valid picture! - + - + Server Port: Porto: - + - + Use SCTP Usar SCTP. - + - + Use IPv6 Usar IPv6. - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://gl.wikipedia.org/wiki/Protocolo_IPv6">Que é?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Que é?</a> @@ -4183,7 +4218,7 @@ Please enter an valid picture! Configuración das partidas por internet - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4194,61 +4229,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: para algunhas </span><span style=" font-weight:600; font-style:italic;">opcións predeterminadas das partidas</span><span style=" font-style:italic;">, coma o «límite de xogadores», os «cartos iniciais» ou a «aposta obrigatoria inicial pequena», úsanse os valores </span><span style=" font-weight:600; font-style:italic;">da configuración das partidas de rede.</span></p></body></html> - - + + Server Address: Enderezo: - - + + Use password for private game: Contrasinal para as partidas privadas: - - + + Computer Engine Motor da intelixencia artificial - - + + Opponent 6: Rival 6 - - + + Opponent 5: Rival 5 - - + + Opponent 4: Rival 4 - - + + Opponent 3: Rival 3 - - + + Opponent 2: Rival 2 - - + + Opponent 1: Rival 1 - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4259,50 +4294,50 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: as dimensións coas que conseguirá unha maior calidade de imaxe son </span><span style=" font-weight:600; font-style:italic;">50×50</span>.</p></body></html> - - + + Enable/Disable Logging Levar un historial. - - + + Log File Directory: Cartafol do historial: - - + + Write log after every: Actualizar despois de cada: - - + + action (high frequent disc access) acción (uso frecuente do disco) - - + + hand (medium disc access) man (uso medio do disco) - - + + game (low disc access) partida (uso raro do disco) - + Log Messages Historial - + Player Nicks/Avatars Nomes e imaxes de usuario @@ -4341,29 +4376,29 @@ p, li { white-space: pre-wrap; } Configurar manualmente o servidor: - + Human Player: Xogador: - + (This nick will also be used for the online game login) Nota: este nome usarase tamén ao xogar por internet. - + Note: Best avatar quality with image ratio like width=50, height=50. Nota: as dimensións coas que conseguirá unha maior calidade de imaxe son 50×50. - - + + Store log files for: Eliminar o historial pasados: - - + + Day(s) días @@ -4403,8 +4438,8 @@ p, li { white-space: pre-wrap; } Nota: as dimensións coas que conseguirá unha maior calidade de imaxe son 48×76. - - + + Avatar Server: Servidor de imaxes: @@ -4505,84 +4540,84 @@ p, li { white-space: pre-wrap; } Servidor - - + + Game Partida - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Nota: para algunhas opcións predeterminadas das partidas, coma o «límite de xogadores», os «cartos iniciais» ou a «aposta obrigatoria inicial pequena», úsanse os valores da configuración das partidas de rede. - - + + Default game name: Nome predeterminado: - - + + Default game type: Tipo predeterminado: - - + + Standard Estándar - - + + Registered players only Para xogadores rexistrados - - + + Invited players only Acceso só con invitación - - + + Ranking game Partida de puntuación - - + + Show lobby chat Amosar a conversa da sala de espera. - - + + Automatically leave the table after the game finished Saír da partida automaticamente cando remate. - - + + Ignored Players Xogadores ignorados - - + + Player Xogador - - + + Remove Player Eliminar o xogador - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4595,20 +4630,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Xogador<br /><span style=" font-style:italic;">Nota: este nome usarase tamén ao xogar por internet como usuario rexistrado.</span></p></body></html> - - + + Opponent 7: Rival 7 - - + + Opponent 8: Rival 8 - - + + Opponent 9: Rival 9 @@ -4616,69 +4651,69 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Erro de configuración - + The entered flipside picture doesn't exist. Please enter an valid picture! A imaxe de usuario indicada non existe. Escolla unha existente. - - + + The log file directory doesn't exist. Please select an valid directory! O cartafol do historial non existe. Escolla un directorio existente. - + Language Changed Cambio de idioma - + You have changed application language to %1. Please restart PokerTH to load new language! Cambiou o idioma do aplicativo a %1. Os cambios xurdirán efecto en canto reinicie PokerTH. - + Select your flipside picture Escolla unha imaxe de usuario - + Images (*.png *.jpg *.gif) Imaxes (*.png *.jpg *.gif) - + Open Directory Abrir o cartafol - - + + Blinds Error Erro das apostas obrigatorias - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. O primeiro elemento da lista de apostas obrigatorias predefinidas é menor que a aposta obrigatoria inicial pequena actual. O valor da aposta obrigatoria pasará a ser o valor mínimo permitido. - + The entered server list address is not a valid URL. Please enter a valid server list address! O enderezo da lista de servidores non é un enderezo URL correcto. Escriba un enderezo correcto para a lista de servidores. @@ -4735,232 +4770,242 @@ Please enter a valid server list address! + Galician + + + + German Alemán - + Greek Grego - + Hungarian Húngaro - + Italian Italiano - + Japanese Xaponés - + Lithuania Lituano - + Norwegian Noruego - + Polish Polaco - + Portuguese-Brazilian Portugués do Brasil - + Portuguese-Portuguese Portugués - + Russian Ruso - + Scottish Gaelic Gaélico escocés - + Slovak Eslovaco - + Spanish Castelán - + Swedish Sueco - + Tamil Támil - + Turkish Turco - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! Non pode usar nomes repetidos para os rivais. - + Settings Information Información da configuración - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Cambiou o cartafol do historial. Os cambios xurdirán efecto en canto reinicie PokerTH. - - + + Maintainer Name Nome do mantedor - - + + Maintainer EMail Enderezo do mantedor - - + + Create Date Data de creación - + Windows Behaviour Comportamento das xanelas - + scaleable flexíbel - + fixed fixo - + Minimum Size Tamaño mínimo - + Maximum Size Tamaño máximo - + Fixed Size Tamaño fixo - + State Estado - + Please select your game table style Escolla un estilo para o taboleiro - + PokerTH game table styles (*.xml) Estilos de taboleiro de PokerTH (*.xml) - + Game Table Style Error Erro do estilo de taboleiro - + Selected game table style file is already in the list. Please select another one to add! O ficheiro de estilo de taboleiro seleccionado xa está na lista. - + Game Table Style File Error Erro do ficheiro de estilo de taboleiro - + Could not load game table style file correctly. Style will not be placed into list! Non foi posíbel cargar o ficheiro de estilo de taboleiro. O estilo non aparecerá na lista. - + Please select your card deck style Escolla un estilo para a baralla - + PokerTH card deck styles (*.xml) Estilos de baralla de PokerTH (*.xml) - + Card Deck Style Error Erro do estilo de baralla - + Selected card deck style file is already in the list. Please select another one to add! O ficheiro de estilo de baralla seleccionado xa está na lista. - + Card Deck Style File Error Erro do ficheiro de estilo de baralla - + Could not load card deck style file correctly. Style will not be placed into list! Non foi posíbel cargar o ficheiro de estilo de baralla. O estilo non aparecerá na lista. - + PokerTH - Settings PokerTH — Configuración - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Atención: isto eliminará toda a configuración persoal, e pechará PokerTH. Está seguro de que quere restaurar a configuración predeterminada? @@ -5406,35 +5451,66 @@ Please reenter the password and try again. O contrasinal para unirse á partida non é correcto. Escriba de novo o contrasinal e vólvao intentar. - + The avatar report was accepted by the server. Thank you. O servidor aceptou o informe sobre a imaxe do usuario. Grazas por colaborar. - + This avatar was already reported by another player. Xa outro usuario informara sobre esta imaxe de usuario. - + An error occurred while reporting the avatar. Produciuse un erro ao informar sobre a imaxe do usuario. - + The game name report was accepted by the server. Thank you. O servidor aceptou o informe sobre o nome da partida. Grazas por colaborar. - + This game name was already reported by another player. Xa outro usuario informara sobre o nome desta partida. - + An error occurred while reporting the game name. Produciuse un erro ao informar sobre o nome da partida. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + The password is too long. Please choose another one. @@ -5609,7 +5685,7 @@ Please reenter the password and try again. - + Server Message Mensaxe do servidor diff --git a/ts/pokerth_gr.ts b/ts/pokerth_gr.ts index 36d4d167..4ebdbb4e 100644 --- a/ts/pokerth_gr.ts +++ b/ts/pokerth_gr.ts @@ -1549,46 +1549,46 @@ p, li { white-space: pre-wrap; } %1's game - + Joining a private Game Είσοδος σε πριβέ Παιχνίδι - + You are about to join a private game. Please enter the password! Επιχειρείτε να εισέλθετε σε ένα πριβέ παιχνίδι. Παρακαλώ δώστε τον κωδικό! - + open ανοιχτό - - - - + + + + Game Info Πληροφορίες Παιχνιδιού - - + + Game Παιχνίδι - - + + Players Παίχτες - - + + State Κατάσταση @@ -1598,15 +1598,15 @@ p, li { white-space: pre-wrap; } - - + + P - - + + Available Players Διαθέσιμοι Παίχτες @@ -1626,47 +1626,47 @@ p, li { white-space: pre-wrap; } - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - + Connected players - max. %1 - - + + T @@ -1682,98 +1682,114 @@ p, li { white-space: pre-wrap; } - - + + Time - + Show player stats - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players - Max. %1 - + running σε εξέλιξη - - + + running games: %1 παιχνίδια σε εξέλιξη: %1 - - + + open games: %1 Ανοιχτά παιχνίδια: %1 - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -1782,1310 +1798,1323 @@ Feel free to invite other players by right-clicking on their nick in the availab Παίχτες στο chat: %1 - - + + connected players: %1 Συνδεδεμένοι παίχτες: %1 - - + + Connected players - + hands μοιρασιές - + minutes λεπτά - + double blinds διπλά blinds - + manual blinds order Σειρά χειροκίνητων blinds - + Server Error Πρόβλημα στον Server - + You should not kick yourself from this game! Δεν χρειάζεται να διώξεις τον εαυτό σου απ' το παιχνίδι! - + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -4744,7 +4773,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings @@ -4862,7 +4891,7 @@ p, li { white-space: pre-wrap; } Αναπαραγωγή ειδοποιήσεων σε παιχνίδι δικτύου/internet, όπως "παίχτης εισήλθε στο παιχνίδι" - + OK @@ -5007,14 +5036,14 @@ p, li { white-space: pre-wrap; } Διαγραφή - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5043,46 +5072,48 @@ p, li { white-space: pre-wrap; } Επιλογές Server Δικτύου + + Server Password: - Server Password: + Server Password: - + - + Server Port: Server Port: - + - + Use SCTP Use SCTP - + - + Use IPv6 Use IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Τί είναι αυτό;</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Τί είναι αυτό;</a> @@ -5092,7 +5123,7 @@ p, li { white-space: pre-wrap; } Επιλογές Παιχνιδιού στο Internet - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5107,14 +5138,14 @@ p, li { white-space: pre-wrap; } Επιλογές Internet Server (Dedicated Server) - - + + Server Address: Server Address: - - + + Use password for private game: Κωδικός για πριβέ παιχνίδι: @@ -5143,49 +5174,49 @@ p, li { white-space: pre-wrap; } Ψευδώνυμο Παιχτών - - + + Computer Engine Computer Engine - - + + Opponent 6: Αντίπαλος 6: - - + + Opponent 5: Αντίπαλος 5: - - + + Opponent 4: Αντίπαλος 4: - - + + Opponent 3: Αντίπαλος 3: - - + + Opponent 2: Αντίπαλος 2: - - + + Opponent 1: Αντίπαλος 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5196,13 +5227,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Σημείωση: Η καλύτερη ποιότητα εικόνας είναι αυτή με ratio: </span><span style=" font-weight:600; font-style:italic;">width=50, height=50.</span></p></body></html> - + Human Player: Παίκτης: - - + + Enable/Disable Logging Ενεργοποίηση/Απενεργοποίηση Logging @@ -5215,14 +5246,14 @@ p, li { white-space: pre-wrap; } Μέρα(Μέρες) - - + + Log File Directory: Διεύθυνση Αρχείου Log: - - + + Write log after every: Κράτα log σε κάθε: @@ -5232,32 +5263,32 @@ p, li { white-space: pre-wrap; } - - + + action (high frequent disc access) ενέργεια (πολύ συχνή πρόσβαση στο δίσκο) - - + + hand (medium disc access) μοίρασμα (μέτρια πρόσβαση στο δίσκο) - - + + game (low disc access) παιχνίδι (χαμηλή πρόσβαση στο δίσκο) - + Log Messages Μηνύματα Log - + Player Nicks/Avatars Ψευδώνυμα/Εικόνα Παίχτη @@ -5300,24 +5331,24 @@ p, li { white-space: pre-wrap; } - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -5356,8 +5387,8 @@ p, li { white-space: pre-wrap; } Κωδικός: - - + + Avatar Server: @@ -5443,84 +5474,84 @@ p, li { white-space: pre-wrap; } - - + + Game Παιχνίδι - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - - Default game name: - - - - + - Default game type: + Default game name: + Default game type: + + + + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5529,14 +5560,14 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Αντίπαλος 1: {7:?} - - + + Opponent 8: Αντίπαλος 1: {8:?} @@ -5545,8 +5576,8 @@ p, li { white-space: pre-wrap; } Αντίπαλος 1: {10:?} - - + + Opponent 9: Αντίπαλος 1: {10:?} {9:?} @@ -5569,22 +5600,22 @@ p, li { white-space: pre-wrap; } French - + German German - + Hungarian Hungarian - + Italian Italian - + Norwegian Norwegian @@ -5593,85 +5624,85 @@ p, li { white-space: pre-wrap; } Portuguese - + Russian Russian - + Slovak Slovak - + Spanish Spanish - + Turkish Turkish - - - - - + + + + + Settings Error Λάθος Επιλογές - + The entered flipside picture doesn't exist. Please enter an valid picture! Η επιλεγμένη εικόνα για την τράπουλα δεν υπάρχει. Παρακαλώ επιλέξτε μια σωστή εικόνα! - - + + The log file directory doesn't exist. Please select an valid directory! Η διεύθυνση του αρχείου log δεν υπάρχει. Παρακαλώ επιλέξτε μια σωστή διεύθυνση! - + Language Changed Η γλώσσα άλλαξε - + You have changed application language to %1. Please restart PokerTH to load new language! Έχετε επιλέξει την γλώσσα %1. Παρακαλώ επανεκκινήστε το PokerTH για να "φορτωθεί" η νέα γλώσσα! - + Select your flipside picture Επιλέξτε την εικόνα της τράπουλας - + Images (*.png *.jpg *.gif) Εικόνες (*.png *.jpg *.gif) - + Open Directory Άνοιγμα φακέλου - - + + Blinds Error Λάθος Blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5715,197 +5746,207 @@ This first-small-blind-value will be set to maximum allowed value. - + + Galician + + + + Greek - + Japanese - + Lithuania - + Polish Polish - + Portuguese-Brazilian - + Portuguese-Portuguese - + Scottish Gaelic - + Swedish - + Tamil - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + The entered server list address is not a valid URL. Please enter a valid server list address! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State Κατάσταση - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6371,17 +6412,17 @@ Please reenter the password and try again. Παρακαλώ δώστε τον κωδικό και ξαναπροσπαθήστε. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. @@ -6569,25 +6610,56 @@ Please choose a different name. - + Server Message - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + PokerTH %1 diff --git a/ts/pokerth_hu.ts b/ts/pokerth_hu.ts index 5bbab91a..bb71e201 100644 --- a/ts/pokerth_hu.ts +++ b/ts/pokerth_hu.ts @@ -2085,47 +2085,47 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info Játék infó - + Server Error Kiszolgáló hiba - + You should not kick yourself from this game! Nem tudod saját magadat kirúgni a játékból! - + Joining a private Game Csatlakozás privát játékhoz - - + + Game Játék - - + + Players Játékosok - - + + State Állapot @@ -2134,43 +2134,43 @@ p, li { white-space: pre-wrap; } Privát - + You are about to join a private game. Please enter the password! Egy privát játékot választottál. A csatlakozáshoz add meg a jelszót! - + running fut - + open nyitott - - + + Connected players Csatlakozott játékosok - + hands osztás - + minutes perc - + double blinds vakok duplázása - + manual blinds order egyéni vaksorrend @@ -2185,22 +2185,22 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Time - - + + Available Players Elérhető játékosok @@ -2221,1273 +2221,1300 @@ p, li { white-space: pre-wrap; } - + Show player stats - + + + Admin action ... + + + + + Total kickban + + + + Report inappropriate game name - - - + + Close game + + + + + + Standard Normál - - - + + + Registered players only Csak regisztrált játékosok - - - + + + Invited players only Csak meghívott játékosok - - - + + + Ranking game Ranglistás játék - + Connected players - max. %1 Csatlakozott játékosok – max. %1 - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania litván - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + - - + + T T @@ -3502,82 +3529,82 @@ p, li { white-space: pre-wrap; } - - - + + + sec (action) - - - + + + sec (hand delay) - - + + Connected players - Max. %1 Csatlakozott játékosok – Max. %1 - - + + running games: %1 futó játékok: %1 - - + + open games: %1 nyitott játékok: %1 - + Invite %1 %1 meghívása - + Ignore %1 %1 tiltása - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 meghívta %1 nevű játékost a(z) %2 játékba.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 elutasította a meghívást a(z) %2 játékba.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 nem tud csatlakozni a(z) %2 játékba, mert elfoglalt.</span> - - + + The game will start in<br><b>%1</b> seconds. A játék <br><b>%1</b> másodperc múlva indul. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Csatlakoztál egy „csak meghívásos” játékhoz. Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gombbal és meghívás. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? <b>%1</b> meghívott a(z) <b>%2</b> nevű játékba.<br>Szeretnél csatlakozni? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Többé nem fogod megkapni az üzeneteket és a játék meghívásokat ettől a felhasználótól. <br> Biztosan tiltani szeretnéd <b>%1</b> nevű felhasználót? @@ -3586,50 +3613,52 @@ Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gomb csevegő játékosok: %1 - - + + connected players: %1 csatlakozott játékosok: %1 - + search for player ... játékos keresése … - + Chat is only available to registered players. A csevegés csak regisztrált játékosoknak érhető el. - + Invite player ... Játékos meghívása … - + Ignore player ... Játékos tiltása … - + %1 is playing in "%2". %1 a következő szobában játszik: %2. - + %1 is not playing at the moment. %1 jelenleg nem játszik. - - + + PokerTH - Info Message PokerTH – Információk - - + + + + PokerTH - Question PokerTH – Kérdés @@ -4873,66 +4902,68 @@ p, li { white-space: pre-wrap; } - + - + Server Port: Kiszolgáló port: - + - + Use IPv6 IPv6 használata + + Server Password: - Kiszolgáló jelszó: + Kiszolgáló jelszó: Network Game Default Settings Hálózati játék alapértelmezett beállításai - - + + Computer Engine Gépi ellenfelek - - + + Opponent 5: Ellenfél 5: - - + + Opponent 3: Ellenfél 3: - - + + Opponent 2: Ellenfél 2: - - + + Opponent 1: Ellenfél 1: - - + + Opponent 4: Ellenfél 4: - + Human Player: Emberi játékos: @@ -4945,15 +4976,15 @@ p, li { white-space: pre-wrap; } napig - - + + Log File Directory: Naplófájl: - + Log Messages Naplózott üzenetek @@ -5044,8 +5075,8 @@ p, li { white-space: pre-wrap; } Program verzió (gépi ellenfeleké): - - + + Enable/Disable Logging Naplózás engedélyezése/tiltása @@ -5054,8 +5085,8 @@ p, li { white-space: pre-wrap; } Naplófájl tárolása - - + + Write log after every: Naplózás minden esemény után: @@ -5077,25 +5108,25 @@ p, li { white-space: pre-wrap; } - + - + Use SCTP SCTP használata - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Mi ez?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Mi ez?</a> @@ -5140,31 +5171,31 @@ Szélesség = 50 kpt, magasság = 50 kpt.</span></p></body>< idő (mp.): - - + + Opponent 6: Ellenfél 6: - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + action (high frequent disc access) Akció (magas lemezhasználat) - - + + hand (medium disc access) Kör (közepes lemezhasználat) - - + + game (low disc access) Játék (alacsony lemezhasználat) @@ -5184,7 +5215,7 @@ Szélesség = 50 kpt, magasság = 50 kpt.</span></p></body>< - + Factory Settings @@ -5260,19 +5291,19 @@ p, li { white-space: pre-wrap; } Kiszolgáló - - + + Server Address: Kiszolgáló címe: - - + + Game Játék - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5280,56 +5311,56 @@ p, li { white-space: pre-wrap; } - - + + Default game name: Alapértelmezett játéknév: - - + + Default game type: Alapértelmezett játéktípus: - - + + Standard Normál - - + + Registered players only Csak regisztrált játékosok - - + + Invited players only Csak meghívott játékosok - - + + Ranking game Ranglistás játék - - + + Use password for private game: Jelszó privát játékhoz: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5527,42 +5558,42 @@ p, li { white-space: pre-wrap; } Figyelmeztető hangok hálózati/internetes játék alatt (pl. „játékos csatlakozott”) - - + + Show lobby chat Társalgó csevegés megjelenítése - - + + Automatically leave the table after the game finished - - + + Ignored Players Tiltott játékosok - - + + Player Játékos - - + + Remove Player Eltávolított játékos - + OK - + Player Nicks/Avatars Játékos becenév/avatar @@ -5625,7 +5656,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Figyelem: A <span style=" font-weight:600; font-style:italic;">Hálózati játék</span> alapértelmezett beállításai kerülnek kiválasztásra </span><span style=" font-style:italic;">(pl. "Játékosok maximális száma", "Kezdő zseton", "Kis vak")</span>.</p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5651,7 +5682,7 @@ p, li { white-space: pre-wrap; } Kézi kiszolgáló beállítás - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5664,14 +5695,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Játékos neve:<br /><span style=" font-style:italic;">(Ez a becenév fog mejelenni az internetes játéknál is)</span></p></body></html> - - + + Store log files for: - - + + Day(s) napig @@ -5718,8 +5749,8 @@ p, li { white-space: pre-wrap; } Jelszó: - - + + Avatar Server: Avatar kiszolgáló: @@ -5807,24 +5838,24 @@ p, li { white-space: pre-wrap; } - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 7: Ellenfél 7: - - + + Opponent 8: Ellenfél 8: @@ -5833,8 +5864,8 @@ p, li { white-space: pre-wrap; } Ellenfél 6: {10:?} - - + + Opponent 9: Ellenfél 9: @@ -5842,11 +5873,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Beállítási hiba @@ -5863,7 +5894,7 @@ Please select an valid directory! Kérlek válassz egy valós mappát! - + Select your flipside picture Válaszd ki a kártya hátoldalának képét @@ -5872,24 +5903,24 @@ Kérlek válassz egy valós mappát! Képek (*.png) - + Open Directory Mappa megnyitása - + Images (*.png *.jpg *.gif) Képek (*.png *.jpg *.gif) - - + + Blinds Error Hiba a vaktétekben - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5927,12 +5958,12 @@ Az első kis vak a legnagyobb megengedett értékre módosul. francia - + German német - + Hungarian magyar @@ -5941,79 +5972,79 @@ Az első kis vak a legnagyobb megengedett értékre módosul. portugál - + Russian orosz - + Turkish török - + Language Changed Nyelv módosítva - + You have changed application language to %1. Please restart PokerTH to load new language! Az alkalmazás új nyelve: %1. A beállítás a PokerTH újraindítása után jut érvényre! - + Italian olasz - + Lithuania litván - + Portuguese-Brazilian portugál (brazil) - + Portuguese-Portuguese portugál - + Slovak szlovák - + Tamil tamil - + The entered flipside picture doesn't exist. Please enter an valid picture! A kért kártya hátoldal kép nem létezik. Kérlek válassz egy valós képet! - - + + The log file directory doesn't exist. Please select an valid directory! A naplófájl mappája nem elérhető. Kérlek válassz egy valós mappát! - + Norwegian norvég - + Spanish spanyol @@ -6023,7 +6054,7 @@ Kérlek válassz egy valós mappát! bolgár - + Polish lengyel @@ -6033,17 +6064,17 @@ Kérlek válassz egy valós mappát! kínai - + Greek görög - + Swedish svéd - + The entered server list address is not a valid URL. Please enter a valid server list address! A megadott kiszolgálólista URL-je érvénytelen. @@ -6060,148 +6091,158 @@ Kérlek adj meg egy valós kiszolgálólista címet! dán - + + Galician + + + + Japanese - + Scottish Gaelic - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Készítette - - + + Maintainer EMail E-mail cím - - + + Create Date Dátum - + Windows Behaviour Ablak viselkedése - + scaleable alkalmazkodó - + fixed rögzített - + Minimum Size Legkisebb méret - + Maximum Size Legnagyobb méret - + Fixed Size Rögzített méret - + State Állapot - + Please select your game table style Válaszd ki a pókerasztal stílusát - + PokerTH game table styles (*.xml) PokerTH pókerasztal stílus (*.xml) - + Game Table Style Error Pókerasztal stílus hiba - + Selected game table style file is already in the list. Please select another one to add! A kiválasztott asztal stílus már szerepel a listán Válassz másikat! - + Game Table Style File Error Pókerasztal stílus fájl hiba - + Could not load game table style file correctly. Style will not be placed into list! Nem sikerült az asztal stílus betöltése. A stílus nem kerül a listára! - + Please select your card deck style Válaszd ki a kártyapakli stílusát - + PokerTH card deck styles (*.xml) PokerTH kártyapakli stílus (*.xml) - + Card Deck Style Error Kártyapakli stílus hiba - + Selected card deck style file is already in the list. Please select another one to add! A kiválasztott pakli stílus már szerepel a listán Válassz másikat! - + Card Deck Style File Error Kártyapakli stílus fájl hiba - + Could not load card deck style file correctly. Style will not be placed into list! Nem sikerült a pakli stílus betöltése. @@ -6224,12 +6265,12 @@ A stílus nem kerül a listára! PokerTH SQL napló (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6636,20 +6677,51 @@ Ha a kiszolgáló NAT router mögött van, akkor bizonyosodj meg róla hogy a po Belső hálózati hiba: sikertelen "küldés". - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + Connection was closed by the server. A kiszolgáló megszakította a kapcsolatot. @@ -6744,17 +6816,17 @@ Ellenőrizd a felhasználónevet és a jelszót. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. @@ -6959,7 +7031,7 @@ Kérlek válassz egy másik nevet. - + Server Message Kiszolgáló üzenet diff --git a/ts/pokerth_it.ts b/ts/pokerth_it.ts index 03d4bcc2..24b5cf1c 100644 --- a/ts/pokerth_it.ts +++ b/ts/pokerth_it.ts @@ -3566,13 +3566,13 @@ p, li { white-space: pre-wrap; } Partita di %1 - - + + connected players: %1 giocatori connessi: %1 - + double blinds raddoppia blind @@ -3581,51 +3581,51 @@ p, li { white-space: pre-wrap; } partita - - - - + + + + Game Info Informazioni partita - + hands mani - + Joining a private Game Accesso a partita privata in corso - + manual blinds order ordine manuale dei blind - + minutes minuti - - + + Game Partita - - + + Players Giocatori - - + + State Stato @@ -3634,13 +3634,13 @@ p, li { white-space: pre-wrap; } Privato - + open aperta - - + + open games: %1 partite aperte: %1 @@ -3649,7 +3649,7 @@ p, li { white-space: pre-wrap; } giocatori in chat: %1 - + running iniziata @@ -3659,22 +3659,22 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Time Tempo - - + + Available Players Giocatori Disponibili @@ -3694,47 +3694,63 @@ p, li { white-space: pre-wrap; } Dettagli giocatore ... - + + + Admin action ... + + + + + Total kickban + + + + Report inappropriate game name Segnala nome di partita offensivo - - - + + Close game + + + + + + Standard Standard - - - + + + Registered players only Solo utenti registrati - - - + + + Invited players only Solo utenti invitati - - - + + + Ranking game Valida per la classifica - + Connected players - max. %1 Giocatori connessi - max. %1 - - + + T T @@ -3745,7 +3761,7 @@ p, li { white-space: pre-wrap; } - + Show player stats Mostra statistiche giocatore @@ -3758,1303 +3774,1314 @@ p, li { white-space: pre-wrap; } sec (ritardo mano) - - + + Connected players - Max. %1 Giocatori connessi - Max. %1 - - + + running games: %1 partite in corso: %1 - - + + Connected players Giocatori connessi - + Server Error Errore del server - + search for player ... Ricerca giocatore ... - + Chat is only available to registered players. La chat è disponibile solamente ai giocatori registrati. - + Invite %1 Invita %1 - + Ignore %1 Ignora %1 - + %1 is playing in "%2". %1 sta giocando in "%2". - + %1 is not playing at the moment. %1 non sta giocando in questo momento. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 è stato invitato a %2 da %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 ha rifiutato l'invito a %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 non può partecipare %2 perchè risulta occupato.</span> - - + + The game will start in<br><b>%1</b> seconds. La partita inizierà tra<br><b>%1</b> secondi. - + Afghanistan - + ALand Islands Isole ALand - + Albania - + Algeria - + American Samoa Samoa Americane - + Andorra - + Angola - + Anguilla - + Antarctica Antartide - + Antigua And Barbuda Antigua e Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus Bielorussia - + Belgium Belgio - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina Bosnia Herzegovina - + Botswana - + Bouvet Island Isola Bouvet - + Brazil Brasile - + British Indian Ocean Territory Territorio britannico dell'oceano Indiano - + Brunei Darussalam Sultanato del Brunei - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia Cambogia - + Cameroon Camerun - + Canada - + Cape Verde Capo Verde - + Cayman Islands Isole Cayman - + Central African Republic Repubblica Centrafricana - + Chad Ciad - + Chile Cile - + China Cina - + Christmas Island Isola di Natale - + Cocos (Keeling) Islands Isole Cocos e Keeling - + Colombia - + Comoros Comore - + Congo - + Congo, The Democratic Republic Of The Repubblica Democratica del Congo - + Cook Islands Isole Cook - + Costa Rica - + Cote D'Ivoire Costa D'Avorio - + Croatia Croazia - + Cuba - + Cyprus Cipro - + Czech Republic Repubblica Ceca - + Denmark Danimarca - + Djibouti Gibuti - + Dominica Dominica - + Dominican Republic Repubblica Dominicana - + Ecuador - + Egypt Egitto - + El Salvador - + Equatorial Guinea Guinea Equatoriale - + Eritrea - + Estonia - + Ethiopia Etiopia - + Falkland Islands (Malvinas) Isole Falkland (Malvine) - + Faroe Islands Isole Faroe - + Fiji - + Finland Finlandia - + France Francia - + French Guiana Guiana Francese - + French Polynesia Polinesia Francese - + French Southern Territories Territori Francesi del Sud - + Gabon - + Gambia - + Georgia - + Germany Germania - + Ghana - + Gibraltar Gibilterra - + Greece Grecia - + Greenland Groenlandia - + Grenada - + Guadeloupe Guadalupa - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands Isole Heard e McDonald - + Holy See (Vatican City State) Santa Sede (Città Del Vaticano) - + Honduras - + Hong Kong - + Hungary Ungheria - + Iceland Islanda - + India - + Indonesia - + Iran, Islamic Republic Of Iran - + Iraq - + Ireland Irlanda - + Isle Of Man Isola di Man - + Israel Israele - + Italy Italia - + Jamaica - + Japan Giappone - + Jersey - + Jordan Giordania - + Kazakhstan Kazakistan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of Corea del Nord - + Korea, Republic Of Corea del Sud - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic Laos - + Latvia Lettonia - + Lebanon Libano - + Lesotho - + Liberia - + Libyan Arab Jamahiriya Libia - + Liechtenstein - + Lithuania Lituania - + Luxembourg Lussemburgo - + Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia - + Madagascar - + Malawi - + Malaysia Malesia - + Maldives Maldive - + Mali - + Malta - + Marshall Islands Isole Marshall - + Martinique Martinica - + Mauritania - + Mauritius - + Mayotte - + Mexico Messico - + Micronesia, Federated States Of Micronesia - + Moldova, Republic Of Moldavia - + Monaco - + Mongolia - + Montserrat - + Morocco Marocco - + Mozambique Mozambico - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands Olanda - + Netherlands Antilles Antille Olandesi - + New Caledonia Nuova Caledonia - + New Zealand Nuova Zelanda - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island Isole Norfolk - + Northern Mariana Islands Isole Marianne Settentrionali - + Norway Norvegia - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied Palestina - + Panama - + Papua New Guinea Papua Nuova Guinea - + Paraguay - + Peru Perù - + Philippines Filippine - + Pitcairn - + Poland Polonia - + Portugal Portogallo - + Puerto Rico Porto Rico - + Qatar - + Reunion Riunione - + Romania - + Russian Federation Federazione Russa - + Rwanda Ruanda - + Saint Helena Sant'Elena - + Saint Kitts And Nevis Saint Kitts e Nevis - + Saint Lucia Santa Lucia - + Saint Pierre And Miquelon Saint-Pierre e Miquelon - + Saint Vincent And The Grenadines Saint Vincent e Grenadine - + Samoa - + San Marino - + Sao Tome And Principe Sao Tome e Principe - + Saudi Arabia Arabia Saudita - + Senegal - + Serbia And Montenegro Serbia E Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia Slovacchia - + Slovenia - + Solomon Islands Isole Salomone - + Somalia - + South Africa Sudafrica - + South Georgia And The South Sandwich Islands Georgia del Sud e isole Sandwich meridionali - + Spain Spagna - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen Svalbard e Jan Mayen - + Swaziland - + Sweden Svezia - + Switzerland Svizzera - + Syrian Arab Republic Siria - + Taiwan, Province Of China Taiwan - + Tajikistan Tagikistan - + Tanzania, United Republic Of Tanzania - + Thailand Thailandia - + Timor-Leste Timor Est - + Togo - + Tokelau Tokelau - + Tonga - + Trinidad And Tobago Trinidad e Tobago - + Tunisia - + Turkey Tuchia - + Turkmenistan - + Turks And Caicos Islands Turks e Caicos - + Tuvalu - + Uganda - + Ukraine Ucraina - + United Arab Emirates Emirati Arabi Uniti - + United Kingdom Regno Unito - + United States Stati Uniti - + United States Minor Outlying Islands Isole minori esterne degli Stati Uniti d'America - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British Isole Vergini britanniche - + Virgin Islands, U.S. Isole Vergini americane - + Wallis And Futuna Wallis e Futuna - + Western Sahara Sahara Occidentale - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Sei sicuro di voler segnalare il nome della partita: "%1" come offensivo? - + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + + + Invite player ... Invita giocatore ... @@ -5064,50 +5091,52 @@ p, li { white-space: pre-wrap; } Clicca qui per visualizzare le statistiche - - - + + + sec (action) secondi (azione) - - - + + + sec (hand delay) sec (ritardo mani) - + Ignore player ... Ignora giocatore ... - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Sei entrato in una partita "su invito". Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickname nella lista dei giocatori disponibili. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Sei stato invitato alla partita <b>%1</b> da <b>%2</b>.<br>Desideri partecipare alla partita? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Non riceverai più messaggi di chat o inviti a partite da questo utente.<br>Vuoi veramente inserire l'utente <b>%1</b> nella lista degli utenti ignorati? - - + + PokerTH - Info Message PokerTH - Informazione - - + + + + PokerTH - Question PokerTH - Domanda @@ -5117,12 +5146,12 @@ Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickna Avvio partita. Attendere prego... - + You are about to join a private game. Please enter the password! Stai per unirti ad una partita privata. Inserisci la password! - + You should not kick yourself from this game! Non puoi auto-espellerti da questa partita! @@ -6526,24 +6555,24 @@ Scegli un'immagine più piccola! 10 - - + + action (high frequent disc access) azione (elevato - accesso frequente al disco) - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://it.wikipedia.org/wiki/Ipv6">Che cos'è?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://it.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Che cos'è?</a> @@ -6568,8 +6597,8 @@ Scegli un'immagine più piccola! chat.freenode.net - - + + Computer Engine Computer @@ -6594,8 +6623,8 @@ Scegli un'immagine più piccola! Abilita Chat prepartita (server IRC) - - + + Enable/Disable Logging Ablita/Disabilita il registro @@ -6632,8 +6661,8 @@ Scegli un'immagine più piccola! Dorso delle carte - - + + game (low disc access) partita (basso - accesso ridotto al disco) @@ -6648,8 +6677,8 @@ Scegli un'immagine più piccola! Velocità di gioco per il computer: - - + + hand (medium disc access) mano (media - accesso normale al disco) @@ -6709,7 +6738,7 @@ p, li { white-space: pre-wrap; } Emetti un suono all'aumento dei blind - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -6717,7 +6746,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">N.b.: Le </span><span style=" font-weight:600; font-style:italic;">Impostazioni di gioco</span><span style=" font-style:italic;"> predefinite come "Numero massimo di giocatori", "Contante iniziale" e "Small blind" saranno usate </span><span style=" font-weight:600; font-style:italic;">nelle impostazioni del gioco in rete. </span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -6732,7 +6761,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">N.B.: Migliore qualità con un rapporto di </span><span style=" font-weight:600; font-style:italic;">larghezza=100, altezza=140.</span></p></body></html> - + Human Player: Giocatore umano: @@ -6772,15 +6801,15 @@ p, li { white-space: pre-wrap; } Impostazioni locali - - + + Log File Directory: Percorso file di registro: - + Log Messages Registro messaggi @@ -6841,7 +6870,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings Impostazioni predefinite @@ -6906,8 +6935,8 @@ p, li { white-space: pre-wrap; } Server - - + + Game Partita @@ -6924,73 +6953,73 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Note: Le </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Impostazioni</span><span style=" font-size:12pt; font-style:italic;"> predefinite di: &quot;Numero massimo di giocatori&quot;, &quot;Contante Iniziale&quot; e &quot;Small Blind&quot; saranno prese </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">dalle impostazioni delle partite in rete.</span></p></body></html> - - + + Default game name: Nome partita predefinito: - - + + Default game type: Tipo partita predefinito: - - + + Standard Standard - - + + Registered players only Solo utenti registrati - - + + Invited players only Solo utenti invitati - - + + Ranking game Valida per la classifica - - + + Show lobby chat Mostra chat - - + + Automatically leave the table after the game finished Abbandona il tavolo automaticamente non appena la partita termina - - + + Ignored Players Giocatori Ignorati - - + + Player Giocatore - - + + Remove Player Rimuovi Giocatore - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7003,43 +7032,43 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Giocatore umano:<br /><span style=" font-style:italic;">(Questo nickname sarà utilizzato anche per l'accesso alle partite online)</span></p></body></html> - - + + Opponent 1: Giocatore 1: - - + + Opponent 2: Giocatore 2: - - + + Opponent 3: Giocatore 3: - - + + Opponent 4: Giocatore 4: - - + + Opponent 5: Giocatore 5: - - + + Opponent 6: Giocatore 6: - + Note: Best avatar quality with image ratio like width=50, height=50. N.B.: Migliore qualità degli avatar con un rapporto di larghezza=50, altezza=50. @@ -7064,14 +7093,14 @@ p, li { white-space: pre-wrap; } Esporta in HTML - - + + Reset all settings to default ... Ripristina tutte le impostazioni predefinite ... - - + + Note: You can not reset all settings to default during a running game! Nota: non è possibile ripristinare le impostazioni di default durante una partita! @@ -7110,7 +7139,7 @@ p, li { white-space: pre-wrap; } Nomi dei giocatori - + Player Nicks/Avatars Nick/Avatar dei giocatori @@ -7180,20 +7209,22 @@ p, li { white-space: pre-wrap; } s - - + + Server Address: Indirizzo del server: + + Server Password: - Password del server: + Password del server: - + - + Server Port: Porta del server: @@ -7309,29 +7340,29 @@ all'inizio di ogni nuova partita - + - + Use IPv6 Utilizza IPv6 - - + + Use password for private game: Utilizza password per partita privata: - + - + Use SCTP Utilizza SCTP - - + + Write log after every: Scrivi sul file di registro ogni: @@ -7384,14 +7415,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Giocatore umano:<br /><span style=" font-style:italic;">(Questo nickname sarà utilizzato anche per l'accesso alle partite online)</span></p></body></html> - - + + Store log files for: Memorizza file di registro per: - - + + Day(s) Giorno(i) @@ -7468,7 +7499,7 @@ p, li { white-space: pre-wrap; } Utilizza un dorso personalizzato: - + OK OK @@ -7498,8 +7529,8 @@ p, li { white-space: pre-wrap; } Password: - - + + Avatar Server: Server Avatar: @@ -7573,24 +7604,24 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Scarica nuovi stili per il mazzo di carte di PokerTH ...</span></a></p></body></html> - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. N.B.: Le Impostazioni Predefinite di Gioco come "Numero Massimo di Giocatori", "Contante Iniziale" e "Small Blind" saranno utilizzate nelle impostazioni del gioco in rete. - + (This nick will also be used for the online game login) (Questo nick sarà utilizzato anche comel login delle partite online) - - + + Opponent 7: Giocatore 7: - - + + Opponent 8: Giocatore 8: @@ -7599,8 +7630,8 @@ p, li { white-space: pre-wrap; } Giocatore 10: - - + + Opponent 9: Giocatore 9: @@ -7608,8 +7639,8 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - + + Blinds Error Errore relativo ai blind @@ -7644,12 +7675,12 @@ p, li { white-space: pre-wrap; } Francese - + German Tedesco - + Hungarian Ungherese @@ -7658,17 +7689,17 @@ p, li { white-space: pre-wrap; } Immmagine (*.png) - + Images (*.png *.jpg *.gif) Immagini (*.png *.jpg *.gif) - + Italian Italiano - + Language Changed La lingua è stata cambiata @@ -7677,12 +7708,12 @@ p, li { white-space: pre-wrap; } Norvegese - + Norwegian Norvegese - + Open Directory Apri cartella @@ -7691,56 +7722,56 @@ p, li { white-space: pre-wrap; } Portoghese - + Russian Russo - + Select your flipside picture Seleziona un'immagine per il dorso delle carte - - - - - + + + + + Settings Error Errore nelle impostazioni - + Lithuania Lituano - + Portuguese-Brazilian Portoghese-Brasiliano - + Portuguese-Portuguese Portoghese-Portoghese - + Slovak Slovacco - + Spanish Spagnolo - + Tamil Tamil - + The entered flipside picture doesn't exist. Please enter an valid picture! L'immagine selezionata per il dorso delle carte non esiste. @@ -7753,8 +7784,8 @@ Please enter an valid picture! Inserite un'immagine valida! - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7763,8 +7794,8 @@ This first-small-blind-value will be set to maximum allowed value. Il valore del primo small blind verrà impostato al massimo consentito. - - + + The log file directory doesn't exist. Please select an valid directory! La cartella per il file di registro non esiste. @@ -7777,12 +7808,12 @@ Please select an valid directory! Inserite una directory valida! - + Turkish Turco - + You have changed application language to %1. Please restart PokerTH to load new language! Hai cambiato la lingua dell'applicazione in %1. @@ -7794,7 +7825,7 @@ Riavvia PokerTH per caricare la nuova lingua! Bulgaro - + Polish Polacco @@ -7804,17 +7835,17 @@ Riavvia PokerTH per caricare la nuova lingua! Cinese - + Greek Greco - + Swedish Svedese - + The entered server list address is not a valid URL. Please enter a valid server list address! L'indirizzo della lista server immesso non è un URL valido. @@ -7831,150 +7862,160 @@ Inserisci un indirizzo valido! Danese - + + Galician + + + + Japanese Giapponese - + Scottish Gaelic - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! I nomi degli avversari non sono univoci. Scegli un nome diverso per ogni Avversario! - + Settings Information Informazioni - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Hai modificato la cartella del file di registro. Occorre riavviare PokerTH per utilizzare la nuova cartella! - - + + Maintainer Name Nome responsabile - - + + Maintainer EMail E-mail responsabile - - + + Create Date Data creazione - + Windows Behaviour Comportamento finestra - + scaleable scalabile - + fixed fissa - + Minimum Size Dimensione minima - + Maximum Size Dimensione massima - + Fixed Size Dimensione fissa - + State Stato - + Please select your game table style Seleziona lo stile del tavolo da gioco - + PokerTH game table styles (*.xml) Stili tavolo da gioco di PokerTH (*.xml) - + Game Table Style Error Errore sullo stile del tavolo da gioco - + Selected game table style file is already in the list. Please select another one to add! Lo stile del tavolo da gioco selezionato è già presente nella lista. Selezionane un altro! - + Game Table Style File Error Errore sul file dello stile del tavolo da gioco - + Could not load game table style file correctly. Style will not be placed into list! Impossibile caricare correttamente il file contenente lo stile. Lo stile non verrà aggiunto alla lista! - + Please select your card deck style Seleziona lo stile del mazzo di carte - + PokerTH card deck styles (*.xml) Stili mazzo di carte di PokerTH (*.xml) - + Card Deck Style Error Errore sullo stile del mazzo di carte - + Selected card deck style file is already in the list. Please select another one to add! Lo stile del mazzo di carte selezionato è già presente nella lista. Selezionane un altro! - + Card Deck Style File Error Errore sul file dello stile del mazzo di carte - + Could not load card deck style file correctly. Style will not be placed into list! Impossibile caricare correttamente il file contenente lo stile. @@ -8021,12 +8062,12 @@ Lo stile non verrà aggiunto alla lista! Registro PokerTH SQL (*.pdb) - + PokerTH - Settings PokerTH - Impostazioni - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Attenzione: questa operazione cancellerà tuttie le impostazioni personalizzate e chiuderà PokerTH! @@ -8563,35 +8604,66 @@ Please reenter the password and try again. Reinserisci la password e riprova. - + The avatar report was accepted by the server. Thank you. La segnalazione dell'avatar è stata accettata dal server. Grazie mille. - + This avatar was already reported by another player. Questo avatar è già stato segnalato da un altro giocatore. - + An error occurred while reporting the avatar. Si è verificato un errore durante la segnalazione dell'avatar. - + The game name report was accepted by the server. Thank you. La segnalazione sul nome della partita è stata accettata dal server. Grazie. - + This game name was already reported by another player. Questo nome di partita è già stato segnalato da un altro giocatore. - + An error occurred while reporting the game name. Si è verificato un errore durante la segnalazione del nome di partita. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + The password is too long. Please choose another one. @@ -8754,7 +8826,7 @@ Scegli un nome diverso. - + Server Message Messaggio del server diff --git a/ts/pokerth_jp.ts b/ts/pokerth_jp.ts index 35bb1739..a42be859 100644 --- a/ts/pokerth_jp.ts +++ b/ts/pokerth_jp.ts @@ -1458,60 +1458,60 @@ p, li { white-space: pre-wrap; } ゲームを開始中。お待ち下さい... - + Joining a private Game プラベートゲームに参加しています - + You are about to join a private game. Please enter the password! プライベートゲームに参加しようとしています。パスワードを入力してください。 - + open オープン - - - - + + + + Game Info ゲーム情報 - - + + Game ゲーム - - + + Players プレイヤー - - + + State 状態 - - + + P - - + + Available Players 有効なプレイヤー @@ -1531,139 +1531,139 @@ p, li { white-space: pre-wrap; } プレイヤー情報... - + Report inappropriate game name - - - + + + Standard スタンダード - - - + + + Registered players only 登録されたプレイヤーのみ - - - + + + Invited players only 招待されたプレイヤーのみ - - - + + + Ranking game ランキングゲーム - + Connected players - max. %1 接続中プレイヤー - 最大 %1 人 - - + + T - - - + + + sec (action) - - - + + + sec (hand delay) - - + + Connected players - Max. %1 接続中プレイヤー - 最大 %1 人 - + running 進行中 - - + + running games: %1 進行中のゲーム:%1 - - + + open games: %1 オープンゲーム:%1 - + Invite %1 招待 %1 - + Ignore %1 無視 %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 は %2 に %3 によって招待されています。</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 は %2 への招待を拒否しました。</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 は busy のため %2 に参加できません。</span> - - + + The game will start in<br><b>%1</b> seconds. <br><b>%1</b> 秒後にゲームが開始されます。 - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. 招待専用のゲームに参加しています。 右クリックでプレイヤーリストからニックネームを選択して他のプレイヤーを招待しましょう。 - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? ゲーム "<b>%1</b>" に "<b>%2</b>"より招待されています。<br> このゲームに参加しますか? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? 以後、このプレイヤーからのチャットメッセージとゲームの招待を受けることができなくなります <br> 本当にプレイヤー %1 を無視リストに入れますか? - - + + connected players: %1 接続中プレイヤー: %1 @@ -1679,1316 +1679,1345 @@ Feel free to invite other players by right-clicking on their nick in the availab - - + + Time - + Show player stats - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players 接続中プレイヤー - + hands ハンド - + minutes - + double blinds ブラインド倍増 - + manual blinds order 手動ブラインド設定 - + Server Error サーバーエラー - + You should not kick yourself from this game! 自分自身をゲームから kick することはできません。 - + search for player ... プレイヤー検索... - + Chat is only available to registered players. チャットは登録したプレイヤーのみ使用することができます。 - + Invite player ... プレイヤーを招待... - + Ignore player ... プレイヤーを無視... - + %1 is playing in "%2". %1 は "%2" でゲームしています。 - + %1 is not playing at the moment. %1 は現在プレイ中ではありません。 - - + + PokerTH - Info Message PokerTH - 情報メッセージ - - + + + + PokerTH - Question PokerTH - 質問 - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -3989,7 +4018,7 @@ Please enter an valid picture! - + Factory Settings @@ -4107,7 +4136,13 @@ Please enter an valid picture! "プレイヤーが参加した"のようなネットワークゲーム / インターネットゲーム通知音を鳴らす - + + + Server Password: + + + + OK @@ -4254,14 +4289,14 @@ Please enter an valid picture! プレイヤーアクションのタイムアウト: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4301,41 +4336,41 @@ Please enter an valid picture! - + - + Server Port: サーバーポート: - + - + Use SCTP SCTP を使用 - + - + Use IPv6 IPv6 を使用 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://ja.wikipedia.org/wiki/IPv6">IPv6とは?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://ja.wikipedia.org/wiki/SCTP">SCTPとは?</a> @@ -4345,7 +4380,7 @@ Please enter an valid picture! インターネットゲーム設定 - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4356,61 +4391,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">注意:"プレイヤー人数の上限", "開始金額","スモールブラインド"のようなデフォルトの</span><span style=" font-weight:600; font-style:italic;">ゲーム設定</span><span style=" font-style:italic;">は</span><span style=" font-weight:600; font-style:italic;">ネットワークゲーム設定から適用</span><span style=" font-style:italic;">されます。</span></p></body></html> - - + + Server Address: サーバーアドレス: - - + + Use password for private game: プライベートゲーム用のパスワード: - - + + Computer Engine コンピューターエンジン - - + + Opponent 6: 対戦相手 6: - - + + Opponent 5: 対戦相手 5: - - + + Opponent 4: 対戦相手 4: - - + + Opponent 3: 対戦相手 3: - - + + Opponent 2: 対戦相手 2: - - + + Opponent 1: 対戦相手 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4421,8 +4456,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">注意: 最高品質のための推奨アバター画像サイズは </span><span style=" font-weight:600; font-style:italic;">width=50, height=50</span><span style=" font-style:italic;"> です。</span></p></body></html> - - + + Enable/Disable Logging ログを 有効化 / 無効化 @@ -4431,44 +4466,44 @@ p, li { white-space: pre-wrap; } ログファイルの保存期間 - - + + Log File Directory: ログファイルのディレクトリ - - + + Write log after every: ログファイルの書込タイミング - - + + action (high frequent disc access) アクション (ディスクアクセス頻度 - 高) - - + + hand (medium disc access) ハンド (ディスクアクセス頻度 - 中) - - + + game (low disc access) ゲーム (ディスクアクセス頻度 - 低) - + Log Messages ログメッセージ - + Player Nicks/Avatars プレイヤーニックネーム / アバター @@ -4507,29 +4542,29 @@ p, li { white-space: pre-wrap; } 手動サーバー設定 - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -4569,8 +4604,8 @@ p, li { white-space: pre-wrap; } - - + + Avatar Server: アバターサーバー: @@ -4671,84 +4706,84 @@ p, li { white-space: pre-wrap; } サーバー - - + + Game ゲーム - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: 初期ゲーム名: - - + + Default game type: 初期ゲームタイプ: - - + + Standard スタンダード - - + + Registered players only 登録プレイヤーのみ - - + + Invited players only 招待されたプレイヤーのみ - - + + Ranking game ランキングゲーム - - + + Show lobby chat ロビーチャットを表示 - - + + Automatically leave the table after the game finished - - + + Ignored Players 無視プレイヤーリスト - - + + Player プレイヤー - - + + Remove Player プレイヤーをリストから削除 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4761,20 +4796,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">自分のプレイヤー:<br /><span style=" font-style:italic;">(このニックネームはオンラインゲームでも使用されます)</span></p></body></html> - - + + Opponent 7: 対戦相手 7: - - + + Opponent 8: 対戦相手 8: - - + + Opponent 9: 対戦相手 9: @@ -4782,65 +4817,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error 設定エラー - + The entered flipside picture doesn't exist. Please enter an valid picture! 入力されたカード裏面画像が存在しません。 正しい画像を入力してください。 - - + + The log file directory doesn't exist. Please select an valid directory! ログファイルのディレクトリが存在しません。 正しいディレクトリを設定して下さい。 - + Language Changed 言語が設定されました。 - + You have changed application language to %1. Please restart PokerTH to load new language! アプリケーションの言語が %1 に変更されました。 PokerTH を再起動して設定を適応して下さい。 - + Select your flipside picture カード裏面画像を選択 - + Images (*.png *.jpg *.gif) 画像 (*.png *.jpg *.gif) - + Open Directory ディレクトリを開く - - + + Blinds Error ブラインドエラー - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -4849,7 +4884,7 @@ This first-small-blind-value will be set to maximum allowed value. この最初のブラインドの値は最大値になります。 - + The entered server list address is not a valid URL. Please enter a valid server list address! 入力されたサーバーリストアドレスは不正な URL です。 @@ -4907,222 +4942,232 @@ Please enter a valid server list address! - German + Galician - Greek + German - Hungarian + Greek - Italian + Hungarian - Japanese + Italian - Lithuania + Japanese - Norwegian + Lithuania - Polish + Norwegian - Portuguese-Brazilian + Polish - Portuguese-Portuguese + Portuguese-Brazilian - Russian + Portuguese-Portuguese - Scottish Gaelic + Russian - Slovak + Scottish Gaelic - Spanish + Slovak - Swedish + Spanish - Tamil + Swedish + Tamil + + + + Turkish - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name 作者名 - - + + Maintainer EMail 作者のE-mail - - + + Create Date 作成日 - + Windows Behaviour ウインドウの性質 - + scaleable 可変 - + fixed 固定 - + Minimum Size 最小サイズ - + Maximum Size 最大サイズ - + Fixed Size 固定サイズ - + State 状態 - + Please select your game table style ゲームテーブルスタイルを選択して下さい - + PokerTH game table styles (*.xml) PokerTH ゲームテーブルスタイル (*.xml) - + Game Table Style Error ゲームテーブルスタイルエラー - + Selected game table style file is already in the list. Please select another one to add! 選択されたゲームテーブルスタイルは既にリストに追加されています。 追加するには別のゲームテーブルスタイルを選択して下さい。 - + Game Table Style File Error ゲームテーブルスタイルファイルエラー - + Could not load game table style file correctly. Style will not be placed into list! ゲームテーブルスタイルファイルが正しく読み込めません。 スタイルはリストに追加されませんでした。 - + Please select your card deck style カードデッキスタイルを選択して下さい。 - + PokerTH card deck styles (*.xml) PokerTH カードデッキスタイル (*.xml) - + Card Deck Style Error カードデッキスタイルエラー - + Selected card deck style file is already in the list. Please select another one to add! 選択されたカードデッキスタイルは既にリストに追加されています。 追加するには別のカードデッキスタイルを選択して下さい。 - + Card Deck Style File Error カードデッキスタイルファイルエラー - + Could not load card deck style file correctly. Style will not be placed into list! カードデッキスタイルファイルが正しく読み込めません。 @@ -5141,12 +5186,12 @@ Style will not be placed into list! PokerTH ログファイルを保存 - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5612,17 +5657,17 @@ Please reenter the password and try again. パスワードを再度入力してもう一度お試し下さい。 - + The avatar report was accepted by the server. Thank you. アバターの報告は受け付けられました。ありがとうございます。 - + This avatar was already reported by another player. このアバターは既に他のプレイヤーに報告されています。 - + An error occurred while reporting the avatar. アバターの報告の際、エラーが発生しました。 @@ -5800,25 +5845,56 @@ Please reenter the password and try again. - + Server Message サーバーメッセージ - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + PokerTH %1 diff --git a/ts/pokerth_lt.ts b/ts/pokerth_lt.ts index 1ec0f451..72a6591e 100644 --- a/ts/pokerth_lt.ts +++ b/ts/pokerth_lt.ts @@ -1774,46 +1774,46 @@ p, li { white-space: pre-wrap; } Pradedamas žaidimas. Prašome palaukti ... - + Joining a private Game Jungiamasi prie privataus žaidimo - + You are about to join a private game. Please enter the password! Jūs esate čia, kad prisijungtumėte prie privataus žaidimo. Prašome įrašyti slaptažodį! - + open atviras - - - - + + + + Game Info Žaidimo informacija - - + + Game Žaidimas - - + + Players Žaidėjai - - + + State Būsena @@ -1823,15 +1823,15 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Available Players Pasiekiami žaidėjai @@ -1851,138 +1851,138 @@ p, li { white-space: pre-wrap; } Žaidėjo informacija ... - - - + + + Standard Standartinis - - - + + + Registered players only Tik užsiregistravę žaidėjai - - - + + + Invited players only Tik pakviesti žaidėjai - - - + + + Ranking game Žaidimas dėl reitingų - + Connected players - max. %1 Prisijungusių vartotojų - max. %1 - - + + T T - + Report inappropriate game name - - - + + + sec (action) - - - + + + sec (hand delay) - - + + Connected players - Max. %1 Prisijungusių vartotojų - Max. %1 - + running vykdoma - - + + running games: %1 vyksta žaidimų: %1 - - + + open games: %1 atviri žaidimai: %1 - + Invite %1 Pakviesti %1 - + Ignore %1 Ignoruoti %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 buvo pakviestas į %2 nuo %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 atmetė pakvietimą į %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 negali jungtis %2, nes yra užimta(s).</span> - - + + The game will start in<br><b>%1</b> seconds. Žaidimas prasidės po<br><b>%1</b> sekundžių. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Jūs atsidūrėte žaidimo su "tik su pakvietimais" tipu. Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant jų slapyvardžių prieinamame žaidėjų sąraše. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Jūs buvote pakviestas į žaidimą <b>%1</b> nuo <b>%2</b>.<br>Ar norite jungtis prie žaidimo? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Jūs nebegausite daugiau pokalbio žinučių arba žaidimo pakvietimų iš šio naudotojo.<br>Ar tikrai norite patalpinti žaidėją <b>%1</b> į ignoravimo sąrašą? - - + + connected players: %1 prisijungę žaidėjai: %1 @@ -1998,1316 +1998,1345 @@ Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant j - - + + Time - + Show player stats - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players Prisijungę žaidėjai - + hands rankos - + minutes minutės - + double blinds dvigubi statymai - + manual blinds order rankinių statymų tvarka - + Server Error Serverio klaida - + You should not kick yourself from this game! Jūs negalėsite išmesti savęs iš šio žaidimo! - + search for player ... ieškoti žaidėjo ... - + Chat is only available to registered players. Pokalbis yra prieinamas tik užsiregistravusiems žaidėjams. - + Invite player ... Pakviesti žaidėją ... - + Ignore player ... Ignoruoti žaidėją ... - + %1 is playing in "%2". %1 žaidžia "%2". - + %1 is not playing at the moment. %1 šiuo metu nežaidžia. - - + + PokerTH - Info Message PokerTH - Informacinė žinutė - - + + + + PokerTH - Question PokerTH - Klausimas - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Lietuvių - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -4308,7 +4337,7 @@ Prašome įvesti galiojantį paveikslėlį! - + Factory Settings @@ -4426,7 +4455,13 @@ Prašome įvesti galiojantį paveikslėlį! Leisti tinklo/interneto žaidimo pranešimus, panašius į "žaidėjas prisijungęs prie žaidimo" - + + + Server Password: + + + + OK @@ -4573,14 +4608,14 @@ Prašome įvesti galiojantį paveikslėlį! Pertraukėlė žaidėjo veiksmui atlikti: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4620,41 +4655,41 @@ Prašome įvesti galiojantį paveikslėlį! - + - + Server Port: Serverio prievadas: - + - + Use SCTP Naudoti SCTP - + - + Use IPv6 Naudoti IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Kas tai?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Kas tai?</a> @@ -4664,7 +4699,7 @@ Prašome įvesti galiojantį paveikslėlį! Žaidimo internetu nuostatos - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4675,61 +4710,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Pastaba: Numatytosios </span><span style=" font-weight:600; font-style:italic;">Žaidimo nuostatos</span><span style=" font-style:italic;">, panašios į "Didžiausias žaidėjų skaičius", "Pradiniai pinigai" ir "Mažasis statymas" bus naudojamos </span><span style=" font-weight:600; font-style:italic;">iš tinklo žaidimo nuostatų.</span></p></body></html> - - + + Server Address: Serverio adresas: - - + + Use password for private game: Naudoti slaptažodį privačiam žaidimui: - - + + Computer Engine Kompiuterio varikliukas - - + + Opponent 6: Priešininkas 6: - - + + Opponent 5: Priešininkas 5: - - + + Opponent 4: Priešininkas 4: - - + + Opponent 3: Priešininkas 3: - - + + Opponent 2: Priešininkas 2: - - + + Opponent 1: Priešininkas 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4740,8 +4775,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Pastaba: Geriausia avataro kokybė su paveikslėlio koeficientu, panašiu į </span><span style=" font-weight:600; font-style:italic;">plotis=50, aukštis=50.</span></p></body></html> - - + + Enable/Disable Logging Įjungti/Išjungti prisijungimą @@ -4750,44 +4785,44 @@ p, li { white-space: pre-wrap; } Žurnalo failo atmintinė - - + + Log File Directory: Žurnalo failo katalogas: - - + + Write log after every: Įrašyti žurnalą po kiekvieno: - - + + action (high frequent disc access) veiksmo (disko prieigos aukštas dažnis) - - + + hand (medium disc access) rankos (vidutinė disko prieiga) - - + + game (low disc access) žaidimo (žema disko prieiga) - + Log Messages Žurnalo žinutės - + Player Nicks/Avatars Žaidėjo slapyvardžiai/avatarai @@ -4826,29 +4861,29 @@ p, li { white-space: pre-wrap; } Rankinė serverio konfigūracija - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) Diena(os) @@ -4888,8 +4923,8 @@ p, li { white-space: pre-wrap; } - - + + Avatar Server: Avataro serveris: @@ -4990,84 +5025,84 @@ p, li { white-space: pre-wrap; } Serveris - - + + Game Žaidimas - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Numatytas žaidimo pavadinimas: - - + + Default game type: Numatytas žaidimo tipas: - - + + Standard Standartinis - - + + Registered players only Tik užsiregistravę žaidėjai - - + + Invited players only Tik pakviesti žaidėjai - - + + Ranking game Žaidimas dėl reitingų - - + + Show lobby chat Rodyti fojė pokalbius - - + + Automatically leave the table after the game finished - - + + Ignored Players Ignoruojami žaidėjai - - + + Player Žaidėjas - - + + Remove Player Pašalinti žaidėją - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5080,20 +5115,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Žmogus žaidėjas:<br /><span style=" font-style:italic;">(Šis slapyvardis taip pat bus naudojamas internetinio žaidimo prisijungimui)</span></p></body></html> - - + + Opponent 7: Priešininkas 7: - - + + Opponent 8: Priešininkas 8: - - + + Opponent 9: Priešininkas 9: @@ -5116,120 +5151,120 @@ p, li { white-space: pre-wrap; } Prancūzų - + German Vokiečių - + Hungarian Vengrų - + Italian Italų - + Lithuania Lietuvių - + Norwegian Norvegų - + Portuguese-Brazilian Portugalų-Brazilų - + Portuguese-Portuguese Portugalų-Portugalų - + Russian Rusų - + Slovak Slovakų - + Spanish Ispanų - + Turkish Turkų - - - - - + + + + + Settings Error Nuostatų klaida - + The entered flipside picture doesn't exist. Please enter an valid picture! Įvesta atvirkštinė paveikslėlio pusė neegzistuoja. Prašome įvesti galiojantį paveikslėlį! - - + + The log file directory doesn't exist. Please select an valid directory! Žurnalo failo katalogas neegzistuoja. Prašome pasirinkti galiojantį katalogą! - + Language Changed Kalba pakeista - + You have changed application language to %1. Please restart PokerTH to load new language! Jūs pakeitėte programos kalbą į %1. Prašome perkrauti PokerTH, kad įkeltumėte naują kalbą! - + Select your flipside picture Pasirinkite paveikslėlio atvirkštinę pusę - + Images (*.png *.jpg *.gif) Paveikslėliai (*.png *.jpg *.gif) - + Open Directory Atverti katalogą - - + + Blinds Error Statymų klaida - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5243,7 +5278,7 @@ yra mažesnis už esamą pirmąjį-mažajį-statymą! Bulgarų - + Polish Lenkų @@ -5253,17 +5288,17 @@ yra mažesnis už esamą pirmąjį-mažajį-statymą! Kinų - + Greek Graikų - + Swedish Švedų - + The entered server list address is not a valid URL. Please enter a valid server list address! Įvestas serverio sąrašo adresas nėra galiojantis URL. @@ -5295,153 +5330,163 @@ Prašome įvesti galiojantį serverio sąrašo adresą! Danų - + + Galician + + + + Japanese - + Scottish Gaelic - + Tamil Tamilų - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Prižiūrėtojo vardas - - + + Maintainer EMail Prižiūrėtojo el.paštas - - + + Create Date Sukūrimo data - + Windows Behaviour Langų elgsena - + scaleable išplečiamas - + fixed fiksuotas - + Minimum Size Mažiausias dydis - + Maximum Size Didžiausias dydis - + Fixed Size Fiksuotas dydis - + State Būsena - + Please select your game table style Prašome pasirinkti savo žaidimo stalo stilių - + PokerTH game table styles (*.xml) PokerTH žaidimo stalo stiliai (*.xml) - + Game Table Style Error Žaidimo stalo stiliaus klaida - + Selected game table style file is already in the list. Please select another one to add! Pasirinktas žaidimo stalo stiliaus failas jau yra sąraše. Prašome pasirinkti kitą! - + Game Table Style File Error Žaidimo stalo stiliaus failo klaida - + Could not load game table style file correctly. Style will not be placed into list! Nepavyko įkelti žaidimo stalo stiliaus failo teisingai. Stilius nebus įkeltas į sąrašą! - + Please select your card deck style Prašome pasirinkti savo kortų kaladės stilių - + PokerTH card deck styles (*.xml) PokerTH kortų kaladės stiliai (*.xml) - + Card Deck Style Error Kortų kaladės stiliaus klaida - + Selected card deck style file is already in the list. Please select another one to add! Pasirinktas kortų kaladės stiliaus failas jau yra sąraše. Prašome pasirinkti kitą! - + Card Deck Style File Error Kortų kaladės stiliaus failo klaida - + Could not load card deck style file correctly. Style will not be placed into list! Nepavyko įkelti kortų kaladės stiliaus failo teisingai. @@ -5464,12 +5509,12 @@ Stilius nebus įkeltas į sąrašą! PokerTH SQL žurnalas (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5949,17 +5994,17 @@ Please reenter the password and try again. Prašome įvesti slaptažodį ir mėginti dar kartą. - + The avatar report was accepted by the server. Thank you. Pranešimą apie avatarą serveris priėmė. Ačiū Jums. - + This avatar was already reported by another player. Apie šį avatarą jau pranešė kitas žaidėjas. - + An error occurred while reporting the avatar. Pranešimo metu apie avataro paveikslėlį įvyko klaida. @@ -6137,25 +6182,56 @@ Prašome įvesti slaptažodį ir mėginti dar kartą. - + Server Message Serverio žinutė - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + PokerTH %1 diff --git a/ts/pokerth_nl.ts b/ts/pokerth_nl.ts index ca728e1c..1aec18c3 100644 --- a/ts/pokerth_nl.ts +++ b/ts/pokerth_nl.ts @@ -3507,20 +3507,20 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info Info over spel - + Server Error Serverfout - + You should not kick yourself from this game! U mag zichzelf niet uit dit spel verwijderen. @@ -3534,15 +3534,15 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Available Players Aanwezige spelers @@ -3562,71 +3562,71 @@ p, li { white-space: pre-wrap; } Spelersinfo ... - + Report inappropriate game name - - - + + + Standard Standaard - - - + + + Registered players only Alleen geregistreerde spelers - - - + + + Invited players only Alleen uitgenodigde spelers - - - + + + Ranking game Spel voor ranking - + Connected players - max. %1 Spelers met verbinding - max. %1 - - - + + + sec (action) - - - + + + sec (hand delay) - + Joining a private Game Meedoen met een privéspel - + You are about to join a private game. Please enter the password! U wilt meedoen met een privéspel. Voer het wachtwoord in. - - + + T T @@ -3642,1367 +3642,1396 @@ p, li { white-space: pre-wrap; } - - + + Time - + Show player stats - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players - Max. %1 Spelers met verbinding - max. %1 - + running bezig - + open open - - + + Connected players Spelers met verbinding - + hands hand(en) - + minutes min. - + double blinds verdubbelen - + manual blinds order eigen lijst - + search for player ... Speler zoeken ... - + Chat is only available to registered players. Alleen geregistreerde spelers kunnen chatten. - + Invite %1 %1 uitnodigen - + Ignore %1 %1 negeren - + %1 is playing in "%2". %1 speelt in "%2". - + %1 is not playing at the moment. %1 speelt momenteel niet. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 is uitgenodigd voor %2 door %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 heeft de uitnodiging voor %2 afgeslagen.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 is bezig en kan niet meedoen met %2.</span> - - + + The game will start in<br><b>%1</b> seconds. Het spel begint over<br><b>%1</b> seconden. - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Litouws - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + + + Invite player ... Speler uitnodigen ... - + Ignore player ... Speler negeren ... - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Er wordt meegedaan aan een spel van het type "alleen op uitnodiging". Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de lijst Aanwezige spelers. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Uitnodiging ontvanger van <b>%2</b> voor spel <b>%1</b>.<br>Meedoen met dit spel? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Er zullen geen chatberichten of speluitnodigingen meer worden ontvangen van deze gebruiker. <br>Speler <b>%1</b> werkelijk op de lijst Genegeerde spelers zetten? - - + + PokerTH - Info Message PokerTH - Infobericht - - + + + + PokerTH - Question PokerTH - Vraag @@ -5013,22 +5042,22 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de - - + + Game Spel - - + + Players Spelers - - + + State Status @@ -5037,14 +5066,14 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de Privé - - + + running games: %1 %1 spel(len) bezig - - + + open games: %1 %1 open spel(len) @@ -5053,8 +5082,8 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de %1 speler(s) in de chat - - + + connected players: %1 %1 speler(s) met verbinding @@ -6495,72 +6524,74 @@ p, li { white-space: pre-wrap; } - + - + Server Port: Serverpoort: - + - + Use IPv6 IPv6 gebruiken + + Server Password: - Serverwachtwoord: + Serverwachtwoord: Network Game Default Settings Standaardinstellingen van netwerkspel - - + + Computer Engine Computertegenstanders - - + + Opponent 5: Tegenstander 5: - - + + Opponent 3: Tegenstander 3: - - + + Opponent 2: Tegenstander 2: - - + + Opponent 6: Tegenstander 6: - - + + Opponent 1: Tegenstander 1: - - + + Opponent 4: Tegenstander 4: - + Human Player: Speler: @@ -6573,15 +6604,15 @@ p, li { white-space: pre-wrap; } dag(en) - - + + Log File Directory: Map voor logbestanden: - + Log Messages Logberichten @@ -6672,8 +6703,8 @@ p, li { white-space: pre-wrap; } Simulatorversie van computertegenstanders: - - + + Enable/Disable Logging Logbestanden schrijven @@ -6682,8 +6713,8 @@ p, li { white-space: pre-wrap; } Bewaar de logbestanden - - + + Write log after every: Logbestand bijwerken na iedere: @@ -6705,25 +6736,25 @@ p, li { white-space: pre-wrap; } - + - + Use SCTP SCTP gebruiken - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://nl.wikipedia.org/wiki/Ipv6">Wat is dit?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://nl.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Wat is dit?</a> @@ -6766,20 +6797,20 @@ p, li { white-space: pre-wrap; } Denktijd voor de spelers (sec): - - + + action (high frequent disc access) handeling (veel schijfactiviteit) - - + + hand (medium disc access) hand (matige schijfactiviteit) - - + + game (low disc access) partij (weinig schijfactiviteit) @@ -6822,14 +6853,14 @@ p, li { white-space: pre-wrap; } Instellingen van internetserver (pokerserver) - - + + Server Address: Serveradres: - - + + Use password for private game: Wachtwoord gebruiken voor privéspel: @@ -6996,7 +7027,7 @@ p, li { white-space: pre-wrap; } Chatten in de lobby (IRC-server) aan/uit - + Player Nicks/Avatars Spelersnamen/avatars @@ -7068,7 +7099,7 @@ p, li { white-space: pre-wrap; } s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -7079,7 +7110,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Opmerking: standaard </span><span style=" font-weight:600; font-style:italic;">spelinstellingen</span><span style=" font-style:italic;">, waaronder 'Maximale aantal spelers', 'Startgeld' en 'Kleine blind' worden overgenomen van </span><span style=" font-weight:600; font-style:italic;">Instellingen van netwerkspel.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -7098,7 +7129,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings @@ -7162,84 +7193,84 @@ p, li { white-space: pre-wrap; } Aangepaste serverconfiguratie - - + + Game Spel - - + + Default game name: Standaard spelnaam: - - + + Default game type: Standaard speltype: - - + + Standard Standaard - - + + Registered players only Alleen geregistreerde spelers - - + + Invited players only Alleen uitgenodigde spelers - - + + Ranking game Spel voor ranking - - + + Show lobby chat Lobbychat weergeven - - + + Automatically leave the table after the game finished - - + + Ignored Players Genegeerde spelers - - + + Player Speler - - + + Remove Player Speler verwijderen - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7252,26 +7283,26 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Menselijke speler:<br /><span style=" font-style:italic;">(Deze naam wordt ook gebruikt bij het inloggen voor online spelen)</span></p></body></html> - - + + Store log files for: - - + + Day(s) dag(en) - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -7362,7 +7393,7 @@ p, li { white-space: pre-wrap; } Een eigen afbeelding gebruiken voor de kaartachterkant: - + Note: Best avatar quality with image ratio like width=50, height=50. @@ -7391,8 +7422,8 @@ p, li { white-space: pre-wrap; } Wachtwoord: - - + + Avatar Server: Avatarserver: @@ -7474,24 +7505,24 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Nieuwe speelkaartenstijlen voor PokerTH downloaden...</span></a></p></body></html> - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 7: Tegenstander 7: - - + + Opponent 8: Tegenstander 8: @@ -7500,8 +7531,8 @@ p, li { white-space: pre-wrap; } Tegenstander 4: {10:?} - - + + Opponent 9: Tegenstander 9: @@ -7509,11 +7540,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Fout in instellingen @@ -7530,7 +7561,7 @@ Please select an valid directory! Selecteer een geldige map! - + Select your flipside picture Uw afbeelding voor de kaartachterkant selecteren @@ -7539,24 +7570,24 @@ Selecteer een geldige map! Afbeeldingen (*.png) - + Open Directory Open map - + Images (*.png *.jpg *.gif) Afbeeldingen (*.png *.jpg *.gif) - - + + Blinds Error Fout in blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7580,12 +7611,12 @@ De eerste kleine blind wordt ingesteld op de maximale waarde. Frans - + German Duits - + Hungarian Hongaars @@ -7602,7 +7633,7 @@ De eerste kleine blind wordt ingesteld op de maximale waarde. Português Brasil (Brz. Portugees) - + Russian Russisch @@ -7611,79 +7642,84 @@ De eerste kleine blind wordt ingesteld op de maximale waarde. Slowaaks - + Turkish Turks - + Language Changed Taal is gewijzigd - + You have changed application language to %1. Please restart PokerTH to load new language! De taal van het programma is gewijzigd naar %1. Start PokerTH opnieuw om de nieuwe taal te laden. - + Italian Italiaans - - Japanese + + Galician + Japanese + + + + Lithuania Litouws - + Portuguese-Brazilian Braz. Portugees - + Portuguese-Portuguese Port. Portugees - + Scottish Gaelic - + Slovak Slowaaks - + The entered flipside picture doesn't exist. Please enter an valid picture! De ingestelde afbeelding voor de kaartachterkant bestaat niet. Stel een geldige afbeelding in. - - + + The log file directory doesn't exist. Please select an valid directory! De map voor logbestanden bestaat niet. Selecteer een geldige map. - + Norwegian Noors - + Spanish Spaans @@ -7693,7 +7729,7 @@ Selecteer een geldige map. Bulgaars - + Polish Pools @@ -7703,17 +7739,17 @@ Selecteer een geldige map. Chinees - + Greek Grieks - + Swedish Zweeds - + The entered server list address is not a valid URL. Please enter a valid server list address! Het ingevoerde serverlijstadres is geen geldige URL. @@ -7753,143 +7789,148 @@ Voer een geldig serverlijstadres in. Português (Portugees) - + Tamil Tamil - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Maker(s) - - + + Maintainer EMail E-mailadres - - + + Create Date Gemaakt op - + Windows Behaviour Venstergrootte - + scaleable schaalbaar - + fixed gefixeerd - + Minimum Size Minimumgrootte - + Maximum Size Maximumgrootte - + Fixed Size Gefixeerde grootte - + State Status - + Please select your game table style Selecteer een speeltafelstijl - + PokerTH game table styles (*.xml) Speeltafelstijlen voor PokerTH (*.xml) - + Game Table Style Error Speeltafelstijlfout - + Selected game table style file is already in the list. Please select another one to add! De geselecteerde speeltafelstijl staat al in de lijst. Selecteer een andere stijl om die toe te voegen. - + Game Table Style File Error Speeltafelstijlbestandfout - + Could not load game table style file correctly. Style will not be placed into list! Kan het stijlbestand voor de speeltafel niet laden. De stijl wordt niet in de lijst geplaatst. - + Please select your card deck style Selecteer een speelkaartenstijl - + PokerTH card deck styles (*.xml) Speelkaartenstijlen voor PokerTH (*.xml) - + Card Deck Style Error Speelkaartenstijlfout - + Selected card deck style file is already in the list. Please select another one to add! De geselecteerde speelkaartenstijl staat al in de lijst. Selecteer een andere stijl om die toe te voegen. - + Card Deck Style File Error Speelkaartenstijlbestandfout - + Could not load card deck style file correctly. Style will not be placed into list! Kan het stijlbestand voor de speelkaarten niet laden. @@ -7904,12 +7945,12 @@ De stijl wordt niet in de lijst geplaatst. Het geselecteerde logbestand werkelijk verwijderen? - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -8449,35 +8490,66 @@ Please reenter the password and try again. Voer het wachtwoord opnieuw in en probeer het opnieuw. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + The password is too long. Please choose another one. @@ -8640,7 +8712,7 @@ Kies een andere naam. - + Server Message Serverbericht diff --git a/ts/pokerth_no.ts b/ts/pokerth_no.ts index e0b983ba..f3fc894f 100644 --- a/ts/pokerth_no.ts +++ b/ts/pokerth_no.ts @@ -1755,25 +1755,25 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info - + Server Error Feil hos tjener - + You should not kick yourself from this game! Du burde ikke kaste deg selv ut fra spillet! - + Joining a private Game @@ -1789,1300 +1789,1327 @@ p, li { white-space: pre-wrap; } - - + + Game Spill - - + + Players - - + + State - - + + Time - + Show player stats - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + You are about to join a private game. Please enter the password! - + running - + open - - + + Connected players - + hands - + minutes - + double blinds - + manual blinds order - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + Starting game. Please wait ... @@ -3090,15 +3117,15 @@ p, li { white-space: pre-wrap; } - - + + P - - + + Available Players @@ -3118,174 +3145,176 @@ p, li { white-space: pre-wrap; } - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - + Connected players - max. %1 - - + + T - - - + + + sec (action) - - - + + + sec (hand delay) - - + + Connected players - Max. %1 - - + + running games: %1 - - + + open games: %1 - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? - - + + connected players: %1 - + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + + + PokerTH - Question @@ -4452,66 +4481,68 @@ p, li { white-space: pre-wrap; } - + - + Server Port: Tjener-port: - + - + Use IPv6 Bruk IPv6 + + Server Password: - Passord for tjener: + Passord for tjener: Network Game Default Settings Standardinstillinger for nettverksspill - - + + Computer Engine Datamaskin-motor - - + + Opponent 5: Motstander 5: - - + + Opponent 3: Motstander 3: - - + + Opponent 2: Motstander 2: - - + + Opponent 1: Motstander 1: - - + + Opponent 4: Motstander 4: - + Human Player: Mennesklig spiller: @@ -4520,8 +4551,8 @@ p, li { white-space: pre-wrap; } Kallenavn på spillere - - + + Log File Directory: Katalog for loggfiler: @@ -4532,7 +4563,7 @@ p, li { white-space: pre-wrap; } - + Log Messages Logg @@ -4623,8 +4654,8 @@ p, li { white-space: pre-wrap; } Versjon av spillmotor for datamaskinstyrte motstandere: - - + + Enable/Disable Logging Skru på/av logging @@ -4633,8 +4664,8 @@ p, li { white-space: pre-wrap; } Lagre logg-filer i - - + + Write log after every: Skriv logg etter hver(t): @@ -4656,25 +4687,25 @@ p, li { white-space: pre-wrap; } - + - + Use SCTP Bruk SCTP - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://no.wikipedia.org/wiki/Ipv6">Hva er dette?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Hva er dette?</a> @@ -4710,18 +4741,18 @@ p, li { white-space: pre-wrap; } 10 - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 6: Motstander 6: @@ -4730,20 +4761,20 @@ p, li { white-space: pre-wrap; } Tidsgrense for spillere (sek.): - - + + action (high frequent disc access) Handling (hyppig disk-bruk) - - + + hand (medium disc access) Hånd (medium disk-bruk) - - + + game (low disc access) Spill (lav disk-bruk) @@ -4772,14 +4803,14 @@ p, li { white-space: pre-wrap; } - - + + Server Address: - - + + Use password for private game: @@ -4902,7 +4933,7 @@ p, li { white-space: pre-wrap; } - + OK @@ -4937,7 +4968,7 @@ p, li { white-space: pre-wrap; } - + Player Nicks/Avatars @@ -4985,7 +5016,7 @@ p, li { white-space: pre-wrap; } - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4993,7 +5024,7 @@ p, li { white-space: pre-wrap; } - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5019,14 +5050,14 @@ p, li { white-space: pre-wrap; } - - + + Store log files for: - - + + Day(s) @@ -5066,8 +5097,8 @@ p, li { white-space: pre-wrap; } - - + + Avatar Server: @@ -5081,7 +5112,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings @@ -5189,79 +5220,79 @@ p, li { white-space: pre-wrap; } - - + + Game Spill - - - Default game name: - - - - + - Default game type: + Default game name: + Default game type: + + + + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5270,19 +5301,19 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Motstander 6: {7:?} - - + + Opponent 8: Motstander 6: {8:?} - + Note: Best avatar quality with image ratio like width=50, height=50. @@ -5291,14 +5322,14 @@ p, li { white-space: pre-wrap; } Slett - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5307,8 +5338,8 @@ p, li { white-space: pre-wrap; } Motstander 6: {10:?} - - + + Opponent 9: Motstander 6: {10:?} {9:?} @@ -5316,11 +5347,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Feil i instillinger @@ -5337,7 +5368,7 @@ Please select an valid directory! Vennligst velg en gyldig katalog! - + Select your flipside picture Velg bakside-bilde @@ -5346,31 +5377,31 @@ Vennligst velg en gyldig katalog! Bilder (*.png) - + Open Directory Åpne mappe - + Images (*.png *.jpg *.gif) - - + + Blinds Error - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. - + Language Changed @@ -5426,255 +5457,265 @@ This first-small-blind-value will be set to maximum allowed value. - German + Galician - Greek + German - Hungarian + Greek - Italian + Hungarian - Japanese + Italian - Lithuania + Japanese - Norwegian + Lithuania - Polish + Norwegian - Portuguese-Brazilian + Polish - Portuguese-Portuguese + Portuguese-Brazilian - Russian + Portuguese-Portuguese - Scottish Gaelic + Russian - Slovak + Scottish Gaelic - Spanish + Slovak - Swedish + Spanish - Tamil + Swedish + Tamil + + + + Turkish - + + Vietnamese + + + + You have changed application language to %1. Please restart PokerTH to load new language! - + The entered flipside picture doesn't exist. Please enter an valid picture! - - + + The log file directory doesn't exist. Please select an valid directory! - + The entered server list address is not a valid URL. Please enter a valid server list address! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6138,17 +6179,17 @@ Please reenter the password and try again. Prøv igjen. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. @@ -6332,25 +6373,56 @@ Vennligst velg et annet navn. - + Server Message - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + PokerTH %1 diff --git a/ts/pokerth_pl.ts b/ts/pokerth_pl.ts index da9bbab9..2a39597d 100644 --- a/ts/pokerth_pl.ts +++ b/ts/pokerth_pl.ts @@ -1971,46 +1971,46 @@ p, li { white-space: pre-wrap; } gra - - - - + + + + Game Info Informacje o grze - + Server Error Błąd serwera - + You should not kick yourself from this game! Nie powinieneś wyrzucać sam siebie z tej gry! - + Joining a private Game Dołącz do gry prywatnej - - + + Game Gra - - + + Players Gracze - - + + State Stan @@ -2019,43 +2019,43 @@ p, li { white-space: pre-wrap; } Prywatne - + You are about to join a private game. Please enter the password! Próbujesz wejść do gry prywatnej. Proszę wpisz hasło! - + running w trakcie - + open otwarta - - + + Connected players Połączeni gracze - + hands rozdania - + minutes minuty - + double blinds podwajane - + manual blinds order własne @@ -2076,22 +2076,22 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Time Czas - - + + Available Players Dostępni gracze @@ -2112,1353 +2112,1380 @@ p, li { white-space: pre-wrap; } - + Show player stats Pokaż statystyki gracza - + + + Admin action ... + + + + + Total kickban + + + + Report inappropriate game name Zgłoś nieodpowiednią nazwę gracza - - - + + Close game + + + + + + Standard Standardowa - - - + + + Registered players only Tylko dla zarejestrowanych - - - + + + Invited players only Tylko dla zaproszonych - - - + + + Ranking game Gra rankingowa - + Connected players - max. %1 Połączeni gracze - max. %1 - + Afghanistan Afganistan - + ALand Islands Wyspy Alandzkie - + Albania Albania - + Algeria Algieria - + American Samoa Samoa Amerykańskie - + Andorra Andora - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarktyda - + Antigua And Barbuda Antigua i Barbuda - + Argentina Argentyna - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Azerbejdżan - + Bahamas Bahamy - + Bahrain Bahrain - + Bangladesh Bangladesz - + Barbados Barbados - + Belarus Białoruś - + Belgium Belgia - + Belize Belize - + Benin Benin - + Bermuda Bermudy - + Bhutan Bhutan - + Bolivia Boliwia - + Bosnia And Herzegovina Bośnia i Hercegowina - + Botswana Botswana - + Bouvet Island Wyspa Bouveta - + Brazil Brazylia - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria Bułgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodża - + Cameroon Kamerun - + Canada Kanada - + Cape Verde - + Cayman Islands - + Central African Republic Republika Środkowoafrykańska - + Chad Czad - + Chile Chile - + China Chiny - + Christmas Island Wyspy Bożego Narodzenia - + Cocos (Keeling) Islands - + Colombia Kolumbia - + Comoros - + Congo Kongo - + Congo, The Democratic Republic Of The Demokratyczna Republika Konga - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia Chorwacja - + Cuba Kuba - + Cyprus Cypr - + Czech Republic Czechy - + Denmark Dania - + Djibouti - + Dominica - + Dominican Republic - + Ecuador Ekwador - + Egypt Egipt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia Estonia - + Ethiopia Etiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland Finlandia - + France Francja - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia Gruzja - + Germany Niemcy - + Ghana Ghana - + Gibraltar - + Greece Frecja - + Greenland Grenlandia - + Grenada - + Guadeloupe - + Guam - + Guatemala Gwatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Węgry - + Iceland Islandia - + India Indie - + Indonesia Indonezja - + Iran, Islamic Republic Of Iran - + Iraq Irak - + Ireland Irlandia - + Isle Of Man - + Israel Izrael - + Italy Włochy - + Jamaica Jamajka - + Japan Japonia - + Jersey - + Jordan - + Kazakhstan Kazachstan - + Kenya Kenia - + Kiribati - + Korea, Democratic People'S Republic Of Korea Północna - + Korea, Republic Of Korea Południowa - + Kuwait Kuwejt - + Kyrgyzstan Kirgistan - + Lao People'S Democratic Republic - + Latvia Łotwa - + Lebanon Liban - + Lesotho Lesotho - + Liberia Liberia - + Libyan Arab Jamahiriya - + Liechtenstein Liechtenstein - + Lithuania Litwa - + Luxembourg Luksemburg - + Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia - + Madagascar Madagaskar - + Malawi - + Malaysia Malezja - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico Meksyk - + Micronesia, Federated States Of - + Moldova, Republic Of Mołdawia - + Monaco Monaco - + Mongolia Mogolia - + Montserrat - + Morocco Maroko - + Mozambique Mozambik - + Myanmar - + Namibia Namibia - + Nauru - + Nepal Nepal - + Netherlands Holandia - + Netherlands Antilles - + New Caledonia - + New Zealand Nowa Zelandia - + Nicaragua Nikaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island - + Northern Mariana Islands - + Norway Norwegia - + Oman Oman - + Pakistan Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama Panama - + Papua New Guinea Papua Nowa Gwinea - + Paraguay Paragwaj - + Peru Peru - + Philippines Filipiny - + Pitcairn - + Poland Polska - + Portugal Portugalia - + Puerto Rico Puerto Rico - + Qatar Katar - + Reunion - + Romania Rumunia - + Russian Federation Rosja - + Rwanda Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe - + Saudi Arabia Arabia Saudyjska - + Senegal Senegal - + Serbia And Montenegro Serbia i Czarnogóra - + Seychelles - + Sierra Leone - + Singapore Singapur - + Slovakia Słowacja - + Slovenia Słowenia - + Solomon Islands - + Somalia Somalia - + South Africa Republika Południowej Afryki - + South Georgia And The South Sandwich Islands - + Spain Hiszpania - + Sri Lanka Sri Lanka - + Sudan Sudan - + Suriname Surinam - + Svalbard And Jan Mayen - + Swaziland - + Sweden Szwecja - + Switzerland Szwajcaria - + Syrian Arab Republic Syria - + Taiwan, Province Of China Tajwan - + Tajikistan Tadżykistan - + Tanzania, United Republic Of Tanzania - + Thailand Tajlandia - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago Trinidad i Tobago - + Tunisia Tunezja - + Turkey Turcja - + Turkmenistan Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda Uganda - + Ukraine Ukraina - + United Arab Emirates Zjednoczone Emiraty Arabskie - + United Kingdom Wielka Brytania - + United States Stany Zjednoczone - + United States Minor Outlying Islands - + Uruguay Urugwaj - + Uzbekistan Uzbekistan - + Vanuatu - + Venezuela Wenezuela - + Viet Nam Wietnam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara Sahara Zachodnia - + Yemen Jemen - + Zambia Zambia - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Czy na pewno chcesz zgłosić nieodpowiednią nazwę gracza: "%1"? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + - - + + T T - - - + + + sec (action) sekund (na akcję) - - - + + + sec (hand delay) sekund (między rękami) - - + + Connected players - Max. %1 Połączeni gracze - max. %1 - - + + running games: %1 gry w trakcie: %1 - - + + open games: %1 otwarte gry : %1 - + Invite %1 Zaproś %1 - + Ignore %1 Ignoruj %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 został zaproszony do %2 przez %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 odrzucił zaproszenie do %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 nie może dołączyć do %2 ponieważ jest zajęty.</span> - - + + The game will start in<br><b>%1</b> seconds. Gra rozpocznie się za <br><b>%1</b> sekund. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Dołączyłeś do gry "tylko dla zaproszonych". Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście dostepnych graczy. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Zostałeś zaproszony do gry <b>%1</b> przez <b>%2</b>.<br>Chcesz dołączyć do tej gry? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Nie będziesz otrzymywał żadnych informacji ani zaproszeń do gry od tego gracza.<br>Czy na pewno chcesz dodać gracza <b>%1</b> do listy ignorowanych? @@ -3467,50 +3494,52 @@ Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście d osób na chacie: %1 - - + + connected players: %1 podłączonych graczy: %1 - + search for player ... szukaj gracza... - + Chat is only available to registered players. Chat jest dostępny tylko dla zarejestrowanych graczy. - + Invite player ... Zaproś gracza... - + Ignore player ... Ignoruj gracza... - + %1 is playing in "%2". %1 gra w "%2". - + %1 is not playing at the moment. %1 nie gra w tej chwili. - - + + PokerTH - Info Message PokerTH - Informacja - - + + + + PokerTH - Question PokerTH - Pytanie @@ -4916,46 +4945,48 @@ p, li { white-space: pre-wrap; } Przerwa między rozdaniami ("start" rozpoczyna nowe rozdanie) + + Server Password: - Hasło serwera: + Hasło serwera: - + - + Server Port: Port serwera: - + - + Use SCTP Używaj SCTP - + - + Use IPv6 Używaj IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://pl.wikipedia.org/wiki/IPv6">Co to jest?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://pl.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Co to jest?</a> @@ -4978,44 +5009,44 @@ p, li { white-space: pre-wrap; } Nicki graczy - - + + Computer Engine Przeciwnicy komputerowi - - + + Opponent 6: Przeciwnik 6: - - + + Opponent 5: Przeciwnik 5: - - + + Opponent 4: Przeciwnik 4: - - + + Opponent 3: Przeciwnik 3: - - + + Opponent 2: Przeciwnik 2: - - + + Opponent 1: Przeciwnik 1: @@ -5030,13 +5061,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Wskazówka: Najlepiej używać obrazka z propocjami </span><br><span style=" font-weight:600; font-style:italic;">szerokość=50, wysokość=50.</span></p></body></html> - + Human Player: Gracz: - - + + Enable/Disable Logging Włącz zapisywanie historii @@ -5049,45 +5080,45 @@ p, li { white-space: pre-wrap; } dzień/dni - - + + Log File Directory: Zapisz pliki w: - - + + Write log after every: Zapisuj po: - - + + Store log files for: Przechowuj pliki przez: - - + + action (high frequent disc access) każdej akcji (bardzo częste odwołania do dysku) - - + + hand (medium disc access) każdym rozdaniu (przeciętne odwołania do dysku) - - + + game (low disc access) każdej grze (rzadkie odwołania do dysku) - + Log Messages Historia rozdań @@ -5134,14 +5165,14 @@ p, li { white-space: pre-wrap; } Ustawienia serwera gier internetowych - - + + Server Address: Adres serwera: - - + + Use password for private game: Używaj tego hasła do gier prywatnych: @@ -5277,7 +5308,7 @@ p, li { white-space: pre-wrap; } Włącz chat gier internetowych (serwer IRC) - + Player Nicks/Avatars Nicki graczy/avatary @@ -5339,7 +5370,7 @@ p, li { white-space: pre-wrap; } - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5350,7 +5381,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Informacja: Domyślne </span><span style=" font-weight:600; font-style:italic;">Ustawienia Gry</span><span style=" font-style:italic;"> takie jak "Maksymalna liczba graczy", "Początkowe żetony" i "Mała ciemna" zostaną wzięte </span><span style=" font-weight:600; font-style:italic;">z Ustawień Gier Sieciowych.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5379,18 +5410,18 @@ p, li { white-space: pre-wrap; } Ustawienia własne - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Informacja: Domyślne ustawienia gry takie jak "Maksymalna liczba graczy", "Początkowe żetony" oraz "Mała ciemna" zostaną wzięte z ustawień gry sieciowej. - + (This nick will also be used for the online game login) (ten nick będzie również użyty w grach online) - - + + Day(s) dni @@ -5429,8 +5460,8 @@ p, li { white-space: pre-wrap; } Hasło: - - + + Avatar Server: Serwer avatarów: @@ -5444,7 +5475,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings Ustawienia domyślne @@ -5573,84 +5604,84 @@ p, li { white-space: pre-wrap; } Serwer - - + + Game Gra - - + + Default game name: Domyślna nazwa gry: - - + + Default game type: Domyślny typ gry: - - + + Standard Standardowa - - + + Registered players only Tylko dla zarejestrowanych - - + + Invited players only Tylko dla zaproszonych - - + + Ranking game Gra rankingowa - - + + Show lobby chat Pokaż chat - - + + Automatically leave the table after the game finished Opuść stół automatycznie po zakończeniu gry - - + + Ignored Players Ignorowani gracze - - + + Player Gracz - - + + Remove Player Usuń gracza - + OK OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5663,19 +5694,19 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Gracz:<br /><span style=" font-style:italic;">(Ten nick zostanie też użyty jako login dla gier online)</span></p></body></html> - - + + Opponent 7: Przeciwnik 7: - - + + Opponent 8: Przeciwnik 8: - + Note: Best avatar quality with image ratio like width=50, height=50. Informacja: najlepsza jakość przy obrazku o wielkości: szerokość = 50, wysokość = 50. @@ -5700,14 +5731,14 @@ p, li { white-space: pre-wrap; } Usuń - - + + Reset all settings to default ... Przywróć ustawienia domyślne ... - - + + Note: You can not reset all settings to default during a running game! Informacja: nie można przywrócić ustawień fabrycznych podczas rozgrywania gry! @@ -5720,8 +5751,8 @@ p, li { white-space: pre-wrap; } Przeciwnik 1: {10:?} - - + + Opponent 9: Przeciwnik 9: @@ -5729,38 +5760,38 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Błąd w ustawieniach - + Select your flipside picture Wybierz własny obrazek - + Open Directory Otwórz folder - + Images (*.png *.jpg *.gif) Pliki graficzne (*.png *.jpg *.gif)Zjęcia (*.png *.jpg *.gif) - - + + Blinds Error Błąd ustawień ciemnych - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5820,17 +5851,17 @@ możliwą wartość. Francuski - + German Niemiecki - + Greek Grecki - + Hungarian Węgierski @@ -5843,244 +5874,254 @@ możliwą wartość. Portugalski - + Russian Rosyjski - + Turkish Turecki - + Language Changed Język został zmieniony - + You have changed application language to %1. Please restart PokerTH to load new language! Zmieniłeś język na %1. Proszę ponownie uruchomić PokerH aby wczytać nowy język! - + Italian Włoski - + Lithuania Litewski - + Polish Polski - + Portuguese-Brazilian Portugalski (Brazylia) - + Portuguese-Portuguese Portugalski (Portugalia) - + Slovak Słowacki - + Spanish Hiszpański - + Swedish Szwedzki - + Tamil Tamilski - + The entered flipside picture doesn't exist. Please enter an valid picture! Wybrany własny obrazek talii nie istnieje. Proszę wybrać inny obrazek! - - + + The log file directory doesn't exist. Please select an valid directory! Wybrany folder dla plików logu nie istnieje. Proszę wybrać inny folder! - + Norwegian Norweski - + + Galician + + + + Japanese Japoński - + Scottish Gaelic - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! Nazwy przeciwników nie są unikatowe. Proszę wybrać różne nazwy! - + The entered server list address is not a valid URL. Please enter a valid server list address! Wprowadzono niepoprawny adres URL listy serwerów. Proszę wprowadzić prawidłowy adres URL! - + Settings Information Informacje dotyczące ustawień - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Zmieniłeś katalog z plikami logów. Proszę ponownie uruchomić PokerTH aby użyć nowego katalogu! - - + + Maintainer Name Opiekun - - + + Maintainer EMail E-mail opiekuna - - + + Create Date Data utworzenia - + Windows Behaviour Rozmiar okna - + scaleable dowolny - + fixed stały - + Minimum Size Rozmiar minimalny - + Maximum Size Rozmiar maksymalny - + Fixed Size Stały rozmiar - + State Stan - + Please select your game table style Wybierz skórkę stołu - + PokerTH game table styles (*.xml) Skórka stołu PokerTH (*.xml) - + Game Table Style Error Błąd skórki stołu - + Selected game table style file is already in the list. Please select another one to add! Wybrana skórka stołu jest już na liście. Proszę wybierz inną aby ją dodać! - + Game Table Style File Error Błąd pliku skórki stołu - + Could not load game table style file correctly. Style will not be placed into list! Nie udało się wczytać skórki stołu z tego pliku. Skórka nie zostanie dodana do listy! - + Please select your card deck style Wybierz skórki kart - + PokerTH card deck styles (*.xml) Skórka kart PokerTH (*.xml) - + Card Deck Style Error Błąd skórki kart - + Selected card deck style file is already in the list. Please select another one to add! Wybrana skórka kart jest już na liście. Proszę wybierz inną aby ją dodać! - + Card Deck Style File Error Błąd pliku skórki kart - + Could not load card deck style file correctly. Style will not be placed into list! Nie udało się wczytać skórki kart z tego pliku. @@ -6119,12 +6160,12 @@ Skórka nie zostanie dodana do listy! Plik logu PokerTH w formacie SQL (*.pdb) - + PokerTH - Settings PokerTH - ustawienia - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Uwaga: Zamierzasz usunąc wszystkie ustawienia i zamknąć PokerTH! @@ -6615,17 +6656,17 @@ Please reenter the password and try again. Proszę wpisz hasło jeszcze raz. - + The avatar report was accepted by the server. Thank you. Zgłoszenie dotyczące avatara zostało zarejestrowane. Dziękujemy. - + This avatar was already reported by another player. Ten avatar został wcześniej zgłoszony przez innego gracza. - + An error occurred while reporting the avatar. Wystąpił błąd podczas zgłaszania avatara. @@ -6813,25 +6854,56 @@ Proszę wybrać inny nick. - + Server Message Komunikat serwera - + The game name report was accepted by the server. Thank you. Zgłoszenie nieodpowiedniej nazwy gry zostało przyjęte. Dziękujemy. - + This game name was already reported by another player. Ta nazwa gra została już uprzednio zgłoszona przez innego gracza. - + An error occurred while reporting the game name. Wystąpił błąd podczas zgłaszania nieodpowiedniej nazwy gry. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + PokerTH %1 diff --git a/ts/pokerth_ptbr.ts b/ts/pokerth_ptbr.ts index b64c9836..2067196f 100644 --- a/ts/pokerth_ptbr.ts +++ b/ts/pokerth_ptbr.ts @@ -4021,6 +4021,27 @@ Sinta se avontade para convidar outro jogador clicando no apelido na lista de jo Time Tempo + + Admin action ... + + + + Total kickban + + + + Close game + + + + Are you sure you want to close the game: +"%1"? + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -5413,7 +5434,7 @@ p, li { white-space: pre-wrap; }(new line) Server Password: - Senha do Servidor: + Senha do Servidor: Server Port: @@ -6293,6 +6314,14 @@ Voce tem certeza que deseja resetar para as configurações padrão?Scottish Gaelic + + Galician + + + + Vietnamese + + startNetworkGameDialog @@ -6829,6 +6858,31 @@ Por favor escolha um nome diferente. Start Network Game Iniciar Jogo em rede + + The game was closed. + + + + The game could not be closed. + + + + The player was kicked and banned permanently. + + + + The player was kicked, but could not be banned because it was a guest player. + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + The player could not be found. + + tabs diff --git a/ts/pokerth_ptpt.ts b/ts/pokerth_ptpt.ts index df3b4e90..853a4fcd 100644 --- a/ts/pokerth_ptpt.ts +++ b/ts/pokerth_ptpt.ts @@ -1792,46 +1792,46 @@ p, li { white-space: pre-wrap; } Iniciando jogo. Por favor, aguarde... - + Joining a private Game Entrar num jogo privado - + You are about to join a private game. Please enter the password! Está prestes a entrar num jogo privado. Indique a sua senha! - + open aberto - - - - + + + + Game Info Info sobre o jogo - - + + Game Jogo - - + + Players Jogadores - - + + State Estado @@ -1841,15 +1841,15 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Available Players Jogadores disponíveis @@ -1869,138 +1869,138 @@ p, li { white-space: pre-wrap; } Informações do jogador... - - - + + + Standard Padrão - - - + + + Registered players only Só para jogadores registados - - - + + + Invited players only Só para jogadores convidados - - - + + + Ranking game Jogo de classificação - + Connected players - max. %1 Jogadores ligados - máx. %1 - - + + T T - + Report inappropriate game name - - - + + + sec (action) - - - + + + sec (hand delay) - - + + Connected players - Max. %1 Jogadores ligados - máx. %1 - + running a decorrer - - + + running games: %1 jogos a decorrer: %1 - - + + open games: %1 jogos abertos: %1 - + Invite %1 Convidar %1 - + Ignore %1 Ignorar %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 foi convidado para %2 por %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 rejeitou o convite para %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 não pode entrar em %2. De momento, está ocupado.</span> - - + + The game will start in<br><b>%1</b> seconds. O jogo vai iniciar dentro de <br><b>%1</b> segundos. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Entrou num jogo disponível por convite. Sinta-se à vontade para convidar outros jogadores através da lista dos "nicks" disponíveis. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Foi convidado por <b>%2</b> para o jogo <b>%1</b>.<br> Pretende entra neste jogo? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? A partir de agora, não receberá mais mensagens de "chat" ou convites deste utilizador.<br>Pretende colocar o jogador <b>%1</b> na lista de ignorados? - - + + connected players: %1 Jogadores ligados: %1 @@ -2016,1316 +2016,1345 @@ Sinta-se à vontade para convidar outros jogadores através da lista dos "n - - + + Time - + Show player stats Mostrar as estatisticas do jogador - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players Jogadores ligados - + hands mãos - + minutes minutos - + double blinds duplicar "blinds" - + manual blinds order "blinds" manuais - + Server Error Erro do servidor - + You should not kick yourself from this game! Você não se pode expulsar deste jogo! - + search for player ... pesquisar pelo jogador... - + Chat is only available to registered players. O "chat" só está disponível para jogadores registados. - + Invite player ... Convidar jogador... - + Ignore player ... Ignorar jogador... - + %1 is playing in "%2". %1 está a jogar em "%2". - + %1 is not playing at the moment. De momento, %1 não está a jogar. - - + + PokerTH - Info Message Poket TH - Informações - - + + + + PokerTH - Question PokerTH - Pergunta - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Lituanês - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -4325,7 +4354,7 @@ Por favor, indique uma imagem válida! - + Factory Settings @@ -4443,7 +4472,13 @@ Por favor, indique uma imagem válida! Reproduzir notificações de jogo na internet (ex: jogador entrou no jogo) - + + + Server Password: + + + + OK @@ -4598,14 +4633,14 @@ Por favor, indique uma imagem válida! Exportar como HTML - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4645,41 +4680,41 @@ Por favor, indique uma imagem válida! - + - + Server Port: Porta do servidor: - + - + Use SCTP Utilizar SCTP - + - + Use IPv6 Utilizar IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">O que é isto?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">O que é isto?</a> @@ -4689,7 +4724,7 @@ Por favor, indique uma imagem válida! Definições do jogo na internet - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4700,61 +4735,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: As definições </span><span style=" font-weight:600; font-style:italic;">de jogo</span><span style=" font-style:italic;"> "Número máximo de jogadores", "Dinheiro inicial" e "Small Blind" serão utilizadas </span><span style=" font-weight:600; font-style:italic;">com base nas definições do jogo em rede.</span></p></body></html> - - + + Server Address: Endereço do servidor: - - + + Use password for private game: Utilizar senha para jogos privados: - - + + Computer Engine Computador - - + + Opponent 6: Adversário 6: - - + + Opponent 5: Adversário 5: - - + + Opponent 4: Adversário 4: - - + + Opponent 3: Adversário 3: - - + + Opponent 2: Adversário 2: - - + + Opponent 1: Adversário 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4765,8 +4800,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: Para uma melhor qualidade do "avatar", escolha uma imagem com </span><span style=" font-weight:600; font-style:italic;">largura=50, altura=50.</span></p></body></html> - - + + Enable/Disable Logging Ativar/desativar registos @@ -4775,44 +4810,44 @@ p, li { white-space: pre-wrap; } Guardar ficheiros para - - + + Log File Directory: Diretório para registos: - - + + Write log after every: Escrever registos a cada: - - + + action (high frequent disc access) ação (acesso frequente ao disco) - - + + hand (medium disc access) mão (acesso normal ao disco) - - + + game (low disc access) jogo (acesso baixo ao disco) - + Log Messages Mensagens de registo - + Player Nicks/Avatars "Nicks/Avatars" do jogaor @@ -4851,29 +4886,29 @@ p, li { white-space: pre-wrap; } Configuração manual de servidor - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: Guardar os ficheiros de registo para: - - + + Day(s) Dia(s) @@ -4913,8 +4948,8 @@ p, li { white-space: pre-wrap; } - - + + Avatar Server: Servidor do "avatar": @@ -5015,84 +5050,84 @@ p, li { white-space: pre-wrap; } Servidor - - + + Game Jogo - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Nome de jogo padrão: - - + + Default game type: Tipo de jogo padrão: - - + + Standard Padrão - - + + Registered players only Só para jogadores registados - - + + Invited players only Só para jogadores convidados - - + + Ranking game Jogo de classificação - - + + Show lobby chat Mostrar sala de "chat" - - + + Automatically leave the table after the game finished Sair da mesa automaticamente depois de o jogo terminar - - + + Ignored Players Jogadores ignorados - - + + Player Jogador - - + + Remove Player Remover jogador - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5105,20 +5140,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Jogador humano:<br /><span style=" font-style:italic;">(este "nick" também será utilizado para os jogos "on-line")</span></p></body></html> - - + + Opponent 7: Adversário 7: - - + + Opponent 8: Adversário 8: - - + + Opponent 9: Adversário 9: @@ -5126,65 +5161,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Erro de definições - + The entered flipside picture doesn't exist. Please enter an valid picture! A imagem indicada não existe. Por favor, indique uma imagem válida! - - + + The log file directory doesn't exist. Please select an valid directory! O diretório não existe. Por favor, indique um diretório válido! - + Language Changed O idioma foi alterado - + You have changed application language to %1. Please restart PokerTH to load new language! Você alterou o idioma da aplicação para %1. Por favor, reinicie a aplicação! - + Select your flipside picture Selecione a sua imagem invertida - + Images (*.png *.jpg *.gif) Imagens (*.png *.jpg *.gif) - + Open Directory Abrir diretório - - + + Blinds Error Erro de "blinds" - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5193,7 +5228,7 @@ This first-small-blind-value will be set to maximum allowed value. Esta 1ª "small blind" ira ser definida com o valor máximo permitido. - + The entered server list address is not a valid URL. Please enter a valid server list address! O endereço indicado não é uma URL válida. @@ -5251,222 +5286,232 @@ Por favor, indique um endereço válido! + Galician + + + + German Alemão - + Greek Grego - + Hungarian Húngaro - + Italian Italiano - + Japanese Japonês - + Lithuania Lituanês - + Norwegian Norueguês - + Polish Polaco - + Portuguese-Brazilian Português - Brasil - + Portuguese-Portuguese Português - Portugal - + Russian Russo - + Scottish Gaelic - + Slovak Eslovaco - + Spanish Espanhol - + Swedish Sueco - + Tamil Tamil - + Turkish Turco - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Nome do programador - - + + Maintainer EMail E-mail do programador - - + + Create Date Data de criação - + Windows Behaviour Comportamento das janelas - + scaleable à escala - + fixed fixa - + Minimum Size Tamanho mínimo - + Maximum Size Tamanho máximo - + Fixed Size Tamanho fixo - + State Estado - + Please select your game table style Por favor, escolha a mesa - + PokerTH game table styles (*.xml) Mesas do Poker TH (*.xml) - + Game Table Style Error Erro no estilo da mesa de jogo - + Selected game table style file is already in the list. Please select another one to add! O estilo da mesa selecionada já está na lista. Por favor, escolha outro estilo! - + Game Table Style File Error Erro no ficheiro de estilo da mesa de jogo - + Could not load game table style file correctly. Style will not be placed into list! Não foi possível carregar o ficheiro da mesa de jogo. O estilo não será colocado na lista! - + Please select your card deck style Por favor, escolha o baralho de cartas - + PokerTH card deck styles (*.xml) Baralhos de cartas do Poker Th (*.xml) - + Card Deck Style Error Erro no baralho de cartas - + Selected card deck style file is already in the list. Please select another one to add! O baralho de cartas selecionado já está na lista. Por favor, escolha outro estilo! - + Card Deck Style File Error Erro no ficheiro de estilo do baralho de cartas - + Could not load card deck style file correctly. Style will not be placed into list! Não foi possível carregar o ficheiro do baralho de cartas. @@ -5505,12 +5550,12 @@ O estilo não será colocado na lista! Registo SQL do Poker Th (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5982,17 +6027,17 @@ Please reenter the password and try again. Reintroduza a senha e tente novamente. - + The avatar report was accepted by the server. Thank you. O "avatar" denunciado foi aceite pelo servidor. Obrigado. - + This avatar was already reported by another player. Este "avatar" já foi denunciado por outro jogador. - + An error occurred while reporting the avatar. Ocorreu um erro ao denunciar o "avatar". @@ -6170,25 +6215,56 @@ Reintroduza a senha e tente novamente. - + Server Message Mensagem do servidor - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + PokerTH %1 diff --git a/ts/pokerth_ru.ts b/ts/pokerth_ru.ts index 70932152..c979e639 100644 --- a/ts/pokerth_ru.ts +++ b/ts/pokerth_ru.ts @@ -2335,46 +2335,46 @@ p, li { white-space: pre-wrap; } Вы хотите присоединиться к приватной игре. Пожалуйста, введите пароль! - - - - + + + + Game Info Информация об игре - + Server Error Ошибка сервера - + You should not kick yourself from this game! Вы не можете исключить себя из игры! - + Joining a private Game Присоединиться к закрытой игре - - + + Game Игра - - + + Players Игроки - - + + State Состояние @@ -2383,43 +2383,43 @@ p, li { white-space: pre-wrap; } Закрытая - + You are about to join a private game. Please enter the password! Вы хотите присоединиться к закрытой игре. Пожалуйста, введите пароль! - + running идет игра - + open открыта - - + + Connected players Подключенные игроки - + hands партий - + minutes минут - + double blinds удвоение ставок - + manual blinds order самостоятельное управление ставками @@ -2440,22 +2440,22 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Time - - + + Available Players Доступные игроки @@ -2476,45 +2476,61 @@ p, li { white-space: pre-wrap; } - + Show player stats Показать статистику игрока - + + + Admin action ... + + + + + Total kickban + + + + Report inappropriate game name Сообщить об недопустимом имени игры - - - + + Close game + + + + + + Standard Стандартный - - - + + + Registered players only Только зарегистрированные игроки - - - + + + Invited players only Только приглашенные игроки - - - + + + Ranking game Рейтинговая игра - + Connected players - max. %1 Подключенных игроков - макс. %1 @@ -2527,1310 +2543,1321 @@ p, li { white-space: pre-wrap; } сек (задержка партий) - + Afghanistan Афганистан - + ALand Islands Аландские острова - + Albania Албания - + Algeria Алжир - + American Samoa Американское Самоа - + Andorra Андорра - + Angola Ангола - + Anguilla Ангилья - + Antarctica Антарктида - + Antigua And Barbuda Антигуа и Барбуда - + Argentina Аргентина - + Armenia Армения - + Aruba Аруба - + Australia Австралия - + Austria Австрия - + Azerbaijan Азербайджан - + Bahamas Багамские острова - + Bahrain Бахрейн - + Bangladesh Бангладеш - + Barbados Барбадос - + Belarus Беларусь - + Belgium Бельгия - + Belize Белиз - + Benin Бенин - + Bermuda Бермудские острова - + Bhutan Бутан - + Bolivia Боливия - + Bosnia And Herzegovina Босния и Герцеговина - + Botswana Ботсвана - + Bouvet Island Буве - + Brazil Бразилия - + British Indian Ocean Territory Британская территория Индийского океана - + Brunei Darussalam Бруней-Даруссалам - + Bulgaria Болгария - + Burkina Faso Буркина-Фасо - + Burundi Бурунди - + Cambodia Камбоджа - + Cameroon Камерун - + Canada Канада - + Cape Verde Кабо-Верде - + Cayman Islands Каймановы острова - + Central African Republic Центрально-Африканская Республика - + Chad Чад - + Chile Чили - + China Китай - + Christmas Island Остров Рождества - + Cocos (Keeling) Islands Кокосовые (Килинг) острова - + Colombia Колумбия - + Comoros Коморские острова - + Congo Конго - + Congo, The Democratic Republic Of The Демократическая Республика Конго - + Cook Islands острова Кука - + Costa Rica Коста-Рика - + Cote D'Ivoire Кот-д'Ивуар - + Croatia Хорватия - + Cuba Куба - + Cyprus Кипр - + Czech Republic Чешская Республика - + Denmark Дания - + Djibouti Джибути - + Dominica Доминика - + Dominican Republic Доминиканская Республика - + Ecuador Эквадор - + Egypt Египет - + El Salvador Сальвадор - + Equatorial Guinea Экваториальная Гвинея - + Eritrea Эритрея - + Estonia Эстония - + Ethiopia Эфиопия - + Falkland Islands (Malvinas) Фолклендские (Мальвинские) острова - + Faroe Islands Фарерские острова - + Fiji Фиджи - + Finland Финляндия - + France Франция - + French Guiana Французская Гвиана - + French Polynesia Французская Полинезия - + French Southern Territories Французские Южные территории - + Gabon Габон - + Gambia Гамбия - + Georgia Грузия - + Germany Германия - + Ghana Гана - + Gibraltar Гибралтар - + Greece Греция - + Greenland Гренландия - + Grenada Гренада - + Guadeloupe Гваделупа - + Guam Гуам - + Guatemala Гватемала - + Guernsey Гернси - + Guinea Гвинея - + Guinea-Bissau Гвинея-Бисау - + Guyana Гайана - + Haiti Гаити - + Heard Island And Mcdonald Islands острова Херд и Макдональд - + Holy See (Vatican City State) Святой Престол (Государство-город Ватикан) - + Honduras Гондурас - + Hong Kong Гонконг - + Hungary Венгрия - + Iceland Исландия - + India Индия - + Indonesia Индонезия - + Iran, Islamic Republic Of Исламская Республика Иран - + Iraq Ирак - + Ireland Ирландия - + Isle Of Man Остров Мэн - + Israel Израиль - + Italy Италия - + Jamaica Ямайка - + Japan Япония - + Jersey Джерси - + Jordan Иордания - + Kazakhstan Казахстан - + Kenya Кения - + Kiribati Кирибати - + Korea, Democratic People'S Republic Of Корейская Народно-Демократическая Народная Республика - + Korea, Republic Of Республика Корея - + Kuwait Кувейт - + Kyrgyzstan Киргизия - + Lao People'S Democratic Republic Лаосская Народно-Демократическая Республика - + Latvia Латвия - + Lebanon Ливан - + Lesotho Лесото - + Liberia Либерия - + Libyan Arab Jamahiriya Ливийская Арабская Джамахирия - + Liechtenstein Лихтенштейн - + Lithuania Литва - + Luxembourg Люксембург - + Macao Макао - + Macedonia, The Former Yugoslav Republic Of Македония - + Madagascar Мадагаскар - + Malawi Малави - + Malaysia Малайзия - + Maldives Мальдивы - + Mali Мали - + Malta Мальта - + Marshall Islands Маршалловы острова - + Martinique Мартиника - + Mauritania Мавритания - + Mauritius Маврикий - + Mayotte Майотта - + Mexico Мексика - + Micronesia, Federated States Of Федеративные Штаты Микронезия - + Moldova, Republic Of Молдова - + Monaco Монако - + Mongolia Монголия - + Montserrat Монтсеррат - + Morocco Марокко - + Mozambique Мозамбик - + Myanmar Мьянма - + Namibia Намибия - + Nauru Науру - + Nepal Непал - + Netherlands Нидерланды - + Netherlands Antilles Нидерландские Антильские острова - + New Caledonia Новая Каледония - + New Zealand Новая Зеландия - + Nicaragua Никарагуа - + Niger Нигер - + Nigeria Нигерия - + Niue Ниуэ - + Norfolk Island Остров Норфолк - + Northern Mariana Islands Северные Марианские острова - + Norway Норвегия - + Oman Оман - + Pakistan Пакистан - + Palau Палау - + Palestinian Territory, Occupied Палестина - + Panama Панама - + Papua New Guinea Папуа-Новая Гвинея - + Paraguay Парагвай - + Peru Перу - + Philippines Филиппины - + Pitcairn Питкэрн - + Poland Польша - + Portugal Португалия - + Puerto Rico Пуэрто-Рико - + Qatar Катар - + Reunion Реюньон - + Romania Румыния - + Russian Federation Российская Федерация - + Rwanda Руанда - + Saint Helena Остров Святой Елены - + Saint Kitts And Nevis Сент-Китс и Невис - + Saint Lucia Сент-Люсия - + Saint Pierre And Miquelon Сен-Пьер и Микелон - + Saint Vincent And The Grenadines Сент-Винсент и Гренадины - + Samoa Самоа - + San Marino Сан-Марино - + Sao Tome And Principe Сан-Томе и Принсипи - + Saudi Arabia Саудовская Аравия - + Senegal Сенегал - + Serbia And Montenegro Сербия и Черногория - + Seychelles Сейшельские острова - + Sierra Leone Сьерра-Леоне - + Singapore Сингапур - + Slovakia Словакия - + Slovenia Словения - + Solomon Islands Соломоновы Острова - + Somalia Сомали - + South Africa ЮАР - + South Georgia And The South Sandwich Islands Южная Джорджия и Южные Сандвичевы острова - + Spain Испания - + Sri Lanka Шри Ланка - + Sudan Судан - + Suriname Суринам - + Svalbard And Jan Mayen Шпицберген и Ян-Майен - + Swaziland Свазиленд - + Sweden Швеция - + Switzerland Швейцария - + Syrian Arab Republic Сирийская Арабская Республика - + Taiwan, Province Of China Тайвань - + Tajikistan Таджикистан - + Tanzania, United Republic Of Объединенная Республика Танзания - + Thailand Таиланд - + Timor-Leste Тимор-Лешти - + Togo Того - + Tokelau Токелау - + Tonga Тонга - + Trinidad And Tobago Тринидад и Тобаго - + Tunisia Тунис - + Turkey Турция - + Turkmenistan Туркменистан - + Turks And Caicos Islands Острова Теркс и Кайкос - + Tuvalu Тувалу - + Uganda Уганда - + Ukraine Украина - + United Arab Emirates Объединенные Арабские Эмираты - + United Kingdom Великобритания - + United States Соединенные Штаты Америки - + United States Minor Outlying Islands Соединенные Штаты Америки Внешние малые острова - + Uruguay Уругвай - + Uzbekistan Узбекистан - + Vanuatu Вануату - + Venezuela Венесуэла - + Viet Nam Вьетнам - + Virgin Islands, British Виргинские острова, Британия - + Virgin Islands, U.S. Виргинские острова, США - + Wallis And Futuna Уоллис и Футуна - + Western Sahara Западная Сахара - + Yemen Йемен - + Zambia Замбия - + Zimbabwe Зимбабве - + Are you sure you want to report the game name: "%1" as inappropriate? Вы действительно хотите сообщить что имя игры "%1" недопустимое? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + - - + + T Тип - - - + + + sec (action) сек (действие) - - - + + + sec (hand delay) сек (задержка партий) - - + + Connected players - Max. %1 Подключенных игроков - Макс. %1 - - + + running games: %1 Текущих игры: %1 - - + + open games: %1 Открытых игр: %1 - + Invite %1 Пригласить %1 - + Ignore %1 Игнорировать %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 был приглашен %3 в %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 отклонил приглашение в %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 не может присоединиться к %2, потому что он занят.</span> - - + + The game will start in<br><b>%1</b> seconds. Игра начнётся через<br><b>%1</b> секунд. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Вы вошли в игру типа "только приглашенные". Не стесняйтесь приглашать других игроков нажав правой кнопкой мыши на их ​​имя в списке доступных игроков. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Вы были приглашены <b>%2</b> в игру <b>%1</b>.<br>Хотите присоединиться к этой игре? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Вы больше не будете получать сообщения из чата или приглашений в игру от данного пользователя. <br>Вы действительно хотите поместить игрока <b>%1</b> в список игнорирования? @@ -3839,50 +3866,52 @@ Feel free to invite other players by right-clicking on their nick in the availab Игроков в чате: %1 - - + + connected players: %1 Подключенных игроков: %1 - + search for player ... поиск игрока... - + Chat is only available to registered players. Чат доступен только для зарегистрированных игроков. - + Invite player ... Пригласить игрока... - + Ignore player ... Игнорировать игрока... - + %1 is playing in "%2". %1 играет в "%2". - + %1 is not playing at the moment. %1 не играет в данный момент. - - + + PokerTH - Info Message PokerTH - Информационное сообщение - - + + + + PokerTH - Question PokerTH - Вопрос @@ -5372,30 +5401,32 @@ p, li { white-space: pre-wrap; } Настройки сервера + + Server Password: - Пароль сервера: + Пароль сервера: - + - + Server Port: Порт сервера: - + - + Use SCTP Использовать SCTP - + - + Use IPv6 Использовать IPv6 @@ -5406,17 +5437,17 @@ p, li { white-space: pre-wrap; } - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://ru.wikipedia.org/wiki/Ipv6">Подробнее...</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://ru.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Подробнее...</a> @@ -5449,43 +5480,43 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Замечание: Наилучшее качество аватары при размерах картинки </span><span style=" font-weight:600; font-style:italic;">ширина=50, высота=50.</span></p></body></html> - - + + Computer Engine Компьютерные противники - - + + Opponent 5: Оппонент 5: - - + + Opponent 4: Оппонент 4: - - + + Opponent 3: Оппонент 3: - - + + Opponent 2: Оппонент 2: - - + + Opponent 1: Оппонент 1: - + Human Player: Игрок: @@ -5494,8 +5525,8 @@ p, li { white-space: pre-wrap; } Имена игроков - - + + Enable/Disable Logging Включить запись событий @@ -5508,21 +5539,21 @@ p, li { white-space: pre-wrap; } дней - - + + Log File Directory: Каталог файлов журнала: - - + + Write log after every: Записывать в журнал после каждой: - + Log Messages Журнал @@ -5549,18 +5580,18 @@ p, li { white-space: pre-wrap; } 10 - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 6: Оппонент 6: @@ -5569,20 +5600,20 @@ p, li { white-space: pre-wrap; } Время ожидания для хода игрока (сек): - - + + action (high frequent disc access) действия (много обращений к диску) - - + + hand (medium disc access) партии (средняя частота обращений к диску) - - + + game (low disc access) игры (малое количество обращения к диску) @@ -5633,14 +5664,14 @@ p, li { white-space: pre-wrap; } Настройки Интернет-сервера (Выделенный сервер) - - + + Server Address: Адрес сервера: - - + + Use password for private game: Использовать пароль для закрытой игры: @@ -5793,7 +5824,7 @@ p, li { white-space: pre-wrap; } Разрешить/Запретить общий чат (IRC сервер) - + Player Nicks/Avatars Имена и аватары игроков @@ -5865,7 +5896,7 @@ p, li { white-space: pre-wrap; } сек - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5876,7 +5907,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Примечание: по умолчанию, </span><span style=" font-weight:600; font-style:italic;">Настройки Игры,</span><span style=" font-style:italic;"> такие как "Максимальное количество игроков", "Начальная сумма" будут взяты </span><span style=" font-weight:600; font-style:italic;">из Настроек Сетевой Игры.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5917,14 +5948,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Имя игрока (Ник):<br /><span style=" font-size:11pt; font-style:italic;">(Этот ник будет также использоваться для входа в онлайн игру)</span></p></body></html> - - + + Store log files for: Хранить файлы журнала: - - + + Day(s) Дня(ей) @@ -6019,8 +6050,8 @@ p, li { white-space: pre-wrap; } Пароль: - - + + Avatar Server: Адрес сервера картинок аватаров: @@ -6034,7 +6065,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings Сброс настроек @@ -6133,7 +6164,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Получить новые стили колод PokerTH...</span></a></p></body></html> - + OK @@ -6169,8 +6200,8 @@ p, li { white-space: pre-wrap; } Сервер - - + + Game Игра @@ -6187,73 +6218,73 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Примечание: по умолчанию </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Настройки игры</span><span style=" font-size:12pt; font-style:italic;"> такие как &quot;Максимальное количество игроков&quot;, &quot;Начальная сумма&quot; и &quot;Начальная ставка&quot; будут взяты </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">из Настроек сетевой игры.</span></p></body></html> - - + + Default game name: Имя игры по умолчанию: - - + + Default game type: Тип игры по умолчанию: - - + + Standard Стандартный - - + + Registered players only Только зарегистрированнные игроки - - + + Invited players only Только приглашенные игроки - - + + Ranking game Рейтинговая игра - - + + Show lobby chat Показывать общий чат - - + + Automatically leave the table after the game finished Автоматически покинуть стол после окончания игры - - + + Ignored Players Игнорируемые игроки - - + + Player Игрок - - + + Remove Player Удалить игрока - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6266,19 +6297,19 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Имя игрока (Ник):<br /><span style=" font-style:italic;">(Этот ник будет также использоваться для входа в онлайн игру)</span></p></body></html> - - + + Opponent 7: Оппонент 7: - - + + Opponent 8: Оппонент 8: - + Note: Best avatar quality with image ratio like width=50, height=50. @@ -6303,14 +6334,14 @@ p, li { white-space: pre-wrap; } Удалить - - + + Reset all settings to default ... Сбросить все настройки на настройки по умолчанию... - - + + Note: You can not reset all settings to default during a running game! Примечание: Вы не можете сбросить все настройки на настройки по умолчанию при запущенной игре. @@ -6323,8 +6354,8 @@ p, li { white-space: pre-wrap; } Оппонент 6: {10:?} - - + + Opponent 9: Оппонент 9: @@ -6332,11 +6363,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Ошибка настроек @@ -6353,7 +6384,7 @@ Please select an valid directory! Укажите правильный каталог! - + Select your flipside picture Выберите свою картинку рубашки карт @@ -6362,24 +6393,24 @@ Please select an valid directory! Картинки (*.png) - + Open Directory Открыть каталог - + Images (*.png *.jpg *.gif) Картинки (*.png *.jpg *.gif) - - + + Blinds Error Ошибка ставок - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -6418,12 +6449,12 @@ This first-small-blind-value will be set to maximum allowed value. Французский - + German Немецкий - + Hungarian Венгерский @@ -6436,79 +6467,79 @@ This first-small-blind-value will be set to maximum allowed value. Португальский - + Russian Русский - + Turkish Турецкий - + Language Changed Язык изменен - + You have changed application language to %1. Please restart PokerTH to load new language! Вы изменили язык приложения на %1. Закройте и запустите PokerTH заново! - + Italian Итальянский - + Lithuania Литва - + Portuguese-Brazilian Португальский-бразильский - + Portuguese-Portuguese Португальский - + Slovak Словацкий - + Tamil Тамильский - + The entered flipside picture doesn't exist. Please enter an valid picture! Указанная картика рубашки карт не существует. Укажите правильную картинку! - - + + The log file directory doesn't exist. Please select an valid directory! Указанный каталог для лог-файла не существует. Укажите правильный каталог! - + Norwegian Норвежский - + Spanish Испанский @@ -6518,7 +6549,7 @@ Please select an valid directory! Болгарский - + Polish Польский @@ -6528,17 +6559,17 @@ Please select an valid directory! Китайский - + Greek Греческий - + Swedish Шведский - + The entered server list address is not a valid URL. Please enter a valid server list address! Введенный список серверов не является ссылкой. @@ -6555,150 +6586,160 @@ Please enter a valid server list address! Датский - + + Galician + + + + Japanese Японский - + Scottish Gaelic - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! Имена оппонентов не являются уникальными. Пожалуйста, выберите различные названия для каждого оппонента! - + Settings Information Сведения настроек - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Вы изменили каталог лог-файла. Перезапустите PokerTH, чтобы использовать новый каталог для лог-файлов! - - + + Maintainer Name Имя разработчика - - + + Maintainer EMail E-Mail адрес разработчика - - + + Create Date Дата создания - + Windows Behaviour Оформление окна - + scaleable масштабируемое - + fixed фиксированное - + Minimum Size Минимальный размер - + Maximum Size Максимальный размер - + Fixed Size Фиксированный размер - + State Состояние - + Please select your game table style Пожалуйста, выберите стиль игрового стола - + PokerTH game table styles (*.xml) Стили столов PokerTH (*.xml) - + Game Table Style Error Ошибка стиля игрового стола - + Selected game table style file is already in the list. Please select another one to add! Выбранный стиль игрового стола уже есть в списке. Выберите еще один для добаления! - + Game Table Style File Error Ошибка файла стиля игрового стола - + Could not load game table style file correctly. Style will not be placed into list! Некоректный файл стиля игрового стола. Стиль не будет добавлен в список! - + Please select your card deck style Пожалуйста, выберите ваш стиль колоды - + PokerTH card deck styles (*.xml) Стили колоды PokerTH (*.xml) - + Card Deck Style Error Ошибка стиля колоды карт - + Selected card deck style file is already in the list. Please select another one to add! Выбранный стиль колоды уже в списке. Выберите еще один для добавления! - + Card Deck Style File Error Ошибка файла стиля колоды карт - + Could not load card deck style file correctly. Style will not be placed into list! Некорректный файл стиля колоды карт. @@ -6745,12 +6786,12 @@ Style will not be placed into list! PokerTH SQL лог-файл (*.pdb) - + PokerTH - Settings PokerTH - Настройки - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Внимание: это удалит все ваши личные настройки и закроет PokerTH! @@ -7283,35 +7324,66 @@ Please reenter the password and try again. Введите пароль заново и подключитесь снова. - + The avatar report was accepted by the server. Thank you. Сообщение об аватаре было принято сервером. Спасибо. - + This avatar was already reported by another player. Об этом аватаре уже сообщалось другим игроком. - + An error occurred while reporting the avatar. Произошла ошибка при сообщении об аватаре. - + The game name report was accepted by the server. Thank you. Сообщение об имени игры было принято сервером. Спасибо. - + This game name was already reported by another player. Об этом имени игры сообщалось другим игроком. - + An error occurred while reporting the game name. Произошля ошибка при сообщении об имени игры + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + The password is too long. Please choose another one. @@ -7474,7 +7546,7 @@ Please choose a different name. - + Server Message Сообщение сервера diff --git a/ts/pokerth_sk.ts b/ts/pokerth_sk.ts index d1675314..9b7618c4 100644 --- a/ts/pokerth_sk.ts +++ b/ts/pokerth_sk.ts @@ -2396,46 +2396,46 @@ p, li { white-space: pre-wrap; } hra - - - - + + + + Game Info Info o hre - + Server Error Chyba servera - + You should not kick yourself from this game! Nemali by ste z tejto hry vykopnúť sám seba! - + Joining a private Game Pripájam sa k súkromnej hre - - + + Game Hra - - + + Players Hráči - - + + State Stav @@ -2444,43 +2444,43 @@ p, li { white-space: pre-wrap; } Súkromný - + You are about to join a private game. Please enter the password! Chcete sa pripojiť k súkromnej hre. Prosím zadajte heslo! - + running spúšťam - + open otvorená - - + + Connected players Pripojení hráči - + hands rozdania - + minutes minúty - + double blinds dvojité stávky - + manual blinds order ručné stanovenie stávok @@ -2495,22 +2495,22 @@ p, li { white-space: pre-wrap; } - - + + P - - + + Time - - + + Available Players Dostupní hráči @@ -2531,1273 +2531,1300 @@ p, li { white-space: pre-wrap; } - + Show player stats - + + + Admin action ... + + + + + Total kickban + + + + Report inappropriate game name - - - + + Close game + + + + + + Standard Štandardná - - - + + + Registered players only Iba registrovaní hráči - - - + + + Invited players only Iba pozvaní hráči - - - + + + Ranking game Vyhodnocovaná hra - + Connected players - max. %1 Pripojení hráči - max. %1 - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Litovština - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + - - + + T @@ -3812,82 +3839,82 @@ p, li { white-space: pre-wrap; } - - - + + + sec (action) - - - + + + sec (hand delay) - - + + Connected players - Max. %1 Pripojení hráči - Max. %1 - - + + running games: %1 spustené hry: %1 - - + + open games: %1 otvorené hry: %1 - + Invite %1 Pozvať %1 - + Ignore %1 Ignorovať %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 bol(a) pozvaný(á) k %2 užívateľom %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 odmietol pozvanie k %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 sa nemôže pridať k %2, pretože je zaneprázdnený.</span> - - + + The game will start in<br><b>%1</b> seconds. Hra sa začne o <br><b>%1</b> sekúnd. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Pridali ste sa k hre, ktorej typ je "len na pozvánku". Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich priezvisko v zozname dostupných hráčov. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Prišla vám pozvánka ku hre <b>%1</b> od <b>%2</b>.<br>Želáte si pridať sa k tejto hre? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Od tohto užívateľa už neobdržíte správy v chate alebo pozvánky do hry.<br>Naozaj si prajete pridať hráča <b>%1</b> do zoznamu ignorovaných? @@ -3896,50 +3923,52 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie hráči na chate: %1 - - + + connected players: %1 pripojení hráči: %1 - + search for player ... hľadanie hráča... - + Chat is only available to registered players. Chat je dostupný len registrovaným hráčom. - + Invite player ... Pozvať hráča... - + Ignore player ... Ignorovať hráča... - + %1 is playing in "%2". %1 hrá v "%2". - + %1 is not playing at the moment. %1 momentálne nehrá. - - + + PokerTH - Info Message PokerTH - Informačná správa - - + + + + PokerTH - Question PokerTH - Otázka @@ -5462,46 +5491,48 @@ p, li { white-space: pre-wrap; } Nastavenia servera + + Server Password: - Heslo servera: + Heslo servera: - + - + Server Port: Port servera: - + - + Use SCTP Používať SCTP - + - + Use IPv6 Používať IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Čo je to?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Čo je to?</a> @@ -5532,44 +5563,44 @@ p, li { white-space: pre-wrap; } Prezývky hráčov - - + + Computer Engine Počítačový engine - - + + Opponent 6: Súper 6: - - + + Opponent 5: Súper 5: - - + + Opponent 4: Súper 4: - - + + Opponent 3: Súper 3: - - + + Opponent 2: Súper 2: - - + + Opponent 1: Súper 1: @@ -5584,18 +5615,18 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Poznámka: Najlepšiu kvalitu má avatar pri veľkosti obrázka </span><span style=" font-weight:600; font-style:italic;">šírka=50, výška=50.</span></p></body></html> - + Human Player: Ľudský hráč: - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Enable/Disable Logging Zapnúť/vypnúť zaznamenávanie @@ -5608,39 +5639,39 @@ p, li { white-space: pre-wrap; } Deň(dní) - - + + Log File Directory: Adresár s log súborom: - - + + Write log after every: Zapísať log pri každom: - - + + action (high frequent disc access) akcia (častý prístup na disk) - - + + hand (medium disc access) rozdanie (stredný prístup na disk) - - + + game (low disc access) hra (nízky prístup na disk) - + Log Messages Zaznamenávať správy @@ -5687,14 +5718,14 @@ p, li { white-space: pre-wrap; } Nastavenia internetového servera (Dedikovaný server) - - + + Server Address: Adresa servera: - - + + Use password for private game: Použiť heslo pre súkromnú hru: @@ -5844,7 +5875,7 @@ p, li { white-space: pre-wrap; } Zapnúť/vypnúť lobby chat (IRC server) - + Player Nicks/Avatars Prezývka/avatar hráča @@ -5916,7 +5947,7 @@ p, li { white-space: pre-wrap; } s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5927,7 +5958,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Poznámka: Východzie </span><span style=" font-weight:600; font-style:italic;">nastavenie hry</span><span style=" font-style:italic;"> ako "Maximálny počet hráčov", "Úvodná hotovosť" a "Malá stávka" budú použité </span><span style=" font-weight:600; font-style:italic;">z nastavenia sieťovej hry..</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5946,7 +5977,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings @@ -6010,84 +6041,84 @@ p, li { white-space: pre-wrap; } Manuálne nastavenie serveru - - + + Game Hra - - + + Default game name: Východzí názov hry: - - + + Default game type: Východzí typ hry: - - + + Standard Štandardná - - + + Registered players only Iba registrovaní hráči - - + + Invited players only Iba pozvaní hráči - - + + Ranking game Vyhodnocovaná hra - - + + Show lobby chat Zobraziť lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players Ignorovaní hráči - - + + Player Hráč - - + + Remove Player Odstrániť hráča - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6100,26 +6131,26 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ľudský hráč:<br /><span style=" font-style:italic;">(Táto prezývka bude použitá aj ako login pre hru na internete)</span></p></body></html> - - + + Store log files for: - - + + Day(s) Deň(Dní) - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -6222,8 +6253,8 @@ p, li { white-space: pre-wrap; } Heslo: - - + + Avatar Server: Server s avatarmi: @@ -6305,24 +6336,24 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Získať nové štýly kariet PokerTH...</span></a></p></body></html> - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 7: Súper 7: - - + + Opponent 8: Súper 8: @@ -6331,8 +6362,8 @@ p, li { white-space: pre-wrap; } Súper 1: {10:?} - - + + Opponent 9: Súper 9: @@ -6340,11 +6371,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Chyba v nastaveniach @@ -6361,7 +6392,7 @@ Please select an valid directory! Prosím, vyberte platný adresár! - + Select your flipside picture Vyberte si obrázok pre rub kariet @@ -6370,24 +6401,24 @@ Prosím, vyberte platný adresár! Obrázky (*.png) - + Open Directory Otvoriť adresár - + Images (*.png *.jpg *.gif) Obrázky (*.png *.jpg *.gif) - - + + Blinds Error Chyba stávok - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -6415,12 +6446,12 @@ Hodnota prvej malej stávky bude nastavená na maximálnu možnú úroveň.Francúzština - + German Nemčina - + Hungarian Maďarčina @@ -6433,59 +6464,59 @@ Hodnota prvej malej stávky bude nastavená na maximálnu možnú úroveň.Portugalsky - + Russian Ruština - + Turkish Turečtina - + Language Changed Zmenený jazyk - + You have changed application language to %1. Please restart PokerTH to load new language! Zmenili ste jazyk aplikácie na %1. Prosím reštartujte PokerTH pre načítanie nového jazyka! - + Italian Taliančina - + Slovak Slovenčina - + The entered flipside picture doesn't exist. Please enter an valid picture! Zadaný obrázok pre rub karty neexistuje. Prosím zadajte platný obrázok! - - + + The log file directory doesn't exist. Please select an valid directory! Adresár pre súbor s logmi neexistuje. Prosím zadajte platný adresár! - + Norwegian Nórština - + Spanish Španielčina @@ -6495,7 +6526,7 @@ Prosím zadajte platný adresár! Bulharčina - + Polish Poľština @@ -6505,17 +6536,17 @@ Prosím zadajte platný adresár! Čínština - + Greek Gréčtina - + Swedish Švédština - + The entered server list address is not a valid URL. Please enter a valid server list address! Zadaná adresa zoznamu serverov nie je platná URL. @@ -6547,168 +6578,178 @@ Zadajte, prosím, platnú adresu zoznamu serverov! Dánčina - - Japanese + + Galician + Japanese + + + + Lithuania Litovština - + Portuguese-Brazilian Brazílska portugalčina - + Portuguese-Portuguese Portugalská portugalčina - + Scottish Gaelic - + Tamil Tamilčina - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Meno správcu - - + + Maintainer EMail E-mail správcu - - + + Create Date Dátum vytvorenia - + Windows Behaviour Správanie okien - + scaleable škálovateľný - + fixed fixná veľkosť - + Minimum Size Minimálne rozmery - + Maximum Size Maximálne rozmery - + Fixed Size Fixné rozmery - + State Stav - + Please select your game table style Prosím, vyberte si váš štýl herného stola - + PokerTH game table styles (*.xml) Štýly herných stolov PokerTH (*.xml) - + Game Table Style Error Chyba v štýle herného stola - + Selected game table style file is already in the list. Please select another one to add! Vybraný súbor so štýlom herného stola je už v zozname. Prosím, zvoľte si iný štýl na pridanie! - + Game Table Style File Error Chyba v súbore so štýlom herného stola - + Could not load game table style file correctly. Style will not be placed into list! Nepodarilo sa korektne načítať súbor so štýlom herného stola. Štýl nebude pridaný do zoznamu! - + Please select your card deck style Prosím, vyberte si váš štýl kariet - + PokerTH card deck styles (*.xml) Štýly kariet PokerTH (*.xml) - + Card Deck Style Error Chyba v štýle kariet - + Selected card deck style file is already in the list. Please select another one to add! Vybraný súbor so štýlom kariet je už v zozname. Prosím, zvoľte si iný štýl na pridanie! - + Card Deck Style File Error Chyba v súbore so štýlom kariet - + Could not load card deck style file correctly. Style will not be placed into list! Nepodarilo sa korektne načítať súbor so štýlom kariet. @@ -6719,12 +6760,12 @@ Style will not be placed into list! PokerTH - Súbor so záznamom - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -7268,35 +7309,66 @@ Please reenter the password and try again. Prosím, skúste to znovu. - + The avatar report was accepted by the server. Thank you. Hlásenie o avatarovi bolo prijaté serverom. Ďakujeme. - + This avatar was already reported by another player. Tento avatar už bol nahlásený iným hráčom. - + An error occurred while reporting the avatar. Počas nahlasovania avatara nastala chyba. - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + The password is too long. Please choose another one. @@ -7459,7 +7531,7 @@ Prosím, vyberte si iné meno. - + Server Message Správa serveru diff --git a/ts/pokerth_sv.ts b/ts/pokerth_sv.ts index 3abc1b9e..d44358bd 100644 --- a/ts/pokerth_sv.ts +++ b/ts/pokerth_sv.ts @@ -1551,46 +1551,46 @@ p, li { white-space: pre-wrap; } %1s spel - + Joining a private Game Ansluter till privat spel - + You are about to join a private game. Please enter the password! Du ansluter till ett privat parti. Vänligen ange lösenordet. - + open öppet - - - - + + + + Game Info Spelinformation - - + + Game - - + + Players Spelare - - + + State Status @@ -1600,15 +1600,15 @@ p, li { white-space: pre-wrap; } - - + + P - - + + Available Players Tillgängliga spelare @@ -1628,47 +1628,47 @@ p, li { white-space: pre-wrap; } - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - + Connected players - max. %1 - - + + T @@ -1684,98 +1684,114 @@ p, li { white-space: pre-wrap; } - - + + Time - + Show player stats - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players - Max. %1 - + running aktivt - - + + running games: %1 aktiva spel: %1 - - + + open games: %1 öppna spel: %1 - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -1784,1310 +1800,1323 @@ Feel free to invite other players by right-clicking on their nick in the availab Spelare i chatten: %1 - - + + connected players: %1 Anslutna spelare: %1 - - + + Connected players - + hands händer - + minutes minuter - + double blinds Dubbla mörkar vid höjning - + manual blinds order Manuell mörk-ordning - + Server Error Serverfel - + You should not kick yourself from this game! Du borde inte kicka dig själv från spelet! - + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -4335,7 +4364,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings @@ -4453,7 +4482,7 @@ p, li { white-space: pre-wrap; } Spela upp ljud vid nätverks- och internetspel, t ex "spelare anslöt till spelet" - + OK @@ -4598,14 +4627,14 @@ p, li { white-space: pre-wrap; } Ta bort - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4634,46 +4663,48 @@ p, li { white-space: pre-wrap; } Inställningar för Nätverks-server + + Server Password: - Serverlösenord: + Serverlösenord: - + - + Server Port: Serverport: - + - + Use SCTP Använd SCTP - + - + Use IPv6 Använd IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://sv.wikipedia.org/wiki/Ipv6">Vad är det här?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://sv.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Vad är det här?</a> @@ -4683,7 +4714,7 @@ p, li { white-space: pre-wrap; } Inställningar för Internet-spel - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4698,14 +4729,14 @@ p, li { white-space: pre-wrap; } Inställningar för Internetserver (dedikerad server) - - + + Server Address: Serveradress: - - + + Use password for private game: Använd lösenord för privat spel: @@ -4734,49 +4765,49 @@ p, li { white-space: pre-wrap; } Spelarnas namn - - + + Computer Engine Spelmotor - - + + Opponent 6: Motståndare 6: - - + + Opponent 5: Motståndare 5: - - + + Opponent 4: Motståndare 4: - - + + Opponent 3: Motståndare 3: - - + + Opponent 2: Motståndare 2: - - + + Opponent 1: Motståndare 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4787,13 +4818,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">OBS: Bäst avatar-kvalité uppnås med stoleksförhållande </span><span style=" font-weight:600; font-style:italic;">bredd=50, höjd=50.</span></p></body></html> - + Human Player: Mänsklig spelare: - - + + Enable/Disable Logging Aktivera/stäng av logg-funktionen @@ -4806,14 +4837,14 @@ p, li { white-space: pre-wrap; } Dag(ar) - - + + Log File Directory: Katalog för loggar: - - + + Write log after every: Skriv till log efter varje: @@ -4823,32 +4854,32 @@ p, li { white-space: pre-wrap; } - - + + action (high frequent disc access) handling (många skrivningar till disk) - - + + hand (medium disc access) hand (medelmånga skrivningar till disk) - - + + game (low disc access) parti (få skrivningar till disk) - + Log Messages Loggmeddelanden - + Player Nicks/Avatars Spelarnamn/avatarer @@ -4891,24 +4922,24 @@ p, li { white-space: pre-wrap; } - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -4947,8 +4978,8 @@ p, li { white-space: pre-wrap; } Lösenord: - - + + Avatar Server: @@ -5034,84 +5065,84 @@ p, li { white-space: pre-wrap; } - - + + Game - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - - Default game name: - - - - + - Default game type: + Default game name: + Default game type: + + + + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5120,14 +5151,14 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Motståndare 1: {7:?} - - + + Opponent 8: Motståndare 1: {8:?} @@ -5136,8 +5167,8 @@ p, li { white-space: pre-wrap; } Motståndare 1: {10:?} - - + + Opponent 9: Motståndare 1: {10:?} {9:?} @@ -5160,22 +5191,22 @@ p, li { white-space: pre-wrap; } Franska - + German Tyska - + Hungarian Ungerska - + Italian Italienska - + Norwegian Norska @@ -5184,85 +5215,85 @@ p, li { white-space: pre-wrap; } Portugisiska - + Russian Ryska - + Slovak Slovakiska - + Spanish Spanska - + Turkish Turkiska - - - - - + + + + + Settings Error Inställningsfel - + The entered flipside picture doesn't exist. Please enter an valid picture! Den angivna kortbilden finns inte. Välj en giltig bild. - - + + The log file directory doesn't exist. Please select an valid directory! Den angivna mappen finns inte. Välj en giltig mapp för loggfiler. - + Language Changed Nytt språk valt - + You have changed application language to %1. Please restart PokerTH to load new language! Du har bytt språk till %1. Starta om PokerTH för att se förändringen. - + Select your flipside picture Välj bild för kortens baksida - + Images (*.png *.jpg *.gif) Bilder (*.png *.jpg *.gif) - + Open Directory Öppna mapp - - + + Blinds Error Mörk-fel - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5306,197 +5337,207 @@ Det kommer sättas till det maximalt tillåtna värdet. - + + Galician + + + + Greek - + Japanese - + Lithuania - + Polish Polska - + Portuguese-Brazilian - + Portuguese-Portuguese - + Scottish Gaelic - + Swedish - + Tamil - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + The entered server list address is not a valid URL. Please enter a valid server list address! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State Status - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5962,17 +6003,17 @@ Please reenter the password and try again. Vänligen ange det korrekta lösenordet. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. @@ -6160,25 +6201,56 @@ Vänligen välj ett nytt namn. - + Server Message - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + PokerTH %1 diff --git a/ts/pokerth_ta.ts b/ts/pokerth_ta.ts index 6cee32cb..960a73bd 100644 --- a/ts/pokerth_ta.ts +++ b/ts/pokerth_ta.ts @@ -1525,74 +1525,74 @@ p, li { white-space: pre-wrap; } விளையாட்டு ஆரம்பமாகிறது. தயவு செய்து காத்திருக்கவும் ... - - - + + + sec (action) - - - + + + sec (hand delay) - + Joining a private Game ஒரு தனியார் விளையாட்டில் இணைந்துகொண்டிருக்கிறது - + You are about to join a private game. Please enter the password! நீங்கள் ஒரு தனியார் விளையாட்டில் இணைய போகிறீர்கள். தயவு செய்து இரகசிய சொல்லை தரவும்! - + open திற - - - - + + + + Game Info விளையாட்டை பற்றிய செய்தி - - + + Game விளையாட்டு - - + + Players விளையாட்டு வீரர்கள் - - + + State வீரரின் தற்போதைய நிலவரம் - - + + P - - + + Available Players விளையாட இருக்கும் வீரர்கள் @@ -1612,47 +1612,47 @@ p, li { white-space: pre-wrap; } - + Report inappropriate game name - - - + + + Standard சாதாரண - - - + + + Registered players only பதிவு செய்த விளையாட்டு வீரர்கள் மட்டும் - - - + + + Invited players only அழைக்கப்பட்ட விளையாட்டு வீரர்கள் மட்டும் - - - + + + Ranking game தரவரிசை விளையாட்டு - + Connected players - max. %1 விளையாட்டில் இணைந்துள்ள வீரர்கள் - அதிகபட்சம். %1 - - + + T @@ -1668,1315 +1668,1342 @@ p, li { white-space: pre-wrap; } - - + + Time - + Show player stats - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players - Max. %1 விளையாட்டில் இணைந்துள்ள வீரர்கள் - அதிகபட்சம். %1 - + running நடைபெற்றுகொண்டிருக்கும் - - + + running games: %1 நடைபெற்றுகொண்டிருக்கும் விளையாட்டு: %1 - - + + open games: %1 ஆரம்பித்த விளையாட்டுகள்: %1 - + Invite %1 - + Ignore %1 - + %1 is playing in "%2". - + %1 is not playing at the moment. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + + + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -2985,54 +3012,54 @@ Feel free to invite other players by right-clicking on their nick in the availab உரையாடும் இடத்தில் உள்ள வீரர்கள்: %1 - - + + connected players: %1 இணைந்துள்ள விளையாட்டு வீரர்கள்: %1 - - + + Connected players இணைந்துள்ள விளையாட்டு வீரர்கள் - + hands சுற்றுகள் - + minutes நொடிகள் - + double blinds இரட்டிப்பு பந்தயத்தொகை - + manual blinds order சுய பந்தயத்தொகை வரிசை - + Server Error விளையாட்டு வழங்கியில் பிழை - + You should not kick yourself from this game! உங்களை நீங்களே விளையாட்டிலிருந்து வெளியே தள்ள கூடாது! - + search for player ... - + Chat is only available to registered players. @@ -3041,7 +3068,7 @@ Feel free to invite other players by right-clicking on their nick in the availab %1 என்ற விளையாட்டு வீரரை அழையுங்கள் - + Invite player ... விளையாட்டு வீரரை அழையுங்கள் ... @@ -3050,7 +3077,7 @@ Feel free to invite other players by right-clicking on their nick in the availab %1 என்ற விளையாட்டு வீரரை புறக்கணிக்கவும் - + Ignore player ... விளையாட்டு வீரரை புறக்கணிக்கவும் ... @@ -3061,8 +3088,8 @@ You can invite other players with right-click on their nick in the left availabl மற்றவர்களை அழைக்க இடது பக்கமுள்ள வீரர்களின் பட்டியலில் மௌசின் வலது பொத்தானை அழுத்தி விளையாட அழையுங்கள். - - + + PokerTH - Info Message போகர்டேஹோ - செய்தி தகவல் @@ -3087,8 +3114,10 @@ You can invite other players with right-click on their nick in the left availabl இனிமேல் இந்த நபரிடமிருந்து உரையாடல் செய்தியோ விளையாட்டு அழைப்பிதலோ பெற முடியாது.<br>நீங்கள் இந்த விளையாட்டு வீரரை <b>%1</b> புறக்கணிப்பு பட்டியலில் போட விரும்புகிறீர்களா? - - + + + + PokerTH - Question போகர்டேஹோ - வினா @@ -4075,7 +4104,7 @@ Please enter an valid picture! - + Factory Settings @@ -4193,7 +4222,13 @@ Please enter an valid picture! "விளையாட்டு வீரர் சேர்ந்துள்ளார்" போன்ற கணினி வலை/இணையதள விளையாட்டு அறிவுப்புக்கு சப்தம் எழுப்பவும் - + + + Server Password: + + + + OK @@ -4340,14 +4375,14 @@ Please enter an valid picture! விளையாட்டு வீரர் ஒரு செயல் செய்ய காலவரம்பு: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4367,41 +4402,41 @@ Please enter an valid picture! - + - + Server Port: விளையாட்டு வழங்கியின் போர்ட்: - + - + Use SCTP எஸ்சிதிபி ஐ உபயோகிக்கவும் - + - + Use IPv6 ஐபிவி6 ஐ உபயோகிக்கவும் - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">என்றால் என்ன?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">என்றால் என்ன?</a> @@ -4411,7 +4446,7 @@ Please enter an valid picture! இணையதள விளையாட்டு அமைப்பு - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4422,61 +4457,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">குறிப்பு: எப்பொழுதும் உபயோகிக்ககூடிய </span><span style=" font-weight:600; font-style:italic;">விளையாட்டு அமைப்பு </span><span style=" font-style:italic;"> உதாரணத்திற்கு "விளையாட்டு வீரர்களின் அதிகபட்ச எண்ணிக்கை", "பணம் செலுத்த ஆரம்பி" மற்றும் "குறைந்த பந்தயத்தொகை" </span><span style=" font-weight:600; font-style:italic;">விளையாட்டு வலை அமைப்பிலிருந்து உபயோகிக்கப்படும்.</span></p></body></html> - - + + Server Address: விளையாட்டு வழங்கியின் முகவரி: - - + + Use password for private game: தனியார் விளையாட்டுக்கு இரகசிய வார்த்தையை உபயோகிக்கவும்: - - + + Computer Engine கணிப்பொறி - - + + Opponent 6: எதிராளி 6: - - + + Opponent 5: எதிராளி 5: - - + + Opponent 4: எதிராளி 4: - - + + Opponent 3: எதிராளி 3: - - + + Opponent 2: எதிராளி 2: - - + + Opponent 1: எதிராளி 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4488,8 +4523,8 @@ p, li { white-space: pre-wrap; } அகலம்=50, உயரம்=50 ஆக இருக்க வேண்டும்.</span></p></body></html> - - + + Enable/Disable Logging பதிவு செய்வதற்கு அனுமதி வழங்கு/வழங்காதே @@ -4498,44 +4533,44 @@ p, li { white-space: pre-wrap; } பதிவு கோப்பையை சேர்த்து வைக்க வேண்டிய நாட்கள் - - + + Log File Directory: பதிவு கோப்பையின் முகவரி: - - + + Write log after every: செயல்களை பதிவு செய்க. ஒவ்வொரு: - - + + action (high frequent disc access) செயல்களுக்கும் (அதிகபட்ச கணினி உபயோகம்) - - + + hand (medium disc access) சுற்றுக்கும் (நடுத்தரமான கணினி உபயோகம்) - - + + game (low disc access) விளையாட்டிற்கும் (குறைந்தபட்ச கணினி உபயோகம்) - + Log Messages தகவல்களை பதிவு செய்க - + Player Nicks/Avatars விளையாட்டு வீரர்களின் புனைப்பெயர்/அவதாரங்கள் @@ -4574,29 +4609,29 @@ p, li { white-space: pre-wrap; } விளையாட்டு வழங்கியை தேவைக்கேற்ப மாற்றியமைத்து கொள்க - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) நாள்(கள்) @@ -4636,8 +4671,8 @@ p, li { white-space: pre-wrap; } - - + + Avatar Server: அவதாரத்தின் வழங்கி: @@ -4738,84 +4773,84 @@ p, li { white-space: pre-wrap; } விளையாட்டு வழங்கி - - + + Game விளையாட்டு - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: எப்பொழுதும் பயன்படுத்தும் விளையாட்டு பெயர்: - - + + Default game type: எப்பொழுதும் பயன்படுத்தும் விளையாட்டு முறை: - - + + Standard சாதாரண - - + + Registered players only பதிவு செய்யப்பட்ட விளையாட்டு வீரர்கள் மட்டும் - - + + Invited players only அழைக்கப்பட்ட விளையாட்டு வீரர்கள் மட்டும் - - + + Ranking game தரவரிசை விளையாட்டு - - + + Show lobby chat வரவேற்ப்பறை உரையாடலை காட்டவும் - - + + Automatically leave the table after the game finished - - + + Ignored Players புறக்கணிக்கப்பட்ட விளையாட்டு வீரர்கள் - - + + Player விளையாட்டு வீரர் - - + + Remove Player விளையாட்டு வீரரை நீக்கவும் - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4828,20 +4863,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">மனித விளையாட்டு வீரர்:<br /><span style=" font-style:italic;">(இந்த புனைப்பெயர் இணையதள விளையாட்டு நுழைவுக்கும் உபயோக்கியப்படும்)</span></p></body></html> - - + + Opponent 7: எதிராளி 7: - - + + Opponent 8: எதிராளி 8: - - + + Opponent 9: எதிராளி 9: @@ -4864,125 +4899,125 @@ p, li { white-space: pre-wrap; } பிரெஞ்சு - + German ஜெர்மன் - + Hungarian ஹங்கரியன் - + Italian இத்தாலியன் - + Lithuania - + Norwegian நார்வீஜியன் - + Portuguese-Brazilian - + Portuguese-Portuguese - + Russian ரஷ்யன் - + Slovak ஸ்லோவாக் - + Spanish ஸ்பானிஷ் - + Tamil தமிழ் - + Turkish டர்கிஷ் - - - - - + + + + + Settings Error அமைப்பு பிழை - + The entered flipside picture doesn't exist. Please enter an valid picture! கொடுத்த சீட்டு அட்டையின் பின்புற படத்தை காணவில்லை. தயவு செய்து சரியான படத்தை தரவும்! - - + + The log file directory doesn't exist. Please select an valid directory! பதிவு கோப்பையின் முகவரியை காணவில்லை. தயவு செய்து சரியான முகவரியை தேர்ந்தெடுக்கவும்! - + Language Changed மொழி மாற்றப்பட்டது - + You have changed application language to %1. Please restart PokerTH to load new language! நீங்கள் விளையாட்டை %1 என்ற மொழிக்கு மாற்றிவிட்டீர்கள். புது மொழியின் செயர்ப்பாட்டை காண தயவு செய்து போகர்டேஹோ வை மீண்டும் துவக்கவும்! - + Select your flipside picture சீட்டு அட்டையின் பின்புற படத்தை தேர்ந்தெடுக்கவும் - + Images (*.png *.jpg *.gif) வடிவங்கள் (*.png *.jpg *.gif) - + Open Directory திறந்த முகவரி - - + + Blinds Error பந்தயப்பண பிழை - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -4996,7 +5031,7 @@ This first-small-blind-value will be set to maximum allowed value. பல்கேரியன் - + Polish போலிஷ் @@ -5016,17 +5051,17 @@ This first-small-blind-value will be set to maximum allowed value. - + Greek க்ரீக் - + Swedish ஸ்வீடிஷ் - + The entered server list address is not a valid URL. Please enter a valid server list address! கொடுக்கப்பட்ட விளையாட்டு வழங்கி பட்டியலின் முகவரி சரியல்ல. @@ -5048,160 +5083,170 @@ Please enter a valid server list address! டானிஷ் - + + Galician + + + + Japanese - + Scottish Gaelic - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name பராமரிப்பாளரின் பெயர் - - + + Maintainer EMail பராமரிப்பாளரின் இமெயில் - - + + Create Date தயாரிக்கப்பட்ட தேதி - + Windows Behaviour விண்டோவின் குணங்கள் - + scaleable மாற்ற தக்கது - + fixed நிர்ணயிக்கப்பட்டது - + Minimum Size குறைந்தபட்ச அளவு - + Maximum Size அதிகபட்ச அளவு - + Fixed Size நிர்ணயிக்கப்பட்ட அளவு - + State வீரரின் தற்போதைய நிலவரம் - + Please select your game table style தயவு செய்து உங்கள் விளையாட்டு மேசை வடிவத்தை தேர்ந்தெடுக்கவும் - + PokerTH game table styles (*.xml) போகர்டேஹோ வின் விளையாட்டு மேசை வடிவங்கள் (*.xml) - + Game Table Style Error விளையாட்டு மேசை வடிவத்தின் பிழை - + Selected game table style file is already in the list. Please select another one to add! தேர்ந்தெடுத்த விளையாட்டு மேசை வடிவத்தின் கோப்பை ஏற்கனவே பட்டியலில் உள்ளது. தயவு செய்து சேர்க்க வேறொன்றை தேர்ந்தெடுக்கவும்! - + Game Table Style File Error விளையாட்டு மேசை வடிவ கோப்பையின் பிழை - + Could not load game table style file correctly. Style will not be placed into list! விளையாட்டு மேசை வடிவ கோப்பையை சரியாக துவக்க முடியவில்லை. வடிவம் பட்டியலில் சேர்க்கப்படாது! - + Please select your card deck style தயவு செய்து உங்கள் சீட்டு அட்டை வடிவத்தை தேர்ந்தெடுக்கவும் - + PokerTH card deck styles (*.xml) போகர்டேஹோ வின் சீட்டு அட்டை வடிவங்கள் (*.xml) - + Card Deck Style Error சீட்டு அட்டை வடிவம் பிழை - + Selected card deck style file is already in the list. Please select another one to add! தேர்ந்தெடுத்த சீட்டு அட்டை வடிவத்தின் கோப்பை ஏற்கனவே பட்டியலில் உள்ளது. தயவு செய்து சேர்க்க வேறொன்றை தேர்ந்தெடுக்கவும்! - + Card Deck Style File Error சீட்டு அட்டை வடிவ கோப்பை பிழை - + Could not load card deck style file correctly. Style will not be placed into list! சீட்டு அட்டை வடிவ கோப்பையை சரியாக துவக்க முடியவில்லை. வடிவம் பட்டியலில் சேர்க்கப்படாது ! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5683,17 +5728,17 @@ Please reenter the password and try again. தயவு செய்து சரியான இரகசிய வார்த்தையை உபயோகித்து மீண்டும் முயற்ச்சி செய்யவும். - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. @@ -5880,25 +5925,56 @@ Please choose a different name. - + Server Message விளையாட்டு வழங்கியிடமிருந்து தகவல் - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + PokerTH %1 diff --git a/ts/pokerth_tr.ts b/ts/pokerth_tr.ts index 00404438..e9fd2a23 100644 --- a/ts/pokerth_tr.ts +++ b/ts/pokerth_tr.ts @@ -1881,62 +1881,62 @@ p, li { white-space: pre-wrap; } oyun - + Joining a private Game Özel bir oyuna giriliyor - + You are about to join a private game. Please enter the password! Özel bir oyuna girmek üzeresiniz. Lütven parolanızı giriniz! - - - - + + + + Game Info Oyun Bilgisi - - + + Connected players - + Server Error Sunucu Hatası - + You should not kick yourself from this game! Bu oyunda kendi kendinizi tekmeleyemezsiniz! - + running çalışıyor - - + + Game Oyun - - + + Players Oyuncular - - + + State Aşama @@ -1945,27 +1945,27 @@ p, li { white-space: pre-wrap; } Özel - + open - + hands eller - + minutes dakika - + double blinds çifte teklif - + manual blinds order el ile teklif istemi @@ -1986,22 +1986,22 @@ p, li { white-space: pre-wrap; } - - + + P - - + + Time - - + + Available Players Uygun Oyuncular @@ -2022,1352 +2022,1379 @@ p, li { white-space: pre-wrap; } - + Show player stats - + + + Admin action ... + + + + + Total kickban + + + + Report inappropriate game name - - - + + Close game + + + + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - + Connected players - max. %1 - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + - - + + T - - - + + + sec (action) - - - + + + sec (hand delay) - - + + Connected players - Max. %1 - - + + running games: %1 Çalışan oyunlar: %1 - - + + open games: %1 açık oyunlar: %1 - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -3376,50 +3403,52 @@ Feel free to invite other players by right-clicking on their nick in the availab söyleşideki oyuncular: %1 - - + + connected players: %1 bağlı oyuncular: %1 - + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + + + PokerTH - Question @@ -4727,66 +4756,68 @@ p, li { white-space: pre-wrap; } - + - + Server Port: Sunucu Bağlantı Noktası: - + - + Use IPv6 IPv6 Kullan + + Server Password: - Sunucu Parolası: + Sunucu Parolası: Network Game Default Settings Ön Tanımlı Ağ Oyunu Ayarları - - + + Computer Engine Bilgisayar Motoru - - + + Opponent 5: Rakip 5: - - + + Opponent 3: Rakip 3: - - + + Opponent 2: Rakip 2: - - + + Opponent 1: Rakip 1: - - + + Opponent 4: Rakip 4: - + Human Player: Gerçek Oyuncu: @@ -4795,8 +4826,8 @@ p, li { white-space: pre-wrap; } Ouncu Takma Adları - - + + Log File Directory: Günlük Dosyası Dizini: @@ -4807,7 +4838,7 @@ p, li { white-space: pre-wrap; } - + Log Messages Günlük Mesajları @@ -4898,8 +4929,8 @@ p, li { white-space: pre-wrap; } Bilgisayar rakipleriniz için Motor Sürümü: - - + + Enable/Disable Logging Günlük Tutmayı Etkinleştir/Edilginleştir @@ -4908,8 +4939,8 @@ p, li { white-space: pre-wrap; } Günlük dosyalarını sakla - - + + Write log after every: Herseferinde son olarak günlük yaz: @@ -4943,25 +4974,25 @@ p, li { white-space: pre-wrap; } - + - + Use SCTP SCTP Kullan - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://no.wikipedia.org/wiki/Ipv6">Bu nedir?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Bu nedir?</a> @@ -4997,18 +5028,18 @@ p, li { white-space: pre-wrap; } 10 - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 6: Rakip 6: @@ -5017,20 +5048,20 @@ p, li { white-space: pre-wrap; } Oyuncu faaliyeti zaman aşımına uğradı (sn): - - + + action (high frequent disc access) Faaliyet (yüksek sıklıkta disk geçişi) - - + + hand (medium disc access) El (orta derecede disk geçişi) - - + + game (low disc access) oyun (düşük disk geçişi) @@ -5186,7 +5217,7 @@ p, li { white-space: pre-wrap; } Ağ Sunucusu Ayarları - + OK @@ -5200,14 +5231,14 @@ p, li { white-space: pre-wrap; } İnternet Oyun Ayarları (Tahsis edilen Sunucu) - - + + Server Address: Sunucu Adresi: - - + + Use password for private game: Özel oyun için parola kullan: @@ -5263,7 +5294,7 @@ p, li { white-space: pre-wrap; } Kulis Sohbetini Etkinleştir/Edilgenleştir (IRC Sunucu) - + Player Nicks/Avatars Oyuncu Takma İsimleri/Avatarları @@ -5332,7 +5363,7 @@ p, li { white-space: pre-wrap; } s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5343,7 +5374,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Not: Öntanımlı </span><span style=" font-weight:600; font-style:italic;">Oyun Ayarları</span><span style=" font-style:italic;"> örneğin "En fazla oyuncu sayısı", "Başlangıç Parası" ve "En az Teklif" </span><span style=" font-weight:600; font-style:italic;">Ağ Oyunu Ayarlarında kullanılabilir.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5371,14 +5402,14 @@ p, li { white-space: pre-wrap; } El ile Ayarlanmış Sunucu Ayarları - - + + Store log files for: - - + + Day(s) Gün(ler) @@ -5425,8 +5456,8 @@ p, li { white-space: pre-wrap; } Parola: - - + + Avatar Server: @@ -5440,7 +5471,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings @@ -5542,79 +5573,79 @@ p, li { white-space: pre-wrap; } - - + + Game Oyun - - - Default game name: - - - - + - Default game type: + Default game name: + Default game type: + + + + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5623,19 +5654,19 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Rakip 6: {7:?} - - + + Opponent 8: Rakip 6: {8:?} - + Note: Best avatar quality with image ratio like width=50, height=50. @@ -5644,14 +5675,14 @@ p, li { white-space: pre-wrap; } Sil - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5660,8 +5691,8 @@ p, li { white-space: pre-wrap; } Rakip 6: {10:?} - - + + Opponent 9: Rakip 6: {10:?} {9:?} @@ -5669,11 +5700,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Ayar Hatası @@ -5690,7 +5721,7 @@ Please select an valid directory! Lütfen geçerli bir dizin giriniz! - + Select your flipside picture Kıvrık taraf resminizi seçin @@ -5699,24 +5730,24 @@ Lütfen geçerli bir dizin giriniz! Resimler (*.png) - + Open Directory Dizin Aç - + Images (*.png *.jpg *.gif) Resimler (*.png *.jpg *.gif) - - + + Blinds Error Teklif Hatası - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5755,12 +5786,12 @@ yüksek değer olarak ayarlanacaktır. Fransızca - + German Almanca - + Hungarian Macarca @@ -5773,79 +5804,79 @@ yüksek değer olarak ayarlanacaktır. Portekizce - + Russian Rusça - + Turkish Türkçe - + Language Changed Dil Değiştirildi - + You have changed application language to %1. Please restart PokerTH to load new language! Uygulama dilini %1 olarak değiştirdiniz. Yeni dilde yüklenmesi için lütfen PokerTH programını yeniden başlatınız! - + Italian İtalyanca - + Lithuania - + Portuguese-Brazilian - + Portuguese-Portuguese - + Slovak Slovakça - + Tamil - + The entered flipside picture doesn't exist. Please enter an valid picture! Girilen resmin ters tarafı mevcut değil. Lütfen geçerli bir resim giriniz! - - + + The log file directory doesn't exist. Please select an valid directory! Günlük dosyasının dizini mevcut değil. Lütfen geçerli bir dizin seçiniz! - + Norwegian Norveçce - + Spanish İspanyolca @@ -5855,7 +5886,7 @@ Lütfen geçerli bir dizin seçiniz! Bulgarca - + Polish Polonyaca @@ -5865,17 +5896,17 @@ Lütfen geçerli bir dizin seçiniz! Çince - + Greek Yünanca - + Swedish İsveççe - + The entered server list address is not a valid URL. Please enter a valid server list address! Girilen sunucu listesi adresi geçerli değil. @@ -5892,156 +5923,166 @@ Lütfen geçerli bir adres girin! Danimarka Dili - + + Galician + + + + Japanese - + Scottish Gaelic - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State Aşama - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6560,35 +6601,66 @@ Please reenter the password and try again. Lütfen parolanızı girin ve yeniden deneyin. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + The password is too long. Please choose another one. @@ -6751,7 +6823,7 @@ Lütfen farklı bir isim seçiniz. - + Server Message diff --git a/ts/pokerth_vi.ts b/ts/pokerth_vi.ts new file mode 100644 index 00000000..baf91ab0 --- /dev/null +++ b/ts/pokerth_vi.ts @@ -0,0 +1,6202 @@ + + + +UTF-8 + + CardDeckStyleReader + + + + Card Deck Style Error + Lỗi về định dạng lá bài + + + + Everything OK! + Tất cả mọi thiết lập đều hợp lệ! + + + + Some cards pictures are missing, please contact style maintainer for this issue. + + + + + Some style fields are missing, please contact style maintainer for this issue. + Một vài thông tin về kiểu họa tiết bị thiếu, xin vui lòng liên hệ tác giả của phần họa tiết đó để hoàn thiện thông tin bị thiếu. + + + + This style is outdated, please contact style maintainer for this issue. + Kiểu họa tiết này đã quá cũ, xin vui lòng liên hệ tác giả của kiểu họa tiết này để hoàn thiện phần họa tiết trên. + + + + Selected card deck style "%1" seems to be incomplete or defective. + +The value(s) of: +%2 +is/are missing. + +Anyway you can play with this deck, because the missing content will be filled up by PokerTH default card deck. + +Please contact the card deck style builder via "%3". + + + + + Card Deck Style Error - Fields content missing + + + + + One or more pictures from current card deck style "%1" were not found: + +%2 + +Please contact the card deck style builder via "%3". + + + + + Card Deck Style Error - Pictures missing + + + + + Selected card deck style "%1" seems to be outdated. +The current PokerTH card deck style version is "%2", but this deck has version "%3" set. + +Anyway you can play with this deck, because the missing content will be filled up by PokerTH default card deck. + +Please contact the card deck style builder via "%4". + + + + + Card Deck Style Error - Outdated + + + + Selected card deck style "%1" seems to be outdated. + The current PokerTH card deck style version is "%2", but this style has version "%3" set. + +Please contact the card deck style builder %4. + Kiểu lá bài được chọn "%1" đã quá cũ +Kiểu lá bài hiện tại phải phù hợp với chương trình phiên bản "%2", nhưng kiểu bạn chọn thuộc phiên bản "%3". + +Xin vui lòng thử lại một kiểu lá bài khác phù hợp với phiên bản hiện tại của chương trình là %4. + + + Selected card deck style "%1" seems to be incomplete or defective. + +The value(s) of "%2" is/are missing. + +Please contact the card deck style builder %3. + Kiểu lá bài "%1" được chọn dường như chưa được hoàn thiện hoặc bị lỗi. + +Giá trị của phần "%2" bị thiếu. + +Vui lòng liên hệ tác giả đã tạo ra kiểu lá bài "%3" để hoàn thiện phần lỗi này. + + + + Cannot load card deck style file: %1 + +Please check the style file or choose another style! + Không thể áp dụng kiểu lá bài : %1 + +Hãy kiểm tra lại tập tin đã chọn hoặc chọn một kiểu lá bài khác! + + + Selected card deck style "%1" seems to be incomplete or defective. +The card picture(s) "%2" is/are not available. + +Please contact the card deck style builder %3. + Kiểu lá bài được chọn "%1" dường như chưa được hoàn thiện và bị lỗi. +Hình ảnh của lá bài "%2" không thể được hiển thị. + +Xin vui lòng liên hệ tác giả đã tạo ra kiểu lá bài %3 này. + + + + A game table style was selected instead of a card deck style. +Please select a card deck style and try again! + Bạn đã chọn kiểu định dạng cho bàn chơi bài chứ không phải kiểu lá bài. +Hãy chọn kiểu lá bài và thử lại lần nữa! + + + + ChatTools + + + private message sent to player: %1 + tin nhắn riêng đã được gửi đến người chơi: %1 + + + + GameTableStyleReader + + + + Game Table Style Error + Lỗi về kiểu họa tiết của bàn chơi bài + + + + Selected game table style "%1" seems to be incomplete or defective. + +The value(s) of: +%2 +is/are missing. + +Anyway you can play with this style, because the missing content will be filled up by PokerTH default style. + +Please contact the game table style builder via "%3". + Kiểu họa tiết "%1" của bàn chơi bài dường như chưa hoàn thiện hoặc bị lỗi. + +Giá trị của : +%2 +bị thiếu thông tin + +Tuy nhiên bạn có thể vẫn chọn được kiểu hoạt tiết này vì những chi tiết còn thiếu về mặt họa tiết sẽ được chương trình tự động bổ sung. + +Hãy liên hệ tác giả đã tạo ra họa tiết "%3" để hoàn thiện hơn phần thông tin bị lỗi. + + + + Game Table Style Error - Fields content missing + Lỗi về họa tiết của bàn chơi bài - Một số thông tin vẫn còn thiếu + + + + One or more pictures from current game table style "%1" were not found: + +%2 + +Anyway you can play with this style, because the missing content will be filled up by PokerTH default style. + +Please contact the game table style builder via "%3". + Một hoặc các bức ảnh khác từ kiểu họa tiết của bàn chơi bài "%1" không được tìm thấy: + +%2 + +Tuy nhiên bạn vẫn có thể chọn kiểu họa tiết này, vì những thông tin còn thiếu về họa tiết sẽ được chương trình tự động bổ sung. + +Xin vui lòng liên hệ tác giả đã tạo ra họa tiết bàn chơi bài "%3" này để hoàn thiện lỗi đã xảy ra. + + + + Game Table Style Error - Pictures missing + Lỗi về họa tiết bàn chơi bài - Thiếu hình ảnh + + + + Selected game table style "%1" seems to be outdated. +The current PokerTH game table style version is "%2", but this style has version "%3" set. + +Anyway you can play with this style, because the missing content will be filled up by PokerTH default style. + +Please contact the game table style builder via "%4". + Kiểu họa tiết bàn chơi bài "%1" dường như đã quá cũ. +Phiên bản hiện tại đối với các kiểu họa tiết là "%2", nhưng phiên bản bạn chọn lại là phiên bản "%3". + +Tuy nhiên bạn vẫn có thể chọn kiểu họa tiết này, vì những thông tin còn thiếu sẽ được chương trình thêm vào tự động. + +Xin vui lòng liên hệ tác giả đã tạo ra kiểu họa tiết bàn chơi bài "%4" để hoàn thiện thông tin còn thiếu sót. + + + + Game Table Style Error - Outdated + Lỗi về họa tiết bàn chơi bài - Quá cũ so với phiên bản hiện tại + + + + Everything OK! + Tất cả mọi thiết lập đều hợp lệ! + + + + Some pictures are missing, please contact style maintainer for this issue. + Một vài hình ảnh bị thiếu, vui lòng liên hệ tác giả đã thiết kế phần này để hoàn thiện phần thông tin thiếu nói trên. + + + + Some style fields are missing, please contact style maintainer for this issue. + Một vài thông tin về kiểu họa tiết bị thiếu, xin vui lòng liên hệ tác giả của phần họa tiết đó để hoàn thiện thông tin bị thiếu. + + + + This style is outdated, please contact style maintainer for this issue. + Kiểu họa tiết này đã quá cũ, xin vui lòng liên hệ tác giả của kiểu họa tiết này để hoàn thiện phần họa tiết trên. + + + + Cannot load game table style file: %1 + +Please check the style file or choose another style! + Không thể áp dụng kiểu họa tiết "%1" cho bàn chơi bài + +Xin vui lòng chọn một kiểu họa tiết khác hoặc kiểm tra lại tập tin họa tiết đã được chọn! + + + + A card deck style was selected instead of a game table style. +Please select a game table style and try again! + Bạn đã chọn kiểu họa tiết dành cho lá bài chứ không phải bàn chơi bài. +Xin vui lòng chọn đúng kiểu họa tiết dành cho bàn chơi bài và thử lại lần nữa! + + + + LogFileDialog + + + + Dialog + Thông báo + + + + + Game: + + + + + + Log File + Tập tin Nhật Ký + + + + + Preview: + Xem thử: + + + + + Export as HTML + Xuất ra định dạng HTML + + + + + Export as txt + Xuất ra định dạng txt + + + + + Save as ... + Lưu dưới dạng... + + + + + Delete + Xóa + + + + + Analyse Logfile ... + + + + + PokerTH - Delete log files + Thông báo - Xóa tập tin Nhật Ký + + + + Do you really want to delete the selected log files? + Bạn có thật sự muốn xóa những tập tin thuộc phần Nhật Ký mà bạn vừa chọn hay không? + + + + Remove log file + + + + + PokerTH cannot remove this log file, please verify that you have write access to this file! + + + + + Export PokerTH log file to HTML + Xuất tập tin nhật ký thành định dạng HTML + + + + PokerTH HTML log (*.html) + Định dạng tập tin Nhật Ký (*html) + + + + Export PokerTH log file to plain text + Xuất định dạng tập tin nhật ký thành file văn bản thông thường + + + + PokerTH plain text log (*.txt) + Định dạng tập tin nhật ký dạng văn bản (*.txt) + + + + Save PokerTH log file + Lưu tập tin Nhật Ký + + + + PokerTH SQL log (*.pdb) + Định dạng nhật ký dạng SQL (*pdb) + + + + Processing of the log file on the web server failed. +Please verify that you are uploading a valid PokerTH log file. + + + + + + Failure reason: + + + + + No file received. + + + + + File rejected because of too many uploads. + + + + + File rejected because of too many recent uploads. Please try again later. + + + + + The file is too large. + + + + + This file is not a valid and current PokerTH log file. + + + + + Internal error. Please try again later. ID: + + + + + + Uploading log file + + + + + Upload failed. Please check your internet connection! +Uploading log files may fail if you are using an http proxy. + + + + + MyAvatarLabel + + + Add/Edit/Remove tooltip + Thêm/Sửa/Không hiển thị phần thông tin trợ giúp + + + + Start vote to kick this player + Bắt đầu bình chọn để loại người chơi này + + + + Ignore Player + Không chú ý đến người chơi + + + + Report inappropriate avatar + Báo cáo trường hợp vi phạm hình đại diện + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? + Trong tương lai, bạn sẽ không nhận được những tin nhắn hoặc các lời mời từ người này. <br> Bạn có chắc muốn đưa người chơi <b>%1</b> vào danh sách Không Để Ý không? + + + + + PokerTH - Question + PokerTH - Xác Nhận + + + + Are you sure you want to report the avatar of "%1" as inappropriate? + Bạn có chắc muốn báo cáo về thành viên "%1" với lý do hình ảnh đại diện không hợp lệ hay không? + + + + ServerListDialog + + + + Server List + Danh sách Máy Chủ + + + + + Server Name + Tên Máy Chủ + + + + + Country/Region + Quốc Gia/Vùng Miền + + + + aboutPokerth + + + + About + Thông tin thêm + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Singleplayer games with up to 9 computer-opponents</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-size:8pt;"> with result tables</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Đây là chương trình chơi Poker dựa trên hệ thống Engine Poker theo thể loại &quot;Poker kiểu&quot; Texas</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Màn chơi đơn bao gồm người chơi cùng 9 người chơi khác được thiết lập đồng loạt</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Trò chơi này có thể chơi offline theo kiểu chơi đơn hoặc offline trong mạng Lan nhiều người với nhau<br />- Bạn cũng có thể kết nối Internet và tham gia chơi cùng hàng triệu người chơi khác từ khắp nơi trên thế giới<br />- Bạn có thể tự do chỉnh sửa giao diện theo ý mình<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;"> Hệ thống xếp hạng trực tuyến sẽ dựa vào điểm số của bạn nhằm tạo tổng hợp thông tin cần thiết về cách chơi, điểm yếu cũng như các thống kê từ chính màn chơi mà bạn tham gia</span></a><span style=" font-size:8pt;"> kèm theo đó là số liệu về màn chơi được cập nhật liên tục.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2013, bản quyền thuộc về Felix Hammer, Florian Thauer, Lothar May và được biên dịch bởi Phồng Tôm. Hãy cùng Tôm Poker theo cách của bạn</span></p></td></tr></table></body></html> + + + + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> + <a href="http://www.pokerth.net" target="_blank">Website của chương trình<a> + + + + + Project + Dự Án + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Project page: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Authors: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, engine development</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - basic architecture, network development, windows package, MacOS package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Trang Dự Án Online: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Tác Giả: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - ý tưởng, thiết kế chủ đạo, hoàn thiện giao diện, chỉnh sửa giao diện, phụ trách nền tảng linux</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - ý tưởng, lập trình cơ sở, phát triển engine</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - lập trình cơ sở, quản lý phần chơi mạng, phụ trách nền tảng Windows và MacOSX</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - phụ trách thiết kế đồ họa</span></p></td></tr></table></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">tên người dịch - địa chỉ mail</span></p></td></tr></table></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + Translation + Ngôn ngữ + + + + + Thanks to + Xin dành lời cảm ơn tới + + + + + License + Bản quyền + + + + Close + Đóng lại + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Singleplayer games with up to 9 computer-opponents</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> with result tables</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Đây là chương trình chơi Poker dựa trên hệ thống Engine Poker theo thể loại &quot;Poker kiểu&quot; Texas</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Màn chơi đơn bao gồm người chơi cùng 9 người chơi khác được thiết lập đồng loạt</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Trò chơi này có thể chơi offline theo kiểu chơi đơn hoặc offline trong mạng Lan nhiều người với nhau<br />- Bạn cũng có thể kết nối Internet và tham gia chơi cùng hàng triệu người chơi khác từ khắp nơi trên thế giới<br />- Bạn có thể tự do chỉnh sửa giao diện theo ý mình<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Hệ thống xếp hạng trực tuyến sẽ dựa vào điểm số của bạn nhằm tạo tổng hợp thông tin cần thiết về cách chơi, điểm yếu cũng như các thống kê từ chính màn chơi mà bạn tham gia</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> kèm theo đó là số liệu về màn chơi được cập nhật liên tục.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2013, bản quyền thuộc về Felix Hammer, Florian Thauer, Lothar May và được biên dịch bởi Phồng Tôm. Hãy cùng Tôm Poker theo cách của bạn</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Authors: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, engine development</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - basic architecture, network development, windows package, MacOS package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Trang WEB dự án: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Authors: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, engine development</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - basic architecture, network development, windows package, MacOS package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Phồng Tôm (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">đấmphát@chết.luôn</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - chịu trách nhiệm dịch thuật phiên bản giao diện tiếng Việt của chương trình</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">for different popular avatar picture resources</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for people avatar pictures</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for &quot;misc&quot; avatar pictures</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different gpl licensed sounds</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for self recorded chip sounds</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different patches</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for internet-game-server hosting and administration</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for startwindow background gfx and danuxi1 table background</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for moderating forum and organise bugtracker and feature requests</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for new table sounds</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">đối với từng hình ảnh đại diện phổ biến nhất hiện tại</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - đối với các hình ảnh đại diện là người</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - đối với &quot;misc&quot; hình ảnh đại diện</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - đối với các loại bản quyền âm thanh thuộc dạng mở GPL</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - đối với âm thanh tự chọn cho phần ghi âm của tiền tệ trong trò chơi</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different patches</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for internet-game-server hosting and administration</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for startwindow background gfx and danuxi1 table background</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - đối với việc quản lý diễn đàn và xử lý các lỗi xảy ra trong quá trình hoạt động của trò chơi cũng như giải quyết các tính năng do người dùng yêu cầu</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - đối với âm thanh khi thay đổi bàn chơi bàn</span></p></td></tr></table></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + aboutPokerthImpl + + + PokerTH %1 for Android (API%2) + + + + + PokerTH %1 + PokerTH %1 + + + + About PokerTH %1 + Thông tin về PokerTH %1 + + + + - Wikimedia Commons: for different popular avatar picture resources + - Wikimedia Commons: nguồn cho các hình đại diện khác nhau + + + + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: nguồn cho hình đại diện là người + + + + - ZeiZei: for misc avatar pictures + - ZeiZei: nguồn cho hình đại diện tổng hợp + + + + - kde-look.org: for different gpl licensed sounds + - kde-look.org: nguồn cho các âm thanh dưới dạng bản quyền mở GPL + + + + - doc_dos: for self recorded chip sounds + - doc_dos: nguồn cho phần âm thanh thể hiện các hiệu ứng tiền tệ trong trò chơi + + + + - thiger, dunkanx, BerndA, coldz, drull: for different patches + - thiger, dunkanx, BerndA, coldz, drull: nguồn cho các phần cập nhật sửa lỗi cho chương trình + + + + - kraut: for internet-game-server hosting and administration + - kraut: nguồn cho phần server của chương trình trong việc quản trị và quản lý hệ thống online + + + + - danuxi: for startwindow background gfx and danuxi1 table background + - danuxi: nguồn cho hiệu ứng nền và hiệu ứng bàn chơi bài + + + + - heyn: for moderating forum and organise bugtracker and feature requests + - heyn: cá nhân quản lý diễn đàn cũng như quản lý việc cập nhật các bản vá lỗi và xử lý các yêu cầu từ phía người dùng + + + + - texas_outlaw: for new table sounds + - texas_outlaw: nguồn cho phần âm thanh khi khởi tạo bàn chơi bài mới + + + + - Poker engine for the popular Texas Hold'em Poker + + + + + - Singleplayer games with up to 9 computer-opponents + + + + + - Multiplayer network games + + + + + - Internet online games + + + + + - Changeable gui with online style gallery + + + + + - Online ranking website with result tables + + + + + Project page: + + + + + Authors: + + + + + initial idea, basic architecture, gui implementation, gui graphics editing, linux package + + + + + initial idea, basic architecture, engine development + + + + + basic architecture, network development, windows package, MacOS package + + + + + initial gui graphics design + + + + + changeCompleteBlindsDialog + + + + Change Blinds Settings + Thay đổi về tỉ lệ tiền cược + + + + + First small blind: + Số tiền cược ban đầu: + + + + + Raise blinds: + Tăng tỉ lệ tiền cược: + + + + + + + Every: + Cứ mỗi: + + + + + hands + lượt + + + + + minutes + phút + + + + + Raise mode: + Chế độ tăng cược: + + + + + + + Always double blinds + Luôn tăng gấp đôi tỉ lệ tiền cược + + + + + + + Manual blinds order: + Chỉnh chế độ tăng tiền cược theo thứ tự: + + + + + Delete + Xóa + + + + + Add + Thêm + + + + + Afterwards: + Về sau: + + + + + Always raise by: + Luôn tăng cược bằng: + + + + + $ + $ + + + + + Keep last blind + Giữ lần tăng tiền cược gần nhất + + + + OK + + + + + Ctrl+S + + + + + changeCompleteBlindsDialogImpl + + + Manual Blinds Order + Thứ tự tăng tiền cược do người chỉnh + + + + You cannot set more than 30 manual blinds. + Bạn không thể đặt lớn hơn 30. + + + + changeContentDialog + + + + Network Error + Lỗi kết nối mạng + + + + + Name: + Tên: + + + + + Save in configuration + Lưu vào phần cấu hình + + + + OK + + + + + changeContentDialogImpl + + + You cannot join Internet-Game-Lobby with "Human Player" as nickname. +Please choose another one. + Bạn không thể tham gia vào phần chơi mạng Internet với tên "Human Player. +Hãy chọn một tên khác. + + + + + + Nick name: + Tên hiển thị: + + + + Your player name is already used by another player. +Please choose a different name. + Tên hiện thị của bạn hiện đã được đăng ký bởi một người khác. +Hãy chọn một tên khác với tên vừa rồi. + + + + The player name is too short, too long or invalid. Please choose another one. + Tên mà bạn vừa đặt quá ngắn, quá dài hoặc không hợp lệ. Xin vui lòng lựa chọn một tên khác. + + + + There is already a game with your chosen game name. +Please choose another one! + Đã có một người khác đăng ký tên hiển thị mà bạn chọn. +Hãy vui lòng đặt tên khác! + + + + There is a forbidden word in your chosen game name. +Please choose another one! + Xuất hiện một từ/cụm từ bị cấm trong tên mà bạn chọn. +Xin vui lòng đặt lại một tên khác! + + + + + Game name: + Tên cho màn chơi: + + + + connectToServerDialog + + + + Connect to Server + Kết nối đến hệ thống máy chủ + + + + + Connecting to Server ... + Đang kết nối đến hệ thống máy chủ... + + + + Cancel + Hủy bỏ + + + + connectToServerDialogImpl + + + Resolving address... + Đang cập nhật lại IP dành cho kết nối... + + + + Connecting to server... + Đang kết nối đến máy chủ... + + + + Starting session... + Đang bắt đầu màn chơi... + + + + Connection established! + Kết nối đến hệ thống máy chủ đã được thiết lập! + + + + Reading server list... + Đang dò danh sách máy chủ... + + + + createInternetGameDialog + + + + Create Internet Game + Tạo màn chơi mạng online + + + + Internet Game Settings + Chỉnh sửa màn chơi mạng online + + + + + Default game name: + Tên mặc định cho màn chơi: + + + + + Game type: + Thể loại màn chơi: + + + + + Standard + Tiêu Chuẩn + + + + + Registered players only + Chỉ dành cho người chơi đã đăng ký + + + + + Invited players only + Chỉ dành cho người chơi được bạn chỉ định + + + + + Ranking game + Màn chơi được xếp hạng trên hệ thống máy chủ + + + + + Maximum number of players: + Số lượng tối đa người tham gia vào màn chơi: + + + + + Start Cash: + Số tiền cho màn chơi: + + + + + $ + $ + + + + + Blinds + Tỉ lệ cược + + + + + Use saved blinds settings + Sử dụng thiết lập tỉ lệ cược được lưu trước đó + + + + + Change blinds settings ... + Thay đổi tỉ lệ cược... + + + + + Timeout for player action: + Thời gian chờ tối đa với mỗi người chơi: + + + + + + + s + giây + + + + + Password: + Mật khẩu: + + + + + Delay between hands: + Thời gian giữa các lượt chơi: + + + + + Create Game + Tạo màn chơi + + + + Cancel + Hủy bỏ + + + + createInternetGameDialogImpl + + + <i>First small blind: $%1</i> + <i>Số tiền cược nhỏ đầu tiên: $%1</i> + + + + <i>Double blinds every %1'th hand</i> + <i>Tăng gấp đôi tỉ lệ tiền cược mỗi %1'th lượt</i> + + + + %1's game + %1 giây của trò chơi + + + + createNetworkGameDialog + + + + Create Network Game + Tạo màn chơi mạng offline + + + + Network Game Settings + Thiết lập màn chơi mạng offline + + + + + Maximum number of players: + Số lượng người chơi tối đa: + + + + + Start Cash: + Số tiền ban đầu: + + + + + $ + $ + + + + + Blinds + Tiền cược + + + + + Use saved blinds settings + Sử dụng thiết lập tiền cược đã lưu + + + + + Change blinds settings ... + Thay đổi thiết lập tiền cược... + + + + + Timeout for player action: + Thời gian chờ đối với mỗi người chơi: + + + + + Delay between hands: + Thời gian mỗi lượt chơi: + + + + + + + s + giây + + + + + Create Game + Tạo màn chơi + + + + Cancel + Hủy bỏ + + + + gameLobbyDialog + + + + Internet Game Lobby + Hệ thống màn chơi online + + + + + Game Info + Thông tin về màn chơi + + + + + Game type: + Thể loại màn chơi: + + + + + Connected Players + Số người chơi kết nối + + + + + search for player ... + tìm kiếm người chơi... + + + + + 5 - Show open & non-full & ranking games + 5 - Hiển thị các màn chơi theo dạng mở & không đầy đủ & được xếp hạng trên hệ thống + + + + + Start Cash: + Số tiền ban đầu: + + + + + First small blind: + Tiền cược nhỏ ban đầu: + + + + + Blinds raise interval: + Tăng tỉ lệ tiền cược mỗi: + + + + + Blinds raise mode: + Chế độ tăng tỉ lệ tiền cược: + + + + Games + Màn chơi + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:18px; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + + Fill up with computer opponents + Bổ sung các người chơi còn thiếu bằng người chơi do máy tính tạo ra + + + + + &Start Game + &Bắt đầu màn chơi + + + + + &Kick Player + &Đuổi người chơi + + + + + Sort alphabetically + Sắp xếp theo thứ tự chữ cái + + + + + Sort by country + Sắp xếp theo quốc gia + + + + + Display idle players + Hiển thị các người chơi ở trạng thái chờ + + + + + Manual blinds list: + Danh sách tỉ lệ tiền cược tùy chỉnh: + + + + + &Leave Game + &Rời khỏi màn chơi + + + + + Join &any game + Tham gia &bất kỳ màn chơi nào + + + + + &Create Game + &Tạo màn chơi + + + + + &Join Game + &Tham gia màn chơi + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Click here to view the online rankings</span></a></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Bấm vào đây để hiện thị các màn chơi được hệ thống xếp hạng</span></a></p></td></tr></table></body></html> + + + + + 0 - No game list filter + 0 - Không dùng bộ lọc với màn chơi + + + + + 1 - Show open games + 1 - Hiển thị các màn chơi mở + + + + + 2 - Show open & non-full games + 2 - Hiển thị các màn chơi mở & không đủ người + + + + + 3 - Show open & non-full & non-private games + 3 - Hiển thị các màn chơi mở & không đủ người & không mật khẩu + + + + + 4 - Show open & non-full & private games + 4 - Hiển thị các màn chơi mở & không đủ người & cần có mật khẩu + + + + + Timing: + Thời gian: + + + + + Lobby-Chat + Khung Chat với mọi người trong hệ thống + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> + + + + gameLobbyDialogImpl + + + Starting game. Please wait ... + Đang bắt đầu màn chơi. Vui lòng đợi đôi lát ... + + + + Joining a private Game + Đang kết nối với màn chơi kín/yêu cầu mật khẩu + + + + You are about to join a private game. Please enter the password! + Bạn đang tham gia vào một màn chơi kín/yêu cầu mật khẩu. Vui lòng điền vào mật khẩu bên dưới! + + + + open + mở + + + + + + + Game Info + Thông tin về màn chơi + + + + + + Game + Màn chơi + + + + + + Players + Người chơi + + + + + + State + Trạng thái + + + + + + P + P + + + + + + Available Players + Các người chơi đang sẵn sàng + + + + Invite player + Mời người chơi + + + + Ignore player + Bỏ qua người chơi + + + + Player infos ... + Thông tin về người chơi... + + + + Report inappropriate game name + Thông báo cho ban quản trị về tên của màn chơi vi phạm luật + + + + + + Standard + Tiêu chuẩn + + + + + + Registered players only + Chỉ dành cho người chơi đã đăng ký + + + + + + Invited players only + Chỉ dành cho người chơi được mời/mật khẩu + + + + + + Ranking game + Màn chơi được xếp hạng trên hệ thống + + + + Connected players - max. %1 + Số lượng người chơi tối đa %1 + + + + + + T + T + + + + + + sec (action) + giây (chơi) + + + + + + sec (hand delay) + giây (trong lượt chơi) + + + + + Connected players - Max. %1 + Những người chơi đã kết nối - Tối đa %1 + + + + running + đang diễn ra + + + + + running games: %1 + những màn chơi đang diễn ra: %1 + + + + + open games: %1 + những màn chơi mở: %1 + + + + Invite %1 + Mời %1 + + + + Ignore %1 + Bỏ qua %1 + + + + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> + <span style='color:blue;'>%1 được mời tới %2 bởi %3.</span> + + + + <span style='color:red;'>%1 has rejected the invitation to %2.</span> + <span style='color:red;'>%1 đã từ chối lời mời đến %2.</span> + + + + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> + <span style='color:red;'>%1 không thể tham gia %2 vì đang tham gia vào một màn chơi khác.</span> + + + + + The game will start in<br><b>%1</b> seconds. + Màn chơi sẽ bắt đầu trong vòng<br><b>%1</b> giây nữa. + + + + You have entered a game with type "invite-only". +Feel free to invite other players by right-clicking on their nick in the available players list. + Bạn đã tham gia vào màn chơi dạng "chỉ dành cho khách mời/mật khẩu". +Hãy mời những người chơi khác bằng cách chọn chuột phải vào tên của các người chơi trong danh sách các người chơi đang kết nối. + + + + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? + Bạn đã được mời tham gia màn chơi <b>%1</b> bởi <b>%2</b>.<br>Bạn có muốn tham gia màn chơi này không? + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? + Trong tương lai bạn sẽ không còn nhận được các tin nhắn tán gẫu hoặc lời mời chơi từ người dùng này.<br>Bạn có chắc rằng sẽ cho người dùng <b>%1</b> vào danh sách bỏ qua hay không? + + + + + connected players: %1 + những người chơi đã kết nối: %1 + + + + Waiting for the start of the next hand to rejoin the game ... + Xin vui lòng chờ đợi đôi lát để tay chơi tiếp theo tham gia lại màn chơi ... + + + + Click here to view the online rankings + + + + + + + Time + + + + + + Show player stats + Hiển thị trạng thái người chơi + + + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + + Connected players + Số người chơi đã kết nối + + + + hands + lượt + + + + minutes + phút + + + + double blinds + gấp đôi tiền cược + + + + manual blinds order + thứ tự tăng tiền cược tự chỉnh + + + + Server Error + Lỗi hệ thống máy chủ online + + + + You should not kick yourself from this game! + Bạn không nên tự mình đuổi mình ra khỏi trò chơi này! + + + + search for player ... + tìm kiếm người chơi... + + + + Chat is only available to registered players. + Tính năng tán gẫu/chat chỉ được kích hoạt với những người chơi đã đăng ký. + + + + Invite player ... + Mời người chơi... + + + + Ignore player ... + Bỏ qua người chơi... + + + + %1 is playing in "%2". + %1 đang chơi ở "%2". + + + + %1 is not playing at the moment. + %1 không chơi bàn nào ở thời điểm này. + + + + + PokerTH - Info Message + PokerTH - Thông báo + + + + + + + PokerTH - Question + PokerTH - Xác nhận + + + + Afghanistan + Afghanistan + + + + ALand Islands + ALand Islands + + + + Albania + Albania + + + + Algeria + Algeria + + + + American Samoa + American Samoa + + + + Andorra + Andorra + + + + Angola + Angola + + + + Anguilla + Anguilla + + + + Antarctica + Antarctica + + + + Antigua And Barbuda + Antigua And Barbuda + + + + Argentina + Argentina + + + + Armenia + Armenia + + + + Aruba + Aruba + + + + Australia + Úc + + + + Austria + Áo + + + + Azerbaijan + Azerbaijan + + + + Bahamas + Bahamas + + + + Bahrain + Bahrain + + + + Bangladesh + Bangladesh + + + + Barbados + Barbados + + + + Belarus + Belarus + + + + Belgium + Bỉ + + + + Belize + Belize + + + + Benin + Benin + + + + Bermuda + Bermuda + + + + Bhutan + Bhutan + + + + Bolivia + Bolivia + + + + Bosnia And Herzegovina + Bosnia And Herzegovina + + + + Botswana + Botswana + + + + Bouvet Island + Bouvet Island + + + + Brazil + Brazil + + + + British Indian Ocean Territory + British Indian Ocean Territory + + + + Brunei Darussalam + Brunei Darussalam + + + + Bulgaria + Bulgaria + + + + Burkina Faso + Burkina Faso + + + + Burundi + Burundi + + + + Cambodia + Cam-pu-chia + + + + Cameroon + Cameroon + + + + Canada + Canada + + + + Cape Verde + Cape Verde + + + + Cayman Islands + Cayman Islands + + + + Central African Republic + Central African Republic + + + + Chad + Chad + + + + Chile + Chile + + + + China + Cẩu Chó - Ba Tàu - Tàu Khựa + + + + Christmas Island + Christmas Island + + + + Cocos (Keeling) Islands + Cocos (Keeling) Islands + + + + Colombia + Colombia + + + + Comoros + Comoros + + + + Congo + Congo + + + + Congo, The Democratic Republic Of The + Congo, The Democratic Republic Of The + + + + Cook Islands + Cook Islands + + + + Costa Rica + Costa Rica + + + + Cote D'Ivoire + Cote D'Ivoire + + + + Croatia + Croatia + + + + Cuba + Cuba + + + + Cyprus + Síp + + + + Czech Republic + Czech Republic + + + + Denmark + Đan Mạch + + + + Djibouti + Djibouti + + + + Dominica + Dominica + + + + Dominican Republic + Dominican Republic + + + + Ecuador + Ecuador + + + + Egypt + Ai Cập + + + + El Salvador + El Salvador + + + + Equatorial Guinea + Equatorial Guinea + + + + Eritrea + Eritrea + + + + Estonia + Estonia + + + + Ethiopia + Ethiopia + + + + Falkland Islands (Malvinas) + Falkland Islands (Malvinas) + + + + Faroe Islands + Faroe Islands + + + + Fiji + Fiji + + + + Finland + Phần Lan + + + + France + Pháp + + + + French Guiana + French Guiana + + + + French Polynesia + French Polynesia + + + + French Southern Territories + French Southern Territories + + + + Gabon + Gabon + + + + Gambia + Gambia + + + + Georgia + Georgia + + + + Germany + Đức + + + + Ghana + Ghana + + + + Gibraltar + Gibraltar + + + + Greece + Hy Lạp + + + + Greenland + Greenland + + + + Grenada + Grenada + + + + Guadeloupe + Guadeloupe + + + + Guam + Guam + + + + Guatemala + Guatemala + + + + Guernsey + Guernsey + + + + Guinea + Guinea + + + + Guinea-Bissau + Guinea-Bissau + + + + Guyana + Guyana + + + + Haiti + Haiti + + + + Heard Island And Mcdonald Islands + Heard Island And Mcdonald Islands + + + + Holy See (Vatican City State) + Holy See (Vatican City State) + + + + Honduras + Honduras + + + + Hong Kong + Hồng Khựa - Ba Tàu + + + + Hungary + Hungary + + + + Iceland + Iceland + + + + India + Ấn Độ + + + + Indonesia + Indonesia + + + + Iran, Islamic Republic Of + Iran + + + + Iraq + Iraq + + + + Ireland + Ireland + + + + Isle Of Man + Isle Of Man + + + + Israel + Israel + + + + Italy + Ý + + + + Jamaica + Jamaica + + + + Japan + Nhật + + + + Jersey + Jersey + + + + Jordan + Jordan + + + + Kazakhstan + Kazakhstan + + + + Kenya + Kenya + + + + Kiribati + Kiribati + + + + Korea, Democratic People'S Republic Of + Triều Tiên Ủn + + + + Korea, Republic Of + Hàn Quốc + + + + Kuwait + Kuwait + + + + Kyrgyzstan + Kyrgyzstan + + + + Lao People'S Democratic Republic + Lào + + + + Latvia + Latvia + + + + Lebanon + + + + + Lesotho + Lesotho + + + + Liberia + Liberia + + + + Libyan Arab Jamahiriya + Libyan Arab Jamahiriya + + + + Liechtenstein + Liechtenstein + + + + Lithuania + Lithuania + + + + Luxembourg + Luxembourg + + + + Macao + Macao + + + + Macedonia, The Former Yugoslav Republic Of + Macedonia, The Former Yugoslav Republic Of + + + + Madagascar + Madagascar + + + + Malawi + Malawi + + + + Malaysia + Malaysia + + + + Maldives + Maldives + + + + Mali + Mali + + + + Malta + Malta + + + + Marshall Islands + Marshall Islands + + + + Martinique + Martinique + + + + Mauritania + Mauritania + + + + Mauritius + Mauritius + + + + Mayotte + Mayotte + + + + Mexico + Mexico + + + + Micronesia, Federated States Of + Micronesia, Federated States Of + + + + Moldova, Republic Of + Moldova, Republic Of + + + + Monaco + Monaco + + + + Mongolia + Mongolia + + + + Montserrat + Montserrat + + + + Morocco + Morocco + + + + Mozambique + Mozambique + + + + Myanmar + Myanmar + + + + Namibia + Namibia + + + + Nauru + Nauru + + + + Nepal + Nepal + + + + Netherlands + Netherlands + + + + Netherlands Antilles + Netherlands Antilles + + + + New Caledonia + New Caledonia + + + + New Zealand + New Zealand + + + + Nicaragua + Nicaragua + + + + Niger + Niger + + + + Nigeria + Nigeria + + + + Niue + Niue + + + + Norfolk Island + Norfolk Island + + + + Northern Mariana Islands + Northern Mariana Islands + + + + Norway + Na Uy + + + + Oman + Oman + + + + Pakistan + Pakistan + + + + Palau + Palau + + + + Palestinian Territory, Occupied + Palestinian Territory, Occupied + + + + Panama + Panama + + + + Papua New Guinea + Papua New Guinea + + + + Paraguay + Paraguay + + + + Peru + Peru + + + + Philippines + Philippines + + + + Pitcairn + Pitcairn + + + + Poland + Ba Lan + + + + Portugal + Bồ Đào Nha + + + + Puerto Rico + Puerto Rico + + + + Qatar + Qatar + + + + Reunion + Reunion + + + + Romania + Romania + + + + Russian Federation + Russian Federation + + + + Rwanda + Rwanda + + + + Saint Helena + Saint Helena + + + + Saint Kitts And Nevis + Saint Kitts And Nevis + + + + Saint Lucia + Saint Lucia + + + + Saint Pierre And Miquelon + Saint Pierre And Miquelon + + + + Saint Vincent And The Grenadines + Saint Vincent And The Grenadines + + + + Samoa + Samoa + + + + San Marino + San Marino + + + + Sao Tome And Principe + Sao Tome And Principe + + + + Saudi Arabia + Saudi Arabia + + + + Senegal + Senegal + + + + Serbia And Montenegro + Serbia And Montenegro + + + + Seychelles + Seychelles + + + + Sierra Leone + Sierra Leone + + + + Singapore + Singapore + + + + Slovakia + Slovakia + + + + Slovenia + Slovenia + + + + Solomon Islands + Solomon Islands + + + + Somalia + Somalia + + + + South Africa + Nam Phi + + + + South Georgia And The South Sandwich Islands + Canada + + + + Spain + Tây Ban Nha + + + + Sri Lanka + Canada + + + + Sudan + Canada + + + + Suriname + Canada + + + + Svalbard And Jan Mayen + Canada + + + + Swaziland + Canada + + + + Sweden + Thụy Điển + + + + Switzerland + Thụy Sĩ + + + + Syrian Arab Republic + Canada + + + + Taiwan, Province Of China + Đài Loan - Tàu Khựa + + + + Tajikistan + Canada + + + + Tanzania, United Republic Of + Canada + + + + Thailand + Thái + + + + Timor-Leste + Canada + + + + Togo + Canada + + + + Tokelau + Canada + + + + Tonga + Canada + + + + Trinidad And Tobago + Canada + + + + Tunisia + Canada + + + + Turkey + Thổ Nhĩ Kỳ + + + + Turkmenistan + Canada + + + + Turks And Caicos Islands + Canada + + + + Tuvalu + Canada + + + + Uganda + Canada + + + + Ukraine + Canada + + + + United Arab Emirates + Liên Đoàn Ả Rập + + + + United Kingdom + Anh Quốc + + + + United States + Hợp Chủng Quốc Hoa Kỳ + + + + United States Minor Outlying Islands + Canada + + + + Uruguay + Canada + + + + Uzbekistan + Canada + + + + Vanuatu + Canada + + + + Venezuela + Canada + + + + Viet Nam + tiếng Việt - Việt Nam + + + + Virgin Islands, British + Canada + + + + Virgin Islands, U.S. + Virgin Islands, U.S. + + + + Wallis And Futuna + Wallis And Futuna + + + + Western Sahara + Western Sahara + + + + Yemen + Yemen + + + + Zambia + Zambia + + + + Zimbabwe + Zimbabwe + + + + Are you sure you want to report the game name: +"%1" as inappropriate? + Bạn có chắc rằng bạn muốn tố cáo tên màn game : +"%1" vì lý do không hợp lệ hay không? + + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + + + + gameTable + + + PokerTH 0.6-beta - The Open-Source Texas Holdem Engine + PokerTH 0.6-beta - The Open-Source Texas Holdem Engine + + + + Hands + Lượt Chơi + + + + Chat + Tán gẫu + + + + Save + Lưu + + + + Log + Nhật Ký + + + + Away + Không có tín hiệu + + + + Manual Action (default) + Chế độ do người dùng thiết lập (mặc định) + + + + Auto-Check / Auto-Fold + Tự động cược / Tự động bỏ cược + + + + Auto-Check / Auto-Call-Any + Tự động cược / Tự động chấp nhận tăng mức cược bất kỳ + + + + Speed: + Tốc độ: + + + + + Start Local Game ... + Bắt đầu màn chơi offline... + + + + + Ctrl+N + Nhấn phím Ctrl+N + + + + + Quit + Thoát + + + + + Ctrl+Q + Ctrl+Q + + + + + About PokerTH ... + Thông tin về trò chơi... + + + + + Settings ... + Thiết lập... + + + + + Create Network Game ... + Tạo màn chơi mạng offline... + + + + + Ctrl+O + Ctrol+O + + + + + Join Network Game ... + Tham gia màn chơi mạng offline... + + + + + Ctrl+J + Ctrl+J + + + + + + Fullscreen + Hiển thị toàn màn hình + + + + + Ctrl+F + Ctrl+F + + + + + Show/Hide Chat Window + Hiển thị/Ẩn Cửa Sổ Tán Gẫu + + + + + Ctrl+T + Ctrl+T + + + + + + + + + Show/Hide Hands Window + Hiển thị/Ẩn cửa sổ lượt chơi + + + + + Ctrl+H + Ctrl+H + + + + + Show/Hide Log Window + Hiển thị/Ẩn cửa sổ Nhật Ký + + + + + Ctrl+L + Ctrl+L + + + + + Internet Game ... + Màn chơi online... + + + + + Ctrl+I + Ctrl+I + + + + + Show/Hide Away Window + Hiển thị/Ẩn cửa sổ không tín hiệu + + + + + Ctrl+A + Ctrl+A + + + + Kick + Đuổi + + + + Vote Timeout: + Thời gian bình chọn: + + + + Yes + Đồng ý + + + + No + Không Đồng Ý + + + + Player info + Thông tin người chơi + + + + Chance + Cơ Hội + + + + Configure PokerTH ... + Tùy chỉnh trò chơi... + + + + + Close + Đóng lại + + + + + Ctrl+X + Ctrl+X + + + + Vote started by: + Bình chọn được bắt đầu bởi: + + + + + Show/Hide Chance Window + Hiển thị/ Ẩn cửa sổ Cơ Hội + + + + + Ctrl+C + Ctrl+C + + + + &View + &Chế độ hiển thị + + + + &Settings + &Thiết lập + + + + Shortcut: <Shift> + Đường dẫn tắt: <Shift> + + + + Settings + Thiết lập + + + + Configure PokerTH + + + + + gameTableImpl + + + + + + + + + + + + + + + Stop + Dừng lại + + + + PokerTH %1 + PokerTH %1 + + + + PokerTH %1 - The Open-Source Texas Holdem Engine + PokerTH %1 - The Open-Source Texas Holdem Engine + + + + + + + + + + + Start + Bắt đầu + + + + + + + + Lobby + Phòng chờ hệ thống + + + + + Chat + Tán gẫu + + + + Closing PokerTH during network game + Đóng lại chương trình sau khi chơi xong màn chơi online + + + + You are the hosting server. Do you want to close PokerTH anyway? + Bạn đang là người chủ của màn chơi này. Bạn có muốn thoát chương trình không? + + + + Really want to exit? + Bạn có thật sự muốn thoát? + + + + PokerTH - Close Table? + PokerTH - Đóng lại màn chơi này? + + + + PokerTH - Internet Game Message + PokerTH - Thông báo của màn chơi online + + + + Attention! Do you really want to leave the current game +and go back to the lobby? + Chú ý! Bạn có thật sự muốn thoát ra khỏi màn chơi này +và quay lại phòng chờ của hệ thống không? + + + + + Chat is only available to registered players. + Phần tán gẫu/chat chỉ dành riêng cho các người chơi đã đăng ký. + + + + + Chance + Cơ hội + + + + + Kick + Đuổi + + + + + Do you want to kick <b>%1</b><br>from this game? + Bạn có thật sự muốn đuổi <b>%1</b><br> khỏi màn chơi này không? + + + + + + + <b>%1</b> secs left + còn lại <b>%1</b> giây nữa + + + + vote + bỏ phiếu + + + + votes + bỏ phiếu + + + + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. + Người chơi <b>%1</b> đã <b>%2</b> %3<br>muốn đuổi người chơi này. <b>%4</b> bình chọn để đuổi người chơi. + + + + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. + Bạn nhận được <b>%1</b> %2 yêu cầu đuổi bạn.<br><b>%3</b> phiếu cần để đuổi. + + + + internetGameLoginDialog + + + + Internet Game Login + Đăng nhập màn chơi online + + + + + Registered user + Người dùng đã đăng ký + + + + + Username: + Tên đăng nhập: + + + + + Password: + Mật khẩu: + + + + + Remember password (not recommended) + Ghi nhớ mật khẩu (không nên chọn) + + + + + Login as guest + Đăng nhập dưới dạng người chơi ảo + + + + + Login + Đăng nhập + + + + Cancel + Hủy bỏ + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Create new user account</span></a></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Tạo tài khoản mới</span></a></p></td></tr></table></body></html> + + + + internetGameLoginDialogImpl + + + Create new user account + + + + + joinNetworkGameDialog + + + + Join Network Game + Tham gia màn chơi mạng offline + + + + Connect to Network Game + Đã kết nối đến phần chơi mạng offline + + + + + Server Profiles + Thông tin về hệ thống máy chủ + + + + + Name + Tên + + + + + Address + Địa chỉ + + + + + Port + Cổng + + + + + IPv6 + IPv6 + + + + + SCTP + SCTP + + + + + Save + Lưu + + + + + Delete + Xóa + + + + + Use SCTP + Sử dụng kết nối SCTP + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol"><span style=" text-decoration: underline; color:#0000ff;">What is this?</span></a></p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol"><span style=" text-decoration: underline; color:#0000ff;">Đây là gì?</span></a></p></body></html> + + + + + Use IPv6 + Sử dụng IPv6 + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> <a href="http://en.wikipedia.org/wiki/Ipv6"><span style=" text-decoration: underline; color:#0000ff;">What is this?</span></a></p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> <a href="http://en.wikipedia.org/wiki/Ipv6"><span style=" text-decoration: underline; color:#0000ff;">Đây là gì?</span></a></p></body></html> + + + + + Port: + Cổng: + + + + + IP Address / Domain Name: + Địa chỉ IP / Địa chỉ Domain: + + + + + Profile Name: + Tên Hồ Sơ: + + + + + myServerProfile1 + Hồ sơ máy chủ của tôi + + + + + Connect + Kết nối + + + + Close + Đóng lại + + + + joinNetworkGameDialogImpl + + + + + + Load Server-Profile-File Error + Lỗi xảy ra khi tải tập tin hồ sơ về máy chủ + + + + + + + Could not load server-profiles-file: + + Không thể tải tập tin về hồ sơ máy chủ: + + + + Save Server Profile Error + Lỗi xảy ra khi lưu hồ sơ về máy chủ + + + + A profile with the name: %1 already exists. +Would you like to overwrite ? + Một tên dạng hồ sơ : %1 đã tồn tại +Bạn có muốn ghi đè lên hồ sơ này không? + + + + Read Server-Profile List Error + Lỗi xảy ra khi đọc hồ sơ máy chủ + + + + Could not read server-profiles list + Không thể đọc được hồ sơ của máy chủ + + + + + Save Server-Profile-File Error + Lỗi xảy ra khi lưu tập tin về hồ sơ máy chủ + + + + + Could not save server-profiles-file: + + Không thể lưu thông tin hồ sơ máy chủ: + + + + manualBlindsOrderDialog + + + + Manual Blinds Order + Thứ tự tăng tiền cược tự chỉnh + + + + + Delete + Xóa + + + + + + + $ + $ + + + + + Add + Thêm + + + + + Afterwards: + Sau cùng: + + + + + Always double blinds + Luôn tăng gấp đôi tiền cược + + + + + Always raise by: + Luôn tăng mỗi: + + + + + Keep last blind + Giữ nguyên số tiền cược trước đó + + + + OK + + + + + manualBlindsOrderDialogImpl + + + Manual Blinds Order + Thứ tự chỉnh tiền cược tự chỉnh + + + + You cannot set more than 30 manual blinds. + Bạn không thể tăng số lượng lên 30. + + + + myMessageDialog + + + + Dialog + Thông báo + + + + + MessageText + Nội dung thông báo + + + + + Do not show this message again. + Không hiển thị thông báo này nữa. + + + + newGameDialog + + + + Start Local Game + Bắt đầu màn đơn + + + + Local Game Settings + Thiết lập màn chơi đơn + + + + + Number of players: + Số lượng người chơi: + + + + + Start Cash: + Số tiền ban đầu: + + + + + $ + $ + + + + + Blinds + Tiền cược + + + + + Use saved blinds settings + Sử dụng thiết lập về tiền cược lần trước + + + + OK + + + + + + Change blinds settings ... + Thay đổi thiết lập tỉ lệ tiền cược... + + + + + Game Speed: + Tốc độ màn chơi: + + + + selectAvatarDialog + + + + Please select an avatar + Hãy lựa chọn một hình đại diện + + + + + Select an avatar + Lựa chọn một hình đại diện + + + + + People + Người + + + + + Miscellaneous + Tổng hợp + + + + + Load avatar from external file + Tải một hình đại diện từ trong máy tính + + + + selectAvatarDialogImpl + + + + + Avatar File Error + Lỗi đối với tập tin hình đại diện + + + + Please select an avatar from the list! + Hãy lựa chọn một hình đại diện từ danh sách ! + + + + The file size of the chosen picture is too big. (max. 30KB) +Please choose a smaller picture! + Kích cỡ của hình đại diện được chọn quá lớn (tối đa là 30KB) +Xin vui lòng chọn một hình đại diện có kích thước nhỏ hơn! + + + + The entered avatar picture doesn't exist. +Please enter an valid picture! + Hình đại diện tự chọn không tồn tại. +Hãy chọn một hình đại diện đúng kiểu với hệ thống! + + + + Select external avatar picture + Lựa chọn hình đại diện tùy thích + + + + Images (*.png *.jpg *.gif) + Hình ảnh (có kiểu tập tin là *png *jpg *gif) + + + + settingsDialog + + + + Settings + Thiết lập + + + + + + Interface + Giao diện + + + + + Language: + Ngôn ngữ: + + + + + Show fade-out animation for non-winning cards + Hiển thị hiệu ứng chìm với các lá bài không thắng trong lượt chơi + + + + + Show flip-card animation + Hiển thị hiệu ứng lật mặt lá bài + + + + + Show buttons for small blind and big blind + Hiển thị nút dành cho tiền cược lớn và nhỏ + + + + + Show own cards only on mouse click + Hiển thị các lá bài của bạn bằng chuột + + + + Reverse order of F-Keys (F1 - F4) + Thay đổi trật tự của các phím chức năng ( phím F1- F4) + + + + + Network / Internet Game + Màn chơi hệ thống offline/online + + + + + Switch keyboard focus to bet-input-field if it's your turn + Chuyển đổi sang dùng bàn phím để nhận lệnh khi đến lượt + + + + + + Sound + Âm thanh + + + + + + Factory Settings + Thiết lập ban đầu + + + + + Disable splashscreen on startup + Tắt logo trò chơi khi khởi động + + + + + Show country flag in the corner of avatar + Hiển thị quốc kỳ cho mỗi quốc gia bên cạnh hình đại diện + + + + + Activate the "accidentally call after big raise" blocker + Bật tính năng "vô tình cược sau khi tăng tiền cược" + + + + + Game Table + Bàn chơi bài + + + + + + + Description + Mô tả + + + + + + + Maintainer + Người duy trì + + + + + + State + Trạng thái + + + + + Card Deck + Mặt trong lá bài + + + + + Card Back + Mặt trước lá bài + + + + + Use card back from card style + Sử dụng mặt sau lá bài từ kiểu lá bài + + + + + Use custom card back picture: + Sử dụng kiểu lá bài tự chọn cho mặt sau lá bài: + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Note: Best quality with image ratio like </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">width=48, height=76.</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Chú ý: Chất lượng hiển thị hình ảnh tốt nhất với tỉ lệ </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">chiều rộng=48, chiều cao=76.</span></p></td></tr></table></body></html> + + + + + Play sound effects + Bật hiệu ứng âm thanh + + + + + Sound Volume: + Âm lượng âm thanh: + + + + + 10 + 10 + + + + + Sound Categories + Phân loại âm thanh + + + + + Play game actions sounds like "check", "call", "raise" + Bật âm thanh với các thao tác "giữ nguyên mức cược", "cược", "tăng cược" + + + + + Play lobby chat notifications + Bật âm thanh thông báo về tin nhắn trong phần tán gẫu + + + + + Play network/internet game notifications like "player joined the game" + Bật âm thanh thông báo người chơi tham gia vào màn trong trong phần chơi mạng offline/online + + + + Local Game Settings + Thiết lập Màn Chơi Đơn + + + + + Number of players: + Số lượng người chơi: + + + + + + + Start Cash: + Tiền cược ban đầu: + + + + + + + + + + + $ + $ + + + + + + + First small blind: + Tiền cược nhỏ ban đầu: + + + + + + + Raise blinds: + Tăng tiền cược: + + + + + + + + + + + Every: + Mỗi: + + + + + + + hands + lượt + + + + + + + minutes + phút + + + + + + + Raise mode: + Chế độ tăng: + + + + + + + Always double blinds + Luôn gấp đôi tỉ lệ tiền cược + + + + + + + Manual blinds order: + Thứ tự tự chỉnh tiền cược: + + + + + + + Edit ... + Chỉnh sửa... + + + + + Game Speed: + Tốc độ màn chơi: + + + + + Pause between hands (press "start" button to go on) + Tạm dừng sau mỗi lượt (click chuột vào "bắt đầu" để tiếp tục màn chơi) + + + + + Show game settings dialog on every new game + Hiển thị cửa sổ thông báo mỗi khi tạo một màn chơi mới + + + + Network Game Settings + Thiết lập màn chơi mạng offline + + + + + Maximum number of players: + Số lượng người chơi tối đa: + + + + + Timeout for player action: + Thời gian cho mỗi người chơi: + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Note: Default </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Game Settings</span><span style=" font-size:12pt; font-style:italic;"> like &quot;Maximum number of players&quot;, &quot;Start Cash&quot; and &quot;Small Blind&quot; will be used </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">from Network Game Settings.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Chú ý: Mặc định </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Thiết lập màn chơi</span><span style=" font-size:12pt; font-style:italic;"> gồm &quot;Số lượng người chơi tối đa&quot;, &quot;Tiền cược ban đầu&quot; and &quot;Tiền cược nhỏ&quot; sẽ được dùng </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">từ thiết lập hệ thống màn chơi mạng offline.</span></p></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(This nick will also be used for the online game login)</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Người chơi:<br /><span style=" font-size:11pt; font-style:italic;">(Tên này sẽ được sử dụng mỗi khi kết nối đến hệ thống chơi mạng online/offline)</span></p></body></html> + + + Preview: + Xem thử: + + + Export as HTML + Xuất ra định dạng HTML + + + Export as txt + Xuất ra định dạng txt + + + Save as ... + Lưu dưới dạng... + + + Delete + Xóa + + + + + Reset all settings to default ... + Đưa tất cả thiết lập trở về ban đầu... + + + + + Note: You can not reset all settings to default during a running game! + Chú ý: Bạn không thể thiết lập toàn bộ các điều chỉnh khi một màn chơi nào đó đang diễn ra! + + + Log File + Tập tin Nhật Ký + + + + + + + s + giây + + + + + Network Server Settings + Thiết lập máy chủ mạng offline + + + + + + + Server Port: + Cổng Server: + + + + + + + Use SCTP + Sử dụng giao thức SCTP + + + + + + + Use IPv6 + Sử dụng IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">Đây là gì?</a> + + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Đây là gì?</a> + + + + Internet Game Settings + Thiết lập màn chơi online + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style="font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note: Default </span><span style=" font-weight:600; font-style:italic;">Game Settings</span><span style=" font-style:italic;"> like "Maximum number of players", "Start Cash" and "Small Blind" will be used </span><span style=" font-weight:600; font-style:italic;">from Network Game Settings.</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style="font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Chú Ý: Mặc định </span><span style=" font-weight:600; font-style:italic;">Thiết lập màn chơi</span><span style=" font-style:italic;"> gồm "Số lượng người chơi tối đa", "Số tiền cược ban đầu" và "tiền cược nhỏ" sẽ được sử dụng </span><span style=" font-weight:600; font-style:italic;">từ phần thiết lập màn chơi mạng offline.</span></p></body></html> + + + + + Server Address: + Địa chỉ máy chủ: + + + + + Use password for private game: + Sử dụng mật khẩu đối với màn chơi riêng: + + + + + Computer Engine + Người chơi ảo/máy tạo ra + + + + + Opponent 6: + Đối thủ 6: + + + + + Opponent 5: + Đối thủ 5: + + + + + Opponent 4: + Đối thủ 4: + + + + + Opponent 3: + Đối thủ 3: + + + + + Opponent 2: + Đối thủ 2: + + + + + Opponent 1: + Đối thủ 1: + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note: Best avatar quality with image ratio like </span><span style=" font-weight:600; font-style:italic;">width=50, height=50.</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Chú ý: Hình đại diện có độ hiển thị tốt nhất với </span><span style=" font-weight:600; font-style:italic;">chiều rộng=50, chiều cao=50.</span></p></body></html> + + + + + Enable/Disable Logging + Bật/Tắt chế độ Nhật Ký + + + + + Log File Directory: + Thư mục lưu tập tin Nhật Ký: + + + + + Write log after every: + Lưu thông tin Nhật Ký mỗi: + + + + + action (high frequent disc access) + thao tác chơi (đòi hỏi việc xử lý thông tin trên ổ đĩa thường xuyên) + + + + + hand (medium disc access) + lượt chơi (truy cập ổ đĩa hệ thống ở mức trung bình) + + + + + game (low disc access) + màn chơi (thao tác với ổ đĩa hệ thống ở mức thấp) + + + + + + Log Messages + Nội dung Nhật Ký + + + + Player Nicks/Avatars + Người chơi / Hình đại diện + + + + Show right toolbox + Hiển thị hộp công cụ bên phải + + + + Show left toolbox + Hiển thị hộp công cụ bên trái + + + + + Play blind raise notification + Bật tính năng thông báo mỗi khi tăng tiền cược + + + + + Automatic Server Configuration URL + Tự động thiết lập đường dẫn URL tự động + + + + + Serverlist Address: + Danh sách địa chỉ máy chủ: + + + + + Manual Server Configuration + Thiết lập máy chủ tùy chỉnh + + + + Human Player: + + + + + (This nick will also be used for the online game login) + + + + + Note: Best avatar quality with image ratio like width=50, height=50. + + + + + + Store log files for: + Lưu các tập tin Nhật Ký mỗi: + + + + + Day(s) + Ngày + + + + + Local Game + Màn chơi đơn + + + + + Network Game + Màn chơi mạng offline + + + + + Internet Game + Màn chơi mạng online + + + + + Nicks/Avatars + Tên người chơi/hình đại diện + + + + + Show cards chance monitor + Hiển thị cửa sổ tính toán cơ hội + + + + Note: Best quality with image ratio like width=48, height=76. + + + + + + Avatar Server: + Máy chủ hình đại diện: + + + + + + Style + Kiểu + + + + + Don't translate poker strings like check, call, raise from game table style + Không dịch các chuỗi như check, call, tăng từ kiểu đồ họa của bàn chơi bài + + + + + + + Add ... + Thêm... + + + + + + + Remove + Loại bỏ + + + + + + + Preview - Information: + Xem trước - thông tin: + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Get new PokerTH game table styles ...</span></a></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Chọn một kiểu bàn chơi bài mới ...</span></a></p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Get new PokerTH card deck styles ...</span></a></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Chọn kiểu mới cho lá bài ...</span></a></p></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:8pt; font-weight:400; font-style:normal;"> +<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note: Best quality with image ratio like </span><span style=" font-weight:600; font-style:italic;">width=48, height=76.</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:8pt; font-weight:400; font-style:normal;"> +<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Chú ý: Chất lượng hình ảnh được hiển thị tốt nhất với </span><span style=" font-weight:600; font-style:italic;">chiều rộng=48, chiều cao=76.</span></p></td></tr></table></body></html> + + + + + Delay between hands: + Thời gian chờ mỗi lượt: + + + + + Server + Máy chủ + + + + + Server Password: + + + + + + Game + Màn chơi + + + + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. + + + + + + Default game name: + Tên màn chơi mặc định: + + + + + Default game type: + Thể loại màn chơi mặc định: + + + + + Standard + Tiêu chuẩn + + + + + Registered players only + Chỉ dành cho người dùng đã đăng ký + + + + + Invited players only + Chỉ dành cho người chơi được mời + + + + + Ranking game + Màn chơi được xếp hạng trên hệ thống máy chủ + + + + + Show lobby chat + Hiển thị mục tán gẫu ở phòng chờ + + + + + Automatically leave the table after the game finished + Tự động rời khỏi bàn khi màn chơi kết thúc + + + + + Ignored Players + Bỏ qua người chơi + + + + + Player + Người chơi + + + + + Remove Player + Loại bỏ người chơi + + + + OK + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-style:italic;">(This nick will also be used for the online game login)</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Người chơi:<br /><span style=" font-style:italic;">(Tên đại diện này cũng sẽ được sử dụng khi bắt đầu màn chơi online)</span></p></body></html> + + + + + Opponent 7: + Đối thủ 7: + + + + + Opponent 8: + Đối thủ 8: + + + + + Opponent 9: + Đối thủ 9: + + + + settingsDialogImpl + + + + + + + Settings Error + Lỗi thiết lập + + + + The entered flipside picture doesn't exist. +Please enter an valid picture! + Bạn đã chọn một hình ảnh không hề tồn tại. +Hãy chọn một hình ảnh đúng với định dạng! + + + + + The log file directory doesn't exist. +Please select an valid directory! + Thư mục chứa tập tin nhật ký không tồn tại. +Hãy chọn một thư mục khác! + + + + Language Changed + Ngôn ngữ đã thay đổi + + + + You have changed application language to %1. +Please restart PokerTH to load new language! + Bạn vừa thay đổi giao diện ngôn ngữ của chương trình thành tiếng %1. +Hãy khởi động lại chương trình để áp dụng sự thay đổi này! + + + + Select your flipside picture + Lựa chọn hình ảnh flipside + + + + Images (*.png *.jpg *.gif) + Định dạng (*.png *.jpg *.gif) + + + + Open Directory + Mở thư mục + + + + + Blinds Error + Lỗi tăng tiền cược + + + + + The first element in your manual-blinds-list +is smaller than current first-small-blind! +This first-small-blind-value will be set to maximum allowed value. + Yếu tố đầu tiên trong danh sách tỉ lệ cược +là nhỏ hơn tỉ lệ cược hiện tại! +Tỉ lệ cược nhỏ này sẽ được chỉnh lên mức tối đa cho phép. + + + + The entered server list address is not a valid URL. +Please enter a valid server list address! + Bạn vừa nhập vào địa chỉ máy chủ không hợp lệ. +Hãy nhập vào một địa chỉ đúng! + + + + Afrikaans + Afrikaans + + + + Bulgarian + Bulgarian + + + + Catalan + Catalan + + + + Chinese + Cẩu khựa - ba tàu + + + + Czech + Czech + + + + Danish + Danish + + + + Dutch + Đức + + + + English + Anh + + + + Finnish + Phần Lan + + + + French + Pháp + + + + Galician + + + + + German + Đức + + + + Greek + Hy Lạp + + + + Hungarian + Hungarian + + + + Italian + Ý + + + + Japanese + Nhật + + + + Lithuania + Lithuania + + + + Norwegian + Na Uy + + + + Polish + Ba Lan + + + + Portuguese-Brazilian + Tiếng bồ đào nha của Brazilian + + + + Portuguese-Portuguese + Tiếng bồ đào nha bản địa + + + + Russian + Nga + + + + Scottish Gaelic + + + + + Slovak + Slovak + + + + Spanish + Tây ban nha + + + + Swedish + Thụy điển + + + + Tamil + Tamil + + + + Turkish + Thổ nhĩ kỳ + + + + Vietnamese + + + + + The opponent names are not unique. +Please choose different names for each Opponent! + Tên của đấu thủ không được phép trùng lặp. Hãy chọn một tên khác! + + + + Settings Information + Thông tin về thiết lập + + + + You have changed the log file directory. +Please restart PokerTH to use the new directory for the log files! + Bạn vừa lựa chọn một thư mục cho phần Nhật Ký. +Hãy khởi động lại chương trình để có thể áp dụng thay đổi này! + + + + + Maintainer Name + Tên người duy trì + + + + + Maintainer EMail + Địa chỉ email người duy trì + + + + + Create Date + Ngày tạo + + + + Windows Behaviour + Cửa sổ hiển thị + + + + scaleable + theo tỉ lệ + + + + fixed + vừa chỉnh + + + + Minimum Size + Kích thước nhỏ nhất + + + + Maximum Size + Kích thước lớn nhất + + + + Fixed Size + Kích cỡ vừa vặn + + + + State + Trạng thái + + + + Please select your game table style + Hãy chọn một kiểu trang trí cho bàn chơi bài + + + + PokerTH game table styles (*.xml) + Định dạng dành cho kiểu trang trí bàn chơi bài (*.xml) + + + + Game Table Style Error + Lỗi đối với định dạng bàn chơi bài + + + + Selected game table style file is already in the list. +Please select another one to add! + Kiểu đồ họa của bàn chơi bài vừa chọn đã có trong danh sách. +Hãy lựa chọn một kiểu mới để thêm vào! + + + + Game Table Style File Error + Lỗi với tập tin kiểu đồ họa bàn chơi bài + + + + Could not load game table style file correctly. +Style will not be placed into list! + Không thể tải được tập tin kiểu đồ họa bàn chơi bài. +Kiểu này sẽ không được thêm vào danh sách! + + + + Please select your card deck style + Hãy lựa chọn kiểu đồ họa dành cho lá bài + + + + PokerTH card deck styles (*.xml) + Định dạng của kiểu đồ họa dành cho lá bài (*.xml) + + + + Card Deck Style Error + Lỗi với kiểu đồ họa dành cho lá bài + + + + Selected card deck style file is already in the list. +Please select another one to add! + Tập tin của kiểu đồ họa dành cho lá bài đã có trong danh sách. +Hãy lựa chọn một tập tin khác để thêm vào! + + + + Card Deck Style File Error + Lỗi xảy ra với kiểu tập tin đồ họa lá bài + + + + Could not load card deck style file correctly. +Style will not be placed into list! + Không thể tải được tập tin với kiểu đồ họa lá bài được chọn. +Kiểu này sẽ không được thêm vào danh sách! + + + PokerTH - Delete log files + Thông báo - Xóa tập tin Nhật Ký + + + Do you really want to delete the selected log files? + Bạn có thật sự muốn xóa những tập tin thuộc phần Nhật Ký mà bạn vừa chọn hay không? + + + Export PokerTH log file to HTML + Xuất tập tin nhật ký thành định dạng HTML + + + PokerTH HTML log (*.html) + Định dạng tập tin Nhật Ký (*html) + + + Export PokerTH log file to plain text + Xuất định dạng tập tin nhật ký thành file văn bản thông thường + + + PokerTH plain text log (*.txt) + Định dạng tập tin nhật ký dạng văn bản (*.txt) + + + Save PokerTH log file + Lưu tập tin Nhật Ký + + + PokerTH SQL log (*.pdb) + Định dạng nhật ký dạng SQL (*pdb) + + + + PokerTH - Settings + Thiết lập chương trình + + + + Attention: this will delete all your personal settings and close PokerTH! +Do you really want to reset factory settings? + Chú ý: thao tác này sẽ xóa toàn bộ các thiết lập cá nhân và đóng lại chương trình! +Bạn có thật sự muốn áp dụng các thiết lập của chương trình về trạng thái ban đầu hay không? + + + + startNetworkGameDialog + + + + Start Network Game + Bắt đầu Màn Chơi Mạng Offline + + + + + Connected Players + Số người chơi đã kết nối + + + + + Fill up with computer opponents + Bổ sung người chơi còn thiếu bằng người chơi ảo + + + + + Maximum number of players: + Số lượng tối đa người chơi: + + + + + 0 + 0 + + + + + Kick Player + Đuổi người chơi + + + + + Chat + Tán gẫu/Chat + + + + + Start Game + Bắt đầu màn chơi + + + + Cancel + Hủy bỏ + + + + startNetworkGameDialogImpl + + + Server Error + Lỗi máy chủ + + + + You should not kick yourself from this game! + Bạn không nên tự đuổi mình ra khỏi màn chơi! + + + + startWindow + + + &2 Internet Game + &2 Màn Chơi Online + + + + &3 Create Network Game + &3 Tạo Màn Chơi Mạng Offline + + + + &4 Join Network Game + &4 Tham gia Màn Chơi Mạng Offline + + + + Logs ... + + + + + &1 Start Local Game + &1 Bắt đầu Màn Chơi Đơn + + + + &5 Logs + + + + + Network Game + Màn Chơi Mạng Offline + + + + + Start Local Game ... + Bắt đầu Màn Chơi Đơn... + + + + + Ctrl+N + Ctrl+N + + + + + Internet Game ... + Màn Chơi Mạng Online... + + + + + Ctrl+I + Ctrl+I + + + + + + About PokerTH + Thông tin về chương trình + + + + Create Network Game + Tạo màn chơi mạng offline + + + + Join Network Game + Tham gia màn chơi mạng offline + + + + Start Local Game + + + + + Configure PokerTH + + + + + Return + + + + + Internet Game + Màn chơi mạng online + + + + + Logs + + + + + + Configure PokerTH ... + Thiết Lập Chương Trình... + + + + + Quit + Thoát + + + + + Create Network Game ... + Tạo Màn Chơi Mạng Offline... + + + + + Join Network Game ... + Tham gia Màn Chơi Mạng Offline... + + + + + Ctrl+Q + Ctrl+Q + + + + + PokerTH - The Open-Source Texas Holdem Engine + Biên Dịch Bởi Phồng Tôm + + + + &PokerTH + &PokerTH + + + + &Settings + &Thiết lập + + + + startWindowImpl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error + Lỗi kết nối mạng + + + + Server address was not set. + Địa chỉ máy chủ chưa được thiết lập. + + + + An invalid port was set (ports 0-1023 are not allowed). + Địa chỉ cổng bị thiết lập sai (con số cổng được cho phép từ 0 đến 1023). + + + + Could not create a socket for TCP communication. + Không thể thiết lập socket cho giao thức TCP. + + + + Could not set the IP address. + Không thể thiết lập địa chỉ IP. + + + + Could not set the port for this type of address. + Không thể thiết lập cổng kết nối này với loại địa chỉ đã lập. + + + + The server name could not be resolved. + Tên máy chủ không thể phân giải. + + + + Bind failed - please choose a different port. + Bind thất bại - vui lòng chọn một cổng kết nối khác. + + + + Internal network error: "listen" failed. + Lỗi hệ thống mạng : "listen" thất bại. + + + + Server execution was terminated. + Thi hành lệnh từ máy chủ bị hủy bỏ. + + + + Could not connect to the server. + Không thể kết nối đến hệ thống máy chủ. + + + + Connection timed out. +Please check the server address. + +If the server is behind a NAT-Router, make sure port forwarding has been set up on server side. + Thời hạn kết nối cho phép đã hết. +Hãy chọn một địa chỉ máy chủ khác. + +Nếu máy chủ được thiết lập bao bọc bởi NAT-Router, hãy chắc rằng việc chuyển tiếp cổng kết nối được thiết lập từ phía hệ thống máy chủ. + + + + Internal network error: "select" failed. + Lỗi hệ thống kết nối mạng: "select" thất bại. + + + + Internal network error: "send" failed. + Lỗi hệ thống kết nối mạng: "send" thất bại. + + + + Internal network error: Duplicate TCP connection. + Lỗi kết nối hệ thống mạng: Trùng giao thức TCP. + + + + An invalid network packet was received. +Please make sure that all players use the same version of PokerTH. + Một packet/gói tin trong mạng lưới được nhận sai cách thức. +Hãy chắc rằng tất cả các người chơi đều cùng sử dụng chung phiên bản trò chơi. + + + + Internal state error. +Please make sure that all players use the same version of PokerTH. + Lỗi hệ thống trạng thái. +Hãy chắc rằng tất cả các người chơi đều cùng sử dụng chung một phiên bản của chương trình. + + + + Invalid server list URL. +Please correct the address in the settings. + Danh sách các đường dẫn URL bị lỗi. +Hãy sửa lại các thiết lập về phần địa chỉ. + + + + The PokerTH internet server list contains invalid data. +If you use a custom server list, please make sure its format is correct. + Hệ thống mạng máy chủ online chứa danh sách bị lỗi. +Nếu bạn đang sử dụng một hệ thống máy chủ do bạn thiết lập, hãy chắc rằng thiết lập này là chuẩn xác. + + + + Could not unzip the PokerTH internet server list. + Không thể bung nén danh sách hệ thống máy chủ online. + + + + Could not download the PokerTH internet server list. +Please make sure you are directly connected to the internet. + Không thể tải danh sách hệ thống máy chủ online. +Hãy chắc rằng bạn đã kết nối máy tính của mình vào mạng Internet. + + + + Could not open the target file when downloading the server list. + Không thể mở file đã chọn khi đang tải về danh sách máy chủ. + + + + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. + Hệ thống máy chủ online không hỗ trợ phiên hiện tại. <br>Xin vui lòng truy cập đến <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> và tải về phiên bản mới nhất. + + + + Sorry, this server is already full. + Xin lỗi, hệ thống máy chủ hiện tại đang quá tải. + + + + Invalid login. +Please check your username and password. + Đăng nhập thất bại. +Vui lòng kiểm tra tên đăng nhập và mật khẩu lần nữa. + + + + Your account is blocked indefinitely. + Tài khoản của bạn đã bị đóng. + + + + You cannot login at this time. Please try again in a few seconds. + Bạn không thể đăng nhập lúc này. Xin vui lòng thử lại trong vài giây nữa. + + + + You cannot join this game, because another player in that game has your network address. + Bạn không thể tham gia màn chơi này, vì một người chơi khác trong màn chơi này đang có cùng chung địa chỉ mạng với bạn. + + + + Your connection to the server is very slow, the game had to start without you. + Kết nối hiện tại của bạn tới máy chủ rất chậm, màn chơi này sẽ tự động bắt đầu mà không có bạn. + + + + This game is of type invite-only. You cannot join this game without being invited. + Màn chơi này thuộc loại chỉ dành cho người chơi được mời trước. Bạn không thể tham gia vào màn chơi này vì chưa nhận được lời mời nào từ chủ bàn. + + + + Invalid password when joining the game. +Please reenter the password and try again. + Sai mật khẩu khi gia nhập vào màn chơi. +Hãy điền lại mật khẩu và thử lại một lần nữa. + + + + The avatar report was accepted by the server. Thank you. + Thông báo vi phạm về hình đại diện đã được ghi nhận bởi hệ thống máy chủ. Cảm ơn bạn. + + + + This avatar was already reported by another player. + Hình đại diện này đã bị báo cáo chính sách về hình đại diện bởi một người chơi khác. + + + + An error occurred while reporting the avatar. + Một lỗi đã xảy ra khi tiến hành thông báo vi phạm về hình đại diện. + + + + The game name report was accepted by the server. Thank you. + Thông báo vi phạm về vi phạm hình đại diện đã được ghi nhận bởi hệ thống máy chủ. Cảm ơn bạn. + + + + This game name was already reported by another player. + Tên của màn chơi này hiện đã bị một người dùng khác thông báo rằng bạn đã vi phạm luật. + + + + An error occurred while reporting the game name. + Một lỗi đã xảy ra khi tiến hành gửi thông báo vi phạm tên màn chơi. + + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + + + + The password is too long. Please choose another one. + Mật khẩu quá dài. Xin vui lòng chọn một mật khẩu khác ngắn hơn. + + + + Rejoin possible! + + + + + There is an existing session with a previous game. + + + + + Do you want to rejoin this game? + + + + + + Start Network Game + Bắt đầu Màn Chơi Mạng Offline + + + + The connection to the server was lost. + Kết nối đến hệ thống máy chủ bị gián đoạn. + + + + The game name is either too short or too long. Please choose another one. + Tên của màn chơi này quá ngắn hoặc quá dài. Xin vui lòng chọn một tên khác. + + + + The game could not be found. + Màn chơi này hiện không có trên hệ thống. + + + + The chat text is invalid. + Các chuỗi ký tự của phần tán gẫu bị sai định dạng. + + + + The server referred to an unknown player. Aborting. + Hệ thống máy chủ đang tạm chuyển đến một người chơi không có sẵn. Đang thực hiện bỏ qua thao tác này. + + + + Internal error: The current player could not be found. + Lỗi hệ thống: Người chơi hiện tại không được tìm thấy. + + + + Internal error: The current player is not active. + Lỗi hệ thống: Người chơi hiện tại chưa được kích hoạt. + + + + You were kicked from the server. + Bạn đã bị đuổi khỏi hệ thống máy chủ. + + + + You were temporarily banned from the server. + Bạn tạm thời bị cấm đăng nhập vào hệ thống máy chủ. + + + + Your server connection timed out due to inactivity. You are very welcome to reconnect! + Kết nối đến hệ thống máy chủ của bạn đã hết hạn về thời gian kết nối. Bạn vui lòng kết nối lại lần nữa! + + + + The client player count is invalid. + Số lượng người chơi trong hệ thống mạng offline bị lỗi. + + + + Too many manual blinds were set. Please reconfigure the manual blinds. + Quá nhiều mức tăng cược được thiết lập. Xin chọn một thiết lập tùy chỉnh khác. + + + + An invalid avatar file was configured. Please choose a different avatar. + Một hình ảnh đại diện được thiết lập bị lỗi. Hãy chọn một hình ảnh đại diện khác. + + + + The selected avatar file is too large. Please choose a different avatar. + Hình ảnh đại diện được chọn có kích thước quá lớn. Vui lòng chọn một hình ảnh đại diện khác. + + + + An internal avatar error occured. Please report this to an admin in the lobby chat. + Lỗi hệ thống xảy ra với hình đại diện được chọn. Vui lòng thông báo lỗi này với người quản trị hệ thống ở phần tán gẫu công cộng. + + + + Could not start game: Synchronization failed. + Không thể bắt đầu màn chơi: Đồng bộ hóa hệ thống thất bại. + + + + The server is down for maintenance. Please try again later. + Hệ thống máy chủ hiện tại đang được bảo trì. Xin vui lòng đăng nhập lại sau. + + + + An internal error occured. + Lỗi hệ thống đã xảy ra. + + + + + + + + + + + + + + + Network Notification + Thông báo về hệ thống mạng offline + + + + You were kicked from the game. + Bạn đã bị đuổi khỏi màn chơi. + + + + Sorry, this game is already full. + Xin lỗi, màn chơi này hiện đã đủ người chơi. + + + + Unable to join - the server has already started the game. + Không thể tham gia - hệ thống máy chủ đã bắt đầu màn chơi này. + + + + Your admin state timed out due to inactivity. Feel free to create a new game! + Trạng thái quản trị của bạn đã quá thời hạn cho phép. Hãy tạo một màn chơi mới! + + + + You cannot join this type of game as guest. + Bạn không thể tham gia vào màn chơi này khi bạn đang đăng nhập dưới dạng khách/ẩn danh. + + + + The settings are invalid for this type of game. + Thiết lập cho màn chơi này đã bị lỗi. + + + + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. + Một phiên bản mới của trò chơi đã được phát hành.<br>Vui lòng truy cập vào <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> và tải về phiên bản mới nhất. + + + + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. + Phiên bản thử nghiệm của trò chơi mà bạn đang dùng đã quá cũ.<br>Vui lòng truy cập vào <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> và tải về phiên bản mới nhất của chương trình. + + + + + Server Message + Thông báo từ hệ thống máy chủ + + + + PokerTH %1 + PokerTH %1 + + + + tabs + + + Start Local Game + Bắt Đầu Màn Chơi Đơn + + + + Hands + Lượt + + + + Chat + Tán gẫu/Chat + + + + Kick + Đuổi + + + + Vote started by: + Người bắt đầu chọn đuổi: + + + + Vote Timeout: + Thời hạn cho bình chọn: + + + + Yes + Đồng Ý + + + + No + Không + + + + Player info + Thông tin người chơi + + + + Save + Lưu + + + + Log + Nhật Ký + + + + Away + Không sẵn sàng + + + + Manual Action (default) + Thao tác do người dùng chỉ định (mặc định) + + + + Auto-Check / Auto-Fold + Tự động Cược/ Tự động Bỏ Cược + + + + Auto-Check / Auto-Call-Any + Tự động Cược/ Tự động theo mọi mức Cược + + + + Chance + Cơ hội + + + + Speed: + Tốc độ: + + + + Shortcut: <Shift> + Phím tắt:<Shift> + + + + timeoutMsgBoxImpl + + + Timeout Warning + Cảnh báo về thời gian + + + + Please click "OK" to stop the countdown! + Hãy click "Đồng ý" để dừng lại việc đếm lùi! + + + + You are game-admin of an open game which will time out in %1 seconds. + Bạn đang ở vị trí quản trị của màn chơi mở này, sẽ hết hạn sau %1 giây nữa. + + + + You did not act in the game recently. You will be removed from the game in %1 seconds. + Bạn đã không thao tác trong màn chơi này. Bạn sẽ bị đuổi khỏi màn chơi này trong %1 giây nữa. + + + + Your connection is about to time out due to inactivity in %1 seconds. + Kết nối của bạn sẽ quá thời gian cho phép trong vòng %1 giây nữa. + + + diff --git a/ts/pokerth_zhcn.ts b/ts/pokerth_zhcn.ts index 88413795..8939ba23 100644 --- a/ts/pokerth_zhcn.ts +++ b/ts/pokerth_zhcn.ts @@ -1503,60 +1503,60 @@ p, li { white-space: pre-wrap; } 正在开始游戏, 请稍候... - + Joining a private Game 加入一个私人游戏 - + You are about to join a private game. Please enter the password! 你正在加入一个私人游戏. 请输入密码! - + open 开放 - - - - + + + + Game Info 游戏信息 - - + + Game 游戏 - - + + Players 玩家 - - + + State 状态 - - + + P - - + + Available Players 在线的玩家 @@ -1576,138 +1576,138 @@ p, li { white-space: pre-wrap; } 玩家信息... - + Report inappropriate game name - - - + + + Standard 标准比赛 - - - + + + Registered players only 仅限已注册的玩家的比赛 - - - + + + Invited players only 仅限受邀玩家的比赛 - - - + + + Ranking game 排名赛 - + Connected players - max. %1 已连接的玩家 - 人数上限 %1 - - + + T - - - + + + sec (action) - - - + + + sec (hand delay) - - + + Connected players - Max. %1 已连接的玩家 - 人数上限 %1 - + running 进行中 - - + + running games: %1 进行中的游戏:%1 - - + + open games: %1 开放着的游戏: %1 - + Invite %1 邀请 %1 - + Ignore %1 无视 %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 邀请 %1 加入 %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 拒绝了加入 %2 的邀请.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 正忙, 无法加入 %2.</span> - - + + The game will start in<br><b>%1</b> seconds. 游戏将于 <br><b>%1</b> 秒钟后开局. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. 你已加入了一个 "仅限受邀者" 类型的游戏. 你可以按自己的意愿, 右击在线玩家列表中的玩家名以邀请其他玩家. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? <b>%2</b> 向你发出了加入游戏 <b>%1</b> 的邀请. 你想加入这个游戏吗? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? 你将不会再收到来自这名玩家的消息及游戏邀请.<br>你确定要将玩家 <b>%1</b> 置于无视名单之中吗? - - + + connected players: %1 已连接的玩家: %1 @@ -1723,1316 +1723,1345 @@ Feel free to invite other players by right-clicking on their nick in the availab - - + + Time - + Show player stats 显示玩家状态 - - + + + Admin action ... + + + + + Total kickban + + + + + Close game + + + + + Connected players 已连接的玩家 - + hands 成手 - + minutes 分钟 - + double blinds 双倍盲注 - + manual blinds order 手动盲注顺序 - + Server Error 服务器出错 - + You should not kick yourself from this game! 你不能把自己踢出游戏! - + search for player ... 查找玩家... - + Chat is only available to registered players. 聊天功能仅供已注册玩家使用. - + Invite player ... 邀请玩家... - + Ignore player ... 无视玩家... - + %1 is playing in "%2". %1 正在游戏 "%2" 中玩着. - + %1 is not playing at the moment. %1 目前没在玩. - - + + PokerTH - Info Message PokerTH - 信息提示 - - + + + + PokerTH - Question PokerTH - 问题 - + Afghanistan 阿富汗 - + ALand Islands 奥兰群岛 - + Albania 阿尔巴尼亚 - + Algeria 阿尔及利亚 - + American Samoa 美属萨摩亚 - + Andorra 安道尔 - + Angola 安哥拉 - + Anguilla 安圭拉 - + Antarctica 南极洲 - + Antigua And Barbuda 安提瓜和巴布达 - + Argentina 阿根廷 - + Armenia 亚美尼亚 - + Aruba 阿鲁巴 - + Australia 澳大利亚 - + Austria 奥地利 - + Azerbaijan 阿塞拜疆 - + Bahamas 巴哈马 - + Bahrain 巴林 - + Bangladesh 孟加拉国 - + Barbados 巴巴多斯 - + Belarus 白俄罗斯 - + Belgium 比利时 - + Belize 伯利兹 - + Benin 贝宁 - + Bermuda 百慕大 - + Bhutan 不丹 - + Bolivia 玻利维亚 - + Bosnia And Herzegovina 波斯尼亚 - 黑塞哥维那 - + Botswana 博茨瓦纳 - + Bouvet Island 布维岛 - + Brazil 巴西 - + British Indian Ocean Territory 英属印度洋领地 - + Brunei Darussalam 文莱达鲁萨兰国 - + Bulgaria 保加利亚 - + Burkina Faso 布基纳法索 - + Burundi 布隆迪 - + Cambodia 柬埔寨 - + Cameroon 喀麦隆 - + Canada 加拿大 - + Cape Verde 佛得角 - + Cayman Islands 开曼群岛 - + Central African Republic 中非共和国 - + Chad 乍得 - + Chile 智利 - + China 中国 - + Christmas Island 圣诞岛 - + Cocos (Keeling) Islands 科科斯 (基林) 群岛 - + Colombia 哥伦比亚 - + Comoros 科摩罗 - + Congo 刚果 - + Congo, The Democratic Republic Of The 刚果民主共和国 - + Cook Islands 库克群岛 - + Costa Rica 哥斯达黎加 - + Cote D'Ivoire 科特迪瓦 - + Croatia 克罗地亚 - + Cuba 古巴 - + Cyprus 塞浦路斯 - + Czech Republic 捷克共和国 - + Denmark 丹麦 - + Djibouti 吉布提 - + Dominica 多米尼加 - + Dominican Republic 多米尼加共和国 - + Ecuador 厄瓜多尔 - + Egypt 埃及 - + El Salvador 萨尔瓦多 - + Equatorial Guinea 赤道几内亚 - + Eritrea 厄立特里亚 - + Estonia 爱沙尼亚 - + Ethiopia 埃塞俄比亚 - + Falkland Islands (Malvinas) 福克兰群岛 (马尔维纳斯) - + Faroe Islands 法罗群岛 - + Fiji 斐济 - + Finland 芬兰 - + France 法国 - + French Guiana 法属圭亚那 - + French Polynesia 法属波利尼西亚 - + French Southern Territories 法属南半球和南极领地 - + Gabon 加蓬 - + Gambia 冈比亚 - + Georgia 格鲁吉亚 - + Germany 德国 - + Ghana 加纳 - + Gibraltar 直布罗陀 - + Greece 希腊 - + Greenland 格陵兰 - + Grenada 格林纳达 - + Guadeloupe 瓜德罗普 - + Guam 关岛 - + Guatemala 危地马拉 - + Guernsey 根西岛 - + Guinea 几内亚 - + Guinea-Bissau 几内亚比绍 - + Guyana 圭亚那 - + Haiti 海地 - + Heard Island And Mcdonald Islands 赫德岛和麦克唐纳岛 - + Holy See (Vatican City State) 梵蒂冈 - + Honduras 洪都拉斯 - + Hong Kong 香港 - + Hungary 匈牙利 - + Iceland 冰岛 - + India 印度 - + Indonesia 印度尼西亚 - + Iran, Islamic Republic Of 伊朗伊斯兰共和国 - + Iraq 伊拉克 - + Ireland 爱尔兰 - + Isle Of Man 马恩岛 - + Israel 以色列 - + Italy 意大利 - + Jamaica 牙买加 - + Japan 日本 - + Jersey 泽西岛 - + Jordan 约旦 - + Kazakhstan 哈萨克斯坦 - + Kenya 肯尼亚 - + Kiribati 基里巴斯 - + Korea, Democratic People'S Republic Of 朝鲜民主主义人民共和国 - + Korea, Republic Of 大韩民国 - + Kuwait 科威特 - + Kyrgyzstan 吉尔吉斯斯坦 - + Lao People'S Democratic Republic 老挝人民民主共和国 - + Latvia 拉脱维亚 - + Lebanon 黎巴嫩 - + Lesotho 莱索托 - + Liberia 利比里亚 - + Libyan Arab Jamahiriya 阿拉伯利比亚民众国 - + Liechtenstein 列支敦士登 - + Lithuania 立陶宛 - + Luxembourg 卢森堡 - + Macao 澳门 - + Macedonia, The Former Yugoslav Republic Of 前南斯拉夫的马其顿共和国 - + Madagascar 马达加斯加 - + Malawi 马拉维 - + Malaysia 马来西亚 - + Maldives 马尔代夫 - + Mali 马里 - + Malta 马耳他 - + Marshall Islands 马绍尔群岛 - + Martinique 马提尼克 - + Mauritania 毛里塔尼亚 - + Mauritius 毛里求斯 - + Mayotte 马约特 - + Mexico 墨西哥 - + Micronesia, Federated States Of 密克罗尼西亚联邦 - + Moldova, Republic Of 摩尔多瓦共和国 - + Monaco 摩纳哥 - + Mongolia 蒙古 - + Montserrat 蒙特塞拉特 - + Morocco 摩洛哥 - + Mozambique 莫桑比克 - + Myanmar 缅甸 - + Namibia 纳米比亚 - + Nauru 瑙鲁 - + Nepal 尼泊尔 - + Netherlands 荷兰 - + Netherlands Antilles 荷属安的列斯 - + New Caledonia 新喀里多尼亚 - + New Zealand 新西兰 - + Nicaragua 尼加拉瓜 - + Niger 尼日尔 - + Nigeria 尼日利亚 - + Niue 纽埃 - + Norfolk Island 诺福克岛 - + Northern Mariana Islands 北马里亚纳 - + Norway 挪威 - + Oman 阿曼 - + Pakistan 巴基斯坦 - + Palau 帕劳 - + Palestinian Territory, Occupied 巴勒斯坦国 - + Panama 巴拿马 - + Papua New Guinea 巴布亚新几内亚 - + Paraguay 巴拉圭 - + Peru 秘鲁 - + Philippines 菲律宾 - + Pitcairn 皮特凯恩群岛 - + Poland 波兰 - + Portugal 葡萄牙 - + Puerto Rico 波多黎各 - + Qatar 卡塔尔 - + Reunion 留尼旺 - + Romania 罗马尼亚 - + Russian Federation 俄罗斯联邦 - + Rwanda 卢旺达 - + Saint Helena 圣赫勒拿 - + Saint Kitts And Nevis 圣基茨和尼维斯 - + Saint Lucia 圣卢西亚 - + Saint Pierre And Miquelon 圣皮埃尔和密克隆 - + Saint Vincent And The Grenadines 圣文森特和格林纳丁斯 - + Samoa 萨摩亚 - + San Marino 圣马力诺 - + Sao Tome And Principe 圣多美和普林西比 - + Saudi Arabia 沙特阿拉伯 - + Senegal 塞内加尔 - + Serbia And Montenegro 塞尔维亚和黑山 - + Seychelles 塞舌尔 - + Sierra Leone 塞拉利昂 - + Singapore 新加坡 - + Slovakia 斯洛伐克 - + Slovenia 斯洛文尼亚 - + Solomon Islands 所罗门群岛 - + Somalia 索马里 - + South Africa 南非 - + South Georgia And The South Sandwich Islands 南乔治亚岛和南桑德韦奇岛 - + Spain 西班牙 - + Sri Lanka 斯里兰卡 - + Sudan 苏丹 - + Suriname 苏里南 - + Svalbard And Jan Mayen 斯瓦尔巴岛和扬马延岛 - + Swaziland 斯威士兰 - + Sweden 瑞典 - + Switzerland 瑞士 - + Syrian Arab Republic 阿拉伯叙利亚共和国 - + Taiwan, Province Of China 台湾 - + Tajikistan 塔吉克斯坦 - + Tanzania, United Republic Of 坦桑尼亚联合共和国 - + Thailand 泰国 - + Timor-Leste 东帝汶 - + Togo 多哥 - + Tokelau 托克劳 - + Tonga 汤加 - + Trinidad And Tobago 特立尼达和多巴哥 - + Tunisia 突尼斯 - + Turkey 土耳其 - + Turkmenistan 土库曼斯坦 - + Turks And Caicos Islands 特克斯和凯科斯群岛 - + Tuvalu 图瓦卢 - + Uganda 乌干达 - + Ukraine 乌克兰 - + United Arab Emirates 阿拉伯联合酋长国 - + United Kingdom 大不列颠及北爱尔兰联合王国 - + United States 美利坚合众国 - + United States Minor Outlying Islands 美国本土外小岛屿 - + Uruguay 乌拉圭 - + Uzbekistan 乌兹别克斯坦 - + Vanuatu 瓦努阿图 - + Venezuela 委内瑞拉 - + Viet Nam 越南 - + Virgin Islands, British 英属维尔京群岛 - + Virgin Islands, U.S. 美属维尔京群岛 - + Wallis And Futuna 瓦利斯和富图纳 - + Western Sahara 西撒哈拉 - + Yemen 也门 - + Zambia 赞比亚 - + Zimbabwe 津巴布韦 - + Are you sure you want to report the game name: "%1" as inappropriate? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -4038,7 +4067,7 @@ Please enter an valid picture! - + Factory Settings @@ -4156,7 +4185,13 @@ Please enter an valid picture! 播放网络 / 因特网游戏提示音, 例如 "玩家加入游戏" - + + + Server Password: + + + + OK @@ -4303,14 +4338,14 @@ Please enter an valid picture! 玩家操作超时: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4350,41 +4385,41 @@ Please enter an valid picture! - + - + Server Port: 服务器端口: - + - + Use SCTP 使用 SCTP - + - + Use IPv6 使用 IPv6 - + - + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">这是什么?</a> - + - + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">这是什么?</a> @@ -4394,7 +4429,7 @@ Please enter an valid picture! 因特网游戏设置 - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4405,61 +4440,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">提示: 默认</span><span style=" font-weight:600; font-style:italic;">游戏设置</span><span style=" font-style:italic;"> (例如 "玩家数上限", "入场金额" 及 "小盲注") 将使用</span><span style=" font-weight:600; font-style:italic;">网络游戏的预设值.</span></p></body></html> - - + + Server Address: 服务器地址: - - + + Use password for private game: 为私人游戏使用密码: - - + + Computer Engine 电脑对手 - - + + Opponent 6: 对手 6: - - + + Opponent 5: 对手 5: - - + + Opponent 4: 对手 4: - - + + Opponent 3: 对手 3: - - + + Opponent 2: 对手 2: - - + + Opponent 1: 对手 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4470,8 +4505,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">提示: 最佳的头像图片宽高为: </span><span style=" font-weight:600; font-style:italic;">宽度 = 50, 高度 = 50</span></p></body></html> - - + + Enable/Disable Logging 启用 / 禁用日志 @@ -4480,44 +4515,44 @@ p, li { white-space: pre-wrap; } 日志保留天数: - - + + Log File Directory: 日志文件目录: - - + + Write log after every: 日志文件写入时机: - - + + action (high frequent disc access) 每次操作 (高频率磁盘读写) - - + + hand (medium disc access) 每成手 (中等频率磁盘读写) - - + + game (low disc access) 每场游戏 (低频率磁盘读写) - + Log Messages 日志消息 - + Player Nicks/Avatars 玩家昵称 / 头像 @@ -4556,29 +4591,29 @@ p, li { white-space: pre-wrap; } 手动服务器配置 - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -4618,8 +4653,8 @@ p, li { white-space: pre-wrap; } - - + + Avatar Server: 头像服务器: @@ -4720,84 +4755,84 @@ p, li { white-space: pre-wrap; } 服务器 - - + + Game 游戏 - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: 默认游戏名: - - + + Default game type: 默认游戏类型: - - + + Standard 标准比赛 - - + + Registered players only 仅限已注册的玩家的比赛 - - + + Invited players only 仅限受邀玩家的比赛 - - + + Ranking game 排名赛 - - + + Show lobby chat 显示大厅聊天 - - + + Automatically leave the table after the game finished - - + + Ignored Players 无视的玩家 - - + + Player 玩家 - - + + Remove Player 移除玩家 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4810,20 +4845,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">人类玩家:<br /><span style=" font-style:italic;">(此昵称也将用于在线游戏登录)</span></p></body></html> - - + + Opponent 7: 对手 7: - - + + Opponent 8: 对手 8: - - + + Opponent 9: 对手 9: @@ -4831,65 +4866,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error 设置出错 - + The entered flipside picture doesn't exist. Please enter an valid picture! 输入的牌背图片不存在. 请重新输入! - - + + The log file directory doesn't exist. Please select an valid directory! 日志文件目录不存在. 请重新选择! - + Language Changed 语言已变更 - + You have changed application language to %1. Please restart PokerTH to load new language! 你已经将程序语言变更为 %1. 请重启 PokerTH 以载入新的语言! - + Select your flipside picture 选择牌背图片 - + Images (*.png *.jpg *.gif) 图片文件 (*.png *.jpg *.gif) - + Open Directory 打开目录 - - + + Blinds Error 盲注出错 - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -4897,7 +4932,7 @@ This first-small-blind-value will be set to maximum allowed value. 首轮小盲注的值将被自动设为所允许的最大值. - + The entered server list address is not a valid URL. Please enter a valid server list address! 输入的服务器列表地址不是一个有效的地址. @@ -4955,222 +4990,232 @@ Please enter a valid server list address! + Galician + + + + German 德语 - + Greek 希腊语 - + Hungarian 匈牙利语 - + Italian 意大利语 - + Japanese 日语 - + Lithuania 立陶宛语 - + Norwegian 挪威语 - + Polish 波兰语 - + Portuguese-Brazilian 巴西葡萄牙语 - + Portuguese-Portuguese 葡萄牙语 - + Russian 俄语 - + Scottish Gaelic - + Slovak 斯洛伐克语 - + Spanish 西班牙语 - + Swedish 瑞典语 - + Tamil 泰米尔语 - + Turkish 土耳其语 - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name 维护人姓名 - - + + Maintainer EMail 维护人电子邮箱 - - + + Create Date 创建日期 - + Windows Behaviour 窗口能动性 - + scaleable 可缩放式 - + fixed 固定式 - + Minimum Size 最小尺寸 - + Maximum Size 最大尺寸 - + Fixed Size 固定尺寸 - + State 状态 - + Please select your game table style 请选择赌桌款式 - + PokerTH game table styles (*.xml) PokerTH 赌桌款式文件 (*.xml) - + Game Table Style Error 赌桌款式出错 - + Selected game table style file is already in the list. Please select another one to add! 选定的赌桌款式文件在列表里已经有了. 请另选一个! - + Game Table Style File Error 赌桌款式文件出错 - + Could not load game table style file correctly. Style will not be placed into list! 无法正确加载赌桌款式文件. 赌桌款式将不会被放入列表中! - + Please select your card deck style 请选择牌叠款式 - + PokerTH card deck styles (*.xml) PokerTH 牌叠款式文件 (*.xml) - + Card Deck Style Error 牌叠款式出错 - + Selected card deck style file is already in the list. Please select another one to add! 选定的牌叠款式文件在列表里已经有了. 请另选一个! - + Card Deck Style File Error 牌叠款式文件出错 - + Could not load card deck style file correctly. Style will not be placed into list! 无法正确加载牌叠款式文件. @@ -5193,12 +5238,12 @@ Style will not be placed into list! PokerTH SQL 日志文件 (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5661,17 +5706,17 @@ Please reenter the password and try again. 请重新输入密码并重试. - + The avatar report was accepted by the server. Thank you. 服务器已接受了头像举报. 谢谢你. - + This avatar was already reported by another player. 这个头像已被其他玩家举报. - + An error occurred while reporting the avatar. 举报头像时有错误发生. @@ -5849,25 +5894,56 @@ Please reenter the password and try again. - + Server Message 服务器消息 - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. + + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + PokerTH %1 From ef489dae8a40eba79ae739f7d1aa11930cd96b38 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 29 Jun 2013 16:23:10 +0200 Subject: [PATCH 007/128] Work on spectator mode - joining as spectator now possible (on server side). --- pokerth.proto | 5 +- src/net/common/servergame.cpp | 26 +- src/net/common/servergamestate.cpp | 165 +++++++---- src/net/common/serverlobbythread.cpp | 46 +-- src/net/servergame.h | 11 +- src/net/servergamestate.h | 3 + src/third_party/protobuf/pokerth.pb.cc | 64 ++++- src/third_party/protobuf/pokerth.pb.h | 49 +++- tests/src/de/pokerth/protocol/ProtoBuf.java | 211 ++++++++++++-- tests/src/de/pokerth/test/AllTests.java | 3 +- .../de/pokerth/test/SpectatorJoinTest.java | 262 ++++++++++++++++++ tests/src/de/pokerth/test/TestBase.java | 5 + 12 files changed, 732 insertions(+), 118 deletions(-) create mode 100644 tests/src/de/pokerth/test/SpectatorJoinTest.java diff --git a/pokerth.proto b/pokerth.proto index f8563d69..3f7632b3 100644 --- a/pokerth.proto +++ b/pokerth.proto @@ -223,6 +223,7 @@ message GameListNewMessage { repeated uint32 playerIds = 4 [packed = true]; required uint32 adminPlayerId = 5; required NetGameInfo gameInfo = 6; + repeated uint32 spectatorIds = 7 [packed = true]; } message GameListUpdateMessage { @@ -288,8 +289,8 @@ message SubscriptionRequestMessage { message JoinExistingGameMessage { required uint32 gameId = 1; optional string password = 2; - optional bool autoLeave = 3; - optional bool spectateOnly = 4; + optional bool autoLeave = 3 [default = false]; + optional bool spectateOnly = 4 [default = false]; } message JoinNewGameMessage { diff --git a/src/net/common/servergame.cpp b/src/net/common/servergame.cpp index 4e6cbcb0..d09aa757 100644 --- a/src/net/common/servergame.cpp +++ b/src/net/common/servergame.cpp @@ -178,13 +178,13 @@ ServerGame::GetCurRound() const } void -ServerGame::SendToAllPlayers(boost::shared_ptr packet, SessionData::State state) +ServerGame::SendToAllPlayers(boost::shared_ptr packet, int state) { GetSessionManager().SendToAllSessions(GetLobbyThread().GetSender(), packet, state); } void -ServerGame::SendToAllButOnePlayers(boost::shared_ptr packet, SessionId except, SessionData::State state) +ServerGame::SendToAllButOnePlayers(boost::shared_ptr packet, SessionId except, int state) { GetSessionManager().SendToAllButOneSessions(GetLobbyThread().GetSender(), packet, except, state); } @@ -625,6 +625,12 @@ ServerGame::GetPlayerIdList() const return idList; } +PlayerIdList +ServerGame::GetSpectatorIdList() const +{ + return GetSessionManager().GetPlayerIdList(SessionData::Spectating); +} + bool ServerGame::IsPlayerConnected(const std::string &name) const { @@ -747,6 +753,22 @@ ServerGame::GetAndResetReactivatePlayers() return tmpList; } +void +ServerGame::AddNewSpectator(unsigned playerId) +{ + boost::mutex::scoped_lock lock(m_newSpectatorListMutex); + m_newSpectatorList.push_back(playerId); +} + +PlayerIdList +ServerGame::GetAndResetNewSpectators() +{ + boost::mutex::scoped_lock lock(m_newSpectatorListMutex); + PlayerIdList tmpList(m_newSpectatorList); + m_newSpectatorList.clear(); + return tmpList; +} + void ServerGame::SetNameReported() { diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index 374b1f01..c1bc64c8 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -102,7 +102,7 @@ static void SendPlayerAction(ServerGame &server, boost::shared_ptrset_playerid(player->getMyUniqueID()); netActionDone->set_playermoney(player->getMyCash()); netActionDone->set_totalplayerbet(player->getMySet()); - server.SendToAllPlayers(packet, SessionData::Game); + server.SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating); } static void SendNewRoundCards(ServerGame &server, Game &curGame, int state) @@ -122,7 +122,7 @@ static void SendNewRoundCards(ServerGame &server, Game &curGame, int state) netDealFlop->set_flopcard1(cards[0]); netDealFlop->set_flopcard2(cards[1]); netDealFlop->set_flopcard3(cards[2]); - server.SendToAllPlayers(packet, SessionData::Game); + server.SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating); } break; case GAME_STATE_TURN: { @@ -132,7 +132,7 @@ static void SendNewRoundCards(ServerGame &server, Game &curGame, int state) DealTurnCardMessage *netDealTurn = packet->GetMsg()->mutable_dealturncardmessage(); netDealTurn->set_gameid(server.GetId()); netDealTurn->set_turncard(cards[3]); - server.SendToAllPlayers(packet, SessionData::Game); + server.SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating); } break; case GAME_STATE_RIVER: { @@ -142,7 +142,7 @@ static void SendNewRoundCards(ServerGame &server, Game &curGame, int state) DealRiverCardMessage *netDealRiver = packet->GetMsg()->mutable_dealrivercardmessage(); netDealRiver->set_gameid(server.GetId()); netDealRiver->set_rivercard(cards[4]); - server.SendToAllPlayers(packet, SessionData::Game); + server.SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating); } break; default: { @@ -286,7 +286,7 @@ AbstractServerGameStateReceiving::ProcessPacket(boost::shared_ptr se netChat->set_playerid(session->GetPlayerData()->GetUniqueId()); netChat->set_chattype(ChatMessage::chatTypeGame); netChat->set_chattext(netChatRequest.chattext()); - server->SendToAllPlayers(packet, SessionData::Game); + server->SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating); chatSent = true; // Send the message to the chat cleaner bot for ranking games. @@ -410,6 +410,37 @@ AbstractServerGameStateReceiving::CreateNetPacketJoinGameAck(const ServerGame &s return packet; } +boost::shared_ptr +AbstractServerGameStateReceiving::CreateNetPacketHandStart(const ServerGame &server) +{ + const Game &curGame = server.GetGame(); + + boost::shared_ptr notifyCards(new NetPacket); + notifyCards->GetMsg()->set_messagetype(PokerTHMessage::Type_HandStartMessage); + HandStartMessage *netHandStart = notifyCards->GetMsg()->mutable_handstartmessage(); + netHandStart->set_gameid(server.GetId()); + + PlayerListIterator player_i = curGame.getSeatsList()->begin(); + PlayerListIterator player_end = curGame.getSeatsList()->end(); + int playerCounter = 0; + while (player_i != player_end && playerCounter < server.GetStartData().numberOfPlayers) { + NetPlayerState seatState; + if (!(*player_i)->getMyActiveStatus()) { + seatState = netPlayerStateNoMoney; + } else if (!(*player_i)->isSessionActive()) { + seatState = netPlayerStateSessionInactive; + } else { + seatState = netPlayerStateNormal; + } + netHandStart->add_seatstates(seatState); + ++player_i; + ++playerCounter; + } + + netHandStart->set_smallblind(curGame.getCurrentHand()->getSmallBlind()); + return notifyCards; +} + void AbstractServerGameStateReceiving::AcceptNewSession(boost::shared_ptr server, boost::shared_ptr session, bool spectateOnly) { @@ -430,9 +461,9 @@ AbstractServerGameStateReceiving::AcceptNewSession(boost::shared_ptr // Send "Player Joined"/"Spectator Joined" to other fully connected clients. if (spectateOnly) { - server->SendToAllPlayers(CreateNetPacketSpectatorJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game); + server->SendToAllPlayers(CreateNetPacketSpectatorJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game | SessionData::Spectating); } else { - server->SendToAllPlayers(CreateNetPacketPlayerJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game); + server->SendToAllPlayers(CreateNetPacketPlayerJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game | SessionData::Spectating); } // Accept session. @@ -513,6 +544,9 @@ ServerGameStateInit::HandleNewPlayer(boost::shared_ptr server, boost void ServerGameStateInit::HandleNewSpectator(boost::shared_ptr server, boost::shared_ptr session) { + if (session && session->GetPlayerData()) { + AcceptNewSession(server, session, true); + } } void @@ -613,7 +647,7 @@ ServerGameStateInit::SendStartEvent(ServerGame &server, bool fillWithComputerPla server.AddComputerPlayer(tmpPlayerData); // Send "Player Joined" to other fully connected clients. - server.SendToAllPlayers(CreateNetPacketPlayerJoined(server.GetId(), *tmpPlayerData), SessionData::Game); + server.SendToAllPlayers(CreateNetPacketPlayerJoined(server.GetId(), *tmpPlayerData), SessionData::Game | SessionData::Spectating); // Notify lobby. server.GetLobbyThread().NotifyPlayerJoinedGame(server.GetId(), tmpPlayerData->GetUniqueId()); @@ -735,6 +769,9 @@ ServerGameStateStartGame::HandleNewPlayer(boost::shared_ptr server, void ServerGameStateStartGame::HandleNewSpectator(boost::shared_ptr server, boost::shared_ptr session) { + if (session && session->GetPlayerData()) { + AcceptNewSession(server, session, false); + } } void @@ -789,7 +826,7 @@ ServerGameStateStartGame::DoStart(boost::shared_ptr server) ++player_i; } - server->SendToAllPlayers(packet, SessionData::Game); + server->SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating); // Start the first hand. ServerGameStateHand::StartNewHand(server); @@ -835,6 +872,10 @@ AbstractServerGameStateRunning::HandleNewPlayer(boost::shared_ptr se void AbstractServerGameStateRunning::HandleNewSpectator(boost::shared_ptr server, boost::shared_ptr session) { + if (session && session->GetPlayerData()) { + AcceptNewSession(server, session, false); + server->AddNewSpectator(session->GetPlayerData()->GetUniqueId()); + } } void @@ -941,7 +982,7 @@ ServerGameStateHand::EngineLoop(boost::shared_ptr server) playerAllIn->set_allincard2(tmpCards[1]); ++i; } - server->SendToAllPlayers(allIn, SessionData::Game); + server->SendToAllPlayers(allIn, SessionData::Game | SessionData::Spectating); curGame.getCurrentHand()->setCardsShown(true); server->GetStateTimer1().expires_from_now( @@ -976,7 +1017,7 @@ ServerGameStateHand::EngineLoop(boost::shared_ptr server) netPlayersTurn->set_gameid(server->GetId()); netPlayersTurn->set_gamestate(static_cast(curGame.getCurrentHand()->getCurrentRound())); netPlayersTurn->set_playerid(curPlayer->getMyUniqueID()); - server->SendToAllPlayers(notification, SessionData::Game); + server->SendToAllPlayers(notification, SessionData::Game | SessionData::Spectating); // If the player is computer controlled, let the engine act. if (curPlayer->getMyType() == PLAYER_TYPE_COMPUTER) { @@ -1018,7 +1059,7 @@ ServerGameStateHand::EngineLoop(boost::shared_ptr server) netEndHand->set_playerid(player->getMyUniqueID()); netEndHand->set_moneywon(player->getLastMoneyWon()); netEndHand->set_playermoney(player->getMyCash()); - server->SendToAllPlayers(endHand, SessionData::Game); + server->SendToAllPlayers(endHand, SessionData::Game | SessionData::Spectating); } else { // End of Hand - show cards. const PlayerIdList showList(curGame.getCurrentHand()->getBoard()->getPlayerNeedToShowCards()); @@ -1038,7 +1079,7 @@ ServerGameStateHand::EngineLoop(boost::shared_ptr server) } ++i; } - server->SendToAllPlayers(endHand, SessionData::Game); + server->SendToAllPlayers(endHand, SessionData::Game | SessionData::Spectating); } // Remove disconnected players. This is the one and only place to do this. @@ -1123,7 +1164,7 @@ ServerGameStateHand::TimerNextGame(const boost::system::error_code &ec, boost::s EndOfGameMessage *netEndGame = endGame->GetMsg()->mutable_endofgamemessage(); netEndGame->set_gameid(server->GetId()); netEndGame->set_winnerplayerid(winnerPlayerId); - server->SendToAllPlayers(endGame, SessionData::Game); + server->SendToAllPlayers(endGame, SessionData::Game | SessionData::Spectating); // Wait for the start of a new game. server->RemoveAutoLeavePlayers(); @@ -1168,6 +1209,9 @@ ServerGameStateHand::StartNewHand(boost::shared_ptr server) // This has to be done before initialising the new hand, because there are side effects. InitRejoiningPlayers(server); + // Initialize new spectators. + InitNewSpectators(server); + // Kick inactive players. CheckPlayerTimeouts(server); @@ -1193,10 +1237,8 @@ ServerGameStateHand::StartNewHand(boost::shared_ptr server) bool errorFlag = false; tmpPlayer->getMyCards(cards); - boost::shared_ptr notifyCards(new NetPacket); - notifyCards->GetMsg()->set_messagetype(PokerTHMessage::Type_HandStartMessage); + boost::shared_ptr notifyCards = CreateNetPacketHandStart(*server); HandStartMessage *netHandStart = notifyCards->GetMsg()->mutable_handstartmessage(); - netHandStart->set_gameid(server->GetId()); string tmpPassword(tmpSession->AuthGetPassword()); if (tmpPassword.empty()) { // encrypt only if password is present HandStartMessage::PlainCards *plainCards = netHandStart->mutable_plaincards(); @@ -1222,30 +1264,14 @@ ServerGameStateHand::StartNewHand(boost::shared_ptr server) errorFlag = true; } } - PlayerListIterator player_i = curGame.getSeatsList()->begin(); - PlayerListIterator player_end = curGame.getSeatsList()->end(); - int playerCounter = 0; - while (player_i != player_end && playerCounter < server->GetStartData().numberOfPlayers) { - NetPlayerState seatState; - if (!(*player_i)->getMyActiveStatus()) { - seatState = netPlayerStateNoMoney; - } else if (!(*player_i)->isSessionActive()) { - seatState = netPlayerStateSessionInactive; - } else { - seatState = netPlayerStateNormal; - } - netHandStart->add_seatstates(seatState); - ++player_i; - ++playerCounter; - } if (!errorFlag) { - netHandStart->set_smallblind(curGame.getCurrentHand()->getSmallBlind()); server->GetLobbyThread().GetSender().Send(tmpSession, notifyCards); } } ++i; } + server->SendToAllPlayers(CreateNetPacketHandStart(*server), SessionData::Spectating); // Start hand. curGame.startHand(); @@ -1268,7 +1294,7 @@ ServerGameStateHand::StartNewHand(boost::shared_ptr server) netSmallBlind->set_playermoney(tmpPlayer->getMyCash()); netSmallBlind->set_highestset(server->GetGame().getCurrentHand()->getCurrentBeRo()->getHighestSet()); netSmallBlind->set_minimumraise(server->GetGame().getCurrentHand()->getCurrentBeRo()->getMinimumRaise()); - server->SendToAllPlayers(notifySmallBlind, SessionData::Game); + server->SendToAllPlayers(notifySmallBlind, SessionData::Game | SessionData::Spectating); break; } ++i; @@ -1290,7 +1316,7 @@ ServerGameStateHand::StartNewHand(boost::shared_ptr server) netBigBlind->set_playermoney(tmpPlayer->getMyCash()); netBigBlind->set_highestset(server->GetGame().getCurrentHand()->getCurrentBeRo()->getHighestSet()); netBigBlind->set_minimumraise(server->GetGame().getCurrentHand()->getCurrentBeRo()->getMinimumRaise()); - server->SendToAllPlayers(notifyBigBlind, SessionData::Game); + server->SendToAllPlayers(notifyBigBlind, SessionData::Game | SessionData::Spectating); break; } ++i; @@ -1364,6 +1390,21 @@ ServerGameStateHand::InitRejoiningPlayers(boost::shared_ptr server) } } +void +ServerGameStateHand::InitNewSpectators(boost::shared_ptr server) +{ + PlayerIdList spectatorIdList(server->GetAndResetNewSpectators()); + PlayerIdList::iterator i = spectatorIdList.begin(); + PlayerIdList::iterator end = spectatorIdList.end(); + while (i != end) { + boost::shared_ptr session(server->GetSessionManager().GetSessionByUniquePlayerId(*i)); + if (session && session->GetPlayerData()) { + SendGameData(server, session); + } + ++i; + } +} + void ServerGameStateHand::PerformRejoin(boost::shared_ptr server, boost::shared_ptr session) { @@ -1377,7 +1418,7 @@ ServerGameStateHand::PerformRejoin(boost::shared_ptr server, boost:: PlayerIdChangedMessage *netIdChanged = packet->GetMsg()->mutable_playeridchangedmessage(); netIdChanged->set_oldplayerid(rejoinPlayer->getMyUniqueID()); netIdChanged->set_newplayerid(session->GetPlayerData()->GetUniqueId()); - server->SendToAllButOnePlayers(packet, session->GetId(), SessionData::Game); + server->SendToAllButOnePlayers(packet, session->GetId(), SessionData::Game | SessionData::Spectating); // Update the dealer, if necessary. curGame.replaceDealer(rejoinPlayer->getMyUniqueID(), session->GetPlayerData()->GetUniqueId()); @@ -1388,32 +1429,38 @@ ServerGameStateHand::PerformRejoin(boost::shared_ptr server, boost:: rejoinPlayer->setMyGuid(session->GetPlayerData()->GetGuid()); rejoinPlayer->markRemoteAction(); rejoinPlayer->setIsSessionActive(true); - - // Send game start notification to rejoining client. - packet.reset(new NetPacket); - packet->GetMsg()->set_messagetype(PokerTHMessage::Type_GameStartRejoinMessage); - GameStartRejoinMessage *netGameStart = packet->GetMsg()->mutable_gamestartrejoinmessage(); - netGameStart->set_gameid(server->GetId()); - netGameStart->set_startdealerplayerid(curGame.getDealerPosition()); - netGameStart->set_handnum(curGame.getCurrentHandID()); - PlayerListIterator player_i = curGame.getSeatsList()->begin(); - PlayerListIterator player_end = curGame.getSeatsList()->end(); - int player_count = 0; - while (player_i != player_end && player_count < server->GetStartData().numberOfPlayers) { - boost::shared_ptr tmpPlayer = *player_i; - GameStartRejoinMessage::RejoinPlayerData *playerSlot = netGameStart->add_rejoinplayerdata(); - playerSlot->set_playerid(tmpPlayer->getMyUniqueID()); - playerSlot->set_playermoney(tmpPlayer->getMyCash()); - ++player_i; - ++player_count; - } - - server->GetLobbyThread().GetSender().Send(session, packet); + SendGameData(server, session); } else { server->SessionError(session, ERR_SOCK_INVALID_STATE); } } +void +ServerGameStateHand::SendGameData(boost::shared_ptr server, boost::shared_ptr session) +{ + Game &curGame = server->GetGame(); + // Send game start notification to rejoining client. + boost::shared_ptr packet(new NetPacket); + packet->GetMsg()->set_messagetype(PokerTHMessage::Type_GameStartRejoinMessage); + GameStartRejoinMessage *netGameStart = packet->GetMsg()->mutable_gamestartrejoinmessage(); + netGameStart->set_gameid(server->GetId()); + netGameStart->set_startdealerplayerid(curGame.getDealerPosition()); + netGameStart->set_handnum(curGame.getCurrentHandID()); + PlayerListIterator player_i = curGame.getSeatsList()->begin(); + PlayerListIterator player_end = curGame.getSeatsList()->end(); + int player_count = 0; + while (player_i != player_end && player_count < server->GetStartData().numberOfPlayers) { + boost::shared_ptr tmpPlayer = *player_i; + GameStartRejoinMessage::RejoinPlayerData *playerSlot = netGameStart->add_rejoinplayerdata(); + playerSlot->set_playerid(tmpPlayer->getMyUniqueID()); + playerSlot->set_playermoney(tmpPlayer->getMyCash()); + ++player_i; + ++player_count; + } + + server->GetLobbyThread().GetSender().Send(session, packet); +} + //----------------------------------------------------------------------------- @@ -1604,7 +1651,7 @@ ServerGameStateWaitNextHand::InternalProcessPacket(boost::shared_ptr boost::shared_ptr tmpPlayer(curGame.getPlayerByUniqueId(session->GetPlayerData()->GetUniqueId())); if (tmpPlayer) { SetPlayerResult(*netShowCards->mutable_playerresult(), tmpPlayer, curGame.getCurrentHand()->getRoundBeforePostRiver()); - server->SendToAllPlayers(show, SessionData::Game); + server->SendToAllPlayers(show, SessionData::Game | SessionData::Spectating); } } } diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 9b42e3b9..b96d6f55 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -426,7 +426,7 @@ ServerLobbyThread::NotifyPlayerJoinedLobby(unsigned playerId) { boost::shared_ptr notify = CreateNetPacketPlayerListNew(playerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Game | SessionData::Spectating); } void @@ -434,7 +434,7 @@ ServerLobbyThread::NotifyPlayerLeftLobby(unsigned playerId) { boost::shared_ptr notify = CreateNetPacketPlayerListLeft(playerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Game | SessionData::Spectating); } void @@ -448,7 +448,7 @@ ServerLobbyThread::NotifyPlayerJoinedGame(unsigned gameId, unsigned playerId) netListMsg->set_playerid(playerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); } void @@ -462,7 +462,7 @@ ServerLobbyThread::NotifyPlayerLeftGame(unsigned gameId, unsigned playerId) netListMsg->set_playerid(playerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); } void @@ -476,7 +476,7 @@ ServerLobbyThread::NotifySpectatorJoinedGame(unsigned gameId, unsigned playerId) netListMsg->set_playerid(playerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); } void @@ -490,7 +490,7 @@ ServerLobbyThread::NotifySpectatorLeftGame(unsigned gameId, unsigned playerId) netListMsg->set_playerid(playerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); } void @@ -505,7 +505,7 @@ ServerLobbyThread::NotifyGameAdminChanged(unsigned gameId, unsigned newAdminPlay netListMsg->set_newadminplayerid(newAdminPlayerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); } void @@ -513,7 +513,7 @@ ServerLobbyThread::NotifyStartingGame(unsigned gameId) { boost::shared_ptr packet = CreateNetPacketGameListUpdate(gameId, GAME_MODE_STARTED); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); } void @@ -521,7 +521,7 @@ ServerLobbyThread::NotifyReopeningGame(unsigned gameId) { boost::shared_ptr packet = CreateNetPacketGameListUpdate(gameId, GAME_MODE_CREATED); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); } void @@ -649,7 +649,7 @@ ServerLobbyThread::SendGlobalChat(const string &message) netChat->set_chattext(message); m_sessionManager.SendToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendToAllSessions(GetSender(), packet, SessionData::Game); + m_gameSessionManager.SendToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); } void @@ -661,7 +661,7 @@ ServerLobbyThread::SendGlobalMsgBox(const string &message) netDialog->set_notificationtext(message); m_sessionManager.SendToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendToAllSessions(GetSender(), packet, SessionData::Game); + m_gameSessionManager.SendToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); } void @@ -674,7 +674,7 @@ ServerLobbyThread::SendChatBotMsg(const std::string &message) netChat->set_chattext(message); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); GetIrcBotCallback().SignalLobbyMessage( 0, @@ -694,7 +694,7 @@ ServerLobbyThread::SendChatBotMsg(unsigned gameId, const std::string &message) GameMap::const_iterator pos = m_gameMap.find(gameId); if (pos != m_gameMap.end()) { - pos->second->SendToAllPlayers(packet, SessionData::Game); + pos->second->SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating); } } @@ -1415,7 +1415,7 @@ ServerLobbyThread::HandleNetPacketChatRequest(boost::shared_ptr ses netChat->set_chattext(chatMsg); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); // Send the message to the chat cleaner bot. m_chatCleanerManager->HandleLobbyChatText( @@ -1481,7 +1481,7 @@ ServerLobbyThread::HandleNetPacketRejectGameInvitation(boost::shared_ptrset_playerid(tmpPlayerId); netReject->set_playerrejectreason(reject.myrejectreason()); - game.SendToAllPlayers(packet, SessionData::Game); + game.SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating); } } } @@ -1902,7 +1902,7 @@ ServerLobbyThread::InternalAddGame(boost::shared_ptr game) m_gameMap.insert(GameMap::value_type(game->GetId(), game)); // Notify all players. m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), CreateNetPacketGameListNew(*game), SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), CreateNetPacketGameListNew(*game), SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), CreateNetPacketGameListNew(*game), SessionData::Game | SessionData::Spectating); { boost::mutex::scoped_lock lock(m_statMutex); @@ -1934,7 +1934,7 @@ ServerLobbyThread::InternalRemoveGame(boost::shared_ptr game) // Notify all players. boost::shared_ptr packet = CreateNetPacketGameListUpdate(game->GetId(), GAME_MODE_CLOSED); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); } void @@ -2098,7 +2098,7 @@ ServerLobbyThread::SendPlayerList(boost::shared_ptr s) { // Retrieve all player ids. PlayerIdList idList(m_sessionManager.GetPlayerIdList(SessionData::Established)); - PlayerIdList gameIdList(m_gameSessionManager.GetPlayerIdList(SessionData::Game)); + PlayerIdList gameIdList(m_gameSessionManager.GetPlayerIdList(SessionData::Game | SessionData::Spectating)); idList.splice(idList.begin(), gameIdList); // Send all player ids to client. PlayerIdList::const_iterator i = idList.begin(); @@ -2152,7 +2152,7 @@ ServerLobbyThread::BroadcastStatisticsUpdate(const ServerStats &stats) data->set_statisticsvalue(m_sessionManager.GetRawSessionCount() + m_gameSessionManager.GetRawSessionCount()); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); } } @@ -2293,6 +2293,14 @@ ServerLobbyThread::CreateNetPacketGameListNew(const ServerGame &game) ++i; } + tmpList = game.GetSpectatorIdList(); + i = tmpList.begin(); + end = tmpList.end(); + while (i != end) { + netGameList->add_spectatorids(*i); + ++i; + } + return packet; } diff --git a/src/net/servergame.h b/src/net/servergame.h index 6d74b4d8..16a8b694 100644 --- a/src/net/servergame.h +++ b/src/net/servergame.h @@ -77,8 +77,8 @@ public: ServerCallback &GetCallback(); GameState GetCurRound() const; - void SendToAllPlayers(boost::shared_ptr packet, SessionData::State state); - void SendToAllButOnePlayers(boost::shared_ptr packet, SessionId except, SessionData::State state); + void SendToAllPlayers(boost::shared_ptr packet, int state); + void SendToAllButOnePlayers(boost::shared_ptr packet, SessionId except, int state); void RemoveAllSessions(); bool IsPasswordProtected() const; @@ -88,6 +88,7 @@ public: boost::shared_ptr GetPlayerDataByUniqueId(unsigned playerId) const; PlayerIdList GetPlayerIdList() const; + PlayerIdList GetSpectatorIdList() const; bool IsPlayerConnected(const std::string &name) const; bool IsPlayerConnected(unsigned playerId) const; bool IsClientAddressConnected(const std::string &clientAddress) const; @@ -111,6 +112,9 @@ public: void AddReactivatePlayer(unsigned playerId); PlayerIdList GetAndResetReactivatePlayers(); + void AddNewSpectator(unsigned playerId); + PlayerIdList GetAndResetNewSpectators(); + void SetNameReported(); bool IsNameReported() const; @@ -205,6 +209,9 @@ private: PlayerIdList m_reactivatePlayerList; mutable boost::mutex m_reactivatePlayerListMutex; + PlayerIdList m_newSpectatorList; + mutable boost::mutex m_newSpectatorListMutex; + PlayerIdList m_reportedAvatarList; RankingMap m_rankingMap; diff --git a/src/net/servergamestate.h b/src/net/servergamestate.h index 3999a3bd..83058267 100644 --- a/src/net/servergamestate.h +++ b/src/net/servergamestate.h @@ -82,6 +82,7 @@ public: static boost::shared_ptr CreateNetPacketPlayerJoined(unsigned gameId, const PlayerData &playerData); static boost::shared_ptr CreateNetPacketSpectatorJoined(unsigned gameId, const PlayerData &playerData); static boost::shared_ptr CreateNetPacketJoinGameAck(const ServerGame &server, const PlayerData &playerData, bool spectateOnly); + static boost::shared_ptr CreateNetPacketHandStart(const ServerGame &server); static void AcceptNewSession(boost::shared_ptr server, boost::shared_ptr session, bool spectateOnly); @@ -190,7 +191,9 @@ protected: static void CheckPlayerTimeouts(boost::shared_ptr server); static void ReactivatePlayers(boost::shared_ptr server); static void InitRejoiningPlayers(boost::shared_ptr server); + static void InitNewSpectators(boost::shared_ptr server); static void PerformRejoin(boost::shared_ptr server, boost::shared_ptr session); + static void SendGameData(boost::shared_ptr server, boost::shared_ptr session); private: static ServerGameStateHand s_state; diff --git a/src/third_party/protobuf/pokerth.pb.cc b/src/third_party/protobuf/pokerth.pb.cc index 0f3c20e9..872ff030 100644 --- a/src/third_party/protobuf/pokerth.pb.cc +++ b/src/third_party/protobuf/pokerth.pb.cc @@ -4569,6 +4569,7 @@ const int GameListNewMessage::kIsPrivateFieldNumber; const int GameListNewMessage::kPlayerIdsFieldNumber; const int GameListNewMessage::kAdminPlayerIdFieldNumber; const int GameListNewMessage::kGameInfoFieldNumber; +const int GameListNewMessage::kSpectatorIdsFieldNumber; #endif // !_MSC_VER GameListNewMessage::GameListNewMessage() @@ -4646,6 +4647,7 @@ void GameListNewMessage::Clear() { } } playerids_.Clear(); + spectatorids_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -4752,6 +4754,27 @@ bool GameListNewMessage::MergePartialFromCodedStream( } else { goto handle_uninterpreted; } + if (input->ExpectTag(58)) goto parse_spectatorIds; + break; + } + + // repeated uint32 spectatorIds = 7 [packed = true]; + case 7: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_spectatorIds: + DO_((::google::protobuf::internal::WireFormatLite::ReadPackedPrimitive< + ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( + input, this->mutable_spectatorids()))); + } else if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) + == ::google::protobuf::internal::WireFormatLite:: + WIRETYPE_VARINT) { + DO_((::google::protobuf::internal::WireFormatLite::ReadRepeatedPrimitiveNoInline< + ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( + 1, 58, input, this->mutable_spectatorids()))); + } else { + goto handle_uninterpreted; + } if (input->ExpectAtEnd()) return true; break; } @@ -4810,6 +4833,16 @@ void GameListNewMessage::SerializeWithCachedSizes( 6, this->gameinfo(), output); } + // repeated uint32 spectatorIds = 7 [packed = true]; + if (this->spectatorids_size() > 0) { + ::google::protobuf::internal::WireFormatLite::WriteTag(7, ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED, output); + output->WriteVarint32(_spectatorids_cached_byte_size_); + } + for (int i = 0; i < this->spectatorids_size(); i++) { + ::google::protobuf::internal::WireFormatLite::WriteUInt32NoTag( + this->spectatorids(i), output); + } + } int GameListNewMessage::ByteSize() const { @@ -4866,6 +4899,23 @@ int GameListNewMessage::ByteSize() const { total_size += data_size; } + // repeated uint32 spectatorIds = 7 [packed = true]; + { + int data_size = 0; + for (int i = 0; i < this->spectatorids_size(); i++) { + data_size += ::google::protobuf::internal::WireFormatLite:: + UInt32Size(this->spectatorids(i)); + } + if (data_size > 0) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::Int32Size(data_size); + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _spectatorids_cached_byte_size_ = data_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + total_size += data_size; + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); _cached_size_ = total_size; GOOGLE_SAFE_CONCURRENT_WRITES_END(); @@ -4880,6 +4930,7 @@ void GameListNewMessage::CheckTypeAndMergeFrom( void GameListNewMessage::MergeFrom(const GameListNewMessage& from) { GOOGLE_CHECK_NE(&from, this); playerids_.MergeFrom(from.playerids_); + spectatorids_.MergeFrom(from.spectatorids_); if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { if (from.has_gameid()) { set_gameid(from.gameid()); @@ -4922,6 +4973,7 @@ void GameListNewMessage::Swap(GameListNewMessage* other) { playerids_.Swap(&other->playerids_); std::swap(adminplayerid_, other->adminplayerid_); std::swap(gameinfo_, other->gameinfo_); + spectatorids_.Swap(&other->spectatorids_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } @@ -7394,7 +7446,7 @@ bool JoinExistingGameMessage::MergePartialFromCodedStream( break; } - // optional bool autoLeave = 3; + // optional bool autoLeave = 3 [default = false]; case 3: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { @@ -7410,7 +7462,7 @@ bool JoinExistingGameMessage::MergePartialFromCodedStream( break; } - // optional bool spectateOnly = 4; + // optional bool spectateOnly = 4 [default = false]; case 4: { if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { @@ -7454,12 +7506,12 @@ void JoinExistingGameMessage::SerializeWithCachedSizes( 2, this->password(), output); } - // optional bool autoLeave = 3; + // optional bool autoLeave = 3 [default = false]; if (has_autoleave()) { ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->autoleave(), output); } - // optional bool spectateOnly = 4; + // optional bool spectateOnly = 4 [default = false]; if (has_spectateonly()) { ::google::protobuf::internal::WireFormatLite::WriteBool(4, this->spectateonly(), output); } @@ -7484,12 +7536,12 @@ int JoinExistingGameMessage::ByteSize() const { this->password()); } - // optional bool autoLeave = 3; + // optional bool autoLeave = 3 [default = false]; if (has_autoleave()) { total_size += 1 + 1; } - // optional bool spectateOnly = 4; + // optional bool spectateOnly = 4 [default = false]; if (has_spectateonly()) { total_size += 1 + 1; } diff --git a/src/third_party/protobuf/pokerth.pb.h b/src/third_party/protobuf/pokerth.pb.h index 95a07c44..2e791ee4 100644 --- a/src/third_party/protobuf/pokerth.pb.h +++ b/src/third_party/protobuf/pokerth.pb.h @@ -2443,6 +2443,18 @@ class GameListNewMessage : public ::google::protobuf::MessageLite { inline ::NetGameInfo* release_gameinfo(); inline void set_allocated_gameinfo(::NetGameInfo* gameinfo); + // repeated uint32 spectatorIds = 7 [packed = true]; + inline int spectatorids_size() const; + inline void clear_spectatorids(); + static const int kSpectatorIdsFieldNumber = 7; + inline ::google::protobuf::uint32 spectatorids(int index) const; + inline void set_spectatorids(int index, ::google::protobuf::uint32 value); + inline void add_spectatorids(::google::protobuf::uint32 value); + inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& + spectatorids() const; + inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* + mutable_spectatorids(); + // @@protoc_insertion_point(class_scope:GameListNewMessage) private: inline void set_has_gameid(); @@ -2463,9 +2475,11 @@ class GameListNewMessage : public ::google::protobuf::MessageLite { bool isprivate_; ::google::protobuf::uint32 adminplayerid_; ::NetGameInfo* gameinfo_; + ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > spectatorids_; + mutable int _spectatorids_cached_byte_size_; mutable int _cached_size_; - ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; + ::google::protobuf::uint32 _has_bits_[(7 + 31) / 32]; #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER friend void protobuf_AddDesc_pokerth_2eproto_impl(); @@ -3625,14 +3639,14 @@ class JoinExistingGameMessage : public ::google::protobuf::MessageLite { inline ::std::string* release_password(); inline void set_allocated_password(::std::string* password); - // optional bool autoLeave = 3; + // optional bool autoLeave = 3 [default = false]; inline bool has_autoleave() const; inline void clear_autoleave(); static const int kAutoLeaveFieldNumber = 3; inline bool autoleave() const; inline void set_autoleave(bool value); - // optional bool spectateOnly = 4; + // optional bool spectateOnly = 4 [default = false]; inline bool has_spectateonly() const; inline void clear_spectateonly(); static const int kSpectateOnlyFieldNumber = 4; @@ -13381,6 +13395,31 @@ inline void GameListNewMessage::set_allocated_gameinfo(::NetGameInfo* gameinfo) } } +// repeated uint32 spectatorIds = 7 [packed = true]; +inline int GameListNewMessage::spectatorids_size() const { + return spectatorids_.size(); +} +inline void GameListNewMessage::clear_spectatorids() { + spectatorids_.Clear(); +} +inline ::google::protobuf::uint32 GameListNewMessage::spectatorids(int index) const { + return spectatorids_.Get(index); +} +inline void GameListNewMessage::set_spectatorids(int index, ::google::protobuf::uint32 value) { + spectatorids_.Set(index, value); +} +inline void GameListNewMessage::add_spectatorids(::google::protobuf::uint32 value) { + spectatorids_.Add(value); +} +inline const ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >& +GameListNewMessage::spectatorids() const { + return spectatorids_; +} +inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* +GameListNewMessage::mutable_spectatorids() { + return &spectatorids_; +} + // ------------------------------------------------------------------- // GameListUpdateMessage @@ -14218,7 +14257,7 @@ inline void JoinExistingGameMessage::set_allocated_password(::std::string* passw } } -// optional bool autoLeave = 3; +// optional bool autoLeave = 3 [default = false]; inline bool JoinExistingGameMessage::has_autoleave() const { return (_has_bits_[0] & 0x00000004u) != 0; } @@ -14240,7 +14279,7 @@ inline void JoinExistingGameMessage::set_autoleave(bool value) { autoleave_ = value; } -// optional bool spectateOnly = 4; +// optional bool spectateOnly = 4 [default = false]; inline bool JoinExistingGameMessage::has_spectateonly() const { return (_has_bits_[0] & 0x00000008u) != 0; } diff --git a/tests/src/de/pokerth/protocol/ProtoBuf.java b/tests/src/de/pokerth/protocol/ProtoBuf.java index d3fb8bbb..df31b13d 100644 --- a/tests/src/de/pokerth/protocol/ProtoBuf.java +++ b/tests/src/de/pokerth/protocol/ProtoBuf.java @@ -10182,6 +10182,20 @@ public final class ProtoBuf { * required .NetGameInfo gameInfo = 6; */ de.pokerth.protocol.ProtoBuf.NetGameInfo getGameInfo(); + + // repeated uint32 spectatorIds = 7 [packed = true]; + /** + * repeated uint32 spectatorIds = 7 [packed = true]; + */ + java.util.List getSpectatorIdsList(); + /** + * repeated uint32 spectatorIds = 7 [packed = true]; + */ + int getSpectatorIdsCount(); + /** + * repeated uint32 spectatorIds = 7 [packed = true]; + */ + int getSpectatorIds(int index); } /** * Protobuf type {@code GameListNewMessage} @@ -10284,6 +10298,27 @@ public final class ProtoBuf { bitField0_ |= 0x00000010; break; } + case 56: { + if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) { + spectatorIds_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000040; + } + spectatorIds_.add(input.readUInt32()); + break; + } + case 58: { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) { + spectatorIds_ = new java.util.ArrayList(); + mutable_bitField0_ |= 0x00000040; + } + while (input.getBytesUntilLimit() > 0) { + spectatorIds_.add(input.readUInt32()); + } + input.popLimit(limit); + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -10295,6 +10330,9 @@ public final class ProtoBuf { if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) { playerIds_ = java.util.Collections.unmodifiableList(playerIds_); } + if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) { + spectatorIds_ = java.util.Collections.unmodifiableList(spectatorIds_); + } makeExtensionsImmutable(); } } @@ -10418,6 +10456,30 @@ public final class ProtoBuf { return gameInfo_; } + // repeated uint32 spectatorIds = 7 [packed = true]; + public static final int SPECTATORIDS_FIELD_NUMBER = 7; + private java.util.List spectatorIds_; + /** + * repeated uint32 spectatorIds = 7 [packed = true]; + */ + public java.util.List + getSpectatorIdsList() { + return spectatorIds_; + } + /** + * repeated uint32 spectatorIds = 7 [packed = true]; + */ + public int getSpectatorIdsCount() { + return spectatorIds_.size(); + } + /** + * repeated uint32 spectatorIds = 7 [packed = true]; + */ + public int getSpectatorIds(int index) { + return spectatorIds_.get(index); + } + private int spectatorIdsMemoizedSerializedSize = -1; + private void initFields() { gameId_ = 0; gameMode_ = de.pokerth.protocol.ProtoBuf.NetGameMode.netGameCreated; @@ -10425,6 +10487,7 @@ public final class ProtoBuf { playerIds_ = java.util.Collections.emptyList(); adminPlayerId_ = 0; gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); + spectatorIds_ = java.util.Collections.emptyList(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -10484,6 +10547,13 @@ public final class ProtoBuf { if (((bitField0_ & 0x00000010) == 0x00000010)) { output.writeMessage(6, gameInfo_); } + if (getSpectatorIdsList().size() > 0) { + output.writeRawVarint32(58); + output.writeRawVarint32(spectatorIdsMemoizedSerializedSize); + } + for (int i = 0; i < spectatorIds_.size(); i++) { + output.writeUInt32NoTag(spectatorIds_.get(i)); + } } private int memoizedSerializedSize = -1; @@ -10526,6 +10596,20 @@ public final class ProtoBuf { size += com.google.protobuf.CodedOutputStream .computeMessageSize(6, gameInfo_); } + { + int dataSize = 0; + for (int i = 0; i < spectatorIds_.size(); i++) { + dataSize += com.google.protobuf.CodedOutputStream + .computeUInt32SizeNoTag(spectatorIds_.get(i)); + } + size += dataSize; + if (!getSpectatorIdsList().isEmpty()) { + size += 1; + size += com.google.protobuf.CodedOutputStream + .computeInt32SizeNoTag(dataSize); + } + spectatorIdsMemoizedSerializedSize = dataSize; + } memoizedSerializedSize = size; return size; } @@ -10629,6 +10713,8 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000010); gameInfo_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.getDefaultInstance(); bitField0_ = (bitField0_ & ~0x00000020); + spectatorIds_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000040); return this; } @@ -10677,6 +10763,11 @@ public final class ProtoBuf { to_bitField0_ |= 0x00000010; } result.gameInfo_ = gameInfo_; + if (((bitField0_ & 0x00000040) == 0x00000040)) { + spectatorIds_ = java.util.Collections.unmodifiableList(spectatorIds_); + bitField0_ = (bitField0_ & ~0x00000040); + } + result.spectatorIds_ = spectatorIds_; result.bitField0_ = to_bitField0_; return result; } @@ -10708,6 +10799,16 @@ public final class ProtoBuf { if (other.hasGameInfo()) { mergeGameInfo(other.getGameInfo()); } + if (!other.spectatorIds_.isEmpty()) { + if (spectatorIds_.isEmpty()) { + spectatorIds_ = other.spectatorIds_; + bitField0_ = (bitField0_ & ~0x00000040); + } else { + ensureSpectatorIdsIsMutable(); + spectatorIds_.addAll(other.spectatorIds_); + } + + } return this; } @@ -11020,6 +11121,72 @@ public final class ProtoBuf { return this; } + // repeated uint32 spectatorIds = 7 [packed = true]; + private java.util.List spectatorIds_ = java.util.Collections.emptyList(); + private void ensureSpectatorIdsIsMutable() { + if (!((bitField0_ & 0x00000040) == 0x00000040)) { + spectatorIds_ = new java.util.ArrayList(spectatorIds_); + bitField0_ |= 0x00000040; + } + } + /** + * repeated uint32 spectatorIds = 7 [packed = true]; + */ + public java.util.List + getSpectatorIdsList() { + return java.util.Collections.unmodifiableList(spectatorIds_); + } + /** + * repeated uint32 spectatorIds = 7 [packed = true]; + */ + public int getSpectatorIdsCount() { + return spectatorIds_.size(); + } + /** + * repeated uint32 spectatorIds = 7 [packed = true]; + */ + public int getSpectatorIds(int index) { + return spectatorIds_.get(index); + } + /** + * repeated uint32 spectatorIds = 7 [packed = true]; + */ + public Builder setSpectatorIds( + int index, int value) { + ensureSpectatorIdsIsMutable(); + spectatorIds_.set(index, value); + + return this; + } + /** + * repeated uint32 spectatorIds = 7 [packed = true]; + */ + public Builder addSpectatorIds(int value) { + ensureSpectatorIdsIsMutable(); + spectatorIds_.add(value); + + return this; + } + /** + * repeated uint32 spectatorIds = 7 [packed = true]; + */ + public Builder addAllSpectatorIds( + java.lang.Iterable values) { + ensureSpectatorIdsIsMutable(); + super.addAll(values, spectatorIds_); + + return this; + } + /** + * repeated uint32 spectatorIds = 7 [packed = true]; + */ + public Builder clearSpectatorIds() { + spectatorIds_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000040); + + return this; + } + // @@protoc_insertion_point(builder_scope:GameListNewMessage) } @@ -16272,23 +16439,23 @@ public final class ProtoBuf { com.google.protobuf.ByteString getPasswordBytes(); - // optional bool autoLeave = 3; + // optional bool autoLeave = 3 [default = false]; /** - * optional bool autoLeave = 3; + * optional bool autoLeave = 3 [default = false]; */ boolean hasAutoLeave(); /** - * optional bool autoLeave = 3; + * optional bool autoLeave = 3 [default = false]; */ boolean getAutoLeave(); - // optional bool spectateOnly = 4; + // optional bool spectateOnly = 4 [default = false]; /** - * optional bool spectateOnly = 4; + * optional bool spectateOnly = 4 [default = false]; */ boolean hasSpectateOnly(); /** - * optional bool spectateOnly = 4; + * optional bool spectateOnly = 4 [default = false]; */ boolean getSpectateOnly(); } @@ -16441,33 +16608,33 @@ public final class ProtoBuf { } } - // optional bool autoLeave = 3; + // optional bool autoLeave = 3 [default = false]; public static final int AUTOLEAVE_FIELD_NUMBER = 3; private boolean autoLeave_; /** - * optional bool autoLeave = 3; + * optional bool autoLeave = 3 [default = false]; */ public boolean hasAutoLeave() { return ((bitField0_ & 0x00000004) == 0x00000004); } /** - * optional bool autoLeave = 3; + * optional bool autoLeave = 3 [default = false]; */ public boolean getAutoLeave() { return autoLeave_; } - // optional bool spectateOnly = 4; + // optional bool spectateOnly = 4 [default = false]; public static final int SPECTATEONLY_FIELD_NUMBER = 4; private boolean spectateOnly_; /** - * optional bool spectateOnly = 4; + * optional bool spectateOnly = 4 [default = false]; */ public boolean hasSpectateOnly() { return ((bitField0_ & 0x00000008) == 0x00000008); } /** - * optional bool spectateOnly = 4; + * optional bool spectateOnly = 4 [default = false]; */ public boolean getSpectateOnly() { return spectateOnly_; @@ -16826,22 +16993,22 @@ public final class ProtoBuf { return this; } - // optional bool autoLeave = 3; + // optional bool autoLeave = 3 [default = false]; private boolean autoLeave_ ; /** - * optional bool autoLeave = 3; + * optional bool autoLeave = 3 [default = false]; */ public boolean hasAutoLeave() { return ((bitField0_ & 0x00000004) == 0x00000004); } /** - * optional bool autoLeave = 3; + * optional bool autoLeave = 3 [default = false]; */ public boolean getAutoLeave() { return autoLeave_; } /** - * optional bool autoLeave = 3; + * optional bool autoLeave = 3 [default = false]; */ public Builder setAutoLeave(boolean value) { bitField0_ |= 0x00000004; @@ -16850,7 +17017,7 @@ public final class ProtoBuf { return this; } /** - * optional bool autoLeave = 3; + * optional bool autoLeave = 3 [default = false]; */ public Builder clearAutoLeave() { bitField0_ = (bitField0_ & ~0x00000004); @@ -16859,22 +17026,22 @@ public final class ProtoBuf { return this; } - // optional bool spectateOnly = 4; + // optional bool spectateOnly = 4 [default = false]; private boolean spectateOnly_ ; /** - * optional bool spectateOnly = 4; + * optional bool spectateOnly = 4 [default = false]; */ public boolean hasSpectateOnly() { return ((bitField0_ & 0x00000008) == 0x00000008); } /** - * optional bool spectateOnly = 4; + * optional bool spectateOnly = 4 [default = false]; */ public boolean getSpectateOnly() { return spectateOnly_; } /** - * optional bool spectateOnly = 4; + * optional bool spectateOnly = 4 [default = false]; */ public Builder setSpectateOnly(boolean value) { bitField0_ |= 0x00000008; @@ -16883,7 +17050,7 @@ public final class ProtoBuf { return this; } /** - * optional bool spectateOnly = 4; + * optional bool spectateOnly = 4 [default = false]; */ public Builder clearSpectateOnly() { bitField0_ = (bitField0_ & ~0x00000008); diff --git a/tests/src/de/pokerth/test/AllTests.java b/tests/src/de/pokerth/test/AllTests.java index 9bcdfee7..a4bdda2c 100644 --- a/tests/src/de/pokerth/test/AllTests.java +++ b/tests/src/de/pokerth/test/AllTests.java @@ -40,7 +40,8 @@ import org.junit.runners.Suite; RunRankingGameTest.class, RejoinGameTest.class, RejoinMultiGameTest.class, - SeatStateTest.class + SeatStateTest.class, + SpectatorJoinTest.class }) public class AllTests { public static void main(String[] args) diff --git a/tests/src/de/pokerth/test/SpectatorJoinTest.java b/tests/src/de/pokerth/test/SpectatorJoinTest.java new file mode 100644 index 00000000..6013c5e3 --- /dev/null +++ b/tests/src/de/pokerth/test/SpectatorJoinTest.java @@ -0,0 +1,262 @@ +/* PokerTH automated tests. + Copyright (C) 2013 Lothar May + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package de.pokerth.test; + +import static org.junit.Assert.*; + +import java.net.Socket; +import java.util.ArrayList; +import java.util.Collection; + +import org.junit.Test; + +import de.pokerth.protocol.ProtoBuf.NetGameInfo; +import de.pokerth.protocol.ProtoBuf.PokerTHMessage; +import de.pokerth.protocol.ProtoBuf.StartEventAckMessage; +import de.pokerth.protocol.ProtoBuf.NetGameInfo.EndRaiseMode; +import de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType; +import de.pokerth.protocol.ProtoBuf.PokerTHMessage.PokerTHMessageType; + +public class SpectatorJoinTest extends TestBase { + + @Test + public void testSpectatorJoinGameBeforeStart() throws Exception { + Guid firstPlayerSession = new Guid(); + int firstPlayerId = userInit(sock, AuthUser, AuthPassword, null, firstPlayerSession); + + // Waiting for player list update. + PokerTHMessage msg; + msg = receiveMessage(); + if (!msg.hasPlayerListMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + + Collection l = new ArrayList(); + String gameName = AuthUser + " rejoin game"; + NetGameInfo gameInfo = createGameInfo(NetGameType.normalGame, 5, 7, 5, EndRaiseMode.doubleBlinds, 0, 50, gameName, l, 10, 0, 11, 10000); + sendMessage(createGameRequestMsg( + gameInfo, + "", + false)); + + // Game list update (new game) + msg = receiveMessage(); + if (!msg.hasGameListNewMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + + // Join game ack. + msg = receiveMessage(); + if (!msg.hasJoinGameAckMessage()) { + failOnErrorMessage(msg); + fail("Could not create game!"); + } + int gameId = msg.getJoinGameAckMessage().getGameId(); + + // Game list update (player joined). + msg = receiveMessage(); + if (!msg.hasGameListPlayerJoinedMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + + // Let a spectator join. + Socket spectatorSock = new Socket("localhost", 7234); + int spectatorId = userInit(spectatorSock, "test20", "test20"); + + msg = receiveMessage(spectatorSock); + if (!msg.hasPlayerListMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + msg = receiveMessage(spectatorSock); + if (!msg.hasGameListNewMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + msg = receiveMessage(spectatorSock); + if (!msg.hasPlayerListMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + // Player List should also be updated for first player. + msg = receiveMessage(); + if (!msg.hasPlayerListMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + + sendMessage(joinGameRequestMsg(gameId, "", false, true), spectatorSock); + msg = receiveMessage(spectatorSock); + if (!msg.hasJoinGameAckMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + assertTrue(msg.getJoinGameAckMessage().getSpectateOnly()); + + msg = receiveMessage(spectatorSock); + if (!msg.hasGamePlayerJoinedMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + assertEquals(firstPlayerId, msg.getGamePlayerJoinedMessage().getPlayerId()); + // TODO Spectator joined message is missing here! + + msg = receiveMessage(spectatorSock); + if (!msg.hasGameListSpectatorJoinedMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + assertEquals(gameId, msg.getGameListSpectatorJoinedMessage().getGameId()); + assertEquals(spectatorId, msg.getGameListSpectatorJoinedMessage().getPlayerId()); + + // Spectator should be visible for first player. + msg = receiveMessage(); + if (!msg.hasGameSpectatorJoinedMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + msg = receiveMessage(); + if (!msg.hasGameListSpectatorJoinedMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + + // Let 9 additional clients join. + Socket s[] = new Socket[9]; + int playerId[] = new int[9]; + for (int i = 0; i < 9; i++) { + s[i] = new Socket("localhost", 7234); + String username = "test" + (i+1); + String password = username; + playerId[i] = userInit(s[i], username, password); + + // Waiting for player list update. + do { + msg = receiveMessage(s[i]); + } while (msg.hasPlayerListMessage()); + + if (!msg.hasGameListNewMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + assertEquals(1, msg.getGameListNewMessage().getSpectatorIdsCount()); + assertEquals(spectatorId, msg.getGameListNewMessage().getSpectatorIds(0)); + do { + msg = receiveMessage(s[i]); + } while (msg.hasGameListPlayerJoinedMessage() || msg.hasGamePlayerJoinedMessage()); + sendMessage(joinGameRequestMsg(gameId, "", false), s[i]); + do { + msg = receiveMessage(s[i]); + failOnErrorMessage(msg); + } while (!msg.hasJoinGameAckMessage() && !msg.hasJoinGameFailedMessage()); + if (!msg.hasJoinGameAckMessage()) { + fail("User " + username + " could not join ranking game."); + } + + // The player should have joined the game. + msg = receiveMessage(); + if (!msg.hasPlayerListMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + msg = receiveMessage(); + if (!msg.hasGamePlayerJoinedMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + msg = receiveMessage(); + if (!msg.hasGameListPlayerJoinedMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + // The spectator should also receive the updates. + msg = receiveMessage(spectatorSock); + if (!msg.hasPlayerListMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + msg = receiveMessage(spectatorSock); + if (!msg.hasGamePlayerJoinedMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + msg = receiveMessage(spectatorSock); + if (!msg.hasGameListPlayerJoinedMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + } + + // Server should automatically send start event. + msg = receiveMessage(); + if (!msg.hasStartEventMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + for (int i = 0; i < 9; i++) { + do { + msg = receiveMessage(s[i]); + failOnErrorMessage(msg); + } while (!msg.hasStartEventMessage()); + } + // Acknowledge start event. + StartEventAckMessage startAck = StartEventAckMessage.newBuilder() + .setGameId(gameId) + .build(); + msg = PokerTHMessage.newBuilder() + .setMessageType(PokerTHMessageType.Type_StartEventAckMessage) + .setStartEventAckMessage(startAck) + .build(); + sendMessage(msg); + for (int i = 0; i < 9; i++) { + sendMessage(msg, s[i]); + } + + // Game list update (game now running). + msg = receiveMessage(spectatorSock); + if (!msg.hasGameListUpdateMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + + msg = receiveMessage(spectatorSock); + if (!msg.hasGameStartInitialMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + + // Spectator should receive a hand start message without cards. + msg = receiveMessage(spectatorSock); + if (!msg.hasHandStartMessage()) { + failOnErrorMessage(msg); + fail("Invalid message: " + msg.getMessageType()); + } + assertFalse(msg.getHandStartMessage().hasEncryptedCards()); + assertFalse(msg.getHandStartMessage().hasPlainCards()); + assertEquals(gameId, msg.getHandStartMessage().getGameId()); + + for (int i = 0; i < 9; i++) { + s[i].close(); + } + spectatorSock.close(); + } + +} diff --git a/tests/src/de/pokerth/test/TestBase.java b/tests/src/de/pokerth/test/TestBase.java index 1b8019fe..4e80c327 100644 --- a/tests/src/de/pokerth/test/TestBase.java +++ b/tests/src/de/pokerth/test/TestBase.java @@ -289,9 +289,14 @@ public abstract class TestBase { } public PokerTHMessage joinGameRequestMsg(int gameId, String password, boolean autoLeave) { + return joinGameRequestMsg(gameId, password, autoLeave, false); + } + + public PokerTHMessage joinGameRequestMsg(int gameId, String password, boolean autoLeave, boolean spectateOnly) { JoinExistingGameMessage.Builder joinBuilder = JoinExistingGameMessage.newBuilder(); joinBuilder.setGameId(gameId); joinBuilder.setAutoLeave(autoLeave); + joinBuilder.setSpectateOnly(spectateOnly); if (!password.isEmpty()) { joinBuilder.setPassword(password); } From 0be7632875fb3018bad7cd726b2c72d55f0b4262 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 29 Jun 2013 23:44:00 +0200 Subject: [PATCH 008/128] Fixing session counter with regard to spectators. --- src/net/common/servergamestate.cpp | 2 +- src/net/common/serverlobbythread.cpp | 2 +- src/net/common/sessionmanager.cpp | 4 ++-- src/net/sessionmanager.h | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index c1bc64c8..976e8fe6 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -779,7 +779,7 @@ ServerGameStateStartGame::InternalProcessPacket(boost::shared_ptr se { if (packet->GetMsg()->messagetype() == PokerTHMessage::Type_StartEventAckMessage) { session->SetReadyFlag(); - if (server->GetSessionManager().CountReadySessions() == server->GetSessionManager().GetRawSessionCount()) { + if (server->GetSessionManager().CountReadySessions() == server->GetSessionManager().GetSessionCountWithState(SessionData::Game)) { // Everyone is ready. server->GetSessionManager().ResetAllReadyFlags(); DoStart(server); diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index b96d6f55..9df8d104 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -2125,7 +2125,7 @@ ServerLobbyThread::UpdateStatisticsNumberOfPlayers() { ServerStats stats; // Get all logged-in sessions and all sessions within a game. - unsigned curNumberOfPlayersOnServer = m_sessionManager.GetEstablishedSessionCount() + m_gameSessionManager.GetRawSessionCount(); + unsigned curNumberOfPlayersOnServer = m_sessionManager.GetSessionCountWithState(SessionData::Established) + m_gameSessionManager.GetRawSessionCount(); { boost::mutex::scoped_lock lock(m_statMutex); if (curNumberOfPlayersOnServer != m_statData.numberOfPlayersOnServer) { diff --git a/src/net/common/sessionmanager.cpp b/src/net/common/sessionmanager.cpp index 628057ac..c77ee161 100644 --- a/src/net/common/sessionmanager.cpp +++ b/src/net/common/sessionmanager.cpp @@ -302,7 +302,7 @@ SessionManager::GetRawSessionCount() } unsigned -SessionManager::GetEstablishedSessionCount() +SessionManager::GetSessionCountWithState(int state) { unsigned counter = 0; boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex); @@ -311,7 +311,7 @@ SessionManager::GetEstablishedSessionCount() SessionMap::const_iterator end = m_sessionMap.end(); while (i != end) { - if ((*i).second->GetState() >= SessionData::Established) + if ((i->second->GetState() & state) != 0) ++counter; ++i; } diff --git a/src/net/sessionmanager.h b/src/net/sessionmanager.h index 03247215..81ff5916 100644 --- a/src/net/sessionmanager.h +++ b/src/net/sessionmanager.h @@ -73,7 +73,7 @@ public: void Clear(); unsigned GetRawSessionCount(); - unsigned GetEstablishedSessionCount(); + unsigned GetSessionCountWithState(int state); void SendToAllSessions(SenderHelper &sender, boost::shared_ptr packet, int state); void SendLobbyMsgToAllSessions(SenderHelper &sender, boost::shared_ptr packet, int state); From 6830068d9dea9ee369f141cbd35f625f67f6bd1e Mon Sep 17 00:00:00 2001 From: doitux Date: Mon, 1 Jul 2013 10:04:51 +0200 Subject: [PATCH 009/128] implement: Avatars should not be displayed for people which are on the ignore list (#187) --- src/config/configfile.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/config/configfile.cpp b/src/config/configfile.cpp index b0bdb447..a3f72f6a 100644 --- a/src/config/configfile.cpp +++ b/src/config/configfile.cpp @@ -64,7 +64,7 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly) myConfigState = OK; // !!!! Revisionsnummer der Configdefaults !!!!! - configRev = 98; + configRev = 99; //standard defaults logOnOffDefault = "1"; @@ -161,6 +161,7 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly) configList.push_back(ConfigInfo("DontTranslateInternationalPokerStringsFromStyle", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("DisableSplashScreenOnStartup", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("AccidentallyCallBlocker", CONFIG_TYPE_INT, "1")); + configList.push_back(ConfigInfo("DontHideAvatarsOfIgnored", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("AntiPeekMode", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("AlternateFKeysUserActionMode", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("EnableBetInputFocusSwitch", CONFIG_TYPE_INT, "0")); From f211e31acf3424cd524d7a5d799231c63ec0d063 Mon Sep 17 00:00:00 2001 From: doitux Date: Mon, 1 Jul 2013 10:05:37 +0200 Subject: [PATCH 010/128] commit #187 --- src/gui/qt/gametable/myavatarlabel.cpp | 18 +- .../qt/gui_800x480/settingsdialog_800x480.ui | 629 +++++++++++++----- src/gui/qt/settingsdialog.ui | 238 ++++++- .../qt/settingsdialog/settingsdialogimpl.cpp | 3 + 4 files changed, 684 insertions(+), 204 deletions(-) diff --git a/src/gui/qt/gametable/myavatarlabel.cpp b/src/gui/qt/gametable/myavatarlabel.cpp index 264449bf..7af36483 100644 --- a/src/gui/qt/gametable/myavatarlabel.cpp +++ b/src/gui/qt/gametable/myavatarlabel.cpp @@ -394,7 +394,23 @@ void MyAvatarLabel::paintEvent(QPaintEvent*) else painter.setOpacity(1.0); - painter.drawPixmap(0,0,myPixmap); + //hide avatar if player is on ignore list + boost::shared_ptr currentGame = myW->myStartWindow->getSession()->getCurrentGame(); + PlayerListConstIterator it_c; + int seatPlace; + PlayerList seatsList = currentGame->getSeatsList(); + for (seatPlace=0,it_c=seatsList->begin(); it_c!=seatsList->end(); ++it_c, seatPlace++) { + if(seatPlace == myId) { + if(!playerIsOnIgnoreList(QString::fromUtf8((*it_c)->getMyName().c_str()))) { + painter.drawPixmap(0,0,myPixmap); + return; + } + else if(myW->getMyConfig()->readConfigInt("DontHideAvatarsOfIgnored")) { + painter.drawPixmap(0,0,myPixmap); + return; + } + } + } } bool MyAvatarLabel::playerIsOnIgnoreList(QString playerName) diff --git a/src/gui/qt/gui_800x480/settingsdialog_800x480.ui b/src/gui/qt/gui_800x480/settingsdialog_800x480.ui index 56657537..d992d688 100644 --- a/src/gui/qt/gui_800x480/settingsdialog_800x480.ui +++ b/src/gui/qt/gui_800x480/settingsdialog_800x480.ui @@ -152,172 +152,204 @@ 0 - - + + + 4 + + + 4 + + + 4 + + 4 0 - - - 6 + + + 0 - - - - - - - Language: - - - comboBox_switchLanguage - - - - - - - QObject {font: 30px} - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Show fade-out animation for non-winning cards - - - - - - - Show buttons for small blind and big blind - - - - - - - Don't translate poker strings like check, call, raise from game table style - - - - - - - Show cards chance monitor - - - - - - - Show own cards only on mouse click - - - - - - - Disable splashscreen on startup - - - - - - - Show flip-card animation - - - - - - - - - Network / Internet Game - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - 20 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Switch keyboard focus to bet-input-field if it's your turn - - - - - - - Show country flag in the corner of avatar - - - - - - - Activate the "accidentally call after big raise" blocker - - - - + + + Common + + + + + + 6 + + + + + + + + Language: + + + comboBox_switchLanguage + + + + + + + QObject {font: 30px} + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Show fade-out animation for non-winning cards + + + + + + + Show buttons for small blind and big blind + + + + + + + Don't translate poker strings like check, call, raise from game table style + + + + + + + Show cards chance monitor + + + + + + + Show own cards only on mouse click + + + + + + + Disable splashscreen on startup + + + + + + + Show flip-card animation + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + Network / Internet Game + + + + + + Show country flag in the corner of avatar + + + + + + + Switch keyboard focus to bet-input-field if it's your turn + + + + + + + Activate the "accidentally call after big raise" blocker + + + + + + + Do not hide avatars of players which are on the ignore list + + + + + + + Qt::Vertical + + + + 20 + 178 + + + + + + - - - - Qt::Vertical - - - - 20 - 40 - - - - - + + 4 + + + 4 + + + 4 + + 4 @@ -329,7 +361,7 @@ - 1 + 0 @@ -704,7 +736,16 @@ p, li { white-space: pre-wrap; } 0 - + + 0 + + + 0 + + + 0 + + 0 @@ -712,7 +753,16 @@ p, li { white-space: pre-wrap; } 2 - + + 0 + + + 0 + + + 0 + + 0 @@ -809,7 +859,16 @@ p, li { white-space: pre-wrap; } - + + 4 + + + 4 + + + 4 + + 4 @@ -832,7 +891,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -1742,7 +1810,16 @@ p, li { white-space: pre-wrap; } - + + 4 + + + 4 + + + 4 + + 4 @@ -1751,7 +1828,7 @@ p, li { white-space: pre-wrap; } - 0 + 1 @@ -2140,7 +2217,16 @@ p, li { white-space: pre-wrap; } true - + + 4 + + + 4 + + + 4 + + 4 @@ -2221,7 +2307,16 @@ p, li { white-space: pre-wrap; } Computer Engine - + + 0 + + + 0 + + + 0 + + 0 @@ -2231,7 +2326,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -2298,7 +2402,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -2367,7 +2480,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -2434,7 +2556,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -2503,7 +2634,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -2570,7 +2710,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -2639,7 +2788,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -2706,7 +2864,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -2775,7 +2942,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -2814,7 +2990,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -2915,7 +3100,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -2926,7 +3120,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -3051,7 +3254,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -3062,7 +3274,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -3187,7 +3408,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -3198,7 +3428,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -3323,7 +3562,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -3334,7 +3582,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -3479,7 +3736,16 @@ p, li { white-space: pre-wrap; } - + + 4 + + + 4 + + + 4 + + 4 @@ -3863,7 +4129,6 @@ p, li { white-space: pre-wrap; } checkBox_antiPeekMode checkBox_disableSplashscreen checkBox_dontTranslatePokerStrings - checkBox_enableBetInputFocusSwitch tabWidget treeWidget_gameTableStyles pushButton_addGameTableStyle diff --git a/src/gui/qt/settingsdialog.ui b/src/gui/qt/settingsdialog.ui index 138934c3..f36a74a6 100644 --- a/src/gui/qt/settingsdialog.ui +++ b/src/gui/qt/settingsdialog.ui @@ -286,6 +286,13 @@ + + + + Do not hide avatars of players which are on the ignore list + + + @@ -614,7 +621,16 @@ p, li { white-space: pre-wrap; } 0 - + + 0 + + + 0 + + + 0 + + 0 @@ -622,7 +638,16 @@ p, li { white-space: pre-wrap; } 2 - + + 0 + + + 0 + + + 0 + + 0 @@ -738,7 +763,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -2158,7 +2192,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -2222,7 +2265,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -2291,7 +2343,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -2355,7 +2416,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -2424,7 +2494,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -2488,7 +2567,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -2557,7 +2645,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -2621,7 +2718,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -2690,7 +2796,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -2729,7 +2844,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -2827,7 +2951,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -2838,7 +2971,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -2960,7 +3102,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -2971,7 +3122,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -3093,7 +3253,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -3104,7 +3273,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -3226,7 +3404,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -3237,7 +3424,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 diff --git a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp index d014cc50..f4dfdd20 100644 --- a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp +++ b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp @@ -291,6 +291,8 @@ void settingsDialogImpl::prepareDialog() checkBox_dontTranslatePokerStrings->setChecked(myConfig->readConfigInt("DontTranslateInternationalPokerStringsFromStyle")); checkBox_disableSplashscreen->setChecked(myConfig->readConfigInt("DisableSplashScreenOnStartup")); checkBox_enableAccidentallyCallBlocker->setChecked(myConfig->readConfigInt("AccidentallyCallBlocker")); + checkBox_dontHideAvatarsOfIgnored->setChecked(myConfig->readConfigInt("DontHideAvatarsOfIgnored")); + //S t y l e //TABLE @@ -737,6 +739,7 @@ void settingsDialogImpl::isAccepted() myConfig->writeConfigInt("DisableSplashScreenOnStartup", checkBox_disableSplashscreen->isChecked()); myConfig->writeConfigInt("EnableBetInputFocusSwitch", checkBox_enableBetInputFocusSwitch->isChecked()); myConfig->writeConfigInt("AccidentallyCallBlocker", checkBox_enableAccidentallyCallBlocker->isChecked()); + myConfig->writeConfigInt("DontHideAvatarsOfIgnored", checkBox_dontHideAvatarsOfIgnored->isChecked()); myConfig->writeConfigInt("FlipsideTux", radioButton_flipsideTux->isChecked()); myConfig->writeConfigInt("FlipsideOwn", radioButton_flipsideOwn->isChecked()); From 8264a61692cd5dca174a4236b0f9ce37d3549dac Mon Sep 17 00:00:00 2001 From: doitux Date: Mon, 1 Jul 2013 10:29:07 +0200 Subject: [PATCH 011/128] implement: Option to disable emoticons in the chat (#172) --- src/config/configfile.cpp | 3 +- src/gui/qt/chattools/chattools.cpp | 4 +- .../qt/gui_800x480/settingsdialog_800x480.ui | 9 +- src/gui/qt/settingsdialog.ui | 351 ++++++++++-------- .../qt/settingsdialog/settingsdialogimpl.cpp | 3 + 5 files changed, 207 insertions(+), 163 deletions(-) diff --git a/src/config/configfile.cpp b/src/config/configfile.cpp index a3f72f6a..9c0b18e9 100644 --- a/src/config/configfile.cpp +++ b/src/config/configfile.cpp @@ -64,7 +64,7 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly) myConfigState = OK; // !!!! Revisionsnummer der Configdefaults !!!!! - configRev = 99; + configRev = 100; //standard defaults logOnOffDefault = "1"; @@ -162,6 +162,7 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly) configList.push_back(ConfigInfo("DisableSplashScreenOnStartup", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("AccidentallyCallBlocker", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("DontHideAvatarsOfIgnored", CONFIG_TYPE_INT, "0")); + configList.push_back(ConfigInfo("DisableChatEmoticons", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("AntiPeekMode", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("AlternateFKeysUserActionMode", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("EnableBetInputFocusSwitch", CONFIG_TYPE_INT, "0")); diff --git a/src/gui/qt/chattools/chattools.cpp b/src/gui/qt/chattools/chattools.cpp index 0d61c736..7781ab6a 100644 --- a/src/gui/qt/chattools/chattools.cpp +++ b/src/gui/qt/chattools/chattools.cpp @@ -167,7 +167,9 @@ void ChatTools::receiveMessage(QString playerName, QString message, bool pm) if(!nickFoundOnIgnoreList) { - tempMsg = checkForEmotes(tempMsg); + if(!myConfig->readConfigInt("DisableChatEmoticons")) { + tempMsg = checkForEmotes(tempMsg); + } if(message.indexOf(QString("/me "))==0) { myTextBrowser->append(tempMsg.replace("/me ","*"+playerName+" ")+""); diff --git a/src/gui/qt/gui_800x480/settingsdialog_800x480.ui b/src/gui/qt/gui_800x480/settingsdialog_800x480.ui index d992d688..80b45ad0 100644 --- a/src/gui/qt/gui_800x480/settingsdialog_800x480.ui +++ b/src/gui/qt/gui_800x480/settingsdialog_800x480.ui @@ -320,6 +320,13 @@ + + + Disable emoticons in the chat + + + + Qt::Vertical @@ -327,7 +334,7 @@ 20 - 178 + 146 diff --git a/src/gui/qt/settingsdialog.ui b/src/gui/qt/settingsdialog.ui index f36a74a6..a6626c07 100644 --- a/src/gui/qt/settingsdialog.ui +++ b/src/gui/qt/settingsdialog.ui @@ -156,159 +156,198 @@ - - - - - Language: - - - comboBox_switchLanguage - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Show right toolbox - - - - - - - Show fade-out animation for non-winning cards - - - - - - - Reverse order of F-Keys (F1 - F4) - - - - - - - Show buttons for small blind and big blind - - - - - - - Don't translate poker strings like check, call, raise from game table style - - - - - - - Show cards chance monitor - - - - - - - Show own cards only on mouse click - - - - - - - Show flip-card animation - - - - - - - Show left toolbox - - - - - - - Disable splashscreen on startup - - - - - - - - - Network / Internet Game + + + 0 - - - - - Switch keyboard focus to bet-input-field if it's your turn - - - - - - - Show country flag in the corner of avatar - - - - - - - Activate the "accidentally call after big raise" blocker - - - - - - - Do not hide avatars of players which are on the ignore list - - - - + + + Common + + + + + + + + Language: + + + comboBox_switchLanguage + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Show right toolbox + + + + + + + Show fade-out animation for non-winning cards + + + + + + + Reverse order of F-Keys (F1 - F4) + + + + + + + Show buttons for small blind and big blind + + + + + + + Don't translate poker strings like check, call, raise from game table style + + + + + + + Show cards chance monitor + + + + + + + Show own cards only on mouse click + + + + + + + Show flip-card animation + + + + + + + Show left toolbox + + + + + + + Disable splashscreen on startup + + + + + + + + + Qt::Vertical + + + + 20 + 85 + + + + + + + + + Network / Internet Game + + + + + + Qt::Vertical + + + + 20 + 221 + + + + + + + + Show country flag in the corner of avatar + + + + + + + Show lobby chat + + + + + + + Switch keyboard focus to bet-input-field if it's your turn + + + + + + + Activate the "accidentally call after big raise" blocker + + + + + + + Do not hide avatars of players which are on the ignore list + + + + + + + Disable emoticons in the chat + + + + + - - - - Qt::Vertical - - - - 400 - 111 - - - - @@ -1846,14 +1885,7 @@ p, li { white-space: pre-wrap; } - - - - Show lobby chat - - - - + Qt::Vertical @@ -1866,7 +1898,7 @@ p, li { white-space: pre-wrap; } - + Automatically leave the table after the game finished @@ -3984,7 +4016,6 @@ p, li { white-space: pre-wrap; } comboBox_internetGameType checkBox_UseInternetGamePassword lineEdit_InternetGamePassword - checkBox_UseLobbyChat treeWidget_internetGameIgnoredPlayers pushButton_internetGameRemoveIgnoredPlayer pushButton_HumanPlayerAvatar diff --git a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp index f4dfdd20..6bedb319 100644 --- a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp +++ b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp @@ -292,6 +292,7 @@ void settingsDialogImpl::prepareDialog() checkBox_disableSplashscreen->setChecked(myConfig->readConfigInt("DisableSplashScreenOnStartup")); checkBox_enableAccidentallyCallBlocker->setChecked(myConfig->readConfigInt("AccidentallyCallBlocker")); checkBox_dontHideAvatarsOfIgnored->setChecked(myConfig->readConfigInt("DontHideAvatarsOfIgnored")); + checkBox_disableChatEmoticons->setChecked(myConfig->readConfigInt("DisableChatEmoticons")); //S t y l e @@ -740,6 +741,8 @@ void settingsDialogImpl::isAccepted() myConfig->writeConfigInt("EnableBetInputFocusSwitch", checkBox_enableBetInputFocusSwitch->isChecked()); myConfig->writeConfigInt("AccidentallyCallBlocker", checkBox_enableAccidentallyCallBlocker->isChecked()); myConfig->writeConfigInt("DontHideAvatarsOfIgnored", checkBox_dontHideAvatarsOfIgnored->isChecked()); + myConfig->writeConfigInt("DisableChatEmoticons", checkBox_disableChatEmoticons->isChecked()); + myConfig->writeConfigInt("FlipsideTux", radioButton_flipsideTux->isChecked()); myConfig->writeConfigInt("FlipsideOwn", radioButton_flipsideOwn->isChecked()); From 7b27213daab3fd1bdf1aa8ef84330090d8d04210 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 10 Aug 2013 16:29:15 +0200 Subject: [PATCH 012/128] Waiting state for spectator mode. --- src/net/common/servergamestate.cpp | 2 ++ src/net/sessiondata.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index 976e8fe6..bbbe8dd5 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -874,6 +874,7 @@ AbstractServerGameStateRunning::HandleNewSpectator(boost::shared_ptr { if (session && session->GetPlayerData()) { AcceptNewSession(server, session, false); + session->SetState(SessionData::Waiting); server->AddNewSpectator(session->GetPlayerData()->GetUniqueId()); } } @@ -1399,6 +1400,7 @@ ServerGameStateHand::InitNewSpectators(boost::shared_ptr server) while (i != end) { boost::shared_ptr session(server->GetSessionManager().GetSessionByUniquePlayerId(*i)); if (session && session->GetPlayerData()) { + session->SetState(SessionData::Spectating); SendGameData(server, session); } ++i; diff --git a/src/net/sessiondata.h b/src/net/sessiondata.h index 591b5272..1b3edba3 100644 --- a/src/net/sessiondata.h +++ b/src/net/sessiondata.h @@ -58,7 +58,7 @@ class ServerGame; class SessionData : public boost::enable_shared_from_this { public: - enum State { Init = 1, ReceivingAvatar = 2, Established = 4, Game = 8, Spectating = 16, Closed = 32 }; + enum State { Init = 1, ReceivingAvatar = 2, Established = 4, Game = 8, Spectating = 16, Waiting = 32, Closed = 64 }; SessionData(boost::shared_ptr sock, SessionId id, SessionDataCallback &cb, boost::asio::io_service &ioService); ~SessionData(); From be0f363af4d29a1cb61d0209e3dcf6cab89fb79b Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 10 Aug 2013 16:53:36 +0200 Subject: [PATCH 013/128] Spectator mode fixes. --- src/net/common/servergamestate.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index bbbe8dd5..8bcb8af7 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -770,7 +770,7 @@ void ServerGameStateStartGame::HandleNewSpectator(boost::shared_ptr server, boost::shared_ptr session) { if (session && session->GetPlayerData()) { - AcceptNewSession(server, session, false); + AcceptNewSession(server, session, true); } } @@ -873,7 +873,7 @@ void AbstractServerGameStateRunning::HandleNewSpectator(boost::shared_ptr server, boost::shared_ptr session) { if (session && session->GetPlayerData()) { - AcceptNewSession(server, session, false); + AcceptNewSession(server, session, true); session->SetState(SessionData::Waiting); server->AddNewSpectator(session->GetPlayerData()->GetUniqueId()); } From 7b305b36e20f9496550644aacae76daf4aec457f Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 11 Aug 2013 13:25:26 +0200 Subject: [PATCH 014/128] Adding feature to leave a game as spectator. --- src/net/common/servergame.cpp | 38 ++++++++++++++++++++---------- src/net/common/servergamestate.cpp | 2 +- src/net/servergame.h | 2 +- src/net/sessiondata.h | 2 +- 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/net/common/servergame.cpp b/src/net/common/servergame.cpp index d09aa757..38e531e5 100644 --- a/src/net/common/servergame.cpp +++ b/src/net/common/servergame.cpp @@ -837,7 +837,7 @@ ServerGame::ResetComputerPlayerList() while (i != end) { GetLobbyThread().RemoveComputerPlayer(*i); - RemovePlayerData(*i, NTF_NET_REMOVED_ON_REQUEST); + RemovePlayerData(*i, NTF_NET_REMOVED_ON_REQUEST, false); ++i; } @@ -853,13 +853,13 @@ ServerGame::RemoveSession(boost::shared_ptr session, int reason) if (GetSessionManager().RemoveSession(session->GetId())) { boost::shared_ptr tmpPlayerData = session->GetPlayerData(); if (tmpPlayerData && !tmpPlayerData->GetName().empty()) { - RemovePlayerData(tmpPlayerData, reason); + RemovePlayerData(tmpPlayerData, reason, session->GetState() == SessionData::Spectating || session->GetState() == SessionData::SpectatorWaiting); } } } void -ServerGame::RemovePlayerData(boost::shared_ptr player, int reason) +ServerGame::RemovePlayerData(boost::shared_ptr player, int reason, bool spectateOnly) { if (player->IsGameAdmin()) { // Find new admin for the game @@ -886,25 +886,37 @@ ServerGame::RemovePlayerData(boost::shared_ptr player, int reason) // Send "Player Left" to clients. boost::shared_ptr thisPlayerLeft(new NetPacket); - thisPlayerLeft->GetMsg()->set_messagetype(PokerTHMessage::Type_GamePlayerLeftMessage); - GamePlayerLeftMessage *netPlayerLeft = thisPlayerLeft->GetMsg()->mutable_gameplayerleftmessage(); - netPlayerLeft->set_gameid(GetId()); - netPlayerLeft->set_playerid(player->GetUniqueId()); + GamePlayerLeftMessage::GamePlayerLeftReason netReason = GamePlayerLeftMessage::leftError; switch (reason) { case NTF_NET_REMOVED_ON_REQUEST : - netPlayerLeft->set_gameplayerleftreason(GamePlayerLeftMessage::leftOnRequest); + netReason = GamePlayerLeftMessage::leftOnRequest; break; case NTF_NET_REMOVED_KICKED : - netPlayerLeft->set_gameplayerleftreason(GamePlayerLeftMessage::leftKicked); - break; - default : - netPlayerLeft->set_gameplayerleftreason(GamePlayerLeftMessage::leftError); + netReason = GamePlayerLeftMessage::leftKicked; break; } + + if (spectateOnly) { + thisPlayerLeft->GetMsg()->set_messagetype(PokerTHMessage::Type_GameSpectatorLeftMessage); + GameSpectatorLeftMessage *netPlayerLeft = thisPlayerLeft->GetMsg()->mutable_gamespectatorleftmessage(); + netPlayerLeft->set_gameid(GetId()); + netPlayerLeft->set_playerid(player->GetUniqueId()); + netPlayerLeft->set_gamespectatorleftreason(netReason); + } else { + thisPlayerLeft->GetMsg()->set_messagetype(PokerTHMessage::Type_GamePlayerLeftMessage); + GamePlayerLeftMessage *netPlayerLeft = thisPlayerLeft->GetMsg()->mutable_gameplayerleftmessage(); + netPlayerLeft->set_gameid(GetId()); + netPlayerLeft->set_playerid(player->GetUniqueId()); + netPlayerLeft->set_gameplayerleftreason(netReason); + } GetSessionManager().SendToAllSessions(GetLobbyThread().GetSender(), thisPlayerLeft, SessionData::Game); GetState().NotifySessionRemoved(shared_from_this()); - GetLobbyThread().NotifyPlayerLeftGame(GetId(), player->GetUniqueId()); + if (spectateOnly) { + GetLobbyThread().NotifySpectatorLeftGame(GetId(), player->GetUniqueId()); + } else { + GetLobbyThread().NotifyPlayerLeftGame(GetId(), player->GetUniqueId()); + } } void diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index 8bcb8af7..491937c4 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -874,7 +874,7 @@ AbstractServerGameStateRunning::HandleNewSpectator(boost::shared_ptr { if (session && session->GetPlayerData()) { AcceptNewSession(server, session, true); - session->SetState(SessionData::Waiting); + session->SetState(SessionData::SpectatorWaiting); server->AddNewSpectator(session->GetPlayerData()->GetUniqueId()); } } diff --git a/src/net/servergame.h b/src/net/servergame.h index 16a8b694..43dfab0b 100644 --- a/src/net/servergame.h +++ b/src/net/servergame.h @@ -159,7 +159,7 @@ protected: void ResetComputerPlayerList(); void RemoveSession(boost::shared_ptr session, int reason); - void RemovePlayerData(boost::shared_ptr player, int reason); + void RemovePlayerData(boost::shared_ptr player, int reason, bool spectateOnly); void SessionError(boost::shared_ptr session, int errorCode); void MoveSessionToLobby(boost::shared_ptr session, int reason); diff --git a/src/net/sessiondata.h b/src/net/sessiondata.h index 1b3edba3..17cd25c5 100644 --- a/src/net/sessiondata.h +++ b/src/net/sessiondata.h @@ -58,7 +58,7 @@ class ServerGame; class SessionData : public boost::enable_shared_from_this { public: - enum State { Init = 1, ReceivingAvatar = 2, Established = 4, Game = 8, Spectating = 16, Waiting = 32, Closed = 64 }; + enum State { Init = 1, ReceivingAvatar = 2, Established = 4, Game = 8, Spectating = 16, GameWaiting = 32, SpectatorWaiting = 64, Closed = 128 }; SessionData(boost::shared_ptr sock, SessionId id, SessionDataCallback &cb, boost::asio::io_service &ioService); ~SessionData(); From a7369334014e9d8f758823ee67a807b2e03545f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Chaves=20Fern=C3=A1ndez=20=28Gallaecio=29?= Date: Sun, 18 Aug 2013 16:18:04 +0200 Subject: [PATCH 015/128] Updated the Galician translation --- ts/pokerth_gl.ts | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/ts/pokerth_gl.ts b/ts/pokerth_gl.ts index d9fadb44..4b37fbe5 100644 --- a/ts/pokerth_gl.ts +++ b/ts/pokerth_gl.ts @@ -1588,17 +1588,17 @@ Para convidar a outros xogadores, prema co botón secundario a súa entrada na l Admin action ... - + Acción de administrador… Total kickban - + Expulsión total Close game - + Pechar a partida @@ -2905,12 +2905,13 @@ Para convidar a outros xogadores, prema co botón secundario a súa entrada na l Are you sure you want to close the game: "%1"? - + Estás seguro de que queres pechar a partida: +«%1»? Are you sure you want to total kickban the player: "%1"? - + Estás seguro de que queres expulsar completamente o xogador «%1»? @@ -3997,7 +3998,7 @@ Please enter an valid picture! Server Password: - + Contrasinal do servidor: @@ -4771,7 +4772,7 @@ Please enter a valid server list address! Galician - + Galego @@ -4861,7 +4862,7 @@ Please enter a valid server list address! Vietnamese - + Vietnamita @@ -5483,33 +5484,33 @@ Please reenter the password and try again. The game was closed. - + Pechouse a partida. The game could not be closed. - + Non foi posíbel pechar a partida. The player was kicked and banned permanently. - + O xogador foi expulsado de maneira permanente. The player was kicked, but could not be banned because it was a guest player. - + Botouse fóra ao xogador, pero ao seren un invitado non foi posíbel expulsalo permanentemente. The player was kicked, but could not be banned, because the nick could not be found in the database - + Botouse fóra ao xogador, pero non foi posíbel expulsalo permanentemente porque non se atopou o seu alcume na base de datos. The player could not be found. - + Non foi posíbel atopar ao xogador. From 1d0b9fc5f2b7939239d2cb2ce9b19d07f8e22658 Mon Sep 17 00:00:00 2001 From: lotodore Date: Mon, 19 Aug 2013 22:50:56 +0200 Subject: [PATCH 016/128] Signals/callbacks when spectators join or leave. --- src/gamedata.h | 1 + src/gui/generic/serverguiwrapper.cpp | 16 +++++++ src/gui/generic/serverguiwrapper.h | 4 ++ src/gui/qt/gametable/gametableimpl.cpp | 6 +++ src/gui/qt/gametable/gametableimpl.h | 2 + src/gui/qt/gametable/log/guilog.cpp | 11 +++++ src/gui/qt/gametable/log/guilog.h | 4 ++ src/gui/qt/guiwrapper.cpp | 24 ++++++++++ src/gui/qt/guiwrapper.h | 4 ++ src/gui/qt/startwindow/startwindowimpl.cpp | 4 ++ src/gui/qt/startwindow/startwindowimpl.h | 4 ++ src/net/clientcallback.h | 4 ++ src/net/clientthread.h | 3 ++ src/net/common/clientstate.cpp | 54 +++++++++++++++++----- src/net/common/clientthread.cpp | 46 ++++++++++++++++++ 15 files changed, 176 insertions(+), 11 deletions(-) diff --git a/src/gamedata.h b/src/gamedata.h index 7ba86e5b..e1bf502b 100644 --- a/src/gamedata.h +++ b/src/gamedata.h @@ -100,6 +100,7 @@ struct GameInfo { GameMode mode; unsigned adminPlayerId; PlayerIdList players; + PlayerIdList spectators; bool isPasswordProtected; }; diff --git a/src/gui/generic/serverguiwrapper.cpp b/src/gui/generic/serverguiwrapper.cpp index 84dba5a9..3aeab28b 100644 --- a/src/gui/generic/serverguiwrapper.cpp +++ b/src/gui/generic/serverguiwrapper.cpp @@ -200,6 +200,14 @@ void ServerGuiWrapper::SignalNetClientPlayerLeft(unsigned playerId, const string { if (myClientcb) myClientcb->SignalNetClientPlayerLeft(playerId, playerName, removeReason); } +void ServerGuiWrapper::SignalNetClientSpectatorJoined(unsigned playerId, const string &playerName) +{ + if (myClientcb) myClientcb->SignalNetClientSpectatorJoined(playerId, playerName); +} +void ServerGuiWrapper::SignalNetClientSpectatorLeft(unsigned playerId, const string &playerName, int removeReason) +{ + if (myClientcb) myClientcb->SignalNetClientSpectatorLeft(playerId, playerName, removeReason); +} void ServerGuiWrapper::SignalNetClientNewGameAdmin(unsigned playerId, const string &playerName) { if (myClientcb) myClientcb->SignalNetClientNewGameAdmin(playerId, playerName); @@ -228,6 +236,14 @@ void ServerGuiWrapper::SignalNetClientGameListPlayerLeft(unsigned gameId, unsign { if (myClientcb) myClientcb->SignalNetClientGameListPlayerLeft(gameId, playerId); } +void ServerGuiWrapper::SignalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId) +{ + if (myClientcb) myClientcb->SignalNetClientGameListSpectatorJoined(gameId, playerId); +} +void ServerGuiWrapper::SignalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId) +{ + if (myClientcb) myClientcb->SignalNetClientGameListSpectatorLeft(gameId, playerId); +} void ServerGuiWrapper::SignalNetClientGameStart(boost::shared_ptr game) { if (myClientcb) myClientcb->SignalNetClientGameStart(game); diff --git a/src/gui/generic/serverguiwrapper.h b/src/gui/generic/serverguiwrapper.h index 343e2c75..ebf23c28 100644 --- a/src/gui/generic/serverguiwrapper.h +++ b/src/gui/generic/serverguiwrapper.h @@ -132,6 +132,8 @@ public: void SignalNetClientPlayerJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin); void SignalNetClientPlayerChanged(unsigned playerId, const std::string &newPlayerName); void SignalNetClientPlayerLeft(unsigned playerId, const std::string &playerName, int removeReason); + void SignalNetClientSpectatorJoined(unsigned playerId, const std::string &playerName); + void SignalNetClientSpectatorLeft(unsigned playerId, const std::string &playerName, int removeReason); void SignalNetClientNewGameAdmin(unsigned playerId, const std::string &playerName); void SignalNetClientGameChatMsg(const std::string &playerName, const std::string &msg); void SignalNetClientLobbyChatMsg(const std::string &playerName, const std::string &msg); @@ -144,6 +146,8 @@ public: void SignalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId); void SignalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId); void SignalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId); + void SignalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId); + void SignalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId); void SignalNetClientGameStart(boost::shared_ptr game); void SignalNetClientServerListAdd(unsigned serverId); diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp index eb149d06..885ddec0 100755 --- a/src/gui/qt/gametable/gametableimpl.cpp +++ b/src/gui/qt/gametable/gametableimpl.cpp @@ -676,6 +676,7 @@ gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent) connect(this, SIGNAL(signalEndVoteOnKick()), this, SLOT(endVoteOnKick())); connect(this, SIGNAL(signalNetClientPlayerLeft(unsigned)), this, SLOT(netClientPlayerLeft(unsigned))); + connect(this, SIGNAL(signalNetClientSpectatorLeft(unsigned)), this, SLOT(netClientSpectatorLeft(unsigned))); #ifdef GUI_800x480 connect( tabsButton, SIGNAL( clicked() ), this, SLOT( tabsButtonClicked() ) ); @@ -4299,6 +4300,11 @@ void gameTableImpl::netClientPlayerLeft(unsigned /*playerId*/) } } +void gameTableImpl::netClientSpectatorLeft(unsigned /*playerId*/) +{ + // TODO +} + void gameTableImpl::registeredUserMode() { #ifdef GUI_800x480 diff --git a/src/gui/qt/gametable/gametableimpl.h b/src/gui/qt/gametable/gametableimpl.h index b89f6f2b..1f1a00ea 100755 --- a/src/gui/qt/gametable/gametableimpl.h +++ b/src/gui/qt/gametable/gametableimpl.h @@ -166,6 +166,7 @@ signals: void signalChangeVoteOnKickButtonsState(bool showHide); void signalEndVoteOnKick(); void signalNetClientPlayerLeft(unsigned playerId); + void signalNetClientSpectatorLeft(unsigned playerId); public slots: @@ -347,6 +348,7 @@ public slots: void restoreGameTableGeometry(); void netClientPlayerLeft(unsigned playerId); + void netClientSpectatorLeft(unsigned playerId); void registeredUserMode(); void guestUserMode(); diff --git a/src/gui/qt/gametable/log/guilog.cpp b/src/gui/qt/gametable/log/guilog.cpp index 3939c021..b76f9a6d 100644 --- a/src/gui/qt/gametable/log/guilog.cpp +++ b/src/gui/qt/gametable/log/guilog.cpp @@ -58,6 +58,8 @@ guiLog::guiLog(gameTableImpl* w, ConfigFile *c) : myW(w), myConfig(c), myLogDir( connect(this, SIGNAL(signalLogPlayerLeftMsg(QString, int)), this, SLOT(logPlayerLeftMsg(QString, int))); connect(this, SIGNAL(signalLogPlayerJoinedMsg(QString)), this, SLOT(logPlayerJoinedMsg(QString))); connect(this, SIGNAL(signalLogNewGameAdminMsg(QString)), this, SLOT(logNewGameAdminMsg(QString))); + connect(this, SIGNAL(signalLogSpectatorLeftMsg(QString, int)), this, SLOT(logSpectatorLeftMsg(QString, int))); + connect(this, SIGNAL(signalLogSpectatorJoinedMsg(QString)), this, SLOT(logSpectatorJoinedMsg(QString))); connect(this, SIGNAL(signalLogPlayerWinGame(QString, int)), this, SLOT(logPlayerWinGame(QString, int))); connect(this, SIGNAL(signalFlushLogAtGame(int)), this, SLOT(flushLogAtGame(int))); connect(this, SIGNAL(signalFlushLogAtHand()), this, SLOT(flushLogAtHand())); @@ -537,6 +539,15 @@ void guiLog::logPlayerJoinedMsg(QString playerName) #endif } +void guiLog::logSpectatorLeftMsg(QString playerName, int wasKicked) +{ + // TODO +} + +void guiLog::logSpectatorJoinedMsg(QString playerName) +{ + // TODO +} void guiLog::logPlayerWinGame(QString playerName, int gameID) { diff --git a/src/gui/qt/gametable/log/guilog.h b/src/gui/qt/gametable/log/guilog.h index cdc14c74..3b7c338e 100644 --- a/src/gui/qt/gametable/log/guilog.h +++ b/src/gui/qt/gametable/log/guilog.h @@ -75,6 +75,8 @@ public slots: void logPlayerLeftMsg(QString playerName, int wasKicked); void logPlayerJoinedMsg(QString playerName); void logNewGameAdminMsg(QString playerName); + void logSpectatorLeftMsg(QString playerName, int wasKicked); + void logSpectatorJoinedMsg(QString playerName); void logPlayerWinGame(QString playerName, int gameID); void flushLogAtGame(int gameID); void flushLogAtHand(); @@ -106,6 +108,8 @@ signals: void signalLogFlipHoleCardsMsg(QString playerName, int card1, int card2, int cardsValueInt = -1, QString showHas = "shows"); void signalLogPlayerLeftMsg(QString playerName, int wasKicked); void signalLogPlayerJoinedMsg(QString playerName); + void signalLogSpectatorLeftMsg(QString playerName, int wasKicked); + void signalLogSpectatorJoinedMsg(QString playerName); void signalLogNewGameAdminMsg(QString playerName); void signalLogPlayerWinGame(QString playerName, int gameID); void signalFlushLogAtGame(int gameID); diff --git a/src/gui/qt/guiwrapper.cpp b/src/gui/qt/guiwrapper.cpp index 6af3be90..689e4d48 100644 --- a/src/gui/qt/guiwrapper.cpp +++ b/src/gui/qt/guiwrapper.cpp @@ -373,6 +373,22 @@ void GuiWrapper::SignalNetClientPlayerLeft(unsigned playerId, const string &play if (!playerName.empty() && playerName[0] != '#' && myW->isVisible()) myGuiLog->signalLogPlayerLeftMsg(tmpName, removeReason == NTF_NET_REMOVED_KICKED); } +void GuiWrapper::SignalNetClientSpectatorJoined(unsigned playerId, const string &playerName) +{ + myStartWindow->signalNetClientSpectatorJoined(playerId, QString::fromUtf8(playerName.c_str())); + if (!playerName.empty() && playerName[0] != '#' && myW->isVisible()) { + QString tmpName(QString::fromUtf8(playerName.c_str())); + myGuiLog->signalLogSpectatorJoinedMsg(tmpName); + } +} +void GuiWrapper::SignalNetClientSpectatorLeft(unsigned playerId, const string &playerName, int removeReason) +{ + QString tmpName(QString::fromUtf8(playerName.c_str())); + myStartWindow->signalNetClientSpectatorLeft(playerId, tmpName); + myW->signalNetClientSpectatorLeft(playerId); + if (!playerName.empty() && playerName[0] != '#' && myW->isVisible()) + myGuiLog->signalLogSpectatorLeftMsg(tmpName, removeReason == NTF_NET_REMOVED_KICKED); +} void GuiWrapper::SignalNetClientNewGameAdmin(unsigned playerId, const string &playerName) { @@ -405,6 +421,14 @@ void GuiWrapper::SignalNetClientGameListPlayerLeft(unsigned gameId, unsigned pla { myStartWindow->signalNetClientGameListPlayerLeft(gameId, playerId); } +void GuiWrapper::SignalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId) +{ + myStartWindow->signalNetClientGameListSpectatorJoined(gameId, playerId); +} +void GuiWrapper::SignalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId) +{ + myStartWindow->signalNetClientGameListSpectatorLeft(gameId, playerId); +} void GuiWrapper::SignalNetClientGameStart(boost::shared_ptr game) { myStartWindow->signalNetClientGameStart(game); diff --git a/src/gui/qt/guiwrapper.h b/src/gui/qt/guiwrapper.h index ad8caef0..6a52e331 100644 --- a/src/gui/qt/guiwrapper.h +++ b/src/gui/qt/guiwrapper.h @@ -144,6 +144,8 @@ public: void SignalNetClientPlayerJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin); void SignalNetClientPlayerChanged(unsigned playerId, const std::string &newPlayerName); void SignalNetClientPlayerLeft(unsigned playerId, const std::string &playerName, int removeReason); + void SignalNetClientSpectatorJoined(unsigned playerId, const std::string &playerName); + void SignalNetClientSpectatorLeft(unsigned playerId, const std::string &playerName, int removeReason); void SignalNetClientNewGameAdmin(unsigned playerId, const std::string &playerName); void SignalNetClientGameChatMsg(const std::string &playerName, const std::string &msg); void SignalNetClientLobbyChatMsg(const std::string &playerName, const std::string &msg); @@ -159,6 +161,8 @@ public: void SignalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId); void SignalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId); void SignalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId); + void SignalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId); + void SignalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId); void SignalNetClientGameStart(boost::shared_ptr game); diff --git a/src/gui/qt/startwindow/startwindowimpl.cpp b/src/gui/qt/startwindow/startwindowimpl.cpp index 99dbaae7..aca45629 100644 --- a/src/gui/qt/startwindow/startwindowimpl.cpp +++ b/src/gui/qt/startwindow/startwindowimpl.cpp @@ -215,6 +215,8 @@ startWindowImpl::startWindowImpl(ConfigFile *c, Log *l) connect(this, SIGNAL(signalNetClientPlayerJoined(unsigned, QString, bool)), myGameLobbyDialog, SLOT(addConnectedPlayer(unsigned, QString, bool))); connect(this, SIGNAL(signalNetClientPlayerChanged(unsigned, QString)), myGameLobbyDialog, SLOT(updatePlayer(unsigned, QString))); connect(this, SIGNAL(signalNetClientPlayerLeft(unsigned, QString)), myGameLobbyDialog, SLOT(removePlayer(unsigned, QString))); + // TODO connect(this, SIGNAL(signalNetClientSpectatorJoined(unsigned, QString)), myGameLobbyDialog, SLOT(addConnectedSpectator(unsigned, QString))); + // TODO connect(this, SIGNAL(signalNetClientSpectatorLeft(unsigned, QString)), myGameLobbyDialog, SLOT(removeSpectator(unsigned, QString))); connect(this, SIGNAL(signalNetClientNewGameAdmin(unsigned, QString)), myGameLobbyDialog, SLOT(newGameAdmin(unsigned, QString))); connect(this, SIGNAL(signalNetClientGameListNew(unsigned)), myGameLobbyDialog, SLOT(addGame(unsigned))); @@ -223,6 +225,8 @@ startWindowImpl::startWindowImpl(ConfigFile *c, Log *l) connect(this, SIGNAL(signalNetClientGameListUpdateAdmin(unsigned, unsigned)), myGameLobbyDialog, SLOT(updateGameAdmin(unsigned, unsigned))); connect(this, SIGNAL(signalNetClientGameListPlayerJoined(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameAddPlayer(unsigned, unsigned))); connect(this, SIGNAL(signalNetClientGameListPlayerLeft(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameRemovePlayer(unsigned, unsigned))); + // TODO connect(this, SIGNAL(signalNetClientGameListSpectatorJoined(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameAddSpectator(unsigned, unsigned))); + // TODO connect(this, SIGNAL(signalNetClientGameListSpectatorLeft(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameRemoveSpectator(unsigned, unsigned))); connect(this, SIGNAL(signalNetClientRemovedFromGame(int)), myGameLobbyDialog, SLOT(removedFromGame(int))); connect(this, SIGNAL(signalNetClientStatsUpdate(ServerStats)), myGameLobbyDialog, SLOT(updateStats(ServerStats))); diff --git a/src/gui/qt/startwindow/startwindowimpl.h b/src/gui/qt/startwindow/startwindowimpl.h index 8f739f0b..c101dba1 100644 --- a/src/gui/qt/startwindow/startwindowimpl.h +++ b/src/gui/qt/startwindow/startwindowimpl.h @@ -116,6 +116,8 @@ signals: void signalNetClientPlayerJoined(unsigned playerId, QString playerName, bool isGameAdmin); void signalNetClientPlayerChanged(unsigned playerId, QString newPlayerName); void signalNetClientPlayerLeft(unsigned playerId, QString playerName); + void signalNetClientSpectatorJoined(unsigned playerId, QString playerName); + void signalNetClientSpectatorLeft(unsigned playerId, QString playerName); void signalNetClientNewGameAdmin(unsigned playerId, QString playerName); void signalNetClientGameListNew(unsigned gameId); void signalNetClientGameListRemove(unsigned gameId); @@ -123,6 +125,8 @@ signals: void signalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId); void signalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId); void signalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId); + void signalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId); + void signalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId); void signalNetClientGameStart(boost::shared_ptr game); void signalNetClientGameChatMsg(QString nickName, QString msg); void signalNetClientLobbyChatMsg(QString nickName, QString msg); diff --git a/src/net/clientcallback.h b/src/net/clientcallback.h index 78208c98..cc6d95af 100644 --- a/src/net/clientcallback.h +++ b/src/net/clientcallback.h @@ -60,12 +60,16 @@ public: virtual void SignalNetClientGameListUpdateAdmin(unsigned gameId, unsigned adminPlayerId) = 0; virtual void SignalNetClientGameListPlayerJoined(unsigned gameId, unsigned playerId) = 0; virtual void SignalNetClientGameListPlayerLeft(unsigned gameId, unsigned playerId) = 0; + virtual void SignalNetClientGameListSpectatorJoined(unsigned gameId, unsigned playerId) = 0; + virtual void SignalNetClientGameListSpectatorLeft(unsigned gameId, unsigned playerId) = 0; virtual void SignalNetClientGameStart(boost::shared_ptr game) = 0; virtual void SignalNetClientSelfJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin) = 0; virtual void SignalNetClientPlayerJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin) = 0; virtual void SignalNetClientPlayerChanged(unsigned playerId, const std::string &newPlayerName) = 0; virtual void SignalNetClientPlayerLeft(unsigned playerId, const std::string &playerName, int removeReason) = 0; + virtual void SignalNetClientSpectatorJoined(unsigned playerId, const std::string &playerName) = 0; + virtual void SignalNetClientSpectatorLeft(unsigned playerId, const std::string &playerName, int removeReason) = 0; virtual void SignalNetClientNewGameAdmin(unsigned playerId, const std::string &playerName) = 0; virtual void SignalNetClientGameChatMsg(const std::string &playerName, const std::string &msg) = 0; diff --git a/src/net/clientthread.h b/src/net/clientthread.h index 82a1d372..ae16614a 100644 --- a/src/net/clientthread.h +++ b/src/net/clientthread.h @@ -159,6 +159,7 @@ protected: void SetUnknownPlayer(unsigned id); void SetNewGameAdmin(unsigned id); void RetrieveAvatarIfNeeded(unsigned id, const PlayerInfo &info); + std::string GetPlayerName(unsigned id); void AddTempAvatarFile(unsigned playerId, unsigned avatarSize, AvatarFileType type); void StoreInTempAvatarFile(unsigned playerId, const std::vector &data); @@ -215,6 +216,8 @@ protected: void RemoveGameInfo(unsigned gameId); void ModifyGameInfoAddPlayer(unsigned gameId, unsigned playerId); void ModifyGameInfoRemovePlayer(unsigned gameId, unsigned playerId); + void ModifyGameInfoAddSpectator(unsigned gameId, unsigned playerId); + void ModifyGameInfoRemoveSpectator(unsigned gameId, unsigned playerId); void ClearGameInfoMap(); void StartPetition(unsigned petitionId, unsigned proposingPlayerId, unsigned kickPlayerId, int timeoutSec, int numVotesToKick); diff --git a/src/net/common/clientstate.cpp b/src/net/common/clientstate.cpp index 425c8bd4..25520963 100644 --- a/src/net/common/clientstate.cpp +++ b/src/net/common/clientstate.cpp @@ -628,6 +628,24 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr clien boost::shared_ptr playerData = client->CreatePlayerData(netPlayerJoined.playerid(), netPlayerJoined.isgameadmin()); client->AddPlayerData(playerData); + } else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_GameSpectatorJoinedMessage) { + // Another spectator joined the network game. + const GameSpectatorJoinedMessage &netSpectatorJoined = tmpPacket->GetMsg()->gamespectatorjoinedmessage(); + client->GetCallback().SignalNetClientSpectatorJoined(netSpectatorJoined.playerid(), client->GetPlayerName(netSpectatorJoined.playerid())); + } else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_GameSpectatorLeftMessage) { + // A spectator left the network game. + const GameSpectatorLeftMessage &netSpectatorLeft = tmpPacket->GetMsg()->gamespectatorleftmessage(); + // Signal to GUI and remove from data list. + int removeReason; + switch (netSpectatorLeft.gamespectatorleftreason()) { + case GamePlayerLeftMessage::leftKicked : + removeReason = NTF_NET_REMOVED_KICKED; + break; + default : + removeReason = NTF_NET_REMOVED_ON_REQUEST; + break; + } + client->GetCallback().SignalNetClientSpectatorLeft(netSpectatorLeft.playerid(), client->GetPlayerName(netSpectatorLeft.playerid()), removeReason); } else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_TimeoutWarningMessage) { const TimeoutWarningMessage &tmpTimeout = tmpPacket->GetMsg()->timeoutwarningmessage(); client->GetCallback().SignalNetClientShowTimeoutDialog((NetTimeoutReason)tmpTimeout.timeoutreason(), tmpTimeout.remainingseconds()); @@ -672,15 +690,7 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr clien const PlayerListMessage &netPlayerList = tmpPacket->GetMsg()->playerlistmessage(); if (netPlayerList.playerlistnotification() == PlayerListMessage::playerListNew) { - PlayerInfo info; - if (!client->GetCachedPlayerInfo(netPlayerList.playerid(), info)) { - // Request player info. - ostringstream name; - name << "#" << netPlayerList.playerid(); - info.playerName = name.str(); - client->RequestPlayerInfo(netPlayerList.playerid()); - } - client->GetCallback().SignalLobbyPlayerJoined(netPlayerList.playerid(), info.playerName); + client->GetCallback().SignalLobbyPlayerJoined(netPlayerList.playerid(), client->GetPlayerName(netPlayerList.playerid())); } else if (netPlayerList.playerlistnotification() == PlayerListMessage::playerListLeft) { client->GetCallback().SignalLobbyPlayerLeft(netPlayerList.playerid()); } @@ -688,11 +698,11 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr clien // A new game was created on the server. const GameListNewMessage &netListNew = tmpPacket->GetMsg()->gamelistnewmessage(); - unsigned numPlayers = netListNew.playerids_size(); // Request player info for players if needed. GameInfo tmpInfo; list requestList; - for (unsigned i = 0; i < numPlayers; i++) { + // All players. + for (int i = 0; i < netListNew.playerids_size(); i++) { PlayerInfo info; unsigned playerId = netListNew.playerids(i); if (!client->GetCachedPlayerInfo(playerId, info)) { @@ -700,6 +710,15 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr clien } tmpInfo.players.push_back(playerId); } + // All spectators. + for (int i = 0; i < netListNew.spectatorids_size(); i++) { + PlayerInfo info; + unsigned playerId = netListNew.spectatorids(i); + if (!client->GetCachedPlayerInfo(playerId, info)) { + requestList.push_back(playerId); + } + tmpInfo.spectators.push_back(playerId); + } // Send request for multiple players (will only act if list is non-empty). client->RequestPlayerInfo(requestList); @@ -730,6 +749,19 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr clien const GameListPlayerLeftMessage &netListLeft = tmpPacket->GetMsg()->gamelistplayerleftmessage(); client->ModifyGameInfoRemovePlayer(netListLeft.gameid(), netListLeft.playerid()); + } else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_GameListSpectatorJoinedMessage) { + const GameListSpectatorJoinedMessage &netListJoined = tmpPacket->GetMsg()->gamelistspectatorjoinedmessage(); + + client->ModifyGameInfoAddSpectator(netListJoined.gameid(), netListJoined.playerid()); + // Request player info if needed. + PlayerInfo info; + if (!client->GetCachedPlayerInfo(netListJoined.playerid(), info)) { + client->RequestPlayerInfo(netListJoined.playerid()); + } + } else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_GameListSpectatorLeftMessage) { + const GameListSpectatorLeftMessage &netListLeft = tmpPacket->GetMsg()->gamelistspectatorleftmessage(); + + client->ModifyGameInfoRemoveSpectator(netListLeft.gameid(), netListLeft.playerid()); } else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_GameListAdminChangedMessage) { const GameListAdminChangedMessage &netListAdmin = tmpPacket->GetMsg()->gamelistadminchangedmessage(); diff --git a/src/net/common/clientthread.cpp b/src/net/common/clientthread.cpp index 1b6a281e..e2530261 100644 --- a/src/net/common/clientthread.cpp +++ b/src/net/common/clientthread.cpp @@ -811,6 +811,20 @@ ClientThread::RetrieveAvatarIfNeeded(unsigned id, const PlayerInfo &info) } } +std::string +ClientThread::GetPlayerName(unsigned id) +{ + PlayerInfo info; + if (!GetCachedPlayerInfo(id, info)) { + // Request player info. + ostringstream name; + name << "#" << id; + info.playerName = name.str(); + RequestPlayerInfo(id); + } + return info.playerName; +} + void ClientThread::AddTempAvatarFile(unsigned playerId, unsigned avatarSize, AvatarFileType type) { @@ -1407,6 +1421,38 @@ ClientThread::ModifyGameInfoRemovePlayer(unsigned gameId, unsigned playerId) GetCallback().SignalNetClientGameListPlayerLeft(gameId, playerId); } +void +ClientThread::ModifyGameInfoAddSpectator(unsigned gameId, unsigned playerId) +{ + bool playerAdded = false; + { + boost::mutex::scoped_lock lock(m_gameInfoMapMutex); + GameInfoMap::iterator pos = m_gameInfoMap.find(gameId); + if (pos != m_gameInfoMap.end()) { + pos->second.spectators.push_back(playerId); + playerAdded = true; + } + } + if (playerAdded) + GetCallback().SignalNetClientGameListSpectatorJoined(gameId, playerId); +} + +void +ClientThread::ModifyGameInfoRemoveSpectator(unsigned gameId, unsigned playerId) +{ + bool playerRemoved = false; + { + boost::mutex::scoped_lock lock(m_gameInfoMapMutex); + GameInfoMap::iterator pos = m_gameInfoMap.find(gameId); + if (pos != m_gameInfoMap.end()) { + pos->second.spectators.remove(playerId); + playerRemoved = true; + } + } + if (playerRemoved) + GetCallback().SignalNetClientGameListSpectatorLeft(gameId, playerId); +} + void ClientThread::ClearGameInfoMap() { From 20840a2af0a0570abf352bbf57c05009a902ce5e Mon Sep 17 00:00:00 2001 From: doitux Date: Wed, 28 Aug 2013 10:49:03 +0200 Subject: [PATCH 017/128] qt5 refactoring ... --- pokerth.pro | 30 + pokerth_game.pro | 7 +- pokerth_lib.pro | 2 +- src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp | 4 +- .../changecompleteblindsdialogimpl.cpp | 10 +- .../changecompleteblindsdialogimpl.h | 2 +- src/gui/qt/chattools/chattools.h | 1 + .../connecttoserverdialogimpl.cpp | 4 +- .../connecttoserverdialogimpl.h | 2 +- .../createinternetgamedialogimpl.cpp | 38 +- .../createnetworkgamedialogimpl.cpp | 6 +- .../createnetworkgamedialogimpl.h | 2 +- src/gui/qt/gamelobbydialog.ui | 722 ++++++++++-------- .../gamelobbydialog/gamelobbydialogimpl.cpp | 116 +-- .../qt/gamelobbydialog/gamelobbydialogimpl.h | 6 +- .../qt/gamelobbydialog/mygamelisttreewidget.h | 3 + src/gui/qt/gametable/gametableimpl.cpp | 408 +++++----- src/gui/qt/gametable/gametableimpl.h | 3 + src/gui/qt/gametable/log/guilog.h | 3 + src/gui/qt/gametable/myactionbutton.h | 3 + src/gui/qt/gametable/myavatarlabel.cpp | 14 +- src/gui/qt/gametable/myavatarlabel.h | 7 +- src/gui/qt/gametable/mycardspixmaplabel.cpp | 50 +- src/gui/qt/gametable/mycardspixmaplabel.h | 3 + src/gui/qt/gametable/mycashlabel.h | 3 + src/gui/qt/gametable/mychancelabel.h | 3 + src/gui/qt/gametable/mylefttabwidget.h | 4 +- src/gui/qt/gametable/mymenubar.h | 3 + src/gui/qt/gametable/mynamelabel.h | 5 +- src/gui/qt/gametable/myrighttabwidget.h | 3 + src/gui/qt/gametable/mysetlabel.h | 3 + src/gui/qt/gametable/myslider.h | 4 + src/gui/qt/gametable/mystatuslabel.cpp | 10 +- src/gui/qt/gametable/mystatuslabel.h | 3 + src/gui/qt/gametable/mytimeoutlabel.cpp | 12 +- src/gui/qt/gametable/mytimeoutlabel.h | 3 + .../qt/gametable/startsplash/startsplash.h | 3 + .../internetgamelogindialogimpl.cpp | 4 +- .../internetgamelogindialogimpl.h | 2 +- .../joinnetworkgamedialogimpl.cpp | 34 +- .../joinnetworkgamedialogimpl.h | 2 +- src/gui/qt/logfiledialog/logfiledialog.cpp | 17 +- src/gui/qt/logfiledialog/logfiledialog.h | 2 +- .../newlocalgamedialog/newgamedialogimpl.cpp | 6 +- .../qt/newlocalgamedialog/newgamedialogimpl.h | 6 +- .../serverlistdialog/serverlistdialogimpl.cpp | 5 +- .../serverlistdialog/serverlistdialogimpl.h | 8 +- .../manualblindsorderdialogimpl.cpp | 10 +- .../manualblindsorderdialogimpl.h | 2 +- src/gui/qt/settingsdialog/myavatarbutton.h | 3 + src/gui/qt/settingsdialog/myhpavatarbutton.h | 3 + src/gui/qt/settingsdialog/mystylelistitem.h | 3 + .../selectavatardialog/myavatarlistitem.h | 3 + .../selectavatardialogimpl.cpp | 28 +- .../selectavatardialogimpl.h | 6 +- .../qt/settingsdialog/settingsdialogimpl.cpp | 70 +- .../qt/settingsdialog/settingsdialogimpl.h | 5 +- src/gui/qt/sound/androidaudio.cpp | 14 +- src/gui/qt/sound/sdlplayer.cpp | 2 +- .../startnetworkgamedialogimpl.cpp | 5 +- .../startnetworkgamedialogimpl.h | 2 +- src/gui/qt/startwindow/startwindowimpl.cpp | 16 +- src/gui/qt/styles/carddeckstylereader.cpp | 2 +- src/gui/qt/styles/gametablestylereader.cpp | 10 +- src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h | 3 + src/pokerth.cpp | 6 +- src/third_party/qtlockedfile/README.txt | 10 + src/third_party/qtlockedfile/namespace.patch | 70 ++ .../qtlockedfile.cpp | 131 ++-- src/third_party/qtlockedfile/qtlockedfile.h | 77 ++ src/third_party/qtlockedfile/qtlockedfile.pri | 13 + .../qtlockedfile_unix.cpp | 71 +- .../qtlockedfile/qtlockedfile_win.cpp | 196 +++++ .../qtsingleapplication/LGPL_EXCEPTION.txt | 10 - .../qtsingleapplication/LICENSE.GPL3 | 674 ---------------- .../qtsingleapplication/LICENSE.LGPL | 504 ------------ .../qtsingleapplication/QtLockedFile | 1 - .../qtsingleapplication/QtSingleApplication | 1 - .../qtsingleapplication/README.txt | 10 + .../qtsingleapplication/namespace.patch | 133 ++++ .../qtsingleapplication/qtlocalpeer.cpp | 159 ++-- .../qtsingleapplication/qtlocalpeer.h | 80 +- .../qtsingleapplication/qtlockedfile.h | 101 --- .../qtsingleapplication/qtlockedfile_win.cpp | 213 ------ .../qtsingleapplication.cpp | 412 +++------- .../qtsingleapplication/qtsingleapplication.h | 111 +-- .../qtsingleapplication.pri | 23 +- .../qtsinglecoreapplication.cpp | 131 +--- .../qtsinglecoreapplication.h | 58 +- .../qtsinglecoreapplication.pri | 4 + 90 files changed, 1910 insertions(+), 3067 deletions(-) create mode 100644 src/third_party/qtlockedfile/README.txt create mode 100644 src/third_party/qtlockedfile/namespace.patch rename src/third_party/{qtsingleapplication => qtlockedfile}/qtlockedfile.cpp (50%) create mode 100644 src/third_party/qtlockedfile/qtlockedfile.h create mode 100644 src/third_party/qtlockedfile/qtlockedfile.pri rename src/third_party/{qtsingleapplication => qtlockedfile}/qtlockedfile_unix.cpp (55%) create mode 100644 src/third_party/qtlockedfile/qtlockedfile_win.cpp delete mode 100644 src/third_party/qtsingleapplication/LGPL_EXCEPTION.txt delete mode 100644 src/third_party/qtsingleapplication/LICENSE.GPL3 delete mode 100644 src/third_party/qtsingleapplication/LICENSE.LGPL delete mode 100644 src/third_party/qtsingleapplication/QtLockedFile delete mode 100644 src/third_party/qtsingleapplication/QtSingleApplication create mode 100644 src/third_party/qtsingleapplication/README.txt create mode 100644 src/third_party/qtsingleapplication/namespace.patch delete mode 100644 src/third_party/qtsingleapplication/qtlockedfile.h delete mode 100644 src/third_party/qtsingleapplication/qtlockedfile_win.cpp diff --git a/pokerth.pro b/pokerth.pro index b63a1c81..181b1e2d 100755 --- a/pokerth.pro +++ b/pokerth.pro @@ -6,3 +6,33 @@ SUBDIRS = pokerth_protocol.pro pokerth_db.pro pokerth_lib.pro pokerth_game.pro SUBDIRS += pokerth_server.pro chatcleaner.pro } CONFIG += ordered + +OTHER_FILES += \ + android/src/org/kde/necessitas/ministro/IMinistro.aidl \ + android/src/org/kde/necessitas/ministro/IMinistroCallback.aidl \ + android/src/org/qtproject/qt5/android/bindings/QtActivity.java \ + android/src/org/qtproject/qt5/android/bindings/QtApplication.java \ + android/res/values-pl/strings.xml \ + android/res/values-es/strings.xml \ + android/res/values-it/strings.xml \ + android/res/values-ru/strings.xml \ + android/res/values-et/strings.xml \ + android/res/values-rs/strings.xml \ + android/res/values-ja/strings.xml \ + android/res/values-fa/strings.xml \ + android/res/values-ro/strings.xml \ + android/res/values-zh-rTW/strings.xml \ + android/res/values-nl/strings.xml \ + android/res/values-zh-rCN/strings.xml \ + android/res/values-pt-rBR/strings.xml \ + android/res/values-el/strings.xml \ + android/res/layout/splash.xml \ + android/res/values-fr/strings.xml \ + android/res/values-id/strings.xml \ + android/res/values-ms/strings.xml \ + android/res/values-de/strings.xml \ + android/res/values-nb/strings.xml \ + android/res/values/strings.xml \ + android/res/values/libs.xml \ + android/version.xml \ + android/AndroidManifest.xml diff --git a/pokerth_game.pro b/pokerth_game.pro index d579c643..09f47258 100644 --- a/pokerth_game.pro +++ b/pokerth_game.pro @@ -18,6 +18,7 @@ CONFIG += qt \ warn_on include(src/third_party/qtsingleapplication/qtsingleapplication.pri) QT += sql +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets UI_DIR = uics MOC_DIR = mocs OBJECTS_DIR = obj @@ -412,8 +413,8 @@ unix:!mac { $${PREFIX}/lib64 } android{ - LIBPATH += $${PREFIX}/lib/armv5 - LIB_DIRS = $${PREFIX}/lib/armv5 + LIBPATH += $${PREFIX}/lib/armv7 + LIB_DIRS = $${PREFIX}/lib/armv7 } BOOST_FS = boost_filesystem \ boost_filesystem-mt @@ -635,7 +636,7 @@ gui_800x480 { android{ # Use old boost::filesystem, because the new version requires std::wstring. - DEFINES += BOOST_FILESYSTEM_VERSION=2 + DEFINES += BOOST_FILESYSTEM_VERSION=3 # sqlite3 is included directly. INCLUDEPATH += src/third_party/sqlite3 diff --git a/pokerth_lib.pro b/pokerth_lib.pro index 213976fc..f58b9199 100644 --- a/pokerth_lib.pro +++ b/pokerth_lib.pro @@ -255,7 +255,7 @@ mac{ android{ # Use old boost::filesystem, because the new version requires std::wstring. - DEFINES += BOOST_FILESYSTEM_VERSION=2 + DEFINES += BOOST_FILESYSTEM_VERSION=3 # sqlite3 is included directly. INCLUDEPATH += src/third_party/sqlite3 SOURCES += src/third_party/sqlite3/sqlite3.c diff --git a/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp b/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp index 8c945413..316f3a0c 100755 --- a/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp +++ b/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp @@ -35,7 +35,7 @@ #ifdef ANDROID #ifndef ANDROID_TEST - #include + #include "QtGui/5.1.0/QtGui/qpa/qplatformnativeinterface.h" #include #endif #endif @@ -72,7 +72,7 @@ aboutPokerthImpl::aboutPokerthImpl(QWidget *parent, ConfigFile *c) #ifdef ANDROID int api = -2; #ifndef ANDROID_TEST - JavaVM *currVM = (JavaVM *)QApplication::platformNativeInterface()->nativeResourceForWidget("JavaVM", 0); + JavaVM *currVM = (JavaVM *)QApplication::platformNativeInterface()->nativeResourceForIntegration("JavaVM"); JNIEnv* env; if (currVM->AttachCurrentThread(&env, NULL)<0) { qCritical()<<"AttachCurrentThread failed"; diff --git a/src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.cpp b/src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.cpp index 2b2d5aca..c75dc6bf 100644 --- a/src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.cpp +++ b/src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.cpp @@ -35,7 +35,7 @@ changeCompleteBlindsDialogImpl::changeCompleteBlindsDialogImpl(QWidget *parent, ConfigFile *c) - : QDialog(parent), myConfig(c), settingsCorrect(TRUE) + : QDialog(parent), myConfig(c), settingsCorrect(true) { #ifdef __APPLE__ setWindowModality(Qt::ApplicationModal); @@ -50,11 +50,9 @@ changeCompleteBlindsDialogImpl::changeCompleteBlindsDialogImpl(QWidget *parent, } -void changeCompleteBlindsDialogImpl::exec() +int changeCompleteBlindsDialogImpl::exec() { - - - QDialog::exec(); + return QDialog::exec(); } void changeCompleteBlindsDialogImpl::updateSpinBoxInputMinimum(int value) @@ -88,7 +86,7 @@ void changeCompleteBlindsDialogImpl::sortBlindsList() int i; QList tempIntList; QStringList tempStringList; - bool ok = TRUE; + bool ok = true; for(i=0; icount(); i++) { // std::cout << listWidget_blinds->item(i)->text().toInt(&ok,10) << "\n"; diff --git a/src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.h b/src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.h index 37fd4c96..3dd465a8 100644 --- a/src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.h +++ b/src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.h @@ -48,7 +48,7 @@ class changeCompleteBlindsDialogImpl: public QDialog, public Ui::changeCompleteB public: changeCompleteBlindsDialogImpl(QWidget *parent = 0, ConfigFile *c = 0); - void exec(); + int exec(); bool eventFilter(QObject *obj, QEvent *event); public slots: diff --git a/src/gui/qt/chattools/chattools.h b/src/gui/qt/chattools/chattools.h index 2fde45e1..a5391e88 100644 --- a/src/gui/qt/chattools/chattools.h +++ b/src/gui/qt/chattools/chattools.h @@ -33,6 +33,7 @@ #include #include +#include #include #include diff --git a/src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.cpp b/src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.cpp index 19dae39e..c4714d21 100644 --- a/src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.cpp +++ b/src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.cpp @@ -41,12 +41,12 @@ connectToServerDialogImpl::connectToServerDialogImpl(QWidget *parent) setupUi(this); } -void connectToServerDialogImpl::exec() +int connectToServerDialogImpl::exec() { label_actionMessage->setText(""); progressBar->setValue(0); - QDialog::exec(); + return QDialog::exec(); } void connectToServerDialogImpl::refresh(int actionID) diff --git a/src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.h b/src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.h index 1d47e0aa..801a13ee 100644 --- a/src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.h +++ b/src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.h @@ -47,7 +47,7 @@ class connectToServerDialogImpl: public QDialog, public Ui::connectToServerDialo public: connectToServerDialogImpl(QWidget *parent = 0); - void exec(); + int exec(); public slots: diff --git a/src/gui/qt/createinternetgamedialog/createinternetgamedialogimpl.cpp b/src/gui/qt/createinternetgamedialog/createinternetgamedialogimpl.cpp index bd5dd387..0ae6fe04 100644 --- a/src/gui/qt/createinternetgamedialog/createinternetgamedialogimpl.cpp +++ b/src/gui/qt/createinternetgamedialog/createinternetgamedialogimpl.cpp @@ -143,7 +143,7 @@ void createInternetGameDialogImpl::callChangeBlindsDialog(bool show) myChangeCompleteBlindsDialog->exec(); if(myChangeCompleteBlindsDialog->result() == QDialog::Accepted ) {} else { - radioButton_useSavedBlindsSettings->setChecked(TRUE); + radioButton_useSavedBlindsSettings->setChecked(true); } } @@ -155,9 +155,9 @@ void createInternetGameDialogImpl::gameTypeChanged() switch (comboBox_gameType->currentIndex()) { case GAME_TYPE_NORMAL-1: { - checkBox_Password->setDisabled(FALSE); - spinBox_startCash->setDisabled(FALSE); - spinBox_quantityPlayers->setDisabled(FALSE); + checkBox_Password->setDisabled(false); + spinBox_startCash->setDisabled(false); + spinBox_quantityPlayers->setDisabled(false); spinBox_quantityPlayers->setValue(myConfig->readConfigInt("NetNumberOfPlayers")); spinBox_startCash->setValue(myConfig->readConfigInt("NetStartCash")); radioButton_useSavedBlindsSettings->show(); @@ -168,9 +168,9 @@ void createInternetGameDialogImpl::gameTypeChanged() break; case GAME_TYPE_REGISTERED_ONLY-1: { - checkBox_Password->setDisabled(FALSE); - spinBox_startCash->setDisabled(FALSE); - spinBox_quantityPlayers->setDisabled(FALSE); + checkBox_Password->setDisabled(false); + spinBox_startCash->setDisabled(false); + spinBox_quantityPlayers->setDisabled(false); spinBox_quantityPlayers->setValue(myConfig->readConfigInt("NetNumberOfPlayers")); spinBox_startCash->setValue(myConfig->readConfigInt("NetStartCash")); radioButton_useSavedBlindsSettings->show(); @@ -180,10 +180,10 @@ void createInternetGameDialogImpl::gameTypeChanged() } break; case GAME_TYPE_INVITE_ONLY-1: { - checkBox_Password->setChecked(FALSE); - checkBox_Password->setDisabled(TRUE); - spinBox_startCash->setDisabled(FALSE); - spinBox_quantityPlayers->setDisabled(FALSE); + checkBox_Password->setChecked(false); + checkBox_Password->setDisabled(true); + spinBox_startCash->setDisabled(false); + spinBox_quantityPlayers->setDisabled(false); spinBox_quantityPlayers->setValue(myConfig->readConfigInt("NetNumberOfPlayers")); spinBox_startCash->setValue(myConfig->readConfigInt("NetStartCash")); radioButton_useSavedBlindsSettings->show(); @@ -194,13 +194,13 @@ void createInternetGameDialogImpl::gameTypeChanged() } break; case GAME_TYPE_RANKING-1: { - checkBox_Password->setChecked(FALSE); - checkBox_Password->setDisabled(TRUE); + checkBox_Password->setChecked(false); + checkBox_Password->setDisabled(true); spinBox_startCash->setValue(RANKING_GAME_START_CASH); - spinBox_startCash->setDisabled(TRUE); + spinBox_startCash->setDisabled(true); spinBox_quantityPlayers->setValue(RANKING_GAME_NUMBER_OF_PLAYERS); - spinBox_quantityPlayers->setDisabled(TRUE); + spinBox_quantityPlayers->setDisabled(true); radioButton_useSavedBlindsSettings->hide(); radioButton_changeBlindsSettings->hide(); startBlind->show(); @@ -213,11 +213,11 @@ void createInternetGameDialogImpl::gameTypeChanged() if(comboBox_gameType->currentIndex() == GAME_TYPE_RANKING-1) { //set static values myChangeCompleteBlindsDialog->spinBox_firstSmallBlind->setValue(RANKING_GAME_START_SBLIND); - myChangeCompleteBlindsDialog->radioButton_raiseBlindsAtHands->setChecked(TRUE); - myChangeCompleteBlindsDialog->radioButton_raiseBlindsAtMinutes->setChecked(FALSE); + myChangeCompleteBlindsDialog->radioButton_raiseBlindsAtHands->setChecked(true); + myChangeCompleteBlindsDialog->radioButton_raiseBlindsAtMinutes->setChecked(false); myChangeCompleteBlindsDialog->spinBox_raiseSmallBlindEveryHands->setValue(11); - myChangeCompleteBlindsDialog->radioButton_alwaysDoubleBlinds->setChecked(TRUE); - myChangeCompleteBlindsDialog->radioButton_manualBlindsOrder->setChecked(FALSE); + myChangeCompleteBlindsDialog->radioButton_alwaysDoubleBlinds->setChecked(true); + myChangeCompleteBlindsDialog->radioButton_manualBlindsOrder->setChecked(false); myChangeCompleteBlindsDialog->listWidget_blinds->clear(); } else { //read config values diff --git a/src/gui/qt/createnetworkgamedialog/createnetworkgamedialogimpl.cpp b/src/gui/qt/createnetworkgamedialog/createnetworkgamedialogimpl.cpp index 6dd80cec..634d2609 100644 --- a/src/gui/qt/createnetworkgamedialog/createnetworkgamedialogimpl.cpp +++ b/src/gui/qt/createnetworkgamedialog/createnetworkgamedialogimpl.cpp @@ -56,10 +56,10 @@ createNetworkGameDialogImpl::createNetworkGameDialogImpl(QWidget *parent, Config } -void createNetworkGameDialogImpl::exec() +int createNetworkGameDialogImpl::exec() { fillFormular(); - QDialog::exec(); + return QDialog::exec(); } void createNetworkGameDialogImpl::createGame() @@ -131,7 +131,7 @@ void createNetworkGameDialogImpl::callChangeBlindsDialog(bool show) myChangeCompleteBlindsDialog->exec(); if(myChangeCompleteBlindsDialog->result() == QDialog::Accepted ) {} else { - radioButton_useSavedBlindsSettings->setChecked(TRUE); + radioButton_useSavedBlindsSettings->setChecked(true); } } diff --git a/src/gui/qt/createnetworkgamedialog/createnetworkgamedialogimpl.h b/src/gui/qt/createnetworkgamedialog/createnetworkgamedialogimpl.h index e6022753..c53acec1 100644 --- a/src/gui/qt/createnetworkgamedialog/createnetworkgamedialogimpl.h +++ b/src/gui/qt/createnetworkgamedialog/createnetworkgamedialogimpl.h @@ -51,7 +51,7 @@ class createNetworkGameDialogImpl: public QDialog, public Ui::createNetworkGameD public: createNetworkGameDialogImpl(QWidget *parent = 0, ConfigFile *c = 0); - void exec(); + int exec(); changeCompleteBlindsDialogImpl* getChangeCompleteBlindsDialog() { return myChangeCompleteBlindsDialog; } diff --git a/src/gui/qt/gamelobbydialog.ui b/src/gui/qt/gamelobbydialog.ui index 7a7cf556..0ea2d2f6 100644 --- a/src/gui/qt/gamelobbydialog.ui +++ b/src/gui/qt/gamelobbydialog.ui @@ -20,15 +20,24 @@ Internet Game Lobby + + 5 + + + 5 + + + 5 + + + 5 + 7 4 - - 5 - @@ -88,6 +97,281 @@ + + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + true + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 20 + 20 + + + + + + + + true + + + + + + + + + + 400 + 0 + + + + Qt::CustomContextMenu + + + Qt::ScrollBarAlwaysOff + + + QAbstractItemView::NoEditTriggers + + + false + + + 5 + + + false + + + true + + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Join &any game + + + + :/gfx/transform-rotate.png:/gfx/transform-rotate.png + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 181 + 20 + + + + + + + + &Create Game + + + + :/gfx/list_add.png:/gfx/list_add.png + + + + + + + &Join Game + + + + :/gfx/go-next-view.png:/gfx/go-next-view.png + + + + + + + + + + 400 + 223 + + + + + 16777215 + 230 + + + + Lobby-Chat + + + + 7 + + + 2 + + + 7 + + + 7 + + + 0 + + + + + true + + + + + + + + + + + + + + Sort alphabetically + + + + + Sort by country + + + + + Display idle players + + + + + + + + + 0 + 0 + + + + + 165 + 0 + + + + + 165 + 16777215 + + + + Qt::CustomContextMenu + + + QAbstractItemView::NoEditTriggers + + + false + + + true + + + @@ -114,53 +398,122 @@ Game Info - - - 3 - + - 7 + 6 2 - 7 + 6 6 - - - - - 221 - 237 - + + 0 + + + 1 + + + + + 0 - - Qt::CustomContextMenu - - - 1 - - - - 25 - 26 - - - - 15 - - - - Connected Players - - + + + Players + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 221 + 100 + + + + Qt::CustomContextMenu + + + 1 + + + + 25 + 26 + + + + 15 + + + false + + + + Connected Players + + + + + + + + + Spectators + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + false + + + + 1 + + + + + + - + @@ -176,20 +529,29 @@ 0 0 - 246 - 168 + 250 + 200 - + + + 4 + + + 4 + + + 4 + + + 4 + - -1 + 6 2 - - 4 - @@ -405,7 +767,7 @@ - + @@ -442,7 +804,7 @@ - + 3 @@ -532,7 +894,7 @@ - + 0 @@ -587,272 +949,6 @@ - - - - - 400 - 0 - - - - Qt::CustomContextMenu - - - Qt::ScrollBarAlwaysOff - - - QAbstractItemView::NoEditTriggers - - - false - - - 5 - - - false - - - true - - - - - - - 6 - - - 0 - - - - - Join &any game - - - - :/gfx/transform-rotate.png:/gfx/transform-rotate.png - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 181 - 20 - - - - - - - - &Create Game - - - - :/gfx/list_add.png:/gfx/list_add.png - - - - - - - &Join Game - - - - :/gfx/go-next-view.png:/gfx/go-next-view.png - - - - - - - - - - 400 - 223 - - - - - 16777215 - 230 - - - - Lobby-Chat - - - - 7 - - - 2 - - - 7 - - - 7 - - - 0 - - - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 20 - 20 - - - - - - - - true - - - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 20 - 20 - - - - - - - - true - - - - - - - - - - 0 - 0 - - - - - 165 - 0 - - - - - 165 - 16777215 - - - - Qt::CustomContextMenu - - - QAbstractItemView::NoEditTriggers - - - false - - - true - - - - - - - - Sort alphabetically - - - - - Sort by country - - - - - Display idle players - - - - diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 817ca377..152d48bf 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -90,13 +90,13 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) label_rankings->setText(clickToRanking); waitStartGameMsgBoxTimer = new QTimer(this); - waitStartGameMsgBoxTimer->setSingleShot(TRUE); + waitStartGameMsgBoxTimer->setSingleShot(true); blinkingButtonAnimationTimer = new QTimer(this); blinkingButtonAnimationTimer->setInterval(1000); autoStartTimer = new QTimer(this); autoStartTimer->setInterval(1000); showInfoMsgBoxTimer = new QTimer(this); - showInfoMsgBoxTimer->setSingleShot(TRUE); + showInfoMsgBoxTimer->setSingleShot(true); //fetch button colors for blinking groupBox_GameInfo->setEnabled(true); @@ -111,12 +111,12 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) //prepare overlay autoStartTimerOverlay = new QLabel(scrollArea_gameInfos); autoStartTimerOverlay->hide(); - autoStartTimerOverlay->setWordWrap(TRUE); + autoStartTimerOverlay->setWordWrap(true); autoStartTimerOverlay->setMaximumWidth(190); autoStartTimerOverlay->setMinimumWidth(190); autoStartTimerOverlay->setTextFormat(Qt::RichText); autoStartTimerOverlay->setAlignment(Qt::AlignCenter); - autoStartTimerOverlay->setAutoFillBackground(TRUE); + autoStartTimerOverlay->setAutoFillBackground(true); autoStartTimerOverlay->setFrameStyle(QFrame::StyledPanel); QPalette p; p.setColor(QPalette::Background, QColor(255, 255, 255, 210)); @@ -126,7 +126,7 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) myGameListModel = new QStandardItemModel(this); myGameListSortFilterProxyModel = new MyGameListSortFilterProxyModel(this); myGameListSortFilterProxyModel->setSourceModel(myGameListModel); - myGameListSortFilterProxyModel->setDynamicSortFilter(TRUE); + myGameListSortFilterProxyModel->setDynamicSortFilter(true); treeView_GameList->setModel(myGameListSortFilterProxyModel); myGameListSelectionModel = treeView_GameList->selectionModel(); @@ -174,12 +174,12 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) treeView_GameList->setStyleSheet("QTreeView {background-color: white; background-image: url(\""+myAppDataPath +"gfx/gui/misc/background_gamelist.png\"); background-attachment: fixed; background-position: top center ; background-repeat: no-repeat;}"); #endif - treeView_GameList->setAutoFillBackground(TRUE); + treeView_GameList->setAutoFillBackground(true); myNickListModel = new QStandardItemModel(this); myNickListSortFilterProxyModel = new MyNickListSortFilterProxyModel(this); myNickListSortFilterProxyModel->setSourceModel(myNickListModel); - myNickListSortFilterProxyModel->setDynamicSortFilter(TRUE); + myNickListSortFilterProxyModel->setDynamicSortFilter(true); myNickListSortFilterProxyModel->setSortCaseSensitivity(Qt::CaseInsensitive); treeView_NickList->setModel(myNickListSortFilterProxyModel); @@ -256,7 +256,7 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) } -void gameLobbyDialogImpl::exec() +int gameLobbyDialogImpl::exec() { if(myConfig->readConfigInt("UseLobbyChat")) { @@ -276,10 +276,11 @@ void gameLobbyDialogImpl::exec() #ifdef ANDROID this->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); #endif - QDialog::exec(); - + int ret = QDialog::exec(); waitStartGameMsgBoxTimer->stop(); closeAllChildDialogs(); + + return ret; } @@ -328,7 +329,7 @@ void gameLobbyDialogImpl::createGame() gameData.raiseMode = MANUAL_BLINDS_ORDER; std::list tempBlindList; int i; - bool ok = TRUE; + bool ok = true; for(i=0; igetChangeCompleteBlindsDialog()->listWidget_blinds->count(); i++) { tempBlindList.push_back(myCreateInternetGameDialog->getChangeCompleteBlindsDialog()->listWidget_blinds->item(i)->text().toInt(&ok,10)); } @@ -376,15 +377,11 @@ void gameLobbyDialogImpl::createGame() break; } - showGameDescription(TRUE); + showGameDescription(true); label_SmallBlind->setText(QString("%L1").arg(gameData.firstSmallBlind)); label_StartCash->setText(QString("%L1").arg(gameData.startMoney)); - QTreeWidgetItem *header = treeWidget_connectedPlayers->headerItem(); - header->setText(0, tr("Connected players - max. %1").arg(gameData.maxNumberOfPlayers)); - header->setData(0, Qt::UserRole, gameData.maxNumberOfPlayers); - updateDialogBlinds(gameData); label_GameTiming->setText(QString::number(gameData.playerActionTimeoutSec)+" "+tr("sec (action)")+"\n"+QString::number(gameData.delayBetweenHandsSec)+" "+tr("sec (hand delay)")); @@ -422,7 +419,7 @@ void gameLobbyDialogImpl::joinAnyGame() if(comboBox_gameListFilter->currentIndex() != 3 && comboBox_gameListFilter->currentIndex() != 0 && comboBox_gameListFilter->currentIndex() != 5) comboBox_gameListFilter->setCurrentIndex(0); - bool found = FALSE; + bool found = false; int it = 0; int gameToJoinId = 0; @@ -437,7 +434,7 @@ void gameLobbyDialogImpl::joinAnyGame() mostConnectedPlayers = players; gameToJoinId = it; } - found = TRUE; + found = true; } it++; } @@ -550,7 +547,7 @@ void gameLobbyDialogImpl::gameSelected(const QModelIndex &index) break; } - showGameDescription(TRUE); + showGameDescription(true); label_SmallBlind->setText(QString("%L1").arg(info.data.firstSmallBlind)); label_StartCash->setText(QString("%L1").arg(info.data.startMoney)); // label_MaximumNumberOfPlayers->setText(QString::number(info.data.maxNumberOfPlayers));s @@ -568,9 +565,6 @@ void gameLobbyDialogImpl::gameSelected(const QModelIndex &index) ++i; } - QTreeWidgetItem *header = treeWidget_connectedPlayers->headerItem(); - header->setText(0, tr("Connected players - Max. %1").arg(info.data.maxNumberOfPlayers)); - header->setData(0, Qt::UserRole, info.data.maxNumberOfPlayers); #ifdef __APPLE__ // Dirty workaround for a Qt redraw bug on Mac OS. treeWidget_connectedPlayers->setFocus(); @@ -743,8 +737,8 @@ void gameLobbyDialogImpl::refreshGameStats() ++it; } - label_openGamesCounter->setText("| "+tr("running games: %1").arg(runningGamesCounter)); - label_runningGamesCounter->setText("| "+tr("open games: %1").arg(openGamesCounter)); + label_openGamesCounter->setText(" | "+tr("running games: %1").arg(runningGamesCounter)); + label_runningGamesCounter->setText(" | "+tr("open games: %1").arg(openGamesCounter)); //refresh joinAnyGameButton state joinAnyGameButtonRefresh(); @@ -796,6 +790,11 @@ void gameLobbyDialogImpl::gameAddPlayer(unsigned gameId, unsigned playerId) } } +void gameLobbyDialogImpl::gameAddSpectator(unsigned, unsigned) +{ + qDebug("jojo GameADDSpecator"); +} + void gameLobbyDialogImpl::gameRemovePlayer(unsigned gameId, unsigned playerId) { if (!inGame) { @@ -832,6 +831,11 @@ void gameLobbyDialogImpl::gameRemovePlayer(unsigned gameId, unsigned playerId) } } +void gameLobbyDialogImpl::gameRemoveSpectator(unsigned, unsigned) +{ + qDebug("jojo GameRemoveSpecator"); +} + void gameLobbyDialogImpl::updateStats(ServerStats /*stats*/) { refreshPlayerStats(); @@ -843,11 +847,7 @@ void gameLobbyDialogImpl::clearDialog() groupBox_GameInfo->setEnabled(false); currentGameName = ""; - QTreeWidgetItem *header = treeWidget_connectedPlayers->headerItem(); - header->setText(0, tr("Connected players")); - header->setData(0, Qt::UserRole, 0); - - showGameDescription(FALSE); + showGameDescription(false); label_typeIcon->setText(" "); label_typeText->setText(" "); label_SmallBlind->setText(""); @@ -911,17 +911,18 @@ void gameLobbyDialogImpl::clearDialog() isGameAdministrator = false; myPlayerId = 0; - showGameDescription(FALSE); + showGameDescription(false); label_connectedPlayersCounter->setText(tr("connected players: %1").arg(0)); - label_openGamesCounter->setText("| "+tr("running games: %1").arg(0)); - label_runningGamesCounter->setText("| "+tr("open games: %1").arg(0)); + label_openGamesCounter->setText(" | "+tr("running games: %1").arg(0)); + label_runningGamesCounter->setText(" | "+tr("open games: %1").arg(0)); readDialogSettings(); } void gameLobbyDialogImpl::checkPlayerQuantity() { + tabWidget_playerSpectators->setTabText(0, tr("Players (%1)").arg(treeWidget_connectedPlayers->topLevelItemCount())); assert(mySession); GameInfo info(mySession->getClientGameInfo(mySession->getClientCurrentGameId())); @@ -935,7 +936,7 @@ void gameLobbyDialogImpl::checkPlayerQuantity() if (treeWidget_connectedPlayers->topLevelItemCount() >= 2) { pushButton_StartGame->setEnabled(true); - if(treeWidget_connectedPlayers->topLevelItemCount() == treeWidget_connectedPlayers->headerItem()->data(0, Qt::UserRole).toInt()) { + if(treeWidget_connectedPlayers->topLevelItemCount() == info.data.maxNumberOfPlayers) { blinkingButtonAnimationTimer->start(); } else { blinkingButtonAnimationTimer->stop(); @@ -951,7 +952,7 @@ void gameLobbyDialogImpl::checkPlayerQuantity() } //general actions - if(treeWidget_connectedPlayers->topLevelItemCount() < treeWidget_connectedPlayers->headerItem()->data(0, Qt::UserRole).toInt()) { + if(treeWidget_connectedPlayers->topLevelItemCount() < info.data.maxNumberOfPlayers) { autoStartTimerOverlay->hide(); autoStartTimer->stop(); } @@ -1040,6 +1041,17 @@ void gameLobbyDialogImpl::addConnectedPlayer(unsigned playerId, QString playerNa refreshConnectedPlayerAvatars(); } +void gameLobbyDialogImpl::addConnectedSpectator(unsigned spectatorId, QString spectatorName) { + + qDebug("JOJO add spect"); + QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget_connectedSpectators, 0); + item->setData(0, Qt::UserRole, spectatorId); + item->setData(0, Qt::DisplayRole, spectatorName); + tabWidget_playerSpectators->setTabText(1, tr("Spectators (%1)").arg(treeWidget_connectedSpectators->topLevelItemCount())); +// if (inGame) +// refreshConnectedSpecatatorAvatars(); +} + void gameLobbyDialogImpl::updatePlayer(unsigned playerId, QString newPlayerName) { @@ -1095,7 +1107,7 @@ void gameLobbyDialogImpl::updatePlayer(unsigned playerId, QString newPlayerName) void gameLobbyDialogImpl::removePlayer(unsigned playerId, QString) { - + qDebug("JOJO remove player"); QTreeWidgetItemIterator it(treeWidget_connectedPlayers); while (*it) { if ((*it)->data(0, Qt::UserRole) == playerId) { @@ -1104,9 +1116,22 @@ void gameLobbyDialogImpl::removePlayer(unsigned playerId, QString) } ++it; } - checkPlayerQuantity(); +} + +void gameLobbyDialogImpl::removeSpectator(unsigned spectatorId, QString) +{ + qDebug("JOJO remove spect"); + QTreeWidgetItemIterator it(treeWidget_connectedSpectators); + while (*it) { + if ((*it)->data(0, Qt::UserRole) == spectatorId) { + treeWidget_connectedSpectators->takeTopLevelItem(treeWidget_connectedSpectators->indexOfTopLevelItem(*it)); + break; + } + ++it; + } + tabWidget_playerSpectators->setTabText(1, tr("Spectators (%1)").arg(treeWidget_connectedSpectators->topLevelItemCount())); } void gameLobbyDialogImpl::playerLeftLobby(unsigned playerId) @@ -1237,15 +1262,12 @@ void gameLobbyDialogImpl::joinedGameDialogUpdate() break; } - showGameDescription(TRUE); + showGameDescription(true); label_SmallBlind->setText(QString("%L1").arg(info.data.firstSmallBlind)); label_StartCash->setText(QString("%L1").arg(info.data.startMoney)); updateDialogBlinds(info.data); label_GameTiming->setText(QString::number(info.data.playerActionTimeoutSec)+" "+tr("sec (action)")+"\n"+QString::number(info.data.delayBetweenHandsSec)+" "+tr("sec (hand delay)")); - QTreeWidgetItem *header = treeWidget_connectedPlayers->headerItem(); - header->setText(0, tr("Connected players - Max. %1").arg(info.data.maxNumberOfPlayers)); - header->setData(0, Qt::UserRole, info.data.maxNumberOfPlayers); } void gameLobbyDialogImpl::leftGameDialogUpdate() @@ -1258,11 +1280,7 @@ void gameLobbyDialogImpl::leftGameDialogUpdate() groupBox_GameInfo->setEnabled(false); currentGameName = ""; - QTreeWidgetItem *header = treeWidget_connectedPlayers->headerItem(); - header->setText(0, tr("Connected players")); - header->setData(0, Qt::UserRole, 0); - - showGameDescription(FALSE); + showGameDescription(false); label_typeIcon->setText(" "); label_typeText->setText(" "); label_SmallBlind->setText(""); @@ -1436,6 +1454,7 @@ void gameLobbyDialogImpl::showGameDescription(bool show) label_gameDesc5->show(); label_gameDesc6->show(); label_gameDesc7->show(); + checkPlayerQuantity(); } else { label_gameType->hide(); label_gameDesc2->hide(); @@ -1444,6 +1463,9 @@ void gameLobbyDialogImpl::showGameDescription(bool show) label_gameDesc5->hide(); label_gameDesc6->hide(); label_gameDesc7->hide(); + tabWidget_playerSpectators->setTabText(0, tr("Players (%1)").arg(0)); + tabWidget_playerSpectators->setTabText(1, tr("Spectators (%1)").arg(0)); + } } @@ -1480,8 +1502,8 @@ void gameLobbyDialogImpl::joinAnyGameButtonRefresh() ++it; } - if(openNonPrivateNonFullGamesCounter) pushButton_joinAnyGame->setEnabled(TRUE); - else pushButton_joinAnyGame->setEnabled(FALSE); + if(openNonPrivateNonFullGamesCounter) pushButton_joinAnyGame->setEnabled(true); + else pushButton_joinAnyGame->setEnabled(false); } void gameLobbyDialogImpl::reject() diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h index 2b7f39b7..dbf6b3f6 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h @@ -64,7 +64,7 @@ public: ~gameLobbyDialogImpl(); - void exec(); + int exec(); ChatTools *getMyChat() { return myChat; @@ -162,6 +162,10 @@ public slots: void reportBadGameName(); void adminActionCloseGame(); void adminActionTotalKickBan(); + void addConnectedSpectator(unsigned spectatorId, QString spectatorName); + void removeSpectator(unsigned spectatorId, QString); + void gameAddSpectator(unsigned, unsigned); + void gameRemoveSpectator(unsigned, unsigned); private: diff --git a/src/gui/qt/gamelobbydialog/mygamelisttreewidget.h b/src/gui/qt/gamelobbydialog/mygamelisttreewidget.h index e46d4b81..f97647e9 100644 --- a/src/gui/qt/gamelobbydialog/mygamelisttreewidget.h +++ b/src/gui/qt/gamelobbydialog/mygamelisttreewidget.h @@ -33,6 +33,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class MyGameListTreeWidget : public QTreeWidget { diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp index 885ddec0..23a5bcf3 100755 --- a/src/gui/qt/gametable/gametableimpl.cpp +++ b/src/gui/qt/gametable/gametableimpl.cpp @@ -71,7 +71,7 @@ using namespace std; gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent) - : QMainWindow(parent), myChat(NULL), myConfig(c), gameSpeed(0), myActionIsBet(0), myActionIsRaise(0), pushButtonBetRaiseIsChecked(FALSE), pushButtonCallCheckIsChecked(FALSE), pushButtonFoldIsChecked(FALSE), pushButtonAllInIsChecked(FALSE), myButtonsAreCheckable(FALSE), breakAfterCurrentHand(FALSE), currentGameOver(FALSE), betSliderChangedByInput(FALSE), guestMode(FALSE), myLastPreActionBetValue(0) + : QMainWindow(parent), myChat(NULL), myConfig(c), gameSpeed(0), myActionIsBet(0), myActionIsRaise(0), pushButtonBetRaiseIsChecked(false), pushButtonCallCheckIsChecked(false), pushButtonFoldIsChecked(false), pushButtonAllInIsChecked(false), myButtonsAreCheckable(false), breakAfterCurrentHand(false), currentGameOver(false), betSliderChangedByInput(false), guestMode(false), myLastPreActionBetValue(0) { int i; @@ -123,7 +123,7 @@ gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent) } //Flipside Animation noch nicht erledigt - flipHolecardsAllInAlreadyDone = FALSE; + flipHolecardsAllInAlreadyDone = false; #ifndef GUI_800x480 //Toolboxen verstecken? @@ -193,38 +193,38 @@ gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent) voteOnKickTimeoutTimer = new QTimer(this); enableCallCheckPushButtonTimer = new QTimer(this); - dealFlopCards0Timer->setSingleShot(TRUE); - dealFlopCards1Timer->setSingleShot(TRUE); - dealFlopCards2Timer->setSingleShot(TRUE); - dealFlopCards3Timer->setSingleShot(TRUE); - dealFlopCards4Timer->setSingleShot(TRUE); - dealFlopCards5Timer->setSingleShot(TRUE); - dealFlopCards6Timer->setSingleShot(TRUE); - dealTurnCards0Timer->setSingleShot(TRUE); - dealTurnCards1Timer->setSingleShot(TRUE); - dealTurnCards2Timer->setSingleShot(TRUE); - dealRiverCards0Timer->setSingleShot(TRUE); - dealRiverCards1Timer->setSingleShot(TRUE); - dealRiverCards2Timer->setSingleShot(TRUE); + dealFlopCards0Timer->setSingleShot(true); + dealFlopCards1Timer->setSingleShot(true); + dealFlopCards2Timer->setSingleShot(true); + dealFlopCards3Timer->setSingleShot(true); + dealFlopCards4Timer->setSingleShot(true); + dealFlopCards5Timer->setSingleShot(true); + dealFlopCards6Timer->setSingleShot(true); + dealTurnCards0Timer->setSingleShot(true); + dealTurnCards1Timer->setSingleShot(true); + dealTurnCards2Timer->setSingleShot(true); + dealRiverCards0Timer->setSingleShot(true); + dealRiverCards1Timer->setSingleShot(true); + dealRiverCards2Timer->setSingleShot(true); - nextPlayerAnimationTimer->setSingleShot(TRUE); - preflopAnimation1Timer->setSingleShot(TRUE); - preflopAnimation2Timer->setSingleShot(TRUE); - flopAnimation1Timer->setSingleShot(TRUE); - flopAnimation2Timer->setSingleShot(TRUE); - turnAnimation1Timer->setSingleShot(TRUE); - turnAnimation2Timer->setSingleShot(TRUE); - riverAnimation1Timer->setSingleShot(TRUE); - riverAnimation2Timer->setSingleShot(TRUE); + nextPlayerAnimationTimer->setSingleShot(true); + preflopAnimation1Timer->setSingleShot(true); + preflopAnimation2Timer->setSingleShot(true); + flopAnimation1Timer->setSingleShot(true); + flopAnimation2Timer->setSingleShot(true); + turnAnimation1Timer->setSingleShot(true); + turnAnimation2Timer->setSingleShot(true); + riverAnimation1Timer->setSingleShot(true); + riverAnimation2Timer->setSingleShot(true); - postRiverAnimation1Timer->setSingleShot(TRUE); - postRiverRunAnimation1Timer->setSingleShot(TRUE); - postRiverRunAnimation2Timer->setSingleShot(TRUE); - postRiverRunAnimation3Timer->setSingleShot(TRUE); - postRiverRunAnimation5Timer->setSingleShot(TRUE); - postRiverRunAnimation6Timer->setSingleShot(TRUE); + postRiverAnimation1Timer->setSingleShot(true); + postRiverRunAnimation1Timer->setSingleShot(true); + postRiverRunAnimation2Timer->setSingleShot(true); + postRiverRunAnimation3Timer->setSingleShot(true); + postRiverRunAnimation5Timer->setSingleShot(true); + postRiverRunAnimation6Timer->setSingleShot(true); - enableCallCheckPushButtonTimer->setSingleShot(TRUE); + enableCallCheckPushButtonTimer->setSingleShot(true); playerStarsArray[1][0]=label_Star10; playerStarsArray[2][0]=label_Star20; @@ -756,7 +756,7 @@ void gameTableImpl::applySettings(settingsDialogImpl* mySettingsDialog) (*(++it))->setMyName(mySettingsDialog->lineEdit_Opponent7Name->text().toUtf8().constData()); (*(++it))->setMyName(mySettingsDialog->lineEdit_Opponent8Name->text().toUtf8().constData()); (*(++it))->setMyName(mySettingsDialog->lineEdit_Opponent9Name->text().toUtf8().constData()); - mySettingsDialog->setPlayerNickIsChanged(FALSE); + mySettingsDialog->setPlayerNickIsChanged(false); refreshPlayerName(); } @@ -789,15 +789,15 @@ void gameTableImpl::applySettings(settingsDialogImpl* mySettingsDialog) if(currentState >= GAME_STATE_FLOP && currentState <= GAME_STATE_POST_RIVER) for(int i=0; i<3; i++) { QPixmap card = QPixmap::fromImage(QImage(myCardDeckStyle->getCurrentDir()+QString::number(tempBoardCardsArray[i], 10)+".png")); - boardCardsArray[i]->setPixmap(card, FALSE); + boardCardsArray[i]->setPixmap(card, false); } if(currentState >= GAME_STATE_TURN && currentState <= GAME_STATE_POST_RIVER) { QPixmap card = QPixmap::fromImage(QImage(myCardDeckStyle->getCurrentDir()+QString::number(tempBoardCardsArray[3], 10)+".png")); - boardCardsArray[3]->setPixmap(card, FALSE); + boardCardsArray[3]->setPixmap(card, false); } if(currentState == GAME_STATE_RIVER || currentState == GAME_STATE_POST_RIVER) { QPixmap card = QPixmap::fromImage(QImage(myCardDeckStyle->getCurrentDir()+QString::number(tempBoardCardsArray[4], 10)+".png")); - boardCardsArray[4]->setPixmap(card, FALSE); + boardCardsArray[4]->setPixmap(card, false); } } @@ -811,7 +811,7 @@ void gameTableImpl::applySettings(settingsDialogImpl* mySettingsDialog) for (j=1; jgetIsFlipside()) { - holeCardsArray[j][k]->setPixmap(flipside, TRUE); + holeCardsArray[j][k]->setPixmap(flipside, true); } } } @@ -827,17 +827,17 @@ void gameTableImpl::applySettings(settingsDialogImpl* mySettingsDialog) humanPlayer->getMyCards(tempCardsIntArray); if(myConfig->readConfigInt("AntiPeekMode")) { - holeCardsArray[0][0]->setPixmap(flipside, TRUE); + holeCardsArray[0][0]->setPixmap(flipside, true); tempCardsPixmapArray[0] = QPixmap::fromImage(QImage(myCardDeckStyle->getCurrentDir()+QString::number(tempCardsIntArray[0], 10)+".png")); holeCardsArray[0][0]->setHiddenFrontPixmap(tempCardsPixmapArray[0]); - holeCardsArray[0][1]->setPixmap(flipside, TRUE); + holeCardsArray[0][1]->setPixmap(flipside, true); tempCardsPixmapArray[1]= QPixmap::fromImage(QImage(myCardDeckStyle->getCurrentDir()+QString::number(tempCardsIntArray[1], 10)+".png")); holeCardsArray[0][1]->setHiddenFrontPixmap(tempCardsPixmapArray[1]); } else { tempCardsPixmapArray[0]= QPixmap::fromImage(QImage(myCardDeckStyle->getCurrentDir()+QString::number(tempCardsIntArray[0], 10)+".png")); - holeCardsArray[0][0]->setPixmap(tempCardsPixmapArray[0],FALSE); + holeCardsArray[0][0]->setPixmap(tempCardsPixmapArray[0],false); tempCardsPixmapArray[1]= QPixmap::fromImage(QImage(myCardDeckStyle->getCurrentDir()+QString::number(tempCardsIntArray[1], 10)+".png")); - holeCardsArray[0][1]->setPixmap(tempCardsPixmapArray[1],FALSE); + holeCardsArray[0][1]->setPixmap(tempCardsPixmapArray[1],false); } } } @@ -893,8 +893,8 @@ void gameTableImpl::initGui(int speed) label_Sets->setText(BetsString); label_Total->setText(TotalString); - tabs.groupBox_RightToolBox->setDisabled(FALSE); - tabs.groupBox_LeftToolBox->setDisabled(FALSE); + tabs.groupBox_RightToolBox->setDisabled(false); + tabs.groupBox_LeftToolBox->setDisabled(false); //set minimum gui speed to prevent gui lags on fast inet games if( myStartWindow->getSession()->isNetworkClientRunning() ) { @@ -912,8 +912,8 @@ void gameTableImpl::initGui(int speed) label_Pot->setText(PotString); label_Total->setText(TotalString+":"); label_Sets->setText(BetsString+":"); - groupBox_RightToolBox->setDisabled(FALSE); - groupBox_LeftToolBox->setDisabled(FALSE); + groupBox_RightToolBox->setDisabled(false); + groupBox_LeftToolBox->setDisabled(false); //set minimum gui speed to prevent gui lags on fast inet games if( myStartWindow->getSession()->isNetworkClientRunning() ) { @@ -1036,15 +1036,15 @@ void gameTableImpl::refreshPlayerName() switch(getCurrentSeatState((*it_c))) { case SEAT_ACTIVE: { - playerNameLabelArray[(*it_c)->getMyID()]->setText(nick, FALSE, guest, computerPlayer ); + playerNameLabelArray[(*it_c)->getMyID()]->setText(nick, false, guest, computerPlayer ); } break; case SEAT_AUTOFOLD: { - playerNameLabelArray[(*it_c)->getMyID()]->setText(nick, TRUE, guest, computerPlayer ); + playerNameLabelArray[(*it_c)->getMyID()]->setText(nick, true, guest, computerPlayer ); } break; case SEAT_STAYONTABLE: { - playerNameLabelArray[(*it_c)->getMyID()]->setText(nick, TRUE, guest, computerPlayer ); + playerNameLabelArray[(*it_c)->getMyID()]->setText(nick, true, guest, computerPlayer ); } break; case SEAT_CLEAR: { @@ -1097,12 +1097,12 @@ void gameTableImpl::refreshPlayerAvatar() break; case SEAT_AUTOFOLD: { // qDebug() << seatPlace << "AVATAR AUTOFOLD"; - playerAvatarLabelArray[(*it_c)->getMyID()]->setPixmapAndCountry(avatarPic, countryString, seatPlace, TRUE); + playerAvatarLabelArray[(*it_c)->getMyID()]->setPixmapAndCountry(avatarPic, countryString, seatPlace, true); } break; case SEAT_STAYONTABLE: { // qDebug() << seatPlace << "AVATAR STAYONTABLE"; - playerAvatarLabelArray[(*it_c)->getMyID()]->setPixmapAndCountry(avatarPic, countryString, seatPlace, TRUE); + playerAvatarLabelArray[(*it_c)->getMyID()]->setPixmapAndCountry(avatarPic, countryString, seatPlace, true); } break; case SEAT_CLEAR: { @@ -1165,8 +1165,8 @@ void gameTableImpl::refreshAction(int playerID, int playerAction) if ((*it_c)->getMyAction()==1) { if((*it_c)->getMyID() != 0) { - holeCardsArray[(*it_c)->getMyID()][0]->setPixmap(onePix, FALSE); - holeCardsArray[(*it_c)->getMyID()][1]->setPixmap(onePix, FALSE); + holeCardsArray[(*it_c)->getMyID()][0]->setPixmap(onePix, false); + holeCardsArray[(*it_c)->getMyID()][1]->setPixmap(onePix, false); } } } @@ -1190,8 +1190,8 @@ void gameTableImpl::refreshAction(int playerID, int playerAction) holeCardsArray[0][0]->startFadeOut(10); holeCardsArray[0][1]->startFadeOut(10); } else { - holeCardsArray[playerID][0]->setPixmap(onePix, FALSE); - holeCardsArray[playerID][1]->setPixmap(onePix, FALSE); + holeCardsArray[playerID][0]->setPixmap(onePix, false); + holeCardsArray[playerID][1]->setPixmap(onePix, false); } } } @@ -1270,8 +1270,8 @@ void gameTableImpl::refreshGroupbox(int playerID, int status) userWidgetsArray[j]->hide(); } //disable anti-peek front after player is out - holeCardsArray[0][0]->signalFastFlipCards(FALSE); - holeCardsArray[0][1]->signalFastFlipCards(FALSE); + holeCardsArray[0][0]->signalFastFlipCards(false); + holeCardsArray[0][1]->signalFastFlipCards(false); } myGameTableStyle->setPlayerSeatInactiveStyle(groupBoxArray[(*it_c)->getMyID()]); } @@ -1288,8 +1288,8 @@ void gameTableImpl::refreshGroupbox(int playerID, int status) userWidgetsArray[j]->hide(); } //disable anti-peek front after player is out - holeCardsArray[0][0]->signalFastFlipCards(FALSE); - holeCardsArray[0][1]->signalFastFlipCards(FALSE); + holeCardsArray[0][0]->signalFastFlipCards(false); + holeCardsArray[0][1]->signalFastFlipCards(false); } myGameTableStyle->setPlayerSeatInactiveStyle(groupBoxArray[playerID]); } @@ -1412,7 +1412,7 @@ void gameTableImpl::dealHoleCards() int i,k; for (i=0; isetFadeOutAction(FALSE); + holeCardsArray[i][k]->setFadeOutAction(false); holeCardsArray[i][k]->stopFlipCardsAnimation(); } } @@ -1436,26 +1436,26 @@ void gameTableImpl::dealHoleCards() if (( (*it_c)->getMyID() == 0)/* || DEBUG_MODE*/) { tempCardsPixmapArray[j].load(myCardDeckStyle->getCurrentDir()+QString::number(tempCardsIntArray[j], 10)+".png"); if(myConfig->readConfigInt("AntiPeekMode")) { - holeCardsArray[(*it_c)->getMyID()][j]->setPixmap(flipside, TRUE); + holeCardsArray[(*it_c)->getMyID()][j]->setPixmap(flipside, true); holeCardsArray[(*it_c)->getMyID()][j]->setFront(flipside); holeCardsArray[(*it_c)->getMyID()][j]->setHiddenFrontPixmap(tempCardsPixmapArray[j]); } else { - holeCardsArray[(*it_c)->getMyID()][j]->setPixmap(tempCardsPixmapArray[j],FALSE); + holeCardsArray[(*it_c)->getMyID()][j]->setPixmap(tempCardsPixmapArray[j],false); holeCardsArray[(*it_c)->getMyID()][j]->setFront(tempCardsPixmapArray[j]); } } else { - holeCardsArray[(*it_c)->getMyID()][j]->setPixmap(flipside, TRUE); + holeCardsArray[(*it_c)->getMyID()][j]->setPixmap(flipside, true); holeCardsArray[(*it_c)->getMyID()][j]->setFlipsidePix(flipside); } } else { - holeCardsArray[(*it_c)->getMyID()][j]->setPixmap(onePix, FALSE); + holeCardsArray[(*it_c)->getMyID()][j]->setPixmap(onePix, false); } } } //fix press mouse button during bankrupt with anti-peek-mode - this->mouseOverFlipCards(FALSE); + this->mouseOverFlipCards(false); //refresh CardsChanceMonitor Tool refreshCardsChance(GAME_STATE_PREFLOP); @@ -1465,12 +1465,12 @@ void gameTableImpl::dealBeRoCards(int myBeRoID) { uncheckMyButtons(); - myButtonsCheckable(FALSE); + myButtonsCheckable(false); resetMyButtonsCheckStateMemory(); clearMyButtons(); - horizontalSlider_bet->setDisabled(TRUE); - spinBox_betValue->setDisabled(TRUE); + horizontalSlider_bet->setDisabled(true); + spinBox_betValue->setDisabled(true); switch(myBeRoID) { @@ -1501,21 +1501,21 @@ void gameTableImpl::dealFlopCards0() void gameTableImpl::dealFlopCards1() { - boardCardsArray[0]->setPixmap(flipside, TRUE); + boardCardsArray[0]->setPixmap(flipside, true); dealFlopCards1Timer->start(dealCardsSpeed); } void gameTableImpl::dealFlopCards2() { - boardCardsArray[1]->setPixmap(flipside, TRUE); + boardCardsArray[1]->setPixmap(flipside, true); dealFlopCards2Timer->start(dealCardsSpeed); } void gameTableImpl::dealFlopCards3() { - boardCardsArray[2]->setPixmap(flipside, TRUE); + boardCardsArray[2]->setPixmap(flipside, true); dealFlopCards3Timer->start(dealCardsSpeed); } @@ -1534,7 +1534,7 @@ void gameTableImpl::dealFlopCards4() } else { //without Eye-Candy boardCardsArray[0]->setFront(card); - boardCardsArray[0]->setPixmap(card, FALSE); + boardCardsArray[0]->setPixmap(card, false); } dealFlopCards4Timer->start(dealCardsSpeed); } @@ -1553,7 +1553,7 @@ void gameTableImpl::dealFlopCards5() } else { //without Eye-Candy boardCardsArray[1]->setFront(card); - boardCardsArray[1]->setPixmap(card, FALSE); + boardCardsArray[1]->setPixmap(card, false); } dealFlopCards5Timer->start(dealCardsSpeed); } @@ -1572,7 +1572,7 @@ void gameTableImpl::dealFlopCards6() } else { //without Eye-Candy boardCardsArray[2]->setFront(card); - boardCardsArray[2]->setPixmap(card, FALSE); + boardCardsArray[2]->setPixmap(card, false); } // stable @@ -1598,7 +1598,7 @@ void gameTableImpl::dealTurnCards0() void gameTableImpl::dealTurnCards1() { - boardCardsArray[3]->setPixmap(flipside, TRUE); + boardCardsArray[3]->setPixmap(flipside, true); dealTurnCards1Timer->start(dealCardsSpeed); } @@ -1616,7 +1616,7 @@ void gameTableImpl::dealTurnCards2() } else { //without Eye-Candy boardCardsArray[3]->setFront(card); - boardCardsArray[3]->setPixmap(card, FALSE); + boardCardsArray[3]->setPixmap(card, false); } // stable @@ -1641,7 +1641,7 @@ void gameTableImpl::dealRiverCards0() void gameTableImpl::dealRiverCards1() { - boardCardsArray[4]->setPixmap(flipside, TRUE); + boardCardsArray[4]->setPixmap(flipside, true); // QTimer::singleShot(dealCardsSpeed, this, SLOT( dealRiverCards2() )); dealRiverCards1Timer->start(dealCardsSpeed); @@ -1661,7 +1661,7 @@ void gameTableImpl::dealRiverCards2() } else { //without Eye-Candy boardCardsArray[4]->setFront(card); - boardCardsArray[4]->setPixmap(card, FALSE); + boardCardsArray[4]->setPixmap(card, false); } // stable @@ -1700,15 +1700,15 @@ void gameTableImpl::provideMyActions(int mode) pushButton_Fold->setText(""); pushButton_AllIn->setText(""); - horizontalSlider_bet->setDisabled(TRUE); - spinBox_betValue->setDisabled(TRUE); + horizontalSlider_bet->setDisabled(true); + spinBox_betValue->setDisabled(true); - myButtonsCheckable(FALSE); + myButtonsCheckable(false); refreshActionButtonFKeyIndicator(1); } else { - horizontalSlider_bet->setEnabled(TRUE); - spinBox_betValue->setEnabled(TRUE); + horizontalSlider_bet->setEnabled(true); + spinBox_betValue->setEnabled(true); //show available actions on buttons if(currentHand->getCurrentRound() == 0) { // preflop @@ -1766,10 +1766,10 @@ void gameTableImpl::provideMyActions(int mode) pushButtonCallCheckString = ""; pushButtonFoldString = ""; pushButtonAllInString = ""; - horizontalSlider_bet->setDisabled(TRUE); - spinBox_betValue->setDisabled(TRUE); + horizontalSlider_bet->setDisabled(true); + spinBox_betValue->setDisabled(true); - myButtonsCheckable(FALSE); + myButtonsCheckable(false); } } @@ -1792,8 +1792,8 @@ void gameTableImpl::provideMyActions(int mode) if(pushButtonBetRaiseString == "") { - horizontalSlider_bet->setDisabled(TRUE); - spinBox_betValue->setDisabled(TRUE); + horizontalSlider_bet->setDisabled(true); + spinBox_betValue->setDisabled(true); } pushButton_Fold->setText(pushButtonFoldString); @@ -1859,10 +1859,10 @@ void gameTableImpl::provideMyActions(int mode) void gameTableImpl::meInAction() { - myButtonsCheckable(FALSE); + myButtonsCheckable(false); - horizontalSlider_bet->setEnabled(TRUE); - spinBox_betValue->setEnabled(TRUE); + horizontalSlider_bet->setEnabled(true); + spinBox_betValue->setEnabled(true); #ifdef GUI_800x480 if((myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_INTERNET || myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_NETWORK) && tabs.lineEdit_ChatInput->text() == "" && myConfig->readConfigInt("EnableBetInputFocusSwitch")) { @@ -1911,11 +1911,11 @@ void gameTableImpl::meInAction() //do remembered action if( pushButtonBetRaiseIsChecked ) { pushButton_BetRaise->click(); - pushButtonBetRaiseIsChecked = FALSE; + pushButtonBetRaiseIsChecked = false; } if( pushButtonCallCheckIsChecked ) { pushButton_CallCheck->click(); - pushButtonCallCheckIsChecked = FALSE; + pushButtonCallCheckIsChecked = false; } if( pushButtonFoldIsChecked ) { if(lastPushButtonFoldString == CheckString+" /\n"+FoldString && pushButton_CallCheck->text() == CheckString) { @@ -1923,11 +1923,11 @@ void gameTableImpl::meInAction() } else { pushButton_Fold->click(); } - pushButtonFoldIsChecked = FALSE; + pushButtonFoldIsChecked = false; } if( pushButtonAllInIsChecked ) { pushButton_AllIn->click(); - pushButtonAllInIsChecked = FALSE; + pushButtonAllInIsChecked = false; } //automatic mode @@ -1953,9 +1953,9 @@ void gameTableImpl::startTimeoutAnimation(int playerId, int timeoutSec) //beep for player 0 if(playerId) { - timeoutLabelArray[playerId]->startTimeOutAnimation(timeoutSec, FALSE); + timeoutLabelArray[playerId]->startTimeOutAnimation(timeoutSec, false); } else { - timeoutLabelArray[playerId]->startTimeOutAnimation(timeoutSec, TRUE); + timeoutLabelArray[playerId]->startTimeOutAnimation(timeoutSec, true); } } @@ -1973,8 +1973,8 @@ void gameTableImpl::disableMyButtons() clearMyButtons(); //clear userWidgets - horizontalSlider_bet->setDisabled(TRUE); - spinBox_betValue->setDisabled(TRUE); + horizontalSlider_bet->setDisabled(true); + spinBox_betValue->setDisabled(true); horizontalSlider_bet->setMinimum(0); horizontalSlider_bet->setMaximum(humanPlayer->getMyCash()); spinBox_betValue->setMinimum(0); @@ -2219,15 +2219,15 @@ void gameTableImpl::pushButtonBetRaiseClicked(bool checked) if (pushButton_BetRaise->isCheckable()) { if(checked) { - pushButton_CallCheck->setChecked(FALSE); - pushButton_Fold->setChecked(FALSE); - pushButton_AllIn->setChecked(FALSE); + pushButton_CallCheck->setChecked(false); + pushButton_Fold->setChecked(false); + pushButton_AllIn->setChecked(false); - pushButtonCallCheckIsChecked = FALSE; - pushButtonFoldIsChecked = FALSE; - pushButtonAllInIsChecked = FALSE; + pushButtonCallCheckIsChecked = false; + pushButtonFoldIsChecked = false; + pushButtonAllInIsChecked = false; - pushButtonBetRaiseIsChecked = TRUE; + pushButtonBetRaiseIsChecked = true; #ifdef GUI_800x480 if(!tabs.radioButton_manualAction->isChecked()) @@ -2239,7 +2239,7 @@ void gameTableImpl::pushButtonBetRaiseClicked(bool checked) // myLastPreActionBetValue = spinBox_betValue->value(); } else { - pushButtonBetRaiseIsChecked = FALSE; + pushButtonBetRaiseIsChecked = false; myLastPreActionBetValue = 0; } } else { @@ -2252,15 +2252,15 @@ void gameTableImpl::pushButtonCallCheckClicked(bool checked) if (pushButton_CallCheck->isCheckable()) { if(checked) { - pushButton_Fold->setChecked(FALSE); - pushButton_BetRaise->setChecked(FALSE); - pushButton_AllIn->setChecked(FALSE); + pushButton_Fold->setChecked(false); + pushButton_BetRaise->setChecked(false); + pushButton_AllIn->setChecked(false); - pushButtonAllInIsChecked = FALSE; - pushButtonFoldIsChecked = FALSE; - pushButtonBetRaiseIsChecked = FALSE; + pushButtonAllInIsChecked = false; + pushButtonFoldIsChecked = false; + pushButtonBetRaiseIsChecked = false; - pushButtonCallCheckIsChecked = TRUE; + pushButtonCallCheckIsChecked = true; #ifdef GUI_800x480 if(!tabs.radioButton_manualAction->isChecked()) @@ -2270,7 +2270,7 @@ void gameTableImpl::pushButtonCallCheckClicked(bool checked) radioButton_manualAction->click(); #endif } else { - pushButtonCallCheckIsChecked = FALSE; + pushButtonCallCheckIsChecked = false; } } else { myCallCheck(); @@ -2282,15 +2282,15 @@ void gameTableImpl::pushButtonFoldClicked(bool checked) if (pushButton_Fold->isCheckable()) { if(checked) { - pushButton_CallCheck->setChecked(FALSE); - pushButton_BetRaise->setChecked(FALSE); - pushButton_AllIn->setChecked(FALSE); + pushButton_CallCheck->setChecked(false); + pushButton_BetRaise->setChecked(false); + pushButton_AllIn->setChecked(false); - pushButtonAllInIsChecked = FALSE; - pushButtonCallCheckIsChecked = FALSE; - pushButtonBetRaiseIsChecked = FALSE; + pushButtonAllInIsChecked = false; + pushButtonCallCheckIsChecked = false; + pushButtonBetRaiseIsChecked = false; - pushButtonFoldIsChecked = TRUE; + pushButtonFoldIsChecked = true; #ifdef GUI_800x480 if(!tabs.radioButton_manualAction->isChecked()) @@ -2300,7 +2300,7 @@ void gameTableImpl::pushButtonFoldClicked(bool checked) radioButton_manualAction->click(); #endif } else { - pushButtonFoldIsChecked = FALSE; + pushButtonFoldIsChecked = false; } } else { myFold(); @@ -2312,15 +2312,15 @@ void gameTableImpl::pushButtonAllInClicked(bool checked) if (pushButton_AllIn->isCheckable()) { if(checked) { - pushButton_CallCheck->setChecked(FALSE); - pushButton_BetRaise->setChecked(FALSE); - pushButton_Fold->setChecked(FALSE); + pushButton_CallCheck->setChecked(false); + pushButton_BetRaise->setChecked(false); + pushButton_Fold->setChecked(false); - pushButtonFoldIsChecked = FALSE; - pushButtonCallCheckIsChecked = FALSE; - pushButtonBetRaiseIsChecked = FALSE; + pushButtonFoldIsChecked = false; + pushButtonCallCheckIsChecked = false; + pushButtonBetRaiseIsChecked = false; - pushButtonAllInIsChecked = TRUE; + pushButtonAllInIsChecked = true; #ifdef GUI_800x480 if(!tabs.radioButton_manualAction->isChecked()) @@ -2330,7 +2330,7 @@ void gameTableImpl::pushButtonAllInClicked(bool checked) radioButton_manualAction->click(); #endif } else { - pushButtonAllInIsChecked = FALSE; + pushButtonAllInIsChecked = false; } } else { myAllIn(); @@ -2499,12 +2499,12 @@ void gameTableImpl::postRiverRunAnimation2() { uncheckMyButtons(); - myButtonsCheckable(FALSE); + myButtonsCheckable(false); clearMyButtons(); resetMyButtonsCheckStateMemory(); - horizontalSlider_bet->setDisabled(TRUE); - spinBox_betValue->setDisabled(TRUE); + horizontalSlider_bet->setDisabled(true); + spinBox_betValue->setDisabled(true); boost::shared_ptr currentGame = myStartWindow->getSession()->getCurrentGame(); @@ -2535,7 +2535,7 @@ void gameTableImpl::postRiverRunAnimation2() } } //Wenn einmal umgedreht dann fertig!! - flipHolecardsAllInAlreadyDone = TRUE; + flipHolecardsAllInAlreadyDone = true; } else { for (it_c=activePlayerList->begin(); it_c!=activePlayerList->end(); ++it_c) { if((*it_c)->getMyAction() != PLAYER_ACTION_FOLD) { @@ -2589,70 +2589,70 @@ void gameTableImpl::postRiverRunAnimation3() int bestHandPos[5]; (*it_c)->getMyBestHandPosition(bestHandPos); - bool index0 = TRUE; + bool index0 = true; for(j=0; j<5; j++) { if (bestHandPos[j] == 0 ) { - index0 = FALSE; + index0 = false; } } if (index0) { holeCardsArray[(*it_c)->getMyID()][0]->startFadeOut(guiGameSpeed); /*cout << "Fade Out index0" << endl;*/ } //index 1 testen - bool index1 = TRUE; + bool index1 = true; for(j=0; j<5; j++) { if (bestHandPos[j] == 1 ) { - index1 = FALSE; + index1 = false; } } if (index1) { holeCardsArray[(*it_c)->getMyID()][1]->startFadeOut(guiGameSpeed); /*cout << "Fade Out index1" << endl;*/ } //index 2 testen - bool index2 = TRUE; + bool index2 = true; for(j=0; j<5; j++) { if (bestHandPos[j] == 2 ) { - index2 = FALSE; + index2 = false; } } if (index2) { boardCardsArray[0]->startFadeOut(guiGameSpeed); /*cout << "Fade Out index2" << endl;*/ } //index 3 testen - bool index3 = TRUE; + bool index3 = true; for(j=0; j<5; j++) { if (bestHandPos[j] == 3 ) { - index3 = FALSE; + index3 = false; } } if (index3) { boardCardsArray[1]->startFadeOut(guiGameSpeed); /*cout << "Fade Out index3" << endl;*/ } //index 4 testen - bool index4 = TRUE; + bool index4 = true; for(j=0; j<5; j++) { if (bestHandPos[j] == 4 ) { - index4 = FALSE; + index4 = false; } } if (index4) { boardCardsArray[2]->startFadeOut(guiGameSpeed); /*cout << "Fade Out index4" << endl;*/ } //index 5 testen - bool index5 = TRUE; + bool index5 = true; for(j=0; j<5; j++) { if (bestHandPos[j] == 5 ) { - index5 = FALSE; + index5 = false; } } if (index5) { boardCardsArray[3]->startFadeOut(guiGameSpeed); /*cout << "Fade Out index5" << endl;*/ } //index 6 testen - bool index6 = TRUE; + bool index6 = true; for(j=0; j<5; j++) { if (bestHandPos[j] == 6 ) { - index6 = FALSE; + index6 = false; } } if (index6) { @@ -2798,11 +2798,11 @@ void gameTableImpl::postRiverRunAnimation6() if( !DEBUG_MODE ) { if(myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_LOCAL) { - currentGameOver = TRUE; + currentGameOver = true; #ifdef GUI_800x480 - tabs.pushButton_break->setDisabled(FALSE); + tabs.pushButton_break->setDisabled(false); #else - pushButton_break->setDisabled(FALSE); + pushButton_break->setDisabled(false); #endif QFontMetrics tempMetrics = this->fontMetrics(); int width = tempMetrics.width(tr("Start")); @@ -2846,7 +2846,7 @@ void gameTableImpl::showHoleCards(unsigned playerId, bool allIn) holeCardsArray[(*it_c)->getMyID()][j]->startFlipCards(guiGameSpeed, QPixmap::fromImage(QImage(myCardDeckStyle->getCurrentDir()+QString::number(tempCardsIntArray[j], 10)+".png")), flipside); } else { //without Eye-Candy tempCardsPixmapArray[j] = QPixmap::fromImage(QImage(myCardDeckStyle->getCurrentDir()+QString::number(tempCardsIntArray[j], 10)+".png")); - holeCardsArray[(*it_c)->getMyID()][j]->setPixmap(tempCardsPixmapArray[j], FALSE); + holeCardsArray[(*it_c)->getMyID()][j]->setPixmap(tempCardsPixmapArray[j], false); } } //set Player value (logging) @@ -2883,7 +2883,7 @@ void gameTableImpl::flipHolecardsAllIn() } //Wenn einmal umgedreht dann fertig!! - flipHolecardsAllInAlreadyDone = TRUE; + flipHolecardsAllInAlreadyDone = true; } } @@ -2898,9 +2898,9 @@ void gameTableImpl::startNewHand() if(myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_LOCAL) { #ifdef GUI_800x480 - tabs.pushButton_break->setDisabled(FALSE); + tabs.pushButton_break->setDisabled(false); #else - pushButton_break->setDisabled(FALSE); + pushButton_break->setDisabled(false); #endif QFontMetrics tempMetrics = this->fontMetrics(); @@ -2913,7 +2913,7 @@ void gameTableImpl::startNewHand() pushButton_break->setText(tr("Start")); #endif - breakAfterCurrentHand=FALSE; + breakAfterCurrentHand=false; blinkingStartButtonAnimationTimer->start(500); } @@ -2933,15 +2933,15 @@ void gameTableImpl::nextRoundCleanGui() // GUI bereinigen - Bilder löschen, Animationen unterbrechen QPixmap onePix = QPixmap::fromImage(QImage(myAppDataPath +"gfx/gui/misc/1px.png")); for (i=0; i<5; i++ ) { - boardCardsArray[i]->setPixmap(onePix, FALSE); - boardCardsArray[i]->setFadeOutAction(FALSE); + boardCardsArray[i]->setPixmap(onePix, false); + boardCardsArray[i]->setFadeOutAction(false); boardCardsArray[i]->stopFlipCardsAnimation(); } for (i=0; istopTimeOutAnimation(); for ( j=0; j<=1; j++ ) { - holeCardsArray[i][j]->setFadeOutAction(FALSE); + holeCardsArray[i][j]->setFadeOutAction(false); holeCardsArray[i][j]->stopFlipCardsAnimation(); } } @@ -2955,10 +2955,10 @@ void gameTableImpl::nextRoundCleanGui() refreshAll(); - flipHolecardsAllInAlreadyDone = FALSE; + flipHolecardsAllInAlreadyDone = false; //Wenn Pause zwischen den Hands in der Konfiguration steht den Stop Button drücken! - if (myConfig->readConfigInt("PauseBetweenHands") /*&& blinkingStartButtonAnimationTimer->isActive() == FALSE*/ && myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_LOCAL) { + if (myConfig->readConfigInt("PauseBetweenHands") /*&& blinkingStartButtonAnimationTimer->isActive() == false*/ && myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_LOCAL) { #ifdef GUI_800x480 tabs.pushButton_break->click(); #else @@ -2967,11 +2967,11 @@ void gameTableImpl::nextRoundCleanGui() } else { //FIX STRG+N Bug #ifdef GUI_800x480 - tabs.pushButton_break->setEnabled(TRUE); + tabs.pushButton_break->setEnabled(true); #else - pushButton_break->setEnabled(TRUE); + pushButton_break->setEnabled(true); #endif - breakAfterCurrentHand=FALSE; + breakAfterCurrentHand=false; } //Clean breakbutton @@ -2997,13 +2997,13 @@ void gameTableImpl::nextRoundCleanGui() // statusBar()->clearMessage(); //fix press mouse button during bankrupt with anti-peek-mode - this->mouseOverFlipCards(FALSE); + this->mouseOverFlipCards(false); - horizontalSlider_bet->setDisabled(TRUE); - spinBox_betValue->setDisabled(TRUE); + horizontalSlider_bet->setDisabled(true); + spinBox_betValue->setDisabled(true); uncheckMyButtons(); - myButtonsCheckable(FALSE); + myButtonsCheckable(false); resetMyButtonsCheckStateMemory(); clearMyButtons(); pushButton_showMyCards->hide(); @@ -3067,8 +3067,8 @@ void gameTableImpl::breakButtonClicked() #ifdef GUI_800x480 if (tabs.pushButton_break->text() == tr("Stop")) { - tabs.pushButton_break->setDisabled(TRUE); - breakAfterCurrentHand=TRUE; + tabs.pushButton_break->setDisabled(true); + breakAfterCurrentHand=true; } else if (tabs.pushButton_break->text() == tr("Lobby")) { tabsButtonClose(); leaveCurrentNetworkGame(); @@ -3084,8 +3084,8 @@ void gameTableImpl::breakButtonClicked() tabs.pushButton_break->setText(tr("Stop")); #else if (pushButton_break->text() == tr("Stop")) { - pushButton_break->setDisabled(TRUE); - breakAfterCurrentHand=TRUE; + pushButton_break->setDisabled(true); + breakAfterCurrentHand=true; } else if (pushButton_break->text() == tr("Lobby")) { leaveCurrentNetworkGame(); } else if (pushButton_break->text() == tr("Start")) { @@ -3104,7 +3104,7 @@ void gameTableImpl::breakButtonClicked() //let the SoundEventHandler know that there is a new game mySoundEventHandler->newGameStarts(); - currentGameOver = FALSE; + currentGameOver = false; myStartWindow->callNewGameDialog(); //Bei Cancel nichts machen!!! } else { @@ -3118,7 +3118,7 @@ void gameTableImpl::keyPressEvent ( QKeyEvent * event ) // cout << event->key() << endl; - //bool ctrlPressed = FALSE; + //bool ctrlPressed = false; if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return ) { /*ENTER*/ if(spinBox_betValue->hasFocus()) { @@ -3171,7 +3171,7 @@ void gameTableImpl::keyPressEvent ( QKeyEvent * event ) if (event->key() == Qt::Key_Shift) { if(myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_LOCAL) { pushButton_break->click(); - //ctrlPressed = TRUE; + //ctrlPressed = true; } } // if (event->key() == Qt::Key_Escape && (myActionIsBet || myActionIsRaise)) { @@ -3502,7 +3502,7 @@ void gameTableImpl::localGameModification() int i; for (i=0; istopTimeOutAnimation(); - playerAvatarLabelArray[i]->setEnabledContextMenu(FALSE); + playerAvatarLabelArray[i]->setEnabledContextMenu(false); } #ifdef GUI_800x480 @@ -3560,9 +3560,9 @@ void gameTableImpl::networkGameModification() int i; for (i=0; isetEnabledContextMenu(TRUE); - playerAvatarLabelArray[i]->setVoteOnKickContextMenuEnabled(TRUE); - playerAvatarLabelArray[i]->setVoteRunning(FALSE); + playerAvatarLabelArray[i]->setEnabledContextMenu(true); + playerAvatarLabelArray[i]->setVoteOnKickContextMenuEnabled(true); + playerAvatarLabelArray[i]->setVoteRunning(false); } if(myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_INTERNET) { @@ -3635,11 +3635,11 @@ void gameTableImpl::updateMyButtonsState(int mode) boost::shared_ptr currentHand = myStartWindow->getSession()->getCurrentGame()->getCurrentHand(); if(currentHand->getPreviousPlayerID() == 0) { - myButtonsCheckable(FALSE); + myButtonsCheckable(false); clearMyButtons(); } else { if(currentHand->getSeatsList()->front()->getMyAction() != PLAYER_ACTION_ALLIN) { // dont show pre-actions after flip cards when allin - myButtonsCheckable(TRUE); + myButtonsCheckable(true); provideMyActions(mode); } } @@ -3648,20 +3648,20 @@ void gameTableImpl::updateMyButtonsState(int mode) void gameTableImpl::uncheckMyButtons() { - pushButton_BetRaise->setChecked(FALSE); - pushButton_CallCheck->setChecked(FALSE); - pushButton_Fold->setChecked(FALSE); - pushButton_AllIn->setChecked(FALSE); + pushButton_BetRaise->setChecked(false); + pushButton_CallCheck->setChecked(false); + pushButton_Fold->setChecked(false); + pushButton_AllIn->setChecked(false); } void gameTableImpl::resetMyButtonsCheckStateMemory() { - pushButtonCallCheckIsChecked = FALSE; - pushButtonFoldIsChecked = FALSE; - pushButtonAllInIsChecked = FALSE; - pushButtonBetRaiseIsChecked = FALSE; + pushButtonCallCheckIsChecked = false; + pushButtonFoldIsChecked = false; + pushButtonAllInIsChecked = false; + pushButtonBetRaiseIsChecked = false; } void gameTableImpl::clearMyButtons() @@ -3685,23 +3685,23 @@ void gameTableImpl::myButtonsCheckable(bool state) // exception: full bet rule if(!currentHand->getCurrentBeRo()->getFullBetRule()) { - pushButton_BetRaise->setCheckable(TRUE); + pushButton_BetRaise->setCheckable(true); } - pushButton_CallCheck->setCheckable(TRUE); - pushButton_Fold->setCheckable(TRUE); - pushButton_AllIn->setCheckable(TRUE); + pushButton_CallCheck->setCheckable(true); + pushButton_Fold->setCheckable(true); + pushButton_AllIn->setCheckable(true); //design myGameTableStyle->setButtonsStyle(pushButton_BetRaise, pushButton_CallCheck, pushButton_Fold, pushButton_AllIn, 2); - myButtonsAreCheckable = TRUE; + myButtonsAreCheckable = true; } else { //not checkable - pushButton_BetRaise->setCheckable(FALSE); - pushButton_CallCheck->setCheckable(FALSE); - pushButton_Fold->setCheckable(FALSE); - pushButton_AllIn->setCheckable(FALSE); + pushButton_BetRaise->setCheckable(false); + pushButton_CallCheck->setCheckable(false); + pushButton_Fold->setCheckable(false); + pushButton_AllIn->setCheckable(false); QString hover; if(pushButton_AllIn->text()==AllInString) { @@ -3710,7 +3710,7 @@ void gameTableImpl::myButtonsCheckable(bool state) myGameTableStyle->setButtonsStyle(pushButton_BetRaise, pushButton_CallCheck, pushButton_Fold, pushButton_AllIn, 1); } - myButtonsAreCheckable = FALSE; + myButtonsAreCheckable = false; } } @@ -3760,7 +3760,7 @@ void gameTableImpl::changeSpinBoxBetValue(int value) { if(betSliderChangedByInput) { //prevent interval cutting of spinBox_betValue input from code below - betSliderChangedByInput = FALSE; + betSliderChangedByInput = false; } else { if(horizontalSlider_bet->value() == horizontalSlider_bet->maximum()) { @@ -3798,16 +3798,16 @@ void gameTableImpl::spinBoxBetValueChanged(int value) if(value > horizontalSlider_bet->maximum()) { // print the maximum pushButton_BetRaise->setText(betRaise + "\n$" + QString("%L1").arg(horizontalSlider_bet->maximum())); - betSliderChangedByInput = TRUE; + betSliderChangedByInput = true; horizontalSlider_bet->setValue(horizontalSlider_bet->maximum()); } else { // really print the value pushButton_BetRaise->setText(betRaise + "\n$" + QString("%L1").arg(value)); - betSliderChangedByInput = TRUE; + betSliderChangedByInput = true; horizontalSlider_bet->setValue(value); } } else { // print the minimum pushButton_BetRaise->setText(betRaise + "\n$" + QString("%L1").arg(horizontalSlider_bet->minimum())); - betSliderChangedByInput = TRUE; + betSliderChangedByInput = true; horizontalSlider_bet->setValue(horizontalSlider_bet->minimum()); } } @@ -3882,7 +3882,7 @@ void gameTableImpl::startVoteOnKick(unsigned playerId, unsigned voteStarterPlaye int i; for (i=0; isetVoteRunning(TRUE); + playerAvatarLabelArray[i]->setVoteRunning(true); } } @@ -3924,7 +3924,7 @@ void gameTableImpl::endVoteOnKick() int i; for (i=0; isetVoteRunning(FALSE); + playerAvatarLabelArray[i]->setVoteRunning(false); } } diff --git a/src/gui/qt/gametable/gametableimpl.h b/src/gui/qt/gametable/gametableimpl.h index 1f1a00ea..bea8e5f9 100755 --- a/src/gui/qt/gametable/gametableimpl.h +++ b/src/gui/qt/gametable/gametableimpl.h @@ -44,6 +44,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class guiLog; class ChatTools; diff --git a/src/gui/qt/gametable/log/guilog.h b/src/gui/qt/gametable/log/guilog.h index 3b7c338e..41cdca5a 100644 --- a/src/gui/qt/gametable/log/guilog.h +++ b/src/gui/qt/gametable/log/guilog.h @@ -41,6 +41,9 @@ #include #include #include +#if QT_VERSION >= 0x050000 + #include +#endif struct result_struct { char **result_Session; diff --git a/src/gui/qt/gametable/myactionbutton.h b/src/gui/qt/gametable/myactionbutton.h index 6a377051..b92a862e 100644 --- a/src/gui/qt/gametable/myactionbutton.h +++ b/src/gui/qt/gametable/myactionbutton.h @@ -33,6 +33,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class GameTableStyleReader; diff --git a/src/gui/qt/gametable/myavatarlabel.cpp b/src/gui/qt/gametable/myavatarlabel.cpp index 7af36483..363e4057 100644 --- a/src/gui/qt/gametable/myavatarlabel.cpp +++ b/src/gui/qt/gametable/myavatarlabel.cpp @@ -42,7 +42,7 @@ using namespace std; MyAvatarLabel::MyAvatarLabel(QGroupBox* parent) - : QLabel(parent), voteRunning(FALSE), transparent(FALSE) + : QLabel(parent), voteRunning(false), transparent(false) { myContextMenu = new QMenu; @@ -86,9 +86,9 @@ void MyAvatarLabel::contextMenuEvent ( QContextMenuEvent *event ) GameInfo info(myW->getSession()->getClientGameInfo(myW->getSession()->getClientCurrentGameId())); if(activePlayerCounter > 2 && !voteRunning && info.data.gameType != GAME_TYPE_RANKING && !myW->getGuestMode()) { - setVoteOnKickContextMenuEnabled(TRUE); + setVoteOnKickContextMenuEnabled(true); } else { - setVoteOnKickContextMenuEnabled(FALSE); + setVoteOnKickContextMenuEnabled(false); } action_IgnorePlayer->setEnabled(true); @@ -110,9 +110,9 @@ void MyAvatarLabel::contextMenuEvent ( QContextMenuEvent *event ) } if(myW->getSession()->getGameType() == Session::GAME_TYPE_INTERNET && !((*it_c)->getMyAvatar().empty()) ) { - action_ReportBadAvatar->setVisible(TRUE); + action_ReportBadAvatar->setVisible(true); } else { - action_ReportBadAvatar->setVisible(FALSE); + action_ReportBadAvatar->setVisible(false); } } j++; @@ -214,7 +214,7 @@ void MyAvatarLabel::refreshStars() for (seatPlace=0,it_c=seatsList->begin(); it_c!=seatsList->end(); ++it_c, seatPlace++) { for(int i=1; i<=5; i++)myW->playerStarsArray[i][seatPlace]->setText(""); if(myW->myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_INTERNET && !myW->getSession()->getClientPlayerInfo((*it_c)->getMyUniqueID()).isGuest && (*it_c)->getMyType() != PLAYER_TYPE_COMPUTER) { - if((*it_c)->getMyStayOnTableStatus() == TRUE && (*it_c)->getMyName()!="" && seatPlace!=0) { + if((*it_c)->getMyStayOnTableStatus() == true && (*it_c)->getMyName()!="" && seatPlace!=0) { int playerStars=getPlayerRating(QString::fromUtf8((*it_c)->getMyName().c_str())); for(int i=1; i<=5; i++) { myW->playerStarsArray[i][seatPlace]->setText(""); @@ -234,7 +234,7 @@ void MyAvatarLabel::refreshTooltips() int seatPlace; PlayerList seatsList = currentGame->getSeatsList(); for (seatPlace=0,it_c=seatsList->begin(); it_c!=seatsList->end(); ++it_c, seatPlace++) { - if((*it_c)->getMyStayOnTableStatus() == TRUE || (*it_c)->getMyActiveStatus()) { + if((*it_c)->getMyStayOnTableStatus() == true || (*it_c)->getMyActiveStatus()) { bool computerPlayer = false; if((*it_c)->getMyType() == PLAYER_TYPE_COMPUTER) { computerPlayer = true; diff --git a/src/gui/qt/gametable/myavatarlabel.h b/src/gui/qt/gametable/myavatarlabel.h index 25db41b9..1065e923 100644 --- a/src/gui/qt/gametable/myavatarlabel.h +++ b/src/gui/qt/gametable/myavatarlabel.h @@ -35,6 +35,9 @@ #include "startwindowimpl.h" #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class gameTableImpl; class startWindowImpl; @@ -65,8 +68,8 @@ public slots: void setVoteRunning ( bool theValue ) { voteRunning = theValue; } - void setPixmap ( const QPixmap &, const bool = FALSE); - void setPixmapAndCountry ( const QPixmap &, QString country, int seatPlace, const bool = FALSE); + void setPixmap ( const QPixmap &, const bool = false); + void setPixmapAndCountry ( const QPixmap &, QString country, int seatPlace, const bool = false); void setPixmapPath ( const QString theValue) { myPath = theValue; } diff --git a/src/gui/qt/gametable/mycardspixmaplabel.cpp b/src/gui/qt/gametable/mycardspixmaplabel.cpp index 1543bf0b..4fdbb5a3 100755 --- a/src/gui/qt/gametable/mycardspixmaplabel.cpp +++ b/src/gui/qt/gametable/mycardspixmaplabel.cpp @@ -36,18 +36,18 @@ MyCardsPixmapLabel::MyCardsPixmapLabel(QGroupBox* parent) : QLabel(parent), myW(NULL) { - this->setMouseTracking(TRUE); + this->setMouseTracking(true); - fadeOutAction = FALSE; - flipCardsAction1 = FALSE; - flipCardsAction2 = FALSE; + fadeOutAction = false; + flipCardsAction1 = false; + flipCardsAction2 = false; - mousePress = FALSE; - fastFlipCardsFront = FALSE; + mousePress = false; + fastFlipCardsFront = false; // rotationIntervall = 0.03; - isFlipside = FALSE; + isFlipside = false; fadeOutTimer = new QTimer; connect(fadeOutTimer, SIGNAL(timeout()), this, SLOT(nextFadeOutFrame())); @@ -78,7 +78,7 @@ void MyCardsPixmapLabel::startFadeOut(int speed) } if(speed != 11) { - fadeOutAction = TRUE; + fadeOutAction = true; frameOpacity = 1.0; fadeOutTimer->start(40); } @@ -89,7 +89,7 @@ void MyCardsPixmapLabel::stopFadeOut() { fadeOutTimer->stop(); - fadeOutAction = FALSE; + fadeOutAction = false; frameOpacity = 1.0; update(); } @@ -105,7 +105,7 @@ void MyCardsPixmapLabel::nextFadeOutFrame() } else { fadeOutTimer->stop(); -// fadeOutAction = FALSE; +// fadeOutAction = false; } } @@ -115,8 +115,8 @@ void MyCardsPixmapLabel::startFlipCards(int speed, const QPixmap &frontPix, cons stopFadeOut(); - stopFlipCards = FALSE; - isFlipside = FALSE; + stopFlipCards = false; + isFlipside = false; QLabel::setPixmap(frontPix); @@ -140,7 +140,7 @@ void MyCardsPixmapLabel::startFlipCards(int speed, const QPixmap &frontPix, cons } if(speed != 11) { - flipCardsAction1 = TRUE; + flipCardsAction1 = true; flipCardsTimer->start(40); } @@ -150,9 +150,9 @@ void MyCardsPixmapLabel::stopFlipCardsAnimation() { flipCardsTimer->stop(); - flipCardsAction1 = FALSE; - flipCardsAction2 = FALSE; - stopFlipCards = TRUE; + flipCardsAction1 = false; + flipCardsAction2 = false; + stopFlipCards = true; update(); } @@ -165,15 +165,15 @@ void MyCardsPixmapLabel::nextFlipCardsFrame() update(); } else { if(flipCardsAction1) { - flipCardsAction1 = FALSE; - flipCardsAction2 = TRUE; + flipCardsAction1 = false; + flipCardsAction2 = true; } else { //dann front vergrößern if (frameFlipCardsAction2Size < 0.95 ) { frameFlipCardsAction2Size += flipCardsScaleIntervall; update(); } else { - flipCardsAction2 = FALSE; + flipCardsAction2 = false; flipCardsTimer->stop(); } @@ -243,10 +243,10 @@ void MyCardsPixmapLabel::fastFlipCards(bool front) { if (front) { - fastFlipCardsFront = TRUE; + fastFlipCardsFront = true; update(); } else { - fastFlipCardsFront = FALSE; + fastFlipCardsFront = false; update(); } } @@ -255,8 +255,8 @@ void MyCardsPixmapLabel::mousePressEvent(QMouseEvent * event) { if (!mousePress && objectName().contains("pixmapLabel_card0")) { - mousePress = TRUE; - myW->mouseOverFlipCards(TRUE); + mousePress = true; + myW->mouseOverFlipCards(true); } @@ -267,8 +267,8 @@ void MyCardsPixmapLabel::mouseReleaseEvent(QMouseEvent * event) { if (mousePress && objectName().contains("pixmapLabel_card0")) { - mousePress = FALSE; - myW->mouseOverFlipCards(FALSE); + mousePress = false; + myW->mouseOverFlipCards(false); } QLabel::mouseReleaseEvent(event); diff --git a/src/gui/qt/gametable/mycardspixmaplabel.h b/src/gui/qt/gametable/mycardspixmaplabel.h index de1f2e96..5cbd4272 100755 --- a/src/gui/qt/gametable/mycardspixmaplabel.h +++ b/src/gui/qt/gametable/mycardspixmaplabel.h @@ -35,6 +35,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class gameTableImpl; diff --git a/src/gui/qt/gametable/mycashlabel.h b/src/gui/qt/gametable/mycashlabel.h index 05ddf46f..3ae3cf05 100644 --- a/src/gui/qt/gametable/mycashlabel.h +++ b/src/gui/qt/gametable/mycashlabel.h @@ -35,6 +35,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class gameTableImpl; diff --git a/src/gui/qt/gametable/mychancelabel.h b/src/gui/qt/gametable/mychancelabel.h index 41f40177..120ab6ed 100644 --- a/src/gui/qt/gametable/mychancelabel.h +++ b/src/gui/qt/gametable/mychancelabel.h @@ -35,6 +35,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class gameTableImpl; class GameTableStyleReader; diff --git a/src/gui/qt/gametable/mylefttabwidget.h b/src/gui/qt/gametable/mylefttabwidget.h index 288ea889..2397a51e 100755 --- a/src/gui/qt/gametable/mylefttabwidget.h +++ b/src/gui/qt/gametable/mylefttabwidget.h @@ -33,7 +33,9 @@ #include #include - +#if QT_VERSION >= 0x050000 + #include +#endif class MyLeftTabWidget : public QTabWidget { diff --git a/src/gui/qt/gametable/mymenubar.h b/src/gui/qt/gametable/mymenubar.h index 01e14588..4b588905 100644 --- a/src/gui/qt/gametable/mymenubar.h +++ b/src/gui/qt/gametable/mymenubar.h @@ -33,6 +33,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class MyMenuBar : public QMenuBar { diff --git a/src/gui/qt/gametable/mynamelabel.h b/src/gui/qt/gametable/mynamelabel.h index 895a963e..9d62021c 100644 --- a/src/gui/qt/gametable/mynamelabel.h +++ b/src/gui/qt/gametable/mynamelabel.h @@ -35,6 +35,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class gameTableImpl; @@ -51,7 +54,7 @@ public: public slots: - void setText ( const QString &, bool = FALSE, bool = FALSE, bool = FALSE); + void setText ( const QString &, bool = false, bool = false, bool = false); private: QString myText; diff --git a/src/gui/qt/gametable/myrighttabwidget.h b/src/gui/qt/gametable/myrighttabwidget.h index aa7e89df..a822c88e 100755 --- a/src/gui/qt/gametable/myrighttabwidget.h +++ b/src/gui/qt/gametable/myrighttabwidget.h @@ -33,6 +33,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class MyRightTabWidget : public QTabWidget { diff --git a/src/gui/qt/gametable/mysetlabel.h b/src/gui/qt/gametable/mysetlabel.h index 0fd2f891..67491d85 100644 --- a/src/gui/qt/gametable/mysetlabel.h +++ b/src/gui/qt/gametable/mysetlabel.h @@ -35,6 +35,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class gameTableImpl; diff --git a/src/gui/qt/gametable/myslider.h b/src/gui/qt/gametable/myslider.h index b1abda3c..fdaa984d 100644 --- a/src/gui/qt/gametable/myslider.h +++ b/src/gui/qt/gametable/myslider.h @@ -32,6 +32,10 @@ #define MYSLIDER_H #include +#if QT_VERSION >= 0x050000 +#include +#endif + /* * This QSlider Extension was sponsored by: AZEVEDO Filipe aka Nox P@sNox * http://pasnox.tuxfamily.org diff --git a/src/gui/qt/gametable/mystatuslabel.cpp b/src/gui/qt/gametable/mystatuslabel.cpp index 1828669f..10ef9eb4 100755 --- a/src/gui/qt/gametable/mystatuslabel.cpp +++ b/src/gui/qt/gametable/mystatuslabel.cpp @@ -37,7 +37,7 @@ MyStatusLabel::MyStatusLabel(QGroupBox* parent) : QLabel(parent), myW(NULL), mousePress(false) { - mousePress = FALSE; + mousePress = false; } @@ -49,8 +49,8 @@ void MyStatusLabel::mousePressEvent(QMouseEvent * event) { if (!mousePress && objectName().contains("textLabel_Status0")) { - mousePress = TRUE; - myW->mouseOverFlipCards(TRUE); + mousePress = true; + myW->mouseOverFlipCards(true); } @@ -61,8 +61,8 @@ void MyStatusLabel::mouseReleaseEvent(QMouseEvent * event) { if (mousePress && objectName().contains("textLabel_Status0")) { - mousePress = FALSE; - myW->mouseOverFlipCards(FALSE); + mousePress = false; + myW->mouseOverFlipCards(false); } QLabel::mouseReleaseEvent(event); diff --git a/src/gui/qt/gametable/mystatuslabel.h b/src/gui/qt/gametable/mystatuslabel.h index 2fae6606..673b48c2 100755 --- a/src/gui/qt/gametable/mystatuslabel.h +++ b/src/gui/qt/gametable/mystatuslabel.h @@ -35,6 +35,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class gameTableImpl; diff --git a/src/gui/qt/gametable/mytimeoutlabel.cpp b/src/gui/qt/gametable/mytimeoutlabel.cpp index c5e78e38..04133c25 100644 --- a/src/gui/qt/gametable/mytimeoutlabel.cpp +++ b/src/gui/qt/gametable/mytimeoutlabel.cpp @@ -35,7 +35,7 @@ using namespace std; MyTimeoutLabel::MyTimeoutLabel(QGroupBox* parent) - : QLabel(parent), timeOutAnimation(FALSE), timeOutValue(0), timeOutFrame(0), waitFrames(0), timerIntervall(0), isBeep(0), isBeepPlayed(0) + : QLabel(parent), timeOutAnimation(false), timeOutValue(0), timeOutFrame(0), waitFrames(0), timerIntervall(0), isBeep(0), isBeepPlayed(0) { timeOutAnimationTimer = new QTimer; @@ -52,7 +52,7 @@ void MyTimeoutLabel::startTimeOutAnimation(int secs, bool beep) { if (secs >= 4) { // smaller timeouts may lead to errors/endless loops below - isBeepPlayed = FALSE; + isBeepPlayed = false; isBeep = beep; timeOutValue = secs; @@ -80,7 +80,7 @@ void MyTimeoutLabel::startTimeOutAnimation(int secs, bool beep) realTimer.start(); // std::cout << timerIntervall << endl; - timeOutAnimation = TRUE; + timeOutAnimation = true; timeOutAnimationTimer->start(timerIntervall); } } @@ -88,7 +88,7 @@ void MyTimeoutLabel::startTimeOutAnimation(int secs, bool beep) void MyTimeoutLabel::startTimeOutAnimationNow() { - timeOutAnimation = TRUE; + timeOutAnimation = true; timeOutAnimationTimer->start(83); } @@ -98,7 +98,7 @@ void MyTimeoutLabel::stopTimeOutAnimation() // timeOutAnimationKickOnTimer->stop(); timeOutAnimationTimer->stop(); - timeOutAnimation = FALSE; + timeOutAnimation = false; update(); } @@ -110,7 +110,7 @@ void MyTimeoutLabel::nextTimeOutAnimationFrame() //play beep after waitFrames one time if(isBeep && !isBeepPlayed) { myW->getMySoundEventHandler()->playSound("yourturn",0); - isBeepPlayed = TRUE; + isBeepPlayed = true; } //save gfx ressources and never play more the 10 pps unsigned int realTimerValue = realTimer.elapsed().total_milliseconds(); diff --git a/src/gui/qt/gametable/mytimeoutlabel.h b/src/gui/qt/gametable/mytimeoutlabel.h index a1dce5c3..05f29596 100644 --- a/src/gui/qt/gametable/mytimeoutlabel.h +++ b/src/gui/qt/gametable/mytimeoutlabel.h @@ -36,6 +36,9 @@ #include #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class gameTableImpl; diff --git a/src/gui/qt/gametable/startsplash/startsplash.h b/src/gui/qt/gametable/startsplash/startsplash.h index 377d3518..0d24b14c 100755 --- a/src/gui/qt/gametable/startsplash/startsplash.h +++ b/src/gui/qt/gametable/startsplash/startsplash.h @@ -33,6 +33,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class StartSplash : public QSplashScreen diff --git a/src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.cpp b/src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.cpp index 4052469e..8b8552df 100644 --- a/src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.cpp +++ b/src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.cpp @@ -94,7 +94,7 @@ void internetGameLoginDialogImpl::guestUserToggled(bool b) okButtonCheck(); } -void internetGameLoginDialogImpl::exec() +int internetGameLoginDialogImpl::exec() { if(myConfig->readConfigInt("InternetLoginMode") == 0) { @@ -117,7 +117,7 @@ void internetGameLoginDialogImpl::exec() lineEdit_password->setFocus(); } - QDialog::exec(); + return QDialog::exec(); } void internetGameLoginDialogImpl::accept() diff --git a/src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.h b/src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.h index 99620bcb..395ead4d 100644 --- a/src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.h +++ b/src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.h @@ -46,7 +46,7 @@ class internetGameLoginDialogImpl : public QDialog, public Ui::internetGameLogin public: internetGameLoginDialogImpl(QWidget *parent = 0, ConfigFile *c =0); - void exec(); + int exec(); void accept(); bool eventFilter(QObject *obj, QEvent *event); diff --git a/src/gui/qt/joinnetworkgamedialog/joinnetworkgamedialogimpl.cpp b/src/gui/qt/joinnetworkgamedialog/joinnetworkgamedialogimpl.cpp index 7aa05a8c..d735bfbb 100644 --- a/src/gui/qt/joinnetworkgamedialog/joinnetworkgamedialogimpl.cpp +++ b/src/gui/qt/joinnetworkgamedialog/joinnetworkgamedialogimpl.cpp @@ -51,9 +51,9 @@ joinNetworkGameDialogImpl::joinNetworkGameDialogImpl(QWidget *parent, ConfigFile if (myConfig->readConfigInt("CLA_NoWriteAccess")) { - pushButton_save->setDisabled(TRUE); - pushButton_delete->setDisabled(TRUE); - treeWidget->setDisabled(TRUE); + pushButton_save->setDisabled(true); + pushButton_delete->setDisabled(true); + treeWidget->setDisabled(true); } connect( lineEdit_ipAddress, SIGNAL( editingFinished()), this, SLOT( checkIp() ) ); @@ -67,7 +67,7 @@ joinNetworkGameDialogImpl::joinNetworkGameDialogImpl(QWidget *parent, ConfigFile } -void joinNetworkGameDialogImpl::exec() +int joinNetworkGameDialogImpl::exec() { bool toIntTrue; @@ -79,7 +79,7 @@ void joinNetworkGameDialogImpl::exec() QValidator *validator = new QRegExpValidator(rx, this); lineEdit_profileName->setValidator(validator); - pushButton_delete->setDisabled(TRUE); + pushButton_delete->setDisabled(true); lineEdit_ipAddress->setFocus(); @@ -114,7 +114,7 @@ void joinNetworkGameDialogImpl::exec() connectButtonTest(); - QDialog::exec(); + return QDialog::exec(); } @@ -126,14 +126,12 @@ void joinNetworkGameDialogImpl::startClient() void joinNetworkGameDialogImpl::fillServerProfileList() { - - treeWidget->clear(); TiXmlDocument doc(QString::fromUtf8(myServerProfilesFile.c_str()).toStdString()); if(!doc.LoadFile()) { MyMessageBox::warning(this, tr("Load Server-Profile-File Error"), - tr("Could not load server-profiles-file:\n"+QString::fromUtf8(myServerProfilesFile.c_str()).toAscii()), + tr("Could not load server-profiles-file:\n%1").arg(QString::fromUtf8(myServerProfilesFile.c_str())), QMessageBox::Close); } TiXmlHandle docHandle( &doc ); @@ -184,7 +182,7 @@ void joinNetworkGameDialogImpl::itemFillForm (QTreeWidgetItem* item, int /*colum TiXmlDocument doc(QString::fromUtf8(myServerProfilesFile.c_str()).toStdString()); if(!doc.LoadFile()) { MyMessageBox::warning(this, tr("Load Server-Profile-File Error"), - tr("Could not load server-profiles-file:\n"+QString::fromUtf8(myServerProfilesFile.c_str()).toAscii()), + tr("Could not load server-profiles-file:\n%1").arg(QString::fromUtf8(myServerProfilesFile.c_str())), QMessageBox::Close); } TiXmlHandle docHandle( &doc ); @@ -200,7 +198,7 @@ void joinNetworkGameDialogImpl::itemFillForm (QTreeWidgetItem* item, int /*colum } - pushButton_delete->setEnabled(TRUE); + pushButton_delete->setEnabled(true); } void joinNetworkGameDialogImpl::saveServerProfile() @@ -211,7 +209,7 @@ void joinNetworkGameDialogImpl::saveServerProfile() TiXmlDocument doc(QString::fromUtf8(myServerProfilesFile.c_str()).toStdString()); if(!doc.LoadFile()) { MyMessageBox::warning(this, tr("Load Server-Profile-File Error"), - tr("Could not load server-profiles-file:\n"+QString::fromUtf8(myServerProfilesFile.c_str()).toAscii()), + tr("Could not load server-profiles-file:\n%1").arg(QString::fromUtf8(myServerProfilesFile.c_str())), QMessageBox::Close); } TiXmlHandle docHandle( &doc ); @@ -268,7 +266,7 @@ void joinNetworkGameDialogImpl::saveServerProfile() if(!doc.SaveFile()) { MyMessageBox::warning(this, tr("Save Server-Profile-File Error"), - tr("Could not save server-profiles-file:\n"+QString::fromUtf8(myServerProfilesFile.c_str()).toAscii()), + tr("Could not save server-profiles-file:\n%1").arg(QString::fromUtf8(myServerProfilesFile.c_str())), QMessageBox::Close); } @@ -281,7 +279,7 @@ void joinNetworkGameDialogImpl::deleteServerProfile() TiXmlDocument doc(QString::fromUtf8(myServerProfilesFile.c_str()).toStdString()); if(!doc.LoadFile()) { MyMessageBox::warning(this, tr("Load Server-Profile-File Error"), - tr("Could not load server-profiles-file:\n"+QString::fromUtf8(myServerProfilesFile.c_str()).toAscii()), + tr("Could not load server-profiles-file:\n%1").arg(QString::fromUtf8(myServerProfilesFile.c_str())), QMessageBox::Close); } else { TiXmlHandle docHandle( &doc ); @@ -294,7 +292,7 @@ void joinNetworkGameDialogImpl::deleteServerProfile() if(!doc.SaveFile()) { MyMessageBox::warning(this, tr("Save Server-Profile-File Error"), - tr("Could not save server-profiles-file:\n"+QString::fromUtf8(myServerProfilesFile.c_str()).toAscii()), + tr("Could not save server-profiles-file:\n%1").arg(QString::fromUtf8(myServerProfilesFile.c_str())), QMessageBox::Close); } @@ -302,7 +300,7 @@ void joinNetworkGameDialogImpl::deleteServerProfile() fillServerProfileList(); } - pushButton_delete->setDisabled(TRUE); + pushButton_delete->setDisabled(true); } void joinNetworkGameDialogImpl::keyPressEvent ( QKeyEvent * event ) @@ -327,8 +325,8 @@ void joinNetworkGameDialogImpl::connectButtonTest() { if(lineEdit_ipAddress->text().isEmpty()) { - pushButton_connect->setDisabled(TRUE); + pushButton_connect->setDisabled(true); } else { - pushButton_connect->setDisabled(FALSE); + pushButton_connect->setDisabled(false); } } diff --git a/src/gui/qt/joinnetworkgamedialog/joinnetworkgamedialogimpl.h b/src/gui/qt/joinnetworkgamedialog/joinnetworkgamedialogimpl.h index 9a1708e6..30eb727d 100644 --- a/src/gui/qt/joinnetworkgamedialog/joinnetworkgamedialogimpl.h +++ b/src/gui/qt/joinnetworkgamedialog/joinnetworkgamedialogimpl.h @@ -54,7 +54,7 @@ public: ConfigFile *myConfig; std::string myServerProfilesFile; - void exec(); + int exec(); public slots: diff --git a/src/gui/qt/logfiledialog/logfiledialog.cpp b/src/gui/qt/logfiledialog/logfiledialog.cpp index ce36a540..913b560b 100644 --- a/src/gui/qt/logfiledialog/logfiledialog.cpp +++ b/src/gui/qt/logfiledialog/logfiledialog.cpp @@ -70,13 +70,14 @@ LogFileDialog::~LogFileDialog() delete ui; } -void LogFileDialog::exec() +int LogFileDialog::exec() { uploader->Run(); refreshLogFileList(); - QDialog::exec(); + int ret = QDialog::exec(); uploader->SignalTermination(); uploader->Join(THREAD_WAIT_INFINITE); + return ret; } void LogFileDialog::UploadCompleted(const std::string &filename, const std::string &returnMessage) @@ -99,7 +100,7 @@ void LogFileDialog::refreshLogFileList() QFileInfo currentSqliteLogFile(QString::fromStdString(myGuiLog->getMySqliteLogFileName())); - ui->treeWidget_logFiles->blockSignals(TRUE); + ui->treeWidget_logFiles->blockSignals(true); ui->treeWidget_logFiles->clear(); int i; for (i=0; i < dbFilesList.size(); i++) { @@ -119,7 +120,7 @@ void LogFileDialog::refreshLogFileList() ui->treeWidget_logFiles->addTopLevelItem(item); } ui->treeWidget_logFiles->sortItems(0, Qt::DescendingOrder); - ui->treeWidget_logFiles->blockSignals(FALSE); + ui->treeWidget_logFiles->blockSignals(false); ui->treeWidget_logFiles->setCurrentItem(ui->treeWidget_logFiles->topLevelItem(0)); } @@ -200,14 +201,14 @@ void LogFileDialog::showLogFilePreview(ShowLogMode mode) QTreeWidgetItem* selectedItem = ui->treeWidget_logFiles->currentItem(); if(mode == INIT_VIEW) { - ui->comboBox->blockSignals(TRUE); + ui->comboBox->blockSignals(true); ui->comboBox->clear(); QList gameIds = myGuiLog->getGameList(selectedItem->data(0, Qt::UserRole).toString()); QList::const_iterator it; for (it = gameIds.constBegin(); it != gameIds.constEnd(); ++it) { ui->comboBox->addItem(QString::number(*it)); } - ui->comboBox->blockSignals(FALSE); + ui->comboBox->blockSignals(false); } if(selectedItem) { @@ -249,7 +250,7 @@ void LogFileDialog::uploadFile() void LogFileDialog::uploadInProgressAnimationStart() { //const QString buttonText(tr("Upload in progress")); - ui->pushButton_analyseLogfile->setDisabled(TRUE); + ui->pushButton_analyseLogfile->setDisabled(true); QMovie *movie = new QMovie(":/gfx/loader.gif"); ui->label_animation->setMovie(movie); @@ -261,7 +262,7 @@ void LogFileDialog::uploadInProgressAnimationStart() void LogFileDialog::uploadInProgressAnimationStop() { - ui->pushButton_analyseLogfile->setDisabled(FALSE); + ui->pushButton_analyseLogfile->setDisabled(false); ui->label_animation->setMaximumWidth(0); ui->horizontalLayout_animation->setSpacing(0); diff --git a/src/gui/qt/logfiledialog/logfiledialog.h b/src/gui/qt/logfiledialog/logfiledialog.h index d53493d8..c542a499 100644 --- a/src/gui/qt/logfiledialog/logfiledialog.h +++ b/src/gui/qt/logfiledialog/logfiledialog.h @@ -61,7 +61,7 @@ public: void setGuiLog(guiLog *g) { myGuiLog = g; } - void exec(); + int exec(); virtual void UploadCompleted(const std::string &filename, const std::string &returnMessage); virtual void UploadError(const std::string &filename, const std::string &errorMessage); diff --git a/src/gui/qt/newlocalgamedialog/newgamedialogimpl.cpp b/src/gui/qt/newlocalgamedialog/newgamedialogimpl.cpp index d19a0068..1d2d4f94 100755 --- a/src/gui/qt/newlocalgamedialog/newgamedialogimpl.cpp +++ b/src/gui/qt/newlocalgamedialog/newgamedialogimpl.cpp @@ -47,7 +47,7 @@ newGameDialogImpl::newGameDialogImpl(QMainWindow *parent, ConfigFile *c) } -void newGameDialogImpl::exec() +int newGameDialogImpl::exec() { spinBox_quantityPlayers->setValue(myConfig->readConfigInt("NumberOfPlayers")); @@ -79,7 +79,7 @@ void newGameDialogImpl::exec() myChangeCompleteBlindsDialog->spinBox_afterThisAlwaysRaiseValue->setValue(myConfig->readConfigInt("AfterMBAlwaysRaiseValue")); myChangeCompleteBlindsDialog->radioButton_afterThisStayAtLastBlind->setChecked(myConfig->readConfigInt("AfterMBStayAtLastBlind")); - QDialog::exec(); + return QDialog::exec(); } void newGameDialogImpl::callChangeBlindsDialog(bool show) @@ -89,7 +89,7 @@ void newGameDialogImpl::callChangeBlindsDialog(bool show) myChangeCompleteBlindsDialog->exec(); if(myChangeCompleteBlindsDialog->result() == QDialog::Accepted ) {} else { - radioButton_useSavedBlindsSettings->setChecked(TRUE); + radioButton_useSavedBlindsSettings->setChecked(true); } } diff --git a/src/gui/qt/newlocalgamedialog/newgamedialogimpl.h b/src/gui/qt/newlocalgamedialog/newgamedialogimpl.h index 71b17b49..3faf1e2d 100755 --- a/src/gui/qt/newlocalgamedialog/newgamedialogimpl.h +++ b/src/gui/qt/newlocalgamedialog/newgamedialogimpl.h @@ -39,7 +39,9 @@ #include #include - +#if QT_VERSION >= 0x050000 + #include +#endif class ConfigFile; class changeCompleteBlindsDialogImpl; @@ -50,7 +52,7 @@ class newGameDialogImpl: public QDialog, public Ui::newGameDialog public: newGameDialogImpl(QMainWindow *parent = 0, ConfigFile* = 0); - void exec(); + int exec(); changeCompleteBlindsDialogImpl* getChangeCompleteBlindsDialog() { return myChangeCompleteBlindsDialog; } diff --git a/src/gui/qt/serverlistdialog/serverlistdialogimpl.cpp b/src/gui/qt/serverlistdialog/serverlistdialogimpl.cpp index 41c76608..d99814aa 100644 --- a/src/gui/qt/serverlistdialog/serverlistdialogimpl.cpp +++ b/src/gui/qt/serverlistdialog/serverlistdialogimpl.cpp @@ -50,10 +50,9 @@ serverListDialogImpl::serverListDialogImpl(startWindowImpl *sw, QMainWindow *par connect( this, SIGNAL( rejected() ), this, SLOT( closeNetworkClient() )); } -void serverListDialogImpl::exec() +int serverListDialogImpl::exec() { - - QDialog::exec(); + return QDialog::exec(); } void serverListDialogImpl::clearList() diff --git a/src/gui/qt/serverlistdialog/serverlistdialogimpl.h b/src/gui/qt/serverlistdialog/serverlistdialogimpl.h index ee034296..6ff6826f 100644 --- a/src/gui/qt/serverlistdialog/serverlistdialogimpl.h +++ b/src/gui/qt/serverlistdialog/serverlistdialogimpl.h @@ -39,7 +39,9 @@ #include #include - +#if QT_VERSION >= 0x050000 + #include +#endif class ConfigFile; class startWindowImpl; @@ -52,7 +54,7 @@ public: public slots: - void exec(); + int exec(); void clearList(); void addServerItem(unsigned); void connectToServer(); @@ -66,4 +68,4 @@ private: }; #endif -void exec(); +int exec(); diff --git a/src/gui/qt/settingsdialog/manualblindsorderdialog/manualblindsorderdialogimpl.cpp b/src/gui/qt/settingsdialog/manualblindsorderdialog/manualblindsorderdialogimpl.cpp index d08820df..b3e676e3 100644 --- a/src/gui/qt/settingsdialog/manualblindsorderdialog/manualblindsorderdialogimpl.cpp +++ b/src/gui/qt/settingsdialog/manualblindsorderdialog/manualblindsorderdialogimpl.cpp @@ -35,7 +35,7 @@ manualBlindsOrderDialogImpl::manualBlindsOrderDialogImpl(QWidget *parent, ConfigFile *c) - : QDialog(parent), myConfig(c), settingsCorrect(TRUE) + : QDialog(parent), myConfig(c), settingsCorrect(true) { #ifdef __APPLE__ setWindowModality(Qt::ApplicationModal); @@ -48,11 +48,9 @@ manualBlindsOrderDialogImpl::manualBlindsOrderDialogImpl(QWidget *parent, Config } -void manualBlindsOrderDialogImpl::exec() +int manualBlindsOrderDialogImpl::exec() { - - - QDialog::exec(); + return QDialog::exec(); } @@ -82,7 +80,7 @@ void manualBlindsOrderDialogImpl::sortBlindsList() int i; QList tempIntList; QStringList tempStringList; - bool ok = TRUE; + bool ok = true; for(i=0; icount(); i++) { // std::cout << listWidget_blinds->item(i)->text().toInt(&ok,10) << "\n"; diff --git a/src/gui/qt/settingsdialog/manualblindsorderdialog/manualblindsorderdialogimpl.h b/src/gui/qt/settingsdialog/manualblindsorderdialog/manualblindsorderdialogimpl.h index 381bf7a8..3aabbd2c 100644 --- a/src/gui/qt/settingsdialog/manualblindsorderdialog/manualblindsorderdialogimpl.h +++ b/src/gui/qt/settingsdialog/manualblindsorderdialog/manualblindsorderdialogimpl.h @@ -48,7 +48,7 @@ class manualBlindsOrderDialogImpl: public QDialog, public Ui::manualBlindsOrderD public: manualBlindsOrderDialogImpl(QWidget *parent = 0, ConfigFile *c = 0); - void exec(); + int exec(); public slots: diff --git a/src/gui/qt/settingsdialog/myavatarbutton.h b/src/gui/qt/settingsdialog/myavatarbutton.h index bb347cfd..bff9a920 100644 --- a/src/gui/qt/settingsdialog/myavatarbutton.h +++ b/src/gui/qt/settingsdialog/myavatarbutton.h @@ -33,6 +33,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class MyAvatarButton : public QPushButton { diff --git a/src/gui/qt/settingsdialog/myhpavatarbutton.h b/src/gui/qt/settingsdialog/myhpavatarbutton.h index fe30b001..e2a79ffb 100644 --- a/src/gui/qt/settingsdialog/myhpavatarbutton.h +++ b/src/gui/qt/settingsdialog/myhpavatarbutton.h @@ -33,6 +33,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class MyHPAvatarButton : public QPushButton { diff --git a/src/gui/qt/settingsdialog/mystylelistitem.h b/src/gui/qt/settingsdialog/mystylelistitem.h index 33e37b16..08dfcc38 100644 --- a/src/gui/qt/settingsdialog/mystylelistitem.h +++ b/src/gui/qt/settingsdialog/mystylelistitem.h @@ -33,6 +33,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class MyStyleListItem : public QTreeWidgetItem { diff --git a/src/gui/qt/settingsdialog/selectavatardialog/myavatarlistitem.h b/src/gui/qt/settingsdialog/selectavatardialog/myavatarlistitem.h index 5de166e2..f0ee6b04 100644 --- a/src/gui/qt/settingsdialog/selectavatardialog/myavatarlistitem.h +++ b/src/gui/qt/settingsdialog/selectavatardialog/myavatarlistitem.h @@ -33,6 +33,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif class MyAvatarListItem : public QListWidgetItem { diff --git a/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.cpp b/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.cpp index fcbf59da..75a132fc 100644 --- a/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.cpp +++ b/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.cpp @@ -36,7 +36,7 @@ selectAvatarDialogImpl::selectAvatarDialogImpl(QWidget *parent, ConfigFile *c) - : QDialog(parent), myConfig(c), settingsCorrect(TRUE), avatarDir("") + : QDialog(parent), myConfig(c), settingsCorrect(true), avatarDir("") { #ifdef __APPLE__ setWindowModality(Qt::ApplicationModal); @@ -56,7 +56,7 @@ selectAvatarDialogImpl::selectAvatarDialogImpl(QWidget *parent, ConfigFile *c) // listWidget->setFlow(QListView::TopToBottom); // listWidget->setWrapping(true); listWidget->setSpacing(20); - listWidget->setDragEnabled(FALSE); + listWidget->setDragEnabled(false); listWidget->setResizeMode(QListView::Adjust); @@ -174,14 +174,12 @@ selectAvatarDialogImpl::selectAvatarDialogImpl(QWidget *parent, ConfigFile *c) } -void selectAvatarDialogImpl::exec() +int selectAvatarDialogImpl::exec() { - //clear lineEdit->setText(""); refreshAvatarView(); - - QDialog::exec(); + return QDialog::exec(); } void selectAvatarDialogImpl::refreshAvatarView() @@ -217,12 +215,12 @@ void selectAvatarDialogImpl::refreshAvatarView() void selectAvatarDialogImpl::toggleGroupBox1(bool /*toggleState*/) { - if(groupBox->isChecked()) groupBox_2->setChecked(FALSE); + if(groupBox->isChecked()) groupBox_2->setChecked(false); } void selectAvatarDialogImpl::toggleGroupBox2(bool /*toggleState*/) { - if(groupBox_2->isChecked()) groupBox->setChecked(FALSE); + if(groupBox_2->isChecked()) groupBox->setChecked(false); } QString selectAvatarDialogImpl::getAvatarLink() @@ -247,15 +245,15 @@ void selectAvatarDialogImpl::isAccepted() QList myItemList = listWidget->selectedItems(); - settingsCorrect = TRUE; + settingsCorrect = true; if(groupBox->isChecked()) { if(myItemList.size() == 0) { MyMessageBox::warning(this, tr("Avatar File Error"), tr("Please select an avatar from the list!"), QMessageBox::Ok); - settingsCorrect = FALSE; - } else settingsCorrect = TRUE;; + settingsCorrect = false; + } else settingsCorrect = true;; } if(groupBox_2->isChecked()) { @@ -264,13 +262,13 @@ void selectAvatarDialogImpl::isAccepted() if(lineEditFile.size() <= 30720 ) { externalAvatar = lineEdit->text(); - settingsCorrect = TRUE; + settingsCorrect = true; } else { MyMessageBox::warning(this, tr("Avatar File Error"), tr("The file size of the chosen picture is too big. (max. 30KB)\n" "Please choose a smaller picture!"), QMessageBox::Ok); - settingsCorrect = FALSE; + settingsCorrect = false; externalAvatar = ""; } @@ -279,7 +277,7 @@ void selectAvatarDialogImpl::isAccepted() tr("The entered avatar picture doesn't exist.\n" "Please enter an valid picture!"), QMessageBox::Ok); - settingsCorrect = FALSE; + settingsCorrect = false; externalAvatar = ""; } } @@ -292,7 +290,7 @@ void selectAvatarDialogImpl::isAccepted() void selectAvatarDialogImpl::isRejected() { - settingsCorrect = FALSE; + settingsCorrect = false; } void selectAvatarDialogImpl::setExternalAvatar() diff --git a/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.h b/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.h index 55e88342..7fe52a2a 100644 --- a/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.h +++ b/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.h @@ -36,7 +36,9 @@ #else #include "ui_selectavatardialog.h" #endif - +#if QT_VERSION >= 0x050000 + #include +#endif #include #include @@ -49,7 +51,7 @@ class selectAvatarDialogImpl: public QDialog, public Ui::selectAvatarDialog public: selectAvatarDialogImpl(QWidget *parent = 0, ConfigFile *c = 0); - void exec(); + int exec(); public slots: diff --git a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp index 6bedb319..f764530a 100644 --- a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp +++ b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp @@ -65,7 +65,7 @@ settingsDialogImpl::settingsDialogImpl(QWidget *parent, ConfigFile *c, selectAva pushButton_openLogDir->setIcon(QIcon(QPixmap(myAppDataPath+"gfx/gui/misc/fileopen16.png"))); if (myConfig->readConfigInt("CLA_NoWriteAccess")) { - groupBox_logOnOff->setDisabled(TRUE); + groupBox_logOnOff->setDisabled(true); } comboBox_switchLanguage->addItem(QString(tr("Afrikaans")+" "+QString::fromUtf8("(Afrikaans)")),"af"); @@ -165,7 +165,7 @@ settingsDialogImpl::~settingsDialogImpl() void settingsDialogImpl::prepareDialog() { - playerNickIsChanged = FALSE; + playerNickIsChanged = false; //Player Nicks lineEdit_HumanPlayerName->setText(QString::fromUtf8(myConfig->readConfigString("MyName").c_str())); @@ -247,10 +247,10 @@ void settingsDialogImpl::prepareDialog() if(myConfig->readConfigInt("UseAvatarServer")) { lineEdit_avatarServerAddress->setText(QString::fromUtf8(myConfig->readConfigString("AvatarServerAddress").c_str())); checkBox_useAvatarServer->setCheckState(Qt::Checked); - lineEdit_avatarServerAddress->setEnabled(TRUE); + lineEdit_avatarServerAddress->setEnabled(true); } else { checkBox_useAvatarServer->setCheckState(Qt::Unchecked); - lineEdit_avatarServerAddress->setEnabled(FALSE); + lineEdit_avatarServerAddress->setEnabled(false); } checkBox_UseInternetGamePassword->setChecked(myConfig->readConfigInt("UseInternetGamePassword")); if(myConfig->readConfigInt("UseInternetGamePassword")) { @@ -261,9 +261,9 @@ void settingsDialogImpl::prepareDialog() comboBox_internetGameType->setCurrentIndex(myConfig->readConfigInt("InternetGameType")); lineEdit_internetGameName->setText(QString::fromUtf8(myConfig->readConfigString("InternetGameName").c_str())); if(myConfig->readConfigInt("InternetServerConfigMode")) { - groupBox_manualServerConfig->setChecked(TRUE); + groupBox_manualServerConfig->setChecked(true); } else { - groupBox_automaticServerConfig->setChecked(TRUE); + groupBox_automaticServerConfig->setChecked(true); } std::list playerIgnoreList = myConfig->readConfigStringList("PlayerIgnoreList"); @@ -379,13 +379,13 @@ void settingsDialogImpl::prepareDialog() currentGameTableStyle.readStyleFile(QString::fromUtf8(myConfig->readConfigString("CurrentGameTableStyle").c_str())); if(currentGameTableStyle.getLoadedSuccessfull()) { int i; - bool currentGameTableFound(FALSE); + bool currentGameTableFound(false); for(i=0; i < treeWidget_gameTableStyles->topLevelItemCount(); i++) { QTreeWidgetItem *item = treeWidget_gameTableStyles->topLevelItem(i); if(item->data(0, 15) == currentGameTableStyle.getCurrentFileName()) { item->setIcon(0, QIcon(QString::fromUtf8(myConfig->readConfigString("AppDataDir").c_str())+"/gfx/gui/misc/rating.png")); treeWidget_gameTableStyles->setCurrentItem(item); - currentGameTableFound=TRUE; + currentGameTableFound=true; } else item->setIcon(0, QIcon()); } if(!currentGameTableFound) { @@ -480,13 +480,13 @@ void settingsDialogImpl::prepareDialog() currentCardDeckStyle.readStyleFile(QString::fromUtf8(myConfig->readConfigString("CurrentCardDeckStyle").c_str())); if(currentCardDeckStyle.getLoadedSuccessfull()) { int j; - bool currentCardDeckFound(FALSE); + bool currentCardDeckFound(false); for(j=0; j < treeWidget_cardDeckStyles->topLevelItemCount(); j++) { QTreeWidgetItem *item = treeWidget_cardDeckStyles->topLevelItem(j); if(item->data(0, 15) == currentCardDeckStyle.getCurrentFileName()) { item->setIcon(0, QIcon(QString::fromUtf8(myConfig->readConfigString("AppDataDir").c_str())+"/gfx/gui/misc/rating.png")); treeWidget_cardDeckStyles->setCurrentItem(item); - currentCardDeckFound=TRUE; + currentCardDeckFound=true; } else item->setIcon(0, QIcon()); } if(!currentCardDeckFound) { @@ -521,8 +521,8 @@ void settingsDialogImpl::prepareDialog() radioButton_flipsideTux->setChecked(myConfig->readConfigInt("FlipsideTux")); radioButton_flipsideOwn->setChecked(myConfig->readConfigInt("FlipsideOwn")); if(radioButton_flipsideOwn->isChecked()) { - lineEdit_OwnFlipsideFilename->setEnabled(TRUE); - pushButton_openFlipsidePicture->setEnabled(TRUE); + lineEdit_OwnFlipsideFilename->setEnabled(true); + pushButton_openFlipsidePicture->setEnabled(true); } lineEdit_OwnFlipsideFilename->setText(QString::fromUtf8(myConfig->readConfigString("FlipsideOwnFile").c_str())); @@ -564,7 +564,7 @@ void settingsDialogImpl::prepareDialog() setFirstSmallBlindMargin(); //set this AFTER switch combobox like config-settings. This IS a currentIndexChanged() ;-) - languageIsChanged = FALSE; + languageIsChanged = false; //disable reset config button when dialog is called from ingame if(calledIngame) { @@ -587,7 +587,7 @@ void settingsDialogImpl::exec(bool in_game) void settingsDialogImpl::isAccepted() { - settingsCorrect = TRUE; + settingsCorrect = true; // Player Nicks //check if all player nicks are unique --> otherwise dont save @@ -608,7 +608,7 @@ void settingsDialogImpl::isAccepted() tr("The opponent names are not unique.\n" "Please choose different names for each Opponent!"), QMessageBox::Ok); - settingsCorrect = FALSE; + settingsCorrect = false; } else { //save nicks and avatars myConfig->writeConfigString("MyName", lineEdit_HumanPlayerName->text().trimmed().toUtf8().constData()); @@ -689,7 +689,7 @@ void settingsDialogImpl::isAccepted() tr("The entered server list address is not a valid URL.\n" "Please enter a valid server list address!"), QMessageBox::Ok); - settingsCorrect = FALSE; + settingsCorrect = false; } } if(groupBox_manualServerConfig->isChecked()) { @@ -755,7 +755,7 @@ void settingsDialogImpl::isAccepted() tr("The entered flipside picture doesn't exist.\n" "Please enter an valid picture!"), QMessageBox::Ok); - settingsCorrect = FALSE; + settingsCorrect = false; } } @@ -815,7 +815,7 @@ void settingsDialogImpl::isAccepted() tr("The log file directory doesn't exist.\n" "Please select an valid directory!"), QMessageBox::Ok); - settingsCorrect = FALSE; + settingsCorrect = false; } myConfig->writeConfigInt("LogStoreDuration", spinBox_logStoreDuration->value()); @@ -1021,7 +1021,7 @@ void settingsDialogImpl::callManualBlindsOrderDialog() myManualBlindsOrderDialog->exec(); if(myManualBlindsOrderDialog->result() == QDialog::Accepted) { - bool ok = TRUE; + bool ok = true; int i; myManualBlindsList.clear(); for(i=0; ilistWidget_blinds->count(); i++) { @@ -1057,7 +1057,7 @@ void settingsDialogImpl::callNetManualBlindsOrderDialog() myManualBlindsOrderDialog->exec(); if(myManualBlindsOrderDialog->result() == QDialog::Accepted) { - bool ok = TRUE; + bool ok = true; int i; myNetManualBlindsList.clear(); for(i=0; ilistWidget_blinds->count(); i++) { @@ -1113,21 +1113,21 @@ void settingsDialogImpl::setFirstSmallBlindMargin() void settingsDialogImpl::setLanguageChanged(int index) { - languageIsChanged = TRUE; + languageIsChanged = true; changedLanguageIndex = index; } void settingsDialogImpl::toggleGroupBoxAutomaticServerConfig(bool toggleState) { - if(toggleState) groupBox_manualServerConfig->setChecked(FALSE); - else groupBox_manualServerConfig->setChecked(TRUE); + if(toggleState) groupBox_manualServerConfig->setChecked(false); + else groupBox_manualServerConfig->setChecked(true); } void settingsDialogImpl::toggleGroupBoxManualServerConfig(bool toggleState) { - if(toggleState) groupBox_automaticServerConfig->setChecked(FALSE); - else groupBox_automaticServerConfig->setChecked(TRUE); + if(toggleState) groupBox_automaticServerConfig->setChecked(false); + else groupBox_automaticServerConfig->setChecked(true); } void settingsDialogImpl::showCurrentGameTableStylePreview() @@ -1163,7 +1163,7 @@ void settingsDialogImpl::showCurrentGameTableStylePreview() maintainerEMailString = ""+MaintainerEMail+": "+style.getStyleMaintainerEMail()+"
"; } - label_gameTableStyleInfo->setWordWrap(TRUE); + label_gameTableStyleInfo->setWordWrap(true); label_gameTableStyleInfo->setText(""+MaintainerName+": "+style.getStyleMaintainerName()+"
"+maintainerEMailString+""+CreateDate+": "+style.getStyleCreateDate()+"
"+windowsSubString+"
"+State+": "+style.getMyStateToolTipInfo()); //active the current selected item directly @@ -1171,9 +1171,9 @@ void settingsDialogImpl::showCurrentGameTableStylePreview() //disable remove button for distributed styles if(item->data(0, 16).toInt() == POKERTH_DISTRIBUTED_STYLE) { - pushButton_removeGameTableStyle->setDisabled(TRUE); + pushButton_removeGameTableStyle->setDisabled(true); } else { - pushButton_removeGameTableStyle->setDisabled(FALSE); + pushButton_removeGameTableStyle->setDisabled(false); } } @@ -1208,11 +1208,11 @@ void settingsDialogImpl::addGameTableStyle() if (!fileName.isEmpty()) { int i; - bool fileNameAlreadyFound(FALSE); + bool fileNameAlreadyFound(false); for(i=0; i < treeWidget_gameTableStyles->topLevelItemCount(); i++) { QTreeWidgetItem *item = treeWidget_gameTableStyles->topLevelItem(i); if(item->data(0, 15).toString() == fileName) - fileNameAlreadyFound = TRUE; + fileNameAlreadyFound = true; } if(fileNameAlreadyFound) { @@ -1290,7 +1290,7 @@ void settingsDialogImpl::showCurrentCardDeckStylePreview() } #ifdef GUI_800x480 - label_cardDeckStyleInfo->setWordWrap(TRUE); + label_cardDeckStyleInfo->setWordWrap(true); #endif label_cardDeckStyleInfo->setText(""+MaintainerName+": "+style.getStyleMaintainerName()+"
"+maintainerEMailString+""+CreateDate+": "+style.getStyleCreateDate()+""); //active the current selected item directly @@ -1298,9 +1298,9 @@ void settingsDialogImpl::showCurrentCardDeckStylePreview() //disable remove button for distributed styles if(item->data(0, 16).toInt() == POKERTH_DISTRIBUTED_STYLE) { - pushButton_removeCardDeckStyle->setDisabled(TRUE); + pushButton_removeCardDeckStyle->setDisabled(true); } else { - pushButton_removeCardDeckStyle->setDisabled(FALSE); + pushButton_removeCardDeckStyle->setDisabled(false); } } } @@ -1334,11 +1334,11 @@ void settingsDialogImpl::addCardDeckStyle() if (!fileName.isEmpty()) { int i; - bool fileNameAlreadyFound(FALSE); + bool fileNameAlreadyFound(false); for(i=0; i < treeWidget_cardDeckStyles->topLevelItemCount(); i++) { QTreeWidgetItem *item = treeWidget_cardDeckStyles->topLevelItem(i); if(item->data(0, 15).toString() == fileName) - fileNameAlreadyFound = TRUE; + fileNameAlreadyFound = true; } if(fileNameAlreadyFound) { diff --git a/src/gui/qt/settingsdialog/settingsdialogimpl.h b/src/gui/qt/settingsdialog/settingsdialogimpl.h index 6dbe6b8b..6c588a7d 100644 --- a/src/gui/qt/settingsdialog/settingsdialogimpl.h +++ b/src/gui/qt/settingsdialog/settingsdialogimpl.h @@ -41,6 +41,9 @@ #include #include +#if QT_VERSION >= 0x050000 + #include +#endif #include #include @@ -83,7 +86,7 @@ public slots: void isAccepted(); void playerNickChanged() { - setPlayerNickIsChanged(TRUE); + setPlayerNickIsChanged(true); }; void setFlipsidePicFileName(); void setLogDir(); diff --git a/src/gui/qt/sound/androidaudio.cpp b/src/gui/qt/sound/androidaudio.cpp index 7af8c3c2..014adda0 100644 --- a/src/gui/qt/sound/androidaudio.cpp +++ b/src/gui/qt/sound/androidaudio.cpp @@ -35,7 +35,7 @@ #include AndroidAudio::AndroidAudio(ConfigFile *c, QObject *parent) : - QObject(parent), mEngineObject(NULL), mEngineEngine(NULL), mOutputMixObject(NULL), mSounds(), mSoundCount(0), mPlayerObject(NULL), myConfig(c), audioEnabled(FALSE) + QObject(parent), mEngineObject(NULL), mEngineEngine(NULL), mOutputMixObject(NULL), mSounds(), mSoundCount(0), mPlayerObject(NULL), myConfig(c), audioEnabled(false) { initAudio(); } @@ -50,7 +50,7 @@ void AndroidAudio::initAudio() if (!audioEnabled && myConfig->readConfigInt("PlaySoundEffects")) { createEngine(); startSoundPlayer(); - audioEnabled = TRUE; + audioEnabled = true; } } @@ -63,7 +63,7 @@ void AndroidAudio::closeAudio() for (int32_t i = 0; i < mSoundCount; ++i) { qDeleteAll(mSounds); } - audioEnabled = FALSE; + audioEnabled = false; } } @@ -82,7 +82,7 @@ void AndroidAudio::createEngine() Q_ASSERT(SL_RESULT_SUCCESS == result); // realize the engine - result = (*mEngineObject)->Realize(mEngineObject, SL_BOOLEAN_FALSE); + result = (*mEngineObject)->Realize(mEngineObject, SL_BOOLEAN_false); Q_ASSERT(SL_RESULT_SUCCESS == result); // get the engine interface, which is needed in order to create other objects @@ -96,7 +96,7 @@ void AndroidAudio::createEngine() Q_ASSERT(SL_RESULT_SUCCESS == result); // realize the output mix - result = (*mOutputMixObject)->Realize(mOutputMixObject, SL_BOOLEAN_FALSE); + result = (*mOutputMixObject)->Realize(mOutputMixObject, SL_BOOLEAN_false); Q_ASSERT(SL_RESULT_SUCCESS == result); qDebug() << "Created Android Audio Engine"; @@ -171,7 +171,7 @@ void AndroidAudio::startSoundPlayer() //Create the sound player const SLuint32 lSoundPlayerIIDCount = 2; const SLInterfaceID lSoundPlayerIIDs[] = { SL_IID_PLAY, SL_IID_BUFFERQUEUE }; - const SLboolean lSoundPlayerReqs[] = { SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE }; + const SLboolean lSoundPlayerReqs[] = { SL_BOOLEAN_true, SL_BOOLEAN_true }; // qDebug() << "Configured Sound Player"; @@ -180,7 +180,7 @@ void AndroidAudio::startSoundPlayer() // qDebug() << "Created Sound Player"; - lRes = (*mPlayerObject)->Realize(mPlayerObject, SL_BOOLEAN_FALSE); + lRes = (*mPlayerObject)->Realize(mPlayerObject, SL_BOOLEAN_false); Q_ASSERT(SL_RESULT_SUCCESS == lRes); qDebug() << "Realised Sound Player"; diff --git a/src/gui/qt/sound/sdlplayer.cpp b/src/gui/qt/sound/sdlplayer.cpp index f03370c9..5d0d8e90 100644 --- a/src/gui/qt/sound/sdlplayer.cpp +++ b/src/gui/qt/sound/sdlplayer.cpp @@ -39,7 +39,7 @@ using namespace std; SDLPlayer::SDLPlayer(ConfigFile *c) - : sound(NULL), soundData(NULL), currentChannel(0), audioEnabled(FALSE), myConfig(c) + : sound(NULL), soundData(NULL), currentChannel(0), audioEnabled(false), myConfig(c) { myAppDataPath = QString::fromUtf8(myConfig->readConfigString("AppDataDir").c_str()); SDL_Init(SDL_INIT_AUDIO); diff --git a/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.cpp b/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.cpp index 4d31368e..ba5005d2 100644 --- a/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.cpp +++ b/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.cpp @@ -62,10 +62,9 @@ startNetworkGameDialogImpl::startNetworkGameDialogImpl(startWindowImpl *parent, clearDialog(); } -void startNetworkGameDialogImpl::exec() +int startNetworkGameDialogImpl::exec() { - - QDialog::exec(); + return QDialog::exec(); } void startNetworkGameDialogImpl::startGame() diff --git a/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.h b/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.h index 7c9868a1..b748cb28 100644 --- a/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.h +++ b/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.h @@ -92,7 +92,7 @@ public slots: return maxPlayerNumber; } - void exec(); + int exec(); private: diff --git a/src/gui/qt/startwindow/startwindowimpl.cpp b/src/gui/qt/startwindow/startwindowimpl.cpp index aca45629..63fac6e0 100644 --- a/src/gui/qt/startwindow/startwindowimpl.cpp +++ b/src/gui/qt/startwindow/startwindowimpl.cpp @@ -61,7 +61,7 @@ #ifdef ANDROID #ifndef ANDROID_TEST - #include + #include "QtGui/5.1.0/QtGui/qpa/qplatformnativeinterface.h" #include #endif #endif @@ -114,7 +114,7 @@ startWindowImpl::startWindowImpl(ConfigFile *c, Log *l) } this->showFullScreen(); - //TODO HACK Missing QSystemScreenSaver::setScreenSaverInhibited(TRUE) + //TODO HACK Missing QSystemScreenSaver::setScreenSaverInhibited(true) // #ifndef ANDROID_TEST // JavaVM *currVM = (JavaVM *)QApplication::platformNativeInterface()->nativeResourceForWidget("JavaVM", 0); // JNIEnv* env; @@ -215,8 +215,8 @@ startWindowImpl::startWindowImpl(ConfigFile *c, Log *l) connect(this, SIGNAL(signalNetClientPlayerJoined(unsigned, QString, bool)), myGameLobbyDialog, SLOT(addConnectedPlayer(unsigned, QString, bool))); connect(this, SIGNAL(signalNetClientPlayerChanged(unsigned, QString)), myGameLobbyDialog, SLOT(updatePlayer(unsigned, QString))); connect(this, SIGNAL(signalNetClientPlayerLeft(unsigned, QString)), myGameLobbyDialog, SLOT(removePlayer(unsigned, QString))); - // TODO connect(this, SIGNAL(signalNetClientSpectatorJoined(unsigned, QString)), myGameLobbyDialog, SLOT(addConnectedSpectator(unsigned, QString))); - // TODO connect(this, SIGNAL(signalNetClientSpectatorLeft(unsigned, QString)), myGameLobbyDialog, SLOT(removeSpectator(unsigned, QString))); + connect(this, SIGNAL(signalNetClientSpectatorJoined(unsigned, QString)), myGameLobbyDialog, SLOT(addConnectedSpectator(unsigned, QString))); + connect(this, SIGNAL(signalNetClientSpectatorLeft(unsigned, QString)), myGameLobbyDialog, SLOT(removeSpectator(unsigned, QString))); connect(this, SIGNAL(signalNetClientNewGameAdmin(unsigned, QString)), myGameLobbyDialog, SLOT(newGameAdmin(unsigned, QString))); connect(this, SIGNAL(signalNetClientGameListNew(unsigned)), myGameLobbyDialog, SLOT(addGame(unsigned))); @@ -225,8 +225,8 @@ startWindowImpl::startWindowImpl(ConfigFile *c, Log *l) connect(this, SIGNAL(signalNetClientGameListUpdateAdmin(unsigned, unsigned)), myGameLobbyDialog, SLOT(updateGameAdmin(unsigned, unsigned))); connect(this, SIGNAL(signalNetClientGameListPlayerJoined(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameAddPlayer(unsigned, unsigned))); connect(this, SIGNAL(signalNetClientGameListPlayerLeft(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameRemovePlayer(unsigned, unsigned))); - // TODO connect(this, SIGNAL(signalNetClientGameListSpectatorJoined(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameAddSpectator(unsigned, unsigned))); - // TODO connect(this, SIGNAL(signalNetClientGameListSpectatorLeft(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameRemoveSpectator(unsigned, unsigned))); + connect(this, SIGNAL(signalNetClientGameListSpectatorJoined(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameAddSpectator(unsigned, unsigned))); + connect(this, SIGNAL(signalNetClientGameListSpectatorLeft(unsigned, unsigned)), myGameLobbyDialog, SLOT(gameRemoveSpectator(unsigned, unsigned))); connect(this, SIGNAL(signalNetClientRemovedFromGame(int)), myGameLobbyDialog, SLOT(removedFromGame(int))); connect(this, SIGNAL(signalNetClientStatsUpdate(ServerStats)), myGameLobbyDialog, SLOT(updateStats(ServerStats))); @@ -320,7 +320,7 @@ void startWindowImpl::startNewLocalGame(newGameDialogImpl *v) gameData.raiseMode = MANUAL_BLINDS_ORDER; list tempBlindList; int i; - bool ok = TRUE; + bool ok = true; for(i=0; igetChangeCompleteBlindsDialog()->listWidget_blinds->count(); i++) { tempBlindList.push_back(v->getChangeCompleteBlindsDialog()->listWidget_blinds->item(i)->text().toInt(&ok,10)); } @@ -534,7 +534,7 @@ void startWindowImpl::callCreateNetworkGameDialog() gameData.raiseMode = MANUAL_BLINDS_ORDER; std::list tempBlindList; int i; - bool ok = TRUE; + bool ok = true; for(i=0; igetChangeCompleteBlindsDialog()->listWidget_blinds->count(); i++) { tempBlindList.push_back(myCreateNetworkGameDialog->getChangeCompleteBlindsDialog()->listWidget_blinds->item(i)->text().toInt(&ok,10)); } diff --git a/src/gui/qt/styles/carddeckstylereader.cpp b/src/gui/qt/styles/carddeckstylereader.cpp index 47f83cf3..d0f2a7e0 100644 --- a/src/gui/qt/styles/carddeckstylereader.cpp +++ b/src/gui/qt/styles/carddeckstylereader.cpp @@ -148,7 +148,7 @@ void CardDeckStyleReader::readStyleFile(QString file) cardsLeft << "flipside.png"; } - // set loadedSuccessfull TRUE if everything works + // set loadedSuccessfull true if everything works if(leftItems.isEmpty() && cardsLeft.isEmpty() && PokerTHStyleFileVersion != "" && PokerTHStyleFileVersion.toInt() == POKERTH_CD_STYLE_FILE_VERSION) { myState = CD_STYLE_OK; } else { diff --git a/src/gui/qt/styles/gametablestylereader.cpp b/src/gui/qt/styles/gametablestylereader.cpp index 76b5b1a3..d1829d6c 100644 --- a/src/gui/qt/styles/gametablestylereader.cpp +++ b/src/gui/qt/styles/gametablestylereader.cpp @@ -1245,7 +1245,7 @@ void GameTableStyleReader::readStyleFile(QString file) leftItems << "ChatLogTextSize"; } - //set loadedSuccessfull TRUE if everything works + //set loadedSuccessfull true if everything works // qDebug() << "leftitem is empty: " << leftItems.isEmpty() << "pics left is empty: " << itemPicsLeft.isEmpty() << "stylefileversion is: " << PokerTHStyleFileVersion; if(leftItems.isEmpty() && itemPicsLeft.isEmpty() && PokerTHStyleFileVersion != "" && PokerTHStyleFileVersion.toInt() == POKERTH_GT_STYLE_FILE_VERSION) { myState = GT_STYLE_OK; @@ -1637,9 +1637,9 @@ void GameTableStyleReader::setWindowsGeometry(gameTableImpl *gt) int availableWidth = dw.screenGeometry().width(); int availableHeight = dw.screenGeometry().height(); if(availableWidth == FixedWindowWidth.toInt() && availableHeight == FixedWindowHeight.toInt()) { - gt->actionFullScreen->setEnabled(TRUE); + gt->actionFullScreen->setEnabled(true); } else { - gt->actionFullScreen->setDisabled(TRUE); + gt->actionFullScreen->setDisabled(true); if(gt->isFullScreen()) { gt->showNormal(); gt->move(50,50); @@ -1656,9 +1656,9 @@ void GameTableStyleReader::setWindowsGeometry(gameTableImpl *gt) int availableWidth = dw.screenGeometry().width(); int availableHeight = dw.screenGeometry().height(); if(availableWidth <= MaximumWindowWidth.toInt() && availableHeight <= MaximumWindowHeight.toInt()) { - gt->actionFullScreen->setEnabled(TRUE); + gt->actionFullScreen->setEnabled(true); } else { - gt->actionFullScreen->setDisabled(TRUE); + gt->actionFullScreen->setDisabled(true); if(gt->isFullScreen()) { gt->showNormal(); gt->move(50,50); diff --git a/src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h b/src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h index 931c4485..c296cb07 100644 --- a/src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h +++ b/src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h @@ -34,6 +34,9 @@ #include #include #include +#if QT_VERSION >= 0x050000 + #include +#endif #include #include "game_defs.h" diff --git a/src/pokerth.cpp b/src/pokerth.cpp index dc3bd03e..d5e7c5c2 100755 --- a/src/pokerth.cpp +++ b/src/pokerth.cpp @@ -33,6 +33,8 @@ #include #include #include + +#include #include #include @@ -84,7 +86,7 @@ int main( int argc, char **argv ) curl_global_init(CURL_GLOBAL_NOTHING); /////// can be removed for non-qt-guis //////////// - QtSingleApplication a( argc, argv ); + SharedTools::QtSingleApplication a( "PokerTH", argc, argv ); if (a.sendMessage("Wake up!")) { return 0; @@ -103,7 +105,9 @@ int main( int argc, char **argv ) Log *myLog = new Log(myConfig); // set PlastiqueStyle even for mac-version to prevent artefacts on styled widgets +#if QT_VERSION < 0x050000 a.setStyle(new QPlastiqueStyle); +#endif QString myAppDataPath = QString::fromUtf8(myConfig->readConfigString("AppDataDir").c_str()); //set QApplication default font diff --git a/src/third_party/qtlockedfile/README.txt b/src/third_party/qtlockedfile/README.txt new file mode 100644 index 00000000..6fcf2fd2 --- /dev/null +++ b/src/third_party/qtlockedfile/README.txt @@ -0,0 +1,10 @@ +This is the src directory of the QtLockedFile +solution integrated over from addons/main/utils/qtlockedfile/src . + +namespace.patch was applied to introduce the SharedTools namespace. + +It is required by the QtSingleApplication solution. + +History: + +16.05.2008 Integrated diff --git a/src/third_party/qtlockedfile/namespace.patch b/src/third_party/qtlockedfile/namespace.patch new file mode 100644 index 00000000..eb894a37 --- /dev/null +++ b/src/third_party/qtlockedfile/namespace.patch @@ -0,0 +1,70 @@ + +--- qtlockedfile.cpp 1970-01-01 01:00:00.000000000 ++++ qtlockedfile.cpp 2008/05/16 10:51:19.000000000 +@@ -1,5 +1,7 @@ + #include "qtlockedfile.h" + ++namespace SharedTools { ++ + /*! + \class QtLockedFile + +@@ -123,3 +125,5 @@ + + Destroys the \e QtLockedFile object. If any locks were held, they are released. + */ ++ ++} + +--- qtlockedfile.h 1970-01-01 01:00:00.000000000 ++++ qtlockedfile.h 2008/05/16 10:51:19.000000000 +@@ -19,6 +19,8 @@ + # define QT_QTLOCKEDFILE_EXPORT + #endif + ++namespace SharedTools { ++ + class QT_QTLOCKEDFILE_EXPORT QtLockedFile : public QFile + { + public: +@@ -41,4 +43,6 @@ + LockMode m_lock_mode; + }; + ++} ++ + #endif + +--- qtlockedfile_unix.cpp 1970-01-01 01:00:00.000000000 ++++ qtlockedfile_unix.cpp 2008/05/16 10:51:19.000000000 +@@ -5,6 +5,8 @@ + + #include "qtlockedfile.h" + ++namespace SharedTools { ++ + bool QtLockedFile::lock(LockMode mode, bool block) + { + if (!isOpen()) { +@@ -73,3 +75,4 @@ + unlock(); + } + ++} + +--- qtlockedfile_win.cpp 1970-01-01 01:00:00.000000000 ++++ qtlockedfile_win.cpp 2008/05/16 10:51:19.000000000 +@@ -2,6 +2,8 @@ + #include + #include + ++namespace SharedTools { ++ + #define SEMAPHORE_PREFIX "QtLockedFile semaphore " + #define MUTEX_PREFIX "QtLockedFile mutex " + #define SEMAPHORE_MAX 100 +@@ -168,3 +170,4 @@ + } + } + ++} diff --git a/src/third_party/qtsingleapplication/qtlockedfile.cpp b/src/third_party/qtlockedfile/qtlockedfile.cpp similarity index 50% rename from src/third_party/qtsingleapplication/qtlockedfile.cpp rename to src/third_party/qtlockedfile/qtlockedfile.cpp index d4fad753..b3ac9688 100644 --- a/src/third_party/qtsingleapplication/qtlockedfile.cpp +++ b/src/third_party/qtlockedfile/qtlockedfile.cpp @@ -1,17 +1,18 @@ /**************************************************************************** ** -** This file is part of a Qt Solutions component. -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Solutions Commercial License Agreement provided -** with the Software or, alternatively, in accordance with the terms -** contained in a written agreement between you and Nokia. -** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software @@ -19,38 +20,21 @@ ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** Please note Third Party Software included with Qt Solutions may impose -** additional restrictions and it is the user's responsibility to ensure -** that they have met the licensing requirements of the GPL, LGPL, or Qt -** Solutions Commercial license and the relevant license of the Third -** Party Software they are using. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** ****************************************************************************/ #include "qtlockedfile.h" +namespace SharedTools { + /*! \class QtLockedFile - \brief The QtLockedFile class extends QFile with advisory locking - functions. + \brief The QtLockedFile class extends QFile with advisory locking functions. A file may be locked in read or write mode. Multiple instances of \e QtLockedFile, created in multiple processes running on the same @@ -62,7 +46,7 @@ another process from manipulating a locked file using QFile or file system functions offered by the OS. Serialization is only guaranteed if all processes that access the file use - QLockedFile. Also, while holding a lock on a file, a process + QtLockedFile. Also, while holding a lock on a file, a process must not open the same file again (through any API), or locks can be unexpectedly lost. @@ -81,8 +65,8 @@ */ /*! - Constructs an unlocked \e QtLockedFile object. This constructor - behaves in the same way as \e QFile::QFile(). + Constructs an unlocked \e QtLockedFile object. This constructor behaves in the same way + as \e QFile::QFile(). \sa QFile::QFile() */ @@ -90,16 +74,15 @@ QtLockedFile::QtLockedFile() : QFile() { #ifdef Q_OS_WIN - wmutex = 0; - rmutex = 0; + m_semaphore_hnd = 0; + m_mutex_hnd = 0; #endif m_lock_mode = NoLock; } /*! - Constructs an unlocked QtLockedFile object with file \a name. This - constructor behaves in the same way as \e QFile::QFile(const - QString&). + Constructs an unlocked QtLockedFile object with file \a name. This constructor behaves in + the same way as \e QFile::QFile(const QString&). \sa QFile::QFile() */ @@ -107,34 +90,12 @@ QtLockedFile::QtLockedFile(const QString &name) : QFile(name) { #ifdef Q_OS_WIN - wmutex = 0; - rmutex = 0; + m_semaphore_hnd = 0; + m_mutex_hnd = 0; #endif m_lock_mode = NoLock; } -/*! - Opens the file in OpenMode \a mode. - - This is identical to QFile::open(), with the one exception that the - Truncate mode flag is disallowed. Truncation would conflict with the - advisory file locking, since the file would be modified before the - write lock is obtained. If truncation is required, use resize(0) - after obtaining the write lock. - - Returns true if successful; otherwise false. - - \sa QFile::open(), QFile::resize() -*/ -bool QtLockedFile::open(OpenMode mode) -{ - if (mode & QIODevice::Truncate) { - qWarning("QtLockedFile::open(): Truncate mode not allowed."); - return false; - } - return QFile::open(mode); -} - /*! Returns \e true if this object has a in read or write lock; otherwise returns \e false. @@ -147,8 +108,7 @@ bool QtLockedFile::isLocked() const } /*! - Returns the type of lock currently held by this object, or \e - QtLockedFile::NoLock. + Returns the type of lock currently held by this object, or \e QtLockedFile::NoLock. \sa isLocked() */ @@ -160,20 +120,18 @@ QtLockedFile::LockMode QtLockedFile::lockMode() const /*! \fn bool QtLockedFile::lock(LockMode mode, bool block = true) - Obtains a lock of type \a mode. The file must be opened before it - can be locked. + Obtains a lock of type \a mode. - If \a block is true, this function will block until the lock is - aquired. If \a block is false, this function returns \e false - immediately if the lock cannot be aquired. + If \a block is true, this + function will block until the lock is acquired. If \a block is + false, this function returns \e false immediately if the lock cannot + be acquired. - If this object already has a lock of type \a mode, this function - returns \e true immediately. If this object has a lock of a - different type than \a mode, the lock is first released and then a - new lock is obtained. + If this object already has a lock of type \a mode, this function returns \e true immediately. If this object has a lock of a different type than \a mode, the lock + is first released and then a new lock is obtained. - This function returns \e true if, after it executes, the file is - locked by this object, and \e false otherwise. + This function returns \e true if, after it executes, the file is locked by this object, + and \e false otherwise. \sa unlock(), isLocked(), lockMode() */ @@ -185,8 +143,8 @@ QtLockedFile::LockMode QtLockedFile::lockMode() const If the object has no lock, this function returns immediately. - This function returns \e true if, after it executes, the file is - not locked by this object, and \e false otherwise. + This function returns \e true if, after it executes, the file is not locked by + this object, and \e false otherwise. \sa lock(), isLocked(), lockMode() */ @@ -194,6 +152,7 @@ QtLockedFile::LockMode QtLockedFile::lockMode() const /*! \fn QtLockedFile::~QtLockedFile() - Destroys the \e QtLockedFile object. If any locks were held, they - are released. + Destroys the \e QtLockedFile object. If any locks were held, they are released. */ + +} // namespace SharedTools diff --git a/src/third_party/qtlockedfile/qtlockedfile.h b/src/third_party/qtlockedfile/qtlockedfile.h new file mode 100644 index 00000000..0bbaac97 --- /dev/null +++ b/src/third_party/qtlockedfile/qtlockedfile.h @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#ifndef QTLOCKEDFILE_H +#define QTLOCKEDFILE_H + +#include + +#if defined(Q_OS_WIN) +# if !defined(QT_QTLOCKEDFILE_EXPORT) && !defined(QT_QTLOCKEDFILE_IMPORT) +# define QT_QTLOCKEDFILE_EXPORT +# elif defined(QT_QTLOCKEDFILE_IMPORT) +# if defined(QT_QTLOCKEDFILE_EXPORT) +# undef QT_QTLOCKEDFILE_EXPORT +# endif +# define QT_QTLOCKEDFILE_EXPORT __declspec(dllimport) +# elif defined(QT_QTLOCKEDFILE_EXPORT) +# undef QT_QTLOCKEDFILE_EXPORT +# define QT_QTLOCKEDFILE_EXPORT __declspec(dllexport) +# endif +#else +# define QT_QTLOCKEDFILE_EXPORT +#endif + +namespace SharedTools { + +class QT_QTLOCKEDFILE_EXPORT QtLockedFile : public QFile +{ +public: + enum LockMode { NoLock = 0, ReadLock, WriteLock }; + + QtLockedFile(); + QtLockedFile(const QString &name); + ~QtLockedFile(); + + bool lock(LockMode mode, bool block = true); + bool unlock(); + bool isLocked() const; + LockMode lockMode() const; + +private: +#ifdef Q_OS_WIN + Qt::HANDLE m_semaphore_hnd; + Qt::HANDLE m_mutex_hnd; +#endif + LockMode m_lock_mode; +}; + +} // namespace SharedTools + +#endif // QTLOCKEDFILE_H diff --git a/src/third_party/qtlockedfile/qtlockedfile.pri b/src/third_party/qtlockedfile/qtlockedfile.pri new file mode 100644 index 00000000..46d1f1a1 --- /dev/null +++ b/src/third_party/qtlockedfile/qtlockedfile.pri @@ -0,0 +1,13 @@ +INCLUDEPATH += $$PWD +DEPENDPATH += $$PWD +HEADERS += $$PWD/qtlockedfile.h +SOURCES += $$PWD/qtlockedfile.cpp + +unix:SOURCES += $$PWD/qtlockedfile_unix.cpp +win32:SOURCES += $$PWD/qtlockedfile_win.cpp + +win32:contains(TEMPLATE, lib):contains(CONFIG, shared) { + DEFINES += QT_QTLOCKEDFILE_EXPORT=__declspec(dllexport) +} + + diff --git a/src/third_party/qtsingleapplication/qtlockedfile_unix.cpp b/src/third_party/qtlockedfile/qtlockedfile_unix.cpp similarity index 55% rename from src/third_party/qtsingleapplication/qtlockedfile_unix.cpp rename to src/third_party/qtlockedfile/qtlockedfile_unix.cpp index f5997ba4..02e65a81 100644 --- a/src/third_party/qtsingleapplication/qtlockedfile_unix.cpp +++ b/src/third_party/qtlockedfile/qtlockedfile_unix.cpp @@ -1,17 +1,18 @@ /**************************************************************************** ** -** This file is part of a Qt Solutions component. -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Solutions Commercial License Agreement provided -** with the Software or, alternatively, in accordance with the terms -** contained in a written agreement between you and Nokia. -** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software @@ -19,37 +20,21 @@ ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** Please note Third Party Software included with Qt Solutions may impose -** additional restrictions and it is the user's responsibility to ensure -** that they have met the licensing requirements of the GPL, LGPL, or Qt -** Solutions Commercial license and the relevant license of the Third -** Party Software they are using. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** ****************************************************************************/ +#include "qtlockedfile.h" + #include #include #include #include -#include "qtlockedfile.h" +namespace SharedTools { bool QtLockedFile::lock(LockMode mode, bool block) { @@ -57,10 +42,10 @@ bool QtLockedFile::lock(LockMode mode, bool block) qWarning("QtLockedFile::lock(): file is not opened"); return false; } - + if (mode == NoLock) return unlock(); - + if (mode == m_lock_mode) return true; @@ -74,14 +59,14 @@ bool QtLockedFile::lock(LockMode mode, bool block) fl.l_type = (mode == ReadLock) ? F_RDLCK : F_WRLCK; int cmd = block ? F_SETLKW : F_SETLK; int ret = fcntl(handle(), cmd, &fl); - + if (ret == -1) { if (errno != EINTR && errno != EAGAIN) qWarning("QtLockedFile::lock(): fcntl: %s", strerror(errno)); return false; } - + m_lock_mode = mode; return true; } @@ -103,13 +88,14 @@ bool QtLockedFile::unlock() fl.l_len = 0; fl.l_type = F_UNLCK; int ret = fcntl(handle(), F_SETLKW, &fl); - + if (ret == -1) { qWarning("QtLockedFile::lock(): fcntl: %s", strerror(errno)); return false; } - + m_lock_mode = NoLock; + remove(); return true; } @@ -119,3 +105,4 @@ QtLockedFile::~QtLockedFile() unlock(); } +} // namespace SharedTools diff --git a/src/third_party/qtlockedfile/qtlockedfile_win.cpp b/src/third_party/qtlockedfile/qtlockedfile_win.cpp new file mode 100644 index 00000000..b1500b09 --- /dev/null +++ b/src/third_party/qtlockedfile/qtlockedfile_win.cpp @@ -0,0 +1,196 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "qtlockedfile.h" + +#include +#include + +namespace SharedTools { + +#define SEMAPHORE_PREFIX "QtLockedFile semaphore " +#define MUTEX_PREFIX "QtLockedFile mutex " +#define SEMAPHORE_MAX 100 + +static QString errorCodeToString(DWORD errorCode) +{ + QString result; + char *data = 0; + FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + 0, errorCode, 0, + (char*)&data, 0, 0); + result = QString::fromLocal8Bit(data); + if (data != 0) + LocalFree(data); + + if (result.endsWith(QLatin1Char('\n'))) + result.truncate(result.length() - 1); + + return result; +} + +bool QtLockedFile::lock(LockMode mode, bool block) +{ + if (!isOpen()) { + qWarning("QtLockedFile::lock(): file is not opened"); + return false; + } + + if (mode == m_lock_mode) + return true; + + if (m_lock_mode != 0) + unlock(); + + if (m_semaphore_hnd == 0) { + QFileInfo fi(*this); + QString sem_name = QString::fromLatin1(SEMAPHORE_PREFIX) + + fi.absoluteFilePath().toLower(); + + m_semaphore_hnd = CreateSemaphoreW(0, SEMAPHORE_MAX, SEMAPHORE_MAX, + (TCHAR*)sem_name.utf16()); + + if (m_semaphore_hnd == 0) { + qWarning("QtLockedFile::lock(): CreateSemaphore: %s", + errorCodeToString(GetLastError()).toLatin1().constData()); + return false; + } + } + + bool gotMutex = false; + int decrement; + if (mode == ReadLock) { + decrement = 1; + } else { + decrement = SEMAPHORE_MAX; + if (m_mutex_hnd == 0) { + QFileInfo fi(*this); + QString mut_name = QString::fromLatin1(MUTEX_PREFIX) + + fi.absoluteFilePath().toLower(); + + m_mutex_hnd = CreateMutexW(NULL, false, (TCHAR*)mut_name.utf16()); + + if (m_mutex_hnd == 0) { + qWarning("QtLockedFile::lock(): CreateMutex: %s", + errorCodeToString(GetLastError()).toLatin1().constData()); + return false; + } + } + DWORD res = WaitForSingleObject(m_mutex_hnd, block ? INFINITE : 0); + if (res == WAIT_TIMEOUT) + return false; + if (res == WAIT_FAILED) { + qWarning("QtLockedFile::lock(): WaitForSingleObject (mutex): %s", + errorCodeToString(GetLastError()).toLatin1().constData()); + return false; + } + gotMutex = true; + } + + for (int i = 0; i < decrement; ++i) { + DWORD res = WaitForSingleObject(m_semaphore_hnd, block ? INFINITE : 0); + if (res == WAIT_TIMEOUT) { + if (i) { + // A failed nonblocking rw locking. Undo changes to semaphore. + if (ReleaseSemaphore(m_semaphore_hnd, i, NULL) == 0) { + qWarning("QtLockedFile::unlock(): ReleaseSemaphore: %s", + errorCodeToString(GetLastError()).toLatin1().constData()); + // Fall through + } + } + if (gotMutex) + ReleaseMutex(m_mutex_hnd); + return false; + } + if (res != WAIT_OBJECT_0) { + if (gotMutex) + ReleaseMutex(m_mutex_hnd); + qWarning("QtLockedFile::lock(): WaitForSingleObject (semaphore): %s", + errorCodeToString(GetLastError()).toLatin1().constData()); + return false; + } + } + + m_lock_mode = mode; + if (gotMutex) + ReleaseMutex(m_mutex_hnd); + return true; +} + +bool QtLockedFile::unlock() +{ + if (!isOpen()) { + qWarning("QtLockedFile::unlock(): file is not opened"); + return false; + } + + if (!isLocked()) + return true; + + int increment; + if (m_lock_mode == ReadLock) + increment = 1; + else + increment = SEMAPHORE_MAX; + + DWORD ret = ReleaseSemaphore(m_semaphore_hnd, increment, 0); + if (ret == 0) { + qWarning("QtLockedFile::unlock(): ReleaseSemaphore: %s", + errorCodeToString(GetLastError()).toLatin1().constData()); + return false; + } + + m_lock_mode = QtLockedFile::NoLock; + remove(); + return true; +} + +QtLockedFile::~QtLockedFile() +{ + if (isOpen()) + unlock(); + if (m_mutex_hnd != 0) { + DWORD ret = CloseHandle(m_mutex_hnd); + if (ret == 0) { + qWarning("QtLockedFile::~QtLockedFile(): CloseHandle (mutex): %s", + errorCodeToString(GetLastError()).toLatin1().constData()); + } + m_mutex_hnd = 0; + } + if (m_semaphore_hnd != 0) { + DWORD ret = CloseHandle(m_semaphore_hnd); + if (ret == 0) { + qWarning("QtLockedFile::~QtLockedFile(): CloseHandle (semaphore): %s", + errorCodeToString(GetLastError()).toLatin1().constData()); + } + m_semaphore_hnd = 0; + } +} + +} // namespace SharedTools diff --git a/src/third_party/qtsingleapplication/LGPL_EXCEPTION.txt b/src/third_party/qtsingleapplication/LGPL_EXCEPTION.txt deleted file mode 100644 index 0b56ff1e..00000000 --- a/src/third_party/qtsingleapplication/LGPL_EXCEPTION.txt +++ /dev/null @@ -1,10 +0,0 @@ -Nokia Qt LGPL Exception version 1.0 - -As a special exception to the GNU Lesser General Public License -version 2.1, the object code form of a "work that uses the Library" -may incorporate material from a header file that is part of the -Library. You may distribute such object code under terms of your -choice, provided that the incorporated material (i) does not exceed -more than 5% of the total size of the Library; and (ii) is limited to -numerical parameters, data structure layouts, accessors, macros, -inline functions and templates. diff --git a/src/third_party/qtsingleapplication/LICENSE.GPL3 b/src/third_party/qtsingleapplication/LICENSE.GPL3 deleted file mode 100644 index 94a9ed02..00000000 --- a/src/third_party/qtsingleapplication/LICENSE.GPL3 +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/src/third_party/qtsingleapplication/LICENSE.LGPL b/src/third_party/qtsingleapplication/LICENSE.LGPL deleted file mode 100644 index 5ab7695a..00000000 --- a/src/third_party/qtsingleapplication/LICENSE.LGPL +++ /dev/null @@ -1,504 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! - - diff --git a/src/third_party/qtsingleapplication/QtLockedFile b/src/third_party/qtsingleapplication/QtLockedFile deleted file mode 100644 index 16b48ba9..00000000 --- a/src/third_party/qtsingleapplication/QtLockedFile +++ /dev/null @@ -1 +0,0 @@ -#include "qtlockedfile.h" diff --git a/src/third_party/qtsingleapplication/QtSingleApplication b/src/third_party/qtsingleapplication/QtSingleApplication deleted file mode 100644 index d111bf72..00000000 --- a/src/third_party/qtsingleapplication/QtSingleApplication +++ /dev/null @@ -1 +0,0 @@ -#include "qtsingleapplication.h" diff --git a/src/third_party/qtsingleapplication/README.txt b/src/third_party/qtsingleapplication/README.txt new file mode 100644 index 00000000..1909a33f --- /dev/null +++ b/src/third_party/qtsingleapplication/README.txt @@ -0,0 +1,10 @@ +This is the src directory of the QtSingleApplication solution +integrated over from addons/main/utils/qtsingleapplication/src . + +namespace.patch was applied to introduce the SharedTools namespace. + +It additionally requires the QtLockedFile solution. + +History: + +16.05.2008 Integrated diff --git a/src/third_party/qtsingleapplication/namespace.patch b/src/third_party/qtsingleapplication/namespace.patch new file mode 100644 index 00000000..2876e3a3 --- /dev/null +++ b/src/third_party/qtsingleapplication/namespace.patch @@ -0,0 +1,133 @@ + +--- qtlocalpeer.cpp 1970-01-01 01:00:00.000000000 ++++ qtlocalpeer.cpp 2008/05/16 10:36:53.000000000 +@@ -13,6 +13,8 @@ + #include + #endif + ++namespace SharedTools { ++ + const char* QtLocalPeer::ack = "ack"; + + QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId) +@@ -139,3 +141,5 @@ + delete socket; + emit messageReceived(message); // ##(might take a long time to return) + } ++ ++} + +--- qtlocalpeer.h 1970-01-01 01:00:00.000000000 ++++ qtlocalpeer.h 2008/05/16 10:36:53.000000000 +@@ -1,9 +1,11 @@ + ++ + #include + #include + #include + #include + ++namespace SharedTools { + + class QtLocalPeer : public QObject + { +@@ -31,3 +33,5 @@ + private: + static const char* ack; + }; ++ ++} // SharedTools + +--- qtsingleapplication.cpp 1970-01-01 01:00:00.000000000 ++++ qtsingleapplication.cpp 2008/05/16 10:36:53.000000000 +@@ -3,6 +3,8 @@ + #include "qtlocalpeer.h" + #include + ++namespace SharedTools { ++ + void QtSingleApplication::sysInit(const QString &appId) + { + actWin = 0; +@@ -95,3 +97,5 @@ + actWin->activateWindow(); + } + } ++ ++} + +--- qtsingleapplication.h 1970-01-01 01:00:00.000000000 ++++ qtsingleapplication.h 2008/05/16 10:36:53.000000000 +@@ -1,6 +1,8 @@ + + #include + ++namespace SharedTools { ++ + class QtLocalPeer; + + class QtSingleApplication : public QApplication +@@ -47,3 +49,5 @@ + QtLocalPeer *peer; + QWidget *actWin; + }; ++ ++} + +--- qtsingleapplication.pri 1970-01-01 01:00:00.000000000 ++++ qtsingleapplication.pri 2008/05/16 10:36:53.000000000 +@@ -6,7 +6,7 @@ + QT *= network + + gotqtlockedfile = $$find(HEADERS, .*qtlockedfile.h) +-isEmpty(gotqtlockedfile):include(../../qtlockedfile/src/qtlockedfile.pri) ++isEmpty(gotqtlockedfile):include(../qtlockedfile/qtlockedfile.pri) + + + win32:contains(TEMPLATE, lib):contains(CONFIG, shared) { + +--- qtsinglecoreapplication.cpp 1970-01-01 01:00:00.000000000 ++++ qtsinglecoreapplication.cpp 2008/05/16 10:36:53.000000000 +@@ -2,6 +2,7 @@ + #include "qtsinglecoreapplication.h" + #include "qtlocalpeer.h" + ++namespace SharedTools { + + QtSingleCoreApplication::QtSingleCoreApplication(int &argc, char **argv) + : QCoreApplication(argc, argv) +@@ -36,3 +37,4 @@ + return peer->applicationId(); + } + ++} + +--- qtsinglecoreapplication.h 1970-01-01 01:00:00.000000000 ++++ qtsinglecoreapplication.h 2008/05/16 10:36:53.000000000 +@@ -1,6 +1,8 @@ + + #include + ++namespace SharedTools { ++ + class QtLocalPeer; + + class QtSingleCoreApplication : public QCoreApplication +@@ -25,3 +27,5 @@ + private: + QtLocalPeer* peer; + }; ++ ++} + +--- qtsinglecoreapplication.pri 1970-01-01 01:00:00.000000000 ++++ qtsinglecoreapplication.pri 2008/05/16 10:36:53.000000000 +@@ -6,7 +6,7 @@ + QT *= network + + gotqtlockedfile = $$find(HEADERS, .*qtlockedfile.h) +-isEmpty(gotqtlockedfile):include(../../qtlockedfile/src/qtlockedfile.pri) ++isEmpty(gotqtlockedfile):include(../qtlockedfile/qtlockedfile.pri) + + + win32:contains(TEMPLATE, lib):contains(CONFIG, shared) { diff --git a/src/third_party/qtsingleapplication/qtlocalpeer.cpp b/src/third_party/qtsingleapplication/qtlocalpeer.cpp index 57ac9699..43e6bf42 100644 --- a/src/third_party/qtsingleapplication/qtlocalpeer.cpp +++ b/src/third_party/qtsingleapplication/qtlocalpeer.cpp @@ -1,17 +1,18 @@ /**************************************************************************** ** -** This file is part of a Qt Solutions component. -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Solutions Commercial License Agreement provided -** with the Software or, alternatively, in accordance with the terms -** contained in a written agreement between you and Nokia. -** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software @@ -19,91 +20,65 @@ ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** Please note Third Party Software included with Qt Solutions may impose -** additional restrictions and it is the user's responsibility to ensure -** that they have met the licensing requirements of the GPL, LGPL, or Qt -** Solutions Commercial license and the relevant license of the Third -** Party Software they are using. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** ****************************************************************************/ - #include "qtlocalpeer.h" -#include -#include + +#include +#include #if defined(Q_OS_WIN) -#include -#include +#include +#include typedef BOOL(WINAPI*PProcessIdToSessionId)(DWORD,DWORD*); static PProcessIdToSessionId pProcessIdToSessionId = 0; #endif + #if defined(Q_OS_UNIX) #include #include #endif -namespace QtLP_Private { -#include "qtlockedfile.cpp" -#if defined(Q_OS_WIN) -#include "qtlockedfile_win.cpp" -#else -#include "qtlockedfile_unix.cpp" -#endif -} +namespace SharedTools { -const char* QtLocalPeer::ack = "ack"; +static const char ack[] = "ack"; -QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId) - : QObject(parent), id(appId) +QString QtLocalPeer::appSessionId(const QString &appId) { - QString prefix = id; - if (id.isEmpty()) { - id = QCoreApplication::applicationFilePath(); -#if defined(Q_OS_WIN) - id = id.toLower(); -#endif - prefix = id.section(QLatin1Char('/'), -1); - } - prefix.remove(QRegExp("[^a-zA-Z]")); - prefix.truncate(6); - - QByteArray idc = id.toUtf8(); + QByteArray idc = appId.toUtf8(); quint16 idNum = qChecksum(idc.constData(), idc.size()); - socketName = QLatin1String("qtsingleapp-") + prefix - + QLatin1Char('-') + QString::number(idNum, 16); + //### could do: two 16bit checksums over separate halves of id, for a 32bit result - improved uniqeness probability. Every-other-char split would be best. + QString res = QLatin1String("qtsingleapplication-") + + QString::number(idNum, 16); #if defined(Q_OS_WIN) if (!pProcessIdToSessionId) { - QLibrary lib("kernel32"); + QLibrary lib(QLatin1String("kernel32")); pProcessIdToSessionId = (PProcessIdToSessionId)lib.resolve("ProcessIdToSessionId"); } if (pProcessIdToSessionId) { DWORD sessionId = 0; pProcessIdToSessionId(GetCurrentProcessId(), &sessionId); - socketName += QLatin1Char('-') + QString::number(sessionId, 16); + res += QLatin1Char('-') + QString::number(sessionId, 16); } #else - socketName += QLatin1Char('-') + QString::number(::getuid(), 16); + res += QLatin1Char('-') + QString::number(::getuid(), 16); #endif + return res; +} +QtLocalPeer::QtLocalPeer(QObject *parent, const QString &appId) + : QObject(parent), id(appId) +{ + if (id.isEmpty()) + id = QCoreApplication::applicationFilePath(); //### On win, check if this returns .../argv[0] without casefolding; .\MYAPP == .\myapp on Win + + socketName = appSessionId(id); server = new QLocalServer(this); QString lockName = QDir(QDir::tempPath()).absolutePath() + QLatin1Char('/') + socketName @@ -112,39 +87,31 @@ QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId) lockFile.open(QIODevice::ReadWrite); } - - bool QtLocalPeer::isClient() { if (lockFile.isLocked()) return false; - if (!lockFile.lock(QtLP_Private::QtLockedFile::WriteLock, false)) + if (!lockFile.lock(QtLockedFile::WriteLock, false)) return true; + if (!QLocalServer::removeServer(socketName)) + qWarning("QtSingleCoreApplication: could not cleanup socket"); bool res = server->listen(socketName); -#if defined(Q_OS_UNIX) && (QT_VERSION >= QT_VERSION_CHECK(4,5,0)) - // ### Workaround - if (!res && server->serverError() == QAbstractSocket::AddressInUseError) { - QFile::remove(QDir::cleanPath(QDir::tempPath())+QLatin1Char('/')+socketName); - res = server->listen(socketName); - } -#endif if (!res) qWarning("QtSingleCoreApplication: listen on local socket failed, %s", qPrintable(server->errorString())); QObject::connect(server, SIGNAL(newConnection()), SLOT(receiveConnection())); return false; } - -bool QtLocalPeer::sendMessage(const QString &message, int timeout) +bool QtLocalPeer::sendMessage(const QString &message, int timeout, bool block) { if (!isClient()) return false; QLocalSocket socket; bool connOk = false; - for(int i = 0; i < 2; i++) { + for (int i = 0; i < 2; i++) { // Try twice, in case the other instance is just starting up socket.connectToServer(socketName); connOk = socket.waitForConnected(timeout/2); @@ -165,24 +132,25 @@ bool QtLocalPeer::sendMessage(const QString &message, int timeout) QDataStream ds(&socket); ds.writeBytes(uMsg.constData(), uMsg.size()); bool res = socket.waitForBytesWritten(timeout); - if (res) { - res &= socket.waitForReadyRead(timeout); // wait for ack - if (res) { - res &= (socket.read(qstrlen(ack)) == ack); - } - } + res &= socket.waitForReadyRead(timeout); // wait for ack + res &= (socket.read(qstrlen(ack)) == ack); + if (block) // block until peer disconnects + socket.waitForDisconnected(-1); return res; } - void QtLocalPeer::receiveConnection() { QLocalSocket* socket = server->nextPendingConnection(); if (!socket) return; - while (socket->bytesAvailable() < (int)sizeof(quint32)) - socket->waitForReadyRead(); + // Why doesn't Qt have a blocking stream that takes care of this shait??? + while (socket->bytesAvailable() < static_cast(sizeof(quint32))) { + if (!socket->isValid()) // stale request + return; + socket->waitForReadyRead(1000); + } QDataStream ds(socket); QByteArray uMsg; quint32 remaining; @@ -190,19 +158,24 @@ void QtLocalPeer::receiveConnection() uMsg.resize(remaining); int got = 0; char* uMsgBuf = uMsg.data(); + //qDebug() << "RCV: remaining" << remaining; do { got = ds.readRawData(uMsgBuf, remaining); remaining -= got; uMsgBuf += got; + //qDebug() << "RCV: got" << got << "remaining" << remaining; } while (remaining && got >= 0 && socket->waitForReadyRead(2000)); + //### error check: got<0 if (got < 0) { qWarning() << "QtLocalPeer: Message reception failed" << socket->errorString(); delete socket; return; } - QString message(QString::fromUtf8(uMsg)); + // ### async this + QString message = QString::fromUtf8(uMsg.constData(), uMsg.size()); socket->write(ack, qstrlen(ack)); socket->waitForBytesWritten(1000); - delete socket; - emit messageReceived(message); //### (might take a long time to return) + emit messageReceived(message, socket); // ##(might take a long time to return) } + +} // namespace SharedTools diff --git a/src/third_party/qtsingleapplication/qtlocalpeer.h b/src/third_party/qtsingleapplication/qtlocalpeer.h index 1169e1fb..afff3929 100644 --- a/src/third_party/qtsingleapplication/qtlocalpeer.h +++ b/src/third_party/qtsingleapplication/qtlocalpeer.h @@ -1,17 +1,18 @@ /**************************************************************************** ** -** This file is part of a Qt Solutions component. -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Solutions Commercial License Agreement provided -** with the Software or, alternatively, in accordance with the terms -** contained in a written agreement between you and Nokia. -** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software @@ -19,53 +20,35 @@ ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** Please note Third Party Software included with Qt Solutions may impose -** additional restrictions and it is the user's responsibility to ensure -** that they have met the licensing requirements of the GPL, LGPL, or Qt -** Solutions Commercial license and the relevant license of the Third -** Party Software they are using. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** ****************************************************************************/ - -#include -#include -#include - -namespace QtLP_Private { #include "qtlockedfile.h" -} + +#include +#include +#include + +namespace SharedTools { class QtLocalPeer : public QObject { Q_OBJECT public: - QtLocalPeer(QObject *parent = 0, const QString &appId = QString()); + explicit QtLocalPeer(QObject *parent = 0, const QString &appId = QString()); bool isClient(); - bool sendMessage(const QString &message, int timeout); + bool sendMessage(const QString &message, int timeout, bool block); QString applicationId() const { return id; } + static QString appSessionId(const QString &appId); Q_SIGNALS: - void messageReceived(const QString &message); + void messageReceived(const QString &message, QObject *socket); protected Q_SLOTS: void receiveConnection(); @@ -74,8 +57,7 @@ protected: QString id; QString socketName; QLocalServer* server; - QtLP_Private::QtLockedFile lockFile; - -private: - static const char* ack; + QtLockedFile lockFile; }; + +} // namespace SharedTools diff --git a/src/third_party/qtsingleapplication/qtlockedfile.h b/src/third_party/qtsingleapplication/qtlockedfile.h deleted file mode 100644 index e229484d..00000000 --- a/src/third_party/qtsingleapplication/qtlockedfile.h +++ /dev/null @@ -1,101 +0,0 @@ -/**************************************************************************** -** -** This file is part of a Qt Solutions component. -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Solutions Commercial License Agreement provided -** with the Software or, alternatively, in accordance with the terms -** contained in a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** Please note Third Party Software included with Qt Solutions may impose -** additional restrictions and it is the user's responsibility to ensure -** that they have met the licensing requirements of the GPL, LGPL, or Qt -** Solutions Commercial license and the relevant license of the Third -** Party Software they are using. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** -****************************************************************************/ - -#ifndef QTLOCKEDFILE_H -#define QTLOCKEDFILE_H - -#include -#ifdef Q_OS_WIN -#include -#endif - -#if defined(Q_WS_WIN) -# if !defined(QT_QTLOCKEDFILE_EXPORT) && !defined(QT_QTLOCKEDFILE_IMPORT) -# define QT_QTLOCKEDFILE_EXPORT -# elif defined(QT_QTLOCKEDFILE_IMPORT) -# if defined(QT_QTLOCKEDFILE_EXPORT) -# undef QT_QTLOCKEDFILE_EXPORT -# endif -# define QT_QTLOCKEDFILE_EXPORT __declspec(dllimport) -# elif defined(QT_QTLOCKEDFILE_EXPORT) -# undef QT_QTLOCKEDFILE_EXPORT -# define QT_QTLOCKEDFILE_EXPORT __declspec(dllexport) -# endif -#else -# define QT_QTLOCKEDFILE_EXPORT -#endif - -class QT_QTLOCKEDFILE_EXPORT QtLockedFile : public QFile -{ -public: - enum LockMode { NoLock = 0, ReadLock, WriteLock }; - - QtLockedFile(); - QtLockedFile(const QString &name); - ~QtLockedFile(); - - bool open(OpenMode mode); - - bool lock(LockMode mode, bool block = true); - bool unlock(); - bool isLocked() const; - LockMode lockMode() const; - -private: -#ifdef Q_OS_WIN - Qt::HANDLE wmutex; - Qt::HANDLE rmutex; - QVector rmutexes; - QString mutexname; - - Qt::HANDLE getMutexHandle(int idx, bool doCreate); - bool waitMutex(Qt::HANDLE mutex, bool doBlock); - -#endif - LockMode m_lock_mode; -}; - -#endif diff --git a/src/third_party/qtsingleapplication/qtlockedfile_win.cpp b/src/third_party/qtsingleapplication/qtlockedfile_win.cpp deleted file mode 100644 index 8bbaa53b..00000000 --- a/src/third_party/qtsingleapplication/qtlockedfile_win.cpp +++ /dev/null @@ -1,213 +0,0 @@ -/**************************************************************************** -** -** This file is part of a Qt Solutions component. -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Solutions Commercial License Agreement provided -** with the Software or, alternatively, in accordance with the terms -** contained in a written agreement between you and Nokia. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** Please note Third Party Software included with Qt Solutions may impose -** additional restrictions and it is the user's responsibility to ensure -** that they have met the licensing requirements of the GPL, LGPL, or Qt -** Solutions Commercial license and the relevant license of the Third -** Party Software they are using. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** -****************************************************************************/ - -#include "qtlockedfile.h" -#include -#include - -#define MUTEX_PREFIX "QtLockedFile mutex " -// Maximum number of concurrent read locks. Must not be greater than MAXIMUM_WAIT_OBJECTS -#define MAX_READERS MAXIMUM_WAIT_OBJECTS - -Qt::HANDLE QtLockedFile::getMutexHandle(int idx, bool doCreate) -{ - if (mutexname.isEmpty()) { - QFileInfo fi(*this); - mutexname = QString::fromLatin1(MUTEX_PREFIX) - + fi.absoluteFilePath().toLower(); - } - QString mname(mutexname); - if (idx >= 0) - mname += QString::number(idx); - - Qt::HANDLE mutex; - if (doCreate) { - QT_WA( { mutex = CreateMutexW(NULL, FALSE, (TCHAR*)mname.utf16()); }, - { mutex = CreateMutexA(NULL, FALSE, mname.toLocal8Bit().constData()); } ); - if (!mutex) { - qErrnoWarning("QtLockedFile::lock(): CreateMutex failed"); - return 0; - } - } - else { - QT_WA( { mutex = OpenMutexW(SYNCHRONIZE | MUTEX_MODIFY_STATE, FALSE, (TCHAR*)mname.utf16()); }, - { mutex = OpenMutexA(SYNCHRONIZE | MUTEX_MODIFY_STATE, FALSE, mname.toLocal8Bit().constData()); } ); - if (!mutex) { - if (GetLastError() != ERROR_FILE_NOT_FOUND) - qErrnoWarning("QtLockedFile::lock(): OpenMutex failed"); - return 0; - } - } - return mutex; -} - -bool QtLockedFile::waitMutex(Qt::HANDLE mutex, bool doBlock) -{ - Q_ASSERT(mutex); - DWORD res = WaitForSingleObject(mutex, doBlock ? INFINITE : 0); - switch (res) { - case WAIT_OBJECT_0: - case WAIT_ABANDONED: - return true; - break; - case WAIT_TIMEOUT: - break; - default: - qErrnoWarning("QtLockedFile::lock(): WaitForSingleObject failed"); - } - return false; -} - - - -bool QtLockedFile::lock(LockMode mode, bool block) -{ - if (!isOpen()) { - qWarning("QtLockedFile::lock(): file is not opened"); - return false; - } - - if (mode == NoLock) - return unlock(); - - if (mode == m_lock_mode) - return true; - - if (m_lock_mode != NoLock) - unlock(); - - if (!wmutex && !(wmutex = getMutexHandle(-1, true))) - return false; - - if (!waitMutex(wmutex, block)) - return false; - - if (mode == ReadLock) { - int idx = 0; - for (; idx < MAX_READERS; idx++) { - rmutex = getMutexHandle(idx, false); - if (!rmutex || waitMutex(rmutex, false)) - break; - CloseHandle(rmutex); - } - bool ok = true; - if (idx >= MAX_READERS) { - qWarning("QtLockedFile::lock(): too many readers"); - rmutex = 0; - ok = false; - } - else if (!rmutex) { - rmutex = getMutexHandle(idx, true); - if (!rmutex || !waitMutex(rmutex, false)) - ok = false; - } - if (!ok && rmutex) { - CloseHandle(rmutex); - rmutex = 0; - } - ReleaseMutex(wmutex); - if (!ok) - return false; - } - else { - Q_ASSERT(rmutexes.isEmpty()); - for (int i = 0; i < MAX_READERS; i++) { - Qt::HANDLE mutex = getMutexHandle(i, false); - if (mutex) - rmutexes.append(mutex); - } - if (rmutexes.size()) { - DWORD res = WaitForMultipleObjects(rmutexes.size(), rmutexes.constData(), - TRUE, block ? INFINITE : 0); - if (res != WAIT_OBJECT_0 && res != WAIT_ABANDONED) { - if (res != WAIT_TIMEOUT) - qErrnoWarning("QtLockedFile::lock(): WaitForMultipleObjects failed"); - m_lock_mode = WriteLock; // trick unlock() to clean up - semiyucky - unlock(); - return false; - } - } - } - - m_lock_mode = mode; - return true; -} - -bool QtLockedFile::unlock() -{ - if (!isOpen()) { - qWarning("QtLockedFile::unlock(): file is not opened"); - return false; - } - - if (!isLocked()) - return true; - - if (m_lock_mode == ReadLock) { - ReleaseMutex(rmutex); - CloseHandle(rmutex); - rmutex = 0; - } - else { - foreach(Qt::HANDLE mutex, rmutexes) { - ReleaseMutex(mutex); - CloseHandle(mutex); - } - rmutexes.clear(); - ReleaseMutex(wmutex); - } - - m_lock_mode = QtLockedFile::NoLock; - return true; -} - -QtLockedFile::~QtLockedFile() -{ - if (isOpen()) - unlock(); - if (wmutex) - CloseHandle(wmutex); -} diff --git a/src/third_party/qtsingleapplication/qtsingleapplication.cpp b/src/third_party/qtsingleapplication/qtsingleapplication.cpp index 2ab0bbd9..692dd844 100644 --- a/src/third_party/qtsingleapplication/qtsingleapplication.cpp +++ b/src/third_party/qtsingleapplication/qtsingleapplication.cpp @@ -1,17 +1,18 @@ /**************************************************************************** ** -** This file is part of a Qt Solutions component. -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Solutions Commercial License Agreement provided -** with the Software or, alternatively, in accordance with the terms -** contained in a written agreement between you and Nokia. -** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software @@ -19,311 +20,167 @@ ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** Please note Third Party Software included with Qt Solutions may impose -** additional restrictions and it is the user's responsibility to ensure -** that they have met the licensing requirements of the GPL, LGPL, or Qt -** Solutions Commercial license and the relevant license of the Third -** Party Software they are using. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** ****************************************************************************/ - #include "qtsingleapplication.h" #include "qtlocalpeer.h" -#include +#include -/*! - \class QtSingleApplication qtsingleapplication.h - \brief The QtSingleApplication class provides an API to detect and - communicate with running instances of an application. +#include +#include +#include +#include - This class allows you to create applications where only one - instance should be running at a time. I.e., if the user tries to - launch another instance, the already running instance will be - activated instead. Another usecase is a client-server system, - where the first started instance will assume the role of server, - and the later instances will act as clients of that server. +namespace SharedTools { - By default, the full path of the executable file is used to - determine whether two processes are instances of the same - application. You can also provide an explicit identifier string - that will be compared instead. +static const int instancesSize = 1024; - The application should create the QtSingleApplication object early - in the startup phase, and call isRunning() or sendMessage() to - find out if another instance of this application is already - running. Startup parameters (e.g. the name of the file the user - wanted this new instance to open) can be passed to the running - instance in the sendMessage() function. - - If isRunning() or sendMessage() returns false, it means that no - other instance is running, and this instance has assumed the role - as the running instance. The application should continue with the - initialization of the application user interface before entering - the event loop with exec(), as normal. The messageReceived() - signal will be emitted when the application receives messages from - another instance of the same application. - - If isRunning() or sendMessage() returns true, another instance is - already running, and the application should terminate or enter - client mode. - - If a message is received it might be helpful to the user to raise - the application so that it becomes visible. To facilitate this, - QtSingleApplication provides the setActivationWindow() function - and the activateWindow() slot. - - Here's an example that shows how to convert an existing - application to use QtSingleApplication. It is very simple and does - not make use of all QtSingleApplication's functionality (see the - examples for that). - - \code - // Original - int main(int argc, char **argv) - { - QApplication app(argc, argv); - - MyMainWidget mmw; - - mmw.show(); - return app.exec(); - } - - // Single instance - int main(int argc, char **argv) - { - QtSingleApplication app(argc, argv); - - if (app.isRunning()) - return 0; - - MyMainWidget mmw; - - app.setActivationWindow(&mmw); - - mmw.show(); - return app.exec(); - } - \endcode - - Once this QtSingleApplication instance is destroyed(for example, - when the user quits), when the user next attempts to run the - application this instance will not, of course, be encountered. The - next instance to call isRunning() or sendMessage() will assume the - role as the new running instance. - - For console (non-GUI) applications, QtSingleCoreApplication may be - used instead of this class, to avoid the dependency on the QtGui - library. - - \sa QtSingleCoreApplication -*/ - - -void QtSingleApplication::sysInit(const QString &appId) +static QString instancesLockFilename(const QString &appSessionId) { - actWin = 0; - peer = new QtLocalPeer(this, appId); - connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&))); + const QChar slash(QLatin1Char('/')); + QString res = QDir::tempPath(); + if (!res.endsWith(slash)) + res += slash; + return res + appSessionId + QLatin1String("-instances"); } - -/*! - Creates a QtSingleApplication object. The application identifier - will be QCoreApplication::applicationFilePath(). \a argc, \a - argv, and \a GUIenabled are passed on to the QAppliation constructor. - - If you are creating a console application (i.e. setting \a - GUIenabled to false), you may consider using - QtSingleCoreApplication instead. -*/ - -QtSingleApplication::QtSingleApplication(int &argc, char **argv, bool GUIenabled) - : QApplication(argc, argv, GUIenabled) -{ - sysInit(); -} - - -/*! - Creates a QtSingleApplication object with the application - identifier \a appId. \a argc and \a argv are passed on to the - QAppliation constructor. -*/ - QtSingleApplication::QtSingleApplication(const QString &appId, int &argc, char **argv) - : QApplication(argc, argv) + : QApplication(argc, argv), + firstPeer(-1), + pidPeer(0) { - sysInit(appId); + this->appId = appId; + + const QString appSessionId = QtLocalPeer::appSessionId(appId); + + // This shared memory holds a zero-terminated array of active (or crashed) instances + instances = new QSharedMemory(appSessionId, this); + actWin = 0; + block = false; + + // First instance creates the shared memory, later instances attach to it + const bool created = instances->create(instancesSize); + if (!created) { + if (!instances->attach()) { + qWarning() << "Failed to initialize instances shared memory: " + << instances->errorString(); + delete instances; + instances = 0; + return; + } + } + + // QtLockedFile is used to workaround QTBUG-10364 + QtLockedFile lockfile(instancesLockFilename(appSessionId)); + + lockfile.open(QtLockedFile::ReadWrite); + lockfile.lock(QtLockedFile::WriteLock); + qint64 *pids = static_cast(instances->data()); + if (!created) { + // Find the first instance that it still running + // The whole list needs to be iterated in order to append to it + for (; *pids; ++pids) { + if (firstPeer == -1 && isRunning(*pids)) + firstPeer = *pids; + } + } + // Add current pid to list and terminate it + *pids++ = QCoreApplication::applicationPid(); + *pids = 0; + pidPeer = new QtLocalPeer(this, appId + QLatin1Char('-') + + QString::number(QCoreApplication::applicationPid())); + connect(pidPeer, SIGNAL(messageReceived(QString,QObject*)), SIGNAL(messageReceived(QString,QObject*))); + pidPeer->isClient(); + lockfile.unlock(); } - -/*! - Creates a QtSingleApplication object. The application identifier - will be QCoreApplication::applicationFilePath(). \a argc, \a - argv, and \a type are passed on to the QAppliation constructor. -*/ -QtSingleApplication::QtSingleApplication(int &argc, char **argv, Type type) - : QApplication(argc, argv, type) +QtSingleApplication::~QtSingleApplication() { - sysInit(); + if (!instances) + return; + const qint64 appPid = QCoreApplication::applicationPid(); + QtLockedFile lockfile(instancesLockFilename(QtLocalPeer::appSessionId(appId))); + lockfile.open(QtLockedFile::ReadWrite); + lockfile.lock(QtLockedFile::WriteLock); + // Rewrite array, removing current pid and previously crashed ones + qint64 *pids = static_cast(instances->data()); + qint64 *newpids = pids; + for (; *pids; ++pids) { + if (*pids != appPid && isRunning(*pids)) + *newpids++ = *pids; + } + *newpids = 0; + lockfile.unlock(); } - -#if defined(Q_WS_X11) -/*! - Special constructor for X11, ref. the documentation of - QApplication's corresponding constructor. The application identifier - will be QCoreApplication::applicationFilePath(). \a dpy, \a visual, - and \a cmap are passed on to the QApplication constructor. -*/ -QtSingleApplication::QtSingleApplication(Display* dpy, Qt::HANDLE visual, Qt::HANDLE cmap) - : QApplication(dpy, visual, cmap) +bool QtSingleApplication::event(QEvent *event) { - sysInit(); + if (event->type() == QEvent::FileOpen) { + QFileOpenEvent *foe = static_cast(event); + emit fileOpenRequest(foe->file()); + return true; + } + return QApplication::event(event); } -/*! - Special constructor for X11, ref. the documentation of - QApplication's corresponding constructor. The application identifier - will be QCoreApplication::applicationFilePath(). \a dpy, \a argc, \a - argv, \a visual, and \a cmap are passed on to the QApplication - constructor. -*/ -QtSingleApplication::QtSingleApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual, Qt::HANDLE cmap) - : QApplication(dpy, argc, argv, visual, cmap) +bool QtSingleApplication::isRunning(qint64 pid) { - sysInit(); + if (pid == -1) { + pid = firstPeer; + if (pid == -1) + return false; + } + + QtLocalPeer peer(this, appId + QLatin1Char('-') + QString::number(pid, 10)); + return peer.isClient(); } -/*! - Special constructor for X11, ref. the documentation of - QApplication's corresponding constructor. The application identifier - will be \a appId. \a dpy, \a argc, \a - argv, \a visual, and \a cmap are passed on to the QApplication - constructor. -*/ -QtSingleApplication::QtSingleApplication(Display* dpy, const QString &appId, int argc, char **argv, Qt::HANDLE visual, Qt::HANDLE cmap) - : QApplication(dpy, argc, argv, visual, cmap) +bool QtSingleApplication::sendMessage(const QString &message, int timeout, qint64 pid) { - sysInit(appId); -} -#endif + if (pid == -1) { + pid = firstPeer; + if (pid == -1) + return false; + } - -/*! - Returns true if another instance of this application is running; - otherwise false. - - This function does not find instances of this application that are - being run by a different user (on Windows: that are running in - another session). - - \sa sendMessage() -*/ - -bool QtSingleApplication::isRunning() -{ - return peer->isClient(); + QtLocalPeer peer(this, appId + QLatin1Char('-') + QString::number(pid, 10)); + return peer.sendMessage(message, timeout, block); } - -/*! - Tries to send the text \a message to the currently running - instance. The QtSingleApplication object in the running instance - will emit the messageReceived() signal when it receives the - message. - - This function returns true if the message has been sent to, and - processed by, the current instance. If there is no instance - currently running, or if the running instance fails to process the - message within \a timeout milliseconds, this function return false. - - \sa isRunning(), messageReceived() -*/ -bool QtSingleApplication::sendMessage(const QString &message, int timeout) +QString QtSingleApplication::applicationId() const { - return peer->sendMessage(message, timeout); + return appId; } - -/*! - Returns the application identifier. Two processes with the same - identifier will be regarded as instances of the same application. -*/ -QString QtSingleApplication::id() const +void QtSingleApplication::setBlock(bool value) { - return peer->applicationId(); + block = value; } - -/*! - Sets the activation window of this application to \a aw. The - activation window is the widget that will be activated by - activateWindow(). This is typically the application's main window. - - If \a activateOnMessage is true (the default), the window will be - activated automatically every time a message is received, just prior - to the messageReceived() signal being emitted. - - \sa activateWindow(), messageReceived() -*/ - -void QtSingleApplication::setActivationWindow(QWidget* aw, bool activateOnMessage) +void QtSingleApplication::setActivationWindow(QWidget *aw, bool activateOnMessage) { actWin = aw; + if (!pidPeer) + return; if (activateOnMessage) - connect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow())); + connect(pidPeer, SIGNAL(messageReceived(QString,QObject*)), this, SLOT(activateWindow())); else - disconnect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow())); + disconnect(pidPeer, SIGNAL(messageReceived(QString,QObject*)), this, SLOT(activateWindow())); } -/*! - Returns the applications activation window if one has been set by - calling setActivationWindow(), otherwise returns 0. - - \sa setActivationWindow() -*/ QWidget* QtSingleApplication::activationWindow() const { return actWin; } -/*! - De-minimizes, raises, and activates this application's activation window. - This function does nothing if no activation window has been set. - - This is a convenience function to show the user that this - application instance has been activated when he has tried to start - another instance. - - This function should typically be called in response to the - messageReceived() signal. By default, that will happen - automatically, if an activation window has been set. - - \sa setActivationWindow(), messageReceived(), initialize() -*/ void QtSingleApplication::activateWindow() { if (actWin) { @@ -333,19 +190,4 @@ void QtSingleApplication::activateWindow() } } - -/*! - \fn void QtSingleApplication::messageReceived(const QString& message) - - This signal is emitted when the current instance receives a \a - message from another instance of this application. - - \sa sendMessage(), setActivationWindow(), activateWindow() -*/ - - -/*! - \fn void QtSingleApplication::initialize(bool dummy = true) - - \obsolete -*/ +} // namespace SharedTools diff --git a/src/third_party/qtsingleapplication/qtsingleapplication.h b/src/third_party/qtsingleapplication/qtsingleapplication.h index b73f5d66..7ba2f1ea 100644 --- a/src/third_party/qtsingleapplication/qtsingleapplication.h +++ b/src/third_party/qtsingleapplication/qtsingleapplication.h @@ -1,17 +1,18 @@ /**************************************************************************** ** -** This file is part of a Qt Solutions component. -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Solutions Commercial License Agreement provided -** with the Software or, alternatively, in accordance with the terms -** contained in a written agreement between you and Nokia. -** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software @@ -19,87 +20,55 @@ ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** Please note Third Party Software included with Qt Solutions may impose -** additional restrictions and it is the user's responsibility to ensure -** that they have met the licensing requirements of the GPL, LGPL, or Qt -** Solutions Commercial license and the relevant license of the Third -** Party Software they are using. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** ****************************************************************************/ +#include -#include +QT_FORWARD_DECLARE_CLASS(QSharedMemory) + +namespace SharedTools { class QtLocalPeer; -#if defined(Q_WS_WIN) -# if !defined(QT_QTSINGLEAPPLICATION_EXPORT) && !defined(QT_QTSINGLEAPPLICATION_IMPORT) -# define QT_QTSINGLEAPPLICATION_EXPORT -# elif defined(QT_QTSINGLEAPPLICATION_IMPORT) -# if defined(QT_QTSINGLEAPPLICATION_EXPORT) -# undef QT_QTSINGLEAPPLICATION_EXPORT -# endif -# define QT_QTSINGLEAPPLICATION_EXPORT __declspec(dllimport) -# elif defined(QT_QTSINGLEAPPLICATION_EXPORT) -# undef QT_QTSINGLEAPPLICATION_EXPORT -# define QT_QTSINGLEAPPLICATION_EXPORT __declspec(dllexport) -# endif -#else -# define QT_QTSINGLEAPPLICATION_EXPORT -#endif - -class QT_QTSINGLEAPPLICATION_EXPORT QtSingleApplication : public QApplication +class QtSingleApplication : public QApplication { Q_OBJECT public: - QtSingleApplication(int &argc, char **argv, bool GUIenabled = true); QtSingleApplication(const QString &id, int &argc, char **argv); - QtSingleApplication(int &argc, char **argv, Type type); -#if defined(Q_WS_X11) - QtSingleApplication(Display* dpy, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0); - QtSingleApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap= 0); - QtSingleApplication(Display* dpy, const QString &appId, int argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0); -#endif + ~QtSingleApplication(); - bool isRunning(); - QString id() const; + bool isRunning(qint64 pid = -1); void setActivationWindow(QWidget* aw, bool activateOnMessage = true); QWidget* activationWindow() const; + bool event(QEvent *event); - // Obsolete: - void initialize(bool dummy = true) - { isRunning(); Q_UNUSED(dummy) } + QString applicationId() const; + void setBlock(bool value); public Q_SLOTS: - bool sendMessage(const QString &message, int timeout = 5000); + bool sendMessage(const QString &message, int timeout = 5000, qint64 pid = -1); void activateWindow(); - Q_SIGNALS: - void messageReceived(const QString &message); - + void messageReceived(const QString &message, QObject *socket); + void fileOpenRequest(const QString &file); private: - void sysInit(const QString &appId = QString()); - QtLocalPeer *peer; + QString instancesFileName(const QString &appId); + + qint64 firstPeer; + QSharedMemory *instances; + QtLocalPeer *pidPeer; QWidget *actWin; + QString appId; + bool block; }; + +} // namespace SharedTools diff --git a/src/third_party/qtsingleapplication/qtsingleapplication.pri b/src/third_party/qtsingleapplication/qtsingleapplication.pri index 5909f049..c807763d 100644 --- a/src/third_party/qtsingleapplication/qtsingleapplication.pri +++ b/src/third_party/qtsingleapplication/qtsingleapplication.pri @@ -1,16 +1,15 @@ -include(../common.pri) -INCLUDEPATH += $$PWD -DEPENDPATH += $$PWD +INCLUDEPATH += $$PWD +DEPENDPATH += $$PWD +HEADERS += $$PWD/qtsingleapplication.h $$PWD/qtlocalpeer.h +SOURCES += $$PWD/qtsingleapplication.cpp $$PWD/qtlocalpeer.cpp + QT *= network +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets -qtsingleapplication-uselib:!qtsingleapplication-buildlib { - LIBS += -L$$QTSINGLEAPPLICATION_LIBDIR -l$$QTSINGLEAPPLICATION_LIBNAME -} else { - SOURCES += $$PWD/qtsingleapplication.cpp $$PWD/qtlocalpeer.cpp - HEADERS += $$PWD/qtsingleapplication.h $$PWD/qtlocalpeer.h -} +gotqtlockedfile = $$find(HEADERS, .*qtlockedfile.h) +isEmpty(gotqtlockedfile):include(../qtlockedfile/qtlockedfile.pri) -win32 { - contains(TEMPLATE, lib):contains(CONFIG, shared):DEFINES += QT_QTSINGLEAPPLICATION_EXPORT - else:qtsingleapplication-uselib:DEFINES += QT_QTSINGLEAPPLICATION_IMPORT + +win32:contains(TEMPLATE, lib):contains(CONFIG, shared) { + DEFINES += QT_QTSINGLEAPPLICATION_EXPORT=__declspec(dllexport) } diff --git a/src/third_party/qtsingleapplication/qtsinglecoreapplication.cpp b/src/third_party/qtsingleapplication/qtsinglecoreapplication.cpp index 9b7fc40b..ff22fdba 100644 --- a/src/third_party/qtsingleapplication/qtsinglecoreapplication.cpp +++ b/src/third_party/qtsingleapplication/qtsinglecoreapplication.cpp @@ -1,17 +1,18 @@ /**************************************************************************** ** -** This file is part of a Qt Solutions component. -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Solutions Commercial License Agreement provided -** with the Software or, alternatively, in accordance with the terms -** contained in a written agreement between you and Nokia. -** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software @@ -19,137 +20,49 @@ ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** Please note Third Party Software included with Qt Solutions may impose -** additional restrictions and it is the user's responsibility to ensure -** that they have met the licensing requirements of the GPL, LGPL, or Qt -** Solutions Commercial license and the relevant license of the Third -** Party Software they are using. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** ****************************************************************************/ - #include "qtsinglecoreapplication.h" #include "qtlocalpeer.h" -/*! - \class QtSingleCoreApplication qtsinglecoreapplication.h - \brief A variant of the QtSingleApplication class for non-GUI applications. - - This class is a variant of QtSingleApplication suited for use in - console (non-GUI) applications. It is an extension of - QCoreApplication (instead of QApplication). It does not require - the QtGui library. - - The API and usage is identical to QtSingleApplication, except that - functions relating to the "activation window" are not present, for - obvious reasons. Please refer to the QtSingleApplication - documentation for explanation of the usage. - - A QtSingleCoreApplication instance can communicate to a - QtSingleApplication instance if they share the same application - id. Hence, this class can be used to create a light-weight - command-line tool that sends commands to a GUI application. - - \sa QtSingleApplication -*/ - -/*! - Creates a QtSingleCoreApplication object. The application identifier - will be QCoreApplication::applicationFilePath(). \a argc and \a - argv are passed on to the QCoreAppliation constructor. -*/ +namespace SharedTools { QtSingleCoreApplication::QtSingleCoreApplication(int &argc, char **argv) : QCoreApplication(argc, argv) { peer = new QtLocalPeer(this); - connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&))); + connect(peer, SIGNAL(messageReceived(QString)), SIGNAL(messageReceived(QString))); } -/*! - Creates a QtSingleCoreApplication object with the application - identifier \a appId. \a argc and \a argv are passed on to the - QCoreAppliation constructor. -*/ QtSingleCoreApplication::QtSingleCoreApplication(const QString &appId, int &argc, char **argv) : QCoreApplication(argc, argv) { peer = new QtLocalPeer(this, appId); - connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&))); + connect(peer, SIGNAL(messageReceived(QString)), SIGNAL(messageReceived(QString))); } -/*! - Returns true if another instance of this application is running; - otherwise false. - - This function does not find instances of this application that are - being run by a different user (on Windows: that are running in - another session). - - \sa sendMessage() -*/ - bool QtSingleCoreApplication::isRunning() { return peer->isClient(); } -/*! - Tries to send the text \a message to the currently running - instance. The QtSingleCoreApplication object in the running instance - will emit the messageReceived() signal when it receives the - message. - - This function returns true if the message has been sent to, and - processed by, the current instance. If there is no instance - currently running, or if the running instance fails to process the - message within \a timeout milliseconds, this function return false. - - \sa isRunning(), messageReceived() -*/ - bool QtSingleCoreApplication::sendMessage(const QString &message, int timeout) { return peer->sendMessage(message, timeout); } -/*! - Returns the application identifier. Two processes with the same - identifier will be regarded as instances of the same application. -*/ - QString QtSingleCoreApplication::id() const { return peer->applicationId(); } - -/*! - \fn void QtSingleCoreApplication::messageReceived(const QString& message) - - This signal is emitted when the current instance receives a \a - message from another instance of this application. - - \sa sendMessage() -*/ +} // namespace SharedTools diff --git a/src/third_party/qtsingleapplication/qtsinglecoreapplication.h b/src/third_party/qtsingleapplication/qtsinglecoreapplication.h index f4738d5d..5b888681 100644 --- a/src/third_party/qtsingleapplication/qtsinglecoreapplication.h +++ b/src/third_party/qtsingleapplication/qtsinglecoreapplication.h @@ -1,17 +1,18 @@ /**************************************************************************** ** -** This file is part of a Qt Solutions component. -** -** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -** -** Contact: Qt Software Information (qt-info@nokia.com) -** -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Solutions Commercial License Agreement provided -** with the Software or, alternatively, in accordance with the terms -** contained in a written agreement between you and Nokia. -** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software @@ -19,33 +20,16 @@ ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain -** additional rights. These rights are described in the Nokia Qt LGPL -** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this -** package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** Please note Third Party Software included with Qt Solutions may impose -** additional restrictions and it is the user's responsibility to ensure -** that they have met the licensing requirements of the GPL, LGPL, or Qt -** Solutions Commercial license and the relevant license of the Third -** Party Software they are using. -** -** If you are unsure which license is appropriate for your use, please -** contact the sales department at qt-sales@nokia.com. -** +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** ****************************************************************************/ +#include -#include +namespace SharedTools { class QtLocalPeer; @@ -71,3 +55,5 @@ Q_SIGNALS: private: QtLocalPeer* peer; }; + +} // namespace SharedTools diff --git a/src/third_party/qtsingleapplication/qtsinglecoreapplication.pri b/src/third_party/qtsingleapplication/qtsinglecoreapplication.pri index d2d6cc3e..3d6301b2 100644 --- a/src/third_party/qtsingleapplication/qtsinglecoreapplication.pri +++ b/src/third_party/qtsingleapplication/qtsinglecoreapplication.pri @@ -5,6 +5,10 @@ SOURCES += $$PWD/qtsinglecoreapplication.cpp $$PWD/qtlocalpeer.cpp QT *= network +gotqtlockedfile = $$find(HEADERS, .*qtlockedfile.h) +isEmpty(gotqtlockedfile):include(../qtlockedfile/qtlockedfile.pri) + + win32:contains(TEMPLATE, lib):contains(CONFIG, shared) { DEFINES += QT_QTSINGLECOREAPPLICATION_EXPORT=__declspec(dllexport) } From f1f1aba70337ac9594903c3e774cc586d632df90 Mon Sep 17 00:00:00 2001 From: doitux Date: Wed, 28 Aug 2013 14:25:10 +0200 Subject: [PATCH 018/128] android qt5 fixes --- .../qt/gui_800x480/gamelobbydialog_800x480.ui | 140 ++++++++++++------ src/gui/qt/sound/androidaudio.cpp | 8 +- 2 files changed, 95 insertions(+), 53 deletions(-) diff --git a/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui b/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui index 755ea40c..dffffa8b 100644 --- a/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui +++ b/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui @@ -134,7 +134,7 @@ &Leave Game - + :/gfx/go-previous-view.png:/gfx/go-previous-view.png @@ -196,7 +196,7 @@ &Start Game - + :/gfx/dialog_ok_apply.png:/gfx/dialog_ok_apply.png @@ -232,7 +232,7 @@ &Kick Player - + :/gfx/list-remove.png:/gfx/list-remove.png @@ -330,7 +330,7 @@ Join &any game - + :/gfx/transform-rotate.png:/gfx/transform-rotate.png @@ -369,7 +369,7 @@ &Create Game - + :/gfx/list_add.png:/gfx/list_add.png @@ -395,7 +395,7 @@ &Join Game - + :/gfx/go-next-view.png:/gfx/go-next-view.png @@ -459,58 +459,100 @@ - QObject {font: bold 16px} + QObject {font: bold 14px} Game Info - - + + 0 0 - - - - - 0 - 0 - + + + + 0 - - - 221 - 100 - - - - Qt::CustomContextMenu - - - QObject {font: 14px} - - - 1 - - - - 25 - 26 - - - - 15 - - - - Connected Players - - + + + Players + + + + 0 + + + + + + 0 + 0 + + + + + 221 + 100 + + + + Qt::CustomContextMenu + + + QObject {font: 14px} + + + 1 + + + + 25 + 26 + + + + 15 + + + true + + + + Connected Players + + + + + + + + + Spectators + + + + 0 + + + + + true + + + + 1 + + + + + + - + @@ -780,7 +822,7 @@ - + @@ -797,7 +839,7 @@ Fill up with computer opponents - + :/gfx/swbuttonlocalgame.png:/gfx/swbuttonlocalgame.png @@ -1129,7 +1171,7 @@ p, li { white-space: pre-wrap; } pushButton_Leave
- + diff --git a/src/gui/qt/sound/androidaudio.cpp b/src/gui/qt/sound/androidaudio.cpp index 014adda0..6ed50060 100644 --- a/src/gui/qt/sound/androidaudio.cpp +++ b/src/gui/qt/sound/androidaudio.cpp @@ -82,7 +82,7 @@ void AndroidAudio::createEngine() Q_ASSERT(SL_RESULT_SUCCESS == result); // realize the engine - result = (*mEngineObject)->Realize(mEngineObject, SL_BOOLEAN_false); + result = (*mEngineObject)->Realize(mEngineObject, SL_BOOLEAN_FALSE); Q_ASSERT(SL_RESULT_SUCCESS == result); // get the engine interface, which is needed in order to create other objects @@ -96,7 +96,7 @@ void AndroidAudio::createEngine() Q_ASSERT(SL_RESULT_SUCCESS == result); // realize the output mix - result = (*mOutputMixObject)->Realize(mOutputMixObject, SL_BOOLEAN_false); + result = (*mOutputMixObject)->Realize(mOutputMixObject, SL_BOOLEAN_FALSE); Q_ASSERT(SL_RESULT_SUCCESS == result); qDebug() << "Created Android Audio Engine"; @@ -171,7 +171,7 @@ void AndroidAudio::startSoundPlayer() //Create the sound player const SLuint32 lSoundPlayerIIDCount = 2; const SLInterfaceID lSoundPlayerIIDs[] = { SL_IID_PLAY, SL_IID_BUFFERQUEUE }; - const SLboolean lSoundPlayerReqs[] = { SL_BOOLEAN_true, SL_BOOLEAN_true }; + const SLboolean lSoundPlayerReqs[] = { SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE }; // qDebug() << "Configured Sound Player"; @@ -180,7 +180,7 @@ void AndroidAudio::startSoundPlayer() // qDebug() << "Created Sound Player"; - lRes = (*mPlayerObject)->Realize(mPlayerObject, SL_BOOLEAN_false); + lRes = (*mPlayerObject)->Realize(mPlayerObject, SL_BOOLEAN_FALSE); Q_ASSERT(SL_RESULT_SUCCESS == lRes); qDebug() << "Realised Sound Player"; From d694a27498eb15603d15ac2a9ebf4b41cd420188 Mon Sep 17 00:00:00 2001 From: doitux Date: Wed, 28 Aug 2013 17:45:28 +0200 Subject: [PATCH 019/128] chatcleaner buildfixes --- chatcleaner.pro | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/chatcleaner.pro b/chatcleaner.pro index 911c8f6b..d697e4a3 100644 --- a/chatcleaner.pro +++ b/chatcleaner.pro @@ -19,23 +19,23 @@ DEPENDPATH += src/ \ src/chatcleaner/ \ src/third_party/asn1/ \ src/net/ -SOURCES += chatcleaner.cpp \ - cleanerserver.cpp \ - messagefilter.cpp \ - badwordcheck.cpp \ - textfloodcheck.cpp \ - cleanerconfig.cpp \ - capsfloodcheck.cpp \ - letterrepeatingcheck.cpp \ - urlcheck.cpp -HEADERS += cleanerserver.h \ - messagefilter.h \ - badwordcheck.h \ - textfloodcheck.h \ - cleanerconfig.h \ - capsfloodcheck.h \ - letterrepeatingcheck.h \ - urlcheck.h +SOURCES += src/chatcleaner/chatcleaner.cpp \ + src/chatcleaner/cleanerserver.cpp \ + src/chatcleaner/messagefilter.cpp \ + src/chatcleaner/badwordcheck.cpp \ + src/chatcleaner/textfloodcheck.cpp \ + src/chatcleaner/cleanerconfig.cpp \ + src/chatcleaner/capsfloodcheck.cpp \ + src/chatcleaner/letterrepeatingcheck.cpp \ + src/chatcleaner/urlcheck.cpp +HEADERS += src/chatcleaner/cleanerserver.h \ + src/chatcleaner/messagefilter.h \ + src/chatcleaner/badwordcheck.h \ + src/chatcleaner/textfloodcheck.h \ + src/chatcleaner/cleanerconfig.h \ + src/chatcleaner/capsfloodcheck.h \ + src/chatcleaner/letterrepeatingcheck.h \ + src/chatcleaner/urlcheck.h LIBPATH += lib LIBS += -lpokerth_lib \ -lpokerth_protocol \ From 2db9ea1a93b35f92be82a3f17b8a7f7d0bb8be8f Mon Sep 17 00:00:00 2001 From: lotodore Date: Thu, 29 Aug 2013 17:26:08 +0200 Subject: [PATCH 020/128] Changes for qt5 (Windows build, boost compatibility). --- docs/build_mingw_windows.txt | 2 +- src/config/configfile.h | 2 ++ src/gamedata.h | 3 ++- src/gui/qt/gametable/gametableimpl.h | 3 +++ src/gui/qt/gametable/mytimeoutlabel.h | 2 ++ src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h | 2 ++ 6 files changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/build_mingw_windows.txt b/docs/build_mingw_windows.txt index e6fd79b1..dc241c03 100644 --- a/docs/build_mingw_windows.txt +++ b/docs/build_mingw_windows.txt @@ -12,7 +12,7 @@ on your Linux system. 3. Within /opt/mingw, run make gcc -make qt +make qt5 make boost make curl make libgsasl diff --git a/src/config/configfile.h b/src/config/configfile.h index e7df2cae..7f771911 100644 --- a/src/config/configfile.h +++ b/src/config/configfile.h @@ -35,7 +35,9 @@ #include #include +#ifndef Q_MOC_RUN #include +#endif enum ConfigState { NONEXISTING, OLD, OK }; enum ConfigType { CONFIG_TYPE_INT, CONFIG_TYPE_STRING, CONFIG_TYPE_INT_LIST, CONFIG_TYPE_STRING_LIST }; diff --git a/src/gamedata.h b/src/gamedata.h index e1bf502b..a5e3e0d5 100644 --- a/src/gamedata.h +++ b/src/gamedata.h @@ -35,8 +35,9 @@ #include #include +#ifndef Q_MOC_RUN #include - +#endif typedef std::list PlayerIdList; diff --git a/src/gui/qt/gametable/gametableimpl.h b/src/gui/qt/gametable/gametableimpl.h index bea8e5f9..71b6338e 100755 --- a/src/gui/qt/gametable/gametableimpl.h +++ b/src/gui/qt/gametable/gametableimpl.h @@ -40,7 +40,10 @@ #include "game_defs.h" #include + +#ifndef Q_MOC_RUN #include +#endif #include #include diff --git a/src/gui/qt/gametable/mytimeoutlabel.h b/src/gui/qt/gametable/mytimeoutlabel.h index 05f29596..8ceb9a14 100644 --- a/src/gui/qt/gametable/mytimeoutlabel.h +++ b/src/gui/qt/gametable/mytimeoutlabel.h @@ -35,7 +35,9 @@ #include #include +#ifndef Q_MOC_RUN #include +#endif #if QT_VERSION >= 0x050000 #include #endif diff --git a/src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h b/src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h index c296cb07..50f2d66c 100644 --- a/src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h +++ b/src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h @@ -37,7 +37,9 @@ #if QT_VERSION >= 0x050000 #include #endif +#ifndef Q_MOC_RUN #include +#endif #include "game_defs.h" /** From 8adbe8edb982c56ad126264dab4b98fe45ed520f Mon Sep 17 00:00:00 2001 From: lotodore Date: Thu, 29 Aug 2013 19:54:34 +0200 Subject: [PATCH 021/128] Some chatcleaner fixes for Qt5 (and other stuff). --- src/chatcleaner/cleanerconfig.cpp | 4 ++-- src/chatcleaner/cleanerserver.cpp | 5 ++++- src/chatcleaner/messagefilter.h | 2 ++ src/chatcleaner/textfloodcheck.h | 2 ++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/chatcleaner/cleanerconfig.cpp b/src/chatcleaner/cleanerconfig.cpp index cee11f61..26492dbc 100644 --- a/src/chatcleaner/cleanerconfig.cpp +++ b/src/chatcleaner/cleanerconfig.cpp @@ -29,6 +29,8 @@ * as that of the covered work. * *****************************************************************************/ #include "cleanerconfig.h" +#include + #include #define MODUS 0711 @@ -46,8 +48,6 @@ #include #include -#include - using namespace std; diff --git a/src/chatcleaner/cleanerserver.cpp b/src/chatcleaner/cleanerserver.cpp index 34066149..3e59f174 100644 --- a/src/chatcleaner/cleanerserver.cpp +++ b/src/chatcleaner/cleanerserver.cpp @@ -77,7 +77,9 @@ CleanerServer::~CleanerServer() void CleanerServer::newCon() { - if(!blockConnection) { + if(blockConnection) { + tcpServer->nextPendingConnection()->close(); + } else { tcpSocket = tcpServer->nextPendingConnection(); connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(onRead())); connect(tcpSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(socketStateChanged(QAbstractSocket::SocketState))); @@ -113,6 +115,7 @@ void CleanerServer::onRead() if (error) { qDebug() << "Error handling packets from client."; tcpSocket->close(); + blockConnection = false; } /* char buf[1024]; diff --git a/src/chatcleaner/messagefilter.h b/src/chatcleaner/messagefilter.h index cabb5bac..f26023b7 100644 --- a/src/chatcleaner/messagefilter.h +++ b/src/chatcleaner/messagefilter.h @@ -33,7 +33,9 @@ #include #include +#ifndef Q_MOC_RUN #include +#endif class BadWordCheck; class TextFloodCheck; diff --git a/src/chatcleaner/textfloodcheck.h b/src/chatcleaner/textfloodcheck.h index 229cf145..29b3cf38 100644 --- a/src/chatcleaner/textfloodcheck.h +++ b/src/chatcleaner/textfloodcheck.h @@ -32,7 +32,9 @@ #define TEXTFLOODCHECK_H #include +#ifndef Q_MOC_RUN #include +#endif #include From 9686257e415164e480df243c1edfcec648c06799 Mon Sep 17 00:00:00 2001 From: lotodore Date: Thu, 29 Aug 2013 22:18:44 +0200 Subject: [PATCH 022/128] Switching from asn.1 to protobuf as chat cleaner protocol. --- chatcleaner.pro | 2 - pokerth_game.pro | 1 - pokerth_lib.pro | 3 - pokerth_protocol.pro | 90 +- pokerth_server.pro | 1 - src/chatcleaner/cleanerserver.cpp | 136 +- src/chatcleaner/cleanerserver.h | 12 +- src/net/chatcleanermanager.h | 10 +- src/net/common/chatcleanermanager.cpp | 138 +- src/net/common/internalchatcleanerpacket.cpp | 47 - src/net/internalchatcleanerpacket.h | 62 - src/third_party/protobuf/chatcleaner.pb.cc | 1605 ++++++++++++++++++ src/third_party/protobuf/chatcleaner.pb.h | 1524 +++++++++++++++++ 13 files changed, 3295 insertions(+), 336 deletions(-) delete mode 100644 src/net/common/internalchatcleanerpacket.cpp delete mode 100644 src/net/internalchatcleanerpacket.h create mode 100644 src/third_party/protobuf/chatcleaner.pb.cc create mode 100644 src/third_party/protobuf/chatcleaner.pb.h diff --git a/chatcleaner.pro b/chatcleaner.pro index d697e4a3..daee7bca 100644 --- a/chatcleaner.pro +++ b/chatcleaner.pro @@ -13,11 +13,9 @@ OBJECTS_DIR = obj TEMPLATE = app INCLUDEPATH += src/ \ src/chatcleaner/ \ - src/third_party/asn1/ \ src/net/ DEPENDPATH += src/ \ src/chatcleaner/ \ - src/third_party/asn1/ \ src/net/ SOURCES += src/chatcleaner/chatcleaner.cpp \ src/chatcleaner/cleanerserver.cpp \ diff --git a/pokerth_game.pro b/pokerth_game.pro index 09f47258..2c143e8e 100644 --- a/pokerth_game.pro +++ b/pokerth_game.pro @@ -43,7 +43,6 @@ INCLUDEPATH += . \ src/engine/local_engine \ src/engine/network_engine \ src/config \ - src/third_party/asn1 \ src/gui/qt \ src/gui/qt/connecttoserverdialog \ src/core \ diff --git a/pokerth_lib.pro b/pokerth_lib.pro index f58b9199..d3ec4dd3 100644 --- a/pokerth_lib.pro +++ b/pokerth_lib.pro @@ -27,7 +27,6 @@ INCLUDEPATH += . \ src/engine/local_engine \ src/engine/network_engine \ src/config \ - src/third_party/asn1 \ src/core DEPENDPATH += . \ @@ -100,7 +99,6 @@ HEADERS += \ src/net/uploadhelper.h \ src/net/downloaderthread.h \ src/net/downloadhelper.h \ - src/net/internalchatcleanerpacket.h \ src/engine/local_engine/cardsvalue.h \ src/engine/local_engine/localboard.h \ src/engine/local_engine/localenginefactory.h \ @@ -201,7 +199,6 @@ SOURCES += \ src/net/common/transferhelper.cpp \ src/net/common/uploaderthread.cpp \ src/net/common/uploadhelper.cpp \ - src/net/common/internalchatcleanerpacket.cpp \ src/gui/generic/serverguiwrapper.cpp \ src/gui/qttoolsinterface.cpp \ src/net/common/sendbuffer.cpp \ diff --git a/pokerth_protocol.pro b/pokerth_protocol.pro index 4b1be2bf..14da5993 100644 --- a/pokerth_protocol.pro +++ b/pokerth_protocol.pro @@ -18,96 +18,24 @@ QT -= core \ # PRECOMPILED_HEADER = src/pch_lib.h INCLUDEPATH += . \ - src \ - src/third_party/asn1 + src DEPENDPATH += . \ - src \ - src/third_party/asn1 + src # Input -HEADERS += src/third_party/asn1/asn_application.h \ - src/third_party/asn1/asn_codecs.h \ - src/third_party/asn1/asn_codecs_prim.h \ - src/third_party/asn1/asn_internal.h \ - src/third_party/asn1/asn_SEQUENCE_OF.h \ - src/third_party/asn1/asn_SET_OF.h \ - src/third_party/asn1/asn_system.h \ - src/third_party/asn1/ber_decoder.h \ - src/third_party/asn1/ber_tlv_length.h \ - src/third_party/asn1/ber_tlv_tag.h \ - src/third_party/asn1/BIT_STRING.h \ - src/third_party/asn1/BOOLEAN.h \ - src/third_party/asn1/constraints.h \ - src/third_party/asn1/constr_CHOICE.h \ - src/third_party/asn1/constr_SEQUENCE.h \ - src/third_party/asn1/constr_SEQUENCE_OF.h \ - src/third_party/asn1/constr_SET_OF.h \ - src/third_party/asn1/constr_TYPE.h \ - src/third_party/asn1/der_encoder.h \ - src/third_party/asn1/INTEGER.h \ - src/third_party/asn1/NativeEnumerated.h \ - src/third_party/asn1/NativeInteger.h \ - src/third_party/asn1/OCTET_STRING.h \ - src/third_party/asn1/per_decoder.h \ - src/third_party/asn1/per_encoder.h \ - src/third_party/asn1/per_opentype.h \ - src/third_party/asn1/per_support.h \ - src/third_party/asn1/UTF8String.h \ - src/third_party/asn1/xer_decoder.h \ - src/third_party/asn1/xer_encoder.h \ - src/third_party/asn1/xer_support.h \ - src/third_party/asn1/ChatCleanerMessage.h \ - src/third_party/asn1/CleanerChatTypeLobby.h \ - src/third_party/asn1/CleanerChatTypeGame.h \ - src/third_party/asn1/CleanerChatType.h \ - src/third_party/asn1/CleanerInitMessage.h \ - src/third_party/asn1/CleanerInitAckMessage.h \ - src/third_party/asn1/CleanerChatRequestMessage.h \ - src/third_party/asn1/CleanerChatReplyMessage.h -HEADERS += src/third_party/protobuf/pokerth.pb.h -SOURCES += src/third_party/asn1/ChatCleanerMessage.c \ - src/third_party/asn1/CleanerChatTypeLobby.c \ - src/third_party/asn1/CleanerChatTypeGame.c \ - src/third_party/asn1/CleanerChatType.c \ - src/third_party/asn1/CleanerInitMessage.c \ - src/third_party/asn1/CleanerInitAckMessage.c \ - src/third_party/asn1/CleanerChatRequestMessage.c \ - src/third_party/asn1/CleanerChatReplyMessage.c \ - src/third_party/asn1/xer_support.c \ - src/third_party/asn1/xer_encoder.c \ - src/third_party/asn1/xer_decoder.c \ - src/third_party/asn1/UTF8String.c \ - src/third_party/asn1/per_support.c \ - src/third_party/asn1/per_opentype.c \ - src/third_party/asn1/per_encoder.c \ - src/third_party/asn1/per_decoder.c \ - src/third_party/asn1/OCTET_STRING.c \ - src/third_party/asn1/NativeInteger.c \ - src/third_party/asn1/NativeEnumerated.c \ - src/third_party/asn1/INTEGER.c \ - src/third_party/asn1/der_encoder.c \ - src/third_party/asn1/constraints.c \ - src/third_party/asn1/constr_TYPE.c \ - src/third_party/asn1/constr_SET_OF.c \ - src/third_party/asn1/constr_SEQUENCE_OF.c \ - src/third_party/asn1/constr_SEQUENCE.c \ - src/third_party/asn1/constr_CHOICE.c \ - src/third_party/asn1/BOOLEAN.c \ - src/third_party/asn1/BIT_STRING.c \ - src/third_party/asn1/ber_tlv_tag.c \ - src/third_party/asn1/ber_tlv_length.c \ - src/third_party/asn1/ber_decoder.c \ - src/third_party/asn1/asn_SET_OF.c \ - src/third_party/asn1/asn_SEQUENCE_OF.c \ - src/third_party/asn1/asn_codecs_prim.c -SOURCES += src/third_party/protobuf/pokerth.pb.cc -win32 { + +HEADERS += src/third_party/protobuf/pokerth.pb.h \ + src/third_party/protobuf/chatcleaner.pb.h +SOURCES += src/third_party/protobuf/pokerth.pb.cc \ + src/third_party/protobuf/chatcleaner.pb.cc +win32 { DEFINES += CURL_STATICLIB DEFINES += _WIN32_WINNT=0x0501 } unix : !mac { INCLUDEPATH += $${PREFIX}/include system(protoc pokerth.proto --cpp_out=src/third_party/protobuf) + system(protoc chatcleaner.proto --cpp_out=src/third_party/protobuf) system(protoc pokerth.proto --java_out=tests/src) } mac { diff --git a/pokerth_server.pro b/pokerth_server.pro index 822d03e9..7f069fbe 100644 --- a/pokerth_server.pro +++ b/pokerth_server.pro @@ -30,7 +30,6 @@ INCLUDEPATH += . \ src/engine/local_engine \ src/engine/network_engine \ src/config \ - src/third_party/asn1 \ src/core \ DEPENDPATH += . \ diff --git a/src/chatcleaner/cleanerserver.cpp b/src/chatcleaner/cleanerserver.cpp index 3e59f174..c85f5d1d 100644 --- a/src/chatcleaner/cleanerserver.cpp +++ b/src/chatcleaner/cleanerserver.cpp @@ -34,7 +34,8 @@ #include #include #include -#include +#include + #include "messagefilter.h" #include "cleanerconfig.h" @@ -93,23 +94,38 @@ void CleanerServer::onRead() bool error = bytesRead < 1; if (!error) { m_recvBufUsed += bytesRead; - - asn_dec_rval_t retVal; + bool valid; do { - // Try to decode the packets. - InternalChatCleanerPacket recvMsg; - retVal = ber_decode(0, &asn_DEF_ChatCleanerMessage, (void **)recvMsg.GetMsgPtr(), m_recvBuf, m_recvBufUsed); - if(retVal.code == RC_OK) { - if (retVal.consumed < m_recvBufUsed) { - m_recvBufUsed -= retVal.consumed; - memmove(m_recvBuf, m_recvBuf + retVal.consumed, m_recvBufUsed); - } else + valid = false; + if (m_recvBufUsed >= CLEANER_NET_HEADER_SIZE) { + // Read the size of the packet (first 4 bytes in network byte order). + uint32_t nativeVal; + memcpy(&nativeVal, &m_recvBuf[0], sizeof(uint32_t)); + size_t packetSize = ntohl(nativeVal); + if (packetSize > MAX_CLEANER_PACKET_SIZE) { m_recvBufUsed = 0; - - // Handle the packets. - error = handleMessage(recvMsg); + qDebug() << "Invalid packet size: " << packetSize; + } else if (m_recvBufUsed >= packetSize + CLEANER_NET_HEADER_SIZE) { + try { + // Try to decode the packet. + boost::shared_ptr recvMsg(ChatCleanerMessage::default_instance().New()); + if (recvMsg->ParseFromArray(&m_recvBuf[CLEANER_NET_HEADER_SIZE], static_cast(packetSize))) { + m_recvBufUsed -= (packetSize + CLEANER_NET_HEADER_SIZE); + if (m_recvBufUsed) { + memmove(m_recvBuf, m_recvBuf + packetSize + CLEANER_NET_HEADER_SIZE, m_recvBufUsed); + } + } + // Handle the packet. + error = handleMessage(*recvMsg); + valid = true; + } catch (const exception &e) { + // Reset buffer on error. + m_recvBufUsed = 0; + qDebug() << "Exception while decoding packet: " << e.what(); + } + } } - } while (!error && retVal.code == RC_OK); + } while (valid && !error); } if (error) { @@ -131,71 +147,58 @@ void CleanerServer::onRead() tcpSocket->write(checkMessage.toAscii().data(), checkMessage.length());*/ } -bool CleanerServer::handleMessage(InternalChatCleanerPacket &msg) +bool CleanerServer::handleMessage(ChatCleanerMessage &msg) { bool error = true; - if (msg.GetMsg()->present == ChatCleanerMessage_PR_cleanerInitMessage) { - CleanerInitMessage_t *netInit = &msg.GetMsg()->choice.cleanerInitMessage; - if (netInit->requestedVersion == CLEANER_PROTOCOL_VERSION) { - string tmpClientSecret((const char *)netInit->clientSecret.buf, netInit->clientSecret.size); - if (clientSecret == QString::fromStdString(tmpClientSecret)) { + if (msg.messagetype() == ChatCleanerMessage::Type_CleanerInitMessage) { + const CleanerInitMessage &netInit = msg.cleanerinitmessage(); + if (netInit.requestedversion() == CLEANER_PROTOCOL_VERSION) { + if (clientSecret == QString::fromStdString(netInit.clientsecret())) { error = false; - InternalChatCleanerPacket tmpAck; - tmpAck.GetMsg()->present = ChatCleanerMessage_PR_cleanerInitAckMessage; - CleanerInitAckMessage_t *netAck = &tmpAck.GetMsg()->choice.cleanerInitAckMessage; - netAck->serverVersion = CLEANER_PROTOCOL_VERSION; - string tmpServerSecret(serverSecret.toStdString()); - OCTET_STRING_fromBuf(&netAck->serverSecret, - tmpServerSecret.c_str(), - tmpServerSecret.length()); - sendMessageToClient(tmpAck); + boost::shared_ptr tmpAck(ChatCleanerMessage::default_instance().New()); + tmpAck->set_messagetype(ChatCleanerMessage::Type_CleanerInitAckMessage); + CleanerInitAckMessage *netAck = tmpAck->mutable_cleanerinitackmessage(); + netAck->set_serverversion(CLEANER_PROTOCOL_VERSION); + netAck->set_serversecret(serverSecret.toStdString()); + sendMessageToClient(*tmpAck); } else qDebug() << "Invalid client secret."; } else - qDebug() << "Invalid client version: " << netInit->requestedVersion; - } else if (msg.GetMsg()->present == ChatCleanerMessage_PR_cleanerChatRequestMessage) { + qDebug() << "Invalid client version: " << netInit.requestedversion(); + } else if (msg.messagetype() == ChatCleanerMessage::Type_CleanerChatRequestMessage) { error = false; - CleanerChatRequestMessage_t *netRequest = &msg.GetMsg()->choice.cleanerChatRequestMessage; - unsigned playerId = netRequest->playerId; - QString nick(QString::fromUtf8( - string((const char *)netRequest->playerName.buf, netRequest->playerName.size).c_str())); - QString message(QString::fromUtf8( - string((const char *)netRequest->chatMessage.buf, netRequest->chatMessage.size).c_str())); - unsigned gameId = 0; - if (netRequest->cleanerChatType.present == CleanerChatType_PR_cleanerChatTypeGame) { - gameId = netRequest->cleanerChatType.choice.cleanerChatTypeGame.gameId; - } + const CleanerChatRequestMessage &netRequest = msg.cleanerchatrequestmessage(); + unsigned playerId = netRequest.playerid(); + QString nick(QString::fromUtf8(netRequest.playername().c_str())); + QString message(QString::fromUtf8(netRequest.chatmessage().c_str())); + unsigned gameId = netRequest.gameid(); QStringList checkreturn = myMessageFilter->check(gameId, playerId, nick, message); QString checkAction = checkreturn.at(0); QString checkMessage = checkreturn.at(1); if (!checkAction.isEmpty()) { - InternalChatCleanerPacket tmpReply; - tmpReply.GetMsg()->present = ChatCleanerMessage_PR_cleanerChatReplyMessage; - CleanerChatReplyMessage_t *netReply = &tmpReply.GetMsg()->choice.cleanerChatReplyMessage; - netReply->requestId = netRequest->requestId; - netReply->cleanerChatType = netRequest->cleanerChatType; - netReply->playerId = netRequest->playerId; + boost::shared_ptr tmpReply(ChatCleanerMessage::default_instance().New()); + tmpReply->set_messagetype(ChatCleanerMessage::Type_CleanerChatReplyMessage); + CleanerChatReplyMessage *netReply = tmpReply->mutable_cleanerchatreplymessage(); + netReply->set_requestid(netRequest.requestid()); + netReply->set_gameid(netRequest.gameid()); + netReply->set_cleanerchattype(netRequest.cleanerchattype()); + netReply->set_playerid(netRequest.playerid()); if(checkAction == "warn") { - netReply->cleanerActionType = cleanerActionType_cleanerActionWarning; + netReply->set_cleaneractiontype(CleanerChatReplyMessage_CleanerActionType_cleanerActionWarning); } else if (checkAction == "kick") { - netReply->cleanerActionType = cleanerActionType_cleanerActionKick; + netReply->set_cleaneractiontype(CleanerChatReplyMessage_CleanerActionType_cleanerActionKick); } else if (checkAction == "kickban") { - netReply->cleanerActionType = cleanerActionType_cleanerActionBan; + netReply->set_cleaneractiontype(CleanerChatReplyMessage_CleanerActionType_cleanerActionBan); } else if (checkAction == "mute") { - netReply->cleanerActionType = cleanerActionType_cleanerActionMute; + netReply->set_cleaneractiontype(CleanerChatReplyMessage_CleanerActionType_cleanerActionMute); } - string tmpCheck(checkMessage.toUtf8()); - netReply->cleanerText = - OCTET_STRING_new_fromBuf( - &asn_DEF_OCTET_STRING, - (const char *)tmpCheck.c_str(), - tmpCheck.length()); - sendMessageToClient(tmpReply); + netReply->set_cleanertext(checkMessage.toUtf8()); + sendMessageToClient(*tmpReply); } } return error; @@ -220,14 +223,13 @@ void CleanerServer::refreshConfig() myMessageFilter->refreshConfig(); } -void CleanerServer::sendMessageToClient(InternalChatCleanerPacket &msg) +void CleanerServer::sendMessageToClient(ChatCleanerMessage &msg) { - unsigned char buf[MAX_CLEANER_PACKET_SIZE]; - asn_enc_rval_t e = der_encode_to_buffer(&asn_DEF_ChatCleanerMessage, msg.GetMsg(), buf, MAX_CLEANER_PACKET_SIZE); - - if (e.encoded == -1) - qDebug() << "Failed to encode chat cleaner packet: " << msg.GetMsg()->present; - else - tcpSocket->write((const char *)buf, e.encoded); + uint32_t packetSize = msg.ByteSize(); + google::protobuf::uint8 *buf = new google::protobuf::uint8[packetSize + CLEANER_NET_HEADER_SIZE]; + *((uint32_t *)buf) = htonl(packetSize); + msg.SerializeWithCachedSizesToArray(&buf[CLEANER_NET_HEADER_SIZE]); + tcpSocket->write((const char *)buf, packetSize + CLEANER_NET_HEADER_SIZE); + delete[] buf; } diff --git a/src/chatcleaner/cleanerserver.h b/src/chatcleaner/cleanerserver.h index c72fb67f..568dacfa 100644 --- a/src/chatcleaner/cleanerserver.h +++ b/src/chatcleaner/cleanerserver.h @@ -33,10 +33,14 @@ #include #include -#include + +#define CLEANER_NET_HEADER_SIZE 4 +#define MAX_CLEANER_PACKET_SIZE 512 +#define CLEANER_PROTOCOL_VERSION 2 class MessageFilter; class CleanerConfig; +class ChatCleanerMessage; class CleanerServer: public QObject { @@ -49,10 +53,10 @@ public: private slots: void newCon(); void onRead(); - bool handleMessage(InternalChatCleanerPacket &msg); + bool handleMessage(ChatCleanerMessage &msg); void socketStateChanged(QAbstractSocket::SocketState); void refreshConfig(); - void sendMessageToClient(InternalChatCleanerPacket &msg); + void sendMessageToClient(ChatCleanerMessage &msg); private: QTcpServer *tcpServer; @@ -66,7 +70,7 @@ private: QString serverSecret; unsigned char m_recvBuf[2*MAX_CLEANER_PACKET_SIZE]; - unsigned m_recvBufUsed; + size_t m_recvBufUsed; int secondsSinceLastConfigChange; }; diff --git a/src/net/chatcleanermanager.h b/src/net/chatcleanermanager.h index d321741e..6a14d3d3 100644 --- a/src/net/chatcleanermanager.h +++ b/src/net/chatcleanermanager.h @@ -37,9 +37,13 @@ #include #include #include -#include + +#define CLEANER_NET_HEADER_SIZE 4 +#define MAX_CLEANER_PACKET_SIZE 512 +#define CLEANER_PROTOCOL_VERSION 2 class SendBuffer; +class ChatCleanerMessage; class ChatCleanerManager : public boost::enable_shared_from_this { @@ -58,9 +62,9 @@ protected: void HandleResolve(const boost::system::error_code& ec, boost::asio::ip::tcp::resolver::iterator endpoint_iterator); void HandleConnect(const boost::system::error_code& ec, boost::asio::ip::tcp::resolver::iterator endpoint_iterator); void HandleRead(const boost::system::error_code &ec, size_t bytesRead); - bool HandleMessage(InternalChatCleanerPacket &msg); + bool HandleMessage(ChatCleanerMessage &msg); - void SendMessageToServer(InternalChatCleanerPacket &msg); + void SendMessageToServer(ChatCleanerMessage &msg); unsigned GetNextRequestId(); private: diff --git a/src/net/common/chatcleanermanager.cpp b/src/net/common/chatcleanermanager.cpp index bf360c1d..fb6ba8fe 100644 --- a/src/net/common/chatcleanermanager.cpp +++ b/src/net/common/chatcleanermanager.cpp @@ -33,7 +33,7 @@ #include #include #include -#include +#include #include @@ -98,24 +98,20 @@ void ChatCleanerManager::HandleGameChatText(unsigned gameId, unsigned playerId, const std::string &name, const std::string &text) { if (m_connected) { - InternalChatCleanerPacket tmpChat; - tmpChat.GetMsg()->present = ChatCleanerMessage_PR_cleanerChatRequestMessage; - CleanerChatRequestMessage_t *netRequest = &tmpChat.GetMsg()->choice.cleanerChatRequestMessage; - netRequest->requestId = GetNextRequestId(); + boost::shared_ptr tmpChat(ChatCleanerMessage::default_instance().New()); + tmpChat->set_messagetype(ChatCleanerMessage::Type_CleanerChatRequestMessage); + CleanerChatRequestMessage *netRequest = tmpChat->mutable_cleanerchatrequestmessage(); + netRequest->set_requestid(GetNextRequestId()); if (gameId) { - netRequest->cleanerChatType.present = CleanerChatType_PR_cleanerChatTypeGame; - netRequest->cleanerChatType.choice.cleanerChatTypeGame.gameId = gameId; + netRequest->set_cleanerchattype(cleanerChatTypeGame); + netRequest->set_gameid(gameId); } else { - netRequest->cleanerChatType.present = CleanerChatType_PR_cleanerChatTypeLobby; + netRequest->set_cleanerchattype(cleanerChatTypeLobby); } - netRequest->playerId = playerId; - OCTET_STRING_fromBuf(&netRequest->playerName, - name.c_str(), - (int)name.length()); - OCTET_STRING_fromBuf(&netRequest->chatMessage, - text.c_str(), - (int)text.length()); - SendMessageToServer(tmpChat); + netRequest->set_playerid(playerId); + netRequest->set_playername(name); + netRequest->set_chatmessage(text); + SendMessageToServer(*tmpChat); } } @@ -141,14 +137,12 @@ ChatCleanerManager::HandleConnect(const boost::system::error_code& ec, boost::asio::ip::tcp::resolver::iterator endpoint_iterator) { if (!ec) { - InternalChatCleanerPacket tmpInit; - tmpInit.GetMsg()->present = ChatCleanerMessage_PR_cleanerInitMessage; - CleanerInitMessage_t *netInit = &tmpInit.GetMsg()->choice.cleanerInitMessage; - netInit->requestedVersion = CLEANER_PROTOCOL_VERSION; - OCTET_STRING_fromBuf(&netInit->clientSecret, - m_clientSecret.c_str(), - (int)m_clientSecret.length()); - SendMessageToServer(tmpInit); + boost::shared_ptr tmpInit(ChatCleanerMessage::default_instance().New()); + tmpInit->set_messagetype(ChatCleanerMessage::Type_CleanerInitMessage); + CleanerInitMessage *netInit = tmpInit->mutable_cleanerinitmessage(); + netInit->set_requestedversion(CLEANER_PROTOCOL_VERSION); + netInit->set_clientsecret(m_clientSecret); + SendMessageToServer(*tmpInit); m_socket->async_read_some( boost::asio::buffer(m_recvBuf, sizeof(m_recvBuf)), boost::bind( @@ -180,24 +174,38 @@ ChatCleanerManager::HandleRead(const boost::system::error_code &ec, size_t bytes bool error = false; m_recvBufUsed += bytesRead; - asn_dec_rval_t retVal; + bool valid; do { - InternalChatCleanerPacket recvMsg; - retVal = ber_decode(0, &asn_DEF_ChatCleanerMessage, (void **)recvMsg.GetMsgPtr(), m_recvBuf, m_recvBufUsed); - if(retVal.code == RC_OK) { - // Consume the bytes. - if (retVal.consumed < m_recvBufUsed) { - m_recvBufUsed -= retVal.consumed; - memmove(m_recvBuf, m_recvBuf + retVal.consumed, m_recvBufUsed); - } else + valid = false; + if (m_recvBufUsed >= CLEANER_NET_HEADER_SIZE) { + // Read the size of the packet (first 4 bytes in network byte order). + uint32_t nativeVal; + memcpy(&nativeVal, &m_recvBuf[0], sizeof(uint32_t)); + size_t packetSize = ntohl(nativeVal); + if (packetSize > MAX_CLEANER_PACKET_SIZE) { m_recvBufUsed = 0; - - if (asn_check_constraints(&asn_DEF_ChatCleanerMessage, recvMsg.GetMsg(), NULL, NULL) == 0) - error = HandleMessage(recvMsg); - else - LOG_ERROR("Received invalid chat cleaner packet."); + LOG_ERROR("Invalid packet size: " << packetSize); + } else if (m_recvBufUsed >= packetSize + CLEANER_NET_HEADER_SIZE) { + try { + // Try to decode the packet. + boost::shared_ptr recvMsg(ChatCleanerMessage::default_instance().New()); + if (recvMsg->ParseFromArray(&m_recvBuf[CLEANER_NET_HEADER_SIZE], static_cast(packetSize))) { + m_recvBufUsed -= (packetSize + CLEANER_NET_HEADER_SIZE); + if (m_recvBufUsed) { + memmove(m_recvBuf, m_recvBuf + packetSize + CLEANER_NET_HEADER_SIZE, m_recvBufUsed); + } + } + // Handle the packet. + error = HandleMessage(*recvMsg); + valid = true; + } catch (const exception &e) { + // Reset buffer on error. + m_recvBufUsed = 0; + LOG_ERROR("Exception while decoding packet: " << e.what()); + } + } } - } while (!error && retVal.code == RC_OK); + } while (valid && !error); if (!error) { m_socket->async_read_some( @@ -224,14 +232,13 @@ ChatCleanerManager::HandleRead(const boost::system::error_code &ec, size_t bytes } bool -ChatCleanerManager::HandleMessage(InternalChatCleanerPacket &msg) +ChatCleanerManager::HandleMessage(ChatCleanerMessage &msg) { bool error = true; - if (msg.GetMsg()->present == ChatCleanerMessage_PR_cleanerInitAckMessage) { - CleanerInitAckMessage_t *netAck = &msg.GetMsg()->choice.cleanerInitAckMessage; - if (netAck->serverVersion == CLEANER_PROTOCOL_VERSION) { - string tmpSecret((const char *)netAck->serverSecret.buf, netAck->serverSecret.size); - if (m_serverSecret == tmpSecret) { + if (msg.messagetype() == ChatCleanerMessage::Type_CleanerInitAckMessage) { + const CleanerInitAckMessage &netAck = msg.cleanerinitackmessage(); + if (netAck.serverversion() == CLEANER_PROTOCOL_VERSION) { + if (m_serverSecret == netAck.serversecret()) { m_connected = true; error = false; LOG_MSG("Successfully connected to chat cleaner."); @@ -239,36 +246,37 @@ ChatCleanerManager::HandleMessage(InternalChatCleanerPacket &msg) } if (!m_connected) LOG_ERROR("Chat cleaner handshake failed."); - } else if (msg.GetMsg()->present == ChatCleanerMessage_PR_cleanerChatReplyMessage) { - CleanerChatReplyMessage_t *netReply = &msg.GetMsg()->choice.cleanerChatReplyMessage; - if (netReply->cleanerText) { - if (netReply->cleanerChatType.present == CleanerChatType_PR_cleanerChatTypeLobby) { - m_callback.SignalChatBotMessage(string((const char *)netReply->cleanerText->buf, netReply->cleanerText->size)); - } else if (netReply->cleanerChatType.present == CleanerChatType_PR_cleanerChatTypeGame) { - m_callback.SignalChatBotMessage(netReply->cleanerChatType.choice.cleanerChatTypeGame.gameId, string((const char *)netReply->cleanerText->buf, netReply->cleanerText->size)); + } else if (msg.messagetype() == ChatCleanerMessage::Type_CleanerChatReplyMessage) { + const CleanerChatReplyMessage &netReply = msg.cleanerchatreplymessage(); + if (!netReply.cleanertext().empty()) { + if (netReply.cleanerchattype() == cleanerChatTypeLobby) { + m_callback.SignalChatBotMessage(netReply.cleanertext()); + } else if (netReply.cleanerchattype() == cleanerChatTypeGame) { + m_callback.SignalChatBotMessage(netReply.gameid(), netReply.cleanertext()); } } - if (netReply->cleanerActionType == cleanerActionType_cleanerActionKick) - m_callback.SignalKickPlayer(netReply->playerId); - else if (netReply->cleanerActionType == cleanerActionType_cleanerActionBan) - m_callback.SignalBanPlayer(netReply->playerId); - else if (netReply->cleanerActionType == cleanerActionType_cleanerActionMute) - m_callback.SignalMutePlayer(netReply->playerId); + if (netReply.cleaneractiontype() == CleanerChatReplyMessage_CleanerActionType_cleanerActionKick) + m_callback.SignalKickPlayer(netReply.playerid()); + else if (netReply.cleaneractiontype() == CleanerChatReplyMessage_CleanerActionType_cleanerActionBan) + m_callback.SignalBanPlayer(netReply.playerid()); + else if (netReply.cleaneractiontype() == CleanerChatReplyMessage_CleanerActionType_cleanerActionMute) + m_callback.SignalMutePlayer(netReply.playerid()); error = false; } return error; } void -ChatCleanerManager::SendMessageToServer(InternalChatCleanerPacket &msg) +ChatCleanerManager::SendMessageToServer(ChatCleanerMessage &msg) { - asn_enc_rval_t e = der_encode(&asn_DEF_ChatCleanerMessage, msg.GetMsg(), &SendBuffer::EncodeToBuf, m_sendManager.get()); + uint32_t packetSize = msg.ByteSize(); + google::protobuf::uint8 *buf = new google::protobuf::uint8[packetSize + CLEANER_NET_HEADER_SIZE]; + *((uint32_t *)buf) = htonl(packetSize); + msg.SerializeWithCachedSizesToArray(&buf[CLEANER_NET_HEADER_SIZE]); + SendBuffer::EncodeToBuf(buf, packetSize + CLEANER_NET_HEADER_SIZE, m_sendManager.get()); + delete[] buf; - if (e.encoded == -1) - LOG_ERROR("Failed to encode chat cleaner packet: " << msg.GetMsg()->present); - else { - m_sendManager->AsyncSendNextPacket(m_socket); - } + m_sendManager->AsyncSendNextPacket(m_socket); } unsigned diff --git a/src/net/common/internalchatcleanerpacket.cpp b/src/net/common/internalchatcleanerpacket.cpp deleted file mode 100644 index f73561ae..00000000 --- a/src/net/common/internalchatcleanerpacket.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/***************************************************************************** - * PokerTH - The open source texas holdem engine * - * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Affero General Public License as * - * published by the Free Software Foundation, either version 3 of the * - * License, or (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Affero General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - * * - * * - * Additional permission under GNU AGPL version 3 section 7 * - * * - * If you modify this program, or any covered work, by linking or * - * combining it with the OpenSSL project's OpenSSL library (or a * - * modified version of that library), containing parts covered by the * - * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * - * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * - * permission to convey the resulting work. * - * Corresponding Source for a non-source form of such a combination * - * shall include the source code for the parts of OpenSSL used as well * - * as that of the covered work. * - *****************************************************************************/ - -#include -#include -#include - -using namespace std; - -InternalChatCleanerPacket::InternalChatCleanerPacket() -{ - m_msg = (ChatCleanerMessage_t *)calloc(1, sizeof(ChatCleanerMessage_t)); -} - -InternalChatCleanerPacket::~InternalChatCleanerPacket() -{ - ASN_STRUCT_FREE(asn_DEF_ChatCleanerMessage, m_msg); -} - diff --git a/src/net/internalchatcleanerpacket.h b/src/net/internalchatcleanerpacket.h deleted file mode 100644 index 0de52e60..00000000 --- a/src/net/internalchatcleanerpacket.h +++ /dev/null @@ -1,62 +0,0 @@ -/***************************************************************************** - * PokerTH - The open source texas holdem engine * - * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Affero General Public License as * - * published by the Free Software Foundation, either version 3 of the * - * License, or (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Affero General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - * * - * * - * Additional permission under GNU AGPL version 3 section 7 * - * * - * If you modify this program, or any covered work, by linking or * - * combining it with the OpenSSL project's OpenSSL library (or a * - * modified version of that library), containing parts covered by the * - * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * - * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * - * permission to convey the resulting work. * - * Corresponding Source for a non-source form of such a combination * - * shall include the source code for the parts of OpenSSL used as well * - * as that of the covered work. * - *****************************************************************************/ -/* PokerTH chat cleaner packet. */ - -#ifndef _INTERNALCHATCLEANERPACKET_H_ -#define _INTERNALCHATCLEANERPACKET_H_ - -#define CLEANER_PROTOCOL_VERSION 2 -#define MAX_CLEANER_PACKET_SIZE 384 - -typedef struct ChatCleanerMessage ChatCleanerMessage_t; - -class InternalChatCleanerPacket -{ -public: - InternalChatCleanerPacket(); - - InternalChatCleanerPacket(ChatCleanerMessage_t *msg) - : m_msg(msg) { - } - ~InternalChatCleanerPacket(); - ChatCleanerMessage_t *GetMsg() { - return m_msg; - } - ChatCleanerMessage_t **GetMsgPtr() { - return &m_msg; - } - -private: - ChatCleanerMessage_t *m_msg; -}; - -#endif - diff --git a/src/third_party/protobuf/chatcleaner.pb.cc b/src/third_party/protobuf/chatcleaner.pb.cc new file mode 100644 index 00000000..bc138ee6 --- /dev/null +++ b/src/third_party/protobuf/chatcleaner.pb.cc @@ -0,0 +1,1605 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: chatcleaner.proto + +#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION +#include "chatcleaner.pb.h" + +#include + +#include +#include +#include +#include +// @@protoc_insertion_point(includes) + +void protobuf_ShutdownFile_chatcleaner_2eproto() { + delete CleanerInitMessage::default_instance_; + delete CleanerInitAckMessage::default_instance_; + delete CleanerChatRequestMessage::default_instance_; + delete CleanerChatReplyMessage::default_instance_; + delete ChatCleanerMessage::default_instance_; +} + +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER +void protobuf_AddDesc_chatcleaner_2eproto_impl() { + GOOGLE_PROTOBUF_VERIFY_VERSION; + +#else +void protobuf_AddDesc_chatcleaner_2eproto() { + static bool already_here = false; + if (already_here) return; + already_here = true; + GOOGLE_PROTOBUF_VERIFY_VERSION; + +#endif + CleanerInitMessage::default_instance_ = new CleanerInitMessage(); + CleanerInitAckMessage::default_instance_ = new CleanerInitAckMessage(); + CleanerChatRequestMessage::default_instance_ = new CleanerChatRequestMessage(); + CleanerChatReplyMessage::default_instance_ = new CleanerChatReplyMessage(); + ChatCleanerMessage::default_instance_ = new ChatCleanerMessage(); + CleanerInitMessage::default_instance_->InitAsDefaultInstance(); + CleanerInitAckMessage::default_instance_->InitAsDefaultInstance(); + CleanerChatRequestMessage::default_instance_->InitAsDefaultInstance(); + CleanerChatReplyMessage::default_instance_->InitAsDefaultInstance(); + ChatCleanerMessage::default_instance_->InitAsDefaultInstance(); + ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_chatcleaner_2eproto); +} + +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER +GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AddDesc_chatcleaner_2eproto_once_); +void protobuf_AddDesc_chatcleaner_2eproto() { + ::google::protobuf::::google::protobuf::GoogleOnceInit(&protobuf_AddDesc_chatcleaner_2eproto_once_, + &protobuf_AddDesc_chatcleaner_2eproto_impl); +} +#else +// Force AddDescriptors() to be called at static initialization time. +struct StaticDescriptorInitializer_chatcleaner_2eproto { + StaticDescriptorInitializer_chatcleaner_2eproto() { + protobuf_AddDesc_chatcleaner_2eproto(); + } +} static_descriptor_initializer_chatcleaner_2eproto_; +#endif +bool CleanerChatType_IsValid(int value) { + switch(value) { + case 0: + case 1: + return true; + default: + return false; + } +} + + +// =================================================================== + +#ifndef _MSC_VER +const int CleanerInitMessage::kRequestedVersionFieldNumber; +const int CleanerInitMessage::kClientSecretFieldNumber; +#endif // !_MSC_VER + +CleanerInitMessage::CleanerInitMessage() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void CleanerInitMessage::InitAsDefaultInstance() { +} + +CleanerInitMessage::CleanerInitMessage(const CleanerInitMessage& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void CleanerInitMessage::SharedCtor() { + _cached_size_ = 0; + requestedversion_ = 0u; + clientsecret_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +CleanerInitMessage::~CleanerInitMessage() { + SharedDtor(); +} + +void CleanerInitMessage::SharedDtor() { + if (clientsecret_ != &::google::protobuf::internal::kEmptyString) { + delete clientsecret_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void CleanerInitMessage::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const CleanerInitMessage& CleanerInitMessage::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_chatcleaner_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_chatcleaner_2eproto(); +#endif + return *default_instance_; +} + +CleanerInitMessage* CleanerInitMessage::default_instance_ = NULL; + +CleanerInitMessage* CleanerInitMessage::New() const { + return new CleanerInitMessage; +} + +void CleanerInitMessage::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + requestedversion_ = 0u; + if (has_clientsecret()) { + if (clientsecret_ != &::google::protobuf::internal::kEmptyString) { + clientsecret_->clear(); + } + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool CleanerInitMessage::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // required uint32 requestedVersion = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( + input, &requestedversion_))); + set_has_requestedversion(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_clientSecret; + break; + } + + // required string clientSecret = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_clientSecret: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_clientsecret())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void CleanerInitMessage::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // required uint32 requestedVersion = 1; + if (has_requestedversion()) { + ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->requestedversion(), output); + } + + // required string clientSecret = 2; + if (has_clientsecret()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->clientsecret(), output); + } + +} + +int CleanerInitMessage::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // required uint32 requestedVersion = 1; + if (has_requestedversion()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt32Size( + this->requestedversion()); + } + + // required string clientSecret = 2; + if (has_clientsecret()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->clientsecret()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void CleanerInitMessage::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void CleanerInitMessage::MergeFrom(const CleanerInitMessage& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_requestedversion()) { + set_requestedversion(from.requestedversion()); + } + if (from.has_clientsecret()) { + set_clientsecret(from.clientsecret()); + } + } +} + +void CleanerInitMessage::CopyFrom(const CleanerInitMessage& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool CleanerInitMessage::IsInitialized() const { + if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; + + return true; +} + +void CleanerInitMessage::Swap(CleanerInitMessage* other) { + if (other != this) { + std::swap(requestedversion_, other->requestedversion_); + std::swap(clientsecret_, other->clientsecret_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string CleanerInitMessage::GetTypeName() const { + return "CleanerInitMessage"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int CleanerInitAckMessage::kServerVersionFieldNumber; +const int CleanerInitAckMessage::kServerSecretFieldNumber; +#endif // !_MSC_VER + +CleanerInitAckMessage::CleanerInitAckMessage() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void CleanerInitAckMessage::InitAsDefaultInstance() { +} + +CleanerInitAckMessage::CleanerInitAckMessage(const CleanerInitAckMessage& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void CleanerInitAckMessage::SharedCtor() { + _cached_size_ = 0; + serverversion_ = 0u; + serversecret_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +CleanerInitAckMessage::~CleanerInitAckMessage() { + SharedDtor(); +} + +void CleanerInitAckMessage::SharedDtor() { + if (serversecret_ != &::google::protobuf::internal::kEmptyString) { + delete serversecret_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void CleanerInitAckMessage::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const CleanerInitAckMessage& CleanerInitAckMessage::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_chatcleaner_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_chatcleaner_2eproto(); +#endif + return *default_instance_; +} + +CleanerInitAckMessage* CleanerInitAckMessage::default_instance_ = NULL; + +CleanerInitAckMessage* CleanerInitAckMessage::New() const { + return new CleanerInitAckMessage; +} + +void CleanerInitAckMessage::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + serverversion_ = 0u; + if (has_serversecret()) { + if (serversecret_ != &::google::protobuf::internal::kEmptyString) { + serversecret_->clear(); + } + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool CleanerInitAckMessage::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // required uint32 serverVersion = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( + input, &serverversion_))); + set_has_serverversion(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_serverSecret; + break; + } + + // required string serverSecret = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_serverSecret: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_serversecret())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void CleanerInitAckMessage::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // required uint32 serverVersion = 1; + if (has_serverversion()) { + ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->serverversion(), output); + } + + // required string serverSecret = 2; + if (has_serversecret()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 2, this->serversecret(), output); + } + +} + +int CleanerInitAckMessage::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // required uint32 serverVersion = 1; + if (has_serverversion()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt32Size( + this->serverversion()); + } + + // required string serverSecret = 2; + if (has_serversecret()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->serversecret()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void CleanerInitAckMessage::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void CleanerInitAckMessage::MergeFrom(const CleanerInitAckMessage& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_serverversion()) { + set_serverversion(from.serverversion()); + } + if (from.has_serversecret()) { + set_serversecret(from.serversecret()); + } + } +} + +void CleanerInitAckMessage::CopyFrom(const CleanerInitAckMessage& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool CleanerInitAckMessage::IsInitialized() const { + if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false; + + return true; +} + +void CleanerInitAckMessage::Swap(CleanerInitAckMessage* other) { + if (other != this) { + std::swap(serverversion_, other->serverversion_); + std::swap(serversecret_, other->serversecret_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string CleanerInitAckMessage::GetTypeName() const { + return "CleanerInitAckMessage"; +} + + +// =================================================================== + +#ifndef _MSC_VER +const int CleanerChatRequestMessage::kRequestIdFieldNumber; +const int CleanerChatRequestMessage::kCleanerChatTypeFieldNumber; +const int CleanerChatRequestMessage::kGameIdFieldNumber; +const int CleanerChatRequestMessage::kPlayerIdFieldNumber; +const int CleanerChatRequestMessage::kPlayerNameFieldNumber; +const int CleanerChatRequestMessage::kChatMessageFieldNumber; +#endif // !_MSC_VER + +CleanerChatRequestMessage::CleanerChatRequestMessage() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void CleanerChatRequestMessage::InitAsDefaultInstance() { +} + +CleanerChatRequestMessage::CleanerChatRequestMessage(const CleanerChatRequestMessage& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void CleanerChatRequestMessage::SharedCtor() { + _cached_size_ = 0; + requestid_ = 0u; + cleanerchattype_ = 0; + gameid_ = 0u; + playerid_ = 0u; + playername_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + chatmessage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +CleanerChatRequestMessage::~CleanerChatRequestMessage() { + SharedDtor(); +} + +void CleanerChatRequestMessage::SharedDtor() { + if (playername_ != &::google::protobuf::internal::kEmptyString) { + delete playername_; + } + if (chatmessage_ != &::google::protobuf::internal::kEmptyString) { + delete chatmessage_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void CleanerChatRequestMessage::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const CleanerChatRequestMessage& CleanerChatRequestMessage::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_chatcleaner_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_chatcleaner_2eproto(); +#endif + return *default_instance_; +} + +CleanerChatRequestMessage* CleanerChatRequestMessage::default_instance_ = NULL; + +CleanerChatRequestMessage* CleanerChatRequestMessage::New() const { + return new CleanerChatRequestMessage; +} + +void CleanerChatRequestMessage::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + requestid_ = 0u; + cleanerchattype_ = 0; + gameid_ = 0u; + playerid_ = 0u; + if (has_playername()) { + if (playername_ != &::google::protobuf::internal::kEmptyString) { + playername_->clear(); + } + } + if (has_chatmessage()) { + if (chatmessage_ != &::google::protobuf::internal::kEmptyString) { + chatmessage_->clear(); + } + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool CleanerChatRequestMessage::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // required uint32 requestId = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( + input, &requestid_))); + set_has_requestid(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(16)) goto parse_cleanerChatType; + break; + } + + // required .CleanerChatType cleanerChatType = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_cleanerChatType: + int value; + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( + input, &value))); + if (::CleanerChatType_IsValid(value)) { + set_cleanerchattype(static_cast< ::CleanerChatType >(value)); + } + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_gameId; + break; + } + + // optional uint32 gameId = 3 [default = 0]; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_gameId: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( + input, &gameid_))); + set_has_gameid(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(32)) goto parse_playerId; + break; + } + + // required uint32 playerId = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_playerId: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( + input, &playerid_))); + set_has_playerid(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_playerName; + break; + } + + // required string playerName = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_playerName: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_playername())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(50)) goto parse_chatMessage; + break; + } + + // required string chatMessage = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_chatMessage: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_chatmessage())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void CleanerChatRequestMessage::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // required uint32 requestId = 1; + if (has_requestid()) { + ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->requestid(), output); + } + + // required .CleanerChatType cleanerChatType = 2; + if (has_cleanerchattype()) { + ::google::protobuf::internal::WireFormatLite::WriteEnum( + 2, this->cleanerchattype(), output); + } + + // optional uint32 gameId = 3 [default = 0]; + if (has_gameid()) { + ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->gameid(), output); + } + + // required uint32 playerId = 4; + if (has_playerid()) { + ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->playerid(), output); + } + + // required string playerName = 5; + if (has_playername()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 5, this->playername(), output); + } + + // required string chatMessage = 6; + if (has_chatmessage()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 6, this->chatmessage(), output); + } + +} + +int CleanerChatRequestMessage::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // required uint32 requestId = 1; + if (has_requestid()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt32Size( + this->requestid()); + } + + // required .CleanerChatType cleanerChatType = 2; + if (has_cleanerchattype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::EnumSize(this->cleanerchattype()); + } + + // optional uint32 gameId = 3 [default = 0]; + if (has_gameid()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt32Size( + this->gameid()); + } + + // required uint32 playerId = 4; + if (has_playerid()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt32Size( + this->playerid()); + } + + // required string playerName = 5; + if (has_playername()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->playername()); + } + + // required string chatMessage = 6; + if (has_chatmessage()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->chatmessage()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void CleanerChatRequestMessage::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void CleanerChatRequestMessage::MergeFrom(const CleanerChatRequestMessage& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_requestid()) { + set_requestid(from.requestid()); + } + if (from.has_cleanerchattype()) { + set_cleanerchattype(from.cleanerchattype()); + } + if (from.has_gameid()) { + set_gameid(from.gameid()); + } + if (from.has_playerid()) { + set_playerid(from.playerid()); + } + if (from.has_playername()) { + set_playername(from.playername()); + } + if (from.has_chatmessage()) { + set_chatmessage(from.chatmessage()); + } + } +} + +void CleanerChatRequestMessage::CopyFrom(const CleanerChatRequestMessage& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool CleanerChatRequestMessage::IsInitialized() const { + if ((_has_bits_[0] & 0x0000003b) != 0x0000003b) return false; + + return true; +} + +void CleanerChatRequestMessage::Swap(CleanerChatRequestMessage* other) { + if (other != this) { + std::swap(requestid_, other->requestid_); + std::swap(cleanerchattype_, other->cleanerchattype_); + std::swap(gameid_, other->gameid_); + std::swap(playerid_, other->playerid_); + std::swap(playername_, other->playername_); + std::swap(chatmessage_, other->chatmessage_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string CleanerChatRequestMessage::GetTypeName() const { + return "CleanerChatRequestMessage"; +} + + +// =================================================================== + +bool CleanerChatReplyMessage_CleanerActionType_IsValid(int value) { + switch(value) { + case 0: + case 1: + case 2: + case 3: + case 4: + return true; + default: + return false; + } +} + +#ifndef _MSC_VER +const CleanerChatReplyMessage_CleanerActionType CleanerChatReplyMessage::cleanerActionNone; +const CleanerChatReplyMessage_CleanerActionType CleanerChatReplyMessage::cleanerActionWarning; +const CleanerChatReplyMessage_CleanerActionType CleanerChatReplyMessage::cleanerActionKick; +const CleanerChatReplyMessage_CleanerActionType CleanerChatReplyMessage::cleanerActionBan; +const CleanerChatReplyMessage_CleanerActionType CleanerChatReplyMessage::cleanerActionMute; +const CleanerChatReplyMessage_CleanerActionType CleanerChatReplyMessage::CleanerActionType_MIN; +const CleanerChatReplyMessage_CleanerActionType CleanerChatReplyMessage::CleanerActionType_MAX; +const int CleanerChatReplyMessage::CleanerActionType_ARRAYSIZE; +#endif // _MSC_VER +#ifndef _MSC_VER +const int CleanerChatReplyMessage::kRequestIdFieldNumber; +const int CleanerChatReplyMessage::kCleanerChatTypeFieldNumber; +const int CleanerChatReplyMessage::kGameIdFieldNumber; +const int CleanerChatReplyMessage::kPlayerIdFieldNumber; +const int CleanerChatReplyMessage::kCleanerActionTypeFieldNumber; +const int CleanerChatReplyMessage::kCleanerTextFieldNumber; +#endif // !_MSC_VER + +CleanerChatReplyMessage::CleanerChatReplyMessage() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void CleanerChatReplyMessage::InitAsDefaultInstance() { +} + +CleanerChatReplyMessage::CleanerChatReplyMessage(const CleanerChatReplyMessage& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void CleanerChatReplyMessage::SharedCtor() { + _cached_size_ = 0; + requestid_ = 0u; + cleanerchattype_ = 0; + gameid_ = 0u; + playerid_ = 0u; + cleaneractiontype_ = 0; + cleanertext_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +CleanerChatReplyMessage::~CleanerChatReplyMessage() { + SharedDtor(); +} + +void CleanerChatReplyMessage::SharedDtor() { + if (cleanertext_ != &::google::protobuf::internal::kEmptyString) { + delete cleanertext_; + } + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + } +} + +void CleanerChatReplyMessage::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const CleanerChatReplyMessage& CleanerChatReplyMessage::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_chatcleaner_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_chatcleaner_2eproto(); +#endif + return *default_instance_; +} + +CleanerChatReplyMessage* CleanerChatReplyMessage::default_instance_ = NULL; + +CleanerChatReplyMessage* CleanerChatReplyMessage::New() const { + return new CleanerChatReplyMessage; +} + +void CleanerChatReplyMessage::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + requestid_ = 0u; + cleanerchattype_ = 0; + gameid_ = 0u; + playerid_ = 0u; + cleaneractiontype_ = 0; + if (has_cleanertext()) { + if (cleanertext_ != &::google::protobuf::internal::kEmptyString) { + cleanertext_->clear(); + } + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool CleanerChatReplyMessage::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // required uint32 requestId = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( + input, &requestid_))); + set_has_requestid(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(16)) goto parse_cleanerChatType; + break; + } + + // required .CleanerChatType cleanerChatType = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_cleanerChatType: + int value; + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( + input, &value))); + if (::CleanerChatType_IsValid(value)) { + set_cleanerchattype(static_cast< ::CleanerChatType >(value)); + } + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(24)) goto parse_gameId; + break; + } + + // optional uint32 gameId = 3 [default = 0]; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_gameId: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( + input, &gameid_))); + set_has_gameid(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(32)) goto parse_playerId; + break; + } + + // required uint32 playerId = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_playerId: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( + input, &playerid_))); + set_has_playerid(); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(40)) goto parse_cleanerActionType; + break; + } + + // required .CleanerChatReplyMessage.CleanerActionType cleanerActionType = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_cleanerActionType: + int value; + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( + input, &value))); + if (::CleanerChatReplyMessage_CleanerActionType_IsValid(value)) { + set_cleaneractiontype(static_cast< ::CleanerChatReplyMessage_CleanerActionType >(value)); + } + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(50)) goto parse_cleanerText; + break; + } + + // optional string cleanerText = 6 [default = ""]; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_cleanerText: + DO_(::google::protobuf::internal::WireFormatLite::ReadString( + input, this->mutable_cleanertext())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void CleanerChatReplyMessage::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // required uint32 requestId = 1; + if (has_requestid()) { + ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->requestid(), output); + } + + // required .CleanerChatType cleanerChatType = 2; + if (has_cleanerchattype()) { + ::google::protobuf::internal::WireFormatLite::WriteEnum( + 2, this->cleanerchattype(), output); + } + + // optional uint32 gameId = 3 [default = 0]; + if (has_gameid()) { + ::google::protobuf::internal::WireFormatLite::WriteUInt32(3, this->gameid(), output); + } + + // required uint32 playerId = 4; + if (has_playerid()) { + ::google::protobuf::internal::WireFormatLite::WriteUInt32(4, this->playerid(), output); + } + + // required .CleanerChatReplyMessage.CleanerActionType cleanerActionType = 5; + if (has_cleaneractiontype()) { + ::google::protobuf::internal::WireFormatLite::WriteEnum( + 5, this->cleaneractiontype(), output); + } + + // optional string cleanerText = 6 [default = ""]; + if (has_cleanertext()) { + ::google::protobuf::internal::WireFormatLite::WriteString( + 6, this->cleanertext(), output); + } + +} + +int CleanerChatReplyMessage::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // required uint32 requestId = 1; + if (has_requestid()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt32Size( + this->requestid()); + } + + // required .CleanerChatType cleanerChatType = 2; + if (has_cleanerchattype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::EnumSize(this->cleanerchattype()); + } + + // optional uint32 gameId = 3 [default = 0]; + if (has_gameid()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt32Size( + this->gameid()); + } + + // required uint32 playerId = 4; + if (has_playerid()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt32Size( + this->playerid()); + } + + // required .CleanerChatReplyMessage.CleanerActionType cleanerActionType = 5; + if (has_cleaneractiontype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::EnumSize(this->cleaneractiontype()); + } + + // optional string cleanerText = 6 [default = ""]; + if (has_cleanertext()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::StringSize( + this->cleanertext()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void CleanerChatReplyMessage::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void CleanerChatReplyMessage::MergeFrom(const CleanerChatReplyMessage& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_requestid()) { + set_requestid(from.requestid()); + } + if (from.has_cleanerchattype()) { + set_cleanerchattype(from.cleanerchattype()); + } + if (from.has_gameid()) { + set_gameid(from.gameid()); + } + if (from.has_playerid()) { + set_playerid(from.playerid()); + } + if (from.has_cleaneractiontype()) { + set_cleaneractiontype(from.cleaneractiontype()); + } + if (from.has_cleanertext()) { + set_cleanertext(from.cleanertext()); + } + } +} + +void CleanerChatReplyMessage::CopyFrom(const CleanerChatReplyMessage& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool CleanerChatReplyMessage::IsInitialized() const { + if ((_has_bits_[0] & 0x0000001b) != 0x0000001b) return false; + + return true; +} + +void CleanerChatReplyMessage::Swap(CleanerChatReplyMessage* other) { + if (other != this) { + std::swap(requestid_, other->requestid_); + std::swap(cleanerchattype_, other->cleanerchattype_); + std::swap(gameid_, other->gameid_); + std::swap(playerid_, other->playerid_); + std::swap(cleaneractiontype_, other->cleaneractiontype_); + std::swap(cleanertext_, other->cleanertext_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string CleanerChatReplyMessage::GetTypeName() const { + return "CleanerChatReplyMessage"; +} + + +// =================================================================== + +bool ChatCleanerMessage_ChatCleanerMessageType_IsValid(int value) { + switch(value) { + case 1: + case 2: + case 3: + case 4: + return true; + default: + return false; + } +} + +#ifndef _MSC_VER +const ChatCleanerMessage_ChatCleanerMessageType ChatCleanerMessage::Type_CleanerInitMessage; +const ChatCleanerMessage_ChatCleanerMessageType ChatCleanerMessage::Type_CleanerInitAckMessage; +const ChatCleanerMessage_ChatCleanerMessageType ChatCleanerMessage::Type_CleanerChatRequestMessage; +const ChatCleanerMessage_ChatCleanerMessageType ChatCleanerMessage::Type_CleanerChatReplyMessage; +const ChatCleanerMessage_ChatCleanerMessageType ChatCleanerMessage::ChatCleanerMessageType_MIN; +const ChatCleanerMessage_ChatCleanerMessageType ChatCleanerMessage::ChatCleanerMessageType_MAX; +const int ChatCleanerMessage::ChatCleanerMessageType_ARRAYSIZE; +#endif // _MSC_VER +#ifndef _MSC_VER +const int ChatCleanerMessage::kMessageTypeFieldNumber; +const int ChatCleanerMessage::kCleanerInitMessageFieldNumber; +const int ChatCleanerMessage::kCleanerInitAckMessageFieldNumber; +const int ChatCleanerMessage::kCleanerChatRequestMessageFieldNumber; +const int ChatCleanerMessage::kCleanerChatReplyMessageFieldNumber; +#endif // !_MSC_VER + +ChatCleanerMessage::ChatCleanerMessage() + : ::google::protobuf::MessageLite() { + SharedCtor(); +} + +void ChatCleanerMessage::InitAsDefaultInstance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + cleanerinitmessage_ = const_cast< ::CleanerInitMessage*>( + ::CleanerInitMessage::internal_default_instance()); +#else + cleanerinitmessage_ = const_cast< ::CleanerInitMessage*>(&::CleanerInitMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + cleanerinitackmessage_ = const_cast< ::CleanerInitAckMessage*>( + ::CleanerInitAckMessage::internal_default_instance()); +#else + cleanerinitackmessage_ = const_cast< ::CleanerInitAckMessage*>(&::CleanerInitAckMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + cleanerchatrequestmessage_ = const_cast< ::CleanerChatRequestMessage*>( + ::CleanerChatRequestMessage::internal_default_instance()); +#else + cleanerchatrequestmessage_ = const_cast< ::CleanerChatRequestMessage*>(&::CleanerChatRequestMessage::default_instance()); +#endif +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + cleanerchatreplymessage_ = const_cast< ::CleanerChatReplyMessage*>( + ::CleanerChatReplyMessage::internal_default_instance()); +#else + cleanerchatreplymessage_ = const_cast< ::CleanerChatReplyMessage*>(&::CleanerChatReplyMessage::default_instance()); +#endif +} + +ChatCleanerMessage::ChatCleanerMessage(const ChatCleanerMessage& from) + : ::google::protobuf::MessageLite() { + SharedCtor(); + MergeFrom(from); +} + +void ChatCleanerMessage::SharedCtor() { + _cached_size_ = 0; + messagetype_ = 1; + cleanerinitmessage_ = NULL; + cleanerinitackmessage_ = NULL; + cleanerchatrequestmessage_ = NULL; + cleanerchatreplymessage_ = NULL; + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +ChatCleanerMessage::~ChatCleanerMessage() { + SharedDtor(); +} + +void ChatCleanerMessage::SharedDtor() { + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + if (this != &default_instance()) { + #else + if (this != default_instance_) { + #endif + delete cleanerinitmessage_; + delete cleanerinitackmessage_; + delete cleanerchatrequestmessage_; + delete cleanerchatreplymessage_; + } +} + +void ChatCleanerMessage::SetCachedSize(int size) const { + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); +} +const ChatCleanerMessage& ChatCleanerMessage::default_instance() { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + protobuf_AddDesc_chatcleaner_2eproto(); +#else + if (default_instance_ == NULL) protobuf_AddDesc_chatcleaner_2eproto(); +#endif + return *default_instance_; +} + +ChatCleanerMessage* ChatCleanerMessage::default_instance_ = NULL; + +ChatCleanerMessage* ChatCleanerMessage::New() const { + return new ChatCleanerMessage; +} + +void ChatCleanerMessage::Clear() { + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + messagetype_ = 1; + if (has_cleanerinitmessage()) { + if (cleanerinitmessage_ != NULL) cleanerinitmessage_->::CleanerInitMessage::Clear(); + } + if (has_cleanerinitackmessage()) { + if (cleanerinitackmessage_ != NULL) cleanerinitackmessage_->::CleanerInitAckMessage::Clear(); + } + if (has_cleanerchatrequestmessage()) { + if (cleanerchatrequestmessage_ != NULL) cleanerchatrequestmessage_->::CleanerChatRequestMessage::Clear(); + } + if (has_cleanerchatreplymessage()) { + if (cleanerchatreplymessage_ != NULL) cleanerchatreplymessage_->::CleanerChatReplyMessage::Clear(); + } + } + ::memset(_has_bits_, 0, sizeof(_has_bits_)); +} + +bool ChatCleanerMessage::MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input) { +#define DO_(EXPRESSION) if (!(EXPRESSION)) return false + ::google::protobuf::uint32 tag; + while ((tag = input->ReadTag()) != 0) { + switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) { + // required .ChatCleanerMessage.ChatCleanerMessageType messageType = 1; + case 1: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + int value; + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>( + input, &value))); + if (::ChatCleanerMessage_ChatCleanerMessageType_IsValid(value)) { + set_messagetype(static_cast< ::ChatCleanerMessage_ChatCleanerMessageType >(value)); + } + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(18)) goto parse_cleanerInitMessage; + break; + } + + // optional .CleanerInitMessage cleanerInitMessage = 2; + case 2: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_cleanerInitMessage: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_cleanerinitmessage())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(26)) goto parse_cleanerInitAckMessage; + break; + } + + // optional .CleanerInitAckMessage cleanerInitAckMessage = 3; + case 3: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_cleanerInitAckMessage: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_cleanerinitackmessage())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(34)) goto parse_cleanerChatRequestMessage; + break; + } + + // optional .CleanerChatRequestMessage cleanerChatRequestMessage = 4; + case 4: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_cleanerChatRequestMessage: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_cleanerchatrequestmessage())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectTag(42)) goto parse_cleanerChatReplyMessage; + break; + } + + // optional .CleanerChatReplyMessage cleanerChatReplyMessage = 5; + case 5: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { + parse_cleanerChatReplyMessage: + DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual( + input, mutable_cleanerchatreplymessage())); + } else { + goto handle_uninterpreted; + } + if (input->ExpectAtEnd()) return true; + break; + } + + default: { + handle_uninterpreted: + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) { + return true; + } + DO_(::google::protobuf::internal::WireFormatLite::SkipField(input, tag)); + break; + } + } + } + return true; +#undef DO_ +} + +void ChatCleanerMessage::SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const { + // required .ChatCleanerMessage.ChatCleanerMessageType messageType = 1; + if (has_messagetype()) { + ::google::protobuf::internal::WireFormatLite::WriteEnum( + 1, this->messagetype(), output); + } + + // optional .CleanerInitMessage cleanerInitMessage = 2; + if (has_cleanerinitmessage()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 2, this->cleanerinitmessage(), output); + } + + // optional .CleanerInitAckMessage cleanerInitAckMessage = 3; + if (has_cleanerinitackmessage()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 3, this->cleanerinitackmessage(), output); + } + + // optional .CleanerChatRequestMessage cleanerChatRequestMessage = 4; + if (has_cleanerchatrequestmessage()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 4, this->cleanerchatrequestmessage(), output); + } + + // optional .CleanerChatReplyMessage cleanerChatReplyMessage = 5; + if (has_cleanerchatreplymessage()) { + ::google::protobuf::internal::WireFormatLite::WriteMessage( + 5, this->cleanerchatreplymessage(), output); + } + +} + +int ChatCleanerMessage::ByteSize() const { + int total_size = 0; + + if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) { + // required .ChatCleanerMessage.ChatCleanerMessageType messageType = 1; + if (has_messagetype()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::EnumSize(this->messagetype()); + } + + // optional .CleanerInitMessage cleanerInitMessage = 2; + if (has_cleanerinitmessage()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->cleanerinitmessage()); + } + + // optional .CleanerInitAckMessage cleanerInitAckMessage = 3; + if (has_cleanerinitackmessage()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->cleanerinitackmessage()); + } + + // optional .CleanerChatRequestMessage cleanerChatRequestMessage = 4; + if (has_cleanerchatrequestmessage()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->cleanerchatrequestmessage()); + } + + // optional .CleanerChatReplyMessage cleanerChatReplyMessage = 5; + if (has_cleanerchatreplymessage()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual( + this->cleanerchatreplymessage()); + } + + } + GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN(); + _cached_size_ = total_size; + GOOGLE_SAFE_CONCURRENT_WRITES_END(); + return total_size; +} + +void ChatCleanerMessage::CheckTypeAndMergeFrom( + const ::google::protobuf::MessageLite& from) { + MergeFrom(*::google::protobuf::down_cast(&from)); +} + +void ChatCleanerMessage::MergeFrom(const ChatCleanerMessage& from) { + GOOGLE_CHECK_NE(&from, this); + if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) { + if (from.has_messagetype()) { + set_messagetype(from.messagetype()); + } + if (from.has_cleanerinitmessage()) { + mutable_cleanerinitmessage()->::CleanerInitMessage::MergeFrom(from.cleanerinitmessage()); + } + if (from.has_cleanerinitackmessage()) { + mutable_cleanerinitackmessage()->::CleanerInitAckMessage::MergeFrom(from.cleanerinitackmessage()); + } + if (from.has_cleanerchatrequestmessage()) { + mutable_cleanerchatrequestmessage()->::CleanerChatRequestMessage::MergeFrom(from.cleanerchatrequestmessage()); + } + if (from.has_cleanerchatreplymessage()) { + mutable_cleanerchatreplymessage()->::CleanerChatReplyMessage::MergeFrom(from.cleanerchatreplymessage()); + } + } +} + +void ChatCleanerMessage::CopyFrom(const ChatCleanerMessage& from) { + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ChatCleanerMessage::IsInitialized() const { + if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false; + + if (has_cleanerinitmessage()) { + if (!this->cleanerinitmessage().IsInitialized()) return false; + } + if (has_cleanerinitackmessage()) { + if (!this->cleanerinitackmessage().IsInitialized()) return false; + } + if (has_cleanerchatrequestmessage()) { + if (!this->cleanerchatrequestmessage().IsInitialized()) return false; + } + if (has_cleanerchatreplymessage()) { + if (!this->cleanerchatreplymessage().IsInitialized()) return false; + } + return true; +} + +void ChatCleanerMessage::Swap(ChatCleanerMessage* other) { + if (other != this) { + std::swap(messagetype_, other->messagetype_); + std::swap(cleanerinitmessage_, other->cleanerinitmessage_); + std::swap(cleanerinitackmessage_, other->cleanerinitackmessage_); + std::swap(cleanerchatrequestmessage_, other->cleanerchatrequestmessage_); + std::swap(cleanerchatreplymessage_, other->cleanerchatreplymessage_); + std::swap(_has_bits_[0], other->_has_bits_[0]); + std::swap(_cached_size_, other->_cached_size_); + } +} + +::std::string ChatCleanerMessage::GetTypeName() const { + return "ChatCleanerMessage"; +} + + +// @@protoc_insertion_point(namespace_scope) + +// @@protoc_insertion_point(global_scope) diff --git a/src/third_party/protobuf/chatcleaner.pb.h b/src/third_party/protobuf/chatcleaner.pb.h new file mode 100644 index 00000000..37dce473 --- /dev/null +++ b/src/third_party/protobuf/chatcleaner.pb.h @@ -0,0 +1,1524 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: chatcleaner.proto + +#ifndef PROTOBUF_chatcleaner_2eproto__INCLUDED +#define PROTOBUF_chatcleaner_2eproto__INCLUDED + +#include + +#include + +#if GOOGLE_PROTOBUF_VERSION < 2005000 +#error This file was generated by a newer version of protoc which is +#error incompatible with your Protocol Buffer headers. Please update +#error your headers. +#endif +#if 2005000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION +#error This file was generated by an older version of protoc which is +#error incompatible with your Protocol Buffer headers. Please +#error regenerate this file with a newer version of protoc. +#endif + +#include +#include +#include +#include +// @@protoc_insertion_point(includes) + +// Internal implementation detail -- do not call these. +void protobuf_AddDesc_chatcleaner_2eproto(); +void protobuf_AssignDesc_chatcleaner_2eproto(); +void protobuf_ShutdownFile_chatcleaner_2eproto(); + +class CleanerInitMessage; +class CleanerInitAckMessage; +class CleanerChatRequestMessage; +class CleanerChatReplyMessage; +class ChatCleanerMessage; + +enum CleanerChatReplyMessage_CleanerActionType { + CleanerChatReplyMessage_CleanerActionType_cleanerActionNone = 0, + CleanerChatReplyMessage_CleanerActionType_cleanerActionWarning = 1, + CleanerChatReplyMessage_CleanerActionType_cleanerActionKick = 2, + CleanerChatReplyMessage_CleanerActionType_cleanerActionBan = 3, + CleanerChatReplyMessage_CleanerActionType_cleanerActionMute = 4 +}; +bool CleanerChatReplyMessage_CleanerActionType_IsValid(int value); +const CleanerChatReplyMessage_CleanerActionType CleanerChatReplyMessage_CleanerActionType_CleanerActionType_MIN = CleanerChatReplyMessage_CleanerActionType_cleanerActionNone; +const CleanerChatReplyMessage_CleanerActionType CleanerChatReplyMessage_CleanerActionType_CleanerActionType_MAX = CleanerChatReplyMessage_CleanerActionType_cleanerActionMute; +const int CleanerChatReplyMessage_CleanerActionType_CleanerActionType_ARRAYSIZE = CleanerChatReplyMessage_CleanerActionType_CleanerActionType_MAX + 1; + +enum ChatCleanerMessage_ChatCleanerMessageType { + ChatCleanerMessage_ChatCleanerMessageType_Type_CleanerInitMessage = 1, + ChatCleanerMessage_ChatCleanerMessageType_Type_CleanerInitAckMessage = 2, + ChatCleanerMessage_ChatCleanerMessageType_Type_CleanerChatRequestMessage = 3, + ChatCleanerMessage_ChatCleanerMessageType_Type_CleanerChatReplyMessage = 4 +}; +bool ChatCleanerMessage_ChatCleanerMessageType_IsValid(int value); +const ChatCleanerMessage_ChatCleanerMessageType ChatCleanerMessage_ChatCleanerMessageType_ChatCleanerMessageType_MIN = ChatCleanerMessage_ChatCleanerMessageType_Type_CleanerInitMessage; +const ChatCleanerMessage_ChatCleanerMessageType ChatCleanerMessage_ChatCleanerMessageType_ChatCleanerMessageType_MAX = ChatCleanerMessage_ChatCleanerMessageType_Type_CleanerChatReplyMessage; +const int ChatCleanerMessage_ChatCleanerMessageType_ChatCleanerMessageType_ARRAYSIZE = ChatCleanerMessage_ChatCleanerMessageType_ChatCleanerMessageType_MAX + 1; + +enum CleanerChatType { + cleanerChatTypeLobby = 0, + cleanerChatTypeGame = 1 +}; +bool CleanerChatType_IsValid(int value); +const CleanerChatType CleanerChatType_MIN = cleanerChatTypeLobby; +const CleanerChatType CleanerChatType_MAX = cleanerChatTypeGame; +const int CleanerChatType_ARRAYSIZE = CleanerChatType_MAX + 1; + +// =================================================================== + +class CleanerInitMessage : public ::google::protobuf::MessageLite { + public: + CleanerInitMessage(); + virtual ~CleanerInitMessage(); + + CleanerInitMessage(const CleanerInitMessage& from); + + inline CleanerInitMessage& operator=(const CleanerInitMessage& from) { + CopyFrom(from); + return *this; + } + + static const CleanerInitMessage& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const CleanerInitMessage* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(CleanerInitMessage* other); + + // implements Message ---------------------------------------------- + + CleanerInitMessage* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const CleanerInitMessage& from); + void MergeFrom(const CleanerInitMessage& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // required uint32 requestedVersion = 1; + inline bool has_requestedversion() const; + inline void clear_requestedversion(); + static const int kRequestedVersionFieldNumber = 1; + inline ::google::protobuf::uint32 requestedversion() const; + inline void set_requestedversion(::google::protobuf::uint32 value); + + // required string clientSecret = 2; + inline bool has_clientsecret() const; + inline void clear_clientsecret(); + static const int kClientSecretFieldNumber = 2; + inline const ::std::string& clientsecret() const; + inline void set_clientsecret(const ::std::string& value); + inline void set_clientsecret(const char* value); + inline void set_clientsecret(const char* value, size_t size); + inline ::std::string* mutable_clientsecret(); + inline ::std::string* release_clientsecret(); + inline void set_allocated_clientsecret(::std::string* clientsecret); + + // @@protoc_insertion_point(class_scope:CleanerInitMessage) + private: + inline void set_has_requestedversion(); + inline void clear_has_requestedversion(); + inline void set_has_clientsecret(); + inline void clear_has_clientsecret(); + + ::std::string* clientsecret_; + ::google::protobuf::uint32 requestedversion_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_chatcleaner_2eproto_impl(); + #else + friend void protobuf_AddDesc_chatcleaner_2eproto(); + #endif + friend void protobuf_AssignDesc_chatcleaner_2eproto(); + friend void protobuf_ShutdownFile_chatcleaner_2eproto(); + + void InitAsDefaultInstance(); + static CleanerInitMessage* default_instance_; +}; +// ------------------------------------------------------------------- + +class CleanerInitAckMessage : public ::google::protobuf::MessageLite { + public: + CleanerInitAckMessage(); + virtual ~CleanerInitAckMessage(); + + CleanerInitAckMessage(const CleanerInitAckMessage& from); + + inline CleanerInitAckMessage& operator=(const CleanerInitAckMessage& from) { + CopyFrom(from); + return *this; + } + + static const CleanerInitAckMessage& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const CleanerInitAckMessage* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(CleanerInitAckMessage* other); + + // implements Message ---------------------------------------------- + + CleanerInitAckMessage* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const CleanerInitAckMessage& from); + void MergeFrom(const CleanerInitAckMessage& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // required uint32 serverVersion = 1; + inline bool has_serverversion() const; + inline void clear_serverversion(); + static const int kServerVersionFieldNumber = 1; + inline ::google::protobuf::uint32 serverversion() const; + inline void set_serverversion(::google::protobuf::uint32 value); + + // required string serverSecret = 2; + inline bool has_serversecret() const; + inline void clear_serversecret(); + static const int kServerSecretFieldNumber = 2; + inline const ::std::string& serversecret() const; + inline void set_serversecret(const ::std::string& value); + inline void set_serversecret(const char* value); + inline void set_serversecret(const char* value, size_t size); + inline ::std::string* mutable_serversecret(); + inline ::std::string* release_serversecret(); + inline void set_allocated_serversecret(::std::string* serversecret); + + // @@protoc_insertion_point(class_scope:CleanerInitAckMessage) + private: + inline void set_has_serverversion(); + inline void clear_has_serverversion(); + inline void set_has_serversecret(); + inline void clear_has_serversecret(); + + ::std::string* serversecret_; + ::google::protobuf::uint32 serverversion_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_chatcleaner_2eproto_impl(); + #else + friend void protobuf_AddDesc_chatcleaner_2eproto(); + #endif + friend void protobuf_AssignDesc_chatcleaner_2eproto(); + friend void protobuf_ShutdownFile_chatcleaner_2eproto(); + + void InitAsDefaultInstance(); + static CleanerInitAckMessage* default_instance_; +}; +// ------------------------------------------------------------------- + +class CleanerChatRequestMessage : public ::google::protobuf::MessageLite { + public: + CleanerChatRequestMessage(); + virtual ~CleanerChatRequestMessage(); + + CleanerChatRequestMessage(const CleanerChatRequestMessage& from); + + inline CleanerChatRequestMessage& operator=(const CleanerChatRequestMessage& from) { + CopyFrom(from); + return *this; + } + + static const CleanerChatRequestMessage& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const CleanerChatRequestMessage* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(CleanerChatRequestMessage* other); + + // implements Message ---------------------------------------------- + + CleanerChatRequestMessage* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const CleanerChatRequestMessage& from); + void MergeFrom(const CleanerChatRequestMessage& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + // required uint32 requestId = 1; + inline bool has_requestid() const; + inline void clear_requestid(); + static const int kRequestIdFieldNumber = 1; + inline ::google::protobuf::uint32 requestid() const; + inline void set_requestid(::google::protobuf::uint32 value); + + // required .CleanerChatType cleanerChatType = 2; + inline bool has_cleanerchattype() const; + inline void clear_cleanerchattype(); + static const int kCleanerChatTypeFieldNumber = 2; + inline ::CleanerChatType cleanerchattype() const; + inline void set_cleanerchattype(::CleanerChatType value); + + // optional uint32 gameId = 3 [default = 0]; + inline bool has_gameid() const; + inline void clear_gameid(); + static const int kGameIdFieldNumber = 3; + inline ::google::protobuf::uint32 gameid() const; + inline void set_gameid(::google::protobuf::uint32 value); + + // required uint32 playerId = 4; + inline bool has_playerid() const; + inline void clear_playerid(); + static const int kPlayerIdFieldNumber = 4; + inline ::google::protobuf::uint32 playerid() const; + inline void set_playerid(::google::protobuf::uint32 value); + + // required string playerName = 5; + inline bool has_playername() const; + inline void clear_playername(); + static const int kPlayerNameFieldNumber = 5; + inline const ::std::string& playername() const; + inline void set_playername(const ::std::string& value); + inline void set_playername(const char* value); + inline void set_playername(const char* value, size_t size); + inline ::std::string* mutable_playername(); + inline ::std::string* release_playername(); + inline void set_allocated_playername(::std::string* playername); + + // required string chatMessage = 6; + inline bool has_chatmessage() const; + inline void clear_chatmessage(); + static const int kChatMessageFieldNumber = 6; + inline const ::std::string& chatmessage() const; + inline void set_chatmessage(const ::std::string& value); + inline void set_chatmessage(const char* value); + inline void set_chatmessage(const char* value, size_t size); + inline ::std::string* mutable_chatmessage(); + inline ::std::string* release_chatmessage(); + inline void set_allocated_chatmessage(::std::string* chatmessage); + + // @@protoc_insertion_point(class_scope:CleanerChatRequestMessage) + private: + inline void set_has_requestid(); + inline void clear_has_requestid(); + inline void set_has_cleanerchattype(); + inline void clear_has_cleanerchattype(); + inline void set_has_gameid(); + inline void clear_has_gameid(); + inline void set_has_playerid(); + inline void clear_has_playerid(); + inline void set_has_playername(); + inline void clear_has_playername(); + inline void set_has_chatmessage(); + inline void clear_has_chatmessage(); + + ::google::protobuf::uint32 requestid_; + int cleanerchattype_; + ::google::protobuf::uint32 gameid_; + ::google::protobuf::uint32 playerid_; + ::std::string* playername_; + ::std::string* chatmessage_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_chatcleaner_2eproto_impl(); + #else + friend void protobuf_AddDesc_chatcleaner_2eproto(); + #endif + friend void protobuf_AssignDesc_chatcleaner_2eproto(); + friend void protobuf_ShutdownFile_chatcleaner_2eproto(); + + void InitAsDefaultInstance(); + static CleanerChatRequestMessage* default_instance_; +}; +// ------------------------------------------------------------------- + +class CleanerChatReplyMessage : public ::google::protobuf::MessageLite { + public: + CleanerChatReplyMessage(); + virtual ~CleanerChatReplyMessage(); + + CleanerChatReplyMessage(const CleanerChatReplyMessage& from); + + inline CleanerChatReplyMessage& operator=(const CleanerChatReplyMessage& from) { + CopyFrom(from); + return *this; + } + + static const CleanerChatReplyMessage& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const CleanerChatReplyMessage* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(CleanerChatReplyMessage* other); + + // implements Message ---------------------------------------------- + + CleanerChatReplyMessage* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const CleanerChatReplyMessage& from); + void MergeFrom(const CleanerChatReplyMessage& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + typedef CleanerChatReplyMessage_CleanerActionType CleanerActionType; + static const CleanerActionType cleanerActionNone = CleanerChatReplyMessage_CleanerActionType_cleanerActionNone; + static const CleanerActionType cleanerActionWarning = CleanerChatReplyMessage_CleanerActionType_cleanerActionWarning; + static const CleanerActionType cleanerActionKick = CleanerChatReplyMessage_CleanerActionType_cleanerActionKick; + static const CleanerActionType cleanerActionBan = CleanerChatReplyMessage_CleanerActionType_cleanerActionBan; + static const CleanerActionType cleanerActionMute = CleanerChatReplyMessage_CleanerActionType_cleanerActionMute; + static inline bool CleanerActionType_IsValid(int value) { + return CleanerChatReplyMessage_CleanerActionType_IsValid(value); + } + static const CleanerActionType CleanerActionType_MIN = + CleanerChatReplyMessage_CleanerActionType_CleanerActionType_MIN; + static const CleanerActionType CleanerActionType_MAX = + CleanerChatReplyMessage_CleanerActionType_CleanerActionType_MAX; + static const int CleanerActionType_ARRAYSIZE = + CleanerChatReplyMessage_CleanerActionType_CleanerActionType_ARRAYSIZE; + + // accessors ------------------------------------------------------- + + // required uint32 requestId = 1; + inline bool has_requestid() const; + inline void clear_requestid(); + static const int kRequestIdFieldNumber = 1; + inline ::google::protobuf::uint32 requestid() const; + inline void set_requestid(::google::protobuf::uint32 value); + + // required .CleanerChatType cleanerChatType = 2; + inline bool has_cleanerchattype() const; + inline void clear_cleanerchattype(); + static const int kCleanerChatTypeFieldNumber = 2; + inline ::CleanerChatType cleanerchattype() const; + inline void set_cleanerchattype(::CleanerChatType value); + + // optional uint32 gameId = 3 [default = 0]; + inline bool has_gameid() const; + inline void clear_gameid(); + static const int kGameIdFieldNumber = 3; + inline ::google::protobuf::uint32 gameid() const; + inline void set_gameid(::google::protobuf::uint32 value); + + // required uint32 playerId = 4; + inline bool has_playerid() const; + inline void clear_playerid(); + static const int kPlayerIdFieldNumber = 4; + inline ::google::protobuf::uint32 playerid() const; + inline void set_playerid(::google::protobuf::uint32 value); + + // required .CleanerChatReplyMessage.CleanerActionType cleanerActionType = 5; + inline bool has_cleaneractiontype() const; + inline void clear_cleaneractiontype(); + static const int kCleanerActionTypeFieldNumber = 5; + inline ::CleanerChatReplyMessage_CleanerActionType cleaneractiontype() const; + inline void set_cleaneractiontype(::CleanerChatReplyMessage_CleanerActionType value); + + // optional string cleanerText = 6 [default = ""]; + inline bool has_cleanertext() const; + inline void clear_cleanertext(); + static const int kCleanerTextFieldNumber = 6; + inline const ::std::string& cleanertext() const; + inline void set_cleanertext(const ::std::string& value); + inline void set_cleanertext(const char* value); + inline void set_cleanertext(const char* value, size_t size); + inline ::std::string* mutable_cleanertext(); + inline ::std::string* release_cleanertext(); + inline void set_allocated_cleanertext(::std::string* cleanertext); + + // @@protoc_insertion_point(class_scope:CleanerChatReplyMessage) + private: + inline void set_has_requestid(); + inline void clear_has_requestid(); + inline void set_has_cleanerchattype(); + inline void clear_has_cleanerchattype(); + inline void set_has_gameid(); + inline void clear_has_gameid(); + inline void set_has_playerid(); + inline void clear_has_playerid(); + inline void set_has_cleaneractiontype(); + inline void clear_has_cleaneractiontype(); + inline void set_has_cleanertext(); + inline void clear_has_cleanertext(); + + ::google::protobuf::uint32 requestid_; + int cleanerchattype_; + ::google::protobuf::uint32 gameid_; + ::google::protobuf::uint32 playerid_; + ::std::string* cleanertext_; + int cleaneractiontype_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_chatcleaner_2eproto_impl(); + #else + friend void protobuf_AddDesc_chatcleaner_2eproto(); + #endif + friend void protobuf_AssignDesc_chatcleaner_2eproto(); + friend void protobuf_ShutdownFile_chatcleaner_2eproto(); + + void InitAsDefaultInstance(); + static CleanerChatReplyMessage* default_instance_; +}; +// ------------------------------------------------------------------- + +class ChatCleanerMessage : public ::google::protobuf::MessageLite { + public: + ChatCleanerMessage(); + virtual ~ChatCleanerMessage(); + + ChatCleanerMessage(const ChatCleanerMessage& from); + + inline ChatCleanerMessage& operator=(const ChatCleanerMessage& from) { + CopyFrom(from); + return *this; + } + + static const ChatCleanerMessage& default_instance(); + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + // Returns the internal default instance pointer. This function can + // return NULL thus should not be used by the user. This is intended + // for Protobuf internal code. Please use default_instance() declared + // above instead. + static inline const ChatCleanerMessage* internal_default_instance() { + return default_instance_; + } + #endif + + void Swap(ChatCleanerMessage* other); + + // implements Message ---------------------------------------------- + + ChatCleanerMessage* New() const; + void CheckTypeAndMergeFrom(const ::google::protobuf::MessageLite& from); + void CopyFrom(const ChatCleanerMessage& from); + void MergeFrom(const ChatCleanerMessage& from); + void Clear(); + bool IsInitialized() const; + + int ByteSize() const; + bool MergePartialFromCodedStream( + ::google::protobuf::io::CodedInputStream* input); + void SerializeWithCachedSizes( + ::google::protobuf::io::CodedOutputStream* output) const; + int GetCachedSize() const { return _cached_size_; } + private: + void SharedCtor(); + void SharedDtor(); + void SetCachedSize(int size) const; + public: + + ::std::string GetTypeName() const; + + // nested types ---------------------------------------------------- + + typedef ChatCleanerMessage_ChatCleanerMessageType ChatCleanerMessageType; + static const ChatCleanerMessageType Type_CleanerInitMessage = ChatCleanerMessage_ChatCleanerMessageType_Type_CleanerInitMessage; + static const ChatCleanerMessageType Type_CleanerInitAckMessage = ChatCleanerMessage_ChatCleanerMessageType_Type_CleanerInitAckMessage; + static const ChatCleanerMessageType Type_CleanerChatRequestMessage = ChatCleanerMessage_ChatCleanerMessageType_Type_CleanerChatRequestMessage; + static const ChatCleanerMessageType Type_CleanerChatReplyMessage = ChatCleanerMessage_ChatCleanerMessageType_Type_CleanerChatReplyMessage; + static inline bool ChatCleanerMessageType_IsValid(int value) { + return ChatCleanerMessage_ChatCleanerMessageType_IsValid(value); + } + static const ChatCleanerMessageType ChatCleanerMessageType_MIN = + ChatCleanerMessage_ChatCleanerMessageType_ChatCleanerMessageType_MIN; + static const ChatCleanerMessageType ChatCleanerMessageType_MAX = + ChatCleanerMessage_ChatCleanerMessageType_ChatCleanerMessageType_MAX; + static const int ChatCleanerMessageType_ARRAYSIZE = + ChatCleanerMessage_ChatCleanerMessageType_ChatCleanerMessageType_ARRAYSIZE; + + // accessors ------------------------------------------------------- + + // required .ChatCleanerMessage.ChatCleanerMessageType messageType = 1; + inline bool has_messagetype() const; + inline void clear_messagetype(); + static const int kMessageTypeFieldNumber = 1; + inline ::ChatCleanerMessage_ChatCleanerMessageType messagetype() const; + inline void set_messagetype(::ChatCleanerMessage_ChatCleanerMessageType value); + + // optional .CleanerInitMessage cleanerInitMessage = 2; + inline bool has_cleanerinitmessage() const; + inline void clear_cleanerinitmessage(); + static const int kCleanerInitMessageFieldNumber = 2; + inline const ::CleanerInitMessage& cleanerinitmessage() const; + inline ::CleanerInitMessage* mutable_cleanerinitmessage(); + inline ::CleanerInitMessage* release_cleanerinitmessage(); + inline void set_allocated_cleanerinitmessage(::CleanerInitMessage* cleanerinitmessage); + + // optional .CleanerInitAckMessage cleanerInitAckMessage = 3; + inline bool has_cleanerinitackmessage() const; + inline void clear_cleanerinitackmessage(); + static const int kCleanerInitAckMessageFieldNumber = 3; + inline const ::CleanerInitAckMessage& cleanerinitackmessage() const; + inline ::CleanerInitAckMessage* mutable_cleanerinitackmessage(); + inline ::CleanerInitAckMessage* release_cleanerinitackmessage(); + inline void set_allocated_cleanerinitackmessage(::CleanerInitAckMessage* cleanerinitackmessage); + + // optional .CleanerChatRequestMessage cleanerChatRequestMessage = 4; + inline bool has_cleanerchatrequestmessage() const; + inline void clear_cleanerchatrequestmessage(); + static const int kCleanerChatRequestMessageFieldNumber = 4; + inline const ::CleanerChatRequestMessage& cleanerchatrequestmessage() const; + inline ::CleanerChatRequestMessage* mutable_cleanerchatrequestmessage(); + inline ::CleanerChatRequestMessage* release_cleanerchatrequestmessage(); + inline void set_allocated_cleanerchatrequestmessage(::CleanerChatRequestMessage* cleanerchatrequestmessage); + + // optional .CleanerChatReplyMessage cleanerChatReplyMessage = 5; + inline bool has_cleanerchatreplymessage() const; + inline void clear_cleanerchatreplymessage(); + static const int kCleanerChatReplyMessageFieldNumber = 5; + inline const ::CleanerChatReplyMessage& cleanerchatreplymessage() const; + inline ::CleanerChatReplyMessage* mutable_cleanerchatreplymessage(); + inline ::CleanerChatReplyMessage* release_cleanerchatreplymessage(); + inline void set_allocated_cleanerchatreplymessage(::CleanerChatReplyMessage* cleanerchatreplymessage); + + // @@protoc_insertion_point(class_scope:ChatCleanerMessage) + private: + inline void set_has_messagetype(); + inline void clear_has_messagetype(); + inline void set_has_cleanerinitmessage(); + inline void clear_has_cleanerinitmessage(); + inline void set_has_cleanerinitackmessage(); + inline void clear_has_cleanerinitackmessage(); + inline void set_has_cleanerchatrequestmessage(); + inline void clear_has_cleanerchatrequestmessage(); + inline void set_has_cleanerchatreplymessage(); + inline void clear_has_cleanerchatreplymessage(); + + ::CleanerInitMessage* cleanerinitmessage_; + ::CleanerInitAckMessage* cleanerinitackmessage_; + ::CleanerChatRequestMessage* cleanerchatrequestmessage_; + ::CleanerChatReplyMessage* cleanerchatreplymessage_; + int messagetype_; + + mutable int _cached_size_; + ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; + + #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + friend void protobuf_AddDesc_chatcleaner_2eproto_impl(); + #else + friend void protobuf_AddDesc_chatcleaner_2eproto(); + #endif + friend void protobuf_AssignDesc_chatcleaner_2eproto(); + friend void protobuf_ShutdownFile_chatcleaner_2eproto(); + + void InitAsDefaultInstance(); + static ChatCleanerMessage* default_instance_; +}; +// =================================================================== + + +// =================================================================== + +// CleanerInitMessage + +// required uint32 requestedVersion = 1; +inline bool CleanerInitMessage::has_requestedversion() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void CleanerInitMessage::set_has_requestedversion() { + _has_bits_[0] |= 0x00000001u; +} +inline void CleanerInitMessage::clear_has_requestedversion() { + _has_bits_[0] &= ~0x00000001u; +} +inline void CleanerInitMessage::clear_requestedversion() { + requestedversion_ = 0u; + clear_has_requestedversion(); +} +inline ::google::protobuf::uint32 CleanerInitMessage::requestedversion() const { + return requestedversion_; +} +inline void CleanerInitMessage::set_requestedversion(::google::protobuf::uint32 value) { + set_has_requestedversion(); + requestedversion_ = value; +} + +// required string clientSecret = 2; +inline bool CleanerInitMessage::has_clientsecret() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void CleanerInitMessage::set_has_clientsecret() { + _has_bits_[0] |= 0x00000002u; +} +inline void CleanerInitMessage::clear_has_clientsecret() { + _has_bits_[0] &= ~0x00000002u; +} +inline void CleanerInitMessage::clear_clientsecret() { + if (clientsecret_ != &::google::protobuf::internal::kEmptyString) { + clientsecret_->clear(); + } + clear_has_clientsecret(); +} +inline const ::std::string& CleanerInitMessage::clientsecret() const { + return *clientsecret_; +} +inline void CleanerInitMessage::set_clientsecret(const ::std::string& value) { + set_has_clientsecret(); + if (clientsecret_ == &::google::protobuf::internal::kEmptyString) { + clientsecret_ = new ::std::string; + } + clientsecret_->assign(value); +} +inline void CleanerInitMessage::set_clientsecret(const char* value) { + set_has_clientsecret(); + if (clientsecret_ == &::google::protobuf::internal::kEmptyString) { + clientsecret_ = new ::std::string; + } + clientsecret_->assign(value); +} +inline void CleanerInitMessage::set_clientsecret(const char* value, size_t size) { + set_has_clientsecret(); + if (clientsecret_ == &::google::protobuf::internal::kEmptyString) { + clientsecret_ = new ::std::string; + } + clientsecret_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CleanerInitMessage::mutable_clientsecret() { + set_has_clientsecret(); + if (clientsecret_ == &::google::protobuf::internal::kEmptyString) { + clientsecret_ = new ::std::string; + } + return clientsecret_; +} +inline ::std::string* CleanerInitMessage::release_clientsecret() { + clear_has_clientsecret(); + if (clientsecret_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = clientsecret_; + clientsecret_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CleanerInitMessage::set_allocated_clientsecret(::std::string* clientsecret) { + if (clientsecret_ != &::google::protobuf::internal::kEmptyString) { + delete clientsecret_; + } + if (clientsecret) { + set_has_clientsecret(); + clientsecret_ = clientsecret; + } else { + clear_has_clientsecret(); + clientsecret_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// ------------------------------------------------------------------- + +// CleanerInitAckMessage + +// required uint32 serverVersion = 1; +inline bool CleanerInitAckMessage::has_serverversion() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void CleanerInitAckMessage::set_has_serverversion() { + _has_bits_[0] |= 0x00000001u; +} +inline void CleanerInitAckMessage::clear_has_serverversion() { + _has_bits_[0] &= ~0x00000001u; +} +inline void CleanerInitAckMessage::clear_serverversion() { + serverversion_ = 0u; + clear_has_serverversion(); +} +inline ::google::protobuf::uint32 CleanerInitAckMessage::serverversion() const { + return serverversion_; +} +inline void CleanerInitAckMessage::set_serverversion(::google::protobuf::uint32 value) { + set_has_serverversion(); + serverversion_ = value; +} + +// required string serverSecret = 2; +inline bool CleanerInitAckMessage::has_serversecret() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void CleanerInitAckMessage::set_has_serversecret() { + _has_bits_[0] |= 0x00000002u; +} +inline void CleanerInitAckMessage::clear_has_serversecret() { + _has_bits_[0] &= ~0x00000002u; +} +inline void CleanerInitAckMessage::clear_serversecret() { + if (serversecret_ != &::google::protobuf::internal::kEmptyString) { + serversecret_->clear(); + } + clear_has_serversecret(); +} +inline const ::std::string& CleanerInitAckMessage::serversecret() const { + return *serversecret_; +} +inline void CleanerInitAckMessage::set_serversecret(const ::std::string& value) { + set_has_serversecret(); + if (serversecret_ == &::google::protobuf::internal::kEmptyString) { + serversecret_ = new ::std::string; + } + serversecret_->assign(value); +} +inline void CleanerInitAckMessage::set_serversecret(const char* value) { + set_has_serversecret(); + if (serversecret_ == &::google::protobuf::internal::kEmptyString) { + serversecret_ = new ::std::string; + } + serversecret_->assign(value); +} +inline void CleanerInitAckMessage::set_serversecret(const char* value, size_t size) { + set_has_serversecret(); + if (serversecret_ == &::google::protobuf::internal::kEmptyString) { + serversecret_ = new ::std::string; + } + serversecret_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CleanerInitAckMessage::mutable_serversecret() { + set_has_serversecret(); + if (serversecret_ == &::google::protobuf::internal::kEmptyString) { + serversecret_ = new ::std::string; + } + return serversecret_; +} +inline ::std::string* CleanerInitAckMessage::release_serversecret() { + clear_has_serversecret(); + if (serversecret_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = serversecret_; + serversecret_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CleanerInitAckMessage::set_allocated_serversecret(::std::string* serversecret) { + if (serversecret_ != &::google::protobuf::internal::kEmptyString) { + delete serversecret_; + } + if (serversecret) { + set_has_serversecret(); + serversecret_ = serversecret; + } else { + clear_has_serversecret(); + serversecret_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// ------------------------------------------------------------------- + +// CleanerChatRequestMessage + +// required uint32 requestId = 1; +inline bool CleanerChatRequestMessage::has_requestid() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void CleanerChatRequestMessage::set_has_requestid() { + _has_bits_[0] |= 0x00000001u; +} +inline void CleanerChatRequestMessage::clear_has_requestid() { + _has_bits_[0] &= ~0x00000001u; +} +inline void CleanerChatRequestMessage::clear_requestid() { + requestid_ = 0u; + clear_has_requestid(); +} +inline ::google::protobuf::uint32 CleanerChatRequestMessage::requestid() const { + return requestid_; +} +inline void CleanerChatRequestMessage::set_requestid(::google::protobuf::uint32 value) { + set_has_requestid(); + requestid_ = value; +} + +// required .CleanerChatType cleanerChatType = 2; +inline bool CleanerChatRequestMessage::has_cleanerchattype() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void CleanerChatRequestMessage::set_has_cleanerchattype() { + _has_bits_[0] |= 0x00000002u; +} +inline void CleanerChatRequestMessage::clear_has_cleanerchattype() { + _has_bits_[0] &= ~0x00000002u; +} +inline void CleanerChatRequestMessage::clear_cleanerchattype() { + cleanerchattype_ = 0; + clear_has_cleanerchattype(); +} +inline ::CleanerChatType CleanerChatRequestMessage::cleanerchattype() const { + return static_cast< ::CleanerChatType >(cleanerchattype_); +} +inline void CleanerChatRequestMessage::set_cleanerchattype(::CleanerChatType value) { + assert(::CleanerChatType_IsValid(value)); + set_has_cleanerchattype(); + cleanerchattype_ = value; +} + +// optional uint32 gameId = 3 [default = 0]; +inline bool CleanerChatRequestMessage::has_gameid() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void CleanerChatRequestMessage::set_has_gameid() { + _has_bits_[0] |= 0x00000004u; +} +inline void CleanerChatRequestMessage::clear_has_gameid() { + _has_bits_[0] &= ~0x00000004u; +} +inline void CleanerChatRequestMessage::clear_gameid() { + gameid_ = 0u; + clear_has_gameid(); +} +inline ::google::protobuf::uint32 CleanerChatRequestMessage::gameid() const { + return gameid_; +} +inline void CleanerChatRequestMessage::set_gameid(::google::protobuf::uint32 value) { + set_has_gameid(); + gameid_ = value; +} + +// required uint32 playerId = 4; +inline bool CleanerChatRequestMessage::has_playerid() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void CleanerChatRequestMessage::set_has_playerid() { + _has_bits_[0] |= 0x00000008u; +} +inline void CleanerChatRequestMessage::clear_has_playerid() { + _has_bits_[0] &= ~0x00000008u; +} +inline void CleanerChatRequestMessage::clear_playerid() { + playerid_ = 0u; + clear_has_playerid(); +} +inline ::google::protobuf::uint32 CleanerChatRequestMessage::playerid() const { + return playerid_; +} +inline void CleanerChatRequestMessage::set_playerid(::google::protobuf::uint32 value) { + set_has_playerid(); + playerid_ = value; +} + +// required string playerName = 5; +inline bool CleanerChatRequestMessage::has_playername() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void CleanerChatRequestMessage::set_has_playername() { + _has_bits_[0] |= 0x00000010u; +} +inline void CleanerChatRequestMessage::clear_has_playername() { + _has_bits_[0] &= ~0x00000010u; +} +inline void CleanerChatRequestMessage::clear_playername() { + if (playername_ != &::google::protobuf::internal::kEmptyString) { + playername_->clear(); + } + clear_has_playername(); +} +inline const ::std::string& CleanerChatRequestMessage::playername() const { + return *playername_; +} +inline void CleanerChatRequestMessage::set_playername(const ::std::string& value) { + set_has_playername(); + if (playername_ == &::google::protobuf::internal::kEmptyString) { + playername_ = new ::std::string; + } + playername_->assign(value); +} +inline void CleanerChatRequestMessage::set_playername(const char* value) { + set_has_playername(); + if (playername_ == &::google::protobuf::internal::kEmptyString) { + playername_ = new ::std::string; + } + playername_->assign(value); +} +inline void CleanerChatRequestMessage::set_playername(const char* value, size_t size) { + set_has_playername(); + if (playername_ == &::google::protobuf::internal::kEmptyString) { + playername_ = new ::std::string; + } + playername_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CleanerChatRequestMessage::mutable_playername() { + set_has_playername(); + if (playername_ == &::google::protobuf::internal::kEmptyString) { + playername_ = new ::std::string; + } + return playername_; +} +inline ::std::string* CleanerChatRequestMessage::release_playername() { + clear_has_playername(); + if (playername_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = playername_; + playername_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CleanerChatRequestMessage::set_allocated_playername(::std::string* playername) { + if (playername_ != &::google::protobuf::internal::kEmptyString) { + delete playername_; + } + if (playername) { + set_has_playername(); + playername_ = playername; + } else { + clear_has_playername(); + playername_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// required string chatMessage = 6; +inline bool CleanerChatRequestMessage::has_chatmessage() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void CleanerChatRequestMessage::set_has_chatmessage() { + _has_bits_[0] |= 0x00000020u; +} +inline void CleanerChatRequestMessage::clear_has_chatmessage() { + _has_bits_[0] &= ~0x00000020u; +} +inline void CleanerChatRequestMessage::clear_chatmessage() { + if (chatmessage_ != &::google::protobuf::internal::kEmptyString) { + chatmessage_->clear(); + } + clear_has_chatmessage(); +} +inline const ::std::string& CleanerChatRequestMessage::chatmessage() const { + return *chatmessage_; +} +inline void CleanerChatRequestMessage::set_chatmessage(const ::std::string& value) { + set_has_chatmessage(); + if (chatmessage_ == &::google::protobuf::internal::kEmptyString) { + chatmessage_ = new ::std::string; + } + chatmessage_->assign(value); +} +inline void CleanerChatRequestMessage::set_chatmessage(const char* value) { + set_has_chatmessage(); + if (chatmessage_ == &::google::protobuf::internal::kEmptyString) { + chatmessage_ = new ::std::string; + } + chatmessage_->assign(value); +} +inline void CleanerChatRequestMessage::set_chatmessage(const char* value, size_t size) { + set_has_chatmessage(); + if (chatmessage_ == &::google::protobuf::internal::kEmptyString) { + chatmessage_ = new ::std::string; + } + chatmessage_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CleanerChatRequestMessage::mutable_chatmessage() { + set_has_chatmessage(); + if (chatmessage_ == &::google::protobuf::internal::kEmptyString) { + chatmessage_ = new ::std::string; + } + return chatmessage_; +} +inline ::std::string* CleanerChatRequestMessage::release_chatmessage() { + clear_has_chatmessage(); + if (chatmessage_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = chatmessage_; + chatmessage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CleanerChatRequestMessage::set_allocated_chatmessage(::std::string* chatmessage) { + if (chatmessage_ != &::google::protobuf::internal::kEmptyString) { + delete chatmessage_; + } + if (chatmessage) { + set_has_chatmessage(); + chatmessage_ = chatmessage; + } else { + clear_has_chatmessage(); + chatmessage_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// ------------------------------------------------------------------- + +// CleanerChatReplyMessage + +// required uint32 requestId = 1; +inline bool CleanerChatReplyMessage::has_requestid() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void CleanerChatReplyMessage::set_has_requestid() { + _has_bits_[0] |= 0x00000001u; +} +inline void CleanerChatReplyMessage::clear_has_requestid() { + _has_bits_[0] &= ~0x00000001u; +} +inline void CleanerChatReplyMessage::clear_requestid() { + requestid_ = 0u; + clear_has_requestid(); +} +inline ::google::protobuf::uint32 CleanerChatReplyMessage::requestid() const { + return requestid_; +} +inline void CleanerChatReplyMessage::set_requestid(::google::protobuf::uint32 value) { + set_has_requestid(); + requestid_ = value; +} + +// required .CleanerChatType cleanerChatType = 2; +inline bool CleanerChatReplyMessage::has_cleanerchattype() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void CleanerChatReplyMessage::set_has_cleanerchattype() { + _has_bits_[0] |= 0x00000002u; +} +inline void CleanerChatReplyMessage::clear_has_cleanerchattype() { + _has_bits_[0] &= ~0x00000002u; +} +inline void CleanerChatReplyMessage::clear_cleanerchattype() { + cleanerchattype_ = 0; + clear_has_cleanerchattype(); +} +inline ::CleanerChatType CleanerChatReplyMessage::cleanerchattype() const { + return static_cast< ::CleanerChatType >(cleanerchattype_); +} +inline void CleanerChatReplyMessage::set_cleanerchattype(::CleanerChatType value) { + assert(::CleanerChatType_IsValid(value)); + set_has_cleanerchattype(); + cleanerchattype_ = value; +} + +// optional uint32 gameId = 3 [default = 0]; +inline bool CleanerChatReplyMessage::has_gameid() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void CleanerChatReplyMessage::set_has_gameid() { + _has_bits_[0] |= 0x00000004u; +} +inline void CleanerChatReplyMessage::clear_has_gameid() { + _has_bits_[0] &= ~0x00000004u; +} +inline void CleanerChatReplyMessage::clear_gameid() { + gameid_ = 0u; + clear_has_gameid(); +} +inline ::google::protobuf::uint32 CleanerChatReplyMessage::gameid() const { + return gameid_; +} +inline void CleanerChatReplyMessage::set_gameid(::google::protobuf::uint32 value) { + set_has_gameid(); + gameid_ = value; +} + +// required uint32 playerId = 4; +inline bool CleanerChatReplyMessage::has_playerid() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void CleanerChatReplyMessage::set_has_playerid() { + _has_bits_[0] |= 0x00000008u; +} +inline void CleanerChatReplyMessage::clear_has_playerid() { + _has_bits_[0] &= ~0x00000008u; +} +inline void CleanerChatReplyMessage::clear_playerid() { + playerid_ = 0u; + clear_has_playerid(); +} +inline ::google::protobuf::uint32 CleanerChatReplyMessage::playerid() const { + return playerid_; +} +inline void CleanerChatReplyMessage::set_playerid(::google::protobuf::uint32 value) { + set_has_playerid(); + playerid_ = value; +} + +// required .CleanerChatReplyMessage.CleanerActionType cleanerActionType = 5; +inline bool CleanerChatReplyMessage::has_cleaneractiontype() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void CleanerChatReplyMessage::set_has_cleaneractiontype() { + _has_bits_[0] |= 0x00000010u; +} +inline void CleanerChatReplyMessage::clear_has_cleaneractiontype() { + _has_bits_[0] &= ~0x00000010u; +} +inline void CleanerChatReplyMessage::clear_cleaneractiontype() { + cleaneractiontype_ = 0; + clear_has_cleaneractiontype(); +} +inline ::CleanerChatReplyMessage_CleanerActionType CleanerChatReplyMessage::cleaneractiontype() const { + return static_cast< ::CleanerChatReplyMessage_CleanerActionType >(cleaneractiontype_); +} +inline void CleanerChatReplyMessage::set_cleaneractiontype(::CleanerChatReplyMessage_CleanerActionType value) { + assert(::CleanerChatReplyMessage_CleanerActionType_IsValid(value)); + set_has_cleaneractiontype(); + cleaneractiontype_ = value; +} + +// optional string cleanerText = 6 [default = ""]; +inline bool CleanerChatReplyMessage::has_cleanertext() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void CleanerChatReplyMessage::set_has_cleanertext() { + _has_bits_[0] |= 0x00000020u; +} +inline void CleanerChatReplyMessage::clear_has_cleanertext() { + _has_bits_[0] &= ~0x00000020u; +} +inline void CleanerChatReplyMessage::clear_cleanertext() { + if (cleanertext_ != &::google::protobuf::internal::kEmptyString) { + cleanertext_->clear(); + } + clear_has_cleanertext(); +} +inline const ::std::string& CleanerChatReplyMessage::cleanertext() const { + return *cleanertext_; +} +inline void CleanerChatReplyMessage::set_cleanertext(const ::std::string& value) { + set_has_cleanertext(); + if (cleanertext_ == &::google::protobuf::internal::kEmptyString) { + cleanertext_ = new ::std::string; + } + cleanertext_->assign(value); +} +inline void CleanerChatReplyMessage::set_cleanertext(const char* value) { + set_has_cleanertext(); + if (cleanertext_ == &::google::protobuf::internal::kEmptyString) { + cleanertext_ = new ::std::string; + } + cleanertext_->assign(value); +} +inline void CleanerChatReplyMessage::set_cleanertext(const char* value, size_t size) { + set_has_cleanertext(); + if (cleanertext_ == &::google::protobuf::internal::kEmptyString) { + cleanertext_ = new ::std::string; + } + cleanertext_->assign(reinterpret_cast(value), size); +} +inline ::std::string* CleanerChatReplyMessage::mutable_cleanertext() { + set_has_cleanertext(); + if (cleanertext_ == &::google::protobuf::internal::kEmptyString) { + cleanertext_ = new ::std::string; + } + return cleanertext_; +} +inline ::std::string* CleanerChatReplyMessage::release_cleanertext() { + clear_has_cleanertext(); + if (cleanertext_ == &::google::protobuf::internal::kEmptyString) { + return NULL; + } else { + ::std::string* temp = cleanertext_; + cleanertext_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + return temp; + } +} +inline void CleanerChatReplyMessage::set_allocated_cleanertext(::std::string* cleanertext) { + if (cleanertext_ != &::google::protobuf::internal::kEmptyString) { + delete cleanertext_; + } + if (cleanertext) { + set_has_cleanertext(); + cleanertext_ = cleanertext; + } else { + clear_has_cleanertext(); + cleanertext_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); + } +} + +// ------------------------------------------------------------------- + +// ChatCleanerMessage + +// required .ChatCleanerMessage.ChatCleanerMessageType messageType = 1; +inline bool ChatCleanerMessage::has_messagetype() const { + return (_has_bits_[0] & 0x00000001u) != 0; +} +inline void ChatCleanerMessage::set_has_messagetype() { + _has_bits_[0] |= 0x00000001u; +} +inline void ChatCleanerMessage::clear_has_messagetype() { + _has_bits_[0] &= ~0x00000001u; +} +inline void ChatCleanerMessage::clear_messagetype() { + messagetype_ = 1; + clear_has_messagetype(); +} +inline ::ChatCleanerMessage_ChatCleanerMessageType ChatCleanerMessage::messagetype() const { + return static_cast< ::ChatCleanerMessage_ChatCleanerMessageType >(messagetype_); +} +inline void ChatCleanerMessage::set_messagetype(::ChatCleanerMessage_ChatCleanerMessageType value) { + assert(::ChatCleanerMessage_ChatCleanerMessageType_IsValid(value)); + set_has_messagetype(); + messagetype_ = value; +} + +// optional .CleanerInitMessage cleanerInitMessage = 2; +inline bool ChatCleanerMessage::has_cleanerinitmessage() const { + return (_has_bits_[0] & 0x00000002u) != 0; +} +inline void ChatCleanerMessage::set_has_cleanerinitmessage() { + _has_bits_[0] |= 0x00000002u; +} +inline void ChatCleanerMessage::clear_has_cleanerinitmessage() { + _has_bits_[0] &= ~0x00000002u; +} +inline void ChatCleanerMessage::clear_cleanerinitmessage() { + if (cleanerinitmessage_ != NULL) cleanerinitmessage_->::CleanerInitMessage::Clear(); + clear_has_cleanerinitmessage(); +} +inline const ::CleanerInitMessage& ChatCleanerMessage::cleanerinitmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return cleanerinitmessage_ != NULL ? *cleanerinitmessage_ : *default_instance().cleanerinitmessage_; +#else + return cleanerinitmessage_ != NULL ? *cleanerinitmessage_ : *default_instance_->cleanerinitmessage_; +#endif +} +inline ::CleanerInitMessage* ChatCleanerMessage::mutable_cleanerinitmessage() { + set_has_cleanerinitmessage(); + if (cleanerinitmessage_ == NULL) cleanerinitmessage_ = new ::CleanerInitMessage; + return cleanerinitmessage_; +} +inline ::CleanerInitMessage* ChatCleanerMessage::release_cleanerinitmessage() { + clear_has_cleanerinitmessage(); + ::CleanerInitMessage* temp = cleanerinitmessage_; + cleanerinitmessage_ = NULL; + return temp; +} +inline void ChatCleanerMessage::set_allocated_cleanerinitmessage(::CleanerInitMessage* cleanerinitmessage) { + delete cleanerinitmessage_; + cleanerinitmessage_ = cleanerinitmessage; + if (cleanerinitmessage) { + set_has_cleanerinitmessage(); + } else { + clear_has_cleanerinitmessage(); + } +} + +// optional .CleanerInitAckMessage cleanerInitAckMessage = 3; +inline bool ChatCleanerMessage::has_cleanerinitackmessage() const { + return (_has_bits_[0] & 0x00000004u) != 0; +} +inline void ChatCleanerMessage::set_has_cleanerinitackmessage() { + _has_bits_[0] |= 0x00000004u; +} +inline void ChatCleanerMessage::clear_has_cleanerinitackmessage() { + _has_bits_[0] &= ~0x00000004u; +} +inline void ChatCleanerMessage::clear_cleanerinitackmessage() { + if (cleanerinitackmessage_ != NULL) cleanerinitackmessage_->::CleanerInitAckMessage::Clear(); + clear_has_cleanerinitackmessage(); +} +inline const ::CleanerInitAckMessage& ChatCleanerMessage::cleanerinitackmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return cleanerinitackmessage_ != NULL ? *cleanerinitackmessage_ : *default_instance().cleanerinitackmessage_; +#else + return cleanerinitackmessage_ != NULL ? *cleanerinitackmessage_ : *default_instance_->cleanerinitackmessage_; +#endif +} +inline ::CleanerInitAckMessage* ChatCleanerMessage::mutable_cleanerinitackmessage() { + set_has_cleanerinitackmessage(); + if (cleanerinitackmessage_ == NULL) cleanerinitackmessage_ = new ::CleanerInitAckMessage; + return cleanerinitackmessage_; +} +inline ::CleanerInitAckMessage* ChatCleanerMessage::release_cleanerinitackmessage() { + clear_has_cleanerinitackmessage(); + ::CleanerInitAckMessage* temp = cleanerinitackmessage_; + cleanerinitackmessage_ = NULL; + return temp; +} +inline void ChatCleanerMessage::set_allocated_cleanerinitackmessage(::CleanerInitAckMessage* cleanerinitackmessage) { + delete cleanerinitackmessage_; + cleanerinitackmessage_ = cleanerinitackmessage; + if (cleanerinitackmessage) { + set_has_cleanerinitackmessage(); + } else { + clear_has_cleanerinitackmessage(); + } +} + +// optional .CleanerChatRequestMessage cleanerChatRequestMessage = 4; +inline bool ChatCleanerMessage::has_cleanerchatrequestmessage() const { + return (_has_bits_[0] & 0x00000008u) != 0; +} +inline void ChatCleanerMessage::set_has_cleanerchatrequestmessage() { + _has_bits_[0] |= 0x00000008u; +} +inline void ChatCleanerMessage::clear_has_cleanerchatrequestmessage() { + _has_bits_[0] &= ~0x00000008u; +} +inline void ChatCleanerMessage::clear_cleanerchatrequestmessage() { + if (cleanerchatrequestmessage_ != NULL) cleanerchatrequestmessage_->::CleanerChatRequestMessage::Clear(); + clear_has_cleanerchatrequestmessage(); +} +inline const ::CleanerChatRequestMessage& ChatCleanerMessage::cleanerchatrequestmessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return cleanerchatrequestmessage_ != NULL ? *cleanerchatrequestmessage_ : *default_instance().cleanerchatrequestmessage_; +#else + return cleanerchatrequestmessage_ != NULL ? *cleanerchatrequestmessage_ : *default_instance_->cleanerchatrequestmessage_; +#endif +} +inline ::CleanerChatRequestMessage* ChatCleanerMessage::mutable_cleanerchatrequestmessage() { + set_has_cleanerchatrequestmessage(); + if (cleanerchatrequestmessage_ == NULL) cleanerchatrequestmessage_ = new ::CleanerChatRequestMessage; + return cleanerchatrequestmessage_; +} +inline ::CleanerChatRequestMessage* ChatCleanerMessage::release_cleanerchatrequestmessage() { + clear_has_cleanerchatrequestmessage(); + ::CleanerChatRequestMessage* temp = cleanerchatrequestmessage_; + cleanerchatrequestmessage_ = NULL; + return temp; +} +inline void ChatCleanerMessage::set_allocated_cleanerchatrequestmessage(::CleanerChatRequestMessage* cleanerchatrequestmessage) { + delete cleanerchatrequestmessage_; + cleanerchatrequestmessage_ = cleanerchatrequestmessage; + if (cleanerchatrequestmessage) { + set_has_cleanerchatrequestmessage(); + } else { + clear_has_cleanerchatrequestmessage(); + } +} + +// optional .CleanerChatReplyMessage cleanerChatReplyMessage = 5; +inline bool ChatCleanerMessage::has_cleanerchatreplymessage() const { + return (_has_bits_[0] & 0x00000010u) != 0; +} +inline void ChatCleanerMessage::set_has_cleanerchatreplymessage() { + _has_bits_[0] |= 0x00000010u; +} +inline void ChatCleanerMessage::clear_has_cleanerchatreplymessage() { + _has_bits_[0] &= ~0x00000010u; +} +inline void ChatCleanerMessage::clear_cleanerchatreplymessage() { + if (cleanerchatreplymessage_ != NULL) cleanerchatreplymessage_->::CleanerChatReplyMessage::Clear(); + clear_has_cleanerchatreplymessage(); +} +inline const ::CleanerChatReplyMessage& ChatCleanerMessage::cleanerchatreplymessage() const { +#ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER + return cleanerchatreplymessage_ != NULL ? *cleanerchatreplymessage_ : *default_instance().cleanerchatreplymessage_; +#else + return cleanerchatreplymessage_ != NULL ? *cleanerchatreplymessage_ : *default_instance_->cleanerchatreplymessage_; +#endif +} +inline ::CleanerChatReplyMessage* ChatCleanerMessage::mutable_cleanerchatreplymessage() { + set_has_cleanerchatreplymessage(); + if (cleanerchatreplymessage_ == NULL) cleanerchatreplymessage_ = new ::CleanerChatReplyMessage; + return cleanerchatreplymessage_; +} +inline ::CleanerChatReplyMessage* ChatCleanerMessage::release_cleanerchatreplymessage() { + clear_has_cleanerchatreplymessage(); + ::CleanerChatReplyMessage* temp = cleanerchatreplymessage_; + cleanerchatreplymessage_ = NULL; + return temp; +} +inline void ChatCleanerMessage::set_allocated_cleanerchatreplymessage(::CleanerChatReplyMessage* cleanerchatreplymessage) { + delete cleanerchatreplymessage_; + cleanerchatreplymessage_ = cleanerchatreplymessage; + if (cleanerchatreplymessage) { + set_has_cleanerchatreplymessage(); + } else { + clear_has_cleanerchatreplymessage(); + } +} + + +// @@protoc_insertion_point(namespace_scope) + +// @@protoc_insertion_point(global_scope) + +#endif // PROTOBUF_chatcleaner_2eproto__INCLUDED From 9622bffdcc3242d1b35431aff9c44f29dece6d13 Mon Sep 17 00:00:00 2001 From: lotodore Date: Thu, 29 Aug 2013 22:20:37 +0200 Subject: [PATCH 023/128] Add protobuf specification file for chat cleaner. --- chatcleaner.proto | 91 +++++ docs/chatcleaner.asn1 | 76 ---- docs/pokerth.asn1 | 848 ------------------------------------------ 3 files changed, 91 insertions(+), 924 deletions(-) create mode 100644 chatcleaner.proto delete mode 100644 docs/chatcleaner.asn1 delete mode 100644 docs/pokerth.asn1 diff --git a/chatcleaner.proto b/chatcleaner.proto new file mode 100644 index 00000000..5f7b23e0 --- /dev/null +++ b/chatcleaner.proto @@ -0,0 +1,91 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ + +option java_package = "de.chatcleaner.protocol"; +option java_outer_classname = "ProtoBuf"; +option optimize_for = LITE_RUNTIME; + +message CleanerInitMessage { + required uint32 requestedVersion = 1; + required string clientSecret = 2; +} + +message CleanerInitAckMessage { + required uint32 serverVersion = 1; + required string serverSecret = 2; +} + +enum CleanerChatType { + cleanerChatTypeLobby = 0; + cleanerChatTypeGame = 1; +} + +message CleanerChatRequestMessage { + required uint32 requestId = 1; + required CleanerChatType cleanerChatType = 2; + optional uint32 gameId = 3 [default = 0]; + required uint32 playerId = 4; + required string playerName = 5; + required string chatMessage = 6; +} + +message CleanerChatReplyMessage { + required uint32 requestId = 1; + required CleanerChatType cleanerChatType = 2; + optional uint32 gameId = 3 [default = 0]; + required uint32 playerId = 4; + enum CleanerActionType { + cleanerActionNone = 0; + cleanerActionWarning = 1; + cleanerActionKick = 2; + cleanerActionBan = 3; + cleanerActionMute = 4; + } + required CleanerActionType cleanerActionType = 5; + optional string cleanerText = 6 [default = ""]; +} + +// The main message type (it is prefixed by 4 bytes length of the message). + +message ChatCleanerMessage { + enum ChatCleanerMessageType { + Type_CleanerInitMessage = 1; + Type_CleanerInitAckMessage = 2; + Type_CleanerChatRequestMessage = 3; + Type_CleanerChatReplyMessage = 4; + } + required ChatCleanerMessageType messageType = 1; + + optional CleanerInitMessage cleanerInitMessage = 2; + optional CleanerInitAckMessage cleanerInitAckMessage = 3; + optional CleanerChatRequestMessage cleanerChatRequestMessage = 4; + optional CleanerChatReplyMessage cleanerChatReplyMessage = 5; +} diff --git a/docs/chatcleaner.asn1 b/docs/chatcleaner.asn1 deleted file mode 100644 index 42aa788d..00000000 --- a/docs/chatcleaner.asn1 +++ /dev/null @@ -1,76 +0,0 @@ -/***************************************************************************** - * PokerTH - The open source texas holdem engine * - * Copyright (C) 2006-2011 Felix Hammer, Florian Thauer, Lothar May * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Affero General Public License as * - * published by the Free Software Foundation, either version 3 of the * - * License, or (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Affero General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - *****************************************************************************/ - -CHATCLEANER-PROTOCOL DEFINITIONS -IMPLICIT TAGS -EXTENSIBILITY IMPLIED ::= - -BEGIN - -ChatCleanerMessage ::= CHOICE { - cleanerInitMessage CleanerInitMessage, - cleanerInitAckMessage CleanerInitAckMessage, - cleanerChatRequestMessage CleanerChatRequestMessage, - cleanerChatReplyMessage CleanerChatReplyMessage -} - -CleanerInitMessage ::= [APPLICATION 0] SEQUENCE { - requestedVersion INTEGER(0..65535), - clientSecret UTF8String (SIZE(1..32)) -} - -CleanerInitAckMessage ::= [APPLICATION 1] SEQUENCE { - serverVersion INTEGER(0..65535), - serverSecret UTF8String (SIZE(1..32)) -} - -CleanerChatType ::= CHOICE { - cleanerChatTypeLobby [0] CleanerChatTypeLobby, - cleanerChatTypeGame [1] CleanerChatTypeGame -} - -CleanerChatTypeLobby ::= SEQUENCE { -} - -CleanerChatTypeGame ::= SEQUENCE { - gameId INTEGER(1..4294967295) -} - -CleanerChatRequestMessage ::= [APPLICATION 2] SEQUENCE { - requestId INTEGER(1..4294967295), - cleanerChatType CleanerChatType, - playerId INTEGER(1..4294967295), - playerName UTF8String (SIZE(1..32)), - chatMessage UTF8String (SIZE(1..128)) -} - -CleanerChatReplyMessage ::= [APPLICATION 3] SEQUENCE { - requestId INTEGER(1..4294967295), - cleanerChatType CleanerChatType, - playerId INTEGER(1..4294967295), - cleanerActionType ENUMERATED { - cleanerActionNone (0), - cleanerActionWarning (1), - cleanerActionKick (2), - cleanerActionBan (3), - cleanerActionMute (4) - }, - cleanerText UTF8String (SIZE(1..128)) OPTIONAL -} - -END diff --git a/docs/pokerth.asn1 b/docs/pokerth.asn1 deleted file mode 100644 index adddceaf..00000000 --- a/docs/pokerth.asn1 +++ /dev/null @@ -1,848 +0,0 @@ -/***************************************************************************** - * PokerTH - The open source texas holdem engine * - * Copyright (C) 2006-2011 Felix Hammer, Florian Thauer, Lothar May * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Affero General Public License as * - * published by the Free Software Foundation, either version 3 of the * - * License, or (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Affero General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - *****************************************************************************/ - - /* This file is now deprecated! google protocol buffers are used instead. - * Please refer to pokerth.proto. */ - -POKERTH-PROTOCOL DEFINITIONS -IMPLICIT TAGS -EXTENSIBILITY IMPLIED ::= - -BEGIN - -PokerTHMessage ::= CHOICE { - announceMessage AnnounceMessage, - initMessage InitMessage, - authMessage AuthMessage, - initAckMessage InitAckMessage, - avatarRequestMessage AvatarRequestMessage, - avatarReplyMessage AvatarReplyMessage, - playerListMessage PlayerListMessage, - gameListMessage GameListMessage, - playerInfoRequestMessage PlayerInfoRequestMessage, - playerInfoReplyMessage PlayerInfoReplyMessage, - subscriptionRequestMessage SubscriptionRequestMessage, - joinGameRequestMessage JoinGameRequestMessage, - joinGameReplyMessage JoinGameReplyMessage, - gamePlayerMessage GamePlayerMessage, - kickPlayerRequestMessage KickPlayerRequestMessage, - leaveGameRequestMessage LeaveGameRequestMessage, - invitePlayerToGameMessage InvitePlayerToGameMessage, - inviteNotifyMessage InviteNotifyMessage, - rejectGameInvitationMessage RejectGameInvitationMessage, - rejectInvNotifyMessage RejectInvNotifyMessage, - startEventMessage StartEventMessage, - startEventAckMessage StartEventAckMessage, - gameStartMessage GameStartMessage, - handStartMessage HandStartMessage, - playersTurnMessage PlayersTurnMessage, - myActionRequestMessage MyActionRequestMessage, - yourActionRejectedMessage YourActionRejectedMessage, - playersActionDoneMessage PlayersActionDoneMessage, - dealFlopCardsMessage DealFlopCardsMessage, - dealTurnCardMessage DealTurnCardMessage, - dealRiverCardMessage DealRiverCardMessage, - allInShowCardsMessage AllInShowCardsMessage, - endOfHandMessage EndOfHandMessage, - showMyCardsRequestMessage ShowMyCardsRequestMessage, - afterHandShowCardsMessage AfterHandShowCardsMessage, - endOfGameMessage EndOfGameMessage, - playerIdChangedMessage PlayerIdChangedMessage, - askKickPlayerMessage AskKickPlayerMessage, - askKickDeniedMessage AskKickDeniedMessage, - startKickPetitionMessage StartKickPetitionMessage, - voteKickRequestMessage VoteKickRequestMessage, - voteKickReplyMessage VoteKickReplyMessage, - kickPetitionUpdateMessage KickPetitionUpdateMessage, - endKickPetitionMessage EndKickPetitionMessage, - statisticsMessage StatisticsMessage, - chatRequestMessage ChatRequestMessage, - chatMessage ChatMessage, - chatRejectMessage ChatRejectMessage, - dialogMessage DialogMessage, - timeoutWarningMessage TimeoutWarningMessage, - resetTimeoutMessage ResetTimeoutMessage, - reportAvatarMessage ReportAvatarMessage, - reportAvatarAckMessage ReportAvatarAckMessage, - reportGameMessage ReportGameMessage, - reportGameAckMessage ReportGameAckMessage, - errorMessage ErrorMessage -} - -AnnounceMessage ::= [APPLICATION 0] SEQUENCE { - protocolVersion Version, - latestGameVersion Version, - latestBetaRevision INTEGER(0..65535), - serverType ENUMERATED { - serverTypeLAN (0), - serverTypeInternetNoAuth (1), - serverTypeInternetAuth (2) - }, - numPlayersOnServer INTEGER(0..65535) -} - --- buildId contains a constant build id (specific for Windows/Linux/Mac builds) -InitMessage ::= [APPLICATION 1] SEQUENCE { - requestedVersion Version, - buildId INTEGER, - myLastSessionId Guid OPTIONAL, - authServerPassword UTF8String (SIZE(1..64)) OPTIONAL, - login CHOICE { - guestLogin [0] GuestLogin, - authenticatedLogin [1] AuthenticatedLogin, - unauthenticatedLogin [2] UnauthenticatedLogin - } -} - -Version ::= SEQUENCE { - major INTEGER(0..65535), - minor INTEGER(0..65535) -} - -GuestLogin ::= SEQUENCE { - nickName UTF8String (SIZE(1..64)) -} - --- Login data is according to SCRAM SHA-1 -AuthenticatedLogin ::= SEQUENCE { - clientUserData OCTET STRING (SIZE(1..256)), - avatar AvatarHash OPTIONAL -} - -UnauthenticatedLogin ::= SEQUENCE { - nickName UTF8String (SIZE(1..64)), - avatar AvatarHash OPTIONAL -} - -AuthMessage ::= [APPLICATION 2] CHOICE { - authServerChallenge [0] AuthServerChallenge, - authClientResponse [1] AuthClientResponse, - authServerVerification [2] AuthServerVerification -} - -AuthServerChallenge ::= SEQUENCE { - serverChallenge OCTET STRING (SIZE(1..256)) -} - -AuthClientResponse ::= SEQUENCE { - clientResponse OCTET STRING (SIZE(1..256)) -} - -AuthServerVerification ::= SEQUENCE { - serverVerification OCTET STRING (SIZE(1..256)) -} - -InitAckMessage ::= [APPLICATION 3] SEQUENCE { - yourSessionId Guid, - yourPlayerId NonZeroId, - yourAvatar AvatarHash OPTIONAL, - rejoinGameId NonZeroId OPTIONAL -} - -AvatarRequestMessage ::= [APPLICATION 4] SEQUENCE { - requestId NonZeroId, - avatar AvatarHash -} - -AvatarReplyMessage ::= [APPLICATION 5] SEQUENCE { - requestId NonZeroId, - avatarResult CHOICE { - avatarHeader [0] AvatarHeader, - avatarData [1] AvatarData, - avatarEnd [2] AvatarEnd, - unknownAvatar [3] UnknownAvatar - } -} - -AvatarHeader ::= SEQUENCE { - avatarType NetAvatarType, - avatarSize INTEGER(32..30720) -} - -AvatarData ::= SEQUENCE { - avatarBlock OCTET STRING (SIZE(1..256)) -} - -AvatarEnd ::= SEQUENCE { -} - -UnknownAvatar ::= SEQUENCE { -} - -AvatarHash ::= OCTET STRING (SIZE(16)) -- md5 hash value - -NetAvatarType ::= ENUMERATED { - avatarImagePng (1), - avatarImageJpg (2), - avatarImageGif (3) -} - -PlayerListMessage ::= [APPLICATION 6] SEQUENCE { - playerId NonZeroId, - playerListNotification ENUMERATED { - playerListNew (0), - playerListLeft (1) - } -} - -GameListMessage ::= [APPLICATION 7] SEQUENCE { - gameId NonZeroId, - gameListNotification CHOICE { - gameListNew [0] GameListNew, - gameListUpdate [1] GameListUpdate, - gameListPlayerJoined [2] GameListPlayerJoined, - gameListPlayerLeft [3] GameListPlayerLeft, - gameListAdminChanged [4] GameListAdminChanged - } -} - -GameListNew ::= SEQUENCE { - gameMode NetGameMode, - isPrivate BOOLEAN, - playerIds SEQUENCE SIZE(0..10) OF NonZeroId, - adminPlayerId NonZeroId, - gameInfo NetGameInfo -} - -GameListUpdate ::= SEQUENCE { - gameMode NetGameMode -} - -GameListPlayerJoined ::= SEQUENCE { - playerId NonZeroId -} - -GameListPlayerLeft ::= SEQUENCE { - playerId NonZeroId -} - -GameListAdminChanged ::= SEQUENCE { - newAdminPlayerId NonZeroId -} - -NetGameMode ::= ENUMERATED { - gameCreated (1), - gameStarted (2), - gameClosed (3) -} - -PlayerInfoRequestMessage ::= [APPLICATION 8] SEQUENCE { - playerId NonZeroId -} - -PlayerInfoReplyMessage ::= [APPLICATION 9] SEQUENCE { - playerId NonZeroId, - playerInfoResult CHOICE { - playerInfoData [0] PlayerInfoData, - unknownPlayerInfo [1] UnknownPlayerInfo - } -} - -PlayerInfoRights ::= ENUMERATED { - playerRightsGuest (1), - playerRightsNormal (2), - playerRightsAdmin (3) -} - -PlayerInfoData ::= SEQUENCE { - playerName UTF8String (SIZE(1..32)), - isHuman BOOLEAN, - playerRights PlayerInfoRights, - countryCode UTF8String (SIZE(2)) OPTIONAL, - avatarData SEQUENCE { - avatarType NetAvatarType, - avatar AvatarHash - } OPTIONAL -} - -UnknownPlayerInfo ::= SEQUENCE { -} - --- The following request will not be confirmed by the server. It is used, --- optionally, to reduce server traffic. The server might ignore it. -SubscriptionRequestMessage ::= [APPLICATION 10] SEQUENCE { - subscriptionAction ENUMERATED { - unsubscribeGameList (1), - resubscribeGameList (2) - } -} - -JoinGameRequestMessage ::= [APPLICATION 11] SEQUENCE { - joinGameAction CHOICE { - joinExistingGame [0] JoinExistingGame, - joinNewGame [1] JoinNewGame, - rejoinExistingGame [2] RejoinExistingGame - }, - autoLeave BOOLEAN -} - -JoinExistingGame ::= SEQUENCE { - gameId NonZeroId, - password UTF8String (SIZE(1..64)) OPTIONAL -} - -JoinNewGame ::= SEQUENCE { - gameInfo NetGameInfo, - password UTF8String (SIZE(1..64)) OPTIONAL -} - -RejoinExistingGame ::= SEQUENCE { - gameId NonZeroId -} - -JoinGameReplyMessage ::= [APPLICATION 12] SEQUENCE { - gameId NonZeroId, - joinGameResult CHOICE { - joinGameAck [0] JoinGameAck, - joinGameFailed [1] JoinGameFailed - } -} - -JoinGameAck ::= SEQUENCE { - areYouGameAdmin BOOLEAN, - gameInfo NetGameInfo -} - -JoinGameFailed ::= SEQUENCE { - joinGameFailureReason ENUMERATED { - invalidGame (1), - gameIsFull (2), - gameIsRunning (3), - invalidPassword (4), - notAllowedAsGuest (5), - notInvited (6), - gameNameInUse (7), - badGameName (8), - invalidSettings (9), - ipAddressBlocked (10), - rejoinFailed (11) - } -} - -NetGameInfo ::= SEQUENCE { - gameName UTF8String (SIZE(1..64)), - netGameType ENUMERATED { - normalGame (1), - registeredOnlyGame (2), - inviteOnlyGame (3), - rankingGame (4) - }, - maxNumPlayers INTEGER(2..10), - raiseIntervalMode CHOICE { - raiseEveryHands [0] INTEGER(1..1000), - raiseEveryMinutes [1] INTEGER(1..1000) - }, - endRaiseMode ENUMERATED { - doubleBlinds (1), - raiseByEndValue (2), - keepLastBlind (3) - }, - proposedGuiSpeed INTEGER(1..11), - delayBetweenHands INTEGER(5..20), -- These are seconds - playerActionTimeout INTEGER(0..60), -- These are seconds - firstSmallBlind INTEGER(1..20000), - endRaiseSmallBlindValue InitialAmountOfMoney, - startMoney InitialNonZeroAmountOfMoney, - manualBlinds SEQUENCE SIZE(0..30) OF InitialNonZeroAmountOfMoney -} - -GamePlayerMessage ::= [APPLICATION 13] SEQUENCE { - gameId NonZeroId, - gamePlayerNotification CHOICE { - gamePlayerJoined [0] GamePlayerJoined, - gamePlayerLeft [1] GamePlayerLeft, - gameAdminChanged [2] GameAdminChanged, - removedFromGame [3] RemovedFromGame - } -} - -GamePlayerJoined ::= SEQUENCE { - playerId NonZeroId, - isGameAdmin BOOLEAN -} - -GamePlayerLeft ::= SEQUENCE { - playerId NonZeroId, - gamePlayerLeftReason ENUMERATED { - leftOnRequest (0), - leftKicked (1), - leftError (2) - } -} - -GameAdminChanged ::= SEQUENCE { - newAdminPlayerId NonZeroId -} - -RemovedFromGame ::= SEQUENCE { - removedFromGameReason ENUMERATED { - removedOnRequest (0), -- No error, client wished to leave. - kickedFromGame (1), - gameIsFull (2), - gameIsRunning (3), - gameTimeout (4), - removedStartFailed (5) - } -} - -KickPlayerRequestMessage ::= [APPLICATION 14] SEQUENCE { - gameId NonZeroId, - playerId NonZeroId -} - -LeaveGameRequestMessage ::= [APPLICATION 15] SEQUENCE { - gameId NonZeroId -} - -InvitePlayerToGameMessage ::= [APPLICATION 16] SEQUENCE { - gameId NonZeroId, - playerId NonZeroId -} - -InviteNotifyMessage ::= [APPLICATION 17] SEQUENCE { - gameId NonZeroId, - playerIdWho NonZeroId, - playerIdByWhom NonZeroId -} - -RejectGameInvReason ::= ENUMERATED { - no (0), - busy (1) -} - -RejectGameInvitationMessage ::= [APPLICATION 18] SEQUENCE { - gameId NonZeroId, - myRejectReason RejectGameInvReason -} - -RejectInvNotifyMessage ::= [APPLICATION 19] SEQUENCE { - gameId NonZeroId, - playerId NonZeroId, - playerRejectReason RejectGameInvReason -} - -StartEventMessage ::= [APPLICATION 20] SEQUENCE { - gameId NonZeroId, - startEventType CHOICE { - startEvent [0] StartEvent, - rejoinEvent [1] RejoinEvent - } -} - -StartEvent ::= SEQUENCE { - fillWithComputerPlayers BOOLEAN -} - -RejoinEvent ::= SEQUENCE { -} - -StartEventAckMessage ::= [APPLICATION 21] SEQUENCE { - gameId NonZeroId -} - -RejoinPlayerData ::= SEQUENCE { - playerId NonZeroId, - playerMoney AmountOfMoney -} - -GameStartModeInitial ::= SEQUENCE { - playerSeats SEQUENCE SIZE(2..10) OF NonZeroId -} - -GameStartModeRejoin ::= SEQUENCE { - handNum NonZeroId, - rejoinPlayerData SEQUENCE SIZE(2..10) OF RejoinPlayerData -} - -GameStartMessage ::= [APPLICATION 22] SEQUENCE { - gameId NonZeroId, - startDealerPlayerId NonZeroId, - gameStartMode CHOICE { - gameStartModeInitial [0] GameStartModeInitial, - gameStartModeRejoin [1] GameStartModeRejoin - } -} - -PlainCards ::= SEQUENCE { - plainCard1 Card, - plainCard2 Card -} - -EncryptedCards ::= SEQUENCE { - cardData OCTET STRING (SIZE(16..64)) -} - -HandStartMessage ::= [APPLICATION 23] SEQUENCE { - gameId NonZeroId, - yourCards CHOICE { - plainCards [0] PlainCards, - encryptedCards [1] EncryptedCards - }, - smallBlind INTEGER(1..100000000), - seatStates SEQUENCE SIZE(2..10) OF NetPlayerState -} - -PlayersTurnMessage ::= [APPLICATION 24] SEQUENCE { - gameId NonZeroId, - playerId NonZeroId, - gameState NetGameState -} - -MyActionRequestMessage ::= [APPLICATION 25] SEQUENCE { - gameId NonZeroId, - handNum NonZeroId, - gameState NetGameState, - myAction NetPlayerAction, - myRelativeBet AmountOfMoney -} - -YourActionRejectedMessage ::= [APPLICATION 26] SEQUENCE { - gameId NonZeroId, - gameState NetGameState, - yourAction NetPlayerAction, - yourRelativeBet AmountOfMoney, - rejectionReason ENUMERATED { - rejectedInvalidGameState (1), - rejectedNotYourTurn (2), - rejectedActionNotAllowed (3) - } -} - -PlayersActionDoneMessage ::= [APPLICATION 27] SEQUENCE { - gameId NonZeroId, - playerId NonZeroId, - gameState NetGameState, - playerAction NetPlayerAction, - totalPlayerBet AmountOfMoney, - playerMoney AmountOfMoney, - highestSet AmountOfMoney, - minimumRaise AmountOfMoney -} - -DealFlopCardsMessage ::= [APPLICATION 28] SEQUENCE { - gameId NonZeroId, - flopCard1 Card, - flopCard2 Card, - flopCard3 Card -} - -DealTurnCardMessage ::= [APPLICATION 29] SEQUENCE { - gameId NonZeroId, - turnCard Card -} - -DealRiverCardMessage ::= [APPLICATION 30] SEQUENCE { - gameId NonZeroId, - riverCard Card -} - -AllInShowCardsMessage ::= [APPLICATION 31] SEQUENCE { - gameId NonZeroId, - playersAllIn SEQUENCE SIZE(1..10) OF PlayerAllIn -} - -PlayerAllIn ::= SEQUENCE { - playerId NonZeroId, - allInCard1 Card, - allInCard2 Card -} - -EndOfHandMessage ::= [APPLICATION 32] SEQUENCE { - gameId NonZeroId, - endOfHandType CHOICE { - endOfHandShowCards [0] EndOfHandShowCards, - endOfHandHideCards [1] EndOfHandHideCards - } -} - -EndOfHandShowCards ::= SEQUENCE { - playerResults SEQUENCE SIZE(1..10) OF PlayerResult -} - -PlayerResult ::= SEQUENCE { - playerId NonZeroId, - resultCard1 Card, - resultCard2 Card, - bestHandPosition SEQUENCE SIZE(5) OF INTEGER, -- TODO size restrictions - moneyWon AmountOfMoney, - playerMoney AmountOfMoney, - cardsValue INTEGER OPTIONAL -} - -EndOfHandHideCards ::= SEQUENCE { - playerId NonZeroId, - moneyWon AmountOfMoney, - playerMoney AmountOfMoney -} - -ShowMyCardsRequestMessage ::= [APPLICATION 33] SEQUENCE { -} - -AfterHandShowCardsMessage ::= [APPLICATION 34] SEQUENCE { - playerResult PlayerResult -} - -EndOfGameMessage ::= [APPLICATION 35] SEQUENCE { - gameId NonZeroId, - winnerPlayerId NonZeroId -} - -PlayerIdChangedMessage ::= [APPLICATION 36] SEQUENCE { - oldPlayerId NonZeroId, - newPlayerId NonZeroId -} - -AskKickPlayerMessage ::= [APPLICATION 64] SEQUENCE { - gameId NonZeroId, - playerId NonZeroId -} - -AskKickDeniedMessage ::= [APPLICATION 65] SEQUENCE { - gameId NonZeroId, - playerId NonZeroId, - kickDeniedReason ENUMERATED { - kickDeniedInvalidGameState (0), - kickDeniedNotPossible (1), - kickDeniedTryAgainLater (2), - kickDeniedAlreadyInProgress (3), - kickDeniedInvalidPlayerId (4) - } -} - -StartKickPetitionMessage ::= [APPLICATION 66] SEQUENCE { - gameId NonZeroId, - petitionId NonZeroId, - proposingPlayerId NonZeroId, - kickPlayerId NonZeroId, - kickTimeoutSec INTEGER(1..120), - numVotesNeededToKick INTEGER(1..9) -} - -VoteKickRequestMessage ::= [APPLICATION 67] SEQUENCE { - gameId NonZeroId, - petitionId NonZeroId, - voteKick BOOLEAN -} - -VoteKickReplyMessage ::= [APPLICATION 68] SEQUENCE { - gameId NonZeroId, - petitionId NonZeroId, - voteKickReplyType CHOICE { - voteKickAck [0] VoteKickAck, - voteKickDenied [1] VoteKickDenied - } -} - -VoteKickAck ::= SEQUENCE { -} - -VoteKickDenied ::= SEQUENCE { - voteKickDeniedReason ENUMERATED { - voteKickDeniedInvalid (0), - voteKickDeniedAlreadyVoted (1) - } -} - -KickPetitionUpdateMessage ::= [APPLICATION 69] SEQUENCE { - gameId NonZeroId, - petitionId NonZeroId, - numVotesAgainstKicking INTEGER(0..9), - numVotesInFavourOfKicking INTEGER(1..9), - numVotesNeededToKick INTEGER(1..9) -} - -EndKickPetitionMessage ::= [APPLICATION 70] SEQUENCE { - gameId NonZeroId, - petitionId NonZeroId, - numVotesAgainstKicking INTEGER(0..9), - numVotesInFavourOfKicking INTEGER(1..9), - resultPlayerKicked BOOLEAN, - petitionEndReason ENUMERATED { - petitionEndEnoughVotes (0), - petitionEndTooFewPlayers (1), - petitionEndPlayerLeft (2), - petitionEndTimeout (3) - } -} - -StatisticsMessage ::= [APPLICATION 128] SEQUENCE { - statisticsData SEQUENCE SIZE(1..32) OF StatisticsData -} - -StatisticsData ::= SEQUENCE { - statisticsType ENUMERATED { - statNumberOfPlayers (1) - }, - statisticsValue INTEGER -} - -ChatRequestMessage ::= [APPLICATION 129] SEQUENCE { - chatRequestType CHOICE { - chatRequestTypeLobby [0] ChatRequestTypeLobby, - chatRequestTypeGame [1] ChatRequestTypeGame, - chatRequestTypePrivate [2] ChatRequestTypePrivate - }, - chatText UTF8String (SIZE(1..128)) -} - -ChatRequestTypeLobby ::= SEQUENCE { -} - -ChatRequestTypeGame ::= SEQUENCE { - gameId NonZeroId -} - -ChatRequestTypePrivate ::= SEQUENCE { - targetPlayerId NonZeroId -} - -ChatMessage ::= [APPLICATION 130] SEQUENCE { - chatType CHOICE { - chatTypeLobby [0] ChatTypeLobby, - chatTypeGame [1] ChatTypeGame, - chatTypeBot [2] ChatTypeBot, - chatTypeBroadcast [3] ChatTypeBroadcast, - chatTypePrivate [4] ChatTypePrivate - }, - chatText UTF8String (SIZE(1..128)) -} - -ChatTypeLobby ::= SEQUENCE { - playerId NonZeroId -} - -ChatTypeGame ::= SEQUENCE { - gameId NonZeroId, - playerId NonZeroId -} - -ChatTypeBroadcast ::= SEQUENCE { -} - -ChatTypeBot ::= SEQUENCE { -} - -ChatTypePrivate ::= SEQUENCE { - playerId NonZeroId -} - -ChatRejectMessage ::= [APPLICATION 131] SEQUENCE { - chatText UTF8String (SIZE(1..128)) -} - -DialogMessage ::= [APPLICATION 132] SEQUENCE { - notificationText UTF8String (SIZE(1..128)) -} - -TimeoutWarningMessage ::= [APPLICATION 133] SEQUENCE { - timeoutReason ENUMERATED { - timeoutNoDataReceived (0), - timeoutInactiveGame (1), - timeoutKickAfterAutofold (2) - }, - remainingSeconds INTEGER -} - -ResetTimeoutMessage ::= [APPLICATION 134] SEQUENCE { -} - -ReportAvatarMessage ::= [APPLICATION 135] SEQUENCE { - reportedPlayerId NonZeroId, - reportedAvatar AvatarHash -} - -ReportAvatarAckMessage ::= [APPLICATION 136] SEQUENCE { - reportedPlayerId NonZeroId, - reportAvatarResult ENUMERATED { - avatarReportAccepted (0), - avatarReportDuplicate (1), - avatarReportInvalid (2) - } -} - -ReportGameMessage ::= [APPLICATION 137] SEQUENCE { - reportedGameId NonZeroId -} - -ReportGameAckMessage ::= [APPLICATION 138] SEQUENCE { - reportedGameId NonZeroId, - reportGameResult ENUMERATED { - gameReportAccepted (0), - gameReportDuplicate (1), - gameReportInvalid (2) - } -} - -ErrorMessage ::= [APPLICATION 255] SEQUENCE { - errorReason ENUMERATED { - errorReserved (0), - errorInitVersionNotSupported (1), - errorInitServerFull (2), - errorInitAuthFailure (3), - errorInitPlayerNameInUse (4), - errorInitInvalidPlayerName (5), - errorInitServerMaintenance (6), - errorInitBlocked (7), - errorAvatarTooLarge (8), - errorInvalidPacket (256), - errorInvalidState (257), - errorKickedFromServer (258), - errorBannedFromServer (259), - errorBlockedByServer (260), - errorSessionTimeout (261) - } -} - -NetGameState ::= ENUMERATED { - statePreflop (0), - stateFlop (1), - stateTurn (2), - stateRiver (3), - statePreflopSmallBlind (4), - statePreflopBigBlind (5) -} - -NetPlayerAction ::= ENUMERATED { - actionNone (0), - actionFold (1), - actionCheck (2), - actionCall (3), - actionBet (4), - actionRaise (5), - actionAllIn (6) -} - -NetPlayerState ::= ENUMERATED { - playerStateNormal (0), - playerStateSessionInactive (1), - playerStateNoMoney (2) -} - -NonZeroId ::= INTEGER(1..4294967295) - -Id ::= INTEGER(0..4294967295) - -Guid ::= OCTET STRING (SIZE(16)) - -Card ::= INTEGER(0..51) - -AmountOfMoney ::= INTEGER(0..10000000) -InitialAmountOfMoney ::= INTEGER(0..1000000) -InitialNonZeroAmountOfMoney ::= INTEGER(1..1000000) - -END From 1f0bf411b4599a950fba0e091e1c90f105395b20 Mon Sep 17 00:00:00 2001 From: lotodore Date: Thu, 29 Aug 2013 22:21:54 +0200 Subject: [PATCH 024/128] Remove third party asn.1 code, as it is no longer required. --- src/third_party/asn1/BIT_STRING.c | 189 -- src/third_party/asn1/BIT_STRING.h | 33 - src/third_party/asn1/BOOLEAN.c | 290 --- src/third_party/asn1/BOOLEAN.h | 36 - src/third_party/asn1/COPYING_asn1c | 29 - src/third_party/asn1/ChatCleanerMessage.c | 85 - src/third_party/asn1/ChatCleanerMessage.h | 63 - .../asn1/CleanerChatReplyMessage.c | 550 ----- .../asn1/CleanerChatReplyMessage.h | 62 - .../asn1/CleanerChatRequestMessage.c | 459 ---- .../asn1/CleanerChatRequestMessage.h | 50 - src/third_party/asn1/CleanerChatType.c | 65 - src/third_party/asn1/CleanerChatType.h | 57 - src/third_party/asn1/CleanerChatTypeGame.c | 206 -- src/third_party/asn1/CleanerChatTypeGame.h | 43 - src/third_party/asn1/CleanerChatTypeLobby.c | 44 - src/third_party/asn1/CleanerChatTypeLobby.h | 40 - src/third_party/asn1/CleanerInitAckMessage.c | 127 -- src/third_party/asn1/CleanerInitAckMessage.h | 44 - src/third_party/asn1/CleanerInitMessage.c | 127 -- src/third_party/asn1/CleanerInitMessage.h | 44 - src/third_party/asn1/INTEGER.c | 975 --------- src/third_party/asn1/INTEGER.h | 69 - src/third_party/asn1/Makefile | 258 --- src/third_party/asn1/NativeEnumerated.c | 207 -- src/third_party/asn1/NativeEnumerated.h | 32 - src/third_party/asn1/NativeInteger.c | 332 --- src/third_party/asn1/NativeInteger.h | 37 - src/third_party/asn1/OCTET_STRING.c | 1882 ----------------- src/third_party/asn1/OCTET_STRING.h | 86 - src/third_party/asn1/UTF8String.c | 186 -- src/third_party/asn1/UTF8String.h | 49 - src/third_party/asn1/asn_SEQUENCE_OF.c | 41 - src/third_party/asn1/asn_SEQUENCE_OF.h | 52 - src/third_party/asn1/asn_SET_OF.c | 88 - src/third_party/asn1/asn_SET_OF.h | 62 - src/third_party/asn1/asn_application.h | 47 - src/third_party/asn1/asn_codecs.h | 109 - src/third_party/asn1/asn_codecs_prim.c | 295 --- src/third_party/asn1/asn_codecs_prim.h | 53 - src/third_party/asn1/asn_internal.h | 121 -- src/third_party/asn1/asn_system.h | 129 -- src/third_party/asn1/asntest.c | 60 - src/third_party/asn1/ber_decoder.c | 291 --- src/third_party/asn1/ber_decoder.h | 64 - src/third_party/asn1/ber_tlv_length.c | 178 -- src/third_party/asn1/ber_tlv_length.h | 50 - src/third_party/asn1/ber_tlv_tag.c | 152 -- src/third_party/asn1/ber_tlv_tag.h | 60 - src/third_party/asn1/constr_CHOICE.c | 1132 ---------- src/third_party/asn1/constr_CHOICE.h | 57 - src/third_party/asn1/constr_SEQUENCE.c | 1435 ------------- src/third_party/asn1/constr_SEQUENCE.h | 60 - src/third_party/asn1/constr_SEQUENCE_OF.c | 208 -- src/third_party/asn1/constr_SEQUENCE_OF.h | 33 - src/third_party/asn1/constr_SET_OF.c | 957 --------- src/third_party/asn1/constr_SET_OF.h | 42 - src/third_party/asn1/constr_TYPE.c | 79 - src/third_party/asn1/constr_TYPE.h | 180 -- src/third_party/asn1/constraints.c | 93 - src/third_party/asn1/constraints.h | 63 - src/third_party/asn1/converter-sample.c | 861 -------- src/third_party/asn1/der_encoder.c | 199 -- src/third_party/asn1/der_encoder.h | 68 - src/third_party/asn1/per_decoder.c | 93 - src/third_party/asn1/per_decoder.h | 56 - src/third_party/asn1/per_encoder.c | 151 -- src/third_party/asn1/per_encoder.h | 69 - src/third_party/asn1/per_opentype.c | 383 ---- src/third_party/asn1/per_opentype.h | 22 - src/third_party/asn1/per_support.c | 431 ---- src/third_party/asn1/per_support.h | 128 -- src/third_party/asn1/xer_decoder.c | 371 ---- src/third_party/asn1/xer_decoder.h | 106 - src/third_party/asn1/xer_encoder.c | 67 - src/third_party/asn1/xer_encoder.h | 59 - src/third_party/asn1/xer_support.c | 234 -- src/third_party/asn1/xer_support.h | 56 - 78 files changed, 16301 deletions(-) delete mode 100644 src/third_party/asn1/BIT_STRING.c delete mode 100644 src/third_party/asn1/BIT_STRING.h delete mode 100644 src/third_party/asn1/BOOLEAN.c delete mode 100644 src/third_party/asn1/BOOLEAN.h delete mode 100644 src/third_party/asn1/COPYING_asn1c delete mode 100644 src/third_party/asn1/ChatCleanerMessage.c delete mode 100644 src/third_party/asn1/ChatCleanerMessage.h delete mode 100644 src/third_party/asn1/CleanerChatReplyMessage.c delete mode 100644 src/third_party/asn1/CleanerChatReplyMessage.h delete mode 100644 src/third_party/asn1/CleanerChatRequestMessage.c delete mode 100644 src/third_party/asn1/CleanerChatRequestMessage.h delete mode 100644 src/third_party/asn1/CleanerChatType.c delete mode 100644 src/third_party/asn1/CleanerChatType.h delete mode 100644 src/third_party/asn1/CleanerChatTypeGame.c delete mode 100644 src/third_party/asn1/CleanerChatTypeGame.h delete mode 100644 src/third_party/asn1/CleanerChatTypeLobby.c delete mode 100644 src/third_party/asn1/CleanerChatTypeLobby.h delete mode 100644 src/third_party/asn1/CleanerInitAckMessage.c delete mode 100644 src/third_party/asn1/CleanerInitAckMessage.h delete mode 100644 src/third_party/asn1/CleanerInitMessage.c delete mode 100644 src/third_party/asn1/CleanerInitMessage.h delete mode 100644 src/third_party/asn1/INTEGER.c delete mode 100644 src/third_party/asn1/INTEGER.h delete mode 100644 src/third_party/asn1/Makefile delete mode 100644 src/third_party/asn1/NativeEnumerated.c delete mode 100644 src/third_party/asn1/NativeEnumerated.h delete mode 100644 src/third_party/asn1/NativeInteger.c delete mode 100644 src/third_party/asn1/NativeInteger.h delete mode 100644 src/third_party/asn1/OCTET_STRING.c delete mode 100644 src/third_party/asn1/OCTET_STRING.h delete mode 100644 src/third_party/asn1/UTF8String.c delete mode 100644 src/third_party/asn1/UTF8String.h delete mode 100644 src/third_party/asn1/asn_SEQUENCE_OF.c delete mode 100644 src/third_party/asn1/asn_SEQUENCE_OF.h delete mode 100644 src/third_party/asn1/asn_SET_OF.c delete mode 100644 src/third_party/asn1/asn_SET_OF.h delete mode 100644 src/third_party/asn1/asn_application.h delete mode 100644 src/third_party/asn1/asn_codecs.h delete mode 100644 src/third_party/asn1/asn_codecs_prim.c delete mode 100644 src/third_party/asn1/asn_codecs_prim.h delete mode 100644 src/third_party/asn1/asn_internal.h delete mode 100644 src/third_party/asn1/asn_system.h delete mode 100755 src/third_party/asn1/asntest.c delete mode 100644 src/third_party/asn1/ber_decoder.c delete mode 100644 src/third_party/asn1/ber_decoder.h delete mode 100644 src/third_party/asn1/ber_tlv_length.c delete mode 100644 src/third_party/asn1/ber_tlv_length.h delete mode 100644 src/third_party/asn1/ber_tlv_tag.c delete mode 100644 src/third_party/asn1/ber_tlv_tag.h delete mode 100644 src/third_party/asn1/constr_CHOICE.c delete mode 100644 src/third_party/asn1/constr_CHOICE.h delete mode 100644 src/third_party/asn1/constr_SEQUENCE.c delete mode 100644 src/third_party/asn1/constr_SEQUENCE.h delete mode 100644 src/third_party/asn1/constr_SEQUENCE_OF.c delete mode 100644 src/third_party/asn1/constr_SEQUENCE_OF.h delete mode 100644 src/third_party/asn1/constr_SET_OF.c delete mode 100644 src/third_party/asn1/constr_SET_OF.h delete mode 100644 src/third_party/asn1/constr_TYPE.c delete mode 100644 src/third_party/asn1/constr_TYPE.h delete mode 100644 src/third_party/asn1/constraints.c delete mode 100644 src/third_party/asn1/constraints.h delete mode 100644 src/third_party/asn1/converter-sample.c delete mode 100644 src/third_party/asn1/der_encoder.c delete mode 100644 src/third_party/asn1/der_encoder.h delete mode 100644 src/third_party/asn1/per_decoder.c delete mode 100644 src/third_party/asn1/per_decoder.h delete mode 100644 src/third_party/asn1/per_encoder.c delete mode 100644 src/third_party/asn1/per_encoder.h delete mode 100644 src/third_party/asn1/per_opentype.c delete mode 100644 src/third_party/asn1/per_opentype.h delete mode 100644 src/third_party/asn1/per_support.c delete mode 100644 src/third_party/asn1/per_support.h delete mode 100644 src/third_party/asn1/xer_decoder.c delete mode 100644 src/third_party/asn1/xer_decoder.h delete mode 100644 src/third_party/asn1/xer_encoder.c delete mode 100644 src/third_party/asn1/xer_encoder.h delete mode 100644 src/third_party/asn1/xer_support.c delete mode 100644 src/third_party/asn1/xer_support.h diff --git a/src/third_party/asn1/BIT_STRING.c b/src/third_party/asn1/BIT_STRING.c deleted file mode 100644 index 605f5120..00000000 --- a/src/third_party/asn1/BIT_STRING.c +++ /dev/null @@ -1,189 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * BIT STRING basic type description. - */ -static ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) -}; -static asn_OCTET_STRING_specifics_t asn_DEF_BIT_STRING_specs = { - sizeof(BIT_STRING_t), - offsetof(BIT_STRING_t, _asn_ctx), - ASN_OSUBV_BIT -}; -asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { - "BIT STRING", - "BIT_STRING", - OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ - BIT_STRING_print, - BIT_STRING_constraint, - OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_decode_xer_binary, - BIT_STRING_encode_xer, - OCTET_STRING_decode_uper, /* Unaligned PER decoder */ - OCTET_STRING_encode_uper, /* Unaligned PER encoder */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_BIT_STRING_tags, - sizeof(asn_DEF_BIT_STRING_tags) - / sizeof(asn_DEF_BIT_STRING_tags[0]), - asn_DEF_BIT_STRING_tags, /* Same as above */ - sizeof(asn_DEF_BIT_STRING_tags) - / sizeof(asn_DEF_BIT_STRING_tags[0]), - 0, /* No PER visible constraints */ - 0, 0, /* No members */ - &asn_DEF_BIT_STRING_specs -}; - -/* - * BIT STRING generic constraint. - */ -int -BIT_STRING_constraint(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - - if(st && st->buf) { - if((st->size == 0 && st->bits_unused) - || st->bits_unused < 0 || st->bits_unused > 7) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: invalid padding byte (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - return 0; -} - -static char *_bit_pattern[16] = { - "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", - "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" -}; - -asn_enc_rval_t -BIT_STRING_encode_xer(asn_TYPE_descriptor_t *td, void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er; - char scratch[128]; - char *p = scratch; - char *scend = scratch + (sizeof(scratch) - 10); - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - int xcan = (flags & XER_F_CANONICAL); - uint8_t *buf; - uint8_t *end; - - if(!st || !st->buf) - _ASN_ENCODE_FAILED; - - er.encoded = 0; - - buf = st->buf; - end = buf + st->size - 1; /* Last byte is special */ - - /* - * Binary dump - */ - for(; buf < end; buf++) { - int v = *buf; - int nline = xcan?0:(((buf - st->buf) % 8) == 0); - if(p >= scend || nline) { - er.encoded += p - scratch; - _ASN_CALLBACK(scratch, p - scratch); - p = scratch; - if(nline) _i_ASN_TEXT_INDENT(1, ilevel); - } - memcpy(p + 0, _bit_pattern[v >> 4], 4); - memcpy(p + 4, _bit_pattern[v & 0x0f], 4); - p += 8; - } - - if(!xcan && ((buf - st->buf) % 8) == 0) - _i_ASN_TEXT_INDENT(1, ilevel); - er.encoded += p - scratch; - _ASN_CALLBACK(scratch, p - scratch); - p = scratch; - - if(buf == end) { - int v = *buf; - int ubits = st->bits_unused; - int i; - for(i = 7; i >= ubits; i--) - *p++ = (v & (1 << i)) ? 0x31 : 0x30; - er.encoded += p - scratch; - _ASN_CALLBACK(scratch, p - scratch); - } - - if(!xcan) _i_ASN_TEXT_INDENT(1, ilevel - 1); - - _ASN_ENCODED_OK(er); -cb_failed: - _ASN_ENCODE_FAILED; -} - - -/* - * BIT STRING specific contents printer. - */ -int -BIT_STRING_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - static const char *h2c = "0123456789ABCDEF"; - char scratch[64]; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - uint8_t *buf; - uint8_t *end; - char *p = scratch; - - (void)td; /* Unused argument */ - - if(!st || !st->buf) - return (cb("", 8, app_key) < 0) ? -1 : 0; - - ilevel++; - buf = st->buf; - end = buf + st->size; - - /* - * Hexadecimal dump. - */ - for(; buf < end; buf++) { - if((buf - st->buf) % 16 == 0 && (st->size > 16) - && buf != st->buf) { - _i_INDENT(1); - /* Dump the string */ - if(cb(scratch, p - scratch, app_key) < 0) return -1; - p = scratch; - } - *p++ = h2c[*buf >> 4]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - - if(p > scratch) { - p--; /* Eat the tailing space */ - - if((st->size > 16)) { - _i_INDENT(1); - } - - /* Dump the incomplete 16-bytes row */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - } - - return 0; -} - diff --git a/src/third_party/asn1/BIT_STRING.h b/src/third_party/asn1/BIT_STRING.h deleted file mode 100644 index d0f4e0bf..00000000 --- a/src/third_party/asn1/BIT_STRING.h +++ /dev/null @@ -1,33 +0,0 @@ -/*- - * Copyright (c) 2003 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BIT_STRING_H_ -#define _BIT_STRING_H_ - -#include /* Some help from OCTET STRING */ - -#ifdef __cplusplus -extern "C" { -#endif - - typedef struct BIT_STRING_s { - uint8_t *buf; /* BIT STRING body */ - int size; /* Size of the above buffer */ - - int bits_unused;/* Unused trailing bits in the last octet (0..7) */ - - asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ - } BIT_STRING_t; - - extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING; - - asn_struct_print_f BIT_STRING_print; /* Human-readable output */ - asn_constr_check_f BIT_STRING_constraint; - xer_type_encoder_f BIT_STRING_encode_xer; - -#ifdef __cplusplus -} -#endif - -#endif /* _BIT_STRING_H_ */ diff --git a/src/third_party/asn1/BOOLEAN.c b/src/third_party/asn1/BOOLEAN.c deleted file mode 100644 index 70fad85a..00000000 --- a/src/third_party/asn1/BOOLEAN.c +++ /dev/null @@ -1,290 +0,0 @@ -/*- - * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * BOOLEAN basic type description. - */ -static ber_tlv_tag_t asn_DEF_BOOLEAN_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_BOOLEAN = { - "BOOLEAN", - "BOOLEAN", - BOOLEAN_free, - BOOLEAN_print, - asn_generic_no_constraint, - BOOLEAN_decode_ber, - BOOLEAN_encode_der, - BOOLEAN_decode_xer, - BOOLEAN_encode_xer, - BOOLEAN_decode_uper, /* Unaligned PER decoder */ - BOOLEAN_encode_uper, /* Unaligned PER encoder */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_BOOLEAN_tags, - sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), - asn_DEF_BOOLEAN_tags, /* Same as above */ - sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), - 0, /* No PER visible constraints */ - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Decode BOOLEAN type. - */ -asn_dec_rval_t -BOOLEAN_decode_ber(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, - void **bool_value, const void *buf_ptr, size_t size, - int tag_mode) { - BOOLEAN_t *st = (BOOLEAN_t *)*bool_value; - asn_dec_rval_t rval; - ber_tlv_len_t length; - ber_tlv_len_t lidx; - - if(st == NULL) { - st = (BOOLEAN_t *)(*bool_value = CALLOC(1, sizeof(*st))); - if(st == NULL) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - } - - ASN_DEBUG("Decoding %s as BOOLEAN (tm=%d)", - td->name, tag_mode); - - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("Boolean length is %d bytes", (int)length); - - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - /* - * Compute boolean value. - */ - for(*st = 0, lidx = 0; - (lidx < length) && *st == 0; lidx++) { - /* - * Very simple approach: read bytes until the end or - * value is already TRUE. - * BOOLEAN is not supposed to contain meaningful data anyway. - */ - *st |= ((const uint8_t *)buf_ptr)[lidx]; - } - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s, value=%d", - (long)rval.consumed, (long)length, - td->name, *st); - - return rval; -} - -asn_enc_rval_t -BOOLEAN_encode_der(asn_TYPE_descriptor_t *td, void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t erval; - BOOLEAN_t *st = (BOOLEAN_t *)sptr; - - erval.encoded = der_write_tags(td, 1, tag_mode, 0, tag, cb, app_key); - if(erval.encoded == -1) { - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - - if(cb) { - uint8_t bool_value; - - bool_value = *st ? 0xff : 0; /* 0xff mandated by DER */ - - if(cb(&bool_value, 1, app_key) < 0) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - } - - erval.encoded += 1; - - _ASN_ENCODED_OK(erval); -} - - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -static enum xer_pbd_rval -BOOLEAN__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chunk_buf, size_t chunk_size) { - BOOLEAN_t *st = (BOOLEAN_t *)sptr; - const char *p = (const char *)chunk_buf; - - (void)td; - - if(chunk_size && p[0] == 0x3c /* '<' */) { - switch(xer_check_tag(chunk_buf, chunk_size, "false")) { - case XCT_BOTH: - /* "" */ - *st = 0; - break; - case XCT_UNKNOWN_BO: - if(xer_check_tag(chunk_buf, chunk_size, "true") - != XCT_BOTH) - return XPBD_BROKEN_ENCODING; - /* "" */ - *st = 1; /* Or 0xff as in DER?.. */ - break; - default: - return XPBD_BROKEN_ENCODING; - } - return XPBD_BODY_CONSUMED; - } else { - if(xer_is_whitespace(chunk_buf, chunk_size)) - return XPBD_NOT_BODY_IGNORE; - else - return XPBD_BROKEN_ENCODING; - } -} - - -asn_dec_rval_t -BOOLEAN_decode_xer(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname, - const void *buf_ptr, size_t size) { - - return xer_decode_primitive(opt_codec_ctx, td, - sptr, sizeof(BOOLEAN_t), opt_mname, buf_ptr, size, - BOOLEAN__xer_body_decode); -} - -asn_enc_rval_t -BOOLEAN_encode_xer(asn_TYPE_descriptor_t *td, void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; - asn_enc_rval_t er; - - (void)ilevel; - (void)flags; - - if(!st) _ASN_ENCODE_FAILED; - - if(*st) { - _ASN_CALLBACK("", 7); - er.encoded = 7; - } else { - _ASN_CALLBACK("", 8); - er.encoded = 8; - } - - _ASN_ENCODED_OK(er); -cb_failed: - _ASN_ENCODE_FAILED; -} - -int -BOOLEAN_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; - const char *buf; - size_t buflen; - - (void)td; /* Unused argument */ - (void)ilevel; /* Unused argument */ - - if(st) { - if(*st) { - buf = "TRUE"; - buflen = 4; - } else { - buf = "FALSE"; - buflen = 5; - } - } else { - buf = ""; - buflen = 8; - } - - return (cb(buf, buflen, app_key) < 0) ? -1 : 0; -} - -void -BOOLEAN_free(asn_TYPE_descriptor_t *td, void *ptr, int contents_only) { - if(td && ptr && !contents_only) { - FREEMEM(ptr); - } -} - -asn_dec_rval_t -BOOLEAN_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv; - BOOLEAN_t *st = (BOOLEAN_t *)*sptr; - - (void)opt_codec_ctx; - (void)constraints; - - if(!st) { - st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); - if(!st) _ASN_DECODE_FAILED; - } - - /* - * Extract a single bit - */ - switch(per_get_few_bits(pd, 1)) { - case 1: - *st = 1; - break; - case 0: - *st = 0; - break; - case -1: - default: - _ASN_DECODE_STARVED; - } - - ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); - - rv.code = RC_OK; - rv.consumed = 1; - return rv; -} - - -asn_enc_rval_t -BOOLEAN_encode_uper(asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { - const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; - asn_enc_rval_t er; - - (void)constraints; - - if(!st) _ASN_ENCODE_FAILED; - - per_put_few_bits(po, *st ? 1 : 0, 1); - - _ASN_ENCODED_OK(er); -} diff --git a/src/third_party/asn1/BOOLEAN.h b/src/third_party/asn1/BOOLEAN.h deleted file mode 100644 index ee14896b..00000000 --- a/src/third_party/asn1/BOOLEAN.h +++ /dev/null @@ -1,36 +0,0 @@ -/*- - * Copyright (c) 2003 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BOOLEAN_H_ -#define _BOOLEAN_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - /* - * The underlying integer may contain various values, but everything - * non-zero is capped to 0xff by the DER encoder. The BER decoder may - * yield non-zero values different from 1, beware. - */ - typedef int BOOLEAN_t; - - extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN; - - asn_struct_free_f BOOLEAN_free; - asn_struct_print_f BOOLEAN_print; - ber_type_decoder_f BOOLEAN_decode_ber; - der_type_encoder_f BOOLEAN_encode_der; - xer_type_decoder_f BOOLEAN_decode_xer; - xer_type_encoder_f BOOLEAN_encode_xer; - per_type_decoder_f BOOLEAN_decode_uper; - per_type_encoder_f BOOLEAN_encode_uper; - -#ifdef __cplusplus -} -#endif - -#endif /* _BOOLEAN_H_ */ diff --git a/src/third_party/asn1/COPYING_asn1c b/src/third_party/asn1/COPYING_asn1c deleted file mode 100644 index f67b1f80..00000000 --- a/src/third_party/asn1/COPYING_asn1c +++ /dev/null @@ -1,29 +0,0 @@ -These files are generated using asn1c. -http://lionet.info/asn1c/ -/*- - * Copyright (c) 2003, 2004, 2005, 2006, 2007 Lev Walkin - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id: COPYING 1293 2007-06-23 18:33:31Z vlm $ - */ diff --git a/src/third_party/asn1/ChatCleanerMessage.c b/src/third_party/asn1/ChatCleanerMessage.c deleted file mode 100644 index 300996cb..00000000 --- a/src/third_party/asn1/ChatCleanerMessage.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#include "ChatCleanerMessage.h" - -static asn_TYPE_member_t asn_MBR_ChatCleanerMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct ChatCleanerMessage, choice.cleanerInitMessage), - (ASN_TAG_CLASS_APPLICATION | (0 << 2)), - 0, - &asn_DEF_CleanerInitMessage, - 0, /* Defer constraints checking to the member type */ - 0, /* PER is not compiled, use -gen-PER */ - 0, - "cleanerInitMessage" - }, - { ATF_NOFLAGS, 0, offsetof(struct ChatCleanerMessage, choice.cleanerInitAckMessage), - (ASN_TAG_CLASS_APPLICATION | (1 << 2)), - 0, - &asn_DEF_CleanerInitAckMessage, - 0, /* Defer constraints checking to the member type */ - 0, /* PER is not compiled, use -gen-PER */ - 0, - "cleanerInitAckMessage" - }, - { ATF_NOFLAGS, 0, offsetof(struct ChatCleanerMessage, choice.cleanerChatRequestMessage), - (ASN_TAG_CLASS_APPLICATION | (2 << 2)), - 0, - &asn_DEF_CleanerChatRequestMessage, - 0, /* Defer constraints checking to the member type */ - 0, /* PER is not compiled, use -gen-PER */ - 0, - "cleanerChatRequestMessage" - }, - { ATF_NOFLAGS, 0, offsetof(struct ChatCleanerMessage, choice.cleanerChatReplyMessage), - (ASN_TAG_CLASS_APPLICATION | (3 << 2)), - 0, - &asn_DEF_CleanerChatReplyMessage, - 0, /* Defer constraints checking to the member type */ - 0, /* PER is not compiled, use -gen-PER */ - 0, - "cleanerChatReplyMessage" - }, -}; -static asn_TYPE_tag2member_t asn_MAP_ChatCleanerMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_APPLICATION | (0 << 2)), 0, 0, 0 }, /* cleanerInitMessage at 26 */ - { (ASN_TAG_CLASS_APPLICATION | (1 << 2)), 1, 0, 0 }, /* cleanerInitAckMessage at 27 */ - { (ASN_TAG_CLASS_APPLICATION | (2 << 2)), 2, 0, 0 }, /* cleanerChatRequestMessage at 28 */ - { (ASN_TAG_CLASS_APPLICATION | (3 << 2)), 3, 0, 0 } /* cleanerChatReplyMessage at 30 */ -}; -static asn_CHOICE_specifics_t asn_SPC_ChatCleanerMessage_specs_1 = { - sizeof(struct ChatCleanerMessage), - offsetof(struct ChatCleanerMessage, _asn_ctx), - offsetof(struct ChatCleanerMessage, present), - sizeof(((struct ChatCleanerMessage *)0)->present), - asn_MAP_ChatCleanerMessage_tag2el_1, - 4, /* Count of tags in the map */ - 0, - 4 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_ChatCleanerMessage = { - "ChatCleanerMessage", - "ChatCleanerMessage", - CHOICE_free, - CHOICE_print, - CHOICE_constraint, - CHOICE_decode_ber, - CHOICE_encode_der, - CHOICE_decode_xer, - CHOICE_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - CHOICE_outmost_tag, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - 0, /* No PER visible constraints */ - asn_MBR_ChatCleanerMessage_1, - 4, /* Elements count */ - &asn_SPC_ChatCleanerMessage_specs_1 /* Additional specs */ -}; - diff --git a/src/third_party/asn1/ChatCleanerMessage.h b/src/third_party/asn1/ChatCleanerMessage.h deleted file mode 100644 index a1902461..00000000 --- a/src/third_party/asn1/ChatCleanerMessage.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#ifndef _ChatCleanerMessage_H_ -#define _ChatCleanerMessage_H_ - - -#include - -/* Including external dependencies */ -#include "CleanerInitMessage.h" -#include "CleanerInitAckMessage.h" -#include "CleanerChatRequestMessage.h" -#include "CleanerChatReplyMessage.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - - /* Dependencies */ - typedef enum ChatCleanerMessage_PR { - ChatCleanerMessage_PR_NOTHING, /* No components present */ - ChatCleanerMessage_PR_cleanerInitMessage, - ChatCleanerMessage_PR_cleanerInitAckMessage, - ChatCleanerMessage_PR_cleanerChatRequestMessage, - ChatCleanerMessage_PR_cleanerChatReplyMessage, - /* Extensions may appear below */ - - } - ChatCleanerMessage_PR; - - /* ChatCleanerMessage */ - typedef struct ChatCleanerMessage { - ChatCleanerMessage_PR present; - union ChatCleanerMessage_u { - CleanerInitMessage_t cleanerInitMessage; - CleanerInitAckMessage_t cleanerInitAckMessage; - CleanerChatRequestMessage_t cleanerChatRequestMessage; - CleanerChatReplyMessage_t cleanerChatReplyMessage; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } ChatCleanerMessage_t; - - /* Implementation */ - extern asn_TYPE_descriptor_t asn_DEF_ChatCleanerMessage; - -#ifdef __cplusplus -} -#endif - -#endif /* _ChatCleanerMessage_H_ */ -#include diff --git a/src/third_party/asn1/CleanerChatReplyMessage.c b/src/third_party/asn1/CleanerChatReplyMessage.c deleted file mode 100644 index b32bf18c..00000000 --- a/src/third_party/asn1/CleanerChatReplyMessage.c +++ /dev/null @@ -1,550 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#include "CleanerChatReplyMessage.h" - -static int -requestId_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - unsigned long value; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const unsigned long *)sptr; - - if((value >= 1 && value <= 4294967295)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static void -requestId_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { - td->free_struct = asn_DEF_NativeInteger.free_struct; - td->print_struct = asn_DEF_NativeInteger.print_struct; - td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; - td->der_encoder = asn_DEF_NativeInteger.der_encoder; - td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; - td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; - td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; - td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; - if(!td->per_constraints) - td->per_constraints = asn_DEF_NativeInteger.per_constraints; - td->elements = asn_DEF_NativeInteger.elements; - td->elements_count = asn_DEF_NativeInteger.elements_count; - /* td->specifics = asn_DEF_NativeInteger.specifics; // Defined explicitly */ -} - -static void -requestId_2_free(asn_TYPE_descriptor_t *td, - void *struct_ptr, int contents_only) { - requestId_2_inherit_TYPE_descriptor(td); - td->free_struct(td, struct_ptr, contents_only); -} - -static int -requestId_2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - requestId_2_inherit_TYPE_descriptor(td); - return td->print_struct(td, struct_ptr, ilevel, cb, app_key); -} - -static asn_dec_rval_t -requestId_2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **structure, const void *bufptr, size_t size, int tag_mode) { - requestId_2_inherit_TYPE_descriptor(td); - return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); -} - -static asn_enc_rval_t -requestId_2_encode_der(asn_TYPE_descriptor_t *td, - void *structure, int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - requestId_2_inherit_TYPE_descriptor(td); - return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); -} - -static asn_dec_rval_t -requestId_2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **structure, const char *opt_mname, const void *bufptr, size_t size) { - requestId_2_inherit_TYPE_descriptor(td); - return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); -} - -static asn_enc_rval_t -requestId_2_encode_xer(asn_TYPE_descriptor_t *td, void *structure, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - requestId_2_inherit_TYPE_descriptor(td); - return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); -} - -static int -playerId_4_constraint(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - unsigned long value; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const unsigned long *)sptr; - - if((value >= 1 && value <= 4294967295)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static void -playerId_4_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { - td->free_struct = asn_DEF_NativeInteger.free_struct; - td->print_struct = asn_DEF_NativeInteger.print_struct; - td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; - td->der_encoder = asn_DEF_NativeInteger.der_encoder; - td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; - td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; - td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; - td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; - if(!td->per_constraints) - td->per_constraints = asn_DEF_NativeInteger.per_constraints; - td->elements = asn_DEF_NativeInteger.elements; - td->elements_count = asn_DEF_NativeInteger.elements_count; - /* td->specifics = asn_DEF_NativeInteger.specifics; // Defined explicitly */ -} - -static void -playerId_4_free(asn_TYPE_descriptor_t *td, - void *struct_ptr, int contents_only) { - playerId_4_inherit_TYPE_descriptor(td); - td->free_struct(td, struct_ptr, contents_only); -} - -static int -playerId_4_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - playerId_4_inherit_TYPE_descriptor(td); - return td->print_struct(td, struct_ptr, ilevel, cb, app_key); -} - -static asn_dec_rval_t -playerId_4_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **structure, const void *bufptr, size_t size, int tag_mode) { - playerId_4_inherit_TYPE_descriptor(td); - return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); -} - -static asn_enc_rval_t -playerId_4_encode_der(asn_TYPE_descriptor_t *td, - void *structure, int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - playerId_4_inherit_TYPE_descriptor(td); - return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); -} - -static asn_dec_rval_t -playerId_4_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **structure, const char *opt_mname, const void *bufptr, size_t size) { - playerId_4_inherit_TYPE_descriptor(td); - return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); -} - -static asn_enc_rval_t -playerId_4_encode_xer(asn_TYPE_descriptor_t *td, void *structure, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - playerId_4_inherit_TYPE_descriptor(td); - return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); -} - -static int -cleanerActionType_5_constraint(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - /* Replace with underlying type checker */ - td->check_constraints = asn_DEF_NativeEnumerated.check_constraints; - return td->check_constraints(td, sptr, ctfailcb, app_key); -} - -/* - * This type is implemented using NativeEnumerated, - * so here we adjust the DEF accordingly. - */ -static void -cleanerActionType_5_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { - td->free_struct = asn_DEF_NativeEnumerated.free_struct; - td->print_struct = asn_DEF_NativeEnumerated.print_struct; - td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder; - td->der_encoder = asn_DEF_NativeEnumerated.der_encoder; - td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder; - td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder; - td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder; - td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder; - if(!td->per_constraints) - td->per_constraints = asn_DEF_NativeEnumerated.per_constraints; - td->elements = asn_DEF_NativeEnumerated.elements; - td->elements_count = asn_DEF_NativeEnumerated.elements_count; - /* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */ -} - -static void -cleanerActionType_5_free(asn_TYPE_descriptor_t *td, - void *struct_ptr, int contents_only) { - cleanerActionType_5_inherit_TYPE_descriptor(td); - td->free_struct(td, struct_ptr, contents_only); -} - -static int -cleanerActionType_5_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - cleanerActionType_5_inherit_TYPE_descriptor(td); - return td->print_struct(td, struct_ptr, ilevel, cb, app_key); -} - -static asn_dec_rval_t -cleanerActionType_5_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **structure, const void *bufptr, size_t size, int tag_mode) { - cleanerActionType_5_inherit_TYPE_descriptor(td); - return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); -} - -static asn_enc_rval_t -cleanerActionType_5_encode_der(asn_TYPE_descriptor_t *td, - void *structure, int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - cleanerActionType_5_inherit_TYPE_descriptor(td); - return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); -} - -static asn_dec_rval_t -cleanerActionType_5_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **structure, const char *opt_mname, const void *bufptr, size_t size) { - cleanerActionType_5_inherit_TYPE_descriptor(td); - return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); -} - -static asn_enc_rval_t -cleanerActionType_5_encode_xer(asn_TYPE_descriptor_t *td, void *structure, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - cleanerActionType_5_inherit_TYPE_descriptor(td); - return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); -} - -static int -memb_requestId_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - unsigned long value; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const unsigned long *)sptr; - - if((value >= 1 && value <= 4294967295)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_playerId_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - unsigned long value; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const unsigned long *)sptr; - - if((value >= 1 && value <= 4294967295)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_cleanerText_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const UTF8String_t *st = (const UTF8String_t *)sptr; - size_t size; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = UTF8String_length(st); - if((ssize_t)size < 0) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: UTF-8: broken encoding (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((size >= 1 && size <= 128)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_INTEGER_specifics_t asn_SPC_requestId_specs_2 = { - 0, 0, 0, 0, 0, - 0, /* Native long size */ - 1 /* Unsigned representation */ -}; -static ber_tlv_tag_t asn_DEF_requestId_tags_2[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_requestId_2 = { - "requestId", - "requestId", - requestId_2_free, - requestId_2_print, - requestId_2_constraint, - requestId_2_decode_ber, - requestId_2_encode_der, - requestId_2_decode_xer, - requestId_2_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_requestId_tags_2, - sizeof(asn_DEF_requestId_tags_2) - /sizeof(asn_DEF_requestId_tags_2[0]), /* 1 */ - asn_DEF_requestId_tags_2, /* Same as above */ - sizeof(asn_DEF_requestId_tags_2) - /sizeof(asn_DEF_requestId_tags_2[0]), /* 1 */ - 0, /* No PER visible constraints */ - 0, 0, /* No members */ - &asn_SPC_requestId_specs_2 /* Additional specs */ -}; - -static asn_INTEGER_specifics_t asn_SPC_playerId_specs_4 = { - 0, 0, 0, 0, 0, - 0, /* Native long size */ - 1 /* Unsigned representation */ -}; -static ber_tlv_tag_t asn_DEF_playerId_tags_4[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_playerId_4 = { - "playerId", - "playerId", - playerId_4_free, - playerId_4_print, - playerId_4_constraint, - playerId_4_decode_ber, - playerId_4_encode_der, - playerId_4_decode_xer, - playerId_4_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_playerId_tags_4, - sizeof(asn_DEF_playerId_tags_4) - /sizeof(asn_DEF_playerId_tags_4[0]), /* 1 */ - asn_DEF_playerId_tags_4, /* Same as above */ - sizeof(asn_DEF_playerId_tags_4) - /sizeof(asn_DEF_playerId_tags_4[0]), /* 1 */ - 0, /* No PER visible constraints */ - 0, 0, /* No members */ - &asn_SPC_playerId_specs_4 /* Additional specs */ -}; - -static asn_INTEGER_enum_map_t asn_MAP_cleanerActionType_value2enum_5[] = { - { 0, 17, "cleanerActionNone" }, - { 1, 20, "cleanerActionWarning" }, - { 2, 17, "cleanerActionKick" }, - { 3, 16, "cleanerActionBan" }, - { 4, 17, "cleanerActionMute" } -}; -static unsigned int asn_MAP_cleanerActionType_enum2value_5[] = { - 3, /* cleanerActionBan(3) */ - 2, /* cleanerActionKick(2) */ - 4, /* cleanerActionMute(4) */ - 0, /* cleanerActionNone(0) */ - 1 /* cleanerActionWarning(1) */ -}; -static asn_INTEGER_specifics_t asn_SPC_cleanerActionType_specs_5 = { - asn_MAP_cleanerActionType_value2enum_5, /* "tag" => N; sorted by tag */ - asn_MAP_cleanerActionType_enum2value_5, /* N => "tag"; sorted by N */ - 5, /* Number of elements in the maps */ - 0, /* Enumeration is not extensible */ - 1, /* Strict enumeration */ - 0, /* Native long size */ - 0 -}; -static ber_tlv_tag_t asn_DEF_cleanerActionType_tags_5[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_cleanerActionType_5 = { - "cleanerActionType", - "cleanerActionType", - cleanerActionType_5_free, - cleanerActionType_5_print, - cleanerActionType_5_constraint, - cleanerActionType_5_decode_ber, - cleanerActionType_5_encode_der, - cleanerActionType_5_decode_xer, - cleanerActionType_5_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_cleanerActionType_tags_5, - sizeof(asn_DEF_cleanerActionType_tags_5) - /sizeof(asn_DEF_cleanerActionType_tags_5[0]), /* 1 */ - asn_DEF_cleanerActionType_tags_5, /* Same as above */ - sizeof(asn_DEF_cleanerActionType_tags_5) - /sizeof(asn_DEF_cleanerActionType_tags_5[0]), /* 1 */ - 0, /* No PER visible constraints */ - 0, 0, /* Defined elsewhere */ - &asn_SPC_cleanerActionType_specs_5 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_CleanerChatReplyMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CleanerChatReplyMessage, requestId), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_requestId_2, - memb_requestId_constraint_1, - 0, /* PER is not compiled, use -gen-PER */ - 0, - "requestId" - }, - { ATF_NOFLAGS, 0, offsetof(struct CleanerChatReplyMessage, cleanerChatType), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_CleanerChatType, - 0, /* Defer constraints checking to the member type */ - 0, /* PER is not compiled, use -gen-PER */ - 0, - "cleanerChatType" - }, - { ATF_NOFLAGS, 0, offsetof(struct CleanerChatReplyMessage, playerId), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_playerId_4, - memb_playerId_constraint_1, - 0, /* PER is not compiled, use -gen-PER */ - 0, - "playerId" - }, - { ATF_NOFLAGS, 0, offsetof(struct CleanerChatReplyMessage, cleanerActionType), - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), - 0, - &asn_DEF_cleanerActionType_5, - 0, /* Defer constraints checking to the member type */ - 0, /* PER is not compiled, use -gen-PER */ - 0, - "cleanerActionType" - }, - { ATF_POINTER, 1, offsetof(struct CleanerChatReplyMessage, cleanerText), - (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), - 0, - &asn_DEF_UTF8String, - memb_cleanerText_constraint_1, - 0, /* PER is not compiled, use -gen-PER */ - 0, - "cleanerText" - }, -}; -static ber_tlv_tag_t asn_DEF_CleanerChatReplyMessage_tags_1[] = { - (ASN_TAG_CLASS_APPLICATION | (3 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_TYPE_tag2member_t asn_MAP_CleanerChatReplyMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* requestId at 63 */ - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* playerId at 65 */ - { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 0 }, /* cleanerActionType at 67 */ - { (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), 4, 0, 0 }, /* cleanerText at 73 */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* cleanerChatTypeLobby at 43 */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cleanerChatTypeGame at 45 */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_CleanerChatReplyMessage_specs_1 = { - sizeof(struct CleanerChatReplyMessage), - offsetof(struct CleanerChatReplyMessage, _asn_ctx), - asn_MAP_CleanerChatReplyMessage_tag2el_1, - 6, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 4, /* Start extensions */ - 6 /* Stop extensions */ -}; -asn_TYPE_descriptor_t asn_DEF_CleanerChatReplyMessage = { - "CleanerChatReplyMessage", - "CleanerChatReplyMessage", - SEQUENCE_free, - SEQUENCE_print, - SEQUENCE_constraint, - SEQUENCE_decode_ber, - SEQUENCE_encode_der, - SEQUENCE_decode_xer, - SEQUENCE_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_CleanerChatReplyMessage_tags_1, - sizeof(asn_DEF_CleanerChatReplyMessage_tags_1) - /sizeof(asn_DEF_CleanerChatReplyMessage_tags_1[0]) - 1, /* 1 */ - asn_DEF_CleanerChatReplyMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_CleanerChatReplyMessage_tags_1) - /sizeof(asn_DEF_CleanerChatReplyMessage_tags_1[0]), /* 2 */ - 0, /* No PER visible constraints */ - asn_MBR_CleanerChatReplyMessage_1, - 5, /* Elements count */ - &asn_SPC_CleanerChatReplyMessage_specs_1 /* Additional specs */ -}; - diff --git a/src/third_party/asn1/CleanerChatReplyMessage.h b/src/third_party/asn1/CleanerChatReplyMessage.h deleted file mode 100644 index df23b24d..00000000 --- a/src/third_party/asn1/CleanerChatReplyMessage.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#ifndef _CleanerChatReplyMessage_H_ -#define _CleanerChatReplyMessage_H_ - - -#include - -/* Including external dependencies */ -#include -#include "CleanerChatType.h" -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - /* Dependencies */ - typedef enum cleanerActionType { - cleanerActionType_cleanerActionNone = 0, - cleanerActionType_cleanerActionWarning = 1, - cleanerActionType_cleanerActionKick = 2, - cleanerActionType_cleanerActionBan = 3, - cleanerActionType_cleanerActionMute = 4 - } - e_cleanerActionType; - - /* CleanerChatReplyMessage */ - typedef struct CleanerChatReplyMessage { - unsigned long requestId; - CleanerChatType_t cleanerChatType; - unsigned long playerId; - long cleanerActionType; - UTF8String_t *cleanerText /* OPTIONAL */; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } CleanerChatReplyMessage_t; - - /* Implementation */ - /* extern asn_TYPE_descriptor_t asn_DEF_requestId_2; // (Use -fall-defs-global to expose) */ - /* extern asn_TYPE_descriptor_t asn_DEF_playerId_4; // (Use -fall-defs-global to expose) */ - /* extern asn_TYPE_descriptor_t asn_DEF_cleanerActionType_5; // (Use -fall-defs-global to expose) */ - extern asn_TYPE_descriptor_t asn_DEF_CleanerChatReplyMessage; - -#ifdef __cplusplus -} -#endif - -#endif /* _CleanerChatReplyMessage_H_ */ -#include diff --git a/src/third_party/asn1/CleanerChatRequestMessage.c b/src/third_party/asn1/CleanerChatRequestMessage.c deleted file mode 100644 index 390e5c6d..00000000 --- a/src/third_party/asn1/CleanerChatRequestMessage.c +++ /dev/null @@ -1,459 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#include "CleanerChatRequestMessage.h" - -static int -requestId_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - unsigned long value; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const unsigned long *)sptr; - - if((value >= 1 && value <= 4294967295)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static void -requestId_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { - td->free_struct = asn_DEF_NativeInteger.free_struct; - td->print_struct = asn_DEF_NativeInteger.print_struct; - td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; - td->der_encoder = asn_DEF_NativeInteger.der_encoder; - td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; - td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; - td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; - td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; - if(!td->per_constraints) - td->per_constraints = asn_DEF_NativeInteger.per_constraints; - td->elements = asn_DEF_NativeInteger.elements; - td->elements_count = asn_DEF_NativeInteger.elements_count; - /* td->specifics = asn_DEF_NativeInteger.specifics; // Defined explicitly */ -} - -static void -requestId_2_free(asn_TYPE_descriptor_t *td, - void *struct_ptr, int contents_only) { - requestId_2_inherit_TYPE_descriptor(td); - td->free_struct(td, struct_ptr, contents_only); -} - -static int -requestId_2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - requestId_2_inherit_TYPE_descriptor(td); - return td->print_struct(td, struct_ptr, ilevel, cb, app_key); -} - -static asn_dec_rval_t -requestId_2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **structure, const void *bufptr, size_t size, int tag_mode) { - requestId_2_inherit_TYPE_descriptor(td); - return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); -} - -static asn_enc_rval_t -requestId_2_encode_der(asn_TYPE_descriptor_t *td, - void *structure, int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - requestId_2_inherit_TYPE_descriptor(td); - return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); -} - -static asn_dec_rval_t -requestId_2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **structure, const char *opt_mname, const void *bufptr, size_t size) { - requestId_2_inherit_TYPE_descriptor(td); - return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); -} - -static asn_enc_rval_t -requestId_2_encode_xer(asn_TYPE_descriptor_t *td, void *structure, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - requestId_2_inherit_TYPE_descriptor(td); - return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); -} - -static int -playerId_4_constraint(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - unsigned long value; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const unsigned long *)sptr; - - if((value >= 1 && value <= 4294967295)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static void -playerId_4_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { - td->free_struct = asn_DEF_NativeInteger.free_struct; - td->print_struct = asn_DEF_NativeInteger.print_struct; - td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; - td->der_encoder = asn_DEF_NativeInteger.der_encoder; - td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; - td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; - td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; - td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; - if(!td->per_constraints) - td->per_constraints = asn_DEF_NativeInteger.per_constraints; - td->elements = asn_DEF_NativeInteger.elements; - td->elements_count = asn_DEF_NativeInteger.elements_count; - /* td->specifics = asn_DEF_NativeInteger.specifics; // Defined explicitly */ -} - -static void -playerId_4_free(asn_TYPE_descriptor_t *td, - void *struct_ptr, int contents_only) { - playerId_4_inherit_TYPE_descriptor(td); - td->free_struct(td, struct_ptr, contents_only); -} - -static int -playerId_4_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - playerId_4_inherit_TYPE_descriptor(td); - return td->print_struct(td, struct_ptr, ilevel, cb, app_key); -} - -static asn_dec_rval_t -playerId_4_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **structure, const void *bufptr, size_t size, int tag_mode) { - playerId_4_inherit_TYPE_descriptor(td); - return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); -} - -static asn_enc_rval_t -playerId_4_encode_der(asn_TYPE_descriptor_t *td, - void *structure, int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - playerId_4_inherit_TYPE_descriptor(td); - return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); -} - -static asn_dec_rval_t -playerId_4_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **structure, const char *opt_mname, const void *bufptr, size_t size) { - playerId_4_inherit_TYPE_descriptor(td); - return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); -} - -static asn_enc_rval_t -playerId_4_encode_xer(asn_TYPE_descriptor_t *td, void *structure, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - playerId_4_inherit_TYPE_descriptor(td); - return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); -} - -static int -memb_requestId_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - unsigned long value; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const unsigned long *)sptr; - - if((value >= 1 && value <= 4294967295)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_playerId_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - unsigned long value; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const unsigned long *)sptr; - - if((value >= 1 && value <= 4294967295)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_playerName_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const UTF8String_t *st = (const UTF8String_t *)sptr; - size_t size; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = UTF8String_length(st); - if((ssize_t)size < 0) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: UTF-8: broken encoding (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((size >= 1 && size <= 32)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_chatMessage_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const UTF8String_t *st = (const UTF8String_t *)sptr; - size_t size; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = UTF8String_length(st); - if((ssize_t)size < 0) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: UTF-8: broken encoding (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((size >= 1 && size <= 128)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_INTEGER_specifics_t asn_SPC_requestId_specs_2 = { - 0, 0, 0, 0, 0, - 0, /* Native long size */ - 1 /* Unsigned representation */ -}; -static ber_tlv_tag_t asn_DEF_requestId_tags_2[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_requestId_2 = { - "requestId", - "requestId", - requestId_2_free, - requestId_2_print, - requestId_2_constraint, - requestId_2_decode_ber, - requestId_2_encode_der, - requestId_2_decode_xer, - requestId_2_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_requestId_tags_2, - sizeof(asn_DEF_requestId_tags_2) - /sizeof(asn_DEF_requestId_tags_2[0]), /* 1 */ - asn_DEF_requestId_tags_2, /* Same as above */ - sizeof(asn_DEF_requestId_tags_2) - /sizeof(asn_DEF_requestId_tags_2[0]), /* 1 */ - 0, /* No PER visible constraints */ - 0, 0, /* No members */ - &asn_SPC_requestId_specs_2 /* Additional specs */ -}; - -static asn_INTEGER_specifics_t asn_SPC_playerId_specs_4 = { - 0, 0, 0, 0, 0, - 0, /* Native long size */ - 1 /* Unsigned representation */ -}; -static ber_tlv_tag_t asn_DEF_playerId_tags_4[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_playerId_4 = { - "playerId", - "playerId", - playerId_4_free, - playerId_4_print, - playerId_4_constraint, - playerId_4_decode_ber, - playerId_4_encode_der, - playerId_4_decode_xer, - playerId_4_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_playerId_tags_4, - sizeof(asn_DEF_playerId_tags_4) - /sizeof(asn_DEF_playerId_tags_4[0]), /* 1 */ - asn_DEF_playerId_tags_4, /* Same as above */ - sizeof(asn_DEF_playerId_tags_4) - /sizeof(asn_DEF_playerId_tags_4[0]), /* 1 */ - 0, /* No PER visible constraints */ - 0, 0, /* No members */ - &asn_SPC_playerId_specs_4 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_CleanerChatRequestMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CleanerChatRequestMessage, requestId), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_requestId_2, - memb_requestId_constraint_1, - 0, /* PER is not compiled, use -gen-PER */ - 0, - "requestId" - }, - { ATF_NOFLAGS, 0, offsetof(struct CleanerChatRequestMessage, cleanerChatType), - -1 /* Ambiguous tag (CHOICE?) */, - 0, - &asn_DEF_CleanerChatType, - 0, /* Defer constraints checking to the member type */ - 0, /* PER is not compiled, use -gen-PER */ - 0, - "cleanerChatType" - }, - { ATF_NOFLAGS, 0, offsetof(struct CleanerChatRequestMessage, playerId), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_playerId_4, - memb_playerId_constraint_1, - 0, /* PER is not compiled, use -gen-PER */ - 0, - "playerId" - }, - { ATF_NOFLAGS, 0, offsetof(struct CleanerChatRequestMessage, playerName), - (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), - 0, - &asn_DEF_UTF8String, - memb_playerName_constraint_1, - 0, /* PER is not compiled, use -gen-PER */ - 0, - "playerName" - }, - { ATF_NOFLAGS, 0, offsetof(struct CleanerChatRequestMessage, chatMessage), - (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), - 0, - &asn_DEF_UTF8String, - memb_chatMessage_constraint_1, - 0, /* PER is not compiled, use -gen-PER */ - 0, - "chatMessage" - }, -}; -static ber_tlv_tag_t asn_DEF_CleanerChatRequestMessage_tags_1[] = { - (ASN_TAG_CLASS_APPLICATION | (2 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_TYPE_tag2member_t asn_MAP_CleanerChatRequestMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* requestId at 55 */ - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* playerId at 57 */ - { (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), 3, 0, 1 }, /* playerName at 58 */ - { (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), 4, -1, 0 }, /* chatMessage at 59 */ - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* cleanerChatTypeLobby at 43 */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cleanerChatTypeGame at 45 */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_CleanerChatRequestMessage_specs_1 = { - sizeof(struct CleanerChatRequestMessage), - offsetof(struct CleanerChatRequestMessage, _asn_ctx), - asn_MAP_CleanerChatRequestMessage_tag2el_1, - 6, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 4, /* Start extensions */ - 6 /* Stop extensions */ -}; -asn_TYPE_descriptor_t asn_DEF_CleanerChatRequestMessage = { - "CleanerChatRequestMessage", - "CleanerChatRequestMessage", - SEQUENCE_free, - SEQUENCE_print, - SEQUENCE_constraint, - SEQUENCE_decode_ber, - SEQUENCE_encode_der, - SEQUENCE_decode_xer, - SEQUENCE_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_CleanerChatRequestMessage_tags_1, - sizeof(asn_DEF_CleanerChatRequestMessage_tags_1) - /sizeof(asn_DEF_CleanerChatRequestMessage_tags_1[0]) - 1, /* 1 */ - asn_DEF_CleanerChatRequestMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_CleanerChatRequestMessage_tags_1) - /sizeof(asn_DEF_CleanerChatRequestMessage_tags_1[0]), /* 2 */ - 0, /* No PER visible constraints */ - asn_MBR_CleanerChatRequestMessage_1, - 5, /* Elements count */ - &asn_SPC_CleanerChatRequestMessage_specs_1 /* Additional specs */ -}; - diff --git a/src/third_party/asn1/CleanerChatRequestMessage.h b/src/third_party/asn1/CleanerChatRequestMessage.h deleted file mode 100644 index f3f38318..00000000 --- a/src/third_party/asn1/CleanerChatRequestMessage.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#ifndef _CleanerChatRequestMessage_H_ -#define _CleanerChatRequestMessage_H_ - - -#include - -/* Including external dependencies */ -#include -#include "CleanerChatType.h" -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - /* CleanerChatRequestMessage */ - typedef struct CleanerChatRequestMessage { - unsigned long requestId; - CleanerChatType_t cleanerChatType; - unsigned long playerId; - UTF8String_t playerName; - UTF8String_t chatMessage; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } CleanerChatRequestMessage_t; - - /* Implementation */ - /* extern asn_TYPE_descriptor_t asn_DEF_requestId_2; // (Use -fall-defs-global to expose) */ - /* extern asn_TYPE_descriptor_t asn_DEF_playerId_4; // (Use -fall-defs-global to expose) */ - extern asn_TYPE_descriptor_t asn_DEF_CleanerChatRequestMessage; - -#ifdef __cplusplus -} -#endif - -#endif /* _CleanerChatRequestMessage_H_ */ -#include diff --git a/src/third_party/asn1/CleanerChatType.c b/src/third_party/asn1/CleanerChatType.c deleted file mode 100644 index 234871e5..00000000 --- a/src/third_party/asn1/CleanerChatType.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#include "CleanerChatType.h" - -static asn_TYPE_member_t asn_MBR_CleanerChatType_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CleanerChatType, choice.cleanerChatTypeLobby), - (ASN_TAG_CLASS_CONTEXT | (0 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CleanerChatTypeLobby, - 0, /* Defer constraints checking to the member type */ - 0, /* PER is not compiled, use -gen-PER */ - 0, - "cleanerChatTypeLobby" - }, - { ATF_NOFLAGS, 0, offsetof(struct CleanerChatType, choice.cleanerChatTypeGame), - (ASN_TAG_CLASS_CONTEXT | (1 << 2)), - -1, /* IMPLICIT tag at current level */ - &asn_DEF_CleanerChatTypeGame, - 0, /* Defer constraints checking to the member type */ - 0, /* PER is not compiled, use -gen-PER */ - 0, - "cleanerChatTypeGame" - }, -}; -static asn_TYPE_tag2member_t asn_MAP_CleanerChatType_tag2el_1[] = { - { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cleanerChatTypeLobby at 43 */ - { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cleanerChatTypeGame at 45 */ -}; -static asn_CHOICE_specifics_t asn_SPC_CleanerChatType_specs_1 = { - sizeof(struct CleanerChatType), - offsetof(struct CleanerChatType, _asn_ctx), - offsetof(struct CleanerChatType, present), - sizeof(((struct CleanerChatType *)0)->present), - asn_MAP_CleanerChatType_tag2el_1, - 2, /* Count of tags in the map */ - 0, - 2 /* Extensions start */ -}; -asn_TYPE_descriptor_t asn_DEF_CleanerChatType = { - "CleanerChatType", - "CleanerChatType", - CHOICE_free, - CHOICE_print, - CHOICE_constraint, - CHOICE_decode_ber, - CHOICE_encode_der, - CHOICE_decode_xer, - CHOICE_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - CHOICE_outmost_tag, - 0, /* No effective tags (pointer) */ - 0, /* No effective tags (count) */ - 0, /* No tags (pointer) */ - 0, /* No tags (count) */ - 0, /* No PER visible constraints */ - asn_MBR_CleanerChatType_1, - 2, /* Elements count */ - &asn_SPC_CleanerChatType_specs_1 /* Additional specs */ -}; - diff --git a/src/third_party/asn1/CleanerChatType.h b/src/third_party/asn1/CleanerChatType.h deleted file mode 100644 index a37b2824..00000000 --- a/src/third_party/asn1/CleanerChatType.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#ifndef _CleanerChatType_H_ -#define _CleanerChatType_H_ - - -#include - -/* Including external dependencies */ -#include "CleanerChatTypeLobby.h" -#include "CleanerChatTypeGame.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - - /* Dependencies */ - typedef enum CleanerChatType_PR { - CleanerChatType_PR_NOTHING, /* No components present */ - CleanerChatType_PR_cleanerChatTypeLobby, - CleanerChatType_PR_cleanerChatTypeGame, - /* Extensions may appear below */ - - } - CleanerChatType_PR; - - /* CleanerChatType */ - typedef struct CleanerChatType { - CleanerChatType_PR present; - union CleanerChatType_u { - CleanerChatTypeLobby_t cleanerChatTypeLobby; - CleanerChatTypeGame_t cleanerChatTypeGame; - /* - * This type is extensible, - * possible extensions are below. - */ - } choice; - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } CleanerChatType_t; - - /* Implementation */ - extern asn_TYPE_descriptor_t asn_DEF_CleanerChatType; - -#ifdef __cplusplus -} -#endif - -#endif /* _CleanerChatType_H_ */ -#include diff --git a/src/third_party/asn1/CleanerChatTypeGame.c b/src/third_party/asn1/CleanerChatTypeGame.c deleted file mode 100644 index 438db1f8..00000000 --- a/src/third_party/asn1/CleanerChatTypeGame.c +++ /dev/null @@ -1,206 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#include "CleanerChatTypeGame.h" - -static int -gameId_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - unsigned long value; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const unsigned long *)sptr; - - if((value >= 1 && value <= 4294967295)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -/* - * This type is implemented using NativeInteger, - * so here we adjust the DEF accordingly. - */ -static void -gameId_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) { - td->free_struct = asn_DEF_NativeInteger.free_struct; - td->print_struct = asn_DEF_NativeInteger.print_struct; - td->ber_decoder = asn_DEF_NativeInteger.ber_decoder; - td->der_encoder = asn_DEF_NativeInteger.der_encoder; - td->xer_decoder = asn_DEF_NativeInteger.xer_decoder; - td->xer_encoder = asn_DEF_NativeInteger.xer_encoder; - td->uper_decoder = asn_DEF_NativeInteger.uper_decoder; - td->uper_encoder = asn_DEF_NativeInteger.uper_encoder; - if(!td->per_constraints) - td->per_constraints = asn_DEF_NativeInteger.per_constraints; - td->elements = asn_DEF_NativeInteger.elements; - td->elements_count = asn_DEF_NativeInteger.elements_count; - /* td->specifics = asn_DEF_NativeInteger.specifics; // Defined explicitly */ -} - -static void -gameId_2_free(asn_TYPE_descriptor_t *td, - void *struct_ptr, int contents_only) { - gameId_2_inherit_TYPE_descriptor(td); - td->free_struct(td, struct_ptr, contents_only); -} - -static int -gameId_2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - gameId_2_inherit_TYPE_descriptor(td); - return td->print_struct(td, struct_ptr, ilevel, cb, app_key); -} - -static asn_dec_rval_t -gameId_2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **structure, const void *bufptr, size_t size, int tag_mode) { - gameId_2_inherit_TYPE_descriptor(td); - return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode); -} - -static asn_enc_rval_t -gameId_2_encode_der(asn_TYPE_descriptor_t *td, - void *structure, int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - gameId_2_inherit_TYPE_descriptor(td); - return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); -} - -static asn_dec_rval_t -gameId_2_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **structure, const char *opt_mname, const void *bufptr, size_t size) { - gameId_2_inherit_TYPE_descriptor(td); - return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size); -} - -static asn_enc_rval_t -gameId_2_encode_xer(asn_TYPE_descriptor_t *td, void *structure, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - gameId_2_inherit_TYPE_descriptor(td); - return td->xer_encoder(td, structure, ilevel, flags, cb, app_key); -} - -static int -memb_gameId_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - unsigned long value; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const unsigned long *)sptr; - - if((value >= 1 && value <= 4294967295)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_INTEGER_specifics_t asn_SPC_gameId_specs_2 = { - 0, 0, 0, 0, 0, - 0, /* Native long size */ - 1 /* Unsigned representation */ -}; -static ber_tlv_tag_t asn_DEF_gameId_tags_2[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -static /* Use -fall-defs-global to expose */ -asn_TYPE_descriptor_t asn_DEF_gameId_2 = { - "gameId", - "gameId", - gameId_2_free, - gameId_2_print, - gameId_2_constraint, - gameId_2_decode_ber, - gameId_2_encode_der, - gameId_2_decode_xer, - gameId_2_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_gameId_tags_2, - sizeof(asn_DEF_gameId_tags_2) - /sizeof(asn_DEF_gameId_tags_2[0]), /* 1 */ - asn_DEF_gameId_tags_2, /* Same as above */ - sizeof(asn_DEF_gameId_tags_2) - /sizeof(asn_DEF_gameId_tags_2[0]), /* 1 */ - 0, /* No PER visible constraints */ - 0, 0, /* No members */ - &asn_SPC_gameId_specs_2 /* Additional specs */ -}; - -static asn_TYPE_member_t asn_MBR_CleanerChatTypeGame_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CleanerChatTypeGame, gameId), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_gameId_2, - memb_gameId_constraint_1, - 0, /* PER is not compiled, use -gen-PER */ - 0, - "gameId" - }, -}; -static ber_tlv_tag_t asn_DEF_CleanerChatTypeGame_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_TYPE_tag2member_t asn_MAP_CleanerChatTypeGame_tag2el_1[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* gameId at 51 */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_CleanerChatTypeGame_specs_1 = { - sizeof(struct CleanerChatTypeGame), - offsetof(struct CleanerChatTypeGame, _asn_ctx), - asn_MAP_CleanerChatTypeGame_tag2el_1, - 1, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 0, /* Start extensions */ - 2 /* Stop extensions */ -}; -asn_TYPE_descriptor_t asn_DEF_CleanerChatTypeGame = { - "CleanerChatTypeGame", - "CleanerChatTypeGame", - SEQUENCE_free, - SEQUENCE_print, - SEQUENCE_constraint, - SEQUENCE_decode_ber, - SEQUENCE_encode_der, - SEQUENCE_decode_xer, - SEQUENCE_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_CleanerChatTypeGame_tags_1, - sizeof(asn_DEF_CleanerChatTypeGame_tags_1) - /sizeof(asn_DEF_CleanerChatTypeGame_tags_1[0]), /* 1 */ - asn_DEF_CleanerChatTypeGame_tags_1, /* Same as above */ - sizeof(asn_DEF_CleanerChatTypeGame_tags_1) - /sizeof(asn_DEF_CleanerChatTypeGame_tags_1[0]), /* 1 */ - 0, /* No PER visible constraints */ - asn_MBR_CleanerChatTypeGame_1, - 1, /* Elements count */ - &asn_SPC_CleanerChatTypeGame_specs_1 /* Additional specs */ -}; - diff --git a/src/third_party/asn1/CleanerChatTypeGame.h b/src/third_party/asn1/CleanerChatTypeGame.h deleted file mode 100644 index acd8084d..00000000 --- a/src/third_party/asn1/CleanerChatTypeGame.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#ifndef _CleanerChatTypeGame_H_ -#define _CleanerChatTypeGame_H_ - - -#include - -/* Including external dependencies */ -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - /* CleanerChatTypeGame */ - typedef struct CleanerChatTypeGame { - unsigned long gameId; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } CleanerChatTypeGame_t; - - /* Implementation */ - /* extern asn_TYPE_descriptor_t asn_DEF_gameId_2; // (Use -fall-defs-global to expose) */ - extern asn_TYPE_descriptor_t asn_DEF_CleanerChatTypeGame; - -#ifdef __cplusplus -} -#endif - -#endif /* _CleanerChatTypeGame_H_ */ -#include diff --git a/src/third_party/asn1/CleanerChatTypeLobby.c b/src/third_party/asn1/CleanerChatTypeLobby.c deleted file mode 100644 index c084df18..00000000 --- a/src/third_party/asn1/CleanerChatTypeLobby.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#include "CleanerChatTypeLobby.h" - -static ber_tlv_tag_t asn_DEF_CleanerChatTypeLobby_tags_1[] = { - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_SEQUENCE_specifics_t asn_SPC_CleanerChatTypeLobby_specs_1 = { - sizeof(struct CleanerChatTypeLobby), - offsetof(struct CleanerChatTypeLobby, _asn_ctx), - 0, /* No top level tags */ - 0, /* No tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - -1, /* Start extensions */ - -1 /* Stop extensions */ -}; -asn_TYPE_descriptor_t asn_DEF_CleanerChatTypeLobby = { - "CleanerChatTypeLobby", - "CleanerChatTypeLobby", - SEQUENCE_free, - SEQUENCE_print, - SEQUENCE_constraint, - SEQUENCE_decode_ber, - SEQUENCE_encode_der, - SEQUENCE_decode_xer, - SEQUENCE_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_CleanerChatTypeLobby_tags_1, - sizeof(asn_DEF_CleanerChatTypeLobby_tags_1) - /sizeof(asn_DEF_CleanerChatTypeLobby_tags_1[0]), /* 1 */ - asn_DEF_CleanerChatTypeLobby_tags_1, /* Same as above */ - sizeof(asn_DEF_CleanerChatTypeLobby_tags_1) - /sizeof(asn_DEF_CleanerChatTypeLobby_tags_1[0]), /* 1 */ - 0, /* No PER visible constraints */ - 0, 0, /* No members */ - &asn_SPC_CleanerChatTypeLobby_specs_1 /* Additional specs */ -}; - diff --git a/src/third_party/asn1/CleanerChatTypeLobby.h b/src/third_party/asn1/CleanerChatTypeLobby.h deleted file mode 100644 index 0c0ff8d8..00000000 --- a/src/third_party/asn1/CleanerChatTypeLobby.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#ifndef _CleanerChatTypeLobby_H_ -#define _CleanerChatTypeLobby_H_ - - -#include - -/* Including external dependencies */ -#include - -#ifdef __cplusplus -extern "C" { -#endif - - /* CleanerChatTypeLobby */ - typedef struct CleanerChatTypeLobby { - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } CleanerChatTypeLobby_t; - - /* Implementation */ - extern asn_TYPE_descriptor_t asn_DEF_CleanerChatTypeLobby; - -#ifdef __cplusplus -} -#endif - -#endif /* _CleanerChatTypeLobby_H_ */ -#include diff --git a/src/third_party/asn1/CleanerInitAckMessage.c b/src/third_party/asn1/CleanerInitAckMessage.c deleted file mode 100644 index 77305421..00000000 --- a/src/third_party/asn1/CleanerInitAckMessage.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#include "CleanerInitAckMessage.h" - -static int -memb_serverVersion_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_serverSecret_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const UTF8String_t *st = (const UTF8String_t *)sptr; - size_t size; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = UTF8String_length(st); - if((ssize_t)size < 0) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: UTF-8: broken encoding (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((size >= 1 && size <= 32)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_TYPE_member_t asn_MBR_CleanerInitAckMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CleanerInitAckMessage, serverVersion), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_NativeInteger, - memb_serverVersion_constraint_1, - 0, /* PER is not compiled, use -gen-PER */ - 0, - "serverVersion" - }, - { ATF_NOFLAGS, 0, offsetof(struct CleanerInitAckMessage, serverSecret), - (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), - 0, - &asn_DEF_UTF8String, - memb_serverSecret_constraint_1, - 0, /* PER is not compiled, use -gen-PER */ - 0, - "serverSecret" - }, -}; -static ber_tlv_tag_t asn_DEF_CleanerInitAckMessage_tags_1[] = { - (ASN_TAG_CLASS_APPLICATION | (1 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_TYPE_tag2member_t asn_MAP_CleanerInitAckMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* serverVersion at 38 */ - { (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), 1, 0, 0 } /* serverSecret at 39 */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_CleanerInitAckMessage_specs_1 = { - sizeof(struct CleanerInitAckMessage), - offsetof(struct CleanerInitAckMessage, _asn_ctx), - asn_MAP_CleanerInitAckMessage_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* Start extensions */ - 3 /* Stop extensions */ -}; -asn_TYPE_descriptor_t asn_DEF_CleanerInitAckMessage = { - "CleanerInitAckMessage", - "CleanerInitAckMessage", - SEQUENCE_free, - SEQUENCE_print, - SEQUENCE_constraint, - SEQUENCE_decode_ber, - SEQUENCE_encode_der, - SEQUENCE_decode_xer, - SEQUENCE_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_CleanerInitAckMessage_tags_1, - sizeof(asn_DEF_CleanerInitAckMessage_tags_1) - /sizeof(asn_DEF_CleanerInitAckMessage_tags_1[0]) - 1, /* 1 */ - asn_DEF_CleanerInitAckMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_CleanerInitAckMessage_tags_1) - /sizeof(asn_DEF_CleanerInitAckMessage_tags_1[0]), /* 2 */ - 0, /* No PER visible constraints */ - asn_MBR_CleanerInitAckMessage_1, - 2, /* Elements count */ - &asn_SPC_CleanerInitAckMessage_specs_1 /* Additional specs */ -}; - diff --git a/src/third_party/asn1/CleanerInitAckMessage.h b/src/third_party/asn1/CleanerInitAckMessage.h deleted file mode 100644 index a75efbc5..00000000 --- a/src/third_party/asn1/CleanerInitAckMessage.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#ifndef _CleanerInitAckMessage_H_ -#define _CleanerInitAckMessage_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - /* CleanerInitAckMessage */ - typedef struct CleanerInitAckMessage { - long serverVersion; - UTF8String_t serverSecret; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } CleanerInitAckMessage_t; - - /* Implementation */ - extern asn_TYPE_descriptor_t asn_DEF_CleanerInitAckMessage; - -#ifdef __cplusplus -} -#endif - -#endif /* _CleanerInitAckMessage_H_ */ -#include diff --git a/src/third_party/asn1/CleanerInitMessage.c b/src/third_party/asn1/CleanerInitMessage.c deleted file mode 100644 index 882167b6..00000000 --- a/src/third_party/asn1/CleanerInitMessage.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#include "CleanerInitMessage.h" - -static int -memb_requestedVersion_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - long value; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - value = *(const long *)sptr; - - if((value >= 0 && value <= 65535)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static int -memb_clientSecret_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - const UTF8String_t *st = (const UTF8String_t *)sptr; - size_t size; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - size = UTF8String_length(st); - if((ssize_t)size < 0) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: UTF-8: broken encoding (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - if((size >= 1 && size <= 32)) { - /* Constraint check succeeded */ - return 0; - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: constraint failed (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -static asn_TYPE_member_t asn_MBR_CleanerInitMessage_1[] = { - { ATF_NOFLAGS, 0, offsetof(struct CleanerInitMessage, requestedVersion), - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), - 0, - &asn_DEF_NativeInteger, - memb_requestedVersion_constraint_1, - 0, /* PER is not compiled, use -gen-PER */ - 0, - "requestedVersion" - }, - { ATF_NOFLAGS, 0, offsetof(struct CleanerInitMessage, clientSecret), - (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), - 0, - &asn_DEF_UTF8String, - memb_clientSecret_constraint_1, - 0, /* PER is not compiled, use -gen-PER */ - 0, - "clientSecret" - }, -}; -static ber_tlv_tag_t asn_DEF_CleanerInitMessage_tags_1[] = { - (ASN_TAG_CLASS_APPLICATION | (0 << 2)), - (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) -}; -static asn_TYPE_tag2member_t asn_MAP_CleanerInitMessage_tag2el_1[] = { - { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* requestedVersion at 33 */ - { (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), 1, 0, 0 } /* clientSecret at 34 */ -}; -static asn_SEQUENCE_specifics_t asn_SPC_CleanerInitMessage_specs_1 = { - sizeof(struct CleanerInitMessage), - offsetof(struct CleanerInitMessage, _asn_ctx), - asn_MAP_CleanerInitMessage_tag2el_1, - 2, /* Count of tags in the map */ - 0, 0, 0, /* Optional elements (not needed) */ - 1, /* Start extensions */ - 3 /* Stop extensions */ -}; -asn_TYPE_descriptor_t asn_DEF_CleanerInitMessage = { - "CleanerInitMessage", - "CleanerInitMessage", - SEQUENCE_free, - SEQUENCE_print, - SEQUENCE_constraint, - SEQUENCE_decode_ber, - SEQUENCE_encode_der, - SEQUENCE_decode_xer, - SEQUENCE_encode_xer, - 0, 0, /* No PER support, use "-gen-PER" to enable */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_CleanerInitMessage_tags_1, - sizeof(asn_DEF_CleanerInitMessage_tags_1) - /sizeof(asn_DEF_CleanerInitMessage_tags_1[0]) - 1, /* 1 */ - asn_DEF_CleanerInitMessage_tags_1, /* Same as above */ - sizeof(asn_DEF_CleanerInitMessage_tags_1) - /sizeof(asn_DEF_CleanerInitMessage_tags_1[0]), /* 2 */ - 0, /* No PER visible constraints */ - asn_MBR_CleanerInitMessage_1, - 2, /* Elements count */ - &asn_SPC_CleanerInitMessage_specs_1 /* Additional specs */ -}; - diff --git a/src/third_party/asn1/CleanerInitMessage.h b/src/third_party/asn1/CleanerInitMessage.h deleted file mode 100644 index 154cea24..00000000 --- a/src/third_party/asn1/CleanerInitMessage.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Generated by asn1c-0.9.23 (http://lionet.info/asn1c) - * From ASN.1 module "CHATCLEANER-PROTOCOL" - * found in "../../../docs/chatcleaner.asn1" - * `asn1c -fskeletons-copy` - */ - -#ifndef _CleanerInitMessage_H_ -#define _CleanerInitMessage_H_ - - -#include - -/* Including external dependencies */ -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - /* CleanerInitMessage */ - typedef struct CleanerInitMessage { - long requestedVersion; - UTF8String_t clientSecret; - /* - * This type is extensible, - * possible extensions are below. - */ - - /* Context for parsing across buffer boundaries */ - asn_struct_ctx_t _asn_ctx; - } CleanerInitMessage_t; - - /* Implementation */ - extern asn_TYPE_descriptor_t asn_DEF_CleanerInitMessage; - -#ifdef __cplusplus -} -#endif - -#endif /* _CleanerInitMessage_H_ */ -#include diff --git a/src/third_party/asn1/INTEGER.c b/src/third_party/asn1/INTEGER.c deleted file mode 100644 index a6a9734f..00000000 --- a/src/third_party/asn1/INTEGER.c +++ /dev/null @@ -1,975 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2005, 2006, 2007 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* Encoder and decoder of a primitive type */ -#include - -/* - * INTEGER basic type description. - */ -static ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_INTEGER = { - "INTEGER", - "INTEGER", - ASN__PRIMITIVE_TYPE_free, - INTEGER_print, - asn_generic_no_constraint, - ber_decode_primitive, - INTEGER_encode_der, - INTEGER_decode_xer, - INTEGER_encode_xer, - INTEGER_decode_uper, /* Unaligned PER decoder */ - INTEGER_encode_uper, /* Unaligned PER encoder */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_INTEGER_tags, - sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), - asn_DEF_INTEGER_tags, /* Same as above */ - sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), - 0, /* No PER visible constraints */ - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Encode INTEGER type using DER. - */ -asn_enc_rval_t -INTEGER_encode_der(asn_TYPE_descriptor_t *td, void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - INTEGER_t *st = (INTEGER_t *)sptr; - - ASN_DEBUG("%s %s as INTEGER (tm=%d)", - cb?"Encoding":"Estimating", td->name, tag_mode); - - /* - * Canonicalize integer in the buffer. - * (Remove too long sign extension, remove some first 0x00 bytes) - */ - if(st->buf) { - uint8_t *buf = st->buf; - uint8_t *end1 = buf + st->size - 1; - int shift; - - /* Compute the number of superfluous leading bytes */ - for(; buf < end1; buf++) { - /* - * If the contents octets of an integer value encoding - * consist of more than one octet, then the bits of the - * first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - switch(*buf) { - case 0x00: - if((buf[1] & 0x80) == 0) - continue; - break; - case 0xff: - if((buf[1] & 0x80)) - continue; - break; - } - break; - } - - /* Remove leading superfluous bytes from the integer */ - shift = buf - st->buf; - if(shift) { - uint8_t *nb = st->buf; - uint8_t *end; - - st->size -= shift; /* New size, minus bad bytes */ - end = nb + st->size; - - for(; nb < end; nb++, buf++) - *nb = *buf; - } - - } /* if(1) */ - - return der_encode_primitive(td, sptr, tag_mode, tag, cb, app_key); -} - -static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value(asn_INTEGER_specifics_t *specs, const char *lstart, const char *lstop); - -/* - * INTEGER specific human-readable output. - */ -static ssize_t -INTEGER__dump(asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { - asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; - char scratch[32]; /* Enough for 64-bit integer */ - uint8_t *buf = st->buf; - uint8_t *buf_end = st->buf + st->size; - signed long accum; - ssize_t wrote = 0; - char *p; - int ret; - - /* - * Advance buf pointer until the start of the value's body. - * This will make us able to process large integers using simple case, - * when the actual value is small - * (0x0000000000abcdef would yield a fine 0x00abcdef) - */ - /* Skip the insignificant leading bytes */ - for(; buf < buf_end-1; buf++) { - switch(*buf) { - case 0x00: - if((buf[1] & 0x80) == 0) continue; - break; - case 0xff: - if((buf[1] & 0x80) != 0) continue; - break; - } - break; - } - - /* Simple case: the integer size is small */ - if((size_t)(buf_end - buf) <= sizeof(accum)) { - const asn_INTEGER_enum_map_t *el; - size_t scrsize; - char *scr; - - if(buf == buf_end) { - accum = 0; - } else { - accum = (*buf & 0x80) ? -1 : 0; - for(; buf < buf_end; buf++) - accum = (accum << 8) | *buf; - } - - el = INTEGER_map_value2enum(specs, accum); - if(el) { - scrsize = el->enum_len + 32; - scr = (char *)alloca(scrsize); - if(plainOrXER == 0) - ret = snprintf(scr, scrsize, - "%ld (%s)", accum, el->enum_name); - else - ret = snprintf(scr, scrsize, - "<%s/>", el->enum_name); - } else if(plainOrXER && specs && specs->strict_enumeration) { - ASN_DEBUG("ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - errno = EPERM; - return -1; - } else { - scrsize = sizeof(scratch); - scr = scratch; - ret = snprintf(scr, scrsize, - (specs && specs->field_unsigned) - ?"%lu":"%ld", accum); - } - assert(ret > 0 && (size_t)ret < scrsize); - return (cb(scr, ret, app_key) < 0) ? -1 : ret; - } else if(plainOrXER && specs && specs->strict_enumeration) { - /* - * Here and earlier, we cannot encode the ENUMERATED values - * if there is no corresponding identifier. - */ - ASN_DEBUG("ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - errno = EPERM; - return -1; - } - - /* Output in the long xx:yy:zz... format */ - /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ - for(p = scratch; buf < buf_end; buf++) { - static const char *h2c = "0123456789ABCDEF"; - if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { - /* Flush buffer */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - wrote += p - scratch; - p = scratch; - } - *p++ = h2c[*buf >> 4]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x3a; /* ":" */ - } - if(p != scratch) - p--; /* Remove the last ":" */ - - wrote += p - scratch; - return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; -} - -/* - * INTEGER specific human-readable output. - */ -int -INTEGER_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - ssize_t ret; - - (void)td; - (void)ilevel; - - if(!st || !st->buf) - ret = cb("", 8, app_key); - else - ret = INTEGER__dump(td, st, cb, app_key, 0); - - return (ret < 0) ? -1 : 0; -} - -struct e2v_key { - const char *start; - const char *stop; - asn_INTEGER_enum_map_t *vemap; - unsigned int *evmap; -}; -static int -INTEGER__compar_enum2value(const void *kp, const void *am) { - const struct e2v_key *key = (const struct e2v_key *)kp; - const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; - const char *ptr, *end, *name; - - /* Remap the element (sort by different criterion) */ - el = key->vemap + key->evmap[el - key->vemap]; - - /* Compare strings */ - for(ptr = key->start, end = key->stop, name = el->enum_name; - ptr < end; ptr++, name++) { - if(*ptr != *name) - return *(const unsigned char *)ptr - - *(const unsigned char *)name; - } - return name[0] ? -1 : 0; -} - -static const asn_INTEGER_enum_map_t * -INTEGER_map_enum2value(asn_INTEGER_specifics_t *specs, const char *lstart, const char *lstop) { - asn_INTEGER_enum_map_t *el_found; - int count = specs ? specs->map_count : 0; - struct e2v_key key; - const char *lp; - - if(!count) return NULL; - - /* Guaranteed: assert(lstart < lstop); */ - /* Figure out the tag name */ - for(lstart++, lp = lstart; lp < lstop; lp++) { - switch(*lp) { - case 9: - case 10: - case 11: - case 12: - case 13: - case 32: /* WSP */ - case 0x2f: /* '/' */ - case 0x3e: /* '>' */ - break; - default: - continue; - } - break; - } - if(lp == lstop) return NULL; /* No tag found */ - lstop = lp; - - key.start = lstart; - key.stop = lstop; - key.vemap = specs->value2enum; - key.evmap = specs->enum2value; - el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, - specs->value2enum, count, sizeof(specs->value2enum[0]), - INTEGER__compar_enum2value); - if(el_found) { - /* Remap enum2value into value2enum */ - el_found = key.vemap + key.evmap[el_found - key.vemap]; - } - return el_found; -} - -static int -INTEGER__compar_value2enum(const void *kp, const void *am) { - long a = *(const long *)kp; - const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; - long b = el->nat_value; - if(a < b) return -1; - else if(a == b) return 0; - else return 1; -} - -const asn_INTEGER_enum_map_t * -INTEGER_map_value2enum(asn_INTEGER_specifics_t *specs, long value) { - int count = specs ? specs->map_count : 0; - if(!count) return 0; - return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, - count, sizeof(specs->value2enum[0]), - INTEGER__compar_value2enum); -} - -static int -INTEGER_st_prealloc(INTEGER_t *st, int min_size) { - void *p = MALLOC(min_size + 1); - if(p) { - void *b = st->buf; - st->size = 0; - st->buf = p; - FREEMEM(b); - return 0; - } else { - return -1; - } -} - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -static enum xer_pbd_rval -INTEGER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chunk_buf, size_t chunk_size) { - INTEGER_t *st = (INTEGER_t *)sptr; - long sign = 1; - long value; - const char *lp; - const char *lstart = (const char *)chunk_buf; - const char *lstop = lstart + chunk_size; - enum { - ST_SKIPSPACE, - ST_SKIPSPHEX, - ST_WAITDIGITS, - ST_DIGITS, - ST_HEXDIGIT1, - ST_HEXDIGIT2, - ST_HEXCOLON, - ST_EXTRASTUFF - } state = ST_SKIPSPACE; - - if(chunk_size) - ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", - (long)chunk_size, *lstart, lstop[-1]); - - /* - * We may have received a tag here. It will be processed inline. - * Use strtoul()-like code and serialize the result. - */ - for(value = 0, lp = lstart; lp < lstop; lp++) { - int lv = *lp; - switch(lv) { - case 0x09: - case 0x0a: - case 0x0d: - case 0x20: - switch(state) { - case ST_SKIPSPACE: - case ST_SKIPSPHEX: - continue; - case ST_HEXCOLON: - if(xer_is_whitespace(lp, lstop - lp)) { - lp = lstop - 1; - continue; - } - break; - default: - break; - } - break; - case 0x2d: /* '-' */ - if(state == ST_SKIPSPACE) { - sign = -1; - state = ST_WAITDIGITS; - continue; - } - break; - case 0x2b: /* '+' */ - if(state == ST_SKIPSPACE) { - state = ST_WAITDIGITS; - continue; - } - break; - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - switch(state) { - case ST_DIGITS: - break; - case ST_SKIPSPHEX: /* Fall through */ - case ST_HEXDIGIT1: - value = (lv - 0x30) << 4; - state = ST_HEXDIGIT2; - continue; - case ST_HEXDIGIT2: - value += (lv - 0x30); - state = ST_HEXCOLON; - st->buf[st->size++] = (uint8_t)value; - continue; - case ST_HEXCOLON: - return XPBD_BROKEN_ENCODING; - default: - state = ST_DIGITS; - break; - } - - { - long new_value = value * 10; - - if(new_value / 10 != value) - /* Overflow */ - return XPBD_DECODER_LIMIT; - - value = new_value + (lv - 0x30); - /* Check for two's complement overflow */ - if(value < 0) { - /* Check whether it is a LONG_MIN */ - if(sign == -1 - && (unsigned long)value - == ~((unsigned long)-1 >> 1)) { - sign = 1; - } else { - /* Overflow */ - return XPBD_DECODER_LIMIT; - } - } - } - continue; - case 0x3c: /* '<' */ - if(state == ST_SKIPSPACE) { - const asn_INTEGER_enum_map_t *el; - el = INTEGER_map_enum2value( - (asn_INTEGER_specifics_t *) - td->specifics, lstart, lstop); - if(el) { - ASN_DEBUG("Found \"%s\" => %ld", - el->enum_name, el->nat_value); - state = ST_DIGITS; - value = el->nat_value; - lp = lstop - 1; - continue; - } - ASN_DEBUG("Unknown identifier for INTEGER"); - } - return XPBD_BROKEN_ENCODING; - case 0x3a: /* ':' */ - if(state == ST_HEXCOLON) { - /* This colon is expected */ - state = ST_HEXDIGIT1; - continue; - } else if(state == ST_DIGITS) { - /* The colon here means that we have - * decoded the first two hexadecimal - * places as a decimal value. - * Switch decoding mode. */ - ASN_DEBUG("INTEGER re-evaluate as hex form"); - if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) - return XPBD_SYSTEM_FAILURE; - state = ST_SKIPSPHEX; - lp = lstart - 1; - continue; - } else { - ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); - break; - } - /* [A-Fa-f] */ - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - switch(state) { - case ST_SKIPSPHEX: - case ST_SKIPSPACE: /* Fall through */ - case ST_HEXDIGIT1: - value = lv - ((lv < 0x61) ? 0x41 : 0x61); - value += 10; - value <<= 4; - state = ST_HEXDIGIT2; - continue; - case ST_HEXDIGIT2: - value += lv - ((lv < 0x61) ? 0x41 : 0x61); - value += 10; - st->buf[st->size++] = (uint8_t)value; - state = ST_HEXCOLON; - continue; - case ST_DIGITS: - ASN_DEBUG("INTEGER re-evaluate as hex form"); - if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) - return XPBD_SYSTEM_FAILURE; - state = ST_SKIPSPHEX; - lp = lstart - 1; - continue; - default: - break; - } - break; - } - - /* Found extra non-numeric stuff */ - ASN_DEBUG("Found non-numeric 0x%2x at %ld", - lv, (long)(lp - lstart)); - state = ST_EXTRASTUFF; - break; - } - - switch(state) { - case ST_DIGITS: - /* Everything is cool */ - break; - case ST_HEXCOLON: - st->buf[st->size] = 0; /* Just in case termination */ - return XPBD_BODY_CONSUMED; - case ST_HEXDIGIT1: - case ST_HEXDIGIT2: - case ST_SKIPSPHEX: - return XPBD_BROKEN_ENCODING; - default: - if(xer_is_whitespace(lp, lstop - lp)) { - if(state != ST_EXTRASTUFF) - return XPBD_NOT_BODY_IGNORE; - break; - } else { - ASN_DEBUG("INTEGER: No useful digits (state %d)", - state); - return XPBD_BROKEN_ENCODING; /* No digits */ - } - break; - } - - value *= sign; /* Change sign, if needed */ - - if(asn_long2INTEGER(st, value)) - return XPBD_SYSTEM_FAILURE; - - return XPBD_BODY_CONSUMED; -} - -asn_dec_rval_t -INTEGER_decode_xer(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname, - const void *buf_ptr, size_t size) { - - return xer_decode_primitive(opt_codec_ctx, td, - sptr, sizeof(INTEGER_t), opt_mname, - buf_ptr, size, INTEGER__xer_body_decode); -} - -asn_enc_rval_t -INTEGER_encode_xer(asn_TYPE_descriptor_t *td, void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const INTEGER_t *st = (const INTEGER_t *)sptr; - asn_enc_rval_t er; - - (void)ilevel; - (void)flags; - - if(!st || !st->buf) - _ASN_ENCODE_FAILED; - - er.encoded = INTEGER__dump(td, st, cb, app_key, 1); - if(er.encoded < 0) _ASN_ENCODE_FAILED; - - _ASN_ENCODED_OK(er); -} - -asn_dec_rval_t -INTEGER_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - INTEGER_t *st = (INTEGER_t *)*sptr; - asn_per_constraint_t *ct; - int repeat; - - (void)opt_codec_ctx; - - if(!st) { - st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); - if(!st) _ASN_DECODE_FAILED; - } - - if(!constraints) constraints = td->per_constraints; - ct = constraints ? &constraints->value : 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) _ASN_DECODE_STARVED; - if(inext) ct = 0; - } - - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - if(ct) { - if(ct->flags & APC_SEMI_CONSTRAINED) { - st->buf = (uint8_t *)CALLOC(1, 2); - if(!st->buf) _ASN_DECODE_FAILED; - st->size = 1; - } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { - size_t size = (ct->range_bits + 7) >> 3; - st->buf = (uint8_t *)MALLOC(1 + size + 1); - if(!st->buf) _ASN_DECODE_FAILED; - st->size = size; - } - } - - /* X.691, #12.2.2 */ - if(ct && ct->flags != APC_UNCONSTRAINED) { - /* #10.5.6 */ - ASN_DEBUG("Integer with range %d bits", ct->range_bits); - if(ct->range_bits >= 0) { - long value; - if(ct->range_bits == 32) { - long lhalf; - value = per_get_few_bits(pd, 16); - if(value < 0) _ASN_DECODE_STARVED; - lhalf = per_get_few_bits(pd, 16); - if(lhalf < 0) _ASN_DECODE_STARVED; - value = (value << 16) | lhalf; - } else { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) _ASN_DECODE_STARVED; - } - ASN_DEBUG("Got value %ld + low %ld", - value, ct->lower_bound); - value += ct->lower_bound; - if((specs && specs->field_unsigned) - ? asn_ulong2INTEGER(st, value) - : asn_long2INTEGER(st, value)) - _ASN_DECODE_FAILED; - return rval; - } - } else { - ASN_DEBUG("Decoding unconstrained integer %s", td->name); - } - - /* X.691, #12.2.3, #12.2.4 */ - do { - ssize_t len; - void *p; - int ret; - - /* Get the PER length */ - len = uper_get_length(pd, -1, &repeat); - if(len < 0) _ASN_DECODE_STARVED; - - p = REALLOC(st->buf, st->size + len + 1); - if(!p) _ASN_DECODE_FAILED; - st->buf = (uint8_t *)p; - - ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); - if(ret < 0) _ASN_DECODE_STARVED; - st->size += len; - } while(repeat); - st->buf[st->size] = 0; /* JIC */ - - /* #12.2.3 */ - if(ct && ct->lower_bound) { - /* - * TODO: replace by in-place arithmetics. - */ - long value; - if(asn_INTEGER2long(st, &value)) - _ASN_DECODE_FAILED; - if(asn_long2INTEGER(st, value + ct->lower_bound)) - _ASN_DECODE_FAILED; - } - - return rval; -} - -asn_enc_rval_t -INTEGER_encode_uper(asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { - asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er; - INTEGER_t *st = (INTEGER_t *)sptr; - const uint8_t *buf; - const uint8_t *end; - asn_per_constraint_t *ct; - long value = 0; - - if(!st || st->size == 0) _ASN_ENCODE_FAILED; - - if(!constraints) constraints = td->per_constraints; - ct = constraints ? &constraints->value : 0; - - er.encoded = 0; - - if(ct) { - int inext = 0; - if(specs && specs->field_unsigned) { - unsigned long uval; - if(asn_INTEGER2ulong(st, &uval)) - _ASN_ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(uval < (unsigned long)ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(uval < (unsigned long)ct->lower_bound - || uval > (unsigned long)ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %lu (%02x/%d) lb %lu ub %lu %s", - uval, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - value = uval; - } else { - if(asn_INTEGER2long(st, &value)) - _ASN_ENCODE_FAILED; - /* Check proper range */ - if(ct->flags & APC_SEMI_CONSTRAINED) { - if(value < ct->lower_bound) - inext = 1; - } else if(ct->range_bits >= 0) { - if(value < ct->lower_bound - || value > ct->upper_bound) - inext = 1; - } - ASN_DEBUG("Value %ld (%02x/%d) lb %ld ub %ld %s", - value, st->buf[0], st->size, - ct->lower_bound, ct->upper_bound, - inext ? "ext" : "fix"); - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - _ASN_ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - _ASN_ENCODE_FAILED; - } - } - - - /* X.691, #12.2.2 */ - if(ct && ct->range_bits >= 0) { - /* #10.5.6 */ - ASN_DEBUG("Encoding integer with range %d bits", - ct->range_bits); - if(ct->range_bits == 32) { - /* TODO: extend to >32 bits */ - long v = value - ct->lower_bound; - if(per_put_few_bits(po, v >> 1, 31) - || per_put_few_bits(po, v, 1)) - _ASN_ENCODE_FAILED; - } else { - if(per_put_few_bits(po, value - ct->lower_bound, - ct->range_bits)) - _ASN_ENCODE_FAILED; - } - _ASN_ENCODED_OK(er); - } - - if(ct && ct->lower_bound) { - ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); - /* TODO: adjust lower bound */ - _ASN_ENCODE_FAILED; - } - - for(buf = st->buf, end = st->buf + st->size; buf < end;) { - ssize_t mayEncode = uper_put_length(po, end - buf); - if(mayEncode < 0) - _ASN_ENCODE_FAILED; - if(per_put_many_bits(po, buf, 8 * mayEncode)) - _ASN_ENCODE_FAILED; - buf += mayEncode; - } - - _ASN_ENCODED_OK(er); -} - -int -asn_INTEGER2long(const INTEGER_t *iptr, long *lptr) { - uint8_t *b, *end; - size_t size; - long l; - - /* Sanity checking */ - if(!iptr || !iptr->buf || !lptr) { - errno = EINVAL; - return -1; - } - - /* Cache the begin/end of the buffer */ - b = iptr->buf; /* Start of the INTEGER buffer */ - size = iptr->size; - end = b + size; /* Where to stop */ - - if(size > sizeof(long)) { - uint8_t *end1 = end - 1; - /* - * Slightly more advanced processing, - * able to >sizeof(long) bytes, - * when the actual value is small - * (0x0000000000abcdef would yield a fine 0x00abcdef) - */ - /* Skip out the insignificant leading bytes */ - for(; b < end1; b++) { - switch(*b) { - case 0x00: - if((b[1] & 0x80) == 0) continue; - break; - case 0xff: - if((b[1] & 0x80) != 0) continue; - break; - } - break; - } - - size = end - b; - if(size > sizeof(long)) { - /* Still cannot fit the long */ - errno = ERANGE; - return -1; - } - } - - /* Shortcut processing of a corner case */ - if(end == b) { - *lptr = 0; - return 0; - } - - /* Perform the sign initialization */ - /* Actually l = -(*b >> 7); gains nothing, yet unreadable! */ - if((*b >> 7)) l = -1; - else l = 0; - - /* Conversion engine */ - for(; b < end; b++) - l = (l << 8) | *b; - - *lptr = l; - return 0; -} - -int -asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *lptr) { - uint8_t *b, *end; - unsigned long l; - size_t size; - - if(!iptr || !iptr->buf || !lptr) { - errno = EINVAL; - return -1; - } - - b = iptr->buf; - size = iptr->size; - end = b + size; - - /* If all extra leading bytes are zeroes, ignore them */ - for(; size > sizeof(unsigned long); b++, size--) { - if(*b) { - /* Value won't fit unsigned long */ - errno = ERANGE; - return -1; - } - } - - /* Conversion engine */ - for(l = 0; b < end; b++) - l = (l << 8) | *b; - - *lptr = l; - return 0; -} - -int -asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { - uint8_t *buf; - uint8_t *end; - uint8_t *b; - int shr; - - if(value <= LONG_MAX) - return asn_long2INTEGER(st, value); - - buf = (uint8_t *)MALLOC(1 + sizeof(value)); - if(!buf) return -1; - - end = buf + (sizeof(value) + 1); - buf[0] = 0; - for(b = buf + 1, shr = (sizeof(long)-1)*8; b < end; shr -= 8, b++) - *b = (uint8_t)(value >> shr); - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = 1 + sizeof(value); - - return 0; -} - -int -asn_long2INTEGER(INTEGER_t *st, long value) { - uint8_t *buf, *bp; - uint8_t *p; - uint8_t *pstart; - uint8_t *pend1; - int littleEndian = 1; /* Run-time detection */ - int add; - - if(!st) { - errno = EINVAL; - return -1; - } - - buf = (uint8_t *)MALLOC(sizeof(value)); - if(!buf) return -1; - - if(*(char *)&littleEndian) { - pstart = (uint8_t *)&value + sizeof(value) - 1; - pend1 = (uint8_t *)&value; - add = -1; - } else { - pstart = (uint8_t *)&value; - pend1 = pstart + sizeof(value) - 1; - add = 1; - } - - /* - * If the contents octet consists of more than one octet, - * then bits of the first octet and bit 8 of the second octet: - * a) shall not all be ones; and - * b) shall not all be zero. - */ - for(p = pstart; p != pend1; p += add) { - switch(*p) { - case 0x00: - if((*(p+add) & 0x80) == 0) - continue; - break; - case 0xff: - if((*(p+add) & 0x80)) - continue; - break; - } - break; - } - /* Copy the integer body */ - for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) - *bp++ = *p; - - if(st->buf) FREEMEM(st->buf); - st->buf = buf; - st->size = bp - buf; - - return 0; -} diff --git a/src/third_party/asn1/INTEGER.h b/src/third_party/asn1/INTEGER.h deleted file mode 100644 index 8da5b18d..00000000 --- a/src/third_party/asn1/INTEGER.h +++ /dev/null @@ -1,69 +0,0 @@ -/*- - * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _INTEGER_H_ -#define _INTEGER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - typedef ASN__PRIMITIVE_TYPE_t INTEGER_t; - - extern asn_TYPE_descriptor_t asn_DEF_INTEGER; - - /* Map with to integer value association */ - typedef struct asn_INTEGER_enum_map_s { - long nat_value; /* associated native integer value */ - size_t enum_len; /* strlen("tag") */ - const char *enum_name; /* "tag" */ - } asn_INTEGER_enum_map_t; - - /* This type describes an enumeration for INTEGER and ENUMERATED types */ - typedef struct asn_INTEGER_specifics_s { - asn_INTEGER_enum_map_t *value2enum; /* N -> "tag"; sorted by N */ - unsigned int *enum2value; /* "tag" => N; sorted by tag */ - int map_count; /* Elements in either map */ - int extension; /* This map is extensible */ - int strict_enumeration; /* Enumeration set is fixed */ - int field_width; /* Size of native integer */ - int field_unsigned; /* Signed=0, unsigned=1 */ - } asn_INTEGER_specifics_t; - - asn_struct_print_f INTEGER_print; - ber_type_decoder_f INTEGER_decode_ber; - der_type_encoder_f INTEGER_encode_der; - xer_type_decoder_f INTEGER_decode_xer; - xer_type_encoder_f INTEGER_encode_xer; - per_type_decoder_f INTEGER_decode_uper; - per_type_encoder_f INTEGER_encode_uper; - - /*********************************** - * Some handy conversion routines. * - ***********************************/ - - /* - * Returns 0 if it was possible to convert, -1 otherwise. - * -1/EINVAL: Mandatory argument missing - * -1/ERANGE: Value encoded is out of range for long representation - * -1/ENOMEM: Memory allocation failed (in asn_long2INTEGER()). - */ - int asn_INTEGER2long(const INTEGER_t *i, long *l); - int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l); - int asn_long2INTEGER(INTEGER_t *i, long l); - int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l); - - /* - * Convert the integer value into the corresponding enumeration map entry. - */ - const asn_INTEGER_enum_map_t *INTEGER_map_value2enum(asn_INTEGER_specifics_t *specs, long value); - -#ifdef __cplusplus -} -#endif - -#endif /* _INTEGER_H_ */ diff --git a/src/third_party/asn1/Makefile b/src/third_party/asn1/Makefile deleted file mode 100644 index b284b36b..00000000 --- a/src/third_party/asn1/Makefile +++ /dev/null @@ -1,258 +0,0 @@ -ASN_MODULE_SOURCES= \ - PokerTHMessage.c \ - InitMessage.c \ - Version.c \ - AnonymousLogin.c \ - AuthenticatedLogin.c \ - StatisticsLogin.c \ - InitAckMessage.c \ - AvatarRequestMessage.c \ - AvatarReplyMessage.c \ - AvatarHeader.c \ - AvatarData.c \ - AvatarEnd.c \ - UnknownAvatar.c \ - AvatarHash.c \ - NetAvatarType.c \ - GameListMessage.c \ - GameListNew.c \ - GameListUpdate.c \ - GameListPlayerJoined.c \ - GameListPlayerLeft.c \ - GameListAdminChanged.c \ - NetGameMode.c \ - PlayerInfoRequestMessage.c \ - PlayerInfoReplyMessage.c \ - PlayerInfoData.c \ - UnknownPlayerInfo.c \ - SubscriptionRequestMessage.c \ - JoinGameRequestMessage.c \ - JoinExistingGame.c \ - JoinNewGame.c \ - JoinGameReplyMessage.c \ - JoinGameAck.c \ - JoinGameFailed.c \ - NetGameInfo.c \ - GamePlayerMessage.c \ - GamePlayerJoined.c \ - GamePlayerLeft.c \ - GameAdminChanged.c \ - RemovedFromGame.c \ - KickPlayerRequestMessage.c \ - LeaveGameRequestMessage.c \ - StartEventMessage.c \ - StartEventAckMessage.c \ - GameStartMessage.c \ - HandStartMessage.c \ - PlayersTurnMessage.c \ - MyActionRequestMessage.c \ - YourActionRejectedMessage.c \ - PlayersActionDoneMessage.c \ - DealFlopCardsMessage.c \ - DealTurnCardMessage.c \ - DealRiverCardMessage.c \ - AllInShowCardsMessage.c \ - PlayerAllIn.c \ - EndOfHandMessage.c \ - EndOfHandShowCards.c \ - PlayerResult.c \ - EndOfHandHideCards.c \ - EndOfGameMessage.c \ - AskKickPlayerMessage.c \ - AskKickDeniedMessage.c \ - StartKickPetitionMessage.c \ - VoteKickRequestMessage.c \ - VoteKickReplyMessage.c \ - VoteKickAck.c \ - VoteKickDenied.c \ - KickPetitionUpdateMessage.c \ - EndKickPetitionMessage.c \ - StatisticsMessage.c \ - StatisticsData.c \ - ChatRequestMessage.c \ - ChatMessage.c \ - DialogMessage.c \ - TimeoutWarningMessage.c \ - ResetTimeoutMessage.c \ - ErrorMessage.c \ - NetGameState.c \ - NetPlayerAction.c \ - NonZeroId.c \ - Id.c \ - Guid.c \ - Card.c - -ASN_MODULE_HEADERS= \ - PokerTHMessage.h \ - InitMessage.h \ - Version.h \ - AnonymousLogin.h \ - AuthenticatedLogin.h \ - StatisticsLogin.h \ - InitAckMessage.h \ - AvatarRequestMessage.h \ - AvatarReplyMessage.h \ - AvatarHeader.h \ - AvatarData.h \ - AvatarEnd.h \ - UnknownAvatar.h \ - AvatarHash.h \ - NetAvatarType.h \ - GameListMessage.h \ - GameListNew.h \ - GameListUpdate.h \ - GameListPlayerJoined.h \ - GameListPlayerLeft.h \ - GameListAdminChanged.h \ - NetGameMode.h \ - PlayerInfoRequestMessage.h \ - PlayerInfoReplyMessage.h \ - PlayerInfoData.h \ - UnknownPlayerInfo.h \ - SubscriptionRequestMessage.h \ - JoinGameRequestMessage.h \ - JoinExistingGame.h \ - JoinNewGame.h \ - JoinGameReplyMessage.h \ - JoinGameAck.h \ - JoinGameFailed.h \ - NetGameInfo.h \ - GamePlayerMessage.h \ - GamePlayerJoined.h \ - GamePlayerLeft.h \ - GameAdminChanged.h \ - RemovedFromGame.h \ - KickPlayerRequestMessage.h \ - LeaveGameRequestMessage.h \ - StartEventMessage.h \ - StartEventAckMessage.h \ - GameStartMessage.h \ - HandStartMessage.h \ - PlayersTurnMessage.h \ - MyActionRequestMessage.h \ - YourActionRejectedMessage.h \ - PlayersActionDoneMessage.h \ - DealFlopCardsMessage.h \ - DealTurnCardMessage.h \ - DealRiverCardMessage.h \ - AllInShowCardsMessage.h \ - PlayerAllIn.h \ - EndOfHandMessage.h \ - EndOfHandShowCards.h \ - PlayerResult.h \ - EndOfHandHideCards.h \ - EndOfGameMessage.h \ - AskKickPlayerMessage.h \ - AskKickDeniedMessage.h \ - StartKickPetitionMessage.h \ - VoteKickRequestMessage.h \ - VoteKickReplyMessage.h \ - VoteKickAck.h \ - VoteKickDenied.h \ - KickPetitionUpdateMessage.h \ - EndKickPetitionMessage.h \ - StatisticsMessage.h \ - StatisticsData.h \ - ChatRequestMessage.h \ - ChatMessage.h \ - DialogMessage.h \ - TimeoutWarningMessage.h \ - ResetTimeoutMessage.h \ - ErrorMessage.h \ - NetGameState.h \ - NetPlayerAction.h \ - NonZeroId.h \ - Id.h \ - Guid.h \ - Card.h - -ASN_MODULE_HEADERS+=UTF8String.h -ASN_MODULE_HEADERS+=BOOLEAN.h -ASN_MODULE_SOURCES+=BOOLEAN.c -ASN_MODULE_HEADERS+=INTEGER.h -ASN_MODULE_HEADERS+=NativeEnumerated.h -ASN_MODULE_SOURCES+=INTEGER.c -ASN_MODULE_SOURCES+=NativeEnumerated.c -ASN_MODULE_HEADERS+=NativeInteger.h -ASN_MODULE_SOURCES+=NativeInteger.c -ASN_MODULE_SOURCES+=UTF8String.c -ASN_MODULE_HEADERS+=asn_SEQUENCE_OF.h -ASN_MODULE_SOURCES+=asn_SEQUENCE_OF.c -ASN_MODULE_HEADERS+=asn_SET_OF.h -ASN_MODULE_SOURCES+=asn_SET_OF.c -ASN_MODULE_HEADERS+=constr_CHOICE.h -ASN_MODULE_SOURCES+=constr_CHOICE.c -ASN_MODULE_HEADERS+=constr_SEQUENCE.h -ASN_MODULE_SOURCES+=constr_SEQUENCE.c -ASN_MODULE_HEADERS+=constr_SEQUENCE_OF.h -ASN_MODULE_SOURCES+=constr_SEQUENCE_OF.c -ASN_MODULE_HEADERS+=constr_SET_OF.h -ASN_MODULE_SOURCES+=constr_SET_OF.c -ASN_MODULE_HEADERS+=asn_application.h -ASN_MODULE_HEADERS+=asn_system.h -ASN_MODULE_HEADERS+=asn_codecs.h -ASN_MODULE_HEADERS+=asn_internal.h -ASN_MODULE_HEADERS+=OCTET_STRING.h -ASN_MODULE_SOURCES+=OCTET_STRING.c -ASN_MODULE_HEADERS+=BIT_STRING.h -ASN_MODULE_SOURCES+=BIT_STRING.c -ASN_MODULE_SOURCES+=asn_codecs_prim.c -ASN_MODULE_HEADERS+=asn_codecs_prim.h -ASN_MODULE_HEADERS+=ber_tlv_length.h -ASN_MODULE_SOURCES+=ber_tlv_length.c -ASN_MODULE_HEADERS+=ber_tlv_tag.h -ASN_MODULE_SOURCES+=ber_tlv_tag.c -ASN_MODULE_HEADERS+=ber_decoder.h -ASN_MODULE_SOURCES+=ber_decoder.c -ASN_MODULE_HEADERS+=der_encoder.h -ASN_MODULE_SOURCES+=der_encoder.c -ASN_MODULE_HEADERS+=constr_TYPE.h -ASN_MODULE_SOURCES+=constr_TYPE.c -ASN_MODULE_HEADERS+=constraints.h -ASN_MODULE_SOURCES+=constraints.c -ASN_MODULE_HEADERS+=xer_support.h -ASN_MODULE_SOURCES+=xer_support.c -ASN_MODULE_HEADERS+=xer_decoder.h -ASN_MODULE_SOURCES+=xer_decoder.c -ASN_MODULE_HEADERS+=xer_encoder.h -ASN_MODULE_SOURCES+=xer_encoder.c -ASN_MODULE_HEADERS+=per_support.h -ASN_MODULE_SOURCES+=per_support.c -ASN_MODULE_HEADERS+=per_decoder.h -ASN_MODULE_SOURCES+=per_decoder.c -ASN_MODULE_HEADERS+=per_encoder.h -ASN_MODULE_SOURCES+=per_encoder.c -ASN_MODULE_HEADERS+=per_opentype.h -ASN_MODULE_SOURCES+=per_opentype.c -ASN_CONVERTER_SOURCES+=asntest.c - - -lib_LTLIBRARIES=libsomething.la -libsomething_la_SOURCES=$(ASN_MODULE_SOURCES) $(ASN_MODULE_HEADERS) - -# This file may be used as an input for make(3) -# Remove the lines below to convert it into a pure .am file -TARGET = progname -CFLAGS += -I. -OBJS=${ASN_MODULE_SOURCES:.c=.o} ${ASN_CONVERTER_SOURCES:.c=.o} - -all: $(TARGET) - -$(TARGET): ${OBJS} - $(CC) $(CFLAGS) -o $(TARGET) ${OBJS} $(LDFLAGS) $(LIBS) - -.SUFFIXES: -.SUFFIXES: .c .o - -.c.o: - $(CC) $(CFLAGS) -o $@ -c $< - -clean: - rm -f $(TARGET) - rm -f $(OBJS) - -regen: regenerate-from-asn1-source - -regenerate-from-asn1-source: - asn1c -fnative-types ../../../docs/pokerth.asn1 - diff --git a/src/third_party/asn1/NativeEnumerated.c b/src/third_party/asn1/NativeEnumerated.c deleted file mode 100644 index fc33a639..00000000 --- a/src/third_party/asn1/NativeEnumerated.c +++ /dev/null @@ -1,207 +0,0 @@ -/*- - * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Read the NativeInteger.h for the explanation wrt. differences between - * INTEGER and NativeInteger. - * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this - * implementation deals with the standard (machine-specific) representation - * of them instead of using the platform-independent buffer. - */ -#include -#include - -/* - * NativeEnumerated basic type description. - */ -static ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { - "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ - "ENUMERATED", - NativeInteger_free, - NativeInteger_print, - asn_generic_no_constraint, - NativeInteger_decode_ber, - NativeInteger_encode_der, - NativeInteger_decode_xer, - NativeEnumerated_encode_xer, - NativeEnumerated_decode_uper, - NativeEnumerated_encode_uper, - 0, /* Use generic outmost tag fetcher */ - asn_DEF_NativeEnumerated_tags, - sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), - asn_DEF_NativeEnumerated_tags, /* Same as above */ - sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), - 0, /* No PER visible constraints */ - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -asn_enc_rval_t -NativeEnumerated_encode_xer(asn_TYPE_descriptor_t *td, void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er; - const long *native = (const long *)sptr; - const asn_INTEGER_enum_map_t *el; - - (void)ilevel; - (void)flags; - - if(!native) _ASN_ENCODE_FAILED; - - el = INTEGER_map_value2enum(specs, *native); - if(el) { - size_t srcsize = el->enum_len + 5; - char *src = (char *)alloca(srcsize); - - er.encoded = snprintf(src, srcsize, "<%s/>", el->enum_name); - assert(er.encoded > 0 && (size_t)er.encoded < srcsize); - if(cb(src, er.encoded, app_key) < 0) _ASN_ENCODE_FAILED; - _ASN_ENCODED_OK(er); - } else { - ASN_DEBUG("ASN.1 forbids dealing with " - "unknown value of ENUMERATED type"); - _ASN_ENCODE_FAILED; - } -} - -asn_dec_rval_t -NativeEnumerated_decode_uper(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - asn_INTEGER_specifics_t *specs = (asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval = { RC_OK, 0 }; - long *native = (long *)*sptr; - asn_per_constraint_t *ct; - long value; - - (void)opt_codec_ctx; - - if(constraints) ct = &constraints->value; - else if(td->per_constraints) ct = &td->per_constraints->value; - else _ASN_DECODE_FAILED; /* Mandatory! */ - if(!specs) _ASN_DECODE_FAILED; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) _ASN_DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); - - if(ct->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) _ASN_DECODE_STARVED; - if(inext) ct = 0; - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) _ASN_DECODE_STARVED; - if(value >= (specs->extension - ? specs->extension - 1 : specs->map_count)) - _ASN_DECODE_FAILED; - } else { - if(!specs->extension) - _ASN_DECODE_FAILED; - /* - * X.691, #10.6: normally small non-negative whole number; - */ - value = uper_get_nsnnwn(pd); - if(value < 0) _ASN_DECODE_STARVED; - value += specs->extension - 1; - if(value >= specs->map_count) - _ASN_DECODE_FAILED; - } - - *native = specs->value2enum[value].nat_value; - ASN_DEBUG("Decoded %s = %ld", td->name, *native); - - return rval; -} - -static int -NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { - const asn_INTEGER_enum_map_t *a = ap; - const asn_INTEGER_enum_map_t *b = bp; - if(a->nat_value == b->nat_value) - return 0; - if(a->nat_value < b->nat_value) - return -1; - return 1; -} - -asn_enc_rval_t -NativeEnumerated_encode_uper(asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { - asn_INTEGER_specifics_t *specs = (asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er; - long native, value; - asn_per_constraint_t *ct; - int inext = 0; - asn_INTEGER_enum_map_t key; - asn_INTEGER_enum_map_t *kf; - - if(!sptr) _ASN_ENCODE_FAILED; - if(!specs) _ASN_ENCODE_FAILED; - - if(constraints) ct = &constraints->value; - else if(td->per_constraints) ct = &td->per_constraints->value; - else _ASN_ENCODE_FAILED; /* Mandatory! */ - - ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); - - er.encoded = 0; - - native = *(long *)sptr; - if(native < 0) _ASN_ENCODE_FAILED; - - key.nat_value = native; - kf = bsearch(&key, specs->value2enum, specs->map_count, - sizeof(key), NativeEnumerated__compar_value2enum); - if(!kf) { - ASN_DEBUG("No element corresponds to %ld", native); - _ASN_ENCODE_FAILED; - } - value = kf - specs->value2enum; - - if(ct->range_bits >= 0) { - int cmpWith = specs->extension - ? specs->extension - 1 : specs->map_count; - if(value >= cmpWith) - inext = 1; - } - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, inext, 1)) - _ASN_ENCODE_FAILED; - if(inext) ct = 0; - } else if(inext) { - _ASN_ENCODE_FAILED; - } - - if(ct && ct->range_bits >= 0) { - if(per_put_few_bits(po, value, ct->range_bits)) - _ASN_ENCODE_FAILED; - _ASN_ENCODED_OK(er); - } - - if(!specs->extension) - _ASN_ENCODE_FAILED; - - /* - * X.691, #10.6: normally small non-negative whole number; - */ - ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", - value, specs->extension, inext, - value - (inext ? (specs->extension - 1) : 0)); - if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) - _ASN_ENCODE_FAILED; - - _ASN_ENCODED_OK(er); -} - diff --git a/src/third_party/asn1/NativeEnumerated.h b/src/third_party/asn1/NativeEnumerated.h deleted file mode 100644 index 404d31d0..00000000 --- a/src/third_party/asn1/NativeEnumerated.h +++ /dev/null @@ -1,32 +0,0 @@ -/*- - * Copyright (c) 2004, 2005, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * This type differs from the standard ENUMERATED in that it is modelled using - * the fixed machine type (long, int, short), so it can hold only values of - * limited length. There is no type (i.e., NativeEnumerated_t, any integer type - * will do). - * This type may be used when integer range is limited by subtype constraints. - */ -#ifndef _NativeEnumerated_H_ -#define _NativeEnumerated_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated; - - xer_type_encoder_f NativeEnumerated_encode_xer; - per_type_decoder_f NativeEnumerated_decode_uper; - per_type_encoder_f NativeEnumerated_encode_uper; - -#ifdef __cplusplus -} -#endif - -#endif /* _NativeEnumerated_H_ */ diff --git a/src/third_party/asn1/NativeInteger.c b/src/third_party/asn1/NativeInteger.c deleted file mode 100644 index 5b66332f..00000000 --- a/src/third_party/asn1/NativeInteger.c +++ /dev/null @@ -1,332 +0,0 @@ -/*- - * Copyright (c) 2004, 2005, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Read the NativeInteger.h for the explanation wrt. differences between - * INTEGER and NativeInteger. - * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this - * implementation deals with the standard (machine-specific) representation - * of them instead of using the platform-independent buffer. - */ -#include -#include - -/* - * NativeInteger basic type description. - */ -static ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) -}; -asn_TYPE_descriptor_t asn_DEF_NativeInteger = { - "INTEGER", /* The ASN.1 type is still INTEGER */ - "INTEGER", - NativeInteger_free, - NativeInteger_print, - asn_generic_no_constraint, - NativeInteger_decode_ber, - NativeInteger_encode_der, - NativeInteger_decode_xer, - NativeInteger_encode_xer, - NativeInteger_decode_uper, /* Unaligned PER decoder */ - NativeInteger_encode_uper, /* Unaligned PER encoder */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_NativeInteger_tags, - sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), - asn_DEF_NativeInteger_tags, /* Same as above */ - sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), - 0, /* No PER visible constraints */ - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * Decode INTEGER type. - */ -asn_dec_rval_t -NativeInteger_decode_ber(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, - void **nint_ptr, const void *buf_ptr, size_t size, int tag_mode) { - asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; - long *native = (long *)*nint_ptr; - asn_dec_rval_t rval; - ber_tlv_len_t length; - - /* - * If the structure is not there, allocate it. - */ - if(native == NULL) { - native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); - if(native == NULL) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - } - - ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", - td->name, tag_mode); - - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("%s length is %d bytes", td->name, (int)length); - - /* - * Make sure we have this length. - */ - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - /* - * ASN.1 encoded INTEGER: buf_ptr, length - * Fill the native, at the same time checking for overflow. - * If overflow occured, return with RC_FAIL. - */ - { - INTEGER_t tmp; - union { - const void *constbuf; - void *nonconstbuf; - } unconst_buf; - long l; - - unconst_buf.constbuf = buf_ptr; - tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; - tmp.size = length; - - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ - : asn_INTEGER2long(&tmp, &l)) { - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; - } - - *native = l; - } - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", - (long)rval.consumed, (long)length, td->name, (long)*native); - - return rval; -} - -/* - * Encode the NativeInteger using the standard INTEGER type DER encoder. - */ -asn_enc_rval_t -NativeInteger_encode_der(asn_TYPE_descriptor_t *sd, void *ptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - unsigned long native = *(unsigned long *)ptr; /* Disable sign ext. */ - asn_enc_rval_t erval; - INTEGER_t tmp; - -#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ - - tmp.buf = (uint8_t *)&native; - tmp.size = sizeof(native); - -#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ - uint8_t buf[sizeof(native)]; - uint8_t *p; - - /* Prepare a fake INTEGER */ - for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) - *p = (uint8_t)native; - - tmp.buf = buf; - tmp.size = sizeof(buf); -#endif /* WORDS_BIGENDIAN */ - - /* Encode fake INTEGER */ - erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); - if(erval.encoded == -1) { - assert(erval.structure_ptr == &tmp); - erval.structure_ptr = ptr; - } - return erval; -} - -/* - * Decode the chunk of XML text encoding INTEGER. - */ -asn_dec_rval_t -NativeInteger_decode_xer(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname, - const void *buf_ptr, size_t size) { - asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - INTEGER_t st; - void *st_ptr = (void *)&st; - long *native = (long *)*sptr; - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) _ASN_DECODE_FAILED; - } - - memset(&st, 0, sizeof(st)); - rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, - opt_mname, buf_ptr, size); - if(rval.code == RC_OK) { - long l; - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ - : asn_INTEGER2long(&st, &l)) { - rval.code = RC_FAIL; - rval.consumed = 0; - } else { - *native = l; - } - } else { - /* - * Cannot restart from the middle; - * there is no place to save state in the native type. - * Request a continuation from the very beginning. - */ - rval.consumed = 0; - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); - return rval; -} - - -asn_enc_rval_t -NativeInteger_encode_xer(asn_TYPE_descriptor_t *td, void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; - char scratch[32]; /* Enough for 64-bit int */ - asn_enc_rval_t er; - const long *native = (const long *)sptr; - - (void)ilevel; - (void)flags; - - if(!native) _ASN_ENCODE_FAILED; - - er.encoded = snprintf(scratch, sizeof(scratch), - (specs && specs->field_unsigned) - ? "%lu" : "%ld", *native); - if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) - || cb(scratch, er.encoded, app_key) < 0) - _ASN_ENCODE_FAILED; - - _ASN_ENCODED_OK(er); -} - -asn_dec_rval_t -NativeInteger_decode_uper(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - - asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; - asn_dec_rval_t rval; - long *native = (long *)*sptr; - INTEGER_t tmpint; - void *tmpintptr = &tmpint; - - (void)opt_codec_ctx; - ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); - - if(!native) { - native = (long *)(*sptr = CALLOC(1, sizeof(*native))); - if(!native) _ASN_DECODE_FAILED; - } - - memset(&tmpint, 0, sizeof tmpint); - rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, - &tmpintptr, pd); - if(rval.code == RC_OK) { - if((specs&&specs->field_unsigned) - ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) - : asn_INTEGER2long(&tmpint, native)) - rval.code = RC_FAIL; - else - ASN_DEBUG("NativeInteger %s got value %ld", - td->name, *native); - } - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - - return rval; -} - -asn_enc_rval_t -NativeInteger_encode_uper(asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { - asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; - asn_enc_rval_t er; - long native; - INTEGER_t tmpint; - - if(!sptr) _ASN_ENCODE_FAILED; - - native = *(long *)sptr; - - ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); - - memset(&tmpint, 0, sizeof(tmpint)); - if((specs&&specs->field_unsigned) - ? asn_ulong2INTEGER(&tmpint, native) - : asn_long2INTEGER(&tmpint, native)) - _ASN_ENCODE_FAILED; - er = INTEGER_encode_uper(td, constraints, &tmpint, po); - ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); - return er; -} - -/* - * INTEGER specific human-readable output. - */ -int -NativeInteger_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_INTEGER_specifics_t *specs=(asn_INTEGER_specifics_t *)td->specifics; - const long *native = (const long *)sptr; - char scratch[32]; /* Enough for 64-bit int */ - int ret; - - (void)td; /* Unused argument */ - (void)ilevel; /* Unused argument */ - - if(native) { - ret = snprintf(scratch, sizeof(scratch), - (specs && specs->field_unsigned) - ? "%lu" : "%ld", *native); - assert(ret > 0 && (size_t)ret < sizeof(scratch)); - return (cb(scratch, ret, app_key) < 0) ? -1 : 0; - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -NativeInteger_free(asn_TYPE_descriptor_t *td, void *ptr, int contents_only) { - - if(!td || !ptr) - return; - - ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", - td->name, contents_only, ptr); - - if(!contents_only) { - FREEMEM(ptr); - } -} - diff --git a/src/third_party/asn1/NativeInteger.h b/src/third_party/asn1/NativeInteger.h deleted file mode 100644 index a559b9b9..00000000 --- a/src/third_party/asn1/NativeInteger.h +++ /dev/null @@ -1,37 +0,0 @@ -/*- - * Copyright (c) 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * This type differs from the standard INTEGER in that it is modelled using - * the fixed machine type (long, int, short), so it can hold only values of - * limited length. There is no type (i.e., NativeInteger_t, any integer type - * will do). - * This type may be used when integer range is limited by subtype constraints. - */ -#ifndef _NativeInteger_H_ -#define _NativeInteger_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - extern asn_TYPE_descriptor_t asn_DEF_NativeInteger; - - asn_struct_free_f NativeInteger_free; - asn_struct_print_f NativeInteger_print; - ber_type_decoder_f NativeInteger_decode_ber; - der_type_encoder_f NativeInteger_encode_der; - xer_type_decoder_f NativeInteger_decode_xer; - xer_type_encoder_f NativeInteger_encode_xer; - per_type_decoder_f NativeInteger_decode_uper; - per_type_encoder_f NativeInteger_encode_uper; - -#ifdef __cplusplus -} -#endif - -#endif /* _NativeInteger_H_ */ diff --git a/src/third_party/asn1/OCTET_STRING.c b/src/third_party/asn1/OCTET_STRING.c deleted file mode 100644 index aef5624b..00000000 --- a/src/third_party/asn1/OCTET_STRING.c +++ /dev/null @@ -1,1882 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2005, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* for .bits_unused member */ -#include - -/* - * OCTET STRING basic type description. - */ -static ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -static asn_OCTET_STRING_specifics_t asn_DEF_OCTET_STRING_specs = { - sizeof(OCTET_STRING_t), - offsetof(OCTET_STRING_t, _asn_ctx), - ASN_OSUBV_STR -}; -static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { - { APC_CONSTRAINED, 8, 8, 0, 255 }, - { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, - 0, 0 -}; -asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { - "OCTET STRING", /* Canonical name */ - "OCTET_STRING", /* XML tag name */ - OCTET_STRING_free, - OCTET_STRING_print, /* non-ascii stuff, generally */ - asn_generic_no_constraint, - OCTET_STRING_decode_ber, - OCTET_STRING_encode_der, - OCTET_STRING_decode_xer_hex, - OCTET_STRING_encode_xer, - OCTET_STRING_decode_uper, /* Unaligned PER decoder */ - OCTET_STRING_encode_uper, /* Unaligned PER encoder */ - 0, /* Use generic outmost tag fetcher */ - asn_DEF_OCTET_STRING_tags, - sizeof(asn_DEF_OCTET_STRING_tags) - / sizeof(asn_DEF_OCTET_STRING_tags[0]), - asn_DEF_OCTET_STRING_tags, /* Same as above */ - sizeof(asn_DEF_OCTET_STRING_tags) - / sizeof(asn_DEF_OCTET_STRING_tags[0]), - 0, /* No PER visible constraints */ - 0, 0, /* No members */ - &asn_DEF_OCTET_STRING_specs -}; - -#undef _CH_PHASE -#undef NEXT_PHASE -#undef PREV_PHASE -#define _CH_PHASE(ctx, inc) do { \ - if(ctx->phase == 0) \ - ctx->context = 0; \ - ctx->phase += inc; \ - } while(0) -#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) -#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = (num_bytes); \ - buf_ptr = ((const char *)buf_ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -#undef RETURN -#define RETURN(_code) do { \ - asn_dec_rval_t tmprval; \ - tmprval.code = _code; \ - tmprval.consumed = consumed_myself; \ - return tmprval; \ - } while(0) - -#undef APPEND -#define APPEND(bufptr, bufsize) do { \ - size_t _bs = (bufsize); /* Append size */ \ - size_t _ns = ctx->context; /* Allocated now */ \ - size_t _es = st->size + _bs; /* Expected size */ \ - /* int is really a typeof(st->size): */ \ - if((int)_es < 0) RETURN(RC_FAIL); \ - if(_ns <= _es) { \ - void *ptr; \ - /* Be nice and round to the memory allocator */ \ - do { _ns = _ns ? _ns << 1 : 16; } \ - while(_ns <= _es); \ - /* int is really a typeof(st->size): */ \ - if((int)_ns < 0) RETURN(RC_FAIL); \ - ptr = REALLOC(st->buf, _ns); \ - if(ptr) { \ - st->buf = (uint8_t *)ptr; \ - ctx->context = _ns; \ - } else { \ - RETURN(RC_FAIL); \ - } \ - ASN_DEBUG("Reallocating into %ld", (long)_ns); \ - } \ - memcpy(st->buf + st->size, bufptr, _bs); \ - /* Convenient nul-termination */ \ - st->buf[_es] = '\0'; \ - st->size = _es; \ - } while(0) - -/* - * The main reason why ASN.1 is still alive is that too much time and effort - * is necessary for learning it more or less adequately, thus creating a gut - * necessity to demonstrate that aquired skill everywhere afterwards. - * No, I am not going to explain what the following stuff is. - */ -struct _stack_el { - ber_tlv_len_t left; /* What's left to read (or -1) */ - ber_tlv_len_t got; /* What was actually processed */ - int cont_level; /* Depth of subcontainment */ - int want_nulls; /* Want null "end of content" octets? */ - int bits_chopped; /* Flag in BIT STRING mode */ - ber_tlv_tag_t tag; /* For debugging purposes */ - struct _stack_el *prev; - struct _stack_el *next; -}; -struct _stack { - struct _stack_el *tail; - struct _stack_el *cur_ptr; -}; - -static struct _stack_el * -OS__add_stack_el(struct _stack *st) { - struct _stack_el *nel; - - /* - * Reuse the old stack frame or allocate a new one. - */ - if(st->cur_ptr && st->cur_ptr->next) { - nel = st->cur_ptr->next; - nel->bits_chopped = 0; - nel->got = 0; - /* Retain the nel->cont_level, it's correct. */ - } else { - nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); - if(nel == NULL) - return NULL; - - if(st->tail) { - /* Increase a subcontainment depth */ - nel->cont_level = st->tail->cont_level + 1; - st->tail->next = nel; - } - nel->prev = st->tail; - st->tail = nel; - } - - st->cur_ptr = nel; - - return nel; -} - -static struct _stack * -_new_stack() { - return (struct _stack *)CALLOC(1, sizeof(struct _stack)); -} - -/* - * Decode OCTET STRING type. - */ -asn_dec_rval_t -OCTET_STRING_decode_ber(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, - void **sptr, const void *buf_ptr, size_t size, int tag_mode) { - asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_DEF_OCTET_STRING_specs; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - asn_dec_rval_t rval; - asn_struct_ctx_t *ctx; - ssize_t consumed_myself = 0; - struct _stack *stck; /* Expectations stack structure */ - struct _stack_el *sel = 0; /* Stack element */ - int tlv_constr; - enum asn_OS_Subvariant type_variant = specs->subvariant; - - ASN_DEBUG("Decoding %s as %s (frame %ld)", - td->name, - (type_variant == ASN_OSUBV_STR) ? - "OCTET STRING" : "OS-SpecialCase", - (long)size); - - /* - * Create the string if does not exist. - */ - if(st == NULL) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(st == NULL) RETURN(RC_FAIL); - } - - /* Restore parsing context */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - switch(ctx->phase) { - case 0: - /* - * Check tags. - */ - rval = ber_check_tags(opt_codec_ctx, td, ctx, - buf_ptr, size, tag_mode, -1, - &ctx->left, &tlv_constr); - if(rval.code != RC_OK) - return rval; - - if(tlv_constr) { - /* - * Complex operation, requires stack of expectations. - */ - ctx->ptr = _new_stack(); - if(ctx->ptr) { - stck = (struct _stack *)ctx->ptr; - } else { - RETURN(RC_FAIL); - } - } else { - /* - * Jump into stackless primitive decoding. - */ - _CH_PHASE(ctx, 3); - if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) - APPEND(buf_ptr, rval.consumed); - ADVANCE(rval.consumed); - goto phase3; - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 1: -phase1: - /* - * Fill the stack with expectations. - */ - stck = (struct _stack *)ctx->ptr; - sel = stck->cur_ptr; - do { - ber_tlv_tag_t tlv_tag; - ber_tlv_len_t tlv_len; - ber_tlv_tag_t expected_tag; - ssize_t tl, ll, tlvl; - /* This one works even if (sel->left == -1) */ - ssize_t Left = ((!sel||(size_t)sel->left >= size) - ?(ssize_t)size:sel->left); - - - ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", sel, - (long)(sel?sel->left:0), - (long)(sel?sel->want_nulls:0), - (long)(sel?sel->got:0) - ); - if(sel && sel->left <= 0 && sel->want_nulls == 0) { - if(sel->prev) { - struct _stack_el *prev = sel->prev; - if(prev->left != -1) { - if(prev->left < sel->got) - RETURN(RC_FAIL); - prev->left -= sel->got; - } - prev->got += sel->got; - sel = stck->cur_ptr = prev; - if(!sel) break; - tlv_constr = 1; - continue; - } else { - sel = stck->cur_ptr = 0; - break; /* Nothing to wait */ - } - } - - tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); - ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", - (long)size, (long)Left, sel?"":"!", - (long)(sel?sel->left:0), - (long)(sel?sel->want_nulls:0), - (long)tl); - switch(tl) { - case -1: - RETURN(RC_FAIL); - case 0: - RETURN(RC_WMORE); - } - - tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); - - ll = ber_fetch_length(tlv_constr, - (const char *)buf_ptr + tl,Left - tl,&tlv_len); - ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", - ber_tlv_tag_string(tlv_tag), tlv_constr, - (long)Left, (long)tl, (long)tlv_len, (long)ll); - switch(ll) { - case -1: - RETURN(RC_FAIL); - case 0: - RETURN(RC_WMORE); - } - - if(sel && sel->want_nulls - && ((const uint8_t *)buf_ptr)[0] == 0 - && ((const uint8_t *)buf_ptr)[1] == 0) - { - - ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); - - if(type_variant == ASN_OSUBV_ANY - && (tag_mode != 1 || sel->cont_level)) - APPEND("\0\0", 2); - - ADVANCE(2); - sel->got += 2; - if(sel->left != -1) { - sel->left -= 2; /* assert(sel->left >= 2) */ - } - - sel->want_nulls--; - if(sel->want_nulls == 0) { - /* Move to the next expectation */ - sel->left = 0; - tlv_constr = 1; - } - - continue; - } - - /* - * Set up expected tags, - * depending on ASN.1 type being decoded. - */ - switch(type_variant) { - case ASN_OSUBV_BIT: - /* X.690: 8.6.4.1, NOTE 2 */ - /* Fall through */ - case ASN_OSUBV_STR: - default: - if(sel) { - int level = sel->cont_level; - if(level < td->all_tags_count) { - expected_tag = td->all_tags[level]; - break; - } else if(td->all_tags_count) { - expected_tag = td->all_tags - [td->all_tags_count - 1]; - break; - } - /* else, Fall through */ - } - /* Fall through */ - case ASN_OSUBV_ANY: - expected_tag = tlv_tag; - break; - } - - - if(tlv_tag != expected_tag) { - char buf[2][32]; - ber_tlv_tag_snprint(tlv_tag, - buf[0], sizeof(buf[0])); - ber_tlv_tag_snprint(td->tags[td->tags_count-1], - buf[1], sizeof(buf[1])); - ASN_DEBUG("Tag does not match expectation: %s != %s", - buf[0], buf[1]); - RETURN(RC_FAIL); - } - - tlvl = tl + ll; /* Combined length of T and L encoding */ - if((tlv_len + tlvl) < 0) { - /* tlv_len value is too big */ - ASN_DEBUG("TLV encoding + length (%ld) is too big", - (long)tlv_len); - RETURN(RC_FAIL); - } - - /* - * Append a new expectation. - */ - sel = OS__add_stack_el(stck); - if(!sel) RETURN(RC_FAIL); - - sel->tag = tlv_tag; - - sel->want_nulls = (tlv_len==-1); - if(sel->prev && sel->prev->left != -1) { - /* Check that the parent frame is big enough */ - if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) - RETURN(RC_FAIL); - if(tlv_len == -1) - sel->left = sel->prev->left - tlvl; - else - sel->left = tlv_len; - } else { - sel->left = tlv_len; - } - if(type_variant == ASN_OSUBV_ANY - && (tag_mode != 1 || sel->cont_level)) - APPEND(buf_ptr, tlvl); - sel->got += tlvl; - ADVANCE(tlvl); - - ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%d", - (long)sel->got, (long)sel->left, - sel->want_nulls, sel->cont_level); - - } while(tlv_constr); - if(sel == NULL) { - /* Finished operation, "phase out" */ - ASN_DEBUG("Phase out"); - _CH_PHASE(ctx, +3); - break; - } - - NEXT_PHASE(ctx); - /* Fall through */ - case 2: - stck = (struct _stack *)ctx->ptr; - sel = stck->cur_ptr; - ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", - (long)sel->left, (long)size, (long)sel->got, - sel->want_nulls); - { - ber_tlv_len_t len; - - assert(sel->left >= 0); - - len = ((ber_tlv_len_t)size < sel->left) - ? (ber_tlv_len_t)size : sel->left; - if(len > 0) { - if(type_variant == ASN_OSUBV_BIT - && sel->bits_chopped == 0) { - /* Put the unused-bits-octet away */ - st->bits_unused = *(const uint8_t *)buf_ptr; - APPEND(((const char *)buf_ptr+1), (len - 1)); - sel->bits_chopped = 1; - } else { - APPEND(buf_ptr, len); - } - ADVANCE(len); - sel->left -= len; - sel->got += len; - } - - if(sel->left) { - ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", - (long)sel->left, (long)size, sel->want_nulls); - RETURN(RC_WMORE); - } - - PREV_PHASE(ctx); - goto phase1; - } - break; - case 3: -phase3: - /* - * Primitive form, no stack required. - */ - assert(ctx->left >= 0); - - if(size < (size_t)ctx->left) { - if(!size) RETURN(RC_WMORE); - if(type_variant == ASN_OSUBV_BIT && !ctx->context) { - st->bits_unused = *(const uint8_t *)buf_ptr; - ctx->left--; - ADVANCE(1); - } - APPEND(buf_ptr, size); - assert(ctx->context > 0); - ctx->left -= size; - ADVANCE(size); - RETURN(RC_WMORE); - } else { - if(type_variant == ASN_OSUBV_BIT - && !ctx->context && ctx->left) { - st->bits_unused = *(const uint8_t *)buf_ptr; - ctx->left--; - ADVANCE(1); - } - APPEND(buf_ptr, ctx->left); - ADVANCE(ctx->left); - ctx->left = 0; - - NEXT_PHASE(ctx); - } - break; - } - - if(sel) { - ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", - sel->prev, sel->want_nulls, - (long)sel->left, (long)sel->got, (long)size); - if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { - RETURN(RC_WMORE); - } - } - - /* - * BIT STRING-specific processing. - */ - if(type_variant == ASN_OSUBV_BIT && st->size) { - /* Finalize BIT STRING: zero out unused bits. */ - st->buf[st->size-1] &= 0xff << st->bits_unused; - } - - ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", - (long)consumed_myself, td->name, - (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", - (long)st->size); - - - RETURN(RC_OK); -} - -/* - * Encode OCTET STRING type using DER. - */ -asn_enc_rval_t -OCTET_STRING_encode_der(asn_TYPE_descriptor_t *td, void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er; - asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_DEF_OCTET_STRING_specs; - BIT_STRING_t *st = (BIT_STRING_t *)sptr; - enum asn_OS_Subvariant type_variant = specs->subvariant; - int fix_last_byte = 0; - - ASN_DEBUG("%s %s as OCTET STRING", - cb?"Estimating":"Encoding", td->name); - - /* - * Write tags. - */ - if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { - er.encoded = der_write_tags(td, - (type_variant == ASN_OSUBV_BIT) + st->size, - tag_mode, type_variant == ASN_OSUBV_ANY, tag, - cb, app_key); - if(er.encoded == -1) { - er.failed_type = td; - er.structure_ptr = sptr; - return er; - } - } else { - /* Disallow: [] IMPLICIT ANY */ - assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); - er.encoded = 0; - } - - if(!cb) { - er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; - _ASN_ENCODED_OK(er); - } - - /* - * Prepare to deal with the last octet of BIT STRING. - */ - if(type_variant == ASN_OSUBV_BIT) { - uint8_t b = st->bits_unused & 0x07; - if(b && st->size) fix_last_byte = 1; - _ASN_CALLBACK(&b, 1); - er.encoded++; - } - - /* Invoke callback for the main part of the buffer */ - _ASN_CALLBACK(st->buf, st->size - fix_last_byte); - - /* The last octet should be stripped off the unused bits */ - if(fix_last_byte) { - uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); - _ASN_CALLBACK(&b, 1); - } - - er.encoded += st->size; - _ASN_ENCODED_OK(er); -cb_failed: - _ASN_ENCODE_FAILED; -} - -asn_enc_rval_t -OCTET_STRING_encode_xer(asn_TYPE_descriptor_t *td, void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - static const char *h2c = "0123456789ABCDEF"; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er; - char scratch[16 * 3 + 4]; - char *p = scratch; - uint8_t *buf; - uint8_t *end; - size_t i; - - if(!st || (!st->buf && st->size)) - _ASN_ENCODE_FAILED; - - er.encoded = 0; - - /* - * Dump the contents of the buffer in hexadecimal. - */ - buf = st->buf; - end = buf + st->size; - if(flags & XER_F_CANONICAL) { - char *scend = scratch + (sizeof(scratch) - 2); - for(; buf < end; buf++) { - if(p >= scend) { - _ASN_CALLBACK(scratch, p - scratch); - er.encoded += p - scratch; - p = scratch; - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - } - - _ASN_CALLBACK(scratch, p-scratch); /* Dump the rest */ - er.encoded += p - scratch; - } else { - for(i = 0; buf < end; buf++, i++) { - if(!(i % 16) && (i || st->size > 16)) { - _ASN_CALLBACK(scratch, p-scratch); - er.encoded += (p-scratch); - p = scratch; - _i_ASN_TEXT_INDENT(1, ilevel); - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - if(p - scratch) { - p--; /* Remove the tail space */ - _ASN_CALLBACK(scratch, p-scratch); /* Dump the rest */ - er.encoded += p - scratch; - if(st->size > 16) - _i_ASN_TEXT_INDENT(1, ilevel-1); - } - } - - _ASN_ENCODED_OK(er); -cb_failed: - _ASN_ENCODE_FAILED; -} - -static struct OCTET_STRING__xer_escape_table_s { - char *string; - int size; -} OCTET_STRING__xer_escape_table[] = { -#define OSXET(s) { s, sizeof(s) - 1 } - OSXET("\074\156\165\154\057\076"), /* */ - OSXET("\074\163\157\150\057\076"), /* */ - OSXET("\074\163\164\170\057\076"), /* */ - OSXET("\074\145\164\170\057\076"), /* */ - OSXET("\074\145\157\164\057\076"), /* */ - OSXET("\074\145\156\161\057\076"), /* */ - OSXET("\074\141\143\153\057\076"), /* */ - OSXET("\074\142\145\154\057\076"), /* */ - OSXET("\074\142\163\057\076"), /* */ - OSXET("\011"), /* \t */ - OSXET("\012"), /* \n */ - OSXET("\074\166\164\057\076"), /* */ - OSXET("\074\146\146\057\076"), /* */ - OSXET("\015"), /* \r */ - OSXET("\074\163\157\057\076"), /* */ - OSXET("\074\163\151\057\076"), /* */ - OSXET("\074\144\154\145\057\076"), /* */ - OSXET("\074\144\143\061\057\076"), /* */ - OSXET("\074\144\143\062\057\076"), /* */ - OSXET("\074\144\143\063\057\076"), /* */ - OSXET("\074\144\143\064\057\076"), /* */ - OSXET("\074\156\141\153\057\076"), /* */ - OSXET("\074\163\171\156\057\076"), /* */ - OSXET("\074\145\164\142\057\076"), /* */ - OSXET("\074\143\141\156\057\076"), /* */ - OSXET("\074\145\155\057\076"), /* */ - OSXET("\074\163\165\142\057\076"), /* */ - OSXET("\074\145\163\143\057\076"), /* */ - OSXET("\074\151\163\064\057\076"), /* */ - OSXET("\074\151\163\063\057\076"), /* */ - OSXET("\074\151\163\062\057\076"), /* */ - OSXET("\074\151\163\061\057\076"), /* */ - { 0, 0 }, /* " " */ - { 0, 0 }, /* ! */ - { 0, 0 }, /* \" */ - { 0, 0 }, /* # */ - { 0, 0 }, /* $ */ - { 0, 0 }, /* % */ - OSXET("\046\141\155\160\073"), /* & */ - { 0, 0 }, /* ' */ - {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ - {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ - {0,0},{0,0},{0,0},{0,0}, /* 89:; */ - OSXET("\046\154\164\073"), /* < */ - { 0, 0 }, /* = */ - OSXET("\046\147\164\073"), /* > */ -}; - -static int -OS__check_escaped_control_char(const void *buf, int size) { - size_t i; - /* - * Inefficient algorithm which translates the escape sequences - * defined above into characters. Returns -1 if not found. - * TODO: replace by a faster algorithm (bsearch(), hash or - * nested table lookups). - */ - for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { - struct OCTET_STRING__xer_escape_table_s *el; - el = &OCTET_STRING__xer_escape_table[i]; - if(el->size == size && memcmp(buf, el->string, size) == 0) - return i; - } - return -1; -} - -static int -OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { - /* - * This might be one of the escape sequences - * for control characters. Check it out. - * #11.15.5 - */ - int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); - if(control_char >= 0) { - OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; - void *p = REALLOC(st->buf, st->size + 2); - if(p) { - st->buf = (uint8_t *)p; - st->buf[st->size++] = control_char; - st->buf[st->size] = '\0'; /* nul-termination */ - return 0; - } - } - - return -1; /* No, it's not */ -} - -asn_enc_rval_t -OCTET_STRING_encode_xer_utf8(asn_TYPE_descriptor_t *td, void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - asn_enc_rval_t er; - uint8_t *buf, *end; - uint8_t *ss; /* Sequence start */ - ssize_t encoded_len = 0; - - (void)ilevel; /* Unused argument */ - (void)flags; /* Unused argument */ - - if(!st || (!st->buf && st->size)) - _ASN_ENCODE_FAILED; - - buf = st->buf; - end = buf + st->size; - for(ss = buf; buf < end; buf++) { - unsigned int ch = *buf; - int s_len; /* Special encoding sequence length */ - - /* - * Escape certain characters: X.680/11.15 - */ - if(ch < sizeof(OCTET_STRING__xer_escape_table) - /sizeof(OCTET_STRING__xer_escape_table[0]) - && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { - if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) - || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, - app_key) < 0) - _ASN_ENCODE_FAILED; - encoded_len += (buf - ss) + s_len; - ss = buf + 1; - } - } - - encoded_len += (buf - ss); - if((buf - ss) && cb(ss, buf - ss, app_key) < 0) - _ASN_ENCODE_FAILED; - - er.encoded = encoded_len; - _ASN_ENCODED_OK(er); -} - -/* - * Convert from hexadecimal format (cstring): "AB CD EF" - */ -static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const char *chunk_stop = (const char *)chunk_buf; - const char *p = chunk_stop; - const char *pend = p + chunk_size; - unsigned int clv = 0; - int half = 0; /* Half bit */ - uint8_t *buf; - - /* Reallocate buffer according to high cap estimation */ - ssize_t _ns = st->size + (chunk_size + 1) / 2; - void *nptr = REALLOC(st->buf, _ns + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - /* - * If something like " a b c " appears here, the " a b":3 will be - * converted, and the rest skipped. That is, unless buf_size is greater - * than chunk_size, then it'll be equivalent to "ABC0". - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - switch(ch) { - case 0x09: - case 0x0a: - case 0x0c: - case 0x0d: - case 0x20: - /* Ignore whitespace */ - continue; - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: /*01234*/ - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: /*56789*/ - clv = (clv << 4) + (ch - 0x30); - break; - case 0x41: - case 0x42: - case 0x43: /* ABC */ - case 0x44: - case 0x45: - case 0x46: /* DEF */ - clv = (clv << 4) + (ch - 0x41 + 10); - break; - case 0x61: - case 0x62: - case 0x63: /* abc */ - case 0x64: - case 0x65: - case 0x66: /* def */ - clv = (clv << 4) + (ch - 0x61 + 10); - break; - default: - *buf = 0; /* JIC */ - return -1; - } - if(half++) { - half = 0; - *buf++ = clv; - chunk_stop = p + 1; - } - } - - /* - * Check partial decoding. - */ - if(half) { - if(have_more) { - /* - * Partial specification is fine, - * because no more more PXER_TEXT data is available. - */ - *buf++ = clv << 4; - chunk_stop = p; - } - } else { - chunk_stop = p; - } - - st->size = buf - st->buf; /* Adjust the buffer size */ - assert(st->size <= _ns); - st->buf[st->size] = 0; /* Courtesy termination */ - - return (chunk_stop - (const char *)chunk_buf); /* Converted size */ -} - -/* - * Convert from binary format: "00101011101" - */ -static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { - BIT_STRING_t *st = (BIT_STRING_t *)sptr; - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - int bits_unused = st->bits_unused & 0x7; - uint8_t *buf; - - /* Reallocate buffer according to high cap estimation */ - ssize_t _ns = st->size + (chunk_size + 7) / 8; - void *nptr = REALLOC(st->buf, _ns + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - (void)have_more; - - if(bits_unused == 0) - bits_unused = 8; - else if(st->size) - buf--; - - /* - * Convert series of 0 and 1 into the octet string. - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - switch(ch) { - case 0x09: - case 0x0a: - case 0x0c: - case 0x0d: - case 0x20: - /* Ignore whitespace */ - break; - case 0x30: - case 0x31: - if(bits_unused-- <= 0) { - *++buf = 0; /* Clean the cell */ - bits_unused = 7; - } - *buf |= (ch&1) << bits_unused; - break; - default: - st->bits_unused = bits_unused; - return -1; - } - } - - if(bits_unused == 8) { - st->size = buf - st->buf; - st->bits_unused = 0; - } else { - st->size = buf - st->buf + 1; - st->bits_unused = bits_unused; - } - - assert(st->size <= _ns); - st->buf[st->size] = 0; /* Courtesy termination */ - - return chunk_size; /* Converted in full */ -} - -/* - * Something like strtod(), but with stricter rules. - */ -static int -OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { - int32_t val = 0; - const char *p; - - for(p = buf; p < end; p++) { - int ch = *p; - - /* Strange huge value */ - if((val * base + base) < 0) - return -1; - - switch(ch) { - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: /*01234*/ - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: /*56789*/ - val = val * base + (ch - 0x30); - break; - case 0x41: - case 0x42: - case 0x43: /* ABC */ - case 0x44: - case 0x45: - case 0x46: /* DEF */ - val = val * base + (ch - 0x41 + 10); - break; - case 0x61: - case 0x62: - case 0x63: /* abc */ - case 0x64: - case 0x65: - case 0x66: /* def */ - val = val * base + (ch - 0x61 + 10); - break; - case 0x3b: /* ';' */ - *ret_value = val; - return (p - buf) + 1; - default: - return -1; /* Character set error */ - } - } - - *ret_value = -1; - return (p - buf); -} - -/* - * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" - */ -static ssize_t OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - uint8_t *buf; - - /* Reallocate buffer */ - ssize_t _ns = st->size + chunk_size; - void *nptr = REALLOC(st->buf, _ns + 1); - if(!nptr) return -1; - st->buf = (uint8_t *)nptr; - buf = st->buf + st->size; - - /* - * Convert series of 0 and 1 into the octet string. - */ - for(; p < pend; p++) { - int ch = *(const unsigned char *)p; - int len; /* Length of the rest of the chunk */ - - if(ch != 0x26 /* '&' */) { - *buf++ = ch; - continue; /* That was easy... */ - } - - /* - * Process entity reference. - */ - len = chunk_size - (p - (const char *)chunk_buf); - if(len == 1 /* "&" */) goto want_more; - if(p[1] == 0x23 /* '#' */) { - const char *pval; /* Pointer to start of digits */ - int32_t val = 0; /* Entity reference value */ - int base; - - if(len == 2 /* "&#" */) goto want_more; - if(p[2] == 0x78 /* 'x' */) - pval = p + 3, base = 16; - else - pval = p + 2, base = 10; - len = OS__strtoent(base, pval, p + len, &val); - if(len == -1) { - /* Invalid charset. Just copy verbatim. */ - *buf++ = ch; - continue; - } - if(!len || pval[len-1] != 0x3b) goto want_more; - assert(val > 0); - p += (pval - p) + len - 1; /* Advance past entref */ - - if(val < 0x80) { - *buf++ = (char)val; - } else if(val < 0x800) { - *buf++ = 0xc0 | ((val >> 6)); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x10000) { - *buf++ = 0xe0 | ((val >> 12)); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x200000) { - *buf++ = 0xf0 | ((val >> 18)); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else if(val < 0x4000000) { - *buf++ = 0xf8 | ((val >> 24)); - *buf++ = 0x80 | ((val >> 18) & 0x3f); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } else { - *buf++ = 0xfc | ((val >> 30) & 0x1); - *buf++ = 0x80 | ((val >> 24) & 0x3f); - *buf++ = 0x80 | ((val >> 18) & 0x3f); - *buf++ = 0x80 | ((val >> 12) & 0x3f); - *buf++ = 0x80 | ((val >> 6) & 0x3f); - *buf++ = 0x80 | ((val & 0x3f)); - } - } else { - /* - * Ugly, limited parsing of & > < - */ - char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); - if(!sc) goto want_more; - if((sc - p) == 4 - && p[1] == 0x61 /* 'a' */ - && p[2] == 0x6d /* 'm' */ - && p[3] == 0x70 /* 'p' */) { - *buf++ = 0x26; - p = sc; - continue; - } - if((sc - p) == 3) { - if(p[1] == 0x6c) { - *buf = 0x3c; /* '<' */ - } else if(p[1] == 0x67) { - *buf = 0x3e; /* '>' */ - } else { - /* Unsupported entity reference */ - *buf++ = ch; - continue; - } - if(p[2] != 0x74) { - /* Unsupported entity reference */ - *buf++ = ch; - continue; - } - buf++; - p = sc; - continue; - } - /* Unsupported entity reference */ - *buf++ = ch; - } - - continue; -want_more: - if(have_more) { - /* - * We know that no more data (of the same type) - * is coming. Copy the rest verbatim. - */ - *buf++ = ch; - continue; - } - chunk_size = (p - (const char *)chunk_buf); - /* Processing stalled: need more data */ - break; - } - - st->size = buf - st->buf; - assert(st->size <= _ns); - st->buf[st->size] = 0; /* Courtesy termination */ - - return chunk_size; /* Converted in full */ -} - -/* - * Decode OCTET STRING from the XML element's body. - */ -static asn_dec_rval_t -OCTET_STRING__decode_xer(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder) - (void *struct_ptr, const void *chunk_buf, size_t chunk_size), - ssize_t (*body_receiver) - (void *struct_ptr, const void *chunk_buf, size_t chunk_size, - int have_more) - ) { - OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; - asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_DEF_OCTET_STRING_specs; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - asn_struct_ctx_t *ctx; /* Per-structure parser context */ - asn_dec_rval_t rval; /* Return value from the decoder */ - int st_allocated; - - /* - * Create the string if does not exist. - */ - if(!st) { - st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); - *sptr = (void *)st; - if(!st) goto sta_failed; - st_allocated = 1; - } else { - st_allocated = 0; - } - if(!st->buf) { - /* This is separate from above section */ - st->buf = (uint8_t *)CALLOC(1, 1); - if(!st->buf) { - if(st_allocated) { - *sptr = 0; - goto stb_failed; - } else { - goto sta_failed; - } - } - } - - /* Restore parsing context */ - ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); - - return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, - buf_ptr, size, opt_unexpected_tag_decoder, body_receiver); - -stb_failed: - FREEMEM(st); -sta_failed: - rval.code = RC_FAIL; - rval.consumed = 0; - return rval; -} - -/* - * Decode OCTET STRING from the hexadecimal data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_hex(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal); -} - -/* - * Decode OCTET STRING from the binary (0/1) data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_binary(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, 0, OCTET_STRING__convert_binary); -} - -/* - * Decode OCTET STRING from the string (ASCII/UTF-8) data. - */ -asn_dec_rval_t -OCTET_STRING_decode_xer_utf8(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, void **sptr, - const char *opt_mname, const void *buf_ptr, size_t size) { - return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, - buf_ptr, size, - OCTET_STRING__handle_control_chars, - OCTET_STRING__convert_entrefs); -} - -static int -OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, - size_t units, unsigned int bpc, unsigned int unit_bits, - long lb, long ub, asn_per_constraints_t *pc) { - uint8_t *end = buf + units * bpc; - - ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", - (int)units, lb, ub, unit_bits); - - /* X.691: 27.5.4 */ - if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { - /* Decode without translation */ - lb = 0; - } else if(pc && pc->code2value) { - if(unit_bits > 16) - return 1; /* FATAL: can't have constrained - * UniversalString with more than - * 16 million code points */ - for(; buf < end; buf += bpc) { - int value; - int code = per_get_few_bits(po, unit_bits); - if(code < 0) return -1; /* WMORE */ - value = pc->code2value(code); - if(value < 0) { - ASN_DEBUG("Code %d (0x%02x) is" - " not in map (%ld..%ld)", - code, code, lb, ub); - return 1; /* FATAL */ - } - switch(bpc) { - case 1: - *buf = value; - break; - case 2: - buf[0] = value >> 8; - buf[1] = value; - break; - case 4: - buf[0] = value >> 24; - buf[1] = value >> 16; - buf[2] = value >> 8; - buf[3] = value; - break; - } - } - return 0; - } - - /* Shortcut the no-op copying to the aligned structure */ - if(lb == 0 && (unit_bits == 8 * bpc)) { - return per_get_many_bits(po, buf, 0, unit_bits * units); - } - - for(; buf < end; buf += bpc) { - int code = per_get_few_bits(po, unit_bits); - int ch = code + lb; - if(code < 0) return -1; /* WMORE */ - if(ch > ub) { - ASN_DEBUG("Code %d is out of range (%ld..%ld)", - ch, lb, ub); - return 1; /* FATAL */ - } - switch(bpc) { - case 1: - *buf = ch; - break; - case 2: - buf[0] = ch >> 8; - buf[1] = ch; - break; - case 4: - buf[0] = ch >> 24; - buf[1] = ch >> 16; - buf[2] = ch >> 8; - buf[3] = ch; - break; - } - } - - return 0; -} - -static int -OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, - size_t units, unsigned int bpc, unsigned int unit_bits, - long lb, long ub, asn_per_constraints_t *pc) { - const uint8_t *end = buf + units * bpc; - - ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", - (int)units, lb, ub, unit_bits, bpc); - - /* X.691: 27.5.4 */ - if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { - /* Encode as is */ - lb = 0; - } else if(pc && pc->value2code) { - for(; buf < end; buf += bpc) { - int code; - uint32_t value; - switch(bpc) { - case 1: - value = *(const uint8_t *)buf; - break; - case 2: - value = (buf[0] << 8) | buf[1]; - break; - case 4: - value = (buf[0] << 24) | (buf[1] << 16) - | (buf[2] << 8) | buf[3]; - break; - default: - return -1; - } - code = pc->value2code(value); - if(code < 0) { - ASN_DEBUG("Character %d (0x%02x) is" - " not in map (%ld..%ld)", - *buf, *buf, lb, ub); - return -1; - } - if(per_put_few_bits(po, code, unit_bits)) - return -1; - } - } - - /* Shortcut the no-op copying to the aligned structure */ - if(lb == 0 && (unit_bits == 8 * bpc)) { - return per_put_many_bits(po, buf, unit_bits * units); - } - - for(ub -= lb; buf < end; buf += bpc) { - int ch; - uint32_t value; - switch(bpc) { - case 1: - value = *(const uint8_t *)buf; - break; - case 2: - value = (buf[0] << 8) | buf[1]; - break; - case 4: - value = (buf[0] << 24) | (buf[1] << 16) - | (buf[2] << 8) | buf[3]; - break; - default: - return -1; - } - ch = value - lb; - if(ch < 0 || ch > ub) { - ASN_DEBUG("Character %d (0x%02x)" - " is out of range (%ld..%ld)", - *buf, *buf, lb, ub + lb); - return -1; - } - if(per_put_few_bits(po, ch, unit_bits)) - return -1; - } - - return 0; -} - -asn_dec_rval_t -OCTET_STRING_decode_uper(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, - void **sptr, asn_per_data_t *pd) { - - asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_DEF_OCTET_STRING_specs; - asn_per_constraints_t *pc = constraints ? constraints - : td->per_constraints; - asn_per_constraint_t *cval; - asn_per_constraint_t *csiz; - asn_dec_rval_t rval = { RC_OK, 0 }; - BIT_STRING_t *st = (BIT_STRING_t *)*sptr; - ssize_t consumed_myself = 0; - int repeat; - enum { - OS__BPC_BIT = 0, - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - - (void)opt_codec_ctx; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); - RETURN(RC_FAIL); - case ASN_OSUBV_BIT: - canonical_unit_bits = unit_bits = 1; - bpc = OS__BPC_BIT; - break; - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_CHAR; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - break; - } - - /* - * Allocate the string. - */ - if(!st) { - st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); - if(!st) RETURN(RC_FAIL); - } - - ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", - csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", - csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); - - if(csiz->flags & APC_EXTENSIBLE) { - int inext = per_get_few_bits(pd, 1); - if(inext < 0) RETURN(RC_WMORE); - if(inext) { - csiz = &asn_DEF_OCTET_STRING_constraints.size; - cval = &asn_DEF_OCTET_STRING_constraints.value; - unit_bits = canonical_unit_bits; - } - } - - if(csiz->effective_bits >= 0) { - FREEMEM(st->buf); - if(bpc) { - st->size = csiz->upper_bound * bpc; - } else { - st->size = (csiz->upper_bound + 7) >> 3; - } - st->buf = (uint8_t *)MALLOC(st->size + 1); - if(!st->buf) { - st->size = 0; - RETURN(RC_FAIL); - } - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits == 0) { - int ret; - if(bpc) { - ASN_DEBUG("Encoding OCTET STRING size %ld", - csiz->upper_bound); - ret = OCTET_STRING_per_get_characters(pd, st->buf, - csiz->upper_bound, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ASN_DEBUG("Encoding BIT STRING size %ld", - csiz->upper_bound); - ret = per_get_many_bits(pd, st->buf, 0, - unit_bits * csiz->upper_bound); - } - if(ret < 0) RETURN(RC_WMORE); - consumed_myself += unit_bits * csiz->upper_bound; - st->buf[st->size] = 0; - if(bpc == 0) { - int ubs = (csiz->upper_bound & 0x7); - st->bits_unused = ubs ? 8 - ubs : 0; - } - RETURN(RC_OK); - } - - st->size = 0; - do { - ssize_t raw_len; - ssize_t len_bytes; - ssize_t len_bits; - void *p; - int ret; - - /* Get the PER length */ - raw_len = uper_get_length(pd, csiz->effective_bits, &repeat); - if(raw_len < 0) RETURN(RC_WMORE); - raw_len += csiz->lower_bound; - - ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", - (long)csiz->effective_bits, (long)raw_len, - repeat ? "repeat" : "once", td->name); - if(bpc) { - len_bytes = raw_len * bpc; - len_bits = len_bytes * unit_bits; - } else { - len_bits = raw_len; - len_bytes = (len_bits + 7) >> 3; - if(len_bits & 0x7) - st->bits_unused = 8 - (len_bits & 0x7); - /* len_bits be multiple of 16K if repeat is set */ - } - p = REALLOC(st->buf, st->size + len_bytes + 1); - if(!p) RETURN(RC_FAIL); - st->buf = (uint8_t *)p; - - if(bpc) { - ret = OCTET_STRING_per_get_characters(pd, - &st->buf[st->size], raw_len, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - if(ret > 0) RETURN(RC_FAIL); - } else { - ret = per_get_many_bits(pd, &st->buf[st->size], - 0, len_bits); - } - if(ret < 0) RETURN(RC_WMORE); - st->size += len_bytes; - } while(repeat); - st->buf[st->size] = 0; /* nul-terminate */ - - return rval; -} - -asn_enc_rval_t -OCTET_STRING_encode_uper(asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { - - asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_DEF_OCTET_STRING_specs; - asn_per_constraints_t *pc = constraints ? constraints - : td->per_constraints; - asn_per_constraint_t *cval; - asn_per_constraint_t *csiz; - const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; - asn_enc_rval_t er = { 0, 0, 0 }; - int inext = 0; /* Lies not within extension root */ - unsigned int unit_bits; - unsigned int canonical_unit_bits; - unsigned int sizeinunits; - const uint8_t *buf; - int ret; - enum { - OS__BPC_BIT = 0, - OS__BPC_CHAR = 1, - OS__BPC_U16 = 2, - OS__BPC_U32 = 4 - } bpc; /* Bytes per character */ - int ct_extensible; - - if(!st || (!st->buf && st->size)) - _ASN_ENCODE_FAILED; - - if(pc) { - cval = &pc->value; - csiz = &pc->size; - } else { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - } - ct_extensible = csiz->flags & APC_EXTENSIBLE; - - switch(specs->subvariant) { - default: - case ASN_OSUBV_ANY: - _ASN_ENCODE_FAILED; - case ASN_OSUBV_BIT: - canonical_unit_bits = unit_bits = 1; - bpc = OS__BPC_BIT; - sizeinunits = st->size * 8 - (st->bits_unused & 0x07); - ASN_DEBUG("BIT STRING of %d bytes, %d bits unused", - sizeinunits, st->bits_unused); - break; - case ASN_OSUBV_STR: - canonical_unit_bits = unit_bits = 8; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_CHAR; - sizeinunits = st->size; - break; - case ASN_OSUBV_U16: - canonical_unit_bits = unit_bits = 16; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U16; - sizeinunits = st->size / 2; - break; - case ASN_OSUBV_U32: - canonical_unit_bits = unit_bits = 32; - if(cval->flags & APC_CONSTRAINED) - unit_bits = cval->range_bits; - bpc = OS__BPC_U32; - sizeinunits = st->size / 4; - break; - } - - ASN_DEBUG("Encoding %s into %d units of %d bits" - " (%ld..%ld, effective %d)%s", - td->name, sizeinunits, unit_bits, - csiz->lower_bound, csiz->upper_bound, - csiz->effective_bits, ct_extensible ? " EXT" : ""); - - /* Figure out wheter size lies within PER visible constraint */ - - if(csiz->effective_bits >= 0) { - if((int)sizeinunits < csiz->lower_bound - || (int)sizeinunits > csiz->upper_bound) { - if(ct_extensible) { - cval = &asn_DEF_OCTET_STRING_constraints.value; - csiz = &asn_DEF_OCTET_STRING_constraints.size; - unit_bits = canonical_unit_bits; - inext = 1; - } else - _ASN_ENCODE_FAILED; - } - } else { - inext = 0; - } - - if(ct_extensible) { - /* Declare whether length is [not] within extension root */ - if(per_put_few_bits(po, inext, 1)) - _ASN_ENCODE_FAILED; - } - - /* X.691, #16.5: zero-length encoding */ - /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ - /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ - if(csiz->effective_bits >= 0) { - ASN_DEBUG("Encoding %d bytes (%ld), length in %d bits", - st->size, sizeinunits - csiz->lower_bound, - csiz->effective_bits); - ret = per_put_few_bits(po, sizeinunits - csiz->lower_bound, - csiz->effective_bits); - if(ret) _ASN_ENCODE_FAILED; - if(bpc) { - ret = OCTET_STRING_per_put_characters(po, st->buf, - sizeinunits, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - } else { - ret = per_put_many_bits(po, st->buf, - sizeinunits * unit_bits); - } - if(ret) _ASN_ENCODE_FAILED; - _ASN_ENCODED_OK(er); - } - - ASN_DEBUG("Encoding %d bytes", st->size); - - if(sizeinunits == 0) { - if(uper_put_length(po, 0)) - _ASN_ENCODE_FAILED; - _ASN_ENCODED_OK(er); - } - - buf = st->buf; - while(sizeinunits) { - ssize_t maySave = uper_put_length(po, sizeinunits); - if(maySave < 0) _ASN_ENCODE_FAILED; - - ASN_DEBUG("Encoding %ld of %ld", - (long)maySave, (long)sizeinunits); - - if(bpc) { - ret = OCTET_STRING_per_put_characters(po, buf, - maySave, bpc, unit_bits, - cval->lower_bound, cval->upper_bound, pc); - } else { - ret = per_put_many_bits(po, buf, maySave * unit_bits); - } - if(ret) _ASN_ENCODE_FAILED; - - if(bpc) - buf += maySave * bpc; - else - buf += maySave >> 3; - sizeinunits -= maySave; - assert(!(maySave & 0x07) || !sizeinunits); - } - - _ASN_ENCODED_OK(er); -} - -int -OCTET_STRING_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - static const char *h2c = "0123456789ABCDEF"; - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - char scratch[16 * 3 + 4]; - char *p = scratch; - uint8_t *buf; - uint8_t *end; - size_t i; - - (void)td; /* Unused argument */ - - if(!st || (!st->buf && st->size)) - return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* - * Dump the contents of the buffer in hexadecimal. - */ - buf = st->buf; - end = buf + st->size; - for(i = 0; buf < end; buf++, i++) { - if(!(i % 16) && (i || st->size > 16)) { - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - _i_INDENT(1); - p = scratch; - } - *p++ = h2c[(*buf >> 4) & 0x0F]; - *p++ = h2c[*buf & 0x0F]; - *p++ = 0x20; - } - - if(p > scratch) { - p--; /* Remove the tail space */ - if(cb(scratch, p - scratch, app_key) < 0) - return -1; - } - - return 0; -} - -int -OCTET_STRING_print_utf8(asn_TYPE_descriptor_t *td, const void *sptr, - int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; - - (void)td; /* Unused argument */ - (void)ilevel; /* Unused argument */ - - if(st && (st->buf || !st->size)) { - return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0; - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -OCTET_STRING_free(asn_TYPE_descriptor_t *td, void *sptr, int contents_only) { - OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; - asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_DEF_OCTET_STRING_specs; - asn_struct_ctx_t *ctx = (asn_struct_ctx_t *) - ((char *)st + specs->ctx_offset); - struct _stack *stck; - - if(!td || !st) - return; - - ASN_DEBUG("Freeing %s as OCTET STRING", td->name); - - if(st->buf) { - FREEMEM(st->buf); - st->buf = 0; - } - - /* - * Remove decode-time stack. - */ - stck = (struct _stack *)ctx->ptr; - if(stck) { - while(stck->tail) { - struct _stack_el *sel = stck->tail; - stck->tail = sel->prev; - FREEMEM(sel); - } - FREEMEM(stck); - } - - if(!contents_only) { - FREEMEM(st); - } -} - -/* - * Conversion routines. - */ -int -OCTET_STRING_fromBuf(OCTET_STRING_t *st, const char *str, int len) { - void *buf; - - if(st == 0 || (str == 0 && len)) { - errno = EINVAL; - return -1; - } - - /* - * Clear the OCTET STRING. - */ - if(str == NULL) { - FREEMEM(st->buf); - st->buf = 0; - st->size = 0; - return 0; - } - - /* Determine the original string size, if not explicitly given */ - if(len < 0) - len = strlen(str); - - /* Allocate and fill the memory */ - buf = MALLOC(len + 1); - if(buf == NULL) - return -1; - - memcpy(buf, str, len); - ((uint8_t *)buf)[len] = '\0'; /* Couldn't use memcpy(len+1)! */ - FREEMEM(st->buf); - st->buf = (uint8_t *)buf; - st->size = len; - - return 0; -} - -OCTET_STRING_t * -OCTET_STRING_new_fromBuf(asn_TYPE_descriptor_t *td, const char *str, int len) { - asn_OCTET_STRING_specifics_t *specs = td->specifics - ? (asn_OCTET_STRING_specifics_t *)td->specifics - : &asn_DEF_OCTET_STRING_specs; - OCTET_STRING_t *st; - - st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); - if(st && str && OCTET_STRING_fromBuf(st, str, len)) { - FREEMEM(st); - st = NULL; - } - - return st; -} - diff --git a/src/third_party/asn1/OCTET_STRING.h b/src/third_party/asn1/OCTET_STRING.h deleted file mode 100644 index 11a94e08..00000000 --- a/src/third_party/asn1/OCTET_STRING.h +++ /dev/null @@ -1,86 +0,0 @@ -/*- - * Copyright (c) 2003 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _OCTET_STRING_H_ -#define _OCTET_STRING_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - typedef struct OCTET_STRING { - uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */ - int size; /* Size of the buffer */ - - asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ - } OCTET_STRING_t; - - extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING; - - asn_struct_free_f OCTET_STRING_free; - asn_struct_print_f OCTET_STRING_print; - asn_struct_print_f OCTET_STRING_print_utf8; - ber_type_decoder_f OCTET_STRING_decode_ber; - der_type_encoder_f OCTET_STRING_encode_der; - xer_type_decoder_f OCTET_STRING_decode_xer_hex; /* Hexadecimal */ - xer_type_decoder_f OCTET_STRING_decode_xer_binary; /* 01010111010 */ - xer_type_decoder_f OCTET_STRING_decode_xer_utf8; /* ASCII/UTF-8 */ - xer_type_encoder_f OCTET_STRING_encode_xer; - xer_type_encoder_f OCTET_STRING_encode_xer_utf8; - per_type_decoder_f OCTET_STRING_decode_uper; - per_type_encoder_f OCTET_STRING_encode_uper; - - /****************************** - * Handy conversion routines. * - ******************************/ - - /* - * This function clears the previous value of the OCTET STRING (if any) - * and then allocates a new memory with the specified content (str/size). - * If size = -1, the size of the original string will be determined - * using strlen(str). - * If str equals to NULL, the function will silently clear the - * current contents of the OCTET STRING. - * Returns 0 if it was possible to perform operation, -1 otherwise. - */ - int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size); - - /* Handy conversion from the C string into the OCTET STRING. */ -#define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1) - - /* - * Allocate and fill the new OCTET STRING and return a pointer to the newly - * allocated object. NULL is permitted in str: the function will just allocate - * empty OCTET STRING. - */ - OCTET_STRING_t *OCTET_STRING_new_fromBuf(asn_TYPE_descriptor_t *td, - const char *str, int size); - - /**************************** - * Internally useful stuff. * - ****************************/ - - typedef struct asn_OCTET_STRING_specifics_s { - /* - * Target structure description. - */ - int struct_size; /* Size of the structure */ - int ctx_offset; /* Offset of the asn_struct_ctx_t member */ - - enum asn_OS_Subvariant { - ASN_OSUBV_ANY, /* The open type (ANY) */ - ASN_OSUBV_BIT, /* BIT STRING */ - ASN_OSUBV_STR, /* String types, not {BMP,Universal}String */ - ASN_OSUBV_U16, /* 16-bit character (BMPString) */ - ASN_OSUBV_U32 /* 32-bit character (UniversalString) */ - } subvariant; - } asn_OCTET_STRING_specifics_t; - -#ifdef __cplusplus -} -#endif - -#endif /* _OCTET_STRING_H_ */ diff --git a/src/third_party/asn1/UTF8String.c b/src/third_party/asn1/UTF8String.c deleted file mode 100644 index b4b908bb..00000000 --- a/src/third_party/asn1/UTF8String.c +++ /dev/null @@ -1,186 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -/* - * UTF8String basic type description. - */ -static ber_tlv_tag_t asn_DEF_UTF8String_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), /* [UNIVERSAL 12] IMPLICIT ...*/ - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), /* ... OCTET STRING */ -}; -asn_TYPE_descriptor_t asn_DEF_UTF8String = { - "UTF8String", - "UTF8String", - OCTET_STRING_free, - UTF8String_print, - UTF8String_constraint, /* Check for invalid codes, etc. */ - OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ - OCTET_STRING_encode_der, - OCTET_STRING_decode_xer_utf8, - OCTET_STRING_encode_xer_utf8, - OCTET_STRING_decode_uper, - OCTET_STRING_encode_uper, - 0, /* Use generic outmost tag fetcher */ - asn_DEF_UTF8String_tags, - sizeof(asn_DEF_UTF8String_tags) - / sizeof(asn_DEF_UTF8String_tags[0]) - 1, - asn_DEF_UTF8String_tags, - sizeof(asn_DEF_UTF8String_tags) - / sizeof(asn_DEF_UTF8String_tags[0]), - 0, /* No PER visible constraints */ - 0, 0, /* No members */ - 0 /* No specifics */ -}; - -/* - * This is the table of length expectations. - * The second half of this table is only applicable to the long sequences. - */ -static int UTF8String_ht[2][16] = { - { /* 0x0 ... 0x7 */ - /* 0000..0111 */ - 1, 1, 1, 1, 1, 1, 1, 1, - /* 1000..1011(0), 1100..1101(2), 1110(3), 1111(-1) */ - 0, 0, 0, 0, 2, 2, 3, -1 - }, - { /* 0xF0 .. 0xF7 */ - /* 11110000..11110111 */ - 4, 4, 4, 4, 4, 4, 4, 4, - 5, 5, 5, 5, 6, 6, -1, -1 - } -}; -static int32_t UTF8String_mv[7] = { 0, 0, - 0x00000080, - 0x00000800, - 0x00010000, - 0x00200000, - 0x04000000 - }; - -/* Internal aliases for return codes */ -#define U8E_TRUNC -1 /* UTF-8 sequence truncated */ -#define U8E_ILLSTART -2 /* Illegal UTF-8 sequence start */ -#define U8E_NOTCONT -3 /* Continuation expectation failed */ -#define U8E_NOTMIN -4 /* Not minimal length encoding */ -#define U8E_EINVAL -5 /* Invalid arguments */ - -int -UTF8String_constraint(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - ssize_t len = UTF8String_length((const UTF8String_t *)sptr); - switch(len) { - case U8E_EINVAL: - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given", td->name); - break; - case U8E_TRUNC: - _ASN_CTFAIL(app_key, td, sptr, - "%s: truncated UTF-8 sequence (%s:%d)", - td->name, __FILE__, __LINE__); - break; - case U8E_ILLSTART: - _ASN_CTFAIL(app_key, td, sptr, - "%s: UTF-8 illegal start of encoding (%s:%d)", - td->name, __FILE__, __LINE__); - break; - case U8E_NOTCONT: - _ASN_CTFAIL(app_key, td, sptr, - "%s: UTF-8 not continuation (%s:%d)", - td->name, __FILE__, __LINE__); - break; - case U8E_NOTMIN: - _ASN_CTFAIL(app_key, td, sptr, - "%s: UTF-8 not minimal sequence (%s:%d)", - td->name, __FILE__, __LINE__); - break; - } - return (len < 0) ? -1 : 0; -} - -static ssize_t -UTF8String__process(const UTF8String_t *st, uint32_t *dst, size_t dstlen) { - size_t length; - uint8_t *buf = st->buf; - uint8_t *end = buf + st->size; - uint32_t *dstend = dst + dstlen; - - for(length = 0; buf < end; length++) { - int ch = *buf; - uint8_t *cend; - int32_t value; - int want; - - /* Compute the sequence length */ - want = UTF8String_ht[0][ch >> 4]; - switch(want) { - case -1: - /* Second half of the table, long sequence */ - want = UTF8String_ht[1][ch & 0x0F]; - if(want != -1) break; - /* Fall through */ - case 0: - return U8E_ILLSTART; - } - - /* assert(want >= 1 && want <= 6) */ - - /* Check character sequence length */ - if(buf + want > end) return U8E_TRUNC; - - value = ch & (0xff >> want); - cend = buf + want; - for(buf++; buf < cend; buf++) { - ch = *buf; - if(ch < 0x80 || ch > 0xbf) return U8E_NOTCONT; - value = (value << 6) | (ch & 0x3F); - } - if(value < UTF8String_mv[want]) - return U8E_NOTMIN; - if(dst < dstend) - *dst++ = value; /* Record value */ - } - - if(dst < dstend) *dst = 0; /* zero-terminate */ - - return length; -} - - -ssize_t -UTF8String_length(const UTF8String_t *st) { - if(st && st->buf) { - return UTF8String__process(st, 0, 0); - } else { - return U8E_EINVAL; - } -} - -size_t -UTF8String_to_wcs(const UTF8String_t *st, uint32_t *dst, size_t dstlen) { - if(st && st->buf) { - ssize_t ret = UTF8String__process(st, dst, dstlen); - return (ret < 0) ? 0 : ret; - } else { - return 0; - } -} - -int -UTF8String_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - const UTF8String_t *st = (const UTF8String_t *)sptr; - - (void)td; /* Unused argument */ - (void)ilevel; /* Unused argument */ - - if(st && st->buf) { - return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0; - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} diff --git a/src/third_party/asn1/UTF8String.h b/src/third_party/asn1/UTF8String.h deleted file mode 100644 index 475347ff..00000000 --- a/src/third_party/asn1/UTF8String.h +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _UTF8String_H_ -#define _UTF8String_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - typedef OCTET_STRING_t UTF8String_t; /* Implemented via OCTET STRING */ - - extern asn_TYPE_descriptor_t asn_DEF_UTF8String; - - asn_struct_print_f UTF8String_print; - asn_constr_check_f UTF8String_constraint; - - /* - * Returns length of the given UTF-8 string in characters, - * or a negative error code: - * -1: UTF-8 sequence truncated - * -2: Illegal UTF-8 sequence start - * -3: Continuation expectation failed - * -4: Not minimal length encoding - * -5: Invalid arguments - */ - ssize_t UTF8String_length(const UTF8String_t *st); - - /* - * Convert the UTF-8 string into a sequence of wide characters. - * Returns the number of characters necessary. - * Returned value might be greater than dstlen. - * In case of conversion error, 0 is returned. - * - * If st points to a valid UTF-8 string, calling - * UTF8String_to_wcs(st, 0, 0); - * is equivalent to - * UTF8String_length(const UTF8String_t *st); - */ - size_t UTF8String_to_wcs(const UTF8String_t *st, uint32_t *dst, size_t dstlen); - -#ifdef __cplusplus -} -#endif - -#endif /* _UTF8String_H_ */ diff --git a/src/third_party/asn1/asn_SEQUENCE_OF.c b/src/third_party/asn1/asn_SEQUENCE_OF.c deleted file mode 100644 index ec952fc9..00000000 --- a/src/third_party/asn1/asn_SEQUENCE_OF.c +++ /dev/null @@ -1,41 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -typedef A_SEQUENCE_OF(void) asn_sequence; - -void -asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free) { - asn_sequence *as = (asn_sequence *)asn_sequence_of_x; - - if(as) { - void *ptr; - int n; - - if(number < 0 || number >= as->count) - return; /* Nothing to delete */ - - if(_do_free && as->free) { - ptr = as->array[number]; - } else { - ptr = 0; - } - - /* - * Shift all elements to the left to hide the gap. - */ - --as->count; - for(n = number; n < as->count; n++) - as->array[n] = as->array[n+1]; - - /* - * Invoke the third-party function only when the state - * of the parent structure is consistent. - */ - if(ptr) as->free(ptr); - } -} - diff --git a/src/third_party/asn1/asn_SEQUENCE_OF.h b/src/third_party/asn1/asn_SEQUENCE_OF.h deleted file mode 100644 index 33eeb284..00000000 --- a/src/third_party/asn1/asn_SEQUENCE_OF.h +++ /dev/null @@ -1,52 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_SEQUENCE_OF_H -#define ASN_SEQUENCE_OF_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - /* - * SEQUENCE OF is the same as SET OF with a tiny difference: - * the delete operation preserves the initial order of elements - * and thus MAY operate in non-constant time. - */ -#define A_SEQUENCE_OF(type) A_SET_OF(type) - -#define ASN_SEQUENCE_ADD(headptr, ptr) \ - asn_sequence_add((headptr), (ptr)) - - /*********************************************** - * Implementation of the SEQUENCE OF structure. - */ - -#define asn_sequence_add asn_set_add -#define asn_sequence_empty asn_set_empty - - /* - * Delete the element from the set by its number (base 0). - * This is NOT a constant-time operation. - * The order of elements is preserved. - * If _do_free is given AND the (*free) is initialized, the element - * will be freed using the custom (*free) function as well. - */ - void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free); - - /* - * Cope with different conversions requirements to/from void in C and C++. - * This is mostly useful for support library. - */ - typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_; -#define _A_SEQUENCE_FROM_VOID(ptr) ((asn_anonymous_sequence_ *)(ptr)) -#define _A_CSEQUENCE_FROM_VOID(ptr) ((const asn_anonymous_sequence_ *)(ptr)) - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_SEQUENCE_OF_H */ diff --git a/src/third_party/asn1/asn_SET_OF.c b/src/third_party/asn1/asn_SET_OF.c deleted file mode 100644 index 944f2cb8..00000000 --- a/src/third_party/asn1/asn_SET_OF.c +++ /dev/null @@ -1,88 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Add another element into the set. - */ -int -asn_set_add(void *asn_set_of_x, void *ptr) { - asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); - - if(as == 0 || ptr == 0) { - errno = EINVAL; /* Invalid arguments */ - return -1; - } - - /* - * Make sure there's enough space to insert an element. - */ - if(as->count == as->size) { - int _newsize = as->size ? (as->size << 1) : 4; - void *_new_arr; - _new_arr = REALLOC(as->array, _newsize * sizeof(as->array[0])); - if(_new_arr) { - as->array = (void **)_new_arr; - as->size = _newsize; - } else { - /* ENOMEM */ - return -1; - } - } - - as->array[as->count++] = ptr; - - return 0; -} - -void -asn_set_del(void *asn_set_of_x, int number, int _do_free) { - asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); - - if(as) { - void *ptr; - if(number < 0 || number >= as->count) - return; - - if(_do_free && as->free) { - ptr = as->array[number]; - } else { - ptr = 0; - } - - as->array[number] = as->array[--as->count]; - - /* - * Invoke the third-party function only when the state - * of the parent structure is consistent. - */ - if(ptr) as->free(ptr); - } -} - -/* - * Free the contents of the set, do not free the set itself. - */ -void -asn_set_empty(void *asn_set_of_x) { - asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); - - if(as) { - if(as->array) { - if(as->free) { - while(as->count--) - as->free(as->array[as->count]); - } - FREEMEM(as->array); - as->array = 0; - } - as->count = 0; - as->size = 0; - } - -} - diff --git a/src/third_party/asn1/asn_SET_OF.h b/src/third_party/asn1/asn_SET_OF.h deleted file mode 100644 index 973b452f..00000000 --- a/src/third_party/asn1/asn_SET_OF.h +++ /dev/null @@ -1,62 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_SET_OF_H -#define ASN_SET_OF_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define A_SET_OF(type) \ - struct { \ - type **array; \ - int count; /* Meaningful size */ \ - int size; /* Allocated size */ \ - void (*free)(type *); \ - } - -#define ASN_SET_ADD(headptr, ptr) \ - asn_set_add((headptr), (ptr)) - - /******************************************* - * Implementation of the SET OF structure. - */ - - /* - * Add another structure into the set by its pointer. - * RETURN VALUES: - * 0 for success and -1/errno for failure. - */ - int asn_set_add(void *asn_set_of_x, void *ptr); - - /* - * Delete the element from the set by its number (base 0). - * This is a constant-time operation. The order of elements before the - * deleted ones is guaranteed, the order of elements after the deleted - * one is NOT guaranteed. - * If _do_free is given AND the (*free) is initialized, the element - * will be freed using the custom (*free) function as well. - */ - void asn_set_del(void *asn_set_of_x, int number, int _do_free); - - /* - * Empty the contents of the set. Will free the elements, if (*free) is given. - * Will NOT free the set itself. - */ - void asn_set_empty(void *asn_set_of_x); - - /* - * Cope with different conversions requirements to/from void in C and C++. - * This is mostly useful for support library. - */ - typedef A_SET_OF(void) asn_anonymous_set_; -#define _A_SET_FROM_VOID(ptr) ((asn_anonymous_set_ *)(ptr)) -#define _A_CSET_FROM_VOID(ptr) ((const asn_anonymous_set_ *)(ptr)) - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_SET_OF_H */ diff --git a/src/third_party/asn1/asn_application.h b/src/third_party/asn1/asn_application.h deleted file mode 100644 index c762dd92..00000000 --- a/src/third_party/asn1/asn_application.h +++ /dev/null @@ -1,47 +0,0 @@ -/*- - * Copyright (c) 2004, 2006 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Application-level ASN.1 callbacks. - */ -#ifndef _ASN_APPLICATION_H_ -#define _ASN_APPLICATION_H_ - -#include "asn_system.h" /* for platform-dependent types */ -#include "asn_codecs.h" /* for ASN.1 codecs specifics */ - -#ifdef __cplusplus -extern "C" { -#endif - - /* - * Generic type of an application-defined callback to return various - * types of data to the application. - * EXPECTED RETURN VALUES: - * -1: Failed to consume bytes. Abort the mission. - * Non-negative return values indicate success, and ignored. - */ - typedef int (asn_app_consume_bytes_f)(const void *buffer, size_t size, - void *application_specific_key); - - /* - * A callback of this type is called whenever constraint validation fails - * on some ASN.1 type. See "constraints.h" for more details on constraint - * validation. - * This callback specifies a descriptor of the ASN.1 type which failed - * the constraint check, as well as human readable message on what - * particular constraint has failed. - */ - typedef void (asn_app_constraint_failed_f)(void *application_specific_key, - struct asn_TYPE_descriptor_s *type_descriptor_which_failed, - const void *structure_which_failed_ptr, - const char *error_message_format, ...) GCC_PRINTFLIKE(4, 5); - -#ifdef __cplusplus -} -#endif - -#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ - -#endif /* _ASN_APPLICATION_H_ */ diff --git a/src/third_party/asn1/asn_codecs.h b/src/third_party/asn1/asn_codecs.h deleted file mode 100644 index 24784f0d..00000000 --- a/src/third_party/asn1/asn_codecs.h +++ /dev/null @@ -1,109 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2005 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _ASN_CODECS_H_ -#define _ASN_CODECS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - - struct asn_TYPE_descriptor_s; /* Forward declaration */ - - /* - * This structure defines a set of parameters that may be passed - * to every ASN.1 encoder or decoder function. - * WARNING: if max_stack_size member is set, and you are calling the - * function pointers of the asn_TYPE_descriptor_t directly, - * this structure must be ALLOCATED ON THE STACK! - * If you can't always satisfy this requirement, use ber_decode(), - * xer_decode() and uper_decode() functions instead. - */ - typedef struct asn_codec_ctx_s { - /* - * Limit the decoder routines to use no (much) more stack than a given - * number of bytes. Most of decoders are stack-based, and this - * would protect against stack overflows if the number of nested - * encodings is high. - * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based, - * and are safe from this kind of overflow. - * A value from getrlimit(RLIMIT_STACK) may be used to initialize - * this variable. Be careful in multithreaded environments, as the - * stack size is rather limited. - */ - size_t max_stack_size; /* 0 disables stack bounds checking */ - } asn_codec_ctx_t; - - /* - * Type of the return value of the encoding functions (der_encode, xer_encode). - */ - typedef struct asn_enc_rval_s { - /* - * Number of bytes encoded. - * -1 indicates failure to encode the structure. - * In this case, the members below this one are meaningful. - */ - ssize_t encoded; - - /* - * Members meaningful when (encoded == -1), for post mortem analysis. - */ - - /* Type which cannot be encoded */ - struct asn_TYPE_descriptor_s *failed_type; - - /* Pointer to the structure of that type */ - void *structure_ptr; - } asn_enc_rval_t; -#define _ASN_ENCODE_FAILED do { \ - asn_enc_rval_t tmp_error; \ - tmp_error.encoded = -1; \ - tmp_error.failed_type = td; \ - tmp_error.structure_ptr = sptr; \ - ASN_DEBUG("Failed to encode element %s", td->name); \ - return tmp_error; \ -} while(0) -#define _ASN_ENCODED_OK(rval) do { \ - rval.structure_ptr = 0; \ - rval.failed_type = 0; \ - return rval; \ -} while(0) - - /* - * Type of the return value of the decoding functions (ber_decode, xer_decode) - * - * Please note that the number of consumed bytes is ALWAYS meaningful, - * even if code==RC_FAIL. This is to indicate the number of successfully - * decoded bytes, hence providing a possibility to fail with more diagnostics - * (i.e., print the offending remainder of the buffer). - */ - enum asn_dec_rval_code_e { - RC_OK, /* Decoded successfully */ - RC_WMORE, /* More data expected, call again */ - RC_FAIL /* Failure to decode data */ - }; - typedef struct asn_dec_rval_s { - enum asn_dec_rval_code_e code; /* Result code */ - size_t consumed; /* Number of bytes consumed */ - } asn_dec_rval_t; -#define _ASN_DECODE_FAILED do { \ - asn_dec_rval_t tmp_error; \ - tmp_error.code = RC_FAIL; \ - tmp_error.consumed = 0; \ - ASN_DEBUG("Failed to decode element %s", td->name); \ - return tmp_error; \ -} while(0) -#define _ASN_DECODE_STARVED do { \ - asn_dec_rval_t tmp_error; \ - tmp_error.code = RC_WMORE; \ - tmp_error.consumed = 0; \ - return tmp_error; \ -} while(0) - -#ifdef __cplusplus -} -#endif - -#endif /* _ASN_CODECS_H_ */ diff --git a/src/third_party/asn1/asn_codecs_prim.c b/src/third_party/asn1/asn_codecs_prim.c deleted file mode 100644 index 3d1aa1d8..00000000 --- a/src/third_party/asn1/asn_codecs_prim.c +++ /dev/null @@ -1,295 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Decode an always-primitive type. - */ -asn_dec_rval_t -ber_decode_primitive(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, - void **sptr, const void *buf_ptr, size_t size, int tag_mode) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; - asn_dec_rval_t rval; - ber_tlv_len_t length; - - /* - * If the structure is not there, allocate it. - */ - if(st == NULL) { - st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); - if(st == NULL) _ASN_DECODE_FAILED; - *sptr = (void *)st; - } - - ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", - td->name, tag_mode); - - /* - * Check tags and extract value length. - */ - rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, - tag_mode, 0, &length, 0); - if(rval.code != RC_OK) - return rval; - - ASN_DEBUG("%s length is %d bytes", td->name, (int)length); - - /* - * Make sure we have this length. - */ - buf_ptr = ((const char *)buf_ptr) + rval.consumed; - size -= rval.consumed; - if(length > (ber_tlv_len_t)size) { - rval.code = RC_WMORE; - rval.consumed = 0; - return rval; - } - - st->size = (int)length; - /* The following better be optimized away. */ - if(sizeof(st->size) != sizeof(length) - && (ber_tlv_len_t)st->size != length) { - st->size = 0; - _ASN_DECODE_FAILED; - } - - st->buf = (uint8_t *)MALLOC(length + 1); - if(!st->buf) { - st->size = 0; - _ASN_DECODE_FAILED; - } - - memcpy(st->buf, buf_ptr, length); - st->buf[length] = '\0'; /* Just in case */ - - rval.code = RC_OK; - rval.consumed += length; - - ASN_DEBUG("Took %ld/%ld bytes to encode %s", - (long)rval.consumed, - (long)length, td->name); - - return rval; -} - -/* - * Encode an always-primitive type using DER. - */ -asn_enc_rval_t -der_encode_primitive(asn_TYPE_descriptor_t *td, void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t erval; - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; - - ASN_DEBUG("%s %s as a primitive type (tm=%d)", - cb?"Encoding":"Estimating", td->name, tag_mode); - - erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, - cb, app_key); - ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); - if(erval.encoded == -1) { - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - - if(cb && st->buf) { - if(cb(st->buf, st->size, app_key) < 0) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = sptr; - return erval; - } - } else { - assert(st->buf || st->size == 0); - } - - erval.encoded += st->size; - _ASN_ENCODED_OK(erval); -} - -void -ASN__PRIMITIVE_TYPE_free(asn_TYPE_descriptor_t *td, void *sptr, - int contents_only) { - ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; - - if(!td || !sptr) - return; - - ASN_DEBUG("Freeing %s as a primitive type", td->name); - - if(st->buf) - FREEMEM(st->buf); - - if(!contents_only) - FREEMEM(st); -} - - -/* - * Local internal type passed around as an argument. - */ -struct xdp_arg_s { - asn_TYPE_descriptor_t *type_descriptor; - void *struct_key; - xer_primitive_body_decoder_f *prim_body_decoder; - int decoded_something; - int want_more; -}; - - -static int -xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { - struct xdp_arg_s *arg = (struct xdp_arg_s *)key; - enum xer_pbd_rval bret; - - if(arg->decoded_something) { - if(xer_is_whitespace(chunk_buf, chunk_size)) - return 0; /* Skip it. */ - /* - * Decoding was done once already. Prohibit doing it again. - */ - return -1; - } - - bret = arg->prim_body_decoder(arg->type_descriptor, - arg->struct_key, chunk_buf, chunk_size); - switch(bret) { - case XPBD_SYSTEM_FAILURE: - case XPBD_DECODER_LIMIT: - case XPBD_BROKEN_ENCODING: - break; - case XPBD_BODY_CONSUMED: - /* Tag decoded successfully */ - arg->decoded_something = 1; - /* Fall through */ - case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ - return 0; - } - - return -1; -} - -static ssize_t -xer_decode__body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { - struct xdp_arg_s *arg = (struct xdp_arg_s *)key; - enum xer_pbd_rval bret; - - if(arg->decoded_something) { - if(xer_is_whitespace(chunk_buf, chunk_size)) - return chunk_size; - /* - * Decoding was done once already. Prohibit doing it again. - */ - return -1; - } - - if(!have_more) { - /* - * If we've received something like "1", we can't really - * tell whether it is really `1` or `123`, until we know - * that there is no more data coming. - * The have_more argument will be set to 1 once something - * like this is available to the caller of this callback: - * "1want_more = 1; - return -1; - } - - bret = arg->prim_body_decoder(arg->type_descriptor, - arg->struct_key, chunk_buf, chunk_size); - switch(bret) { - case XPBD_SYSTEM_FAILURE: - case XPBD_DECODER_LIMIT: - case XPBD_BROKEN_ENCODING: - break; - case XPBD_BODY_CONSUMED: - /* Tag decoded successfully */ - arg->decoded_something = 1; - /* Fall through */ - case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ - return chunk_size; - } - - return -1; -} - - -asn_dec_rval_t -xer_decode_primitive(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, - void **sptr, - size_t struct_size, - const char *opt_mname, - const void *buf_ptr, size_t size, - xer_primitive_body_decoder_f *prim_body_decoder - ) { - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - asn_struct_ctx_t s_ctx; - struct xdp_arg_s s_arg; - asn_dec_rval_t rc; - - /* - * Create the structure if does not exist. - */ - if(!*sptr) { - *sptr = CALLOC(1, struct_size); - if(!*sptr) _ASN_DECODE_FAILED; - } - - memset(&s_ctx, 0, sizeof(s_ctx)); - s_arg.type_descriptor = td; - s_arg.struct_key = *sptr; - s_arg.prim_body_decoder = prim_body_decoder; - s_arg.decoded_something = 0; - s_arg.want_more = 0; - - rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, - xml_tag, buf_ptr, size, - xer_decode__unexpected_tag, xer_decode__body); - switch(rc.code) { - case RC_OK: - if(!s_arg.decoded_something) { - char ch; - ASN_DEBUG("Primitive body is not recognized, " - "supplying empty one"); - /* - * Decoding opportunity has come and gone. - * Where's the result? - * Try to feed with empty body, see if it eats it. - */ - if(prim_body_decoder(s_arg.type_descriptor, - s_arg.struct_key, &ch, 0) - != XPBD_BODY_CONSUMED) { - /* - * This decoder does not like empty stuff. - */ - _ASN_DECODE_FAILED; - } - } - break; - case RC_WMORE: - /* - * Redo the whole thing later. - * We don't have a context to save intermediate parsing state. - */ - rc.consumed = 0; - break; - case RC_FAIL: - rc.consumed = 0; - if(s_arg.want_more) - rc.code = RC_WMORE; - else - _ASN_DECODE_FAILED; - break; - } - return rc; -} - diff --git a/src/third_party/asn1/asn_codecs_prim.h b/src/third_party/asn1/asn_codecs_prim.h deleted file mode 100644 index 58331aaa..00000000 --- a/src/third_party/asn1/asn_codecs_prim.h +++ /dev/null @@ -1,53 +0,0 @@ -/*- - * Copyright (c) 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef ASN_CODECS_PRIM_H -#define ASN_CODECS_PRIM_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - typedef struct ASN__PRIMITIVE_TYPE_s { - uint8_t *buf; /* Buffer with consecutive primitive encoding bytes */ - int size; /* Size of the buffer */ - } ASN__PRIMITIVE_TYPE_t; /* Do not use this type directly! */ - - asn_struct_free_f ASN__PRIMITIVE_TYPE_free; - ber_type_decoder_f ber_decode_primitive; - der_type_encoder_f der_encode_primitive; - - /* - * A callback specification for the xer_decode_primitive() function below. - */ - enum xer_pbd_rval { - XPBD_SYSTEM_FAILURE, /* System failure (memory shortage, etc) */ - XPBD_DECODER_LIMIT, /* Hit some decoder limitation or deficiency */ - XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */ - XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */ - XPBD_BODY_CONSUMED /* Body is recognized and consumed */ - }; - typedef enum xer_pbd_rval (xer_primitive_body_decoder_f) - (asn_TYPE_descriptor_t *td, void *struct_ptr, - const void *chunk_buf, size_t chunk_size); - - /* - * Specific function to decode simple primitive types. - * Also see xer_decode_general() in xer_decoder.h - */ - asn_dec_rval_t xer_decode_primitive(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *type_descriptor, - void **struct_ptr, size_t struct_size, - const char *opt_mname, - const void *buf_ptr, size_t size, - xer_primitive_body_decoder_f *prim_body_decoder - ); - -#ifdef __cplusplus -} -#endif - -#endif /* ASN_CODECS_PRIM_H */ diff --git a/src/third_party/asn1/asn_internal.h b/src/third_party/asn1/asn_internal.h deleted file mode 100644 index df58ba2f..00000000 --- a/src/third_party/asn1/asn_internal.h +++ /dev/null @@ -1,121 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2005, 2007 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Declarations internally useful for the ASN.1 support code. - */ -#ifndef _ASN_INTERNAL_H_ -#define _ASN_INTERNAL_H_ - -#include "asn_application.h" /* Application-visible API */ - -#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ -#include /* for assert() macro */ -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - /* Environment version might be used to avoid running with the old library */ -#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ - int get_asn1c_environment_version(void); /* Run-time version */ - -#define CALLOC(nmemb, size) calloc(nmemb, size) -#define MALLOC(size) malloc(size) -#define REALLOC(oldptr, size) realloc(oldptr, size) -#define FREEMEM(ptr) free(ptr) - - /* - * A macro for debugging the ASN.1 internals. - * You may enable or override it. - */ -#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ -#if EMIT_ASN_DEBUG == 1 /* And it was asked to emit this code... */ -#ifdef __GNUC__ -#ifdef ASN_THREAD_SAFE -#define asn_debug_indent 0 -#else /* !ASN_THREAD_SAFE */ - int asn_debug_indent; -#endif /* ASN_THREAD_SAFE */ -#define ASN_DEBUG(fmt, args...) do { \ - int adi = asn_debug_indent; \ - while(adi--) fprintf(stderr, " "); \ - fprintf(stderr, fmt, ##args); \ - fprintf(stderr, " (%s:%d)\n", \ - __FILE__, __LINE__); \ - } while(0) -#else /* !__GNUC__ */ - void ASN_DEBUG_f(const char *fmt, ...); -#define ASN_DEBUG ASN_DEBUG_f -#endif /* __GNUC__ */ -#else /* EMIT_ASN_DEBUG != 1 */ - static inline void ASN_DEBUG(const char *fmt, ...) { - (void)fmt; - } -#endif /* EMIT_ASN_DEBUG */ -#endif /* ASN_DEBUG */ - - /* - * Invoke the application-supplied callback and fail, if something is wrong. - */ -#define __ASN_E_cbc(buf, size) (cb((buf), (size), app_key) < 0) -#define _ASN_E_CALLBACK(foo) do { \ - if(foo) goto cb_failed; \ - } while(0) -#define _ASN_CALLBACK(buf, size) \ - _ASN_E_CALLBACK(__ASN_E_cbc(buf, size)) -#define _ASN_CALLBACK2(buf1, size1, buf2, size2) \ - _ASN_E_CALLBACK(__ASN_E_cbc(buf1, size1) || __ASN_E_cbc(buf2, size2)) -#define _ASN_CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ - _ASN_E_CALLBACK(__ASN_E_cbc(buf1, size1) \ - || __ASN_E_cbc(buf2, size2) \ - || __ASN_E_cbc(buf3, size3)) - -#define _i_ASN_TEXT_INDENT(nl, level) do { \ - int __level = (level); \ - int __nl = ((nl) != 0); \ - int __i; \ - if(__nl) _ASN_CALLBACK("\n", 1); \ - if(__level < 0) __level = 0; \ - for(__i = 0; __i < __level; __i++) \ - _ASN_CALLBACK(" ", 4); \ - er.encoded += __nl + 4 * __level; \ -} while(0) - -#define _i_INDENT(nl) do { \ - int __i; \ - if((nl) && cb("\n", 1, app_key) < 0) return -1; \ - for(__i = 0; __i < ilevel; __i++) \ - if(cb(" ", 4, app_key) < 0) return -1; \ -} while(0) - - /* - * Check stack against overflow, if limit is set. - */ -#define _ASN_DEFAULT_STACK_MAX (30000) - static inline int - _ASN_STACK_OVERFLOW_CHECK(asn_codec_ctx_t *ctx) { - if(ctx && ctx->max_stack_size) { - - /* ctx MUST be allocated on the stack */ - ptrdiff_t usedstack = ((char *)ctx - (char *)&ctx); - if(usedstack > 0) usedstack = -usedstack; /* grows up! */ - - /* double negative required to avoid int wrap-around */ - if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { - ASN_DEBUG("Stack limit %ld reached", - (long)ctx->max_stack_size); - return -1; - } - } - return 0; - } - -#ifdef __cplusplus -} -#endif - -#endif /* _ASN_INTERNAL_H_ */ diff --git a/src/third_party/asn1/asn_system.h b/src/third_party/asn1/asn_system.h deleted file mode 100644 index a992230b..00000000 --- a/src/third_party/asn1/asn_system.h +++ /dev/null @@ -1,129 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2007 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * Miscellaneous system-dependent types. - */ -#ifndef _ASN_SYSTEM_H_ -#define _ASN_SYSTEM_H_ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include /* For snprintf(3) */ -#include /* For *alloc(3) */ -#include /* For memcpy(3) */ -#include /* For size_t */ -#include /* For LONG_MAX */ -#include /* For va_start */ -#include /* for offsetof and ptrdiff_t */ - -#ifdef _WIN32 - -#include -#define snprintf _snprintf -#define vsnprintf _vsnprintf - -/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */ -#define sys_ntohl(l) ((((l) << 24) & 0xff000000) \ - | (((l) << 16) & 0xff0000) \ - | (((l) << 8) & 0xff00) \ - | ((l) & 0xff)) - -#ifdef _MSC_VER /* MSVS.Net */ -#ifndef __cplusplus -#define inline __inline -#endif -#ifndef ASSUMESTDTYPES /* Standard types have been defined elsewhere */ -#define ssize_t SSIZE_T -typedef char int8_t; -typedef short int16_t; -typedef int int32_t; -typedef unsigned char uint8_t; -typedef unsigned short uint16_t; -typedef unsigned int uint32_t; -#endif /* ASSUMESTDTYPES */ -#define WIN32_LEAN_AND_MEAN -#include -#include -#define isnan _isnan -#define finite _finite -#define copysign _copysign -#define ilogb _logb -#else /* !_MSC_VER */ -#include -#endif /* _MSC_VER */ - -#else /* !_WIN32 */ - -#if defined(__vxworks) -#include -#else /* !defined(__vxworks) */ - -#include /* C99 specifies this file */ -/* - * 1. Earlier FreeBSD version didn't have , - * but was present. - * 2. Sun Solaris requires for alloca(3), - * but does not have . - */ -#if (!defined(__FreeBSD__) || !defined(_SYS_INTTYPES_H_)) -#if defined(sun) -#include /* For alloca(3) */ -#include /* for finite(3) */ -#elif defined(__hpux) -#ifdef __GNUC__ -#include /* For alloca(3) */ -#else /* !__GNUC__ */ -#define inline -#endif /* __GNUC__ */ -#else -#include /* SUSv2+ and C99 specify this file, for uintXX_t */ -#endif /* defined(sun) */ -#endif - -#include /* for ntohl() */ -#define sys_ntohl(foo) ntohl(foo) - -#endif /* defined(__vxworks) */ - -#endif /* _WIN32 */ - -#if __GNUC__ >= 3 -#ifndef GCC_PRINTFLIKE -#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) -#endif -#ifndef GCC_NOTUSED -#define GCC_NOTUSED __attribute__((unused)) -#endif -#else -#ifndef GCC_PRINTFLIKE -#define GCC_PRINTFLIKE(fmt,var) /* nothing */ -#endif -#ifndef GCC_NOTUSED -#define GCC_NOTUSED -#endif -#endif - -/* Figure out if thread safety is requested */ -#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT)) -#define ASN_THREAD_SAFE -#endif /* Thread safety */ - -#ifndef offsetof /* If not defined by */ -#define offsetof(s, m) ((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0)) -#endif /* offsetof */ - -#ifndef MIN /* Suitable for comparing primitive types (integers) */ -#if defined(__GNUC__) -#define MIN(a,b) ({ __typeof a _a = a; __typeof b _b = b; \ - ((_a)<(_b)?(_a):(_b)); }) -#else /* !__GNUC__ */ -#define MIN(a,b) ((a)<(b)?(a):(b)) /* Unsafe variant */ -#endif /* __GNUC__ */ -#endif /* MIN */ - -#endif /* _ASN_SYSTEM_H_ */ diff --git a/src/third_party/asn1/asntest.c b/src/third_party/asn1/asntest.c deleted file mode 100755 index 0bb774b0..00000000 --- a/src/third_party/asn1/asntest.c +++ /dev/null @@ -1,60 +0,0 @@ -#include -#include - -#include "PokerTHMessage.h" - -ssize_t -simple_serializer(PokerTHMessage_t *msg, unsigned char *buf, size_t size) { - asn_enc_rval_t er; /* Encoder return value */ - er = der_encode_to_buffer(&asn_DEF_PokerTHMessage, msg, buf, size); - if(er.encoded == -1) { - /* - * Failed to encode the rectangle data. - */ - fprintf(stderr, "Cannot encode %s\n", er.failed_type->name); - return -1; - } else { - /* Return the number of bytes */ - return er.encoded; - } -} - -PokerTHMessage_t * -simple_deserializer(const unsigned char *buf, size_t size) { - PokerTHMessage_t *msg = 0; /* Note this 0! */ - asn_dec_rval_t rval; - rval = ber_decode(0, &asn_DEF_PokerTHMessage, (void **)&msg, buf, size); - if(rval.code == RC_OK) { - return msg; /* Decoding succeeded */ - } else { - /* Free partially decoded message */ - ASN_STRUCT_FREE(asn_DEF_PokerTHMessage, msg); - return 0; - } -} - -int -main() -{ - PokerTHMessage_t *msg; - unsigned char buf[256]; - ssize_t outSize, i; - msg = calloc(1, sizeof(PokerTHMessage_t)); - memset(msg, 0, sizeof(PokerTHMessage_t)); - msg->present = PokerTHMessage_PR_initMessage; - msg->choice.initMessage.requestedVersion.major = 1; - msg->choice.initMessage.login.present = login_PR_anonymousLogin; - OCTET_STRING_fromString(&msg->choice.initMessage.login.choice.anonymousLogin.playerName, "Hallo"); - outSize = simple_serializer(msg, buf, sizeof(buf)); - ASN_STRUCT_FREE(asn_DEF_PokerTHMessage, msg); - for (i = 0; i < outSize; i++) - printf("%02x ", buf[i]); - printf("\n"); - msg = simple_deserializer(buf, outSize - 1); - if (msg) - printf("error\n"); - msg = simple_deserializer(buf, outSize+1); - xer_fprint(stdout, &asn_DEF_PokerTHMessage, msg); - return 0; -} - diff --git a/src/third_party/asn1/ber_decoder.c b/src/third_party/asn1/ber_decoder.c deleted file mode 100644 index 2eabc6af..00000000 --- a/src/third_party/asn1/ber_decoder.c +++ /dev/null @@ -1,291 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) -#undef RETURN -#define RETURN(_code) do { \ - asn_dec_rval_t rval; \ - rval.code = _code; \ - if(opt_ctx) opt_ctx->step = step; /* Save context */ \ - if(_code == RC_OK || opt_ctx) \ - rval.consumed = consumed_myself; \ - else \ - rval.consumed = 0; /* Context-free */ \ - return rval; \ - } while(0) - -/* - * The BER decoder of any type. - */ -asn_dec_rval_t -ber_decode(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *type_descriptor, - void **struct_ptr, const void *ptr, size_t size) { - asn_codec_ctx_t s_codec_ctx; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = _ASN_DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* - * Invoke type-specific decoder. - */ - return type_descriptor->ber_decoder(opt_codec_ctx, type_descriptor, - struct_ptr, /* Pointer to the destination structure */ - ptr, size, /* Buffer and its size */ - 0 /* Default tag mode is 0 */ - ); -} - -/* - * Check the set of >> tags matches the definition. - */ -asn_dec_rval_t -ber_check_tags(asn_codec_ctx_t *opt_codec_ctx, - asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx, - const void *ptr, size_t size, int tag_mode, int last_tag_form, - ber_tlv_len_t *last_length, int *opt_tlv_form) { - ssize_t consumed_myself = 0; - ssize_t tag_len; - ssize_t len_len; - ber_tlv_tag_t tlv_tag; - ber_tlv_len_t tlv_len; - ber_tlv_len_t limit_len = -1; - int expect_00_terminators = 0; - int tlv_constr = -1; /* If CHOICE, opt_tlv_form is not given */ - int step = opt_ctx ? opt_ctx->step : 0; /* Where we left previously */ - int tagno; - - /* - * Make sure we didn't exceed the maximum stack size. - */ - if(_ASN_STACK_OVERFLOW_CHECK(opt_codec_ctx)) - RETURN(RC_FAIL); - - /* - * So what does all this implicit skip stuff mean? - * Imagine two types, - * A ::= [5] IMPLICIT T - * B ::= [2] EXPLICIT T - * Where T is defined as - * T ::= [4] IMPLICIT SEQUENCE { ... } - * - * Let's say, we are starting to decode type A, given the - * following TLV stream: <5> <0>. What does this mean? - * It means that the type A contains type T which is, - * in turn, empty. - * Remember though, that we are still in A. We cannot - * just pass control to the type T decoder. Why? Because - * the type T decoder expects <4> <0>, not <5> <0>. - * So, we must make sure we are going to receive <5> while - * still in A, then pass control to the T decoder, indicating - * that the tag <4> was implicitly skipped. The decoder of T - * hence will be prepared to treat <4> as valid tag, and decode - * it appropriately. - */ - - tagno = step /* Continuing where left previously */ - + (tag_mode==1?-1:0) - ; - ASN_DEBUG("ber_check_tags(%s, size=%ld, tm=%d, step=%d, tagno=%d)", - td->name, (long)size, tag_mode, step, tagno); - /* assert(td->tags_count >= 1) May not be the case for CHOICE or ANY */ - - if(tag_mode == 0 && tagno == td->tags_count) { - /* - * This must be the _untagged_ ANY type, - * which outermost tag isn't known in advance. - * Fetch the tag and length separately. - */ - tag_len = ber_fetch_tag(ptr, size, &tlv_tag); - switch(tag_len) { - case -1: - RETURN(RC_FAIL); - case 0: - RETURN(RC_WMORE); - } - tlv_constr = BER_TLV_CONSTRUCTED(ptr); - len_len = ber_fetch_length(tlv_constr, - (const char *)ptr + tag_len, size - tag_len, &tlv_len); - switch(len_len) { - case -1: - RETURN(RC_FAIL); - case 0: - RETURN(RC_WMORE); - } - ASN_DEBUG("Advancing %ld in ANY case", - (long)(tag_len + len_len)); - ADVANCE(tag_len + len_len); - } else { - assert(tagno < td->tags_count); /* At least one loop */ - } - for((void)tagno; tagno < td->tags_count; tagno++, step++) { - - /* - * Fetch and process T from TLV. - */ - tag_len = ber_fetch_tag(ptr, size, &tlv_tag); - ASN_DEBUG("Fetching tag from {%p,%ld}: " - "len %ld, step %d, tagno %d got %s", - ptr, (long)size, - (long)tag_len, step, tagno, - ber_tlv_tag_string(tlv_tag)); - switch(tag_len) { - case -1: - RETURN(RC_FAIL); - case 0: - RETURN(RC_WMORE); - } - - tlv_constr = BER_TLV_CONSTRUCTED(ptr); - - /* - * If {I}, don't check anything. - * If {I,B,C}, check B and C unless we're at I. - */ - if(tag_mode != 0 && step == 0) { - /* - * We don't expect tag to match here. - * It's just because we don't know how the tag - * is supposed to look like. - */ - } else { - assert(tagno >= 0); /* Guaranteed by the code above */ - if(tlv_tag != td->tags[tagno]) { - /* - * Unexpected tag. Too bad. - */ - ASN_DEBUG("Expected: %s, " - "expectation failed (tn=%d, tm=%d)", - ber_tlv_tag_string(td->tags[tagno]), - tagno, tag_mode - ); - RETURN(RC_FAIL); - } - } - - /* - * Attention: if there are more tags expected, - * ensure that the current tag is presented - * in constructed form (it contains other tags!). - * If this one is the last one, check that the tag form - * matches the one given in descriptor. - */ - if(tagno < (td->tags_count - 1)) { - if(tlv_constr == 0) { - ASN_DEBUG("tlv_constr = %d, expfail", - tlv_constr); - RETURN(RC_FAIL); - } - } else { - if(last_tag_form != tlv_constr - && last_tag_form != -1) { - ASN_DEBUG("last_tag_form %d != %d", - last_tag_form, tlv_constr); - RETURN(RC_FAIL); - } - } - - /* - * Fetch and process L from TLV. - */ - len_len = ber_fetch_length(tlv_constr, - (const char *)ptr + tag_len, size - tag_len, &tlv_len); - ASN_DEBUG("Fetchinig len = %ld", (long)len_len); - switch(len_len) { - case -1: - RETURN(RC_FAIL); - case 0: - RETURN(RC_WMORE); - } - - /* - * FIXME - * As of today, the chain of tags - * must either contain several indefinite length TLVs, - * or several definite length ones. - * No mixing is allowed. - */ - if(tlv_len == -1) { - /* - * Indefinite length. - */ - if(limit_len == -1) { - expect_00_terminators++; - } else { - ASN_DEBUG("Unexpected indefinite length " - "in a chain of definite lengths"); - RETURN(RC_FAIL); - } - ADVANCE(tag_len + len_len); - continue; - } else { - if(expect_00_terminators) { - ASN_DEBUG("Unexpected definite length " - "in a chain of indefinite lengths"); - RETURN(RC_FAIL); - } - } - - /* - * Check that multiple TLVs specify ever decreasing length, - * which is consistent. - */ - if(limit_len == -1) { - limit_len = tlv_len + tag_len + len_len; - if(limit_len < 0) { - /* Too great tlv_len value? */ - RETURN(RC_FAIL); - } - } else if(limit_len != tlv_len + tag_len + len_len) { - /* - * Inner TLV specifies length which is inconsistent - * with the outer TLV's length value. - */ - ASN_DEBUG("Outer TLV is %ld and inner is %ld", - (long)limit_len, (long)tlv_len); - RETURN(RC_FAIL); - } - - ADVANCE(tag_len + len_len); - - limit_len -= (tag_len + len_len); - if((ssize_t)size > limit_len) { - /* - * Make sure that we won't consume more bytes - * from the parent frame than the inferred limit. - */ - size = limit_len; - } - } - - if(opt_tlv_form) - *opt_tlv_form = tlv_constr; - if(expect_00_terminators) - *last_length = -expect_00_terminators; - else - *last_length = tlv_len; - - RETURN(RC_OK); -} diff --git a/src/third_party/asn1/ber_decoder.h b/src/third_party/asn1/ber_decoder.h deleted file mode 100644 index 8012c41e..00000000 --- a/src/third_party/asn1/ber_decoder.h +++ /dev/null @@ -1,64 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BER_DECODER_H_ -#define _BER_DECODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - struct asn_TYPE_descriptor_s; /* Forward declaration */ - struct asn_codec_ctx_s; /* Forward declaration */ - - /* - * The BER decoder of any type. - * This function may be invoked directly from the application. - * The der_encode() function (der_encoder.h) is an opposite to ber_decode(). - */ - asn_dec_rval_t ber_decode(struct asn_codec_ctx_s *opt_codec_ctx, - struct asn_TYPE_descriptor_s *type_descriptor, - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of that buffer */ - ); - - /* - * Type of generic function which decodes the byte stream into the structure. - */ - typedef asn_dec_rval_t (ber_type_decoder_f)( - struct asn_codec_ctx_s *opt_codec_ctx, - struct asn_TYPE_descriptor_s *type_descriptor, - void **struct_ptr, const void *buf_ptr, size_t size, - int tag_mode); - - /******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - - /* - * Check that all tags correspond to the type definition (as given in head). - * On return, last_length would contain either a non-negative length of the - * value part of the last TLV, or the negative number of expected - * "end of content" sequences. The number may only be negative if the - * head->last_tag_form is non-zero. - */ - asn_dec_rval_t ber_check_tags( - struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */ - struct asn_TYPE_descriptor_s *type_descriptor, - asn_struct_ctx_t *opt_ctx, /* saved decoding context */ - const void *ptr, size_t size, - int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ - int last_tag_form, /* {-1,0:1}: any, primitive, constr */ - ber_tlv_len_t *last_length, - int *opt_tlv_form /* optional tag form */ - ); - -#ifdef __cplusplus -} -#endif - -#endif /* _BER_DECODER_H_ */ diff --git a/src/third_party/asn1/ber_tlv_length.c b/src/third_party/asn1/ber_tlv_length.c deleted file mode 100644 index b49e5dbc..00000000 --- a/src/third_party/asn1/ber_tlv_length.c +++ /dev/null @@ -1,178 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -ssize_t -ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, - ber_tlv_len_t *len_r) { - const uint8_t *buf = (const uint8_t *)bufptr; - unsigned oct; - - if(size == 0) - return 0; /* Want more */ - - oct = *(const uint8_t *)buf; - if((oct & 0x80) == 0) { - /* - * Short definite length. - */ - *len_r = oct; /* & 0x7F */ - return 1; - } else { - ber_tlv_len_t len; - size_t skipped; - - if(_is_constructed && oct == 0x80) { - *len_r = -1; /* Indefinite length */ - return 1; - } - - if(oct == 0xff) { - /* Reserved in standard for future use. */ - return -1; - } - - oct &= 0x7F; /* Leave only the 7 LS bits */ - for(len = 0, buf++, skipped = 1; - oct && (++skipped <= size); buf++, oct--) { - - len = (len << 8) | *buf; - if(len < 0 - || (len >> ((8 * sizeof(len)) - 8) && oct > 1)) { - /* - * Too large length value. - */ - return -1; - } - } - - if(oct == 0) { - ber_tlv_len_t lenplusepsilon = (size_t)len + 1024; - /* - * Here length may be very close or equal to 2G. - * However, the arithmetics used in some decoders - * may add some (small) quantities to the length, - * to check the resulting value against some limits. - * This may result in integer wrap-around, which - * we try to avoid by checking it earlier here. - */ - if(lenplusepsilon < 0) { - /* Too large length value */ - return -1; - } - - *len_r = len; - return skipped; - } - - return 0; /* Want more */ - } - -} - -ssize_t -ber_skip_length(asn_codec_ctx_t *opt_codec_ctx, - int _is_constructed, const void *ptr, size_t size) { - ber_tlv_len_t vlen; /* Length of V in TLV */ - ssize_t tl; /* Length of L in TLV */ - ssize_t ll; /* Length of L in TLV */ - size_t skip; - - /* - * Make sure we didn't exceed the maximum stack size. - */ - if(_ASN_STACK_OVERFLOW_CHECK(opt_codec_ctx)) - return -1; - - /* - * Determine the size of L in TLV. - */ - ll = ber_fetch_length(_is_constructed, ptr, size, &vlen); - if(ll <= 0) return ll; - - /* - * Definite length. - */ - if(vlen >= 0) { - skip = ll + vlen; - if(skip > size) - return 0; /* Want more */ - return skip; - } - - /* - * Indefinite length! - */ - ASN_DEBUG("Skipping indefinite length"); - for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) { - ber_tlv_tag_t tag; - - /* Fetch the tag */ - tl = ber_fetch_tag(ptr, size, &tag); - if(tl <= 0) return tl; - - ll = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - ((const char *)ptr) + tl, size - tl); - if(ll <= 0) return ll; - - skip += tl + ll; - - /* - * This may be the end of the indefinite length structure, - * two consecutive 0 octets. - * Check if it is true. - */ - if(((const uint8_t *)ptr)[0] == 0 - && ((const uint8_t *)ptr)[1] == 0) - return skip; - - ptr = ((const char *)ptr) + tl + ll; - size -= tl + ll; - } - - /* UNREACHABLE */ -} - -size_t -der_tlv_length_serialize(ber_tlv_len_t len, void *bufp, size_t size) { - size_t required_size; /* Size of len encoding */ - uint8_t *buf = (uint8_t *)bufp; - uint8_t *end; - size_t i; - - if(len <= 127) { - /* Encoded in 1 octet */ - if(size) *buf = (uint8_t)len; - return 1; - } - - /* - * Compute the size of the subsequent bytes. - */ - for(required_size = 1, i = 8; i < 8 * sizeof(len); i += 8) { - if(len >> i) - required_size++; - else - break; - } - - if(size <= required_size) - return required_size + 1; - - *buf++ = (uint8_t)(0x80 | required_size); /* Length of the encoding */ - - /* - * Produce the len encoding, space permitting. - */ - end = buf + required_size; - for(i -= 8; buf < end; i -= 8, buf++) - *buf = (uint8_t)(len >> i); - - return required_size + 1; -} - diff --git a/src/third_party/asn1/ber_tlv_length.h b/src/third_party/asn1/ber_tlv_length.h deleted file mode 100644 index 2d1648e8..00000000 --- a/src/third_party/asn1/ber_tlv_length.h +++ /dev/null @@ -1,50 +0,0 @@ -/*- - * Copyright (c) 2003 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BER_TLV_LENGTH_H_ -#define _BER_TLV_LENGTH_H_ - -#ifdef __cplusplus -extern "C" { -#endif - - typedef ssize_t ber_tlv_len_t; - - /* - * This function tries to fetch the length of the BER TLV value and place it - * in *len_r. - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering length. - * >0: Number of bytes used from bufptr. - * On return with >0, len_r is constrained as -1..MAX, where -1 mean - * that the value is of indefinite length. - */ - ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, - ber_tlv_len_t *len_r); - - /* - * This function expects bufptr to be positioned over L in TLV. - * It returns number of bytes occupied by L and V together, suitable - * for skipping. The function properly handles indefinite length. - * RETURN VALUES: - * Standard {-1,0,>0} convention. - */ - ssize_t ber_skip_length( - struct asn_codec_ctx_s *opt_codec_ctx, /* optional context */ - int _is_constructed, const void *bufptr, size_t size); - - /* - * This function serializes the length (L from TLV) in DER format. - * It always returns number of bytes necessary to represent the length, - * it is a caller's responsibility to check the return value - * against the supplied buffer's size. - */ - size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size); - -#ifdef __cplusplus -} -#endif - -#endif /* _BER_TLV_LENGTH_H_ */ diff --git a/src/third_party/asn1/ber_tlv_tag.c b/src/third_party/asn1/ber_tlv_tag.c deleted file mode 100644 index 2ddcb161..00000000 --- a/src/third_party/asn1/ber_tlv_tag.c +++ /dev/null @@ -1,152 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -ssize_t -ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { - ber_tlv_tag_t val; - ber_tlv_tag_t tclass; - size_t skipped; - - if(size == 0) - return 0; - - val = *(const uint8_t *)ptr; - tclass = (val >> 6); - if((val &= 0x1F) != 0x1F) { - /* - * Simple form: everything encoded in a single octet. - * Tag Class is encoded using two least significant bits. - */ - *tag_r = (val << 2) | tclass; - return 1; - } - - /* - * Each octet contains 7 bits of useful information. - * The MSB is 0 if it is the last octet of the tag. - */ - for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; - skipped <= size; - ptr = ((const char *)ptr) + 1, skipped++) { - unsigned int oct = *(const uint8_t *)ptr; - if(oct & 0x80) { - val = (val << 7) | (oct & 0x7F); - /* - * Make sure there are at least 9 bits spare - * at the MS side of a value. - */ - if(val >> ((8 * sizeof(val)) - 9)) { - /* - * We would not be able to accomodate - * any more tag bits. - */ - return -1; - } - } else { - val = (val << 7) | oct; - *tag_r = (val << 2) | tclass; - return skipped; - } - } - - return 0; /* Want more */ -} - - -ssize_t -ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) { - char buf[sizeof("[APPLICATION ]") + 32]; - ssize_t ret; - - ret = ber_tlv_tag_snprint(tag, buf, sizeof(buf)); - if(ret >= (ssize_t)sizeof(buf) || ret < 2) { - errno = EPERM; - return -1; - } - - return fwrite(buf, 1, ret, f); -} - -ssize_t -ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) { - char *type = 0; - int ret; - - switch(tag & 0x3) { - case ASN_TAG_CLASS_UNIVERSAL: - type = "UNIVERSAL "; - break; - case ASN_TAG_CLASS_APPLICATION: - type = "APPLICATION "; - break; - case ASN_TAG_CLASS_CONTEXT: - type = ""; - break; - case ASN_TAG_CLASS_PRIVATE: - type = "PRIVATE "; - break; - } - - ret = snprintf(buf, size, "[%s%u]", type, ((unsigned)tag) >> 2); - if(ret <= 0 && size) buf[0] = '\0'; /* against broken libc's */ - - return ret; -} - -char * -ber_tlv_tag_string(ber_tlv_tag_t tag) { - static char buf[sizeof("[APPLICATION ]") + 32]; - - (void)ber_tlv_tag_snprint(tag, buf, sizeof(buf)); - - return buf; -} - - -size_t -ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufp, size_t size) { - int tclass = BER_TAG_CLASS(tag); - ber_tlv_tag_t tval = BER_TAG_VALUE(tag); - uint8_t *buf = (uint8_t *)bufp; - uint8_t *end; - size_t required_size; - size_t i; - - if(tval <= 30) { - /* Encoded in 1 octet */ - if(size) buf[0] = (tclass << 6) | tval; - return 1; - } else if(size) { - *buf++ = (tclass << 6) | 0x1F; - size--; - } - - /* - * Compute the size of the subsequent bytes. - */ - for(required_size = 1, i = 7; i < 8 * sizeof(tval); i += 7) { - if(tval >> i) - required_size++; - else - break; - } - - if(size < required_size) - return required_size + 1; - - /* - * Fill in the buffer, space permitting. - */ - end = buf + required_size - 1; - for(i -= 7; buf < end; i -= 7, buf++) - *buf = 0x80 | ((tval >> i) & 0x7F); - *buf = (tval & 0x7F); /* Last octet without high bit */ - - return required_size + 1; -} - diff --git a/src/third_party/asn1/ber_tlv_tag.h b/src/third_party/asn1/ber_tlv_tag.h deleted file mode 100644 index 443dde52..00000000 --- a/src/third_party/asn1/ber_tlv_tag.h +++ /dev/null @@ -1,60 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _BER_TLV_TAG_H_ -#define _BER_TLV_TAG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - - enum asn_tag_class { - ASN_TAG_CLASS_UNIVERSAL = 0, /* 0b00 */ - ASN_TAG_CLASS_APPLICATION = 1, /* 0b01 */ - ASN_TAG_CLASS_CONTEXT = 2, /* 0b10 */ - ASN_TAG_CLASS_PRIVATE = 3 /* 0b11 */ - }; - typedef unsigned ber_tlv_tag_t; /* BER TAG from Tag-Length-Value */ - - /* - * Tag class is encoded together with tag value for optimization purposes. - */ -#define BER_TAG_CLASS(tag) ((tag) & 0x3) -#define BER_TAG_VALUE(tag) ((tag) >> 2) -#define BER_TLV_CONSTRUCTED(tagptr) (((*(const uint8_t *)tagptr)&0x20)?1:0) - -#define BER_TAGS_EQUAL(tag1, tag2) ((tag1) == (tag2)) - - /* - * Several functions for printing the TAG in the canonical form - * (i.e. "[PRIVATE 0]"). - * Return values correspond to their libc counterparts (if any). - */ - ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen); - ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *); - char *ber_tlv_tag_string(ber_tlv_tag_t tag); - - - /* - * This function tries to fetch the tag from the input stream. - * RETURN VALUES: - * 0: More data expected than bufptr contains. - * -1: Fatal error deciphering tag. - * >0: Number of bytes used from bufptr. tag_r will contain the tag. - */ - ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r); - - /* - * This function serializes the tag (T from TLV) in BER format. - * It always returns number of bytes necessary to represent the tag, - * it is a caller's responsibility to check the return value - * against the supplied buffer's size. - */ - size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size); - -#ifdef __cplusplus -} -#endif - -#endif /* _BER_TLV_TAG_H_ */ diff --git a/src/third_party/asn1/constr_CHOICE.c b/src/third_party/asn1/constr_CHOICE.c deleted file mode 100644 index df4641e9..00000000 --- a/src/third_party/asn1/constr_CHOICE.c +++ /dev/null @@ -1,1132 +0,0 @@ -/* - * Copyright (c) 2003, 2004, 2005, 2006, 2007 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num;\ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * See the definitions. - */ -static int _fetch_present_idx(const void *struct_ptr, int off, int size); -static void _set_present_idx(void *sptr, int offset, int size, int pres); - -/* - * Tags are canonically sorted in the tag to member table. - */ -static int -_search4tag(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) - return 0; - else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - -/* - * The decoder of the CHOICE type. - */ -asn_dec_rval_t -CHOICE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **struct_ptr, const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - ssize_t tag_len; /* Length of TLV's T */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - ASN_DEBUG("Decoding %s as CHOICE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - if(tag_mode || td->tags_count) { - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, -1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) { - /* ?Substracted below! */ - ctx->left += rval.consumed; - } - ADVANCE(rval.consumed); - } else { - ctx->left = -1; - } - - NEXT_PHASE(ctx); - - ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", - (long)ctx->left, (long)size); - - /* Fall through */ - case 1: - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); - switch(tag_len) { - case 0: - if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: - RETURN(RC_FAIL); - } - - do { - asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key; - - key.el_tag = tlv_tag; - t2m = (asn_TYPE_tag2member_t *)bsearch(&key, - specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _search4tag); - if(t2m) { - /* - * Found the element corresponding to the tag. - */ - NEXT_PHASE(ctx); - ctx->step = t2m->el_no; - break; - } else if(specs->ext_start == -1) { - ASN_DEBUG("Unexpected tag %s " - "in non-extensible CHOICE %s", - ber_tlv_tag_string(tlv_tag), td->name); - RETURN(RC_FAIL); - } else { - /* Skip this tag */ - ssize_t skip; - - ASN_DEBUG("Skipping unknown tag %s", - ber_tlv_tag_string(tlv_tag)); - - skip = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tag_len, - LEFT - tag_len); - - switch(skip) { - case 0: - if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: - RETURN(RC_FAIL); - } - - ADVANCE(skip + tag_len); - RETURN(RC_OK); - } - } while(0); - - case 2: - /* - * PHASE 2. - * Read in the element. - */ - do { - asn_TYPE_member_t *elm;/* CHOICE's element */ - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - elm = &elements[ctx->step]; - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - /* Set presence to be able to free it properly at any time */ - _set_present_idx(st, specs->pres_offset, - specs->pres_size, ctx->step + 1); - /* - * Invoke the member fetch routine according to member's type - */ - rval = elm->type->ber_decoder(opt_codec_ctx, elm->type, - memb_ptr2, ptr, LEFT, elm->tag_mode); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - RETURN(RC_FAIL); - case RC_FAIL: /* Fatal error */ - RETURN(rval.code); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } while(0); - - NEXT_PHASE(ctx); - - /* Fall through */ - case 3: - ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", - td->name, (long)ctx->left, (long)size, - tag_mode, td->tags_count); - - if(ctx->left > 0) { - /* - * The type must be fully decoded - * by the CHOICE member-specific decoder. - */ - RETURN(RC_FAIL); - } - - if(ctx->left == -1 - && !(tag_mode || td->tags_count)) { - /* - * This is an untagged CHOICE. - * It doesn't contain nothing - * except for the member itself, including all its tags. - * The decoding is completed. - */ - NEXT_PHASE(ctx); - break; - } - - /* - * Read in the "end of data chunks"'s. - */ - while(ctx->left < 0) { - ssize_t tl; - - tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tl) { - case 0: - if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: - RETURN(RC_FAIL); - } - - /* - * Expected <0><0>... - */ - if(((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Correctly finished with <0><0>. - */ - ADVANCE(2); - ctx->left++; - continue; - } - } else { - ASN_DEBUG("Unexpected continuation in %s", - td->name); - RETURN(RC_FAIL); - } - - /* UNREACHABLE */ - } - - NEXT_PHASE(ctx); - case 4: - /* No meaningful work here */ - break; - } - - RETURN(RC_OK); -} - -asn_enc_rval_t -CHOICE_encode_der(asn_TYPE_descriptor_t *td, void *sptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE element */ - asn_enc_rval_t erval; - void *memb_ptr; - size_t computed_size = 0; - int present; - - if(!sptr) _ASN_ENCODE_FAILED; - - ASN_DEBUG("%s %s as CHOICE", - cb?"Encoding":"Estimating", td->name); - - present = _fetch_present_idx(sptr, - specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present <= 0 || present > td->elements_count) { - if(present == 0 && td->elements_count == 0) { - /* The CHOICE is empty?! */ - erval.encoded = 0; - _ASN_ENCODED_OK(erval); - } - _ASN_ENCODE_FAILED; - } - - /* - * Seek over the present member of the structure. - */ - elm = &td->elements[present-1]; - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)sptr + elm->memb_offset); - if(memb_ptr == 0) { - if(elm->optional) { - erval.encoded = 0; - _ASN_ENCODED_OK(erval); - } - /* Mandatory element absent */ - _ASN_ENCODE_FAILED; - } - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - } - - /* - * If the CHOICE itself is tagged EXPLICIT: - * T ::= [2] EXPLICIT CHOICE { ... } - * Then emit the appropriate tags. - */ - if(tag_mode == 1 || td->tags_count) { - /* - * For this, we need to pre-compute the member. - */ - ssize_t ret; - - /* Encode member with its tag */ - erval = elm->type->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, 0, 0); - if(erval.encoded == -1) - return erval; - - /* Encode CHOICE with parent or my own tag */ - ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, - cb, app_key); - if(ret == -1) - _ASN_ENCODE_FAILED; - computed_size += ret; - } - - /* - * Encode the single underlying member. - */ - erval = elm->type->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, cb, app_key); - if(erval.encoded == -1) - return erval; - - ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", - (long)erval.encoded, (long)computed_size); - - erval.encoded += computed_size; - - return erval; -} - -ber_tlv_tag_t -CHOICE_outmost_tag(asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { - asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; - int present; - - assert(tag_mode == 0); - (void)tag_mode; - assert(tag == 0); - (void)tag; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); - - if(present > 0 || present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *) - ((const char *)ptr + elm->memb_offset); - } else { - memb_ptr = (const void *) - ((const char *)ptr + elm->memb_offset); - } - - return asn_TYPE_outmost_tag(elm->type, memb_ptr, - elm->tag_mode, elm->tag); - } else { - return (ber_tlv_tag_t)-1; - } -} - -int -CHOICE_constraint(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; - int present; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) - return 0; - _ASN_CTFAIL(app_key, td, sptr, - "%s: mandatory CHOICE element %s absent (%s:%d)", - td->name, elm->name, __FILE__, __LINE__); - return -1; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(elm->memb_constraints) { - return elm->memb_constraints(elm->type, memb_ptr, - ctfailcb, app_key); - } else { - int ret = elm->type->check_constraints(elm->type, - memb_ptr, ctfailcb, app_key); - /* - * Cannot inherit it eralier: - * need to make sure we get the updated version. - */ - elm->memb_constraints = elm->type->check_constraints; - return ret; - } - } else { - _ASN_CTFAIL(app_key, td, sptr, - "%s: no CHOICE element given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } -} - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - buf_ptr = ((const char *)buf_ptr) + num;\ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -CHOICE_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **struct_ptr, const char *opt_mname, - const void *buf_ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval; /* Return value of a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - int edx; /* Element index */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - if(ctx->phase == 0 && !*xml_tag) - ctx->phase = 1; /* Skip the outer tag checking phase */ - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - * Phase 3: Only waiting for closing tag. - * Phase 4: Skipping unknown extensions. - * Phase 5: PHASED OUT - */ - for(edx = ctx->step; ctx->phase <= 4;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - asn_TYPE_member_t *elm; - - /* - * Go inside the member. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - elm = &td->elements[edx]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st - + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Start/Continue decoding the inner member */ - tmprval = elm->type->xer_decoder(opt_codec_ctx, - elm->type, memb_ptr2, elm->name, - buf_ptr, size); - XER_ADVANCE(tmprval.consumed); - ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", - elm->type->name, tmprval.code); - if(tmprval.code != RC_OK) - RETURN(tmprval.code); - assert(_fetch_present_idx(st, - specs->pres_offset, specs->pres_size) == 0); - /* Record what we've got */ - _set_present_idx(st, - specs->pres_offset, specs->pres_size, edx + 1); - ctx->phase = 3; - /* Fall through */ - } - - /* No need to wait for closing tag; special mode. */ - if(ctx->phase == 3 && !*xml_tag) { - ctx->phase = 5; /* Phase out */ - RETURN(RC_OK); - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); - switch(ch_size) { - case -1: - RETURN(RC_FAIL); - case 0: - RETURN(RC_WMORE); - default: - switch(ch_type) { - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", - ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', - ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', - ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', - ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', - xml_tag, tcv); - - /* Skip the extensions section */ - if(ctx->phase == 4) { - ASN_DEBUG("skip_unknown(%d, %ld)", - tcv, (long)ctx->left); - switch(xer_skip_unknown(tcv, &ctx->left)) { - case -1: - ctx->phase = 5; - RETURN(RC_FAIL); - continue; - case 1: - ctx->phase = 3; - /* Fall through */ - case 0: - XER_ADVANCE(ch_size); - continue; - case 2: - ctx->phase = 3; - break; - } - } - - switch(tcv) { - case XCT_BOTH: - break; /* No CHOICE? */ - case XCT_CLOSING: - if(ctx->phase != 3) - break; - XER_ADVANCE(ch_size); - ctx->phase = 5; /* Phase out */ - RETURN(RC_OK); - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - if(ctx->phase != 1) - break; /* Really unexpected */ - - /* - * Search which inner member corresponds to this tag. - */ - for(edx = 0; edx < td->elements_count; edx++) { - elm = &td->elements[edx]; - tcv = xer_check_tag(buf_ptr,ch_size,elm->name); - switch(tcv) { - case XCT_BOTH: - case XCT_OPENING: - /* - * Process this member. - */ - ctx->step = edx; - ctx->phase = 2; - break; - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - continue; - default: - edx = td->elements_count; - break; /* Phase out */ - } - break; - } - if(edx != td->elements_count) - continue; - - /* It is expected extension */ - if(specs->ext_start != -1) { - ASN_DEBUG("Got anticipated extension"); - /* - * Check for (XCT_BOTH or XCT_UNKNOWN_BO) - * By using a mask. Only record a pure - * tags. - */ - if(tcv & XCT_CLOSING) { - /* Found without body */ - ctx->phase = 3; /* Terminating */ - } else { - ctx->left = 1; - ctx->phase = 4; /* Skip ...'s */ - } - XER_ADVANCE(ch_size); - continue; - } - - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" - " (ph=%d, tag=%s)", - ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', - ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', - ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', - ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', - td->name, ctx->phase, xml_tag); - break; - } - - ctx->phase = 5; /* Phase out, just in case */ - RETURN(RC_FAIL); -} - - -asn_enc_rval_t -CHOICE_encode_xer(asn_TYPE_descriptor_t *td, void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_CHOICE_specifics_t *specs=(asn_CHOICE_specifics_t *)td->specifics; - asn_enc_rval_t er; - int present; - - if(!sptr) - _ASN_ENCODE_FAILED; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - - if(present <= 0 || present > td->elements_count) { - _ASN_ENCODE_FAILED; - } else { - asn_enc_rval_t tmper; - asn_TYPE_member_t *elm = &td->elements[present-1]; - void *memb_ptr; - const char *mname = elm->name; - unsigned int mlen = strlen(mname); - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)sptr + elm->memb_offset); - if(!memb_ptr) _ASN_ENCODE_FAILED; - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - } - - er.encoded = 0; - - if(!(flags & XER_F_CANONICAL)) _i_ASN_TEXT_INDENT(1, ilevel); - _ASN_CALLBACK3("<", 1, mname, mlen, ">", 1); - - tmper = elm->type->xer_encoder(elm->type, memb_ptr, - ilevel + 1, flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - - _ASN_CALLBACK3("", 1); - - er.encoded += 5 + (2 * mlen) + tmper.encoded; - } - - if(!(flags & XER_F_CANONICAL)) _i_ASN_TEXT_INDENT(1, ilevel - 1); - - _ASN_ENCODED_OK(er); -cb_failed: - _ASN_ENCODE_FAILED; -} - -asn_dec_rval_t -CHOICE_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; - asn_dec_rval_t rv; - asn_per_constraint_t *ct; - asn_TYPE_member_t *elm; /* CHOICE's element */ - void *memb_ptr; - void **memb_ptr2; - void *st = *sptr; - int value; - - if(_ASN_STACK_OVERFLOW_CHECK(opt_codec_ctx)) - _ASN_DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) _ASN_DECODE_FAILED; - } - - if(constraints) ct = &constraints->value; - else if(td->per_constraints) ct = &td->per_constraints->value; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - value = per_get_few_bits(pd, 1); - if(value < 0) _ASN_DECODE_STARVED; - if(value) ct = 0; /* Not restricted */ - } - - if(ct && ct->range_bits >= 0) { - value = per_get_few_bits(pd, ct->range_bits); - if(value < 0) _ASN_DECODE_STARVED; - ASN_DEBUG("CHOICE %s got index %d in range %d", - td->name, value, ct->range_bits); - if(value > ct->upper_bound) - _ASN_DECODE_FAILED; - } else { - if(specs->ext_start == -1) - _ASN_DECODE_FAILED; - value = uper_get_nsnnwn(pd); - if(value < 0) _ASN_DECODE_STARVED; - value += specs->ext_start; - if(value >= td->elements_count) - _ASN_DECODE_FAILED; - } - - /* Adjust if canonical order is different from natural order */ - if(specs->canonical_order) - value = specs->canonical_order[value]; - - /* Set presence to be able to free it later */ - _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); - - elm = &td->elements[value]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); - - if(ct && ct->range_bits >= 0) { - rv = elm->type->uper_decoder(opt_codec_ctx, elm->type, - elm->per_constraints, memb_ptr2, pd); - } else { - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->per_constraints, memb_ptr2, pd); - } - - if(rv.code != RC_OK) - ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", - elm->name, td->name, rv.code); - return rv; -} - -asn_enc_rval_t -CHOICE_encode_uper(asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { - asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; - asn_TYPE_member_t *elm; /* CHOICE's element */ - asn_per_constraint_t *ct; - void *memb_ptr; - int present; - - if(!sptr) _ASN_ENCODE_FAILED; - - ASN_DEBUG("Encoding %s as CHOICE", td->name); - - if(constraints) ct = &constraints->value; - else if(td->per_constraints) ct = &td->per_constraints->value; - else ct = 0; - - present = _fetch_present_idx(sptr, - specs->pres_offset, specs->pres_size); - - /* - * If the structure was not initialized properly, it cannot be encoded: - * can't deduce what to encode in the choice type. - */ - if(present <= 0 || present > td->elements_count) - _ASN_ENCODE_FAILED; - else - present--; - - /* Adjust if canonical order is different from natural order */ - if(specs->canonical_order) - present = specs->canonical_order[present]; - - ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); - - if(ct && ct->range_bits >= 0) { - if(present < ct->lower_bound - || present > ct->upper_bound) { - if(ct->flags & APC_EXTENSIBLE) { - if(per_put_few_bits(po, 1, 1)) - _ASN_ENCODE_FAILED; - } else { - _ASN_ENCODE_FAILED; - } - ct = 0; - } - } - if(ct && ct->flags & APC_EXTENSIBLE) - if(per_put_few_bits(po, 0, 1)) - _ASN_ENCODE_FAILED; - - elm = &td->elements[present]; - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr = *(void **)((char *)sptr + elm->memb_offset); - if(!memb_ptr) _ASN_ENCODE_FAILED; - } else { - memb_ptr = (char *)sptr + elm->memb_offset; - } - - if(ct && ct->range_bits >= 0) { - if(per_put_few_bits(po, present, ct->range_bits)) - _ASN_ENCODE_FAILED; - - return elm->type->uper_encoder(elm->type, elm->per_constraints, - memb_ptr, po); - } else { - asn_enc_rval_t rval; - if(specs->ext_start == -1) - _ASN_ENCODE_FAILED; - if(uper_put_nsnnwn(po, present - specs->ext_start)) - _ASN_ENCODE_FAILED; - if(uper_open_type_put(elm->type, elm->per_constraints, - memb_ptr, po)) - _ASN_ENCODE_FAILED; - rval.encoded = 0; - _ASN_ENCODED_OK(rval); - } -} - - -int -CHOICE_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; - int present; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); - - /* - * Print that element. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* Print member's name and stuff */ - if(0) { - if(cb(elm->name, strlen(elm->name), app_key) < 0 - || cb(": ", 2, app_key) < 0) - return -1; - } - - return elm->type->print_struct(elm->type, memb_ptr, ilevel, - cb, app_key); - } else { - return (cb("", 8, app_key) < 0) ? -1 : 0; - } -} - -void -CHOICE_free(asn_TYPE_descriptor_t *td, void *ptr, int contents_only) { - asn_CHOICE_specifics_t *specs = (asn_CHOICE_specifics_t *)td->specifics; - int present; - - if(!td || !ptr) - return; - - ASN_DEBUG("Freeing %s as CHOICE", td->name); - - /* - * Figure out which CHOICE element is encoded. - */ - present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); - - /* - * Free that element. - */ - if(present > 0 && present <= td->elements_count) { - asn_TYPE_member_t *elm = &td->elements[present-1]; - void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)ptr + elm->memb_offset); - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } else { - memb_ptr = (void *)((char *)ptr + elm->memb_offset); - ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); - } - } - - if(!contents_only) { - FREEMEM(ptr); - } -} - - -/* - * The following functions functions offer protection against -fshort-enums, - * compatible with little- and big-endian machines. - * If assertion is triggered, either disable -fshort-enums, or add an entry - * here with the ->pres_size of your target stracture. - * Unless the target structure is packed, the ".present" member - * is guaranteed to be aligned properly. ASN.1 compiler itself does not - * produce packed code. - */ -static int -_fetch_present_idx(const void *struct_ptr, int pres_offset, int pres_size) { - const void *present_ptr; - int present; - - present_ptr = ((const char *)struct_ptr) + pres_offset; - - switch(pres_size) { - case sizeof(int): - present = *(const int *)present_ptr; - break; - case sizeof(short): - present = *(const short *)present_ptr; - break; - case sizeof(char): - present = *(const char *)present_ptr; - break; - default: - /* ANSI C mandates enum to be equivalent to integer */ - assert(pres_size != sizeof(int)); - return 0; /* If not aborted, pass back safe value */ - } - - return present; -} - -static void -_set_present_idx(void *struct_ptr, int pres_offset, int pres_size, int present) { - void *present_ptr; - present_ptr = ((char *)struct_ptr) + pres_offset; - - switch(pres_size) { - case sizeof(int): - *(int *)present_ptr = present; - break; - case sizeof(short): - *(short *)present_ptr = present; - break; - case sizeof(char): - *(char *)present_ptr = present; - break; - default: - /* ANSI C mandates enum to be equivalent to integer */ - assert(pres_size != sizeof(int)); - } -} diff --git a/src/third_party/asn1/constr_CHOICE.h b/src/third_party/asn1/constr_CHOICE.h deleted file mode 100644 index 219b9917..00000000 --- a/src/third_party/asn1/constr_CHOICE.h +++ /dev/null @@ -1,57 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2005 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _CONSTR_CHOICE_H_ -#define _CONSTR_CHOICE_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - typedef struct asn_CHOICE_specifics_s { - /* - * Target structure description. - */ - int struct_size; /* Size of the target structure. */ - int ctx_offset; /* Offset of the asn_codec_ctx_t member */ - int pres_offset; /* Identifier of the present member */ - int pres_size; /* Size of the identifier (enum) */ - - /* - * Tags to members mapping table. - */ - asn_TYPE_tag2member_t *tag2el; - int tag2el_count; - - /* Canonical ordering of CHOICE elements, for PER */ - int *canonical_order; - - /* - * Extensions-related stuff. - */ - int ext_start; /* First member of extensions, or -1 */ - } asn_CHOICE_specifics_t; - - /* - * A set specialized functions dealing with the CHOICE type. - */ - asn_struct_free_f CHOICE_free; - asn_struct_print_f CHOICE_print; - asn_constr_check_f CHOICE_constraint; - ber_type_decoder_f CHOICE_decode_ber; - der_type_encoder_f CHOICE_encode_der; - xer_type_decoder_f CHOICE_decode_xer; - xer_type_encoder_f CHOICE_encode_xer; - per_type_decoder_f CHOICE_decode_uper; - per_type_encoder_f CHOICE_encode_uper; - asn_outmost_tag_f CHOICE_outmost_tag; - -#ifdef __cplusplus -} -#endif - -#endif /* _CONSTR_CHOICE_H_ */ diff --git a/src/third_party/asn1/constr_SEQUENCE.c b/src/third_party/asn1/constr_SEQUENCE.c deleted file mode 100644 index 48a42492..00000000 --- a/src/third_party/asn1/constr_SEQUENCE.c +++ /dev/null @@ -1,1435 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2005, 2006, 2007 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num;\ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * Check whether we are inside the extensions group. - */ -#define IN_EXTENSION_GROUP(specs, memb_idx) \ - ( ((memb_idx) > (specs)->ext_after) \ - &&((memb_idx) < (specs)->ext_before)) - - -/* - * Tags are canonically sorted in the tag2element map. - */ -static int -_t2e_cmp(const void *ap, const void *bp) { - const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; - const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; - - int a_class = BER_TAG_CLASS(a->el_tag); - int b_class = BER_TAG_CLASS(b->el_tag); - - if(a_class == b_class) { - ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); - ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); - - if(a_value == b_value) { - if(a->el_no > b->el_no) - return 1; - /* - * Important: we do not check - * for a->el_no <= b->el_no! - */ - return 0; - } else if(a_value < b_value) - return -1; - else - return 1; - } else if(a_class < b_class) { - return -1; - } else { - return 1; - } -} - - -/* - * The decoder of the SEQUENCE type. - */ -asn_dec_rval_t -SEQUENCE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **struct_ptr, const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - asn_SEQUENCE_specifics_t *specs = (asn_SEQUENCE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - int edx; /* SEQUENCE element's index */ - - ASN_DEBUG("Decoding %s as SEQUENCE", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, 1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) - ctx->left += rval.consumed; /* ?Substracted below! */ - ADVANCE(rval.consumed); - - NEXT_PHASE(ctx); - - ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", - (long)ctx->left, (long)size); - - /* Fall through */ - case 1: - /* - * PHASE 1. - * From the place where we've left it previously, - * try to decode the next member from the list of - * this structure's elements. - * (ctx->step) stores the member being processed - * between invocations and the microphase {0,1} of parsing - * that member: - * step = ( * 2 + ). - */ - for(edx = (ctx->step >> 1); edx < td->elements_count; - edx++, ctx->step = (ctx->step & ~1) + 2) { - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - ssize_t tag_len; /* Length of TLV's T */ - int opt_edx_end; /* Next non-optional element */ - int use_bsearch; - int n; - - if(ctx->step & 1) - goto microphase2; - - /* - * MICROPHASE 1: Synchronize decoding. - */ - ASN_DEBUG("In %s SEQUENCE left %d, edx=%d flags=%d" - " opt=%d ec=%d", - td->name, (int)ctx->left, edx, - elements[edx].flags, elements[edx].optional, - td->elements_count); - - if(ctx->left == 0 /* No more stuff is expected */ - && ( - /* Explicit OPTIONAL specification reaches the end */ - (edx + elements[edx].optional - == td->elements_count) - || - /* All extensions are optional */ - (IN_EXTENSION_GROUP(specs, edx) - && specs->ext_before > td->elements_count) - ) - ) { - ASN_DEBUG("End of SEQUENCE %s", td->name); - /* - * Found the legitimate end of the structure. - */ - PHASE_OUT(ctx); - RETURN(RC_OK); - } - - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - ASN_DEBUG("Current tag in %s SEQUENCE for element %d " - "(%s) is %s encoded in %d bytes, of frame %ld", - td->name, edx, elements[edx].name, - ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); - switch(tag_len) { - case 0: - if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: - RETURN(RC_FAIL); - } - - if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - ASN_DEBUG("edx = %d, opt = %d, ec=%d", - edx, elements[edx].optional, - td->elements_count); - if((edx + elements[edx].optional - == td->elements_count) - || (IN_EXTENSION_GROUP(specs, edx) - && specs->ext_before - > td->elements_count)) { - /* - * Yeah, baby! Found the terminator - * of the indefinite length structure. - */ - /* - * Proceed to the canonical - * finalization function. - * No advancing is necessary. - */ - goto phase3; - } - } - } - - /* - * Find the next available type with this tag. - */ - use_bsearch = 0; - opt_edx_end = edx + elements[edx].optional + 1; - if(opt_edx_end > td->elements_count) - opt_edx_end = td->elements_count; /* Cap */ - else if(opt_edx_end - edx > 8) { - /* Limit the scope of linear search... */ - opt_edx_end = edx + 8; - use_bsearch = 1; - /* ... and resort to bsearch() */ - } - for(n = edx; n < opt_edx_end; n++) { - if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { - /* - * Found element corresponding to the tag - * being looked at. - * Reposition over the right element. - */ - edx = n; - ctx->step = 1 + 2 * edx; /* Remember! */ - goto microphase2; - } else if(elements[n].flags & ATF_OPEN_TYPE) { - /* - * This is the ANY type, which may bear - * any flag whatsoever. - */ - edx = n; - ctx->step = 1 + 2 * edx; /* Remember! */ - goto microphase2; - } else if(elements[n].tag == (ber_tlv_tag_t)-1) { - use_bsearch = 1; - break; - } - } - if(use_bsearch) { - /* - * Resort to a binary search over - * sorted array of tags. - */ - asn_TYPE_tag2member_t *t2m; - asn_TYPE_tag2member_t key; - key.el_tag = tlv_tag; - key.el_no = edx; - t2m = (asn_TYPE_tag2member_t *)bsearch(&key, - specs->tag2el, specs->tag2el_count, - sizeof(specs->tag2el[0]), _t2e_cmp); - if(t2m) { - asn_TYPE_tag2member_t *best = 0; - asn_TYPE_tag2member_t *t2m_f, *t2m_l; - int edx_max = edx + elements[edx].optional; - /* - * Rewind to the first element with that tag, - * `cause bsearch() does not guarantee order. - */ - t2m_f = t2m + t2m->toff_first; - t2m_l = t2m + t2m->toff_last; - for(t2m = t2m_f; t2m <= t2m_l; t2m++) { - if(t2m->el_no > edx_max) break; - if(t2m->el_no < edx) continue; - best = t2m; - } - if(best) { - edx = best->el_no; - ctx->step = 1 + 2 * edx; - goto microphase2; - } - } - n = opt_edx_end; - } - if(n == opt_edx_end) { - /* - * If tag is unknown, it may be either - * an unknown (thus, incorrect) tag, - * or an extension (...), - * or an end of the indefinite-length structure. - */ - if(!IN_EXTENSION_GROUP(specs, - edx + elements[edx].optional)) { - ASN_DEBUG("Unexpected tag %s (at %d)", - ber_tlv_tag_string(tlv_tag), edx); - ASN_DEBUG("Expected tag %s (%s)%s", - ber_tlv_tag_string(elements[edx].tag), - elements[edx].name, - elements[edx].optional - ?" or alternatives":""); - RETURN(RC_FAIL); - } else { - /* Skip this tag */ - ssize_t skip; - edx += elements[edx].optional; - - ASN_DEBUG("Skipping unexpected %s (at %d)", - ber_tlv_tag_string(tlv_tag), edx); - skip = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tag_len, - LEFT - tag_len); - ASN_DEBUG("Skip length %d in %s", - (int)skip, td->name); - switch(skip) { - case 0: - if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: - RETURN(RC_FAIL); - } - - ADVANCE(skip + tag_len); - ctx->step -= 2; - edx--; - continue; /* Try again with the next tag */ - } - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ -microphase2: - ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); - - /* - * Compute the position of the member inside a structure, - * and also a type of containment (it may be contained - * as pointer or using inline inclusion). - */ - if(elements[edx].flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); - } else { - /* - * A pointer to a pointer - * holding the start of the structure - */ - memb_ptr = (char *)st + elements[edx].memb_offset; - memb_ptr2 = &memb_ptr; - } - /* - * Invoke the member fetch routine according to member's type - */ - rval = elements[edx].type->ber_decoder(opt_codec_ctx, - elements[edx].type, - memb_ptr2, ptr, LEFT, - elements[edx].tag_mode); - ASN_DEBUG("In %s SEQUENCE decoded %d %s of %d " - "in %d bytes rval.code %d, size=%d", - td->name, edx, elements[edx].type->name, - (int)LEFT, (int)rval.consumed, rval.code, (int)size); - switch(rval.code) { - case RC_OK: - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", - (long)ctx->left, (long)size); - /* Fall through */ - case RC_FAIL: /* Fatal error */ - RETURN(RC_FAIL); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } /* for(all structure members) */ - -phase3: - ctx->phase = 3; - case 3: /* 00 and other tags expected */ - case 4: /* only 00's expected */ - - ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", - td->name, (long)ctx->left, (long)size); - - /* - * Skip everything until the end of the SEQUENCE. - */ - while(ctx->left) { - ssize_t tl, ll; - - tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tl) { - case 0: - if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: - RETURN(RC_FAIL); - } - - /* - * If expected <0><0>... - */ - if(ctx->left < 0 - && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Correctly finished with <0><0>. - */ - ADVANCE(2); - ctx->left++; - ctx->phase = 4; - continue; - } - } - - if(!IN_EXTENSION_GROUP(specs, td->elements_count) - || ctx->phase == 4) { - ASN_DEBUG("Unexpected continuation " - "of a non-extensible type " - "%s (SEQUENCE): %s", - td->name, - ber_tlv_tag_string(tlv_tag)); - RETURN(RC_FAIL); - } - - ll = ber_skip_length(opt_codec_ctx, - BER_TLV_CONSTRUCTED(ptr), - (const char *)ptr + tl, LEFT - tl); - switch(ll) { - case 0: - if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: - RETURN(RC_FAIL); - } - - ADVANCE(tl + ll); - } - - PHASE_OUT(ctx); - } - - RETURN(RC_OK); -} - - -/* - * The DER encoder of the SEQUENCE type. - */ -asn_enc_rval_t -SEQUENCE_encode_der(asn_TYPE_descriptor_t *td, - void *sptr, int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - size_t computed_size = 0; - asn_enc_rval_t erval; - ssize_t ret; - int edx; - - ASN_DEBUG("%s %s as SEQUENCE", - cb?"Encoding":"Estimating", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) continue; - /* Mandatory element is missing */ - _ASN_ENCODE_FAILED; - } - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - } - erval = elm->type->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, - 0, 0); - if(erval.encoded == -1) - return erval; - computed_size += erval.encoded; - ASN_DEBUG("Member %d %s estimated %ld bytes", - edx, elm->name, (long)erval.encoded); - } - - /* - * Encode the TLV for the sequence itself. - */ - ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); - ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); - if(ret == -1) - _ASN_ENCODE_FAILED; - erval.encoded = computed_size + ret; - - if(!cb) _ASN_ENCODED_OK(erval); - - /* - * Encode all members. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - asn_enc_rval_t tmperval; - void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)sptr + elm->memb_offset); - if(!memb_ptr) continue; - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - } - tmperval = elm->type->der_encoder(elm->type, memb_ptr, - elm->tag_mode, elm->tag, - cb, app_key); - if(tmperval.encoded == -1) - return tmperval; - computed_size -= tmperval.encoded; - ASN_DEBUG("Member %d %s of SEQUENCE %s encoded in %ld bytes", - edx, elm->name, td->name, (long)tmperval.encoded); - } - - if(computed_size != 0) - /* - * Encoded size is not equal to the computed size. - */ - _ASN_ENCODE_FAILED; - - _ASN_ENCODED_OK(erval); -} - - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - buf_ptr = ((const char *)buf_ptr) + num;\ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -SEQUENCE_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **struct_ptr, const char *opt_mname, - const void *buf_ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - asn_SEQUENCE_specifics_t *specs - = (asn_SEQUENCE_specifics_t *)td->specifics; - asn_TYPE_member_t *elements = td->elements; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * ... and parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval; /* Return value from a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - int edx; /* Element index */ - int edx_end; - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - * Phase 3: Skipping unknown extensions. - * Phase 4: PHASED OUT - */ - for(edx = ctx->step; ctx->phase <= 3;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - asn_TYPE_member_t *elm; - int n; - - /* - * Go inside the inner member of a sequence. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - elm = &td->elements[edx]; - - if(elm->flags & ATF_POINTER) { - /* Member is a pointer to another structure */ - memb_ptr2 = (void **)((char *)st - + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Invoke the inner type decoder, m.b. multiple times */ - tmprval = elm->type->xer_decoder(opt_codec_ctx, - elm->type, memb_ptr2, elm->name, - buf_ptr, size); - XER_ADVANCE(tmprval.consumed); - if(tmprval.code != RC_OK) - RETURN(tmprval.code); - ctx->phase = 1; /* Back to body processing */ - ctx->step = ++edx; - ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", - ctx->phase, ctx->step); - /* Fall through */ - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, buf_ptr, size, - &ch_type); - switch(ch_size) { - case -1: - RETURN(RC_FAIL); - case 0: - RETURN(RC_WMORE); - default: - switch(ch_type) { - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", - tcv, ctx->phase, xml_tag); - - /* Skip the extensions section */ - if(ctx->phase == 3) { - switch(xer_skip_unknown(tcv, &ctx->left)) { - case -1: - ctx->phase = 4; - RETURN(RC_FAIL); - case 0: - XER_ADVANCE(ch_size); - continue; - case 1: - XER_ADVANCE(ch_size); - ctx->phase = 1; - continue; - case 2: - ctx->phase = 1; - break; - } - } - - switch(tcv) { - case XCT_CLOSING: - if(ctx->phase == 0) break; - ctx->phase = 0; - /* Fall through */ - case XCT_BOTH: - if(ctx->phase == 0) { - if(edx >= td->elements_count - || - /* Explicit OPTIONAL specs reaches the end */ - (edx + elements[edx].optional - == td->elements_count) - || - /* All extensions are optional */ - (IN_EXTENSION_GROUP(specs, edx) - && specs->ext_before - > td->elements_count) - ) { - XER_ADVANCE(ch_size); - ctx->phase = 4; /* Phase out */ - RETURN(RC_OK); - } else { - ASN_DEBUG("Premature end of XER SEQUENCE"); - RETURN(RC_FAIL); - } - } - /* Fall through */ - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%d", - tcv, ctx->phase, edx); - if(ctx->phase != 1) { - break; /* Really unexpected */ - } - - if(edx < td->elements_count) { - /* - * Search which member corresponds to this tag. - */ - edx_end = edx + elements[edx].optional + 1; - if(edx_end > td->elements_count) - edx_end = td->elements_count; - for(n = edx; n < edx_end; n++) { - elm = &td->elements[n]; - tcv = xer_check_tag(buf_ptr, - ch_size, elm->name); - switch(tcv) { - case XCT_BOTH: - case XCT_OPENING: - /* - * Process this member. - */ - ctx->step = edx = n; - ctx->phase = 2; - break; - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - continue; - default: - n = edx_end; - break; /* Phase out */ - } - break; - } - if(n != edx_end) - continue; - } else { - ASN_DEBUG("Out of defined members: %d/%d", - edx, td->elements_count); - } - - /* It is expected extension */ - if(IN_EXTENSION_GROUP(specs, - edx + (edx < td->elements_count - ? elements[edx].optional : 0))) { - ASN_DEBUG("Got anticipated extension at %d", - edx); - /* - * Check for (XCT_BOTH or XCT_UNKNOWN_BO) - * By using a mask. Only record a pure - * tags. - */ - if(tcv & XCT_CLOSING) { - /* Found without body */ - } else { - ctx->left = 1; - ctx->phase = 3; /* Skip ...'s */ - } - XER_ADVANCE(ch_size); - continue; - } - - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", - size>0?((const char *)buf_ptr)[0]:'.', - size>1?((const char *)buf_ptr)[1]:'.', - size>2?((const char *)buf_ptr)[2]:'.', - size>3?((const char *)buf_ptr)[3]:'.', - size>4?((const char *)buf_ptr)[4]:'.', - size>5?((const char *)buf_ptr)[5]:'.'); - break; - } - - ctx->phase = 4; /* "Phase out" on hard failure */ - RETURN(RC_FAIL); -} - -asn_enc_rval_t -SEQUENCE_encode_xer(asn_TYPE_descriptor_t *td, void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er; - int xcan = (flags & XER_F_CANONICAL); - int edx; - - if(!sptr) - _ASN_ENCODE_FAILED; - - er.encoded = 0; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_enc_rval_t tmper; - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; - const char *mname = elm->name; - unsigned int mlen = strlen(mname); - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) - continue; - /* Mandatory element is missing */ - _ASN_ENCODE_FAILED; - } - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - } - - if(!xcan) _i_ASN_TEXT_INDENT(1, ilevel); - _ASN_CALLBACK3("<", 1, mname, mlen, ">", 1); - - /* Print the member itself */ - tmper = elm->type->xer_encoder(elm->type, memb_ptr, - ilevel + 1, flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - - _ASN_CALLBACK3("", 1); - er.encoded += 5 + (2 * mlen) + tmper.encoded; - } - - if(!xcan) _i_ASN_TEXT_INDENT(1, ilevel - 1); - - _ASN_ENCODED_OK(er); -cb_failed: - _ASN_ENCODE_FAILED; -} - -int -SEQUENCE_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - int edx; - int ret; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* Dump preamble */ - if(cb(td->name, strlen(td->name), app_key) < 0 - || cb(" ::= {", 6, app_key) < 0) - return -1; - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) continue; - /* Print line */ - /* Fall through */ - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - /* Indentation */ - _i_INDENT(1); - - /* Print the member's name and stuff */ - if(cb(elm->name, strlen(elm->name), app_key) < 0 - || cb(": ", 2, app_key) < 0) - return -1; - - /* Print the member itself */ - ret = elm->type->print_struct(elm->type, memb_ptr, ilevel + 1, - cb, app_key); - if(ret) return ret; - } - - ilevel--; - _i_INDENT(1); - - return (cb("}", 1, app_key) < 0) ? -1 : 0; -} - -void -SEQUENCE_free(asn_TYPE_descriptor_t *td, void *sptr, int contents_only) { - int edx; - - if(!td || !sptr) - return; - - ASN_DEBUG("Freeing %s as SEQUENCE", td->name); - - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; - if(elm->flags & ATF_POINTER) { - memb_ptr = *(void **)((char *)sptr + elm->memb_offset); - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); - } - } - - if(!contents_only) { - FREEMEM(sptr); - } -} - -int -SEQUENCE_constraint(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - int edx; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - /* - * Iterate over structure members and check their validity. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - const void *memb_ptr; - - if(elm->flags & ATF_POINTER) { - memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); - if(!memb_ptr) { - if(elm->optional) - continue; - _ASN_CTFAIL(app_key, td, sptr, - "%s: mandatory element %s absent (%s:%d)", - td->name, elm->name, __FILE__, __LINE__); - return -1; - } - } else { - memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); - } - - if(elm->memb_constraints) { - int ret = elm->memb_constraints(elm->type, memb_ptr, - ctfailcb, app_key); - if(ret) return ret; - } else { - int ret = elm->type->check_constraints(elm->type, - memb_ptr, ctfailcb, app_key); - if(ret) return ret; - /* - * Cannot inherit it earlier: - * need to make sure we get the updated version. - */ - elm->memb_constraints = elm->type->check_constraints; - } - } - - return 0; -} - -asn_dec_rval_t -SEQUENCE_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_SEQUENCE_specifics_t *specs = (asn_SEQUENCE_specifics_t *)td->specifics; - void *st = *sptr; /* Target structure. */ - int extpresent; /* Extension additions are present */ - uint8_t *opres; /* Presence of optional root members */ - asn_per_data_t opmd; - asn_dec_rval_t rv; - int edx; - - (void)constraints; - - if(_ASN_STACK_OVERFLOW_CHECK(opt_codec_ctx)) - _ASN_DECODE_FAILED; - - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) _ASN_DECODE_FAILED; - } - - ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); - - /* Handle extensions */ - if(specs->ext_before >= 0) { - extpresent = per_get_few_bits(pd, 1); - if(extpresent < 0) _ASN_DECODE_STARVED; - } else { - extpresent = 0; - } - - /* Prepare a place and read-in the presence bitmap */ - memset(&opmd, 0, sizeof(opmd)); - if(specs->roms_count) { - opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); - if(!opres) _ASN_DECODE_FAILED; - /* Get the presence map */ - if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { - FREEMEM(opres); - _ASN_DECODE_STARVED; - } - opmd.buffer = opres; - opmd.nbits = specs->roms_count; - ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", - td->name, specs->roms_count, *opres); - } else { - opres = 0; - } - - /* - * Get the sequence ROOT elements. - */ - for(edx = 0; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - if(IN_EXTENSION_GROUP(specs, edx)) - continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (char *)st + elm->memb_offset; - memb_ptr2 = &memb_ptr; - } - - /* Deal with optionality */ - if(elm->optional) { - int present = per_get_few_bits(&opmd, 1); - ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", - td->name, elm->name, present, - (int)opmd.nboff, (int)opmd.nbits); - if(present == 0) { - /* This element is not present */ - if(elm->default_value) { - /* Fill-in DEFAULT */ - if(elm->default_value(1, memb_ptr2)) { - FREEMEM(opres); - _ASN_DECODE_FAILED; - } - ASN_DEBUG("Filled-in default"); - } - /* The member is just not present */ - continue; - } - /* Fall through */ - } - - /* Fetch the member from the stream */ - ASN_DEBUG("Decoding member %s in %s", elm->name, td->name); - rv = elm->type->uper_decoder(opt_codec_ctx, elm->type, - elm->per_constraints, memb_ptr2, pd); - if(rv.code != RC_OK) { - ASN_DEBUG("Failed decode %s in %s", - elm->name, td->name); - FREEMEM(opres); - return rv; - } - } - - /* Optionality map is not needed anymore */ - FREEMEM(opres); - - /* - * Deal with extensions. - */ - if(extpresent) { - ssize_t bmlength; - uint8_t *epres; /* Presence of extension members */ - asn_per_data_t epmd; - - bmlength = uper_get_nslength(pd); - if(bmlength < 0) _ASN_DECODE_STARVED; - - ASN_DEBUG("Extensions %ld present in %s", (long)bmlength, td->name); - - epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); - if(!epres) _ASN_DECODE_STARVED; - - /* Get the extensions map */ - if(per_get_many_bits(pd, epres, 0, bmlength)) - _ASN_DECODE_STARVED; - - memset(&epmd, 0, sizeof(epmd)); - epmd.buffer = epres; - epmd.nbits = bmlength; - ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", - td->name, (long)bmlength, *epres); - - /* Go over extensions and read them in */ - for(edx = specs->ext_after + 1; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - int present; - - if(!IN_EXTENSION_GROUP(specs, edx)) { - ASN_DEBUG("%d is not extension", edx); - continue; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st + elm->memb_offset); - } else { - memb_ptr = (void *)((char *)st + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - present = per_get_few_bits(&epmd, 1); - if(present <= 0) { - if(present < 0) break; /* No more extensions */ - continue; - } - - ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); - rv = uper_open_type_get(opt_codec_ctx, elm->type, - elm->per_constraints, memb_ptr2, pd); - if(rv.code != RC_OK) { - FREEMEM(epres); - return rv; - } - } - - /* Skip over overflow extensions which aren't present - * in this system's version of the protocol */ - for(;;) { - ASN_DEBUG("Getting overflow extensions"); - switch(per_get_few_bits(&epmd, 1)) { - case -1: - break; - case 0: - continue; - default: - if(uper_open_type_skip(opt_codec_ctx, pd)) { - FREEMEM(epres); - _ASN_DECODE_STARVED; - } - } - break; - } - - FREEMEM(epres); - } - - /* Fill DEFAULT members in extensions */ - for(edx = specs->roms_count; edx < specs->roms_count - + specs->aoms_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void **memb_ptr2; /* Pointer to member pointer */ - - if(!elm->default_value) continue; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)st - + elm->memb_offset); - if(*memb_ptr2) continue; - } else { - continue; /* Extensions are all optionals */ - } - - /* Set default value */ - if(elm->default_value(1, memb_ptr2)) { - _ASN_DECODE_FAILED; - } - } - - rv.consumed = 0; - rv.code = RC_OK; - return rv; -} - -static int -SEQUENCE_handle_extensions(asn_TYPE_descriptor_t *td, void *sptr, - asn_per_outp_t *po1, asn_per_outp_t *po2) { - asn_SEQUENCE_specifics_t *specs - = (asn_SEQUENCE_specifics_t *)td->specifics; - int exts_present = 0; - int exts_count = 0; - int edx; - - if(specs->ext_before < 0) - return 0; - - /* Find out which extensions are present */ - for(edx = specs->ext_after + 1; edx < td->elements_count; edx++) { - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - int present; - - if(!IN_EXTENSION_GROUP(specs, edx)) { - ASN_DEBUG("%s (@%d) is not extension", elm->type->name, edx); - continue; - } - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - ASN_DEBUG("checking %s (@%d) present => %d", - elm->type->name, edx, present); - exts_count++; - exts_present += present; - - /* Encode as presence marker */ - if(po1 && per_put_few_bits(po1, present, 1)) - return -1; - /* Encode as open type field */ - if(po2 && present && uper_open_type_put(elm->type, - elm->per_constraints, *memb_ptr2, po2)) - return -1; - - } - - return exts_present ? exts_count : 0; -} - -asn_enc_rval_t -SEQUENCE_encode_uper(asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { - asn_SEQUENCE_specifics_t *specs - = (asn_SEQUENCE_specifics_t *)td->specifics; - asn_enc_rval_t er; - int n_extensions; - int edx; - int i; - - (void)constraints; - - if(!sptr) - _ASN_ENCODE_FAILED; - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); - - - /* - * X.691#18.1 Whether structure is extensible - * and whether to encode extensions - */ - if(specs->ext_before >= 0) { - n_extensions = SEQUENCE_handle_extensions(td, sptr, 0, 0); - per_put_few_bits(po, n_extensions ? 1 : 0, 1); - } else { - n_extensions = 0; /* There are no extensions to encode */ - } - - /* Encode a presence bitmap */ - for(i = 0; i < specs->roms_count; i++) { - asn_TYPE_member_t *elm; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - int present; - - edx = specs->oms[i]; - elm = &td->elements[edx]; - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - present = (*memb_ptr2 != 0); - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - present = 1; - } - - /* Eliminate default values */ - if(present && elm->default_value - && elm->default_value(0, memb_ptr2) == 1) - present = 0; - - ASN_DEBUG("Element %s %s %s->%s is %s", - elm->flags & ATF_POINTER ? "ptr" : "inline", - elm->default_value ? "def" : "wtv", - td->name, elm->name, present ? "present" : "absent"); - if(per_put_few_bits(po, present, 1)) - _ASN_ENCODE_FAILED; - } - - /* - * Encode the sequence ROOT elements. - */ - ASN_DEBUG("ext_after = %d, ec = %d, eb = %d", specs->ext_after, td->elements_count, specs->ext_before); - for(edx = 0; edx < ((specs->ext_after < 0) - ? td->elements_count : specs->ext_before - 1); edx++) { - - asn_TYPE_member_t *elm = &td->elements[edx]; - void *memb_ptr; /* Pointer to the member */ - void **memb_ptr2; /* Pointer to that pointer */ - - if(IN_EXTENSION_GROUP(specs, edx)) - continue; - - ASN_DEBUG("About to encode %s", elm->type->name); - - /* Fetch the pointer to this member */ - if(elm->flags & ATF_POINTER) { - memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); - if(!*memb_ptr2) { - ASN_DEBUG("Element %s %d not present", - elm->name, edx); - if(elm->optional) - continue; - /* Mandatory element is missing */ - _ASN_ENCODE_FAILED; - } - } else { - memb_ptr = (void *)((char *)sptr + elm->memb_offset); - memb_ptr2 = &memb_ptr; - } - - /* Eliminate default values */ - if(elm->default_value && elm->default_value(0, memb_ptr2) == 1) - continue; - - ASN_DEBUG("Encoding %s->%s", td->name, elm->name); - er = elm->type->uper_encoder(elm->type, elm->per_constraints, - *memb_ptr2, po); - if(er.encoded == -1) - return er; - } - - /* No extensions to encode */ - if(!n_extensions) _ASN_ENCODED_OK(er); - - ASN_DEBUG("Length of %d bit-map", n_extensions); - /* #18.8. Write down the presence bit-map length. */ - if(uper_put_nslength(po, n_extensions)) - _ASN_ENCODE_FAILED; - - ASN_DEBUG("Bit-map of %d elements", n_extensions); - /* #18.7. Encoding the extensions presence bit-map. */ - /* TODO: act upon NOTE in #18.7 for canonical PER */ - if(SEQUENCE_handle_extensions(td, sptr, po, 0) != n_extensions) - _ASN_ENCODE_FAILED; - - ASN_DEBUG("Writing %d extensions", n_extensions); - /* #18.9. Encode extensions as open type fields. */ - if(SEQUENCE_handle_extensions(td, sptr, 0, po) != n_extensions) - _ASN_ENCODE_FAILED; - - _ASN_ENCODED_OK(er); -} - diff --git a/src/third_party/asn1/constr_SEQUENCE.h b/src/third_party/asn1/constr_SEQUENCE.h deleted file mode 100644 index 72781be2..00000000 --- a/src/third_party/asn1/constr_SEQUENCE.h +++ /dev/null @@ -1,60 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _CONSTR_SEQUENCE_H_ -#define _CONSTR_SEQUENCE_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - typedef struct asn_SEQUENCE_specifics_s { - /* - * Target structure description. - */ - int struct_size; /* Size of the target structure. */ - int ctx_offset; /* Offset of the asn_struct_ctx_t member */ - - /* - * Tags to members mapping table (sorted). - */ - asn_TYPE_tag2member_t *tag2el; - int tag2el_count; - - /* - * Optional members of the extensions root (roms) or additions (aoms). - * Meaningful for PER. - */ - int *oms; /* Optional MemberS */ - int roms_count; /* Root optional members count */ - int aoms_count; /* Additions optional members count */ - - /* - * Description of an extensions group. - */ - int ext_after; /* Extensions start after this member */ - int ext_before; /* Extensions stop before this member */ - } asn_SEQUENCE_specifics_t; - - - /* - * A set specialized functions dealing with the SEQUENCE type. - */ - asn_struct_free_f SEQUENCE_free; - asn_struct_print_f SEQUENCE_print; - asn_constr_check_f SEQUENCE_constraint; - ber_type_decoder_f SEQUENCE_decode_ber; - der_type_encoder_f SEQUENCE_encode_der; - xer_type_decoder_f SEQUENCE_decode_xer; - xer_type_encoder_f SEQUENCE_encode_xer; - per_type_decoder_f SEQUENCE_decode_uper; - per_type_encoder_f SEQUENCE_encode_uper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CONSTR_SEQUENCE_H_ */ diff --git a/src/third_party/asn1/constr_SEQUENCE_OF.c b/src/third_party/asn1/constr_SEQUENCE_OF.c deleted file mode 100644 index a3fa5c2f..00000000 --- a/src/third_party/asn1/constr_SEQUENCE_OF.c +++ /dev/null @@ -1,208 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * The DER encoder of the SEQUENCE OF type. - */ -asn_enc_rval_t -SEQUENCE_OF_encode_der(asn_TYPE_descriptor_t *td, void *ptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - asn_anonymous_sequence_ *list = _A_SEQUENCE_FROM_VOID(ptr); - size_t computed_size = 0; - ssize_t encoding_size = 0; - asn_enc_rval_t erval; - int edx; - - ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) continue; - erval = elm->type->der_encoder(elm->type, memb_ptr, - 0, elm->tag, - 0, 0); - if(erval.encoded == -1) - return erval; - computed_size += erval.encoded; - } - - /* - * Encode the TLV for the sequence itself. - */ - encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, - cb, app_key); - if(encoding_size == -1) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - return erval; - } - - computed_size += encoding_size; - if(!cb) { - erval.encoded = computed_size; - _ASN_ENCODED_OK(erval); - } - - ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); - - /* - * Encode all members. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) continue; - erval = elm->type->der_encoder(elm->type, memb_ptr, - 0, elm->tag, - cb, app_key); - if(erval.encoded == -1) - return erval; - encoding_size += erval.encoded; - } - - if(computed_size != (size_t)encoding_size) { - /* - * Encoded size is not equal to the computed size. - */ - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - } else { - erval.encoded = computed_size; - erval.structure_ptr = 0; - erval.failed_type = 0; - } - - return erval; -} - -asn_enc_rval_t -SEQUENCE_OF_encode_xer(asn_TYPE_descriptor_t *td, void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er; - asn_SET_OF_specifics_t *specs = (asn_SET_OF_specifics_t *)td->specifics; - asn_TYPE_member_t *elm = td->elements; - asn_anonymous_sequence_ *list = _A_SEQUENCE_FROM_VOID(sptr); - const char *mname = specs->as_XMLValueList - ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); - unsigned int mlen = mname ? strlen(mname) : 0; - int xcan = (flags & XER_F_CANONICAL); - int i; - - if(!sptr) _ASN_ENCODE_FAILED; - - er.encoded = 0; - - for(i = 0; i < list->count; i++) { - asn_enc_rval_t tmper; - void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - if(mname) { - if(!xcan) _i_ASN_TEXT_INDENT(1, ilevel); - _ASN_CALLBACK3("<", 1, mname, mlen, ">", 1); - } - - tmper = elm->type->xer_encoder(elm->type, memb_ptr, - ilevel + 1, flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - if(tmper.encoded == 0 && specs->as_XMLValueList) { - const char *name = elm->type->xml_tag; - size_t len = strlen(name); - if(!xcan) _i_ASN_TEXT_INDENT(1, ilevel + 1); - _ASN_CALLBACK3("<", 1, name, len, "/>", 2); - } - - if(mname) { - _ASN_CALLBACK3("", 1); - er.encoded += 5; - } - - er.encoded += (2 * mlen) + tmper.encoded; - } - - if(!xcan) _i_ASN_TEXT_INDENT(1, ilevel - 1); - - _ASN_ENCODED_OK(er); -cb_failed: - _ASN_ENCODE_FAILED; -} - -asn_enc_rval_t -SEQUENCE_OF_encode_uper(asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { - asn_anonymous_sequence_ *list; - asn_per_constraint_t *ct; - asn_enc_rval_t er; - asn_TYPE_member_t *elm = td->elements; - int seq; - - if(!sptr) _ASN_ENCODE_FAILED; - list = _A_SEQUENCE_FROM_VOID(sptr); - - er.encoded = 0; - - ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); - - if(constraints) ct = &constraints->size; - else if(td->per_constraints) ct = &td->per_constraints->size; - else ct = 0; - - /* If extensible constraint, check if size is in root */ - if(ct) { - int not_in_root = (list->count < ct->lower_bound - || list->count > ct->upper_bound); - ASN_DEBUG("lb %ld ub %ld %s", - ct->lower_bound, ct->upper_bound, - ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); - if(ct->flags & APC_EXTENSIBLE) { - /* Declare whether size is in extension root */ - if(per_put_few_bits(po, not_in_root, 1)) - _ASN_ENCODE_FAILED; - if(not_in_root) ct = 0; - } else if(not_in_root && ct->effective_bits >= 0) - _ASN_ENCODE_FAILED; - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - if(per_put_few_bits(po, list->count - ct->lower_bound, - ct->effective_bits)) - _ASN_ENCODE_FAILED; - } - - for(seq = -1; seq < list->count;) { - ssize_t mayEncode; - if(seq < 0) seq = 0; - if(ct && ct->effective_bits >= 0) { - mayEncode = list->count; - } else { - mayEncode = uper_put_length(po, list->count - seq); - if(mayEncode < 0) _ASN_ENCODE_FAILED; - } - - while(mayEncode--) { - void *memb_ptr = list->array[seq++]; - if(!memb_ptr) _ASN_ENCODE_FAILED; - er = elm->type->uper_encoder(elm->type, - elm->per_constraints, memb_ptr, po); - if(er.encoded == -1) - _ASN_ENCODE_FAILED; - } - } - - _ASN_ENCODED_OK(er); -} - diff --git a/src/third_party/asn1/constr_SEQUENCE_OF.h b/src/third_party/asn1/constr_SEQUENCE_OF.h deleted file mode 100644 index b75fe4e9..00000000 --- a/src/third_party/asn1/constr_SEQUENCE_OF.h +++ /dev/null @@ -1,33 +0,0 @@ -/*- - * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _CONSTR_SEQUENCE_OF_H_ -#define _CONSTR_SEQUENCE_OF_H_ - -#include -#include /* Implemented using SET OF */ - -#ifdef __cplusplus -extern "C" { -#endif - - /* - * A set specialized functions dealing with the SEQUENCE OF type. - * Generally implemented using SET OF. - */ -#define SEQUENCE_OF_free SET_OF_free -#define SEQUENCE_OF_print SET_OF_print -#define SEQUENCE_OF_constraint SET_OF_constraint -#define SEQUENCE_OF_decode_ber SET_OF_decode_ber -#define SEQUENCE_OF_decode_xer SET_OF_decode_xer -#define SEQUENCE_OF_decode_uper SET_OF_decode_uper - der_type_encoder_f SEQUENCE_OF_encode_der; - xer_type_encoder_f SEQUENCE_OF_encode_xer; - per_type_encoder_f SEQUENCE_OF_encode_uper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CONSTR_SET_OF_H_ */ diff --git a/src/third_party/asn1/constr_SET_OF.c b/src/third_party/asn1/constr_SET_OF.c deleted file mode 100644 index e9ce4104..00000000 --- a/src/third_party/asn1/constr_SET_OF.c +++ /dev/null @@ -1,957 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2005 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Number of bytes left for this structure. - * (ctx->left) indicates the number of bytes _transferred_ for the structure. - * (size) contains the number of bytes in the buffer passed. - */ -#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) - -/* - * If the subprocessor function returns with an indication that it wants - * more data, it may well be a fatal decoding problem, because the - * size is constrained by the 's L, even if the buffer size allows - * reading more data. - * For example, consider the buffer containing the following TLVs: - * ... - * The TLV length clearly indicates that one byte is expected in V, but - * if the V processor returns with "want more data" even if the buffer - * contains way more data than the V processor have seen. - */ -#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) - -/* - * This macro "eats" the part of the buffer which is definitely "consumed", - * i.e. was correctly converted into local representation or rightfully skipped. - */ -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - ptr = ((const char *)ptr) + num;\ - size -= num; \ - if(ctx->left >= 0) \ - ctx->left -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Switch to the next phase of parsing. - */ -#undef NEXT_PHASE -#undef PHASE_OUT -#define NEXT_PHASE(ctx) do { \ - ctx->phase++; \ - ctx->step = 0; \ - } while(0) -#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) - -/* - * Return a standardized complex structure. - */ -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself;\ - return rval; \ - } while(0) - -/* - * The decoder of the SET OF type. - */ -asn_dec_rval_t -SET_OF_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **struct_ptr, const void *ptr, size_t size, int tag_mode) { - /* - * Bring closer parts of structure description. - */ - asn_SET_OF_specifics_t *specs = (asn_SET_OF_specifics_t *)td->specifics; - asn_TYPE_member_t *elm = td->elements; /* Single one */ - - /* - * Parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - ber_tlv_tag_t tlv_tag; /* T from TLV */ - asn_dec_rval_t rval; /* Return code from subparsers */ - - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - ASN_DEBUG("Decoding %s as SET OF", td->name); - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) { - RETURN(RC_FAIL); - } - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Start to parse where left previously - */ - switch(ctx->phase) { - case 0: - /* - * PHASE 0. - * Check that the set of tags associated with given structure - * perfectly fits our expectations. - */ - - rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, - tag_mode, 1, &ctx->left, 0); - if(rval.code != RC_OK) { - ASN_DEBUG("%s tagging check failed: %d", - td->name, rval.code); - return rval; - } - - if(ctx->left >= 0) - ctx->left += rval.consumed; /* ?Substracted below! */ - ADVANCE(rval.consumed); - - ASN_DEBUG("Structure consumes %ld bytes, " - "buffer %ld", (long)ctx->left, (long)size); - - NEXT_PHASE(ctx); - /* Fall through */ - case 1: - /* - * PHASE 1. - * From the place where we've left it previously, - * try to decode the next item. - */ - for(;; ctx->step = 0) { - ssize_t tag_len; /* Length of TLV's T */ - - if(ctx->step & 1) - goto microphase2; - - /* - * MICROPHASE 1: Synchronize decoding. - */ - - if(ctx->left == 0) { - ASN_DEBUG("End of SET OF %s", td->name); - /* - * No more things to decode. - * Exit out of here. - */ - PHASE_OUT(ctx); - RETURN(RC_OK); - } - - /* - * Fetch the T from TLV. - */ - tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); - switch(tag_len) { - case 0: - if(!SIZE_VIOLATION) RETURN(RC_WMORE); - /* Fall through */ - case -1: - RETURN(RC_FAIL); - } - - if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { - if(LEFT < 2) { - if(SIZE_VIOLATION) - RETURN(RC_FAIL); - else - RETURN(RC_WMORE); - } else if(((const uint8_t *)ptr)[1] == 0) { - /* - * Found the terminator of the - * indefinite length structure. - */ - break; - } - } - - /* Outmost tag may be unknown and cannot be fetched/compared */ - if(elm->tag != (ber_tlv_tag_t)-1) { - if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { - /* - * The new list member of expected type has arrived. - */ - } else { - ASN_DEBUG("Unexpected tag %s fixed SET OF %s", - ber_tlv_tag_string(tlv_tag), td->name); - ASN_DEBUG("%s SET OF has tag %s", - td->name, ber_tlv_tag_string(elm->tag)); - RETURN(RC_FAIL); - } - } - - /* - * MICROPHASE 2: Invoke the member-specific decoder. - */ - ctx->step |= 1; /* Confirm entering next microphase */ -microphase2: - - /* - * Invoke the member fetch routine according to member's type - */ - rval = elm->type->ber_decoder(opt_codec_ctx, - elm->type, &ctx->ptr, ptr, LEFT, 0); - ASN_DEBUG("In %s SET OF %s code %d consumed %d", - td->name, elm->type->name, - rval.code, (int)rval.consumed); - switch(rval.code) { - case RC_OK: - { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - if(ASN_SET_ADD(list, ctx->ptr) != 0) - RETURN(RC_FAIL); - else - ctx->ptr = 0; - } - break; - case RC_WMORE: /* More data expected */ - if(!SIZE_VIOLATION) { - ADVANCE(rval.consumed); - RETURN(RC_WMORE); - } - /* Fall through */ - case RC_FAIL: /* Fatal error */ - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - RETURN(RC_FAIL); - } /* switch(rval) */ - - ADVANCE(rval.consumed); - } /* for(all list members) */ - - NEXT_PHASE(ctx); - case 2: - /* - * Read in all "end of content" TLVs. - */ - while(ctx->left < 0) { - if(LEFT < 2) { - if(LEFT > 0 && ((const char *)ptr)[0] != 0) { - /* Unexpected tag */ - RETURN(RC_FAIL); - } else { - RETURN(RC_WMORE); - } - } - if(((const char *)ptr)[0] == 0 - && ((const char *)ptr)[1] == 0) { - ADVANCE(2); - ctx->left++; - } else { - RETURN(RC_FAIL); - } - } - - PHASE_OUT(ctx); - } - - RETURN(RC_OK); -} - -/* - * Internally visible buffer holding a single encoded element. - */ -struct _el_buffer { - uint8_t *buf; - size_t length; - size_t size; -}; -/* Append bytes to the above structure */ -static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { - struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; - - if(el_buf->length + size > el_buf->size) - return -1; - - memcpy(el_buf->buf + el_buf->length, buffer, size); - - el_buf->length += size; - return 0; -} -static int _el_buf_cmp(const void *ap, const void *bp) { - const struct _el_buffer *a = (const struct _el_buffer *)ap; - const struct _el_buffer *b = (const struct _el_buffer *)bp; - int ret; - size_t common_len; - - if(a->length < b->length) - common_len = a->length; - else - common_len = b->length; - - ret = memcmp(a->buf, b->buf, common_len); - if(ret == 0) { - if(a->length < b->length) - ret = -1; - else if(a->length > b->length) - ret = 1; - } - - return ret; -} - -/* - * The DER encoder of the SET OF type. - */ -asn_enc_rval_t -SET_OF_encode_der(asn_TYPE_descriptor_t *td, void *ptr, - int tag_mode, ber_tlv_tag_t tag, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - asn_TYPE_descriptor_t *elm_type = elm->type; - der_type_encoder_f *der_encoder = elm_type->der_encoder; - asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); - size_t computed_size = 0; - ssize_t encoding_size = 0; - struct _el_buffer *encoded_els; - ssize_t eels_count = 0; - size_t max_encoded_len = 1; - asn_enc_rval_t erval; - int ret; - int edx; - - ASN_DEBUG("Estimating size for SET OF %s", td->name); - - /* - * Gather the length of the underlying members sequence. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - if(!memb_ptr) continue; - erval = der_encoder(elm_type, memb_ptr, 0, elm->tag, 0, 0); - if(erval.encoded == -1) - return erval; - computed_size += erval.encoded; - - /* Compute maximum encoding's size */ - if(max_encoded_len < (size_t)erval.encoded) - max_encoded_len = erval.encoded; - } - - /* - * Encode the TLV for the sequence itself. - */ - encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, - cb, app_key); - if(encoding_size == -1) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - return erval; - } - computed_size += encoding_size; - - if(!cb || list->count == 0) { - erval.encoded = computed_size; - _ASN_ENCODED_OK(erval); - } - - /* - * DER mandates dynamic sorting of the SET OF elements - * according to their encodings. Build an array of the - * encoded elements. - */ - encoded_els = (struct _el_buffer *)MALLOC( - list->count * sizeof(encoded_els[0])); - if(encoded_els == NULL) { - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - return erval; - } - - ASN_DEBUG("Encoding members of %s SET OF", td->name); - - /* - * Encode all members. - */ - for(edx = 0; edx < list->count; edx++) { - void *memb_ptr = list->array[edx]; - struct _el_buffer *encoded_el = &encoded_els[eels_count]; - - if(!memb_ptr) continue; - - /* - * Prepare space for encoding. - */ - encoded_el->buf = (uint8_t *)MALLOC(max_encoded_len); - if(encoded_el->buf) { - encoded_el->length = 0; - encoded_el->size = max_encoded_len; - } else { - for(edx--; edx >= 0; edx--) - FREEMEM(encoded_els[edx].buf); - FREEMEM(encoded_els); - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - return erval; - } - - /* - * Encode the member into the prepared space. - */ - erval = der_encoder(elm_type, memb_ptr, 0, elm->tag, - _el_addbytes, encoded_el); - if(erval.encoded == -1) { - for(; edx >= 0; edx--) - FREEMEM(encoded_els[edx].buf); - FREEMEM(encoded_els); - return erval; - } - encoding_size += erval.encoded; - eels_count++; - } - - /* - * Sort the encoded elements according to their encoding. - */ - qsort(encoded_els, eels_count, sizeof(encoded_els[0]), _el_buf_cmp); - - /* - * Report encoded elements to the application. - * Dispose of temporary sorted members table. - */ - ret = 0; - for(edx = 0; edx < eels_count; edx++) { - struct _el_buffer *encoded_el = &encoded_els[edx]; - /* Report encoded chunks to the application */ - if(ret == 0 - && cb(encoded_el->buf, encoded_el->length, app_key) < 0) - ret = -1; - FREEMEM(encoded_el->buf); - } - FREEMEM(encoded_els); - - if(ret || computed_size != (size_t)encoding_size) { - /* - * Standard callback failed, or - * encoded size is not equal to the computed size. - */ - erval.encoded = -1; - erval.failed_type = td; - erval.structure_ptr = ptr; - } else { - erval.encoded = computed_size; - } - - _ASN_ENCODED_OK(erval); -} - -#undef XER_ADVANCE -#define XER_ADVANCE(num_bytes) do { \ - size_t num = num_bytes; \ - buf_ptr = ((const char *)buf_ptr) + num;\ - size -= num; \ - consumed_myself += num; \ - } while(0) - -/* - * Decode the XER (XML) data. - */ -asn_dec_rval_t -SET_OF_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **struct_ptr, const char *opt_mname, - const void *buf_ptr, size_t size) { - /* - * Bring closer parts of structure description. - */ - asn_SET_OF_specifics_t *specs = (asn_SET_OF_specifics_t *)td->specifics; - asn_TYPE_member_t *element = td->elements; - const char *elm_tag; - const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; - - /* - * ... and parts of the structure being constructed. - */ - void *st = *struct_ptr; /* Target structure. */ - asn_struct_ctx_t *ctx; /* Decoder context */ - - asn_dec_rval_t rval; /* Return value from a decoder */ - ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ - - /* - * Create the target structure if it is not present already. - */ - if(st == 0) { - st = *struct_ptr = CALLOC(1, specs->struct_size); - if(st == 0) RETURN(RC_FAIL); - } - - /* Which tag is expected for the downstream */ - if(specs->as_XMLValueList) { - elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; - } else { - elm_tag = (*element->name) - ? element->name : element->type->xml_tag; - } - - /* - * Restore parsing context. - */ - ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - * Phase 2: Processing inner type. - */ - for(; ctx->phase <= 2;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - - /* - * Go inside the inner member of a set. - */ - if(ctx->phase == 2) { - asn_dec_rval_t tmprval; - - /* Invoke the inner type decoder, m.b. multiple times */ - ASN_DEBUG("XER/SET OF element [%s]", elm_tag); - tmprval = element->type->xer_decoder(opt_codec_ctx, - element->type, &ctx->ptr, elm_tag, - buf_ptr, size); - if(tmprval.code == RC_OK) { - asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); - if(ASN_SET_ADD(list, ctx->ptr) != 0) - RETURN(RC_FAIL); - ctx->ptr = 0; - XER_ADVANCE(tmprval.consumed); - } else { - XER_ADVANCE(tmprval.consumed); - RETURN(tmprval.code); - } - ctx->phase = 1; /* Back to body processing */ - ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); - /* Fall through */ - } - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, - buf_ptr, size, &ch_type); - switch(ch_size) { - case -1: - RETURN(RC_FAIL); - case 0: - RETURN(RC_WMORE); - default: - switch(ch_type) { - case PXER_COMMENT: /* Got XML comment */ - case PXER_TEXT: /* Ignore free-standing text */ - XER_ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", - tcv, ctx->phase, xml_tag); - switch(tcv) { - case XCT_CLOSING: - if(ctx->phase == 0) break; - ctx->phase = 0; - /* Fall through */ - case XCT_BOTH: - if(ctx->phase == 0) { - /* No more things to decode */ - XER_ADVANCE(ch_size); - ctx->phase = 3; /* Phase out */ - RETURN(RC_OK); - } - /* Fall through */ - case XCT_OPENING: - if(ctx->phase == 0) { - XER_ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - } - /* Fall through */ - case XCT_UNKNOWN_OP: - case XCT_UNKNOWN_BO: - - ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); - if(ctx->phase == 1) { - /* - * Process a single possible member. - */ - ctx->phase = 2; - continue; - } - /* Fall through */ - default: - break; - } - - ASN_DEBUG("Unexpected XML tag in SET OF"); - break; - } - - ctx->phase = 3; /* "Phase out" on hard failure */ - RETURN(RC_FAIL); -} - - - -typedef struct xer_tmp_enc_s { - void *buffer; - size_t offset; - size_t size; -} xer_tmp_enc_t; -static int -SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { - xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; - if(t->offset + size >= t->size) { - size_t newsize = (t->size << 2) + size; - void *p = REALLOC(t->buffer, newsize); - if(!p) return -1; - t->buffer = p; - t->size = newsize; - } - memcpy((char *)t->buffer + t->offset, buffer, size); - t->offset += size; - return 0; -} -static int -SET_OF_xer_order(const void *aptr, const void *bptr) { - const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; - const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; - size_t minlen = a->offset; - int ret; - if(b->offset < minlen) minlen = b->offset; - /* Well-formed UTF-8 has this nice lexicographical property... */ - ret = memcmp(a->buffer, b->buffer, minlen); - if(ret != 0) return ret; - if(a->offset == b->offset) - return 0; - if(a->offset == minlen) - return -1; - return 1; -} - - -asn_enc_rval_t -SET_OF_encode_xer(asn_TYPE_descriptor_t *td, void *sptr, - int ilevel, enum xer_encoder_flags_e flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er; - asn_SET_OF_specifics_t *specs = (asn_SET_OF_specifics_t *)td->specifics; - asn_TYPE_member_t *elm = td->elements; - asn_anonymous_set_ *list = _A_SET_FROM_VOID(sptr); - const char *mname = specs->as_XMLValueList - ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); - size_t mlen = mname ? strlen(mname) : 0; - int xcan = (flags & XER_F_CANONICAL); - xer_tmp_enc_t *encs = 0; - size_t encs_count = 0; - void *original_app_key = app_key; - asn_app_consume_bytes_f *original_cb = cb; - int i; - - if(!sptr) _ASN_ENCODE_FAILED; - - if(xcan) { - encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); - if(!encs) _ASN_ENCODE_FAILED; - cb = SET_OF_encode_xer_callback; - } - - er.encoded = 0; - - for(i = 0; i < list->count; i++) { - asn_enc_rval_t tmper; - - void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - if(encs) { - memset(&encs[encs_count], 0, sizeof(encs[0])); - app_key = &encs[encs_count]; - encs_count++; - } - - if(mname) { - if(!xcan) _i_ASN_TEXT_INDENT(1, ilevel); - _ASN_CALLBACK3("<", 1, mname, mlen, ">", 1); - } - - if(!xcan && specs->as_XMLValueList == 1) - _i_ASN_TEXT_INDENT(1, ilevel + 1); - tmper = elm->type->xer_encoder(elm->type, memb_ptr, - ilevel + (specs->as_XMLValueList != 2), - flags, cb, app_key); - if(tmper.encoded == -1) { - td = tmper.failed_type; - sptr = tmper.structure_ptr; - goto cb_failed; - } - if(tmper.encoded == 0 && specs->as_XMLValueList) { - const char *name = elm->type->xml_tag; - size_t len = strlen(name); - _ASN_CALLBACK3("<", 1, name, len, "/>", 2); - } - - if(mname) { - _ASN_CALLBACK3("", 1); - er.encoded += 5; - } - - er.encoded += (2 * mlen) + tmper.encoded; - } - - if(!xcan) _i_ASN_TEXT_INDENT(1, ilevel - 1); - - if(encs) { - xer_tmp_enc_t *enc = encs; - xer_tmp_enc_t *end = encs + encs_count; - ssize_t control_size = 0; - - cb = original_cb; - app_key = original_app_key; - qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); - - for(; enc < end; enc++) { - _ASN_CALLBACK(enc->buffer, enc->offset); - FREEMEM(enc->buffer); - enc->buffer = 0; - control_size += enc->offset; - } - assert(control_size == er.encoded); - } - - goto cleanup; -cb_failed: - er.encoded = -1; - er.failed_type = td; - er.structure_ptr = sptr; -cleanup: - if(encs) { - while(encs_count-- > 0) { - if(encs[encs_count].buffer) - FREEMEM(encs[encs_count].buffer); - } - FREEMEM(encs); - } - _ASN_ENCODED_OK(er); -} - -int -SET_OF_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - int ret; - int i; - - if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; - - /* Dump preamble */ - if(cb(td->name, strlen(td->name), app_key) < 0 - || cb(" ::= {", 6, app_key) < 0) - return -1; - - for(i = 0; i < list->count; i++) { - const void *memb_ptr = list->array[i]; - if(!memb_ptr) continue; - - _i_INDENT(1); - - ret = elm->type->print_struct(elm->type, memb_ptr, - ilevel + 1, cb, app_key); - if(ret) return ret; - } - - ilevel--; - _i_INDENT(1); - - return (cb("}", 1, app_key) < 0) ? -1 : 0; -} - -void -SET_OF_free(asn_TYPE_descriptor_t *td, void *ptr, int contents_only) { - if(td && ptr) { - asn_SET_OF_specifics_t *specs; - asn_TYPE_member_t *elm = td->elements; - asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); - asn_struct_ctx_t *ctx; /* Decoder context */ - int i; - - /* - * Could not use set_of_empty() because of (*free) - * incompatibility. - */ - for(i = 0; i < list->count; i++) { - void *memb_ptr = list->array[i]; - if(memb_ptr) - ASN_STRUCT_FREE(*elm->type, memb_ptr); - } - list->count = 0; /* No meaningful elements left */ - - asn_set_empty(list); /* Remove (list->array) */ - - specs = (asn_SET_OF_specifics_t *)td->specifics; - ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); - if(ctx->ptr) { - ASN_STRUCT_FREE(*elm->type, ctx->ptr); - ctx->ptr = 0; - } - - if(!contents_only) { - FREEMEM(ptr); - } - } -} - -int -SET_OF_constraint(asn_TYPE_descriptor_t *td, const void *sptr, - asn_app_constraint_failed_f *ctfailcb, void *app_key) { - asn_TYPE_member_t *elm = td->elements; - asn_constr_check_f *constr; - const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); - int i; - - if(!sptr) { - _ASN_CTFAIL(app_key, td, sptr, - "%s: value not given (%s:%d)", - td->name, __FILE__, __LINE__); - return -1; - } - - constr = elm->memb_constraints; - if(!constr) constr = elm->type->check_constraints; - - /* - * Iterate over the members of an array. - * Validate each in turn, until one fails. - */ - for(i = 0; i < list->count; i++) { - const void *memb_ptr = list->array[i]; - int ret; - - if(!memb_ptr) continue; - - ret = constr(elm->type, memb_ptr, ctfailcb, app_key); - if(ret) return ret; - } - - /* - * Cannot inherit it eralier: - * need to make sure we get the updated version. - */ - if(!elm->memb_constraints) - elm->memb_constraints = elm->type->check_constraints; - - return 0; -} - -asn_dec_rval_t -SET_OF_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv; - asn_SET_OF_specifics_t *specs = (asn_SET_OF_specifics_t *)td->specifics; - asn_TYPE_member_t *elm = td->elements; /* Single one */ - void *st = *sptr; - asn_anonymous_set_ *list; - asn_per_constraint_t *ct; - int repeat = 0; - ssize_t nelems; - - if(_ASN_STACK_OVERFLOW_CHECK(opt_codec_ctx)) - _ASN_DECODE_FAILED; - - /* - * Create the target structure if it is not present already. - */ - if(!st) { - st = *sptr = CALLOC(1, specs->struct_size); - if(!st) _ASN_DECODE_FAILED; - } - list = _A_SET_FROM_VOID(st); - - /* Figure out which constraints to use */ - if(constraints) ct = &constraints->size; - else if(td->per_constraints) ct = &td->per_constraints->size; - else ct = 0; - - if(ct && ct->flags & APC_EXTENSIBLE) { - int value = per_get_few_bits(pd, 1); - if(value < 0) _ASN_DECODE_STARVED; - if(value) ct = 0; /* Not restricted! */ - } - - if(ct && ct->effective_bits >= 0) { - /* X.691, #19.5: No length determinant */ - nelems = per_get_few_bits(pd, ct->effective_bits); - ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", - (long)nelems, ct->lower_bound, td->name); - if(nelems < 0) _ASN_DECODE_STARVED; - nelems += ct->lower_bound; - } else { - nelems = -1; - } - - do { - int i; - if(nelems < 0) { - nelems = uper_get_length(pd, - ct ? ct->effective_bits : -1, &repeat); - ASN_DEBUG("Got to decode %d elements (eff %d)", - (int)nelems, (int)(ct ? ct->effective_bits : -1)); - if(nelems < 0) _ASN_DECODE_STARVED; - } - - for(i = 0; i < nelems; i++) { - void *ptr = 0; - ASN_DEBUG("SET OF %s decoding", elm->type->name); - rv = elm->type->uper_decoder(opt_codec_ctx, elm->type, - elm->per_constraints, &ptr, pd); - ASN_DEBUG("%s SET OF %s decoded %d, %p", - td->name, elm->type->name, rv.code, ptr); - if(rv.code == RC_OK) { - if(ASN_SET_ADD(list, ptr) == 0) - continue; - ASN_DEBUG("Failed to add element into %s", - td->name); - /* Fall through */ - rv.code = RC_FAIL; - } else { - ASN_DEBUG("Failed decoding %s of %s (SET OF)", - elm->type->name, td->name); - } - if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); - return rv; - } - - nelems = -1; /* Allow uper_get_length() */ - } while(repeat); - - ASN_DEBUG("Decoded %s as SET OF", td->name); - - rv.code = RC_OK; - rv.consumed = 0; - return rv; -} - diff --git a/src/third_party/asn1/constr_SET_OF.h b/src/third_party/asn1/constr_SET_OF.h deleted file mode 100644 index 2e01a0df..00000000 --- a/src/third_party/asn1/constr_SET_OF.h +++ /dev/null @@ -1,42 +0,0 @@ -/*- - * Copyright (c) 2003 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _CONSTR_SET_OF_H_ -#define _CONSTR_SET_OF_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - typedef struct asn_SET_OF_specifics_s { - /* - * Target structure description. - */ - int struct_size; /* Size of the target structure. */ - int ctx_offset; /* Offset of the asn_struct_ctx_t member */ - - /* XER-specific stuff */ - int as_XMLValueList; /* The member type must be encoded like this */ - } asn_SET_OF_specifics_t; - - /* - * A set specialized functions dealing with the SET OF type. - */ - asn_struct_free_f SET_OF_free; - asn_struct_print_f SET_OF_print; - asn_constr_check_f SET_OF_constraint; - ber_type_decoder_f SET_OF_decode_ber; - der_type_encoder_f SET_OF_encode_der; - xer_type_decoder_f SET_OF_decode_xer; - xer_type_encoder_f SET_OF_encode_xer; - per_type_decoder_f SET_OF_decode_uper; - per_type_encoder_f SET_OF_encode_uper; - -#ifdef __cplusplus -} -#endif - -#endif /* _CONSTR_SET_OF_H_ */ diff --git a/src/third_party/asn1/constr_TYPE.c b/src/third_party/asn1/constr_TYPE.c deleted file mode 100644 index eeb6c900..00000000 --- a/src/third_party/asn1/constr_TYPE.c +++ /dev/null @@ -1,79 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * Version of the ASN.1 infrastructure shipped with compiler. - */ -int get_asn1c_environment_version() { - return ASN1C_ENVIRONMENT_VERSION; -} - -static asn_app_consume_bytes_f _print2fp; - -/* - * Return the outmost tag of the type. - */ -ber_tlv_tag_t -asn_TYPE_outmost_tag(asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag) { - - if(tag_mode) - return tag; - - if(type_descriptor->tags_count) - return type_descriptor->tags[0]; - - return type_descriptor->outmost_tag(type_descriptor, struct_ptr, 0, 0); -} - -/* - * Print the target language's structure in human readable form. - */ -int -asn_fprint(FILE *stream, asn_TYPE_descriptor_t *td, const void *struct_ptr) { - if(!stream) stream = stdout; - if(!td || !struct_ptr) { - errno = EINVAL; - return -1; - } - - /* Invoke type-specific printer */ - if(td->print_struct(td, struct_ptr, 1, _print2fp, stream)) - return -1; - - /* Terminate the output */ - if(_print2fp("\n", 1, stream)) - return -1; - - return fflush(stream); -} - -/* Dump the data into the specified stdio stream */ -static int -_print2fp(const void *buffer, size_t size, void *app_key) { - FILE *stream = (FILE *)app_key; - - if(fwrite(buffer, 1, size, stream) != size) - return -1; - - return 0; -} - - -/* - * Some compilers do not support variable args macros. - * This function is a replacement of ASN_DEBUG() macro. - */ -void ASN_DEBUG_f(const char *fmt, ...); -void ASN_DEBUG_f(const char *fmt, ...) { - va_list ap; - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - fprintf(stderr, "\n"); - va_end(ap); -} diff --git a/src/third_party/asn1/constr_TYPE.h b/src/third_party/asn1/constr_TYPE.h deleted file mode 100644 index 597e9c28..00000000 --- a/src/third_party/asn1/constr_TYPE.h +++ /dev/null @@ -1,180 +0,0 @@ -/*- - * Copyright (c) 2003, 2004, 2005, 2006 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -/* - * This file contains the declaration structure called "ASN.1 Type Definition", - * which holds all information necessary for encoding and decoding routines. - * This structure even contains pointer to these encoding and decoding routines - * for each defined ASN.1 type. - */ -#ifndef _CONSTR_TYPE_H_ -#define _CONSTR_TYPE_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - struct asn_TYPE_descriptor_s; /* Forward declaration */ - struct asn_TYPE_member_s; /* Forward declaration */ - - /* - * This type provides the context information for various ASN.1 routines, - * primarily ones doing decoding. A member _asn_ctx of this type must be - * included into certain target language's structures, such as compound types. - */ - typedef struct asn_struct_ctx_s { - short phase; /* Decoding phase */ - short step; /* Elementary step of a phase */ - int context; /* Other context information */ - void *ptr; /* Decoder-specific stuff (stack elements) */ - ber_tlv_len_t left; /* Number of bytes left, -1 for indefinite */ - } asn_struct_ctx_t; - -#include /* Basic Encoding Rules decoder */ -#include /* Distinguished Encoding Rules encoder */ -#include /* Decoder of XER (XML, text) */ -#include /* Encoder into XER (XML, text) */ -#include /* Packet Encoding Rules decoder */ -#include /* Packet Encoding Rules encoder */ -#include /* Subtype constraints support */ - - /* - * Free the structure according to its specification. - * If (free_contents_only) is set, the wrapper structure itself (struct_ptr) - * will not be freed. (It may be useful in case the structure is allocated - * statically or arranged on the stack, yet its elements are allocated - * dynamically.) - */ - typedef void (asn_struct_free_f)( - struct asn_TYPE_descriptor_s *type_descriptor, - void *struct_ptr, int free_contents_only); -#define ASN_STRUCT_FREE(asn_DEF, ptr) (asn_DEF).free_struct(&(asn_DEF),ptr,0) -#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \ - (asn_DEF).free_struct(&(asn_DEF),ptr,1) - - /* - * Print the structure according to its specification. - */ - typedef int (asn_struct_print_f)( - struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, - int level, /* Indentation level */ - asn_app_consume_bytes_f *callback, void *app_key); - - /* - * Return the outmost tag of the type. - * If the type is untagged CHOICE, the dynamic operation is performed. - * NOTE: This function pointer type is only useful internally. - * Do not use it in your application. - */ - typedef ber_tlv_tag_t (asn_outmost_tag_f)( - struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag); - /* The instance of the above function type; used internally. */ - asn_outmost_tag_f asn_TYPE_outmost_tag; - - - /* - * The definitive description of the destination language's structure. - */ - typedef struct asn_TYPE_descriptor_s { - char *name; /* A name of the ASN.1 type. "" in some cases. */ - char *xml_tag; /* Name used in XML tag */ - - /* - * Generalized functions for dealing with the specific type. - * May be directly invoked by applications. - */ - asn_struct_free_f *free_struct; /* Free the structure */ - asn_struct_print_f *print_struct; /* Human readable output */ - asn_constr_check_f *check_constraints; /* Constraints validator */ - ber_type_decoder_f *ber_decoder; /* Generic BER decoder */ - der_type_encoder_f *der_encoder; /* Canonical DER encoder */ - xer_type_decoder_f *xer_decoder; /* Generic XER decoder */ - xer_type_encoder_f *xer_encoder; /* [Canonical] XER encoder */ - per_type_decoder_f *uper_decoder; /* Unaligned PER decoder */ - per_type_encoder_f *uper_encoder; /* Unaligned PER encoder */ - - /*********************************************************************** - * Internally useful members. Not to be used by applications directly. * - **********************************************************************/ - - /* - * Tags that are expected to occur. - */ - asn_outmost_tag_f *outmost_tag; /* */ - ber_tlv_tag_t *tags; /* Effective tags sequence for this type */ - int tags_count; /* Number of tags which are expected */ - ber_tlv_tag_t *all_tags;/* Every tag for BER/containment */ - int all_tags_count; /* Number of tags */ - - asn_per_constraints_t *per_constraints; /* PER compiled constraints */ - - /* - * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE). - */ - struct asn_TYPE_member_s *elements; - int elements_count; - - /* - * Additional information describing the type, used by appropriate - * functions above. - */ - void *specifics; - } asn_TYPE_descriptor_t; - - /* - * This type describes an element of the constructed type, - * i.e. SEQUENCE, SET, CHOICE, etc. - */ - enum asn_TYPE_flags_e { - ATF_NOFLAGS, - ATF_POINTER = 0x01, /* Represented by the pointer */ - ATF_OPEN_TYPE = 0x02 /* ANY type, without meaningful tag */ - }; - typedef struct asn_TYPE_member_s { - enum asn_TYPE_flags_e flags; /* Element's presentation flags */ - int optional; /* Following optional members, including current */ - int memb_offset; /* Offset of the element */ - ber_tlv_tag_t tag; /* Outmost (most immediate) tag */ - int tag_mode; /* IMPLICIT/no/EXPLICIT tag at current level */ - asn_TYPE_descriptor_t *type; /* Member type descriptor */ - asn_constr_check_f *memb_constraints; /* Constraints validator */ - asn_per_constraints_t *per_constraints; /* PER compiled constraints */ - int (*default_value)(int setval, void **sptr); /* DEFAULT */ - char *name; /* ASN.1 identifier of the element */ - } asn_TYPE_member_t; - - /* - * BER tag to element number mapping. - */ - typedef struct asn_TYPE_tag2member_s { - ber_tlv_tag_t el_tag; /* Outmost tag of the member */ - int el_no; /* Index of the associated member, base 0 */ - int toff_first; /* First occurence of the el_tag, relative */ - int toff_last; /* Last occurence of the el_tag, relatvie */ - } asn_TYPE_tag2member_t; - - /* - * This function is a wrapper around (td)->print_struct, which prints out - * the contents of the target language's structure (struct_ptr) into the - * file pointer (stream) in human readable form. - * RETURN VALUES: - * 0: The structure is printed. - * -1: Problem dumping the structure. - * (See also xer_fprint() in xer_encoder.h) - */ - int asn_fprint(FILE *stream, /* Destination stream descriptor */ - asn_TYPE_descriptor_t *td, /* ASN.1 type descriptor */ - const void *struct_ptr); /* Structure to be printed */ - -#ifdef __cplusplus -} -#endif - -#endif /* _CONSTR_TYPE_H_ */ diff --git a/src/third_party/asn1/constraints.c b/src/third_party/asn1/constraints.c deleted file mode 100644 index 97d9d69d..00000000 --- a/src/third_party/asn1/constraints.c +++ /dev/null @@ -1,93 +0,0 @@ -#include "asn_internal.h" -#include "constraints.h" - -int -asn_generic_no_constraint(asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, asn_app_constraint_failed_f *cb, void *key) { - - (void)type_descriptor; /* Unused argument */ - (void)struct_ptr; /* Unused argument */ - (void)cb; /* Unused argument */ - (void)key; /* Unused argument */ - - /* Nothing to check */ - return 0; -} - -int -asn_generic_unknown_constraint(asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, asn_app_constraint_failed_f *cb, void *key) { - - (void)type_descriptor; /* Unused argument */ - (void)struct_ptr; /* Unused argument */ - (void)cb; /* Unused argument */ - (void)key; /* Unused argument */ - - /* Unknown how to check */ - return 0; -} - -struct errbufDesc { - asn_TYPE_descriptor_t *failed_type; - const void *failed_struct_ptr; - char *errbuf; - size_t errlen; -}; - -static void -_asn_i_ctfailcb(void *key, asn_TYPE_descriptor_t *td, const void *sptr, const char *fmt, ...) { - struct errbufDesc *arg = key; - va_list ap; - ssize_t vlen; - ssize_t maxlen; - - arg->failed_type = td; - arg->failed_struct_ptr = sptr; - - maxlen = arg->errlen; - if(maxlen <= 0) - return; - - va_start(ap, fmt); - vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); - va_end(ap); - if(vlen >= maxlen) { - arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ - arg->errlen = maxlen - 1; /* Not counting termination */ - return; - } else if(vlen >= 0) { - arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ - arg->errlen = vlen; /* Not counting termination */ - } else { - /* - * The libc on this system is broken. - */ - vlen = sizeof("") - 1; - maxlen--; - arg->errlen = vlen < maxlen ? vlen : maxlen; - memcpy(arg->errbuf, "", arg->errlen); - arg->errbuf[arg->errlen] = 0; - } - - return; -} - -int -asn_check_constraints(asn_TYPE_descriptor_t *type_descriptor, - const void *struct_ptr, char *errbuf, size_t *errlen) { - struct errbufDesc arg; - int ret; - - arg.failed_type = 0; - arg.failed_struct_ptr = 0; - arg.errbuf = errbuf; - arg.errlen = errlen ? *errlen : 0; - - ret = type_descriptor->check_constraints(type_descriptor, - struct_ptr, _asn_i_ctfailcb, &arg); - if(ret == -1 && errlen) - *errlen = arg.errlen; - - return ret; -} - diff --git a/src/third_party/asn1/constraints.h b/src/third_party/asn1/constraints.h deleted file mode 100644 index 3bd2c104..00000000 --- a/src/third_party/asn1/constraints.h +++ /dev/null @@ -1,63 +0,0 @@ -/*- - * Copyright (c) 2004, 2006 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _ASN1_CONSTRAINTS_VALIDATOR_H_ -#define _ASN1_CONSTRAINTS_VALIDATOR_H_ - -#include /* Platform-dependent types */ - -#ifdef __cplusplus -extern "C" { -#endif - - struct asn_TYPE_descriptor_s; /* Forward declaration */ - - /* - * Validate the structure according to the ASN.1 constraints. - * If errbuf and errlen are given, they shall be pointing to the appropriate - * buffer space and its length before calling this function. Alternatively, - * they could be passed as NULL's. If constraints validation fails, - * errlen will contain the actual number of bytes taken from the errbuf - * to encode an error message (properly 0-terminated). - * - * RETURN VALUES: - * This function returns 0 in case all ASN.1 constraints are met - * and -1 if one or more constraints were failed. - */ - int - asn_check_constraints(struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, /* Target language's structure */ - char *errbuf, /* Returned error description */ - size_t *errlen /* Length of the error description */ - ); - - - /* - * Generic type for constraint checking callback, - * associated with every type descriptor. - */ - typedef int (asn_constr_check_f)( - struct asn_TYPE_descriptor_s *type_descriptor, - const void *struct_ptr, - asn_app_constraint_failed_f *optional_callback, /* Log the error */ - void *optional_app_key /* Opaque key passed to a callback */ - ); - - /******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - - asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ - asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ - - /* - * Invoke the callback with a complete error message. - */ -#define _ASN_CTFAIL if(ctfailcb) ctfailcb - -#ifdef __cplusplus -} -#endif - -#endif /* _ASN1_CONSTRAINTS_VALIDATOR_H_ */ diff --git a/src/third_party/asn1/converter-sample.c b/src/third_party/asn1/converter-sample.c deleted file mode 100644 index 6e99c33c..00000000 --- a/src/third_party/asn1/converter-sample.c +++ /dev/null @@ -1,861 +0,0 @@ -/* - * Generic converter template for a selected ASN.1 type. - * Copyright (c) 2005, 2006, 2007 Lev Walkin . - * All rights reserved. - * - * To compile with your own ASN.1 type, please redefine the PDU as shown: - * - * cc -DPDU=MyCustomType -o myDecoder.o -c converter-sample.c - */ -#ifdef HAVE_CONFIG_H -#include -#endif -#include -#include -#include /* for atoi(3) */ -#include /* for getopt(3) */ -#include /* for strerror(3) */ -#include /* for EX_* exit codes */ -#include /* for errno */ - -#include -#include /* for _ASN_DEFAULT_STACK_MAX */ - -/* Convert "Type" defined by -DPDU into "asn_DEF_Type" */ -#define ASN_DEF_PDU(t) asn_DEF_ ## t -#define DEF_PDU_Type(t) ASN_DEF_PDU(t) -#define PDU_Type DEF_PDU_Type(PDU) - -extern asn_TYPE_descriptor_t PDU_Type; /* ASN.1 type to be decoded */ -#ifdef ASN_PDU_COLLECTION /* Generated by asn1c: -pdu=... */ -extern asn_TYPE_descriptor_t *asn_pdu_collection[]; -#endif - -/* - * Open file and parse its contens. - */ -static void *data_decode_from_file(asn_TYPE_descriptor_t *asnTypeOfPDU, - FILE *file, const char *name, ssize_t suggested_bufsize, int first_pdu); -static int write_out(const void *buffer, size_t size, void *key); -static FILE *argument_to_file(char *av[], int idx); -static char *argument_to_name(char *av[], int idx); - -int opt_debug; /* -d (or -dd) */ -static int opt_check; /* -c (constraints checking) */ -static int opt_stack; /* -s (maximum stack size) */ -static int opt_nopad; /* -per-nopad (PER input is not padded) */ -static int opt_onepdu; /* -1 (decode single PDU) */ - -/* Input data format selector */ -static enum input_format { - INP_BER, /* -iber: BER input */ - INP_XER, /* -ixer: XER input */ - INP_PER /* -iper: Unaligned PER input */ -} iform; /* -i */ - -/* Output data format selector */ -static enum output_format { - OUT_XER, /* -oxer: XER (XML) output */ - OUT_DER, /* -oder: DER (BER) output */ - OUT_PER, /* -oper: Unaligned PER output */ - OUT_TEXT, /* -otext: semi-structured text */ - OUT_NULL /* -onull: No pretty-printing */ -} oform; /* -o */ - -#ifdef JUNKTEST /* Enable -J */ -#define JUNKOPT "J:" -static double opt_jprob; /* Junk bit probability */ -static int junk_failures; -static void junk_bytes_with_probability(uint8_t *, size_t, double prob); -#else -#define JUNKOPT -#endif - -/* Debug output function */ -static inline void -DEBUG(const char *fmt, ...) { - va_list ap; - if(!opt_debug) return; - fprintf(stderr, "AD: "); - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -int -main(int ac, char *av[]) { - static asn_TYPE_descriptor_t *pduType = &PDU_Type; - ssize_t suggested_bufsize = 8192; /* close or equal to stdio buffer */ - int number_of_iterations = 1; - int num; - int ch; - - /* Figure out if Unaligned PER needs to be default */ - if(pduType->uper_decoder) - iform = INP_PER; - - /* - * Pocess the command-line argments. - */ - while((ch = getopt(ac, av, "i:o:1b:cdn:p:hs:" JUNKOPT)) != -1) - switch(ch) { - case 'i': - if(optarg[0] == 'b') { - iform = INP_BER; - break; - } - if(optarg[0] == 'x') { - iform = INP_XER; - break; - } - if(pduType->uper_decoder - && optarg[0] == 'p') { - iform = INP_PER; - break; - } - fprintf(stderr, "-i: '%s': improper format selector\n", - optarg); - exit(EX_UNAVAILABLE); - case 'o': - if(optarg[0] == 'd') { - oform = OUT_DER; - break; - } - if(pduType->uper_encoder - && optarg[0] == 'p') { - oform = OUT_PER; - break; - } - if(optarg[0] == 'x') { - oform = OUT_XER; - break; - } - if(optarg[0] == 't') { - oform = OUT_TEXT; - break; - } - if(optarg[0] == 'n') { - oform = OUT_NULL; - break; - } - fprintf(stderr, "-o: '%s': improper format selector\n", - optarg); - exit(EX_UNAVAILABLE); - case '1': - opt_onepdu = 1; - break; - case 'b': - suggested_bufsize = atoi(optarg); - if(suggested_bufsize < 1 - || suggested_bufsize > 16 * 1024 * 1024) { - fprintf(stderr, - "-b %s: Improper buffer size (1..16M)\n", - optarg); - exit(EX_UNAVAILABLE); - } - break; - case 'c': - opt_check = 1; - break; - case 'd': - opt_debug++; /* Double -dd means ASN.1 debug */ - break; - case 'n': - number_of_iterations = atoi(optarg); - if(number_of_iterations < 1) { - fprintf(stderr, - "-n %s: Improper iterations count\n", optarg); - exit(EX_UNAVAILABLE); - } - break; - case 'p': - if(strcmp(optarg, "er-nopad") == 0) { - opt_nopad = 1; - break; - } -#ifdef ASN_PDU_COLLECTION - if(strcmp(optarg, "list") == 0) { - asn_TYPE_descriptor_t **pdu = asn_pdu_collection; - fprintf(stderr, "Available PDU types:\n"); - for(; *pdu; pdu++) printf("%s\n", (*pdu)->name); - exit(0); - } else if(optarg[0] >= 'A' && optarg[0] <= 'Z') { - asn_TYPE_descriptor_t **pdu = asn_pdu_collection; - while(*pdu && strcmp((*pdu)->name, optarg)) pdu++; - if(*pdu) { - pduType = *pdu; - break; - } - fprintf(stderr, "-p %s: Unrecognized PDU\n", optarg); - } -#endif /* ASN_PDU_COLLECTION */ - fprintf(stderr, "-p %s: Unrecognized option\n", optarg); - exit(EX_UNAVAILABLE); - case 's': - opt_stack = atoi(optarg); - if(opt_stack < 0) { - fprintf(stderr, - "-s %s: Non-negative value expected\n", - optarg); - exit(EX_UNAVAILABLE); - } - break; -#ifdef JUNKTEST - case 'J': - opt_jprob = strtod(optarg, 0); - if(opt_jprob <= 0.0 || opt_jprob > 1.0) { - fprintf(stderr, - "-J %s: Probability range 0..1 expected \n", - optarg); - exit(EX_UNAVAILABLE); - } - break; -#endif /* JUNKTEST */ - case 'h': - default: -#ifdef ASN_CONVERTER_TITLE -#define _AXS(x) #x -#define _ASX(x) _AXS(x) - fprintf(stderr, "%s\n", _ASX(ASN_CONVERTER_TITLE)); -#endif - fprintf(stderr, "Usage: %s [options] ...\n", av[0]); - fprintf(stderr, "Where options are:\n"); - if(pduType->uper_decoder) - fprintf(stderr, - " -iper Input is in Unaligned PER (Packed Encoding Rules) (DEFAULT)\n"); - fprintf(stderr, - " -iber Input is in BER (Basic Encoding Rules)%s\n", - iform == INP_PER ? "" : " (DEFAULT)"); - fprintf(stderr, - " -ixer Input is in XER (XML Encoding Rules)\n"); - if(pduType->uper_encoder) - fprintf(stderr, - " -oper Output in Unaligned PER (Packed Encoding Rules)\n"); - fprintf(stderr, - " -oder Output in DER (Distinguished Encoding Rules)\n" - " -oxer Output in XER (XML Encoding Rules) (DEFAULT)\n" - " -otext Output in plain semi-structured text (dump)\n" - " -onull Verify (decode) input, but do not output\n"); - if(pduType->uper_decoder) - fprintf(stderr, - " -per-nopad Assume PER PDUs are not padded (-iper)\n"); -#ifdef ASN_PDU_COLLECTION - fprintf(stderr, - " -p Specify PDU type to decode\n" - " -p list List available PDUs\n"); -#endif /* ASN_PDU_COLLECTION */ - fprintf(stderr, - " -1 Decode only the first PDU in file\n" - " -b Set the i/o buffer size (default is %ld)\n" - " -c Check ASN.1 constraints after decoding\n" - " -d Enable debugging (-dd is even better)\n" - " -n Process files times\n" - " -s Set the stack usage limit (default is %d)\n" -#ifdef JUNKTEST - " -J Set random junk test bit garbaging probability\n" -#endif - , (long)suggested_bufsize, _ASN_DEFAULT_STACK_MAX); - exit(EX_USAGE); - } - - ac -= optind; - av += optind; - - if(ac < 1) { - fprintf(stderr, "%s: No input files specified. " - "Try '-h' for more information\n", - av[-optind]); - exit(EX_USAGE); - } - - setvbuf(stdout, 0, _IOLBF, 0); - - for(num = 0; num < number_of_iterations; num++) { - int ac_i; - /* - * Process all files in turn. - */ - for(ac_i = 0; ac_i < ac; ac_i++) { - asn_enc_rval_t erv; - void *structure; /* Decoded structure */ - FILE *file = argument_to_file(av, ac_i); - char *name = argument_to_name(av, ac_i); - int first_pdu; - - for(first_pdu = 1; first_pdu || !opt_onepdu; first_pdu = 0) { - /* - * Decode the encoded structure from file. - */ - structure = data_decode_from_file(pduType, - file, name, suggested_bufsize, first_pdu); - if(!structure) { - if(errno) { - /* Error message is already printed */ - exit(EX_DATAERR); - } else { - /* EOF */ - break; - } - } - - /* Check ASN.1 constraints */ - if(opt_check) { - char errbuf[128]; - size_t errlen = sizeof(errbuf); - if(asn_check_constraints(pduType, structure, - errbuf, &errlen)) { - fprintf(stderr, "%s: ASN.1 constraint " - "check failed: %s\n", name, errbuf); - exit(EX_DATAERR); - } - } - - switch(oform) { - case OUT_NULL: -#ifdef JUNKTEST - if(opt_jprob == 0.0) -#endif - fprintf(stderr, "%s: decoded successfully\n", name); - break; - case OUT_TEXT: /* -otext */ - asn_fprint(stdout, pduType, structure); - break; - case OUT_XER: /* -oxer */ - if(xer_fprint(stdout, pduType, structure)) { - fprintf(stderr, - "%s: Cannot convert %s into XML\n", - name, pduType->name); - exit(EX_UNAVAILABLE); - } - break; - case OUT_DER: - erv = der_encode(pduType, structure, write_out, stdout); - if(erv.encoded < 0) { - fprintf(stderr, - "%s: Cannot convert %s into DER\n", - name, pduType->name); - exit(EX_UNAVAILABLE); - } - DEBUG("Encoded in %ld bytes of DER", (long)erv.encoded); - break; - case OUT_PER: - erv = uper_encode(pduType, structure, write_out, stdout); - if(erv.encoded < 0) { - fprintf(stderr, - "%s: Cannot convert %s into Unaligned PER\n", - name, pduType->name); - exit(EX_UNAVAILABLE); - } - DEBUG("Encoded in %ld bits of UPER", (long)erv.encoded); - break; - } - - ASN_STRUCT_FREE(*pduType, structure); - } - - if(file && file != stdin) - fclose(file); - } - } - -#ifdef JUNKTEST - if(opt_jprob > 0.0) { - fprintf(stderr, "Junked %f OK (%d/%d)\n", - opt_jprob, junk_failures, number_of_iterations); - } -#endif /* JUNKTEST */ - - return 0; -} - -static struct dynamic_buffer { - uint8_t *data; /* Pointer to the data bytes */ - size_t offset; /* Offset from the start */ - size_t length; /* Length of meaningful contents */ - size_t unbits; /* Unused bits in the last byte */ - size_t allocated; /* Allocated memory for data */ - int nreallocs; /* Number of data reallocations */ - off_t bytes_shifted; /* Number of bytes ever shifted */ -} DynamicBuffer; - -static void -buffer_dump() { - uint8_t *p = DynamicBuffer.data + DynamicBuffer.offset; - uint8_t *e = p + DynamicBuffer.length - (DynamicBuffer.unbits ? 1 : 0); - if(!opt_debug) return; - DEBUG("Buffer: { d=%p, o=%ld, l=%ld, u=%ld, a=%ld, s=%ld }", - DynamicBuffer.data, - (long)DynamicBuffer.offset, - (long)DynamicBuffer.length, - (long)DynamicBuffer.unbits, - (long)DynamicBuffer.allocated, - (long)DynamicBuffer.bytes_shifted); - for(; p < e; p++) { - fprintf(stderr, " %c%c%c%c%c%c%c%c", - ((*p >> 7) & 1) ? '1' : '0', - ((*p >> 6) & 1) ? '1' : '0', - ((*p >> 5) & 1) ? '1' : '0', - ((*p >> 4) & 1) ? '1' : '0', - ((*p >> 3) & 1) ? '1' : '0', - ((*p >> 2) & 1) ? '1' : '0', - ((*p >> 1) & 1) ? '1' : '0', - ((*p >> 0) & 1) ? '1' : '0'); - } - if(DynamicBuffer.unbits) { - unsigned int shift; - fprintf(stderr, " "); - for(shift = 7; shift >= DynamicBuffer.unbits; shift--) - fprintf(stderr, "%c", ((*p >> shift) & 1) ? '1' : '0'); - fprintf(stderr, " %ld:%ld\n", - (long)DynamicBuffer.length - 1, - (long)8 - DynamicBuffer.unbits); - } else { - fprintf(stderr, " %ld\n", (long)DynamicBuffer.length); - } -} - -/* - * Move the buffer content left N bits, possibly joining it with - * preceeding content. - */ -static void -buffer_shift_left(size_t offset, int bits) { - uint8_t *ptr = DynamicBuffer.data + DynamicBuffer.offset + offset; - uint8_t *end = DynamicBuffer.data + DynamicBuffer.offset - + DynamicBuffer.length - 1; - - if(!bits) return; - - DEBUG("Shifting left %d bits off %ld (o=%ld, u=%ld, l=%ld)", - bits, (long)offset, - (long)DynamicBuffer.offset, - (long)DynamicBuffer.unbits, - (long)DynamicBuffer.length); - - if(offset) { - int right; - right = ptr[0] >> (8 - bits); - - DEBUG("oleft: %c%c%c%c%c%c%c%c", - ((ptr[-1] >> 7) & 1) ? '1' : '0', - ((ptr[-1] >> 6) & 1) ? '1' : '0', - ((ptr[-1] >> 5) & 1) ? '1' : '0', - ((ptr[-1] >> 4) & 1) ? '1' : '0', - ((ptr[-1] >> 3) & 1) ? '1' : '0', - ((ptr[-1] >> 2) & 1) ? '1' : '0', - ((ptr[-1] >> 1) & 1) ? '1' : '0', - ((ptr[-1] >> 0) & 1) ? '1' : '0'); - - DEBUG("oriht: %c%c%c%c%c%c%c%c", - ((ptr[0] >> 7) & 1) ? '1' : '0', - ((ptr[0] >> 6) & 1) ? '1' : '0', - ((ptr[0] >> 5) & 1) ? '1' : '0', - ((ptr[0] >> 4) & 1) ? '1' : '0', - ((ptr[0] >> 3) & 1) ? '1' : '0', - ((ptr[0] >> 2) & 1) ? '1' : '0', - ((ptr[0] >> 1) & 1) ? '1' : '0', - ((ptr[0] >> 0) & 1) ? '1' : '0'); - - DEBUG("mriht: %c%c%c%c%c%c%c%c", - ((right >> 7) & 1) ? '1' : '0', - ((right >> 6) & 1) ? '1' : '0', - ((right >> 5) & 1) ? '1' : '0', - ((right >> 4) & 1) ? '1' : '0', - ((right >> 3) & 1) ? '1' : '0', - ((right >> 2) & 1) ? '1' : '0', - ((right >> 1) & 1) ? '1' : '0', - ((right >> 0) & 1) ? '1' : '0'); - - ptr[-1] = (ptr[-1] & (0xff << bits)) | right; - - DEBUG("after: %c%c%c%c%c%c%c%c", - ((ptr[-1] >> 7) & 1) ? '1' : '0', - ((ptr[-1] >> 6) & 1) ? '1' : '0', - ((ptr[-1] >> 5) & 1) ? '1' : '0', - ((ptr[-1] >> 4) & 1) ? '1' : '0', - ((ptr[-1] >> 3) & 1) ? '1' : '0', - ((ptr[-1] >> 2) & 1) ? '1' : '0', - ((ptr[-1] >> 1) & 1) ? '1' : '0', - ((ptr[-1] >> 0) & 1) ? '1' : '0'); - } - - buffer_dump(); - - for(; ptr < end; ptr++) { - int right = ptr[1] >> (8 - bits); - *ptr = (*ptr << bits) | right; - } - *ptr <<= bits; - - DEBUG("Unbits [%d=>", (int)DynamicBuffer.unbits); - if(DynamicBuffer.unbits == 0) { - DynamicBuffer.unbits += bits; - } else { - DynamicBuffer.unbits += bits; - if(DynamicBuffer.unbits > 7) { - DynamicBuffer.unbits -= 8; - DynamicBuffer.length--; - DynamicBuffer.bytes_shifted++; - } - } - DEBUG("Unbits =>%d]", (int)DynamicBuffer.unbits); - - buffer_dump(); - - DEBUG("Shifted. Now (o=%ld, u=%ld l=%ld)", - (long)DynamicBuffer.offset, - (long)DynamicBuffer.unbits, - (long)DynamicBuffer.length); - - -} - -/* - * Ensure that the buffer contains at least this amount of free space. - */ -static void add_bytes_to_buffer(const void *data2add, size_t bytes) { - - if(bytes == 0) return; - - DEBUG("=> add_bytes(%ld) { o=%ld l=%ld u=%ld, s=%ld }", - (long)bytes, - (long)DynamicBuffer.offset, - (long)DynamicBuffer.length, - (long)DynamicBuffer.unbits, - (long)DynamicBuffer.allocated); - - if(DynamicBuffer.allocated - >= (DynamicBuffer.offset + DynamicBuffer.length + bytes)) { - DEBUG("\tNo buffer reallocation is necessary"); - } else if(bytes <= DynamicBuffer.offset) { - DEBUG("\tContents shifted by %ld", DynamicBuffer.offset); - - /* Shift the buffer contents */ - memmove(DynamicBuffer.data, - DynamicBuffer.data + DynamicBuffer.offset, - DynamicBuffer.length); - DynamicBuffer.bytes_shifted += DynamicBuffer.offset; - DynamicBuffer.offset = 0; - } else { - size_t newsize = (DynamicBuffer.allocated << 2) + bytes; - void *p = MALLOC(newsize); - if(!p) { - perror("malloc()"); - exit(EX_OSERR); - } - memcpy(p, - DynamicBuffer.data + DynamicBuffer.offset, - DynamicBuffer.length); - FREEMEM(DynamicBuffer.data); - DynamicBuffer.data = (uint8_t *)p; - DynamicBuffer.offset = 0; - DynamicBuffer.allocated = newsize; - DynamicBuffer.nreallocs++; - DEBUG("\tBuffer reallocated to %ld (%d time)", - newsize, DynamicBuffer.nreallocs); - } - - memcpy(DynamicBuffer.data - + DynamicBuffer.offset + DynamicBuffer.length, - data2add, bytes); - DynamicBuffer.length += bytes; - if(DynamicBuffer.unbits) { - int bits = DynamicBuffer.unbits; - DynamicBuffer.unbits = 0; - buffer_shift_left(DynamicBuffer.length - bytes, bits); - } - - DEBUG("<= add_bytes(%ld) { o=%ld l=%ld u=%ld, s=%ld }", - (long)bytes, - (long)DynamicBuffer.offset, - (long)DynamicBuffer.length, - (long)DynamicBuffer.unbits, - (long)DynamicBuffer.allocated); -} - -static void * -data_decode_from_file(asn_TYPE_descriptor_t *pduType, FILE *file, const char *name, ssize_t suggested_bufsize, int on_first_pdu) { - static uint8_t *fbuf; - static ssize_t fbuf_size; - static asn_codec_ctx_t s_codec_ctx; - asn_codec_ctx_t *opt_codec_ctx = 0; - void *structure = 0; - asn_dec_rval_t rval; - size_t old_offset; - size_t new_offset; - int tolerate_eof; - size_t rd; - - if(!file) { - fprintf(stderr, "%s: %s\n", name, strerror(errno)); - errno = EINVAL; - return 0; - } - - if(opt_stack) { - s_codec_ctx.max_stack_size = opt_stack; - opt_codec_ctx = &s_codec_ctx; - } - - DEBUG("Processing %s", name); - - /* prepare the file buffer */ - if(fbuf_size != suggested_bufsize) { - fbuf = (uint8_t *)REALLOC(fbuf, suggested_bufsize); - if(!fbuf) { - perror("realloc()"); - exit(EX_OSERR); - } - fbuf_size = suggested_bufsize; - } - - if(on_first_pdu) { - DynamicBuffer.offset = 0; - DynamicBuffer.length = 0; - DynamicBuffer.unbits = 0; - DynamicBuffer.allocated = 0; - DynamicBuffer.bytes_shifted = 0; - DynamicBuffer.nreallocs = 0; - } - - old_offset = DynamicBuffer.bytes_shifted + DynamicBuffer.offset; - - /* Pretend immediate EOF */ - rval.code = RC_WMORE; - rval.consumed = 0; - - for(tolerate_eof = 1; /* Allow EOF first time buffer is non-empty */ - (rd = fread(fbuf, 1, fbuf_size, file)) - || feof(file) == 0 - || (tolerate_eof && DynamicBuffer.length) - ;) { - int ecbits = 0; /* Extra consumed bits in case of PER */ - uint8_t *i_bptr; - size_t i_size; - - /* - * Copy the data over, or use the original buffer. - */ - if(DynamicBuffer.allocated) { - /* Append new data into the existing dynamic buffer */ - add_bytes_to_buffer(fbuf, rd); - i_bptr = DynamicBuffer.data + DynamicBuffer.offset; - i_size = DynamicBuffer.length; - } else { - i_bptr = fbuf; - i_size = rd; - } - - DEBUG("Decoding %ld bytes", (long)i_size); - -#ifdef JUNKTEST - junk_bytes_with_probability(i_bptr, i_size, opt_jprob); -#endif - - switch(iform) { - case INP_BER: - rval = ber_decode(opt_codec_ctx, pduType, - (void **)&structure, i_bptr, i_size); - break; - case INP_XER: - rval = xer_decode(opt_codec_ctx, pduType, - (void **)&structure, i_bptr, i_size); - break; - case INP_PER: - if(opt_nopad) - rval = uper_decode(opt_codec_ctx, pduType, - (void **)&structure, i_bptr, i_size, 0, - DynamicBuffer.unbits); - else - rval = uper_decode_complete(opt_codec_ctx, pduType, - (void **)&structure, i_bptr, i_size); - switch(rval.code) { - case RC_OK: - /* Fall through */ - case RC_FAIL: - if(opt_nopad) { - /* uper_decode() returns bits! */ - /* Extra bits */ - ecbits = rval.consumed % 8; - /* Convert into bytes! */ - rval.consumed /= 8; - } - break; - case RC_WMORE: - /* PER does not support restartability */ - ASN_STRUCT_FREE(*pduType, structure); - structure = 0; - rval.consumed = 0; - /* Continue accumulating data */ - break; - } - break; - } - DEBUG("decode(%ld) consumed %ld+%db (%ld), code %d", - (long)DynamicBuffer.length, - (long)rval.consumed, ecbits, (long)i_size, - rval.code); - - if(DynamicBuffer.allocated == 0) { - /* - * Flush remainder into the intermediate buffer. - */ - if(rval.code != RC_FAIL && rval.consumed < rd) { - add_bytes_to_buffer(fbuf + rval.consumed, - rd - rval.consumed); - buffer_shift_left(0, ecbits); - DynamicBuffer.bytes_shifted = rval.consumed; - rval.consumed = 0; - ecbits = 0; - } - } - - /* - * Adjust position inside the source buffer. - */ - if(DynamicBuffer.allocated) { - DynamicBuffer.offset += rval.consumed; - DynamicBuffer.length -= rval.consumed; - } else { - DynamicBuffer.bytes_shifted += rval.consumed; - } - - switch(rval.code) { - case RC_OK: - if(ecbits) buffer_shift_left(0, ecbits); - DEBUG("RC_OK, finishing up with %ld+%d", - (long)rval.consumed, ecbits); - return structure; - case RC_WMORE: - DEBUG("RC_WMORE, continuing read=%ld, cons=%ld " - " with %ld..%ld-%ld..%ld", - (long)rd, - (long)rval.consumed, - (long)DynamicBuffer.offset, - (long)DynamicBuffer.length, - (long)DynamicBuffer.unbits, - (long)DynamicBuffer.allocated); - if(!rd) tolerate_eof--; - continue; - case RC_FAIL: - break; - } - break; - } - - DEBUG("Clean up partially decoded structure"); - ASN_STRUCT_FREE(*pduType, structure); - - new_offset = DynamicBuffer.bytes_shifted + DynamicBuffer.offset; - - /* - * Print a message and return failure only if not EOF, - * unless this is our first PDU (empty file). - */ - if(on_first_pdu - || DynamicBuffer.length - || new_offset - old_offset > ((iform == INP_XER)?sizeof("\r\n")-1:0) - ) { - -#ifdef JUNKTEST - /* - * Nothing's wrong with being unable to decode junk. - * Simulate EOF. - */ - if(opt_jprob != 0.0) { - junk_failures++; - errno = 0; - return 0; - } -#endif - - DEBUG("ofp %d, no=%ld, oo=%ld, dbl=%ld", - on_first_pdu, (long)new_offset, (long)old_offset, - (long)DynamicBuffer.length); - fprintf(stderr, "%s: " - "Decode failed past byte %ld: %s\n", - name, (long)new_offset, - (rval.code == RC_WMORE) - ? "Unexpected end of input" - : "Input processing error"); -#ifndef ENOMSG -#define ENOMSG EINVAL -#endif -#ifndef EBADMSG -#define EBADMSG EINVAL -#endif - errno = (rval.code == RC_WMORE) ? ENOMSG : EBADMSG; - } else { - /* Got EOF after a few successful PDUs */ - errno = 0; - } - - return 0; -} - -/* Dump the buffer out to the specified FILE */ -static int write_out(const void *buffer, size_t size, void *key) { - FILE *fp = (FILE *)key; - return (fwrite(buffer, 1, size, fp) == size) ? 0 : -1; -} - -static int argument_is_stdin(char *av[], int idx) { - if(strcmp(av[idx], "-")) { - return 0; /* Certainly not */ - } else { - /* This might be , unless `./program -- -` */ - if(strcmp(av[-1], "--")) - return 1; - else - return 0; - } -} - -static FILE *argument_to_file(char *av[], int idx) { - return argument_is_stdin(av, idx) - ? stdin - : fopen(av[idx], "r"); -} - -static char *argument_to_name(char *av[], int idx) { - return argument_is_stdin(av, idx) - ? "standard input" - : av[idx]; -} - -#ifdef JUNKTEST -/* - * Fill bytes with some garbage with specified probability (more or less). - */ -static void -junk_bytes_with_probability(uint8_t *buf, size_t size, double prob) { - static int junkmode; - uint8_t *ptr; - uint8_t *end; - if(opt_jprob <= 0.0) return; - for(ptr = buf, end = ptr + size; ptr < end; ptr++) { - int byte = *ptr; - if(junkmode++ & 1) { - if((((double)random() / RAND_MAX) < prob)) - byte = random() & 0xff; - } else { -#define BPROB(b) ((((double)random() / RAND_MAX) < prob) ? b : 0) - byte ^= BPROB(0x80); - byte ^= BPROB(0x40); - byte ^= BPROB(0x20); - byte ^= BPROB(0x10); - byte ^= BPROB(0x08); - byte ^= BPROB(0x04); - byte ^= BPROB(0x02); - byte ^= BPROB(0x01); - } - if(byte != *ptr) { - DEBUG("Junk buf[%d] %02x -> %02x", - ptr - buf, *ptr, byte); - *ptr = byte; - } - } -} -#endif /* JUNKTEST */ - diff --git a/src/third_party/asn1/der_encoder.c b/src/third_party/asn1/der_encoder.c deleted file mode 100644 index 72ca5d6f..00000000 --- a/src/third_party/asn1/der_encoder.c +++ /dev/null @@ -1,199 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, - asn_app_consume_bytes_f *cb, void *app_key, int constructed); - -/* - * The DER encoder of any type. - */ -asn_enc_rval_t -der_encode(asn_TYPE_descriptor_t *type_descriptor, void *struct_ptr, - asn_app_consume_bytes_f *consume_bytes, void *app_key) { - - ASN_DEBUG("DER encoder invoked for %s", - type_descriptor->name); - - /* - * Invoke type-specific encoder. - */ - return type_descriptor->der_encoder(type_descriptor, - struct_ptr, /* Pointer to the destination structure */ - 0, 0, - consume_bytes, app_key); -} - -/* - * Argument type and callback necessary for der_encode_to_buffer(). - */ -typedef struct enc_to_buf_arg { - void *buffer; - size_t left; -} enc_to_buf_arg; -static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { - enc_to_buf_arg *arg = (enc_to_buf_arg *)key; - - if(arg->left < size) - return -1; /* Data exceeds the available buffer size */ - - memcpy(arg->buffer, buffer, size); - arg->buffer = ((char *)arg->buffer) + size; - arg->left -= size; - - return 0; -} - -/* - * A variant of the der_encode() which encodes the data into the provided buffer - */ -asn_enc_rval_t -der_encode_to_buffer(asn_TYPE_descriptor_t *type_descriptor, void *struct_ptr, - void *buffer, size_t buffer_size) { - enc_to_buf_arg arg; - asn_enc_rval_t ec; - - arg.buffer = buffer; - arg.left = buffer_size; - - ec = type_descriptor->der_encoder(type_descriptor, - struct_ptr, /* Pointer to the destination structure */ - 0, 0, encode_to_buffer_cb, &arg); - if(ec.encoded != -1) { - assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); - /* Return the encoded contents size */ - } - return ec; -} - - -/* - * Write out leading TL[v] sequence according to the type definition. - */ -ssize_t -der_write_tags(asn_TYPE_descriptor_t *sd, - size_t struct_length, - int tag_mode, int last_tag_form, - ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */ - asn_app_consume_bytes_f *cb, - void *app_key) { - ber_tlv_tag_t *tags; /* Copy of tags stream */ - int tags_count; /* Number of tags */ - size_t overall_length; - ssize_t *lens; - int i; - - ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)", - sd->name, tag_mode, sd->tags_count, - ber_tlv_tag_string(tag), - tag_mode - ?(sd->tags_count+1 - -((tag_mode == -1) && sd->tags_count)) - :sd->tags_count - ); - - if(tag_mode) { - /* - * Instead of doing shaman dance like we do in ber_check_tags(), - * allocate a small array on the stack - * and initialize it appropriately. - */ - int stag_offset; - tags = (ber_tlv_tag_t *)alloca((sd->tags_count + 1) * sizeof(ber_tlv_tag_t)); - if(!tags) { /* Can fail on !x86 */ - errno = ENOMEM; - return -1; - } - tags_count = sd->tags_count - + 1 /* EXPLICIT or IMPLICIT tag is given */ - - ((tag_mode == -1) && sd->tags_count); - /* Copy tags over */ - tags[0] = tag; - stag_offset = -1 + ((tag_mode == -1) && sd->tags_count); - for(i = 1; i < tags_count; i++) - tags[i] = sd->tags[i + stag_offset]; - } else { - tags = sd->tags; - tags_count = sd->tags_count; - } - - /* No tags to write */ - if(tags_count == 0) - return 0; - - lens = (ssize_t *)alloca(tags_count * sizeof(lens[0])); - if(!lens) { - errno = ENOMEM; - return -1; - } - - /* - * Array of tags is initialized. - * Now, compute the size of the TLV pairs, from right to left. - */ - overall_length = struct_length; - for(i = tags_count - 1; i >= 0; --i) { - lens[i] = der_write_TL(tags[i], overall_length, 0, 0, 0); - if(lens[i] == -1) return -1; - overall_length += lens[i]; - lens[i] = overall_length - lens[i]; - } - - if(!cb) return overall_length - struct_length; - - ASN_DEBUG("%s %s TL sequence (%d elements)", - cb?"Encoding":"Estimating", sd->name, tags_count); - - /* - * Encode the TL sequence for real. - */ - for(i = 0; i < tags_count; i++) { - ssize_t len; - int _constr; - - /* Check if this tag happens to be constructed */ - _constr = (last_tag_form || i < (tags_count - 1)); - - len = der_write_TL(tags[i], lens[i], cb, app_key, _constr); - if(len == -1) return -1; - } - - return overall_length - struct_length; -} - -static ssize_t -der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, - asn_app_consume_bytes_f *cb, void *app_key, - int constructed) { - uint8_t buf[32]; - size_t size = 0; - int buf_size = cb?sizeof(buf):0; - ssize_t tmp; - - /* Serialize tag (T from TLV) into possibly zero-length buffer */ - tmp = ber_tlv_tag_serialize(tag, buf, buf_size); - if(tmp == -1 || tmp > (ssize_t)sizeof(buf)) return -1; - size += tmp; - - /* Serialize length (L from TLV) into possibly zero-length buffer */ - tmp = der_tlv_length_serialize(len, buf+size, buf_size?buf_size-size:0); - if(tmp == -1) return -1; - size += tmp; - - if(size > sizeof(buf)) - return -1; - - /* - * If callback is specified, invoke it, and check its return value. - */ - if(cb) { - if(constructed) *buf |= 0x20; - if(cb(buf, size, app_key) < 0) - return -1; - } - - return size; -} diff --git a/src/third_party/asn1/der_encoder.h b/src/third_party/asn1/der_encoder.h deleted file mode 100644 index e0b2114f..00000000 --- a/src/third_party/asn1/der_encoder.h +++ /dev/null @@ -1,68 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _DER_ENCODER_H_ -#define _DER_ENCODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - struct asn_TYPE_descriptor_s; /* Forward declaration */ - - /* - * The DER encoder of any type. May be invoked by the application. - * The ber_decode() function (ber_decoder.h) is an opposite of der_encode(). - */ - asn_enc_rval_t der_encode(struct asn_TYPE_descriptor_s *type_descriptor, - void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key /* Arbitrary callback argument */ - ); - - /* A variant of der_encode() which encodes data into the pre-allocated buffer */ - asn_enc_rval_t der_encode_to_buffer( - struct asn_TYPE_descriptor_s *type_descriptor, - void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (maximum) */ - ); - - /* - * Type of the generic DER encoder. - */ - typedef asn_enc_rval_t (der_type_encoder_f)( - struct asn_TYPE_descriptor_s *type_descriptor, - void *struct_ptr, /* Structure to be encoded */ - int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ - ber_tlv_tag_t tag, - asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ - void *app_key /* Arbitrary callback argument */ - ); - - - /******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - - /* - * Write out leading TL[v] sequence according to the type definition. - */ - ssize_t der_write_tags( - struct asn_TYPE_descriptor_s *type_descriptor, - size_t struct_length, - int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ - int last_tag_form, /* {0,!0}: prim, constructed */ - ber_tlv_tag_t tag, - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key - ); - -#ifdef __cplusplus -} -#endif - -#endif /* _DER_ENCODER_H_ */ diff --git a/src/third_party/asn1/per_decoder.c b/src/third_party/asn1/per_decoder.c deleted file mode 100644 index bc53282f..00000000 --- a/src/third_party/asn1/per_decoder.c +++ /dev/null @@ -1,93 +0,0 @@ -#include -#include -#include - -/* - * Decode a "Production of a complete encoding", X.691#10.1. - * The complete encoding contains at least one byte, and is an integral - * multiple of 8 bytes. - */ -asn_dec_rval_t -uper_decode_complete(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, size_t size) { - asn_dec_rval_t rval; - - rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); - if(rval.consumed) { - /* - * We've always given 8-aligned data, - * so convert bits to integral bytes. - */ - rval.consumed += 7; - rval.consumed >>= 3; - } else if(rval.code == RC_OK) { - if(size) { - if(((const uint8_t *)buffer)[0] == 0) { - rval.consumed = 1; /* 1 byte */ - } else { - ASN_DEBUG("Expecting single zeroed byte"); - rval.code = RC_FAIL; - } - } else { - /* Must contain at least 8 bits. */ - rval.code = RC_WMORE; - } - } - - return rval; -} - -asn_dec_rval_t -uper_decode(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, size_t size, int skip_bits, int unused_bits) { - asn_codec_ctx_t s_codec_ctx; - asn_dec_rval_t rval; - asn_per_data_t pd; - - if(skip_bits < 0 || skip_bits > 7 - || unused_bits < 0 || unused_bits > 7 - || (unused_bits > 0 && !size)) - _ASN_DECODE_FAILED; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = _ASN_DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* Fill in the position indicator */ - memset(&pd, 0, sizeof(pd)); - pd.buffer = (const uint8_t *)buffer; - pd.nboff = skip_bits; - pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ - if(pd.nboff > pd.nbits) - _ASN_DECODE_FAILED; - - /* - * Invoke type-specific decoder. - */ - if(!td->uper_decoder) - _ASN_DECODE_FAILED; /* PER is not compiled in */ - rval = td->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); - if(rval.code == RC_OK) { - /* Return the number of consumed bits */ - rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) - + pd.nboff - skip_bits; - ASN_DEBUG("PER decoding consumed %ld, counted %ld", - (long)rval.consumed, (long)pd.moved); - assert(rval.consumed == pd.moved); - } else { - /* PER codec is not a restartable */ - rval.consumed = 0; - } - return rval; -} - diff --git a/src/third_party/asn1/per_decoder.h b/src/third_party/asn1/per_decoder.h deleted file mode 100644 index 8d2d6847..00000000 --- a/src/third_party/asn1/per_decoder.h +++ /dev/null @@ -1,56 +0,0 @@ -/*- - * Copyright (c) 2005, 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_DECODER_H_ -#define _PER_DECODER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - struct asn_TYPE_descriptor_s; /* Forward declaration */ - - /* - * Unaligned PER decoder of a "complete encoding" as per X.691#10.1. - * On success, this call always returns (.consumed >= 1), as per X.691#10.1.3. - */ - asn_dec_rval_t uper_decode_complete(struct asn_codec_ctx_s *opt_codec_ctx, - struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ - ); - - /* - * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. - * WARNING: This call returns the number of BITS read from the stream. Beware. - */ - asn_dec_rval_t uper_decode(struct asn_codec_ctx_s *opt_codec_ctx, - struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size, /* Size of data buffer */ - int skip_bits, /* Number of unused leading bits, 0..7 */ - int unused_bits /* Number of unused tailing bits, 0..7 */ - ); - - - /* - * Type of the type-specific PER decoder function. - */ - typedef asn_dec_rval_t (per_type_decoder_f)(asn_codec_ctx_t *opt_codec_ctx, - struct asn_TYPE_descriptor_s *type_descriptor, - asn_per_constraints_t *constraints, - void **struct_ptr, - asn_per_data_t *per_data - ); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_DECODER_H_ */ diff --git a/src/third_party/asn1/per_encoder.c b/src/third_party/asn1/per_encoder.c deleted file mode 100644 index e76ef74a..00000000 --- a/src/third_party/asn1/per_encoder.c +++ /dev/null @@ -1,151 +0,0 @@ -#include -#include -#include - -static asn_enc_rval_t uper_encode_internal(asn_TYPE_descriptor_t *td, asn_per_constraints_t *, void *sptr, asn_app_consume_bytes_f *cb, void *app_key); - -asn_enc_rval_t -uper_encode(asn_TYPE_descriptor_t *td, void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { - return uper_encode_internal(td, 0, sptr, cb, app_key); -} - -/* - * Argument type and callback necessary for uper_encode_to_buffer(). - */ -typedef struct enc_to_buf_arg { - void *buffer; - size_t left; -} enc_to_buf_arg; -static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { - enc_to_buf_arg *arg = (enc_to_buf_arg *)key; - - if(arg->left < size) - return -1; /* Data exceeds the available buffer size */ - - memcpy(arg->buffer, buffer, size); - arg->buffer = ((char *)arg->buffer) + size; - arg->left -= size; - - return 0; -} - -asn_enc_rval_t -uper_encode_to_buffer(asn_TYPE_descriptor_t *td, void *sptr, void *buffer, size_t buffer_size) { - enc_to_buf_arg key; - - key.buffer = buffer; - key.left = buffer_size; - - if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); - - return uper_encode_internal(td, 0, sptr, encode_to_buffer_cb, &key); -} - -typedef struct enc_dyn_arg { - void *buffer; - size_t length; - size_t allocated; -} enc_dyn_arg; -static int -encode_dyn_cb(const void *buffer, size_t size, void *key) { - enc_dyn_arg *arg = key; - if(arg->length + size >= arg->allocated) { - void *p; - arg->allocated = arg->allocated ? (arg->allocated << 2) : size; - p = REALLOC(arg->buffer, arg->allocated); - if(!p) { - FREEMEM(arg->buffer); - memset(arg, 0, sizeof(*arg)); - return -1; - } - arg->buffer = p; - } - memcpy(((char *)arg->buffer) + arg->length, buffer, size); - arg->length += size; - return 0; -} -ssize_t -uper_encode_to_new_buffer(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void *sptr, void **buffer_r) { - asn_enc_rval_t er; - enc_dyn_arg key; - - memset(&key, 0, sizeof(key)); - - er = uper_encode_internal(td, constraints, sptr, encode_dyn_cb, &key); - switch(er.encoded) { - case -1: - FREEMEM(key.buffer); - return -1; - case 0: - FREEMEM(key.buffer); - key.buffer = MALLOC(1); - if(key.buffer) { - *(char *)key.buffer = '\0'; - *buffer_r = key.buffer; - return 1; - } else { - return -1; - } - default: - *buffer_r = key.buffer; - ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); - return ((er.encoded + 7) >> 3); - } -} - -/* - * Internally useful functions. - */ - -/* Flush partially filled buffer */ -static int -_uper_encode_flush_outp(asn_per_outp_t *po) { - uint8_t *buf; - - if(po->nboff == 0 && po->buffer == po->tmpspace) - return 0; - - buf = po->buffer + (po->nboff >> 3); - /* Make sure we account for the last, partially filled */ - if(po->nboff & 0x07) { - buf[0] &= 0xff << (8 - (po->nboff & 0x07)); - buf++; - } - - return po->outper(po->tmpspace, buf - po->tmpspace, po->op_key); -} - -static asn_enc_rval_t -uper_encode_internal(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { - asn_per_outp_t po; - asn_enc_rval_t er; - - /* - * Invoke type-specific encoder. - */ - if(!td || !td->uper_encoder) - _ASN_ENCODE_FAILED; /* PER is not compiled in */ - - po.buffer = po.tmpspace; - po.nboff = 0; - po.nbits = 8 * sizeof(po.tmpspace); - po.outper = cb; - po.op_key = app_key; - po.flushed_bytes = 0; - - er = td->uper_encoder(td, constraints, sptr, &po); - if(er.encoded != -1) { - size_t bits_to_flush; - - bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; - - /* Set number of bits encoded to a firm value */ - er.encoded = (po.flushed_bytes << 3) + bits_to_flush; - - if(_uper_encode_flush_outp(&po)) - _ASN_ENCODE_FAILED; - } - - return er; -} - diff --git a/src/third_party/asn1/per_encoder.h b/src/third_party/asn1/per_encoder.h deleted file mode 100644 index 24752d1a..00000000 --- a/src/third_party/asn1/per_encoder.h +++ /dev/null @@ -1,69 +0,0 @@ -/*- - * Copyright (c) 2006, 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_ENCODER_H_ -#define _PER_ENCODER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - - struct asn_TYPE_descriptor_s; /* Forward declaration */ - - /* - * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. - * WARNING: This function returns the number of encoded bits in the .encoded - * field of the return value. Use the following formula to convert to bytes: - * bytes = ((.encoded + 7) / 8) - */ - asn_enc_rval_t uper_encode(struct asn_TYPE_descriptor_s *type_descriptor, - void *struct_ptr, /* Structure to be encoded */ - asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ - void *app_key /* Arbitrary callback argument */ - ); - - /* - * A variant of uper_encode() which encodes data into the existing buffer - * WARNING: This function returns the number of encoded bits in the .encoded - * field of the return value. - */ - asn_enc_rval_t uper_encode_to_buffer( - struct asn_TYPE_descriptor_s *type_descriptor, - void *struct_ptr, /* Structure to be encoded */ - void *buffer, /* Pre-allocated buffer */ - size_t buffer_size /* Initial buffer size (max) */ - ); - - /* - * A variant of uper_encode_to_buffer() which allocates buffer itself. - * Returns the number of bytes in the buffer or -1 in case of failure. - * WARNING: This function produces a "Production of the complete encoding", - * with length of at least one octet. Contrast this to precise bit-packing - * encoding of uper_encode() and uper_encode_to_buffer(). - */ - ssize_t uper_encode_to_new_buffer( - struct asn_TYPE_descriptor_s *type_descriptor, - asn_per_constraints_t *constraints, - void *struct_ptr, /* Structure to be encoded */ - void **buffer_r /* Buffer allocated and returned */ - ); - - /* - * Type of the generic PER encoder function. - */ - typedef asn_enc_rval_t (per_type_encoder_f)( - struct asn_TYPE_descriptor_s *type_descriptor, - asn_per_constraints_t *constraints, - void *struct_ptr, - asn_per_outp_t *per_output - ); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_ENCODER_H_ */ diff --git a/src/third_party/asn1/per_opentype.c b/src/third_party/asn1/per_opentype.c deleted file mode 100644 index 0cd9ef6c..00000000 --- a/src/third_party/asn1/per_opentype.c +++ /dev/null @@ -1,383 +0,0 @@ -/* - * Copyright (c) 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include -#include - -typedef struct uper_ugot_key { - asn_per_data_t oldpd; /* Old per data source */ - size_t unclaimed; - size_t ot_moved; /* Number of bits moved by OT processing */ - int repeat; -} uper_ugot_key; - -static int uper_ugot_refill(asn_per_data_t *pd); -static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); -static asn_dec_rval_t uper_sot_suck(asn_codec_ctx_t *, asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd); - -int asn_debug_indent; - -/* - * Encode an "open type field". - * #10.1, #10.2 - */ -int -uper_open_type_put(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po) { - void *buf; - void *bptr; - ssize_t size; - size_t toGo; - - ASN_DEBUG("Open type put %s ...", td->name); - - size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); - if(size <= 0) return -1; - - for(bptr = buf, toGo = size; toGo;) { - ssize_t maySave = uper_put_length(po, toGo); - ASN_DEBUG("Prepending length %d to %s and allowing to save %d", - (int)size, td->name, (int)maySave); - if(maySave < 0) break; - if(per_put_many_bits(po, bptr, maySave * 8)) break; - bptr = (char *)bptr + maySave; - toGo -= maySave; - } - - FREEMEM(buf); - if(toGo) return -1; - - ASN_DEBUG("Open type put %s of length %ld + overhead (1byte?)", - td->name, (long)size); - - return 0; -} - -static asn_dec_rval_t -uper_open_type_get_simple(asn_codec_ctx_t *ctx, asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv; - ssize_t chunk_bytes; - int repeat; - uint8_t *buf = 0; - size_t bufLen = 0; - size_t bufSize = 0; - asn_per_data_t spd; - size_t padding; - - _ASN_STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s...", td->name); - - do { - chunk_bytes = uper_get_length(pd, -1, &repeat); - if(chunk_bytes < 0) { - FREEMEM(buf); - _ASN_DECODE_STARVED; - } - if(bufLen + chunk_bytes > bufSize) { - void *ptr; - bufSize = chunk_bytes + (bufSize << 2); - ptr = REALLOC(buf, bufSize); - if(!ptr) { - FREEMEM(buf); - _ASN_DECODE_FAILED; - } - buf = ptr; - } - if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { - FREEMEM(buf); - _ASN_DECODE_STARVED; - } - bufLen += chunk_bytes; - } while(repeat); - - ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, - (long)bufLen); - - memset(&spd, 0, sizeof(spd)); - spd.buffer = buf; - spd.nbits = bufLen << 3; - - asn_debug_indent += 4; - rv = td->uper_decoder(ctx, td, constraints, sptr, &spd); - asn_debug_indent -= 4; - - if(rv.code == RC_OK) { - /* Check padding validity */ - padding = spd.nbits - spd.nboff; - if ((padding < 8 || - /* X.691#10.1.3 */ - (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && - per_get_few_bits(&spd, padding) == 0) { - /* Everything is cool */ - FREEMEM(buf); - return rv; - } - FREEMEM(buf); - if(padding >= 8) { - ASN_DEBUG("Too large padding %d in open type", (int)padding); - _ASN_DECODE_FAILED; - } else { - ASN_DEBUG("Non-zero padding"); - _ASN_DECODE_FAILED; - } - } else { - FREEMEM(buf); - /* rv.code could be RC_WMORE, nonsense in this context */ - rv.code = RC_FAIL; /* Noone would give us more */ - } - - return rv; -} - -static asn_dec_rval_t GCC_NOTUSED -uper_open_type_get_complex(asn_codec_ctx_t *ctx, asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - uper_ugot_key arg; - asn_dec_rval_t rv; - ssize_t padding; - - _ASN_STACK_OVERFLOW_CHECK(ctx); - - ASN_DEBUG("Getting open type %s from %s", td->name, - per_data_string(pd)); - arg.oldpd = *pd; - arg.unclaimed = 0; - arg.ot_moved = 0; - arg.repeat = 1; - pd->refill = uper_ugot_refill; - pd->refill_key = &arg; - pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ - pd->moved = 0; /* This now counts the open type size in bits */ - - asn_debug_indent += 4; - rv = td->uper_decoder(ctx, td, constraints, sptr, pd); - asn_debug_indent -= 4; - -#define UPDRESTOREPD do { \ - /* buffer and nboff are valid, preserve them. */ \ - pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ - pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ - pd->refill = arg.oldpd.refill; \ - pd->refill_key = arg.oldpd.refill_key; \ - } while(0) - - if(rv.code != RC_OK) { - UPDRESTOREPD; - return rv; - } - - ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, - per_data_string(pd), - per_data_string(&arg.oldpd), - (int)arg.unclaimed, (int)arg.repeat); - - padding = pd->moved % 8; - if(padding) { - int32_t pvalue; - if(padding > 7) { - ASN_DEBUG("Too large padding %d in open type", - (int)padding); - rv.code = RC_FAIL; - UPDRESTOREPD; - return rv; - } - padding = 8 - padding; - ASN_DEBUG("Getting padding of %d bits", (int)padding); - pvalue = per_get_few_bits(pd, padding); - switch(pvalue) { - case -1: - ASN_DEBUG("Padding skip failed"); - UPDRESTOREPD; - _ASN_DECODE_STARVED; - case 0: - break; - default: - ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", - (int)padding, (int)pvalue); - UPDRESTOREPD; - _ASN_DECODE_FAILED; - } - } - if(pd->nboff != pd->nbits) { - ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, - per_data_string(pd), per_data_string(&arg.oldpd)); - if(1) { - UPDRESTOREPD; - _ASN_DECODE_FAILED; - } else { - arg.unclaimed += pd->nbits - pd->nboff; - } - } - - /* Adjust pd back so it points to original data */ - UPDRESTOREPD; - - /* Skip data not consumed by the decoder */ - if(arg.unclaimed) { - ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); - switch(per_skip_bits(pd, arg.unclaimed)) { - case -1: - ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); - _ASN_DECODE_STARVED; - case 0: - ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); - break; - default: - /* Padding must be blank */ - ASN_DEBUG("Non-blank unconsumed padding"); - _ASN_DECODE_FAILED; - } - arg.unclaimed = 0; - } - - if(arg.repeat) { - ASN_DEBUG("Not consumed the whole thing"); - rv.code = RC_FAIL; - return rv; - } - - return rv; -} - - -asn_dec_rval_t -uper_open_type_get(asn_codec_ctx_t *ctx, asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - - return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); -} - -int -uper_open_type_skip(asn_codec_ctx_t *ctx, asn_per_data_t *pd) { - asn_TYPE_descriptor_t s_td; - asn_dec_rval_t rv; - - s_td.name = ""; - s_td.uper_decoder = uper_sot_suck; - - rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); - if(rv.code != RC_OK) - return -1; - else - return 0; -} - -/* - * Internal functions. - */ - -static asn_dec_rval_t -uper_sot_suck(asn_codec_ctx_t *ctx, asn_TYPE_descriptor_t *td, - asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { - asn_dec_rval_t rv; - - (void)ctx; - (void)td; - (void)constraints; - (void)sptr; - - while(per_get_few_bits(pd, 24) >= 0); - - rv.code = RC_OK; - rv.consumed = pd->moved; - - return rv; -} - -static int -uper_ugot_refill(asn_per_data_t *pd) { - uper_ugot_key *arg = pd->refill_key; - ssize_t next_chunk_bytes, next_chunk_bits; - ssize_t avail; - - asn_per_data_t *oldpd = &arg->oldpd; - - ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", - (long)pd->moved, (long)oldpd->moved); - - /* Advance our position to where pd is */ - oldpd->buffer = pd->buffer; - oldpd->nboff = pd->nboff; - oldpd->nbits -= pd->moved - arg->ot_moved; - oldpd->moved += pd->moved - arg->ot_moved; - arg->ot_moved = pd->moved; - - if(arg->unclaimed) { - /* Refill the container */ - if(per_get_few_bits(oldpd, 1)) - return -1; - if(oldpd->nboff == 0) { - assert(0); - return -1; - } - pd->buffer = oldpd->buffer; - pd->nboff = oldpd->nboff - 1; - pd->nbits = oldpd->nbits; - ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", - (long)pd->moved); - return 0; - } - - if(!arg->repeat) { - ASN_DEBUG("Want more but refill doesn't have it"); - return -1; - } - - next_chunk_bytes = uper_get_length(oldpd, -1, &arg->repeat); - ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", - (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); - if(next_chunk_bytes < 0) return -1; - if(next_chunk_bytes == 0) { - pd->refill = 0; /* No more refills, naturally */ - assert(!arg->repeat); /* Implementation guarantee */ - } - next_chunk_bits = next_chunk_bytes << 3; - avail = oldpd->nbits - oldpd->nboff; - if(avail >= next_chunk_bits) { - pd->nbits = oldpd->nboff + next_chunk_bits; - arg->unclaimed = 0; - ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", - (long)next_chunk_bits, (long)oldpd->moved, - (long)oldpd->nboff, (long)oldpd->nbits, - (long)(oldpd->nbits - oldpd->nboff)); - } else { - pd->nbits = oldpd->nbits; - arg->unclaimed = next_chunk_bits - avail; - ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", - (long)avail, (long)next_chunk_bits, - (long)arg->unclaimed); - } - pd->buffer = oldpd->buffer; - pd->nboff = oldpd->nboff; - ASN_DEBUG("Refilled pd%s old%s", - per_data_string(pd), per_data_string(oldpd)); - return 0; -} - -static int -per_skip_bits(asn_per_data_t *pd, int skip_nbits) { - int hasNonZeroBits = 0; - while(skip_nbits > 0) { - int skip; - if(skip_nbits < skip) - skip = skip_nbits; - else - skip = 24; - skip_nbits -= skip; - - switch(per_get_few_bits(pd, skip)) { - case -1: - return -1; /* Starving */ - case 0: - continue; /* Skipped empty space */ - default: - hasNonZeroBits = 1; - continue; - } - } - return hasNonZeroBits; -} diff --git a/src/third_party/asn1/per_opentype.h b/src/third_party/asn1/per_opentype.h deleted file mode 100644 index 628d9720..00000000 --- a/src/third_party/asn1/per_opentype.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) 2007 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_OPENTYPE_H_ -#define _PER_OPENTYPE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - - asn_dec_rval_t uper_open_type_get(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd); - - int uper_open_type_skip(asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); - - int uper_open_type_put(asn_TYPE_descriptor_t *td, asn_per_constraints_t *constraints, void *sptr, asn_per_outp_t *po); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_OPENTYPE_H_ */ diff --git a/src/third_party/asn1/per_support.c b/src/third_party/asn1/per_support.c deleted file mode 100644 index 5012d95d..00000000 --- a/src/third_party/asn1/per_support.c +++ /dev/null @@ -1,431 +0,0 @@ -/* - * Copyright (c) 2005, 2006, 2007 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -char * -per_data_string(asn_per_data_t *pd) { - static char buf[2][32]; - static int n; - n = (n+1) % 2; - snprintf(buf[n], sizeof(buf), - "{m=%ld span %+ld[%d..%d] (%d)}", - (long)pd->moved, - (((long)pd->buffer) & 0xf), - (int)pd->nboff, (int)pd->nbits, - (int)(pd->nbits - pd->nboff)); - return buf[n]; -} - -void -per_get_undo(asn_per_data_t *pd, int nbits) { - if((ssize_t)pd->nboff < nbits) { - assert((ssize_t)pd->nboff < nbits); - } else { - pd->nboff -= nbits; - pd->moved -= nbits; - } -} - -/* - * Extract a small number of bits (<= 31) from the specified PER data pointer. - */ -int32_t -per_get_few_bits(asn_per_data_t *pd, int nbits) { - size_t off; /* Next after last bit offset */ - ssize_t nleft; /* Number of bits left in this stream */ - uint32_t accum; - const uint8_t *buf; - - if(nbits < 0) - return -1; - - nleft = pd->nbits - pd->nboff; - if(nbits > nleft) { - int32_t tailv, vhead; - if(!pd->refill || nbits > 31) return -1; - /* Accumulate unused bytes before refill */ - ASN_DEBUG("Obtain the rest %d bits (want %d)", - (int)nleft, (int)nbits); - tailv = per_get_few_bits(pd, nleft); - if(tailv < 0) return -1; - /* Refill (replace pd contents with new data) */ - if(pd->refill(pd)) - return -1; - nbits -= nleft; - vhead = per_get_few_bits(pd, nbits); - /* Combine the rest of previous pd with the head of new one */ - tailv = (tailv << nbits) | vhead; /* Could == -1 */ - return tailv; - } - - /* - * Normalize position indicator. - */ - if(pd->nboff >= 8) { - pd->buffer += (pd->nboff >> 3); - pd->nbits -= (pd->nboff & ~0x07); - pd->nboff &= 0x07; - } - pd->moved += nbits; - pd->nboff += nbits; - off = pd->nboff; - buf = pd->buffer; - - /* - * Extract specified number of bits. - */ - if(off <= 8) - accum = nbits ? (buf[0]) >> (8 - off) : 0; - else if(off <= 16) - accum = ((buf[0] << 8) + buf[1]) >> (16 - off); - else if(off <= 24) - accum = ((buf[0] << 16) + (buf[1] << 8) + buf[2]) >> (24 - off); - else if(off <= 31) - accum = ((buf[0] << 24) + (buf[1] << 16) - + (buf[2] << 8) + (buf[3])) >> (32 - off); - else if(nbits <= 31) { - asn_per_data_t tpd = *pd; - /* Here are we with our 31-bits limit plus 1..7 bits offset. */ - per_get_undo(&tpd, nbits); - /* The number of available bits in the stream allow - * for the following operations to take place without - * invoking the ->refill() function */ - accum = per_get_few_bits(&tpd, nbits - 24) << 24; - accum |= per_get_few_bits(&tpd, 24); - } else { - per_get_undo(pd, nbits); - return -1; - } - - accum &= (((uint32_t)1 << nbits) - 1); - - ASN_DEBUG(" [PER got %2d<=%2d bits => span %d %+ld[%d..%d]:%02x (%d) => 0x%x]", - (int)nbits, (int)nleft, - (int)pd->moved, - (((long)pd->buffer) & 0xf), - (int)pd->nboff, (int)pd->nbits, - pd->buffer[0], - (int)(pd->nbits - pd->nboff), - (int)accum); - - return accum; -} - -/* - * Extract a large number of bits from the specified PER data pointer. - */ -int -per_get_many_bits(asn_per_data_t *pd, uint8_t *dst, int alright, int nbits) { - int32_t value; - - if(alright && (nbits & 7)) { - /* Perform right alignment of a first few bits */ - value = per_get_few_bits(pd, nbits & 0x07); - if(value < 0) return -1; - *dst++ = value; /* value is already right-aligned */ - nbits &= ~7; - } - - while(nbits) { - if(nbits >= 24) { - value = per_get_few_bits(pd, 24); - if(value < 0) return -1; - *(dst++) = value >> 16; - *(dst++) = value >> 8; - *(dst++) = value; - nbits -= 24; - } else { - value = per_get_few_bits(pd, nbits); - if(value < 0) return -1; - if(nbits & 7) { /* implies left alignment */ - value <<= 8 - (nbits & 7), - nbits += 8 - (nbits & 7); - if(nbits > 24) - *dst++ = value >> 24; - } - if(nbits > 16) - *dst++ = value >> 16; - if(nbits > 8) - *dst++ = value >> 8; - *dst++ = value; - break; - } - } - - return 0; -} - -/* - * Get the length "n" from the stream. - */ -ssize_t -uper_get_length(asn_per_data_t *pd, int ebits, int *repeat) { - ssize_t value; - - *repeat = 0; - - if(ebits >= 0) return per_get_few_bits(pd, ebits); - - value = per_get_few_bits(pd, 8); - if(value < 0) return -1; - if((value & 128) == 0) /* #10.9.3.6 */ - return (value & 0x7F); - if((value & 64) == 0) { /* #10.9.3.7 */ - value = ((value & 63) << 8) | per_get_few_bits(pd, 8); - if(value < 0) return -1; - return value; - } - value &= 63; /* this is "m" from X.691, #10.9.3.8 */ - if(value < 1 || value > 4) - return -1; - *repeat = 1; - return (16384 * value); -} - -/* - * Get the normally small length "n". - * This procedure used to decode length of extensions bit-maps - * for SET and SEQUENCE types. - */ -ssize_t -uper_get_nslength(asn_per_data_t *pd) { - ssize_t length; - - ASN_DEBUG("Getting normally small length"); - - if(per_get_few_bits(pd, 1) == 0) { - length = per_get_few_bits(pd, 6) + 1; - if(length <= 0) return -1; - ASN_DEBUG("l=%d", (int)length); - return length; - } else { - int repeat; - length = uper_get_length(pd, -1, &repeat); - if(length >= 0 && !repeat) return length; - return -1; /* Error, or do not support >16K extensions */ - } -} - -/* - * Get the normally small non-negative whole number. - * X.691, #10.6 - */ -ssize_t -uper_get_nsnnwn(asn_per_data_t *pd) { - ssize_t value; - - value = per_get_few_bits(pd, 7); - if(value & 64) { /* implicit (value < 0) */ - value &= 63; - value <<= 2; - value |= per_get_few_bits(pd, 2); - if(value & 128) /* implicit (value < 0) */ - return -1; - if(value == 0) - return 0; - if(value >= 3) - return -1; - value = per_get_few_bits(pd, 8 * value); - return value; - } - - return value; -} - -/* - * Put the normally small non-negative whole number. - * X.691, #10.6 - */ -int -uper_put_nsnnwn(asn_per_outp_t *po, int n) { - int bytes; - - if(n <= 63) { - if(n < 0) return -1; - return per_put_few_bits(po, n, 7); - } - if(n < 256) - bytes = 1; - else if(n < 65536) - bytes = 2; - else if(n < 256 * 65536) - bytes = 3; - else - return -1; /* This is not a "normally small" value */ - if(per_put_few_bits(po, bytes, 8)) - return -1; - - return per_put_few_bits(po, n, 8 * bytes); -} - - -/* - * Put a small number of bits (<= 31). - */ -int -per_put_few_bits(asn_per_outp_t *po, uint32_t bits, int obits) { - size_t off; /* Next after last bit offset */ - size_t omsk; /* Existing last byte meaningful bits mask */ - uint8_t *buf; - - if(obits <= 0 || obits >= 32) return obits ? -1 : 0; - - ASN_DEBUG("[PER put %d bits %x to %p+%d bits]", - obits, (int)bits, po->buffer, (int)po->nboff); - - /* - * Normalize position indicator. - */ - if(po->nboff >= 8) { - po->buffer += (po->nboff >> 3); - po->nbits -= (po->nboff & ~0x07); - po->nboff &= 0x07; - } - - /* - * Flush whole-bytes output, if necessary. - */ - if(po->nboff + obits > po->nbits) { - int complete_bytes = (po->buffer - po->tmpspace); - ASN_DEBUG("[PER output %ld complete + %ld]", - (long)complete_bytes, (long)po->flushed_bytes); - if(po->outper(po->tmpspace, complete_bytes, po->op_key) < 0) - return -1; - if(po->nboff) - po->tmpspace[0] = po->buffer[0]; - po->buffer = po->tmpspace; - po->nbits = 8 * sizeof(po->tmpspace); - po->flushed_bytes += complete_bytes; - } - - /* - * Now, due to sizeof(tmpspace), we are guaranteed large enough space. - */ - buf = po->buffer; - omsk = ~((1 << (8 - po->nboff)) - 1); - off = (po->nboff + obits); - - /* Clear data of debris before meaningful bits */ - bits &= (((uint32_t)1 << obits) - 1); - - ASN_DEBUG("[PER out %d %u/%x (t=%d,o=%d) %x&%x=%x]", obits, - (int)bits, (int)bits, - (int)po->nboff, (int)off, - buf[0], (int)(omsk&0xff), - (int)(buf[0] & omsk)); - - if(off <= 8) /* Completely within 1 byte */ - po->nboff = off, - bits <<= (8 - off), - buf[0] = (buf[0] & omsk) | bits; - else if(off <= 16) - po->nboff = off, - bits <<= (16 - off), - buf[0] = (buf[0] & omsk) | (bits >> 8), - buf[1] = bits; - else if(off <= 24) - po->nboff = off, - bits <<= (24 - off), - buf[0] = (buf[0] & omsk) | (bits >> 16), - buf[1] = bits >> 8, - buf[2] = bits; - else if(off <= 31) - po->nboff = off, - bits <<= (32 - off), - buf[0] = (buf[0] & omsk) | (bits >> 24), - buf[1] = bits >> 16, - buf[2] = bits >> 8, - buf[3] = bits; - else { - per_put_few_bits(po, bits >> (obits - 24), 24); - per_put_few_bits(po, bits, obits - 24); - } - - ASN_DEBUG("[PER out %u/%x => %02x buf+%ld]", - (int)bits, (int)bits, buf[0], - (long)(po->buffer - po->tmpspace)); - - return 0; -} - - -/* - * Output a large number of bits. - */ -int -per_put_many_bits(asn_per_outp_t *po, const uint8_t *src, int nbits) { - - while(nbits) { - uint32_t value; - - if(nbits >= 24) { - value = (src[0] << 16) | (src[1] << 8) | src[2]; - src += 3; - nbits -= 24; - if(per_put_few_bits(po, value, 24)) - return -1; - } else { - value = src[0]; - if(nbits > 8) - value = (value << 8) | src[1]; - if(nbits > 16) - value = (value << 8) | src[2]; - if(nbits & 0x07) - value >>= (8 - (nbits & 0x07)); - if(per_put_few_bits(po, value, nbits)) - return -1; - break; - } - } - - return 0; -} - -/* - * Put the length "n" (or part of it) into the stream. - */ -ssize_t -uper_put_length(asn_per_outp_t *po, size_t length) { - - if(length <= 127) /* #10.9.3.6 */ - return per_put_few_bits(po, length, 8) - ? -1 : (ssize_t)length; - else if(length < 16384) /* #10.9.3.7 */ - return per_put_few_bits(po, length|0x8000, 16) - ? -1 : (ssize_t)length; - - length >>= 14; - if(length > 4) length = 4; - - return per_put_few_bits(po, 0xC0 | length, 8) - ? -1 : (ssize_t)(length << 14); -} - - -/* - * Put the normally small length "n" into the stream. - * This procedure used to encode length of extensions bit-maps - * for SET and SEQUENCE types. - */ -int -uper_put_nslength(asn_per_outp_t *po, size_t length) { - - if(length <= 64) { - /* #10.9.3.4 */ - if(length == 0) return -1; - return per_put_few_bits(po, length-1, 7) ? -1 : 0; - } else { - if(uper_put_length(po, length) != (ssize_t)length) { - /* This might happen in case of >16K extensions */ - return -1; - } - } - - return 0; -} - diff --git a/src/third_party/asn1/per_support.h b/src/third_party/asn1/per_support.h deleted file mode 100644 index 630449b6..00000000 --- a/src/third_party/asn1/per_support.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright (c) 2005, 2006, 2007 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _PER_SUPPORT_H_ -#define _PER_SUPPORT_H_ - -#include /* Platform-specific types */ - -#ifdef __cplusplus -extern "C" { -#endif - - /* - * Pre-computed PER constraints. - */ - typedef struct asn_per_constraint_s { - enum asn_per_constraint_flags { - APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ - APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ - APC_CONSTRAINED = 0x2, /* Fully constrained */ - APC_EXTENSIBLE = 0x4 /* May have extension */ - } flags; - int range_bits; /* Full number of bits in the range */ - int effective_bits; /* Effective bits */ - long lower_bound; /* "lb" value */ - long upper_bound; /* "ub" value */ - } asn_per_constraint_t; - typedef struct asn_per_constraints_s { - asn_per_constraint_t value; - asn_per_constraint_t size; - int (*value2code)(unsigned int value); - int (*code2value)(unsigned int code); - } asn_per_constraints_t; - - /* - * This structure describes a position inside an incoming PER bit stream. - */ - typedef struct asn_per_data_s { - const uint8_t *buffer; /* Pointer to the octet stream */ - size_t nboff; /* Bit offset to the meaningful bit */ - size_t nbits; /* Number of bits in the stream */ - size_t moved; /* Number of bits moved through this bit stream */ - int (*refill)(struct asn_per_data_s *); - void *refill_key; - } asn_per_data_t; - - /* - * Extract a small number of bits (<= 31) from the specified PER data pointer. - * This function returns -1 if the specified number of bits could not be - * extracted due to EOD or other conditions. - */ - int32_t per_get_few_bits(asn_per_data_t *per_data, int get_nbits); - - /* Undo the immediately preceeding "get_few_bits" operation */ - void per_get_undo(asn_per_data_t *per_data, int get_nbits); - - /* - * Extract a large number of bits from the specified PER data pointer. - * This function returns -1 if the specified number of bits could not be - * extracted due to EOD or other conditions. - */ - int per_get_many_bits(asn_per_data_t *pd, uint8_t *dst, int right_align, - int get_nbits); - - /* - * Get the length "n" from the Unaligned PER stream. - */ - ssize_t uper_get_length(asn_per_data_t *pd, - int effective_bound_bits, - int *repeat); - - /* - * Get the normally small length "n". - */ - ssize_t uper_get_nslength(asn_per_data_t *pd); - - /* - * Get the normally small non-negative whole number. - */ - ssize_t uper_get_nsnnwn(asn_per_data_t *pd); - - /* Non-thread-safe debugging function, don't use it */ - char *per_data_string(asn_per_data_t *pd); - - /* - * This structure supports forming PER output. - */ - typedef struct asn_per_outp_s { - uint8_t *buffer; /* Pointer into the (tmpspace) */ - size_t nboff; /* Bit offset to the meaningful bit */ - size_t nbits; /* Number of bits left in (tmpspace) */ - uint8_t tmpspace[32]; /* Preliminary storage to hold data */ - int (*outper)(const void *data, size_t size, void *op_key); - void *op_key; /* Key for (outper) data callback */ - size_t flushed_bytes; /* Bytes already flushed through (outper) */ - } asn_per_outp_t; - - /* Output a small number of bits (<= 31) */ - int per_put_few_bits(asn_per_outp_t *per_data, uint32_t bits, int obits); - - /* Output a large number of bits */ - int per_put_many_bits(asn_per_outp_t *po, const uint8_t *src, int put_nbits); - - /* - * Put the length "n" to the Unaligned PER stream. - * This function returns the number of units which may be flushed - * in the next units saving iteration. - */ - ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length); - - /* - * Put the normally small length "n" to the Unaligned PER stream. - * Returns 0 or -1. - */ - int uper_put_nslength(asn_per_outp_t *po, size_t length); - - /* - * Put the normally small non-negative whole number. - */ - int uper_put_nsnnwn(asn_per_outp_t *po, int n); - -#ifdef __cplusplus -} -#endif - -#endif /* _PER_SUPPORT_H_ */ diff --git a/src/third_party/asn1/xer_decoder.c b/src/third_party/asn1/xer_decoder.c deleted file mode 100644 index bfff2e17..00000000 --- a/src/third_party/asn1/xer_decoder.c +++ /dev/null @@ -1,371 +0,0 @@ -/* - * Copyright (c) 2004, 2005 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include /* XER/XML parsing support */ - - -/* - * Decode the XER encoding of a given type. - */ -asn_dec_rval_t -xer_decode(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, - void **struct_ptr, const void *buffer, size_t size) { - asn_codec_ctx_t s_codec_ctx; - - /* - * Stack checker requires that the codec context - * must be allocated on the stack. - */ - if(opt_codec_ctx) { - if(opt_codec_ctx->max_stack_size) { - s_codec_ctx = *opt_codec_ctx; - opt_codec_ctx = &s_codec_ctx; - } - } else { - /* If context is not given, be security-conscious anyway */ - memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); - s_codec_ctx.max_stack_size = _ASN_DEFAULT_STACK_MAX; - opt_codec_ctx = &s_codec_ctx; - } - - /* - * Invoke type-specific decoder. - */ - return td->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); -} - - - -struct xer__cb_arg { - pxml_chunk_type_e chunk_type; - size_t chunk_size; - const void *chunk_buf; - int callback_not_invoked; -}; - -static int -xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { - struct xer__cb_arg *arg = (struct xer__cb_arg *)key; - arg->chunk_type = type; - arg->chunk_size = _chunk_size; - arg->chunk_buf = _chunk_data; - arg->callback_not_invoked = 0; - return -1; /* Terminate the XML parsing */ -} - -/* - * Fetch the next token from the XER/XML stream. - */ -ssize_t -xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { - struct xer__cb_arg arg; - int new_stateContext = *stateContext; - ssize_t ret; - - arg.callback_not_invoked = 1; - ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); - if(ret < 0) return -1; - if(arg.callback_not_invoked) { - assert(ret == 0); /* No data was consumed */ - return 0; /* Try again with more data */ - } else { - assert(arg.chunk_size); - assert(arg.chunk_buf == buffer); - } - - /* - * Translate the XML chunk types into more convenient ones. - */ - switch(arg.chunk_type) { - case PXML_TEXT: - *ch_type = PXER_TEXT; - break; - case PXML_TAG: - return 0; /* Want more */ - case PXML_TAG_END: - *ch_type = PXER_TAG; - break; - case PXML_COMMENT: - case PXML_COMMENT_END: - *ch_type = PXER_COMMENT; - break; - } - - *stateContext = new_stateContext; - return arg.chunk_size; -} - -#define CSLASH 0x2f /* '/' */ -#define LANGLE 0x3c /* '<' */ -#define RANGLE 0x3e /* '>' */ - -xer_check_tag_e -xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { - const char *buf = (const char *)buf_ptr; - const char *end; - xer_check_tag_e ct = XCT_OPENING; - - if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { - if(size >= 2) - ASN_DEBUG("Broken XML tag: \"%c...%c\"", buf[0], buf[size - 1]); - return XCT_BROKEN; - } - - /* - * Determine the tag class. - */ - if(buf[1] == CSLASH) { - buf += 2; /* advance past "" */ - ct = XCT_CLOSING; - if(size > 0 && buf[size-1] == CSLASH) - return XCT_BROKEN; /* */ - } else { - buf++; /* advance past "<" */ - size -= 2; /* strip "<" and ">" */ - if(size > 0 && buf[size-1] == CSLASH) { - ct = XCT_BOTH; - size--; /* One more, for "/" */ - } - } - - /* Sometimes we don't care about the tag */ - if(!need_tag || !*need_tag) - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - - /* - * Determine the tag name. - */ - for(end = buf + size; buf < end; buf++, need_tag++) { - int b = *buf, n = *need_tag; - if(b != n) { - if(n == 0) { - switch(b) { - case 0x09: - case 0x0a: - case 0x0c: - case 0x0d: - case 0x20: - /* "": whitespace is normal */ - return ct; - } - } - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - } - if(b == 0) - return XCT_BROKEN; /* Embedded 0 in buf?! */ - } - if(*need_tag) - return (xer_check_tag_e)(XCT__UNK__MASK | ct); - - return ct; -} - - -#undef ADVANCE -#define ADVANCE(num_bytes) do { \ - size_t num = (num_bytes); \ - buf_ptr = ((const char *)buf_ptr) + num; \ - size -= num; \ - consumed_myself += num; \ - } while(0) - -#undef RETURN -#define RETURN(_code) do { \ - rval.code = _code; \ - rval.consumed = consumed_myself; \ - if(rval.code != RC_OK) \ - ASN_DEBUG("Failed with %d", rval.code); \ - return rval; \ - } while(0) - -#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ - ssize_t converted_size = body_receiver \ - (struct_key, chunk_buf, chunk_size, \ - (size_t)chunk_size < size); \ - if(converted_size == -1) RETURN(RC_FAIL); \ - if(converted_size == 0 \ - && size == (size_t)chunk_size) \ - RETURN(RC_WMORE); \ - chunk_size = converted_size; \ - } while(0) -#define XER_GOT_EMPTY() do { \ - if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ - RETURN(RC_FAIL); \ - } while(0) - -/* - * Generalized function for decoding the primitive values. - */ -asn_dec_rval_t -xer_decode_general(asn_codec_ctx_t *opt_codec_ctx, - asn_struct_ctx_t *ctx, /* Type decoder context */ - void *struct_key, - const char *xml_tag, /* Expected XML tag */ - const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder) - (void *struct_key, const void *chunk_buf, size_t chunk_size), - ssize_t (*body_receiver) - (void *struct_key, const void *chunk_buf, size_t chunk_size, - int have_more) - ) { - - asn_dec_rval_t rval; - ssize_t consumed_myself = 0; - - (void)opt_codec_ctx; - - /* - * Phases of XER/XML processing: - * Phase 0: Check that the opening tag matches our expectations. - * Phase 1: Processing body and reacting on closing tag. - */ - if(ctx->phase > 1) RETURN(RC_FAIL); - for(;;) { - pxer_chunk_type_e ch_type; /* XER chunk type */ - ssize_t ch_size; /* Chunk size */ - xer_check_tag_e tcv; /* Tag check value */ - - /* - * Get the next part of the XML stream. - */ - ch_size = xer_next_token(&ctx->context, buf_ptr, size, - &ch_type); - switch(ch_size) { - case -1: - RETURN(RC_FAIL); - case 0: - RETURN(RC_WMORE); - default: - switch(ch_type) { - case PXER_COMMENT: /* Got XML comment */ - ADVANCE(ch_size); /* Skip silently */ - continue; - case PXER_TEXT: - if(ctx->phase == 0) { - /* - * We have to ignore whitespace here, - * but in order to be forward compatible - * with EXTENDED-XER (EMBED-VALUES, #25) - * any text is just ignored here. - */ - } else { - XER_GOT_BODY(buf_ptr, ch_size, size); - } - ADVANCE(ch_size); - continue; - case PXER_TAG: - break; /* Check the rest down there */ - } - } - - assert(ch_type == PXER_TAG && size); - - tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); - /* - * Phase 0: - * Expecting the opening tag - * for the type being processed. - * Phase 1: - * Waiting for the closing XML tag. - */ - switch(tcv) { - case XCT_BOTH: - if(ctx->phase) break; - /* Finished decoding of an empty element */ - XER_GOT_EMPTY(); - ADVANCE(ch_size); - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - case XCT_OPENING: - if(ctx->phase) break; - ADVANCE(ch_size); - ctx->phase = 1; /* Processing body phase */ - continue; - case XCT_CLOSING: - if(!ctx->phase) break; - ADVANCE(ch_size); - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - case XCT_UNKNOWN_BO: - /* - * Certain tags in the body may be expected. - */ - if(opt_unexpected_tag_decoder - && opt_unexpected_tag_decoder(struct_key, - buf_ptr, ch_size) >= 0) { - /* Tag's processed fine */ - ADVANCE(ch_size); - if(!ctx->phase) { - /* We are not expecting - * the closing tag anymore. */ - ctx->phase = 2; /* Phase out */ - RETURN(RC_OK); - } - continue; - } - /* Fall through */ - default: - break; /* Unexpected tag */ - } - - ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); - break; /* Dark and mysterious things have just happened */ - } - - RETURN(RC_FAIL); -} - - -int -xer_is_whitespace(const void *chunk_buf, size_t chunk_size) { - const char *p = (const char *)chunk_buf; - const char *pend = p + chunk_size; - - for(; p < pend; p++) { - switch(*p) { - /* X.693, #8.1.4 - * HORISONTAL TAB (9) - * LINE FEED (10) - * CARRIAGE RETURN (13) - * SPACE (32) - */ - case 0x09: - case 0x0a: - case 0x0d: - case 0x20: - break; - default: - return 0; - } - } - return 1; /* All whitespace */ -} - -/* - * This is a vastly simplified, non-validating XML tree skipper. - */ -int -xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { - assert(*depth > 0); - switch(tcv) { - case XCT_BOTH: - case XCT_UNKNOWN_BO: - /* These negate each other. */ - return 0; - case XCT_OPENING: - case XCT_UNKNOWN_OP: - ++(*depth); - return 0; - case XCT_CLOSING: - case XCT_UNKNOWN_CL: - if(--(*depth) == 0) - return (tcv == XCT_CLOSING) ? 2 : 1; - return 0; - default: - return -1; - } -} diff --git a/src/third_party/asn1/xer_decoder.h b/src/third_party/asn1/xer_decoder.h deleted file mode 100644 index aab71007..00000000 --- a/src/third_party/asn1/xer_decoder.h +++ /dev/null @@ -1,106 +0,0 @@ -/*- - * Copyright (c) 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_DECODER_H_ -#define _XER_DECODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - struct asn_TYPE_descriptor_s; /* Forward declaration */ - - /* - * The XER decoder of any ASN.1 type. May be invoked by the application. - */ - asn_dec_rval_t xer_decode(struct asn_codec_ctx_s *opt_codec_ctx, - struct asn_TYPE_descriptor_s *type_descriptor, - void **struct_ptr, /* Pointer to a target structure's pointer */ - const void *buffer, /* Data to be decoded */ - size_t size /* Size of data buffer */ - ); - - /* - * Type of the type-specific XER decoder function. - */ - typedef asn_dec_rval_t (xer_type_decoder_f)(asn_codec_ctx_t *opt_codec_ctx, - struct asn_TYPE_descriptor_s *type_descriptor, - void **struct_ptr, - const char *opt_mname, /* Member name */ - const void *buf_ptr, size_t size - ); - - /******************************* - * INTERNALLY USEFUL FUNCTIONS * - *******************************/ - - /* - * Generalized function for decoding the primitive values. - * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8 - * and others. This function should not be used by applications, as its API - * is subject to changes. - */ - asn_dec_rval_t xer_decode_general(asn_codec_ctx_t *opt_codec_ctx, - asn_struct_ctx_t *ctx, /* Type decoder context */ - void *struct_key, /* Treated as opaque pointer */ - const char *xml_tag, /* Expected XML tag name */ - const void *buf_ptr, size_t size, - int (*opt_unexpected_tag_decoder) - (void *struct_key, const void *chunk_buf, size_t chunk_size), - ssize_t (*body_receiver) - (void *struct_key, const void *chunk_buf, size_t chunk_size, - int have_more) - ); - - - /* - * Fetch the next XER (XML) token from the stream. - * The function returns the number of bytes occupied by the chunk type, - * returned in the _ch_type. The _ch_type is only set (and valid) when - * the return value is greater than 0. - */ - typedef enum pxer_chunk_type { - PXER_TAG, /* Complete XER tag */ - PXER_TEXT, /* Plain text between XER tags */ - PXER_COMMENT /* A comment, may be part of */ - } pxer_chunk_type_e; - ssize_t xer_next_token(int *stateContext, - const void *buffer, size_t size, pxer_chunk_type_e *_ch_type); - - /* - * This function checks the buffer against the tag name is expected to occur. - */ - typedef enum xer_check_tag { - XCT_BROKEN = 0, /* The tag is broken */ - XCT_OPENING = 1, /* This is the tag */ - XCT_CLOSING = 2, /* This is the tag */ - XCT_BOTH = 3, /* This is the tag */ - XCT__UNK__MASK = 4, /* Mask of everything unexpected */ - XCT_UNKNOWN_OP = 5, /* Unexpected tag */ - XCT_UNKNOWN_CL = 6, /* Unexpected tag */ - XCT_UNKNOWN_BO = 7 /* Unexpected tag */ - } xer_check_tag_e; - xer_check_tag_e xer_check_tag(const void *buf_ptr, int size, - const char *need_tag); - - /* - * Check whether this buffer consists of entirely XER whitespace characters. - * RETURN VALUES: - * 1: Whitespace or empty string - * 0: Non-whitespace - */ - int xer_is_whitespace(const void *chunk_buf, size_t chunk_size); - - /* - * Skip the series of anticipated extensions. - */ - int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_DECODER_H_ */ diff --git a/src/third_party/asn1/xer_encoder.c b/src/third_party/asn1/xer_encoder.c deleted file mode 100644 index c83f189e..00000000 --- a/src/third_party/asn1/xer_encoder.c +++ /dev/null @@ -1,67 +0,0 @@ -/*- - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include -#include - -/* - * The XER encoder of any type. May be invoked by the application. - */ -asn_enc_rval_t -xer_encode(asn_TYPE_descriptor_t *td, void *sptr, - enum xer_encoder_flags_e xer_flags, - asn_app_consume_bytes_f *cb, void *app_key) { - asn_enc_rval_t er, tmper; - const char *mname; - size_t mlen; - int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2; - - if(!td || !sptr) goto cb_failed; - - mname = td->xml_tag; - mlen = strlen(mname); - - _ASN_CALLBACK3("<", 1, mname, mlen, ">", 1); - - tmper = td->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); - if(tmper.encoded == -1) return tmper; - - _ASN_CALLBACK3("\n", xcan); - - er.encoded = 4 + xcan + (2 * mlen) + tmper.encoded; - - _ASN_ENCODED_OK(er); -cb_failed: - _ASN_ENCODE_FAILED; -} - -/* - * This is a helper function for xer_fprint, which directs all incoming data - * into the provided file descriptor. - */ -static int -xer__print2fp(const void *buffer, size_t size, void *app_key) { - FILE *stream = (FILE *)app_key; - - if(fwrite(buffer, 1, size, stream) != size) - return -1; - - return 0; -} - -int -xer_fprint(FILE *stream, asn_TYPE_descriptor_t *td, void *sptr) { - asn_enc_rval_t er; - - if(!stream) stream = stdout; - if(!td || !sptr) - return -1; - - er = xer_encode(td, sptr, XER_F_BASIC, xer__print2fp, stream); - if(er.encoded == -1) - return -1; - - return fflush(stream); -} diff --git a/src/third_party/asn1/xer_encoder.h b/src/third_party/asn1/xer_encoder.h deleted file mode 100644 index ef1cd94b..00000000 --- a/src/third_party/asn1/xer_encoder.h +++ /dev/null @@ -1,59 +0,0 @@ -/*- - * Copyright (c) 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_ENCODER_H_ -#define _XER_ENCODER_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - - struct asn_TYPE_descriptor_s; /* Forward declaration */ - - /* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ - enum xer_encoder_flags_e { - /* Mode of encoding */ - XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ - XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ - }; - - /* - * The XER encoder of any type. May be invoked by the application. - */ - asn_enc_rval_t xer_encode(struct asn_TYPE_descriptor_s *type_descriptor, - void *struct_ptr, /* Structure to be encoded */ - enum xer_encoder_flags_e xer_flags, - asn_app_consume_bytes_f *consume_bytes_cb, - void *app_key /* Arbitrary callback argument */ - ); - - /* - * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) - * output into the chosen file pointer. - * RETURN VALUES: - * 0: The structure is printed. - * -1: Problem printing the structure. - * WARNING: No sensible errno value is returned. - */ - int xer_fprint(FILE *stream, struct asn_TYPE_descriptor_s *td, void *sptr); - - /* - * Type of the generic XER encoder. - */ - typedef asn_enc_rval_t (xer_type_encoder_f)( - struct asn_TYPE_descriptor_s *type_descriptor, - void *struct_ptr, /* Structure to be encoded */ - int ilevel, /* Level of indentation */ - enum xer_encoder_flags_e xer_flags, - asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ - void *app_key /* Arbitrary callback argument */ - ); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_ENCODER_H_ */ diff --git a/src/third_party/asn1/xer_support.c b/src/third_party/asn1/xer_support.c deleted file mode 100644 index e5982110..00000000 --- a/src/third_party/asn1/xer_support.c +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. - * Copyright (c) 2003, 2004, 2005 Lev Walkin . - * All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#include -#include - -/* Parser states */ -typedef enum { - ST_TEXT, - ST_TAG_START, - ST_TAG_BODY, - ST_TAG_QUOTE_WAIT, - ST_TAG_QUOTED_STRING, - ST_TAG_UNQUOTED_STRING, - ST_COMMENT_WAIT_DASH1, /* ""[0] */ - ST_COMMENT_CLO_RT /* "-->"[1] */ -} pstate_e; - -static pxml_chunk_type_e final_chunk_type[] = { - PXML_TEXT, - PXML_TAG_END, - PXML_COMMENT_END, - PXML_TAG_END, - PXML_COMMENT_END, -}; - - -static int -_charclass[256] = { - 0,0,0,0,0,0,0,0, 0,1,1,0,1,1,0,0, - 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, - 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, - 2,2,2,2,2,2,2,2, 2,2,0,0,0,0,0,0, /* 01234567 89 */ - 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* ABCDEFG HIJKLMNO */ - 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0, /* PQRSTUVW XYZ */ - 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* abcdefg hijklmno */ - 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0 /* pqrstuvw xyz */ -}; -#define WHITESPACE(c) (_charclass[(unsigned char)(c)] == 1) -#define ALNUM(c) (_charclass[(unsigned char)(c)] >= 2) -#define ALPHA(c) (_charclass[(unsigned char)(c)] == 3) - -/* Aliases for characters, ASCII/UTF-8 */ -#define EXCLAM 0x21 /* '!' */ -#define CQUOTE 0x22 /* '"' */ -#define CDASH 0x2d /* '-' */ -#define CSLASH 0x2f /* '/' */ -#define LANGLE 0x3c /* '<' */ -#define CEQUAL 0x3d /* '=' */ -#define RANGLE 0x3e /* '>' */ -#define CQUEST 0x3f /* '?' */ - -/* Invoke token callback */ -#define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ - int _ret; \ - pstate_e ns = _ns; \ - ssize_t _sz = (p - chunk_start) + _current_too; \ - if (!_sz) { \ - /* Shortcut */ \ - state = _ns; \ - break; \ - } \ - _ret = cb(type, chunk_start, _sz, key); \ - if(_ret < _sz) { \ - if(_current_too && _ret == -1) \ - state = ns; \ - goto finish; \ - } \ - chunk_start = p + _current_too; \ - state = ns; \ - } while(0) - -#define TOKEN_CB(_type, _ns, _current_too) \ - TOKEN_CB_CALL(_type, _ns, _current_too, 0) - -#define TOKEN_CB_FINAL(_type, _ns, _current_too) \ - TOKEN_CB_CALL(final_chunk_type[_type], _ns, _current_too, 1) - -/* - * Parser itself - */ -ssize_t pxml_parse(int *stateContext, const void *xmlbuf, size_t size, pxml_callback_f *cb, void *key) { - pstate_e state = (pstate_e)*stateContext; - const char *chunk_start = (const char *)xmlbuf; - const char *p = chunk_start; - const char *end = p + size; - - for(; p < end; p++) { - int C = *(const unsigned char *)p; - switch(state) { - case ST_TEXT: - /* - * Initial state: we're in the middle of some text, - * or just have started. - */ - if (C == LANGLE) - /* We're now in the tag, probably */ - TOKEN_CB(PXML_TEXT, ST_TAG_START, 0); - break; - case ST_TAG_START: - if (ALPHA(C) || (C == CSLASH)) - state = ST_TAG_BODY; - else if (C == EXCLAM) - state = ST_COMMENT_WAIT_DASH1; - else - /* - * Not characters and not whitespace. - * Must be something like "3 < 4". - */ - TOKEN_CB(PXML_TEXT, ST_TEXT, 1);/* Flush as data */ - break; - case ST_TAG_BODY: - switch(C) { - case RANGLE: - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - break; - case LANGLE: - /* - * The previous tag wasn't completed, but still - * recognized as valid. (Mozilla-compatible) - */ - TOKEN_CB_FINAL(PXML_TAG, ST_TAG_START, 0); - break; - case CEQUAL: - state = ST_TAG_QUOTE_WAIT; - break; - } - break; - case ST_TAG_QUOTE_WAIT: - /* - * State after the equal sign ("=") in the tag. - */ - switch(C) { - case CQUOTE: - state = ST_TAG_QUOTED_STRING; - break; - case RANGLE: - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - break; - default: - if(!WHITESPACE(C)) - /* Unquoted string value */ - state = ST_TAG_UNQUOTED_STRING; - } - break; - case ST_TAG_QUOTED_STRING: - /* - * Tag attribute's string value in quotes. - */ - if(C == CQUOTE) { - /* Return back to the tag state */ - state = ST_TAG_BODY; - } - break; - case ST_TAG_UNQUOTED_STRING: - if(C == RANGLE) { - /* End of the tag */ - TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); - } else if(WHITESPACE(C)) { - /* Return back to the tag state */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT_WAIT_DASH1: - if(C == CDASH) { - state = ST_COMMENT_WAIT_DASH2; - } else { - /* Some ordinary tag. */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT_WAIT_DASH2: - if(C == CDASH) { - /* Seen "<--" */ - state = ST_COMMENT; - } else { - /* Some ordinary tag */ - state = ST_TAG_BODY; - } - break; - case ST_COMMENT: - if(C == CDASH) { - state = ST_COMMENT_CLO_DASH2; - } - break; - case ST_COMMENT_CLO_DASH2: - if(C == CDASH) { - state = ST_COMMENT_CLO_RT; - } else { - /* This is not an end of a comment */ - state = ST_COMMENT; - } - break; - case ST_COMMENT_CLO_RT: - if(C == RANGLE) { - TOKEN_CB_FINAL(PXML_COMMENT, ST_TEXT, 1); - } else if(C == CDASH) { - /* Maintain current state, still waiting for '>' */ - } else { - state = ST_COMMENT; - } - break; - } /* switch(*ptr) */ - } /* for() */ - - /* - * Flush the partially processed chunk, state permitting. - */ - if(p - chunk_start) { - switch (state) { - case ST_COMMENT: - TOKEN_CB(PXML_COMMENT, state, 0); - break; - case ST_TEXT: - TOKEN_CB(PXML_TEXT, state, 0); - break; - default: - break; /* a no-op */ - } - } - -finish: - *stateContext = (int)state; - return chunk_start - (const char *)xmlbuf; -} - diff --git a/src/third_party/asn1/xer_support.h b/src/third_party/asn1/xer_support.h deleted file mode 100644 index 190ed464..00000000 --- a/src/third_party/asn1/xer_support.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. - * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. - * Redistribution and modifications are permitted subject to BSD license. - */ -#ifndef _XER_SUPPORT_H_ -#define _XER_SUPPORT_H_ - -#include /* Platform-specific types */ - -#ifdef __cplusplus -extern "C" { -#endif - - /* - * Types of data transferred to the application. - */ - typedef enum { - PXML_TEXT, /* Plain text between XML tags. */ - PXML_TAG, /* A tag, starting with '<'. */ - PXML_COMMENT, /* An XML comment, including "". */ - /* - * The following chunk types are reported if the chunk - * terminates the specified XML element. - */ - PXML_TAG_END, /* Tag ended */ - PXML_COMMENT_END /* Comment ended */ - } - pxml_chunk_type_e; - - /* - * Callback function that is called by the parser when parsed data is - * available. The _opaque is the pointer to a field containing opaque user - * data specified in pxml_create() call. The chunk type is _type and the text - * data is the piece of buffer identified by _bufid (as supplied to - * pxml_feed() call) starting at offset _offset and of _size bytes size. - * The chunk is NOT '\0'-terminated. - */ - typedef int (pxml_callback_f)(pxml_chunk_type_e _type, - const void *_chunk_data, size_t _chunk_size, void *_key); - - /* - * Parse the given buffer as it were a chunk of XML data. - * Invoke the specified callback each time the meaninful data is found. - * This function returns number of bytes consumed from the bufer. - * It will always be lesser than or equal to the specified _size. - * The next invocation of this function must account the difference. - */ - ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, - pxml_callback_f *cb, void *_key); - -#ifdef __cplusplus -} -#endif - -#endif /* _XER_SUPPORT_H_ */ From e95557f80d3fb1f818c2801bf0b5440ac6742da3 Mon Sep 17 00:00:00 2001 From: lotodore Date: Thu, 29 Aug 2013 23:10:16 +0200 Subject: [PATCH 025/128] Fixing missing htonl/ntohl with QtNetwork. --- src/chatcleaner/cleanerserver.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/chatcleaner/cleanerserver.cpp b/src/chatcleaner/cleanerserver.cpp index c85f5d1d..46d0e773 100644 --- a/src/chatcleaner/cleanerserver.cpp +++ b/src/chatcleaner/cleanerserver.cpp @@ -32,11 +32,11 @@ #include #include +#include #include #include #include - #include "messagefilter.h" #include "cleanerconfig.h" @@ -101,7 +101,7 @@ void CleanerServer::onRead() // Read the size of the packet (first 4 bytes in network byte order). uint32_t nativeVal; memcpy(&nativeVal, &m_recvBuf[0], sizeof(uint32_t)); - size_t packetSize = ntohl(nativeVal); + size_t packetSize = qFromBigEndian(nativeVal); if (packetSize > MAX_CLEANER_PACKET_SIZE) { m_recvBufUsed = 0; qDebug() << "Invalid packet size: " << packetSize; @@ -227,7 +227,7 @@ void CleanerServer::sendMessageToClient(ChatCleanerMessage &msg) { uint32_t packetSize = msg.ByteSize(); google::protobuf::uint8 *buf = new google::protobuf::uint8[packetSize + CLEANER_NET_HEADER_SIZE]; - *((uint32_t *)buf) = htonl(packetSize); + *((uint32_t *)buf) = qToBigEndian(packetSize); msg.SerializeWithCachedSizesToArray(&buf[CLEANER_NET_HEADER_SIZE]); tcpSocket->write((const char *)buf, packetSize + CLEANER_NET_HEADER_SIZE); delete[] buf; From 94e39d52b448059a50263235bb3e7f922cc56721 Mon Sep 17 00:00:00 2001 From: lotodore Date: Thu, 29 Aug 2013 23:19:04 +0200 Subject: [PATCH 026/128] Adding missing protobuf dependency. --- chatcleaner.pro | 1 + 1 file changed, 1 insertion(+) diff --git a/chatcleaner.pro b/chatcleaner.pro index daee7bca..c7403776 100644 --- a/chatcleaner.pro +++ b/chatcleaner.pro @@ -37,6 +37,7 @@ HEADERS += src/chatcleaner/cleanerserver.h \ LIBPATH += lib LIBS += -lpokerth_lib \ -lpokerth_protocol \ + -lprotobuf \ -ltinyxml win32 { From 839c3db99a549d5266c542303387513f4f3b0482 Mon Sep 17 00:00:00 2001 From: lotodore Date: Fri, 30 Aug 2013 10:38:00 +0200 Subject: [PATCH 027/128] Block connection fixes for chat cleaner, use new Qt5 feature to stop accepting connections. --- src/chatcleaner/cleanerserver.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/chatcleaner/cleanerserver.cpp b/src/chatcleaner/cleanerserver.cpp index 46d0e773..3b7d2285 100644 --- a/src/chatcleaner/cleanerserver.cpp +++ b/src/chatcleaner/cleanerserver.cpp @@ -78,13 +78,12 @@ CleanerServer::~CleanerServer() void CleanerServer::newCon() { - if(blockConnection) { - tcpServer->nextPendingConnection()->close(); - } else { + if(!blockConnection) { tcpSocket = tcpServer->nextPendingConnection(); connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(onRead())); connect(tcpSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(socketStateChanged(QAbstractSocket::SocketState))); blockConnection = true; + tcpServer->pauseAccepting(); } } @@ -131,7 +130,6 @@ void CleanerServer::onRead() if (error) { qDebug() << "Error handling packets from client."; tcpSocket->close(); - blockConnection = false; } /* char buf[1024]; @@ -206,9 +204,11 @@ bool CleanerServer::handleMessage(ChatCleanerMessage &msg) void CleanerServer::socketStateChanged(QAbstractSocket::SocketState state) { - qDebug() << "Socket state changed to: " << QAbstractSocket::UnconnectedState; - if(state == QAbstractSocket::UnconnectedState) blockConnection = false; + if (state == QAbstractSocket::UnconnectedState) { + blockConnection = false; + tcpServer->resumeAccepting(); + } } void CleanerServer::refreshConfig() From 448987d3635c35b3130a85fdd4c96c0a2b840e66 Mon Sep 17 00:00:00 2001 From: lotodore Date: Fri, 30 Aug 2013 11:12:00 +0200 Subject: [PATCH 028/128] Fixing socket state debug message. --- src/chatcleaner/cleanerserver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chatcleaner/cleanerserver.cpp b/src/chatcleaner/cleanerserver.cpp index 3b7d2285..52ade363 100644 --- a/src/chatcleaner/cleanerserver.cpp +++ b/src/chatcleaner/cleanerserver.cpp @@ -204,7 +204,7 @@ bool CleanerServer::handleMessage(ChatCleanerMessage &msg) void CleanerServer::socketStateChanged(QAbstractSocket::SocketState state) { - qDebug() << "Socket state changed to: " << QAbstractSocket::UnconnectedState; + qDebug() << "Socket state changed to: " << state; if (state == QAbstractSocket::UnconnectedState) { blockConnection = false; tcpServer->resumeAccepting(); From 9295a4be1971084d5f5fc6977d76221f32f8838d Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 31 Aug 2013 00:42:03 +0200 Subject: [PATCH 029/128] Mac OS fixes for Qt5. --- chatcleaner.pro | 15 ++++++++------- pokerth_db.pro | 3 ++- pokerth_game.pro | 1 + pokerth_lib.pro | 2 +- pokerth_protocol.pro | 3 ++- pokerth_server.pro | 1 + src/pokerth.cpp | 2 ++ 7 files changed, 17 insertions(+), 10 deletions(-) diff --git a/chatcleaner.pro b/chatcleaner.pro index c7403776..6d63b4a9 100644 --- a/chatcleaner.pro +++ b/chatcleaner.pro @@ -52,12 +52,13 @@ win32 { INCLUDEPATH += $${PREFIX}/include } mac { - # make it x86_64 only - CONFIG += x86_64 - CONFIG -= x86 - CONFIG -= ppc - QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6 - QMAKE_CXXFLAGS -= -std=gnu++0x + # make it x86_64 only + CONFIG += x86_64 + CONFIG -= x86 + CONFIG -= ppc + QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6 + QMAKE_CXXFLAGS -= -std=gnu++0x LIBPATH += /Developer/SDKs/MacOSX10.5.sdk/usr/lib - INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ + INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ + INCLUDEPATH += /usr/local/include } diff --git a/pokerth_db.pro b/pokerth_db.pro index b610fce2..7c2d1428 100644 --- a/pokerth_db.pro +++ b/pokerth_db.pro @@ -64,7 +64,8 @@ mac{ # on Intel-Mac you have to comment this line out or build will fail. # QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.4u.sdk/ - INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ + INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers INCLUDEPATH += /Library/Frameworks/SDL_mixer.framework/Headers + INCLUDEPATH += /usr/local/include } diff --git a/pokerth_game.pro b/pokerth_game.pro index 2c143e8e..1e2ffe21 100644 --- a/pokerth_game.pro +++ b/pokerth_game.pro @@ -597,6 +597,7 @@ mac { INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers INCLUDEPATH += /Library/Frameworks/SDL_mixer.framework/Headers + INCLUDEPATH += /usr/local/include } OTHER_FILES += docs/infomessage-id-desc.txt official_server { diff --git a/pokerth_lib.pro b/pokerth_lib.pro index d3ec4dd3..9a30d60c 100644 --- a/pokerth_lib.pro +++ b/pokerth_lib.pro @@ -247,7 +247,7 @@ mac{ INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers INCLUDEPATH += /Library/Frameworks/SDL_mixer.framework/Headers - INCLUDEPATH += /opt/local/include + INCLUDEPATH += /usr/local/include } android{ diff --git a/pokerth_protocol.pro b/pokerth_protocol.pro index 14da5993..7a331df5 100644 --- a/pokerth_protocol.pro +++ b/pokerth_protocol.pro @@ -48,7 +48,8 @@ mac { # for universal-compilation on PPC-Mac uncomment the following line # on Intel-Mac you have to comment this line out or build will fail. # QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.4u.sdk/ - INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ + INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ INCLUDEPATH += /Library/Frameworks/SDL.framework/Headers INCLUDEPATH += /Library/Frameworks/SDL_mixer.framework/Headers + INCLUDEPATH += /usr/local/include } diff --git a/pokerth_server.pro b/pokerth_server.pro index 7f069fbe..d27a0e77 100644 --- a/pokerth_server.pro +++ b/pokerth_server.pro @@ -315,6 +315,7 @@ mac { RC_FILE = pokerth.icns LIBPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/lib INCLUDEPATH += /Developer/SDKs/MacOSX10.6.sdk/usr/include/ + INCLUDEPATH += /usr/local/include } official_server { diff --git a/src/pokerth.cpp b/src/pokerth.cpp index d5e7c5c2..ab911e5f 100755 --- a/src/pokerth.cpp +++ b/src/pokerth.cpp @@ -39,8 +39,10 @@ #include #ifdef __APPLE__ +#if QT_VERSION < 0x050000 #include #endif +#endif #include From 93345cc4eb4b80334030cd1a969b2a6135c80ee2 Mon Sep 17 00:00:00 2001 From: doitux Date: Sat, 31 Aug 2013 14:03:44 +0200 Subject: [PATCH 030/128] fix crashes for local game (commited with avatar-ignore feature) --- src/gui/qt/gametable/gametableimpl.cpp | 3 +++ src/gui/qt/gametable/myavatarlabel.cpp | 25 ++++++++-------------- src/gui/qt/gametable/myavatarlabel.h | 7 +++++- src/gui/qt/startwindow/startwindowimpl.cpp | 2 +- 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp index 23a5bcf3..d72a5e95 100755 --- a/src/gui/qt/gametable/gametableimpl.cpp +++ b/src/gui/qt/gametable/gametableimpl.cpp @@ -1074,6 +1074,9 @@ void gameTableImpl::refreshPlayerAvatar() PlayerList seatsList = currentGame->getSeatsList(); for (it_c=seatsList->begin(), seatPlace=0; it_c!=seatsList->end(); ++it_c, seatPlace++) { + //set uniqueID + playerAvatarLabelArray[(*it_c)->getMyID()]->setMyUniqueId((*it_c)->getMyUniqueID()); + //get CountryString QString countryString(QString(myStartWindow->getSession()->getClientPlayerInfo((*it_c)->getMyUniqueID()).countryCode.c_str()).toLower()); countryString = QString(":/cflags/cflags/%1.png").arg(countryString); diff --git a/src/gui/qt/gametable/myavatarlabel.cpp b/src/gui/qt/gametable/myavatarlabel.cpp index 363e4057..fcf0c8ed 100644 --- a/src/gui/qt/gametable/myavatarlabel.cpp +++ b/src/gui/qt/gametable/myavatarlabel.cpp @@ -42,7 +42,7 @@ using namespace std; MyAvatarLabel::MyAvatarLabel(QGroupBox* parent) - : QLabel(parent), voteRunning(false), transparent(false) + : QLabel(parent), voteRunning(false), transparent(false), myUniqueId(0) { myContextMenu = new QMenu; @@ -395,21 +395,14 @@ void MyAvatarLabel::paintEvent(QPaintEvent*) painter.setOpacity(1.0); //hide avatar if player is on ignore list - boost::shared_ptr currentGame = myW->myStartWindow->getSession()->getCurrentGame(); - PlayerListConstIterator it_c; - int seatPlace; - PlayerList seatsList = currentGame->getSeatsList(); - for (seatPlace=0,it_c=seatsList->begin(); it_c!=seatsList->end(); ++it_c, seatPlace++) { - if(seatPlace == myId) { - if(!playerIsOnIgnoreList(QString::fromUtf8((*it_c)->getMyName().c_str()))) { - painter.drawPixmap(0,0,myPixmap); - return; - } - else if(myW->getMyConfig()->readConfigInt("DontHideAvatarsOfIgnored")) { - painter.drawPixmap(0,0,myPixmap); - return; - } - } + boost::shared_ptr mySession = myW->myStartWindow->getSession(); + if(!playerIsOnIgnoreList(QString::fromUtf8(mySession->getClientPlayerInfo(myUniqueId).playerName.c_str()))) { + painter.drawPixmap(0,0,myPixmap); + return; + } + else if(myW->getMyConfig()->readConfigInt("DontHideAvatarsOfIgnored")) { + painter.drawPixmap(0,0,myPixmap); + return; } } diff --git a/src/gui/qt/gametable/myavatarlabel.h b/src/gui/qt/gametable/myavatarlabel.h index 1065e923..60d83ca9 100644 --- a/src/gui/qt/gametable/myavatarlabel.h +++ b/src/gui/qt/gametable/myavatarlabel.h @@ -55,6 +55,9 @@ public: void setMyId ( int theValue ) { myId = theValue; } + void setMyUniqueId ( int theValue ) { + myUniqueId = theValue; + } void contextMenuEvent ( QContextMenuEvent * event ); QString getPlayerTip(QString); int getPlayerRating(QString); @@ -95,10 +98,12 @@ private: QPixmap myPixmap; QString myPath; - int myId; bool myContextMenuEnabled; bool voteRunning; bool transparent; + int myId; + int myUniqueId; }; #endif + diff --git a/src/gui/qt/startwindow/startwindowimpl.cpp b/src/gui/qt/startwindow/startwindowimpl.cpp index 63fac6e0..bcdacc09 100644 --- a/src/gui/qt/startwindow/startwindowimpl.cpp +++ b/src/gui/qt/startwindow/startwindowimpl.cpp @@ -61,7 +61,7 @@ #ifdef ANDROID #ifndef ANDROID_TEST - #include "QtGui/5.1.0/QtGui/qpa/qplatformnativeinterface.h" + #include "QtGui/5.1.1/QtGui/qpa/qplatformnativeinterface.h" #include #endif #endif From 36fef0be7f63d46dcdb4e311a826804c21ab25a6 Mon Sep 17 00:00:00 2001 From: doitux Date: Sat, 31 Aug 2013 14:23:24 +0200 Subject: [PATCH 031/128] tinyxml use STL for android --- pokerth_game.pro | 1 + 1 file changed, 1 insertion(+) diff --git a/pokerth_game.pro b/pokerth_game.pro index 09f47258..f0239ba8 100644 --- a/pokerth_game.pro +++ b/pokerth_game.pro @@ -637,6 +637,7 @@ gui_800x480 { android{ # Use old boost::filesystem, because the new version requires std::wstring. DEFINES += BOOST_FILESYSTEM_VERSION=3 + DEFINES += TIXML_USE_STL # sqlite3 is included directly. INCLUDEPATH += src/third_party/sqlite3 From 9deeec96c45b69bee13bd9533871928282bd7abf Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 31 Aug 2013 19:50:40 +0200 Subject: [PATCH 032/128] Mac OS script changes for Qt5. --- mac_post_make.sh | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/mac_post_make.sh b/mac_post_make.sh index 4a465c90..b40a276d 100755 --- a/mac_post_make.sh +++ b/mac_post_make.sh @@ -9,8 +9,8 @@ # of binary-size if you leave Qt out. # (see http://trolltech.com/developer/downloads/qt/mac) -QT_FW_PATH="/Library/Frameworks" -QT_PLUGIN_PATH="/Developer/Applications/Qt/plugins" +QT_FW_PATH="/Developer/Qt5/5/clang_64/lib" +QT_PLUGIN_PATH="/Developer/Qt5/5/clang_64/plugins" SDL_FW_PATH="/Library/Frameworks" APPLICATION="./pokerth.app" BINARY="$APPLICATION/Contents/MacOs/pokerth" @@ -44,37 +44,33 @@ if [ "$1" != "--without-qt" ] ; then cp -R $QT_FW_PATH/QtNetwork.framework $BINARY_FW_PATH # remove debug versions rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug - rm -rf $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug.dSYM rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug.prl - rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/Versions/4/QtCore_debug + rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/Versions/5/QtCore_debug rm -f $APPLICATION/Contents/Frameworks/QtGui.framework/QtGui_debug - rm -rf $APPLICATION/Contents/Frameworks/QtGui.framework/QtGui_debug.dSYM rm -f $APPLICATION/Contents/Frameworks/QtGui.framework/QtGui_debug.prl - rm -f $APPLICATION/Contents/Frameworks/QtGui.framework/Versions/4/QtGui_debug + rm -f $APPLICATION/Contents/Frameworks/QtGui.framework/Versions/5/QtGui_debug rm -f $APPLICATION/Contents/Frameworks/QtSql.framework/QtSql_debug - rm -rf $APPLICATION/Contents/Frameworks/QtSql.framework/QtSql_debug.dSYM rm -f $APPLICATION/Contents/Frameworks/QtSql.framework/QtSql_debug.prl - rm -f $APPLICATION/Contents/Frameworks/QtSql.framework/Versions/4/QtSql_debug + rm -f $APPLICATION/Contents/Frameworks/QtSql.framework/Versions/5/QtSql_debug rm -f $APPLICATION/Contents/Frameworks/QtNetwork.framework/QtNetwork_debug - rm -rf $APPLICATION/Contents/Frameworks/QtNetwork.framework/QtNetwork_debug.dSYM rm -f $APPLICATION/Contents/Frameworks/QtNetwork.framework/QtNetwork_debug.prl - rm -f $APPLICATION/Contents/Frameworks/QtNetwork.framework/Versions/4/QtNetwork_debug + rm -f $APPLICATION/Contents/Frameworks/QtNetwork.framework/Versions/5/QtNetwork_debug # redirect binary to use integrated frameworks - QTCORE="QtCore.framework/Versions/4.0/QtCore" - QTGUI="QtGui.framework/Versions/4.0/QtGui" - QTSQL="QtSql.framework/Versions/4.0/QtSql" - QTNETWORK="QtNetwork.framework/Versions/4.0/QtNetwork" + QTCORE="QtCore.framework/Versions/5/QtCore" + QTGUI="QtGui.framework/Versions/5/QtGui" + QTSQL="QtSql.framework/Versions/5/QtSql" + QTNETWORK="QtNetwork.framework/Versions/5/QtNetwork" install_name_tool -id @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTCORE - install_name_tool -id @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTGUI + install_name_tool -id @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTGUI install_name_tool -id @executable_path/../Frameworks/$QTSQL $BINARY_FW_PATH/$QTSQL install_name_tool -id @executable_path/../Frameworks/$QTSQL $BINARY_FW_PATH/$QTNETWORK QTCORE_LINK=$(otool -L $BINARY | grep QtCore | cut -d"(" -f1 | cut -f2) - QTGUI_LINK=$(otool -L $BINARY | grep QtGui | cut -d"(" -f1 | cut -f2) + QTGUI_LINK=$(otool -L $BINARY | grep QtGui | cut -d"(" -f1 | cut -f2) QTSQL_LINK=$(otool -L $BINARY | grep QtSql | cut -d"(" -f1 | cut -f2) QTNETWORK_LINK=$(otool -L $BINARY | grep QtNetwork | cut -d"(" -f1 | cut -f2) install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY - install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY + install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY install_name_tool -change $QTSQL_LINK @executable_path/../Frameworks/$QTSQL $BINARY install_name_tool -change $QTNETWORK_LINK @executable_path/../Frameworks/$QTNETWORK $BINARY install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/imageformats/libqgif.dylib From 6eabfc3e9cb6434b0dc9ad6c9f547c1e9c040f15 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 31 Aug 2013 20:10:00 +0200 Subject: [PATCH 033/128] Adding QtWidgets dependency for Mac OS. --- mac_post_make.sh | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/mac_post_make.sh b/mac_post_make.sh index b40a276d..b48e373f 100755 --- a/mac_post_make.sh +++ b/mac_post_make.sh @@ -38,8 +38,9 @@ if [ "$1" != "--without-qt" ] ; then cp $QT_PLUGIN_PATH/imageformats/libqgif.dylib $BINARY_PLUGIN_PATH/imageformats cp $QT_PLUGIN_PATH/imageformats/libqjpeg.dylib $BINARY_PLUGIN_PATH/imageformats cp $QT_PLUGIN_PATH/sqldrivers/libqsqlite.dylib $BINARY_PLUGIN_PATH/sqldrivers - cp -R $QT_FW_PATH/QtCore.framework $BINARY_FW_PATH + cp -R $QT_FW_PATH/QtCore.framework $BINARY_FW_PATH cp -R $QT_FW_PATH/QtGui.framework $BINARY_FW_PATH + cp -R $QT_FW_PATH/QtWidgets.framework $BINARY_FW_PATH cp -R $QT_FW_PATH/QtSql.framework $BINARY_FW_PATH cp -R $QT_FW_PATH/QtNetwork.framework $BINARY_FW_PATH # remove debug versions @@ -49,6 +50,9 @@ if [ "$1" != "--without-qt" ] ; then rm -f $APPLICATION/Contents/Frameworks/QtGui.framework/QtGui_debug rm -f $APPLICATION/Contents/Frameworks/QtGui.framework/QtGui_debug.prl rm -f $APPLICATION/Contents/Frameworks/QtGui.framework/Versions/5/QtGui_debug + rm -f $APPLICATION/Contents/Frameworks/QtWidgets.framework/QtWidgets_debug + rm -f $APPLICATION/Contents/Frameworks/QtWidgets.framework/QtWidgets_debug.prl + rm -f $APPLICATION/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets_debug rm -f $APPLICATION/Contents/Frameworks/QtSql.framework/QtSql_debug rm -f $APPLICATION/Contents/Frameworks/QtSql.framework/QtSql_debug.prl rm -f $APPLICATION/Contents/Frameworks/QtSql.framework/Versions/5/QtSql_debug @@ -59,29 +63,36 @@ if [ "$1" != "--without-qt" ] ; then # redirect binary to use integrated frameworks QTCORE="QtCore.framework/Versions/5/QtCore" QTGUI="QtGui.framework/Versions/5/QtGui" + QTWIDGETS="QtWidgets.framework/Versions/5/QtWidgets" QTSQL="QtSql.framework/Versions/5/QtSql" QTNETWORK="QtNetwork.framework/Versions/5/QtNetwork" install_name_tool -id @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTCORE install_name_tool -id @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTGUI + install_name_tool -id @executable_path/../Frameworks/$QTWIDGETS $BINARY_FW_PATH/$QTWIDGETS install_name_tool -id @executable_path/../Frameworks/$QTSQL $BINARY_FW_PATH/$QTSQL - install_name_tool -id @executable_path/../Frameworks/$QTSQL $BINARY_FW_PATH/$QTNETWORK + install_name_tool -id @executable_path/../Frameworks/$QTNETWORK $BINARY_FW_PATH/$QTNETWORK QTCORE_LINK=$(otool -L $BINARY | grep QtCore | cut -d"(" -f1 | cut -f2) QTGUI_LINK=$(otool -L $BINARY | grep QtGui | cut -d"(" -f1 | cut -f2) + QTWIDGETS_LINK=$(otool -L $BINARY | grep QtWidgets | cut -d"(" -f1 | cut -f2) QTSQL_LINK=$(otool -L $BINARY | grep QtSql | cut -d"(" -f1 | cut -f2) QTNETWORK_LINK=$(otool -L $BINARY | grep QtNetwork | cut -d"(" -f1 | cut -f2) install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY + install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY install_name_tool -change $QTSQL_LINK @executable_path/../Frameworks/$QTSQL $BINARY install_name_tool -change $QTNETWORK_LINK @executable_path/../Frameworks/$QTNETWORK $BINARY install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/imageformats/libqgif.dylib install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_PLUGIN_PATH/imageformats/libqgif.dylib + install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_PLUGIN_PATH/imageformats/libqgif.dylib install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/imageformats/libqjpeg.dylib install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_PLUGIN_PATH/imageformats/libqjpeg.dylib + install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_PLUGIN_PATH/imageformats/libqjpeg.dylib install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/sqldrivers/libqsqlite.dylib install_name_tool -change $QTSQL_LINK @executable_path/../Frameworks/$QTSQL $BINARY_PLUGIN_PATH/sqldrivers/libqsqlite.dylib QTCORE_LINK=$(otool -L $BINARY_FW_PATH/$QTGUI | grep QtCore | head -1 | cut -d"(" -f1 | cut -f2) install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTGUI + install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTWIDGETS install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTSQL install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTNETWORK From 171b6beb5da43110e801fe9c3d98381d0dcd6a8f Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 31 Aug 2013 20:16:33 +0200 Subject: [PATCH 034/128] Modify reference to QtWidgets from QtGui on Mac OS. --- mac_post_make.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mac_post_make.sh b/mac_post_make.sh index b48e373f..4a2495f8 100755 --- a/mac_post_make.sh +++ b/mac_post_make.sh @@ -95,5 +95,7 @@ if [ "$1" != "--without-qt" ] ; then install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTWIDGETS install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTSQL install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTNETWORK + + install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_FW_PATH/$QTGUI fi From e7481af03b8b7df90554539ae883e8f6e5483c82 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 31 Aug 2013 20:28:17 +0200 Subject: [PATCH 035/128] Adding Qt5 cocoa platform plugin on Mac. --- mac_post_make.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mac_post_make.sh b/mac_post_make.sh index 4a2495f8..8493b4e5 100755 --- a/mac_post_make.sh +++ b/mac_post_make.sh @@ -27,6 +27,7 @@ mkdir $BINARY_FW_PATH BINARY_PLUGIN_PATH="$APPLICATION/Contents/plugins" mkdir -p $BINARY_PLUGIN_PATH/imageformats mkdir -p $BINARY_PLUGIN_PATH/sqldrivers +mkdir -p $BINARY_PLUGIN_PATH/platforms # integrate SDL-frameworks into binary cp -R $SDL_FW_PATH/SDL.framework $BINARY_FW_PATH @@ -38,6 +39,7 @@ if [ "$1" != "--without-qt" ] ; then cp $QT_PLUGIN_PATH/imageformats/libqgif.dylib $BINARY_PLUGIN_PATH/imageformats cp $QT_PLUGIN_PATH/imageformats/libqjpeg.dylib $BINARY_PLUGIN_PATH/imageformats cp $QT_PLUGIN_PATH/sqldrivers/libqsqlite.dylib $BINARY_PLUGIN_PATH/sqldrivers + cp $QT_PLUGIN_PATH/platforms/libqcocoa.dylib $BINARY_PLUGIN_PATH/platforms cp -R $QT_FW_PATH/QtCore.framework $BINARY_FW_PATH cp -R $QT_FW_PATH/QtGui.framework $BINARY_FW_PATH cp -R $QT_FW_PATH/QtWidgets.framework $BINARY_FW_PATH @@ -89,6 +91,9 @@ if [ "$1" != "--without-qt" ] ; then install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_PLUGIN_PATH/imageformats/libqjpeg.dylib install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/sqldrivers/libqsqlite.dylib install_name_tool -change $QTSQL_LINK @executable_path/../Frameworks/$QTSQL $BINARY_PLUGIN_PATH/sqldrivers/libqsqlite.dylib + install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib + install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib + install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib QTCORE_LINK=$(otool -L $BINARY_FW_PATH/$QTGUI | grep QtCore | head -1 | cut -d"(" -f1 | cut -f2) install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTGUI @@ -96,6 +101,6 @@ if [ "$1" != "--without-qt" ] ; then install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTSQL install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTNETWORK - install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_FW_PATH/$QTGUI + install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTWIDGETS fi From c4040162407c71edeb8469b5746e0ff108f2f44a Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 31 Aug 2013 21:02:41 +0200 Subject: [PATCH 036/128] Adding QtPrintSupport dependency on Mac OS. --- mac_post_make.sh | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/mac_post_make.sh b/mac_post_make.sh index 8493b4e5..f296c674 100755 --- a/mac_post_make.sh +++ b/mac_post_make.sh @@ -45,6 +45,7 @@ if [ "$1" != "--without-qt" ] ; then cp -R $QT_FW_PATH/QtWidgets.framework $BINARY_FW_PATH cp -R $QT_FW_PATH/QtSql.framework $BINARY_FW_PATH cp -R $QT_FW_PATH/QtNetwork.framework $BINARY_FW_PATH + cp -R $QT_FW_PATH/QtPrintSupport.framework $BINARY_FW_PATH # remove debug versions rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug rm -f $APPLICATION/Contents/Frameworks/QtCore.framework/QtCore_debug.prl @@ -61,23 +62,29 @@ if [ "$1" != "--without-qt" ] ; then rm -f $APPLICATION/Contents/Frameworks/QtNetwork.framework/QtNetwork_debug rm -f $APPLICATION/Contents/Frameworks/QtNetwork.framework/QtNetwork_debug.prl rm -f $APPLICATION/Contents/Frameworks/QtNetwork.framework/Versions/5/QtNetwork_debug + rm -f $APPLICATION/Contents/Frameworks/QtPrintSupport.framework/QtPrintSupport_debug + rm -f $APPLICATION/Contents/Frameworks/QtPrintSupport.framework/QtPrintSupport_debug.prl + rm -f $APPLICATION/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport_debug - # redirect binary to use integrated frameworks + # redirect binary to use integrated frameworks QTCORE="QtCore.framework/Versions/5/QtCore" QTGUI="QtGui.framework/Versions/5/QtGui" QTWIDGETS="QtWidgets.framework/Versions/5/QtWidgets" QTSQL="QtSql.framework/Versions/5/QtSql" QTNETWORK="QtNetwork.framework/Versions/5/QtNetwork" + QTPRINT="QtPrintSupport.framework/Versions/5/QtPrintSupport" install_name_tool -id @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTCORE install_name_tool -id @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTGUI install_name_tool -id @executable_path/../Frameworks/$QTWIDGETS $BINARY_FW_PATH/$QTWIDGETS install_name_tool -id @executable_path/../Frameworks/$QTSQL $BINARY_FW_PATH/$QTSQL install_name_tool -id @executable_path/../Frameworks/$QTNETWORK $BINARY_FW_PATH/$QTNETWORK + install_name_tool -id @executable_path/../Frameworks/$QTPRINT $BINARY_FW_PATH/$QTPRINT QTCORE_LINK=$(otool -L $BINARY | grep QtCore | cut -d"(" -f1 | cut -f2) QTGUI_LINK=$(otool -L $BINARY | grep QtGui | cut -d"(" -f1 | cut -f2) QTWIDGETS_LINK=$(otool -L $BINARY | grep QtWidgets | cut -d"(" -f1 | cut -f2) QTSQL_LINK=$(otool -L $BINARY | grep QtSql | cut -d"(" -f1 | cut -f2) QTNETWORK_LINK=$(otool -L $BINARY | grep QtNetwork | cut -d"(" -f1 | cut -f2) + QTPRINT_LINK=$(otool -L $BINARY | grep QtPrintSupport | cut -d"(" -f1 | cut -f2) install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY @@ -94,13 +101,17 @@ if [ "$1" != "--without-qt" ] ; then install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib + install_name_tool -change $QTPRINT_LINK @executable_path/../Frameworks/$QTPRINT $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib QTCORE_LINK=$(otool -L $BINARY_FW_PATH/$QTGUI | grep QtCore | head -1 | cut -d"(" -f1 | cut -f2) install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTGUI install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTWIDGETS install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTSQL install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTNETWORK - - install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTWIDGETS + install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTPRINT + install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTWIDGETS + install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTPRINT + + install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTPRINT fi From 388843e1468df4270efb996284e23d0aa788ed47 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 31 Aug 2013 21:11:09 +0200 Subject: [PATCH 037/128] More Mac OS dependency fixes. --- mac_post_make.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mac_post_make.sh b/mac_post_make.sh index f296c674..b594f061 100755 --- a/mac_post_make.sh +++ b/mac_post_make.sh @@ -72,7 +72,7 @@ if [ "$1" != "--without-qt" ] ; then QTWIDGETS="QtWidgets.framework/Versions/5/QtWidgets" QTSQL="QtSql.framework/Versions/5/QtSql" QTNETWORK="QtNetwork.framework/Versions/5/QtNetwork" - QTPRINT="QtPrintSupport.framework/Versions/5/QtPrintSupport" + QTPRINT="QtPrintSupport.framework/Versions/5/QtPrintSupport" install_name_tool -id @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTCORE install_name_tool -id @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTGUI install_name_tool -id @executable_path/../Frameworks/$QTWIDGETS $BINARY_FW_PATH/$QTWIDGETS @@ -110,8 +110,10 @@ if [ "$1" != "--without-qt" ] ; then install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTNETWORK install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY_FW_PATH/$QTPRINT + QTGUI_LINK=$(otool -L $BINARY_FW_PATH/$QTWIDGETS | grep QtGui | cut -d"(" -f1 | cut -f2) install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTWIDGETS install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTPRINT - install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTGUI $BINARY_FW_PATH/$QTPRINT + QTWIDGETS_LINK=$(otool -L $BINARY_FW_PATH/$QTPRINT | grep QtWidgets | cut -d"(" -f1 | cut -f2) + install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY_FW_PATH/$QTPRINT fi From ec3c2eee847efa4c06d2400f34ec4813356d664f Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 31 Aug 2013 21:31:12 +0200 Subject: [PATCH 038/128] Plugin directory fix for Qt5 Mac OS platforms. --- src/pokerth.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pokerth.cpp b/src/pokerth.cpp index ab911e5f..4a96bd84 100755 --- a/src/pokerth.cpp +++ b/src/pokerth.cpp @@ -87,13 +87,6 @@ int main( int argc, char **argv ) socket_startup(); curl_global_init(CURL_GLOBAL_NOTHING); - /////// can be removed for non-qt-guis //////////// - SharedTools::QtSingleApplication a( "PokerTH", argc, argv ); - - if (a.sendMessage("Wake up!")) { - return 0; - } - #ifdef __APPLE__ // The following needs to be done directly after the application is created. QDir dir(QApplication::applicationDirPath()); @@ -102,6 +95,13 @@ int main( int argc, char **argv ) QApplication::setLibraryPaths(QStringList(dir.absolutePath())); #endif + /////// can be removed for non-qt-guis //////////// + SharedTools::QtSingleApplication a( "PokerTH", argc, argv ); + + if (a.sendMessage("Wake up!")) { + return 0; + } + //create defaultconfig ConfigFile *myConfig = new ConfigFile(argv[0], false); Log *myLog = new Log(myConfig); From f29efc2892243313dd6b40070062328ace7e4bfc Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 31 Aug 2013 21:37:06 +0200 Subject: [PATCH 039/128] More Mac OS fixes for Qt5. --- mac_post_make.sh | 2 +- src/pokerth.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mac_post_make.sh b/mac_post_make.sh index b594f061..f0aa99b1 100755 --- a/mac_post_make.sh +++ b/mac_post_make.sh @@ -84,7 +84,7 @@ if [ "$1" != "--without-qt" ] ; then QTWIDGETS_LINK=$(otool -L $BINARY | grep QtWidgets | cut -d"(" -f1 | cut -f2) QTSQL_LINK=$(otool -L $BINARY | grep QtSql | cut -d"(" -f1 | cut -f2) QTNETWORK_LINK=$(otool -L $BINARY | grep QtNetwork | cut -d"(" -f1 | cut -f2) - QTPRINT_LINK=$(otool -L $BINARY | grep QtPrintSupport | cut -d"(" -f1 | cut -f2) + QTPRINT_LINK=$(otool -L $BINARY_PLUGIN_PATH/platforms/libqcocoa.dylib | grep QtPrintSupport | cut -d"(" -f1 | cut -f2) install_name_tool -change $QTCORE_LINK @executable_path/../Frameworks/$QTCORE $BINARY install_name_tool -change $QTGUI_LINK @executable_path/../Frameworks/$QTGUI $BINARY install_name_tool -change $QTWIDGETS_LINK @executable_path/../Frameworks/$QTWIDGETS $BINARY diff --git a/src/pokerth.cpp b/src/pokerth.cpp index 4a96bd84..127ab125 100755 --- a/src/pokerth.cpp +++ b/src/pokerth.cpp @@ -89,7 +89,8 @@ int main( int argc, char **argv ) #ifdef __APPLE__ // The following needs to be done directly after the application is created. - QDir dir(QApplication::applicationDirPath()); + QDir dir(argv[0]); + dir.cdUp(); dir.cdUp(); dir.cd("plugins"); QApplication::setLibraryPaths(QStringList(dir.absolutePath())); From fc829553d2d3498cbf7b8d2ed2c36ea03049e114 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 31 Aug 2013 21:44:17 +0200 Subject: [PATCH 040/128] Clarify comment for Mac OS plugins. --- src/pokerth.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pokerth.cpp b/src/pokerth.cpp index 127ab125..6038f4b3 100755 --- a/src/pokerth.cpp +++ b/src/pokerth.cpp @@ -88,7 +88,7 @@ int main( int argc, char **argv ) curl_global_init(CURL_GLOBAL_NOTHING); #ifdef __APPLE__ - // The following needs to be done directly after the application is created. + // The following needs to be done before the application is created, otherwise loading platforms plugin fails. QDir dir(argv[0]); dir.cdUp(); dir.cdUp(); From 298aeaed4cd485fb03923971b9b3292d41b8fd5b Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 31 Aug 2013 23:42:44 +0200 Subject: [PATCH 041/128] Use Qt 5.1 features in cleaner server only if available. --- src/chatcleaner/cleanerserver.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/chatcleaner/cleanerserver.cpp b/src/chatcleaner/cleanerserver.cpp index 52ade363..13e7b62e 100644 --- a/src/chatcleaner/cleanerserver.cpp +++ b/src/chatcleaner/cleanerserver.cpp @@ -83,7 +83,9 @@ void CleanerServer::newCon() connect(tcpSocket, SIGNAL(readyRead()), this, SLOT(onRead())); connect(tcpSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(socketStateChanged(QAbstractSocket::SocketState))); blockConnection = true; +#if QT_VERSION >= 0x050100 tcpServer->pauseAccepting(); +#endif } } @@ -207,7 +209,9 @@ void CleanerServer::socketStateChanged(QAbstractSocket::SocketState state) qDebug() << "Socket state changed to: " << state; if (state == QAbstractSocket::UnconnectedState) { blockConnection = false; +#if QT_VERSION >= 0x050100 tcpServer->resumeAccepting(); +#endif } } From e008ef9ad50e71e364e96096d0fd3018c6d3a496 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 1 Sep 2013 18:09:15 +0200 Subject: [PATCH 042/128] Send lobby etc. notifications also to players in state "spectator waiting". --- src/net/common/servergame.cpp | 4 +-- src/net/common/servergamestate.cpp | 10 +++---- src/net/common/serverlobbythread.cpp | 40 ++++++++++++++-------------- src/net/sessiondata.h | 2 +- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/net/common/servergame.cpp b/src/net/common/servergame.cpp index 38e531e5..91d25ed0 100644 --- a/src/net/common/servergame.cpp +++ b/src/net/common/servergame.cpp @@ -628,7 +628,7 @@ ServerGame::GetPlayerIdList() const PlayerIdList ServerGame::GetSpectatorIdList() const { - return GetSessionManager().GetPlayerIdList(SessionData::Spectating); + return GetSessionManager().GetPlayerIdList(SessionData::Spectating | SessionData::SpectatorWaiting); } bool @@ -909,7 +909,7 @@ ServerGame::RemovePlayerData(boost::shared_ptr player, int reason, b netPlayerLeft->set_playerid(player->GetUniqueId()); netPlayerLeft->set_gameplayerleftreason(netReason); } - GetSessionManager().SendToAllSessions(GetLobbyThread().GetSender(), thisPlayerLeft, SessionData::Game); + GetSessionManager().SendToAllSessions(GetLobbyThread().GetSender(), thisPlayerLeft, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); GetState().NotifySessionRemoved(shared_from_this()); if (spectateOnly) { diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index 491937c4..b066b4d6 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -286,7 +286,7 @@ AbstractServerGameStateReceiving::ProcessPacket(boost::shared_ptr se netChat->set_playerid(session->GetPlayerData()->GetUniqueId()); netChat->set_chattype(ChatMessage::chatTypeGame); netChat->set_chattext(netChatRequest.chattext()); - server->SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating); + server->SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); chatSent = true; // Send the message to the chat cleaner bot for ranking games. @@ -461,9 +461,9 @@ AbstractServerGameStateReceiving::AcceptNewSession(boost::shared_ptr // Send "Player Joined"/"Spectator Joined" to other fully connected clients. if (spectateOnly) { - server->SendToAllPlayers(CreateNetPacketSpectatorJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game | SessionData::Spectating); + server->SendToAllPlayers(CreateNetPacketSpectatorJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } else { - server->SendToAllPlayers(CreateNetPacketPlayerJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game | SessionData::Spectating); + server->SendToAllPlayers(CreateNetPacketPlayerJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } // Accept session. @@ -647,7 +647,7 @@ ServerGameStateInit::SendStartEvent(ServerGame &server, bool fillWithComputerPla server.AddComputerPlayer(tmpPlayerData); // Send "Player Joined" to other fully connected clients. - server.SendToAllPlayers(CreateNetPacketPlayerJoined(server.GetId(), *tmpPlayerData), SessionData::Game | SessionData::Spectating); + server.SendToAllPlayers(CreateNetPacketPlayerJoined(server.GetId(), *tmpPlayerData), SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); // Notify lobby. server.GetLobbyThread().NotifyPlayerJoinedGame(server.GetId(), tmpPlayerData->GetUniqueId()); @@ -1420,7 +1420,7 @@ ServerGameStateHand::PerformRejoin(boost::shared_ptr server, boost:: PlayerIdChangedMessage *netIdChanged = packet->GetMsg()->mutable_playeridchangedmessage(); netIdChanged->set_oldplayerid(rejoinPlayer->getMyUniqueID()); netIdChanged->set_newplayerid(session->GetPlayerData()->GetUniqueId()); - server->SendToAllButOnePlayers(packet, session->GetId(), SessionData::Game | SessionData::Spectating); + server->SendToAllButOnePlayers(packet, session->GetId(), SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); // Update the dealer, if necessary. curGame.replaceDealer(rejoinPlayer->getMyUniqueID(), session->GetPlayerData()->GetUniqueId()); diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 9df8d104..4cb8cfbf 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -372,7 +372,7 @@ ServerLobbyThread::MoveSessionToGame(boost::shared_ptr game, boost:: // Remove session from the lobby. m_sessionManager.RemoveSession(session->GetId()); // Session is now in game state. - session->SetState(spectateOnly ? SessionData::Spectating: SessionData::Game); + session->SetState(spectateOnly ? SessionData::Spectating : SessionData::Game); // Store it in the list of game sessions. m_gameSessionManager.AddSession(session); // Set the game id of the session. @@ -426,7 +426,7 @@ ServerLobbyThread::NotifyPlayerJoinedLobby(unsigned playerId) { boost::shared_ptr notify = CreateNetPacketPlayerListNew(playerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } void @@ -434,7 +434,7 @@ ServerLobbyThread::NotifyPlayerLeftLobby(unsigned playerId) { boost::shared_ptr notify = CreateNetPacketPlayerListLeft(playerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), notify, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } void @@ -448,7 +448,7 @@ ServerLobbyThread::NotifyPlayerJoinedGame(unsigned gameId, unsigned playerId) netListMsg->set_playerid(playerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } void @@ -462,7 +462,7 @@ ServerLobbyThread::NotifyPlayerLeftGame(unsigned gameId, unsigned playerId) netListMsg->set_playerid(playerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } void @@ -476,7 +476,7 @@ ServerLobbyThread::NotifySpectatorJoinedGame(unsigned gameId, unsigned playerId) netListMsg->set_playerid(playerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } void @@ -490,7 +490,7 @@ ServerLobbyThread::NotifySpectatorLeftGame(unsigned gameId, unsigned playerId) netListMsg->set_playerid(playerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } void @@ -505,7 +505,7 @@ ServerLobbyThread::NotifyGameAdminChanged(unsigned gameId, unsigned newAdminPlay netListMsg->set_newadminplayerid(newAdminPlayerId); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } void @@ -513,7 +513,7 @@ ServerLobbyThread::NotifyStartingGame(unsigned gameId) { boost::shared_ptr packet = CreateNetPacketGameListUpdate(gameId, GAME_MODE_STARTED); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } void @@ -521,7 +521,7 @@ ServerLobbyThread::NotifyReopeningGame(unsigned gameId) { boost::shared_ptr packet = CreateNetPacketGameListUpdate(gameId, GAME_MODE_CREATED); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } void @@ -649,7 +649,7 @@ ServerLobbyThread::SendGlobalChat(const string &message) netChat->set_chattext(message); m_sessionManager.SendToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } void @@ -661,7 +661,7 @@ ServerLobbyThread::SendGlobalMsgBox(const string &message) netDialog->set_notificationtext(message); m_sessionManager.SendToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } void @@ -674,7 +674,7 @@ ServerLobbyThread::SendChatBotMsg(const std::string &message) netChat->set_chattext(message); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); GetIrcBotCallback().SignalLobbyMessage( 0, @@ -694,7 +694,7 @@ ServerLobbyThread::SendChatBotMsg(unsigned gameId, const std::string &message) GameMap::const_iterator pos = m_gameMap.find(gameId); if (pos != m_gameMap.end()) { - pos->second->SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating); + pos->second->SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } } @@ -1415,7 +1415,7 @@ ServerLobbyThread::HandleNetPacketChatRequest(boost::shared_ptr ses netChat->set_chattext(chatMsg); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); // Send the message to the chat cleaner bot. m_chatCleanerManager->HandleLobbyChatText( @@ -1481,7 +1481,7 @@ ServerLobbyThread::HandleNetPacketRejectGameInvitation(boost::shared_ptrset_playerid(tmpPlayerId); netReject->set_playerrejectreason(reject.myrejectreason()); - game.SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating); + game.SendToAllPlayers(packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } } } @@ -1902,7 +1902,7 @@ ServerLobbyThread::InternalAddGame(boost::shared_ptr game) m_gameMap.insert(GameMap::value_type(game->GetId(), game)); // Notify all players. m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), CreateNetPacketGameListNew(*game), SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), CreateNetPacketGameListNew(*game), SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), CreateNetPacketGameListNew(*game), SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); { boost::mutex::scoped_lock lock(m_statMutex); @@ -1934,7 +1934,7 @@ ServerLobbyThread::InternalRemoveGame(boost::shared_ptr game) // Notify all players. boost::shared_ptr packet = CreateNetPacketGameListUpdate(game->GetId(), GAME_MODE_CLOSED); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } void @@ -2098,7 +2098,7 @@ ServerLobbyThread::SendPlayerList(boost::shared_ptr s) { // Retrieve all player ids. PlayerIdList idList(m_sessionManager.GetPlayerIdList(SessionData::Established)); - PlayerIdList gameIdList(m_gameSessionManager.GetPlayerIdList(SessionData::Game | SessionData::Spectating)); + PlayerIdList gameIdList(m_gameSessionManager.GetPlayerIdList(SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting)); idList.splice(idList.begin(), gameIdList); // Send all player ids to client. PlayerIdList::const_iterator i = idList.begin(); @@ -2152,7 +2152,7 @@ ServerLobbyThread::BroadcastStatisticsUpdate(const ServerStats &stats) data->set_statisticsvalue(m_sessionManager.GetRawSessionCount() + m_gameSessionManager.GetRawSessionCount()); m_sessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Established); - m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating); + m_gameSessionManager.SendLobbyMsgToAllSessions(GetSender(), packet, SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); } } diff --git a/src/net/sessiondata.h b/src/net/sessiondata.h index 17cd25c5..d0a01c7f 100644 --- a/src/net/sessiondata.h +++ b/src/net/sessiondata.h @@ -58,7 +58,7 @@ class ServerGame; class SessionData : public boost::enable_shared_from_this { public: - enum State { Init = 1, ReceivingAvatar = 2, Established = 4, Game = 8, Spectating = 16, GameWaiting = 32, SpectatorWaiting = 64, Closed = 128 }; + enum State { Init = 1, ReceivingAvatar = 2, Established = 4, Game = 8, Spectating = 16, SpectatorWaiting = 32, Closed = 128 }; SessionData(boost::shared_ptr sock, SessionId id, SessionDataCallback &cb, boost::asio::io_service &ioService); ~SessionData(); From eae6a6fae702578d777f6aa06e6f0323336f7be5 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 1 Sep 2013 23:43:59 +0200 Subject: [PATCH 043/128] Trying to fix missing spectator left message when connection is closed. --- src/net/common/serverlobbythread.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 4cb8cfbf..68b7c9f3 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -390,12 +390,12 @@ ServerLobbyThread::CloseSession(boost::shared_ptr session) if (session && session->GetState() != SessionData::Closed) { // Make this call reentrant. LOG_VERBOSE("Closing session #" << session->GetId() << "."); - session->SetState(SessionData::Closed); - boost::shared_ptr tmpGame = session->GetGame(); if (tmpGame) { tmpGame->RemoveSession(session, NTF_NET_INTERNAL); } + session->SetGame(boost::shared_ptr()); + session->SetState(SessionData::Closed); m_sessionManager.RemoveSession(session->GetId()); m_gameSessionManager.RemoveSession(session->GetId()); @@ -404,7 +404,7 @@ ServerLobbyThread::CloseSession(boost::shared_ptr session) NotifyPlayerLeftLobby(session->GetPlayerData()->GetUniqueId()); // Update stats (if needed). UpdateStatisticsNumberOfPlayers(); - session->SetGame(boost::shared_ptr()); + // Ignore error when shutting down the socket. boost::system::error_code ec; session->GetAsioSocket()->shutdown(boost::asio::ip::tcp::socket::shutdown_receive, ec); From eb571a86403131d63595cc110cbad77ab49b879c Mon Sep 17 00:00:00 2001 From: lotodore Date: Mon, 2 Sep 2013 00:37:02 +0200 Subject: [PATCH 044/128] Automatically close games if only spectators are left. --- src/net/common/serverlobbythread.cpp | 2 +- src/net/common/sessionmanager.cpp | 30 +++++++++++++++++++--------- src/net/sessionmanager.h | 7 +++---- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 68b7c9f3..21a16d46 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -1827,7 +1827,7 @@ ServerLobbyThread::TimerRemoveGame(const boost::system::error_code &ec) GameMap::iterator next = i; ++next; boost::shared_ptr tmpGame = i->second; - if (!tmpGame->GetSessionManager().HasSessions()) + if (!tmpGame->GetSessionManager().HasSessionWithState(SessionData::Game)) InternalRemoveGame(tmpGame); // This will delete the game. i = next; } diff --git a/src/net/common/sessionmanager.cpp b/src/net/common/sessionmanager.cpp index c77ee161..4d711318 100644 --- a/src/net/common/sessionmanager.cpp +++ b/src/net/common/sessionmanager.cpp @@ -46,13 +46,6 @@ SessionManager::~SessionManager() Clear(); } -bool -SessionManager::HasSessions() const -{ - boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex); - return !m_sessionMap.empty(); -} - void SessionManager::AddSession(boost::shared_ptr session) { @@ -295,14 +288,14 @@ SessionManager::Clear() } unsigned -SessionManager::GetRawSessionCount() +SessionManager::GetRawSessionCount() const { boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex); return (unsigned)m_sessionMap.size(); } unsigned -SessionManager::GetSessionCountWithState(int state) +SessionManager::GetSessionCountWithState(int state) const { unsigned counter = 0; boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex); @@ -318,6 +311,25 @@ SessionManager::GetSessionCountWithState(int state) return counter; } +bool +SessionManager::HasSessionWithState(int state) const +{ + bool retVal = false; + boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex); + + SessionMap::const_iterator i = m_sessionMap.begin(); + SessionMap::const_iterator end = m_sessionMap.end(); + + while (i != end) { + if ((i->second->GetState() & state) != 0) { + retVal = true; + break; + } + ++i; + } + return retVal; +} + void SessionManager::SendToAllSessions(SenderHelper &sender, boost::shared_ptr packet, int state) { diff --git a/src/net/sessionmanager.h b/src/net/sessionmanager.h index 81ff5916..ac3cd3df 100644 --- a/src/net/sessionmanager.h +++ b/src/net/sessionmanager.h @@ -50,8 +50,6 @@ public: SessionManager(); virtual ~SessionManager(); - bool HasSessions() const; - void AddSession(boost::shared_ptr sessionData); void SetSessionPlayerData(SessionId session, boost::shared_ptr playerData); bool RemoveSession(SessionId session); @@ -72,8 +70,9 @@ public: void ResetAllReadyFlags(); void Clear(); - unsigned GetRawSessionCount(); - unsigned GetSessionCountWithState(int state); + unsigned GetRawSessionCount() const; + unsigned GetSessionCountWithState(int state) const; + bool HasSessionWithState(int state) const; void SendToAllSessions(SenderHelper &sender, boost::shared_ptr packet, int state); void SendLobbyMsgToAllSessions(SenderHelper &sender, boost::shared_ptr packet, int state); From 16b2a9762d9e9aad677c2074b97ab7675ad4cbfb Mon Sep 17 00:00:00 2001 From: doitux Date: Tue, 3 Sep 2013 13:00:56 +0200 Subject: [PATCH 045/128] possible fix for no-close-button in gamelobbydialog --- src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp | 2 +- src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp b/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp index 316f3a0c..79d95324 100755 --- a/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp +++ b/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp @@ -35,7 +35,7 @@ #ifdef ANDROID #ifndef ANDROID_TEST - #include "QtGui/5.1.0/QtGui/qpa/qplatformnativeinterface.h" + #include "QtGui/5.1.1/QtGui/qpa/qplatformnativeinterface.h" #include #endif #endif diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 152d48bf..2e23d6c8 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -53,7 +53,7 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) setWindowModality(Qt::ApplicationModal); setWindowFlags(Qt::WindowSystemMenuHint | Qt::CustomizeWindowHint | Qt::Dialog); #elif _WIN32 - setWindowFlags(Qt::Dialog | Qt::WindowMinimizeButtonHint); +// setWindowFlags(Qt::Dialog | Qt::WindowMinimizeButtonHint); #endif setupUi(this); From f8a2718e9777e185c0398602493101ad1bb22a13 Mon Sep 17 00:00:00 2001 From: doitux Date: Mon, 9 Sep 2013 10:36:27 +0200 Subject: [PATCH 046/128] some specatator list fixes - debug output removed --- .../gamelobbydialog/gamelobbydialogimpl.cpp | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 2e23d6c8..34783226 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -565,6 +565,15 @@ void gameLobbyDialogImpl::gameSelected(const QModelIndex &index) ++i; } + treeWidget_connectedSpectators->clear(); + PlayerIdList::const_iterator s = info.spectators.begin(); + PlayerIdList::const_iterator s_end = info.spectators.end(); + while (s != s_end) { + PlayerInfo playerInfo(mySession->getClientPlayerInfo(*s)); + addConnectedSpectator(*s, QString::fromUtf8(playerInfo.playerName.c_str())); + ++s; + } + #ifdef __APPLE__ // Dirty workaround for a Qt redraw bug on Mac OS. treeWidget_connectedPlayers->setFocus(); @@ -792,7 +801,7 @@ void gameLobbyDialogImpl::gameAddPlayer(unsigned gameId, unsigned playerId) void gameLobbyDialogImpl::gameAddSpectator(unsigned, unsigned) { - qDebug("jojo GameADDSpecator"); + } void gameLobbyDialogImpl::gameRemovePlayer(unsigned gameId, unsigned playerId) @@ -833,7 +842,7 @@ void gameLobbyDialogImpl::gameRemovePlayer(unsigned gameId, unsigned playerId) void gameLobbyDialogImpl::gameRemoveSpectator(unsigned, unsigned) { - qDebug("jojo GameRemoveSpecator"); + } void gameLobbyDialogImpl::updateStats(ServerStats /*stats*/) @@ -863,6 +872,7 @@ void gameLobbyDialogImpl::clearDialog() myGameListSortFilterProxyModel->clear(); treeView_GameList->show(); treeWidget_connectedPlayers->clear(); + treeWidget_connectedSpectators->clear(); pushButton_Leave->hide(); pushButton_Kick->hide(); @@ -987,12 +997,9 @@ void gameLobbyDialogImpl::blinkingStartButtonAnimation() void gameLobbyDialogImpl::joinedNetworkGame(unsigned playerId, QString playerName, bool isGameAdmin) { - // Update dialog inGame = true; joinedGameDialogUpdate(); - - myPlayerId = playerId; isGameAdministrator = isGameAdmin; addConnectedPlayer(playerId, playerName, isGameAdmin); @@ -1043,7 +1050,6 @@ void gameLobbyDialogImpl::addConnectedPlayer(unsigned playerId, QString playerNa void gameLobbyDialogImpl::addConnectedSpectator(unsigned spectatorId, QString spectatorName) { - qDebug("JOJO add spect"); QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget_connectedSpectators, 0); item->setData(0, Qt::UserRole, spectatorId); item->setData(0, Qt::DisplayRole, spectatorName); @@ -1107,7 +1113,6 @@ void gameLobbyDialogImpl::updatePlayer(unsigned playerId, QString newPlayerName) void gameLobbyDialogImpl::removePlayer(unsigned playerId, QString) { - qDebug("JOJO remove player"); QTreeWidgetItemIterator it(treeWidget_connectedPlayers); while (*it) { if ((*it)->data(0, Qt::UserRole) == playerId) { @@ -1122,7 +1127,6 @@ void gameLobbyDialogImpl::removePlayer(unsigned playerId, QString) void gameLobbyDialogImpl::removeSpectator(unsigned spectatorId, QString) { - qDebug("JOJO remove spect"); QTreeWidgetItemIterator it(treeWidget_connectedSpectators); while (*it) { if ((*it)->data(0, Qt::UserRole) == spectatorId) { @@ -1267,7 +1271,6 @@ void gameLobbyDialogImpl::joinedGameDialogUpdate() label_StartCash->setText(QString("%L1").arg(info.data.startMoney)); updateDialogBlinds(info.data); label_GameTiming->setText(QString::number(info.data.playerActionTimeoutSec)+" "+tr("sec (action)")+"\n"+QString::number(info.data.delayBetweenHandsSec)+" "+tr("sec (hand delay)")); - } void gameLobbyDialogImpl::leftGameDialogUpdate() @@ -1291,6 +1294,7 @@ void gameLobbyDialogImpl::leftGameDialogUpdate() label_GameTiming->setText(""); treeWidget_connectedPlayers->clear(); + treeWidget_connectedSpectators->clear(); pushButton_StartGame->hide(); pushButton_Leave->hide(); pushButton_Kick->hide(); From ae3def58c5b303f0cf3a3c74aef208d86ecb9609 Mon Sep 17 00:00:00 2001 From: doitux Date: Sat, 14 Sep 2013 14:39:14 +0200 Subject: [PATCH 047/128] possible fix for #136 (The lobby "display idle players" feature does not work after playing a game) --- .../gamelobbydialog/gamelobbydialogimpl.cpp | 72 ++++++++++++------- 1 file changed, 46 insertions(+), 26 deletions(-) diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 34783226..a9d25ecf 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -475,7 +475,6 @@ void gameLobbyDialogImpl::refresh(int actionID) treeView_GameList->setColumnWidth(3,25); treeView_GameList->setColumnWidth(4,25); treeView_GameList->setColumnWidth(5,30); - #endif QStringList headerList2; @@ -594,6 +593,16 @@ void gameLobbyDialogImpl::updateGameItem(QList itemList, unsign PlayerIdList::const_iterator end = info.players.end(); while (i != end) { + //mark players as active + int it1 = 0; + while (myNickListModel->item(it1)) { + if (myNickListModel->item(it1, 0)->data(Qt::UserRole) == *i) { + myNickListModel->item(it1, 0)->setData("active", 34); + break; + } + ++it1; + } + if(myPlayerId == *i) { itemList.at(0)->setData( "MeInThisGame", 16); itemList.at(0)->setBackground(QBrush(QColor(0, 255, 0, 127))); @@ -677,6 +686,21 @@ void gameLobbyDialogImpl::updateGameItem(QList itemList, unsign treeView_GameList->sortByColumn(myConfig->readConfigInt("DlgGameLobbyGameListSortingSection"), (Qt::SortOrder)myConfig->readConfigInt("DlgGameLobbyGameListSortingOrder") ); refreshGameStats(); + + //mark spactators as active + PlayerIdList::const_iterator s = info.spectators.begin(); + PlayerIdList::const_iterator s_end = info.spectators.end(); + + while (s != s_end) { + int it2 = 0; + while (myNickListModel->item(it2)) { + if (myNickListModel->item(it2, 0)->data(Qt::UserRole) == *s) { + myNickListModel->item(it2, 0)->setData("active", 34); + break; + } + ++it2; + } + } } void gameLobbyDialogImpl::addGame(unsigned gameId) @@ -693,7 +717,6 @@ void gameLobbyDialogImpl::addGame(unsigned gameId) myGameListModel->appendRow(itemList); updateGameItem(itemList, gameId); - } void gameLobbyDialogImpl::updateGameMode(unsigned gameId, int /*newMode*/) @@ -781,14 +804,15 @@ void gameLobbyDialogImpl::gameAddPlayer(unsigned gameId, unsigned playerId) if (myGameListModel->item(it, 0)->data(Qt::UserRole) == gameId) { QList itemList; itemList << myGameListModel->item(it, 0) << myGameListModel->item(it, 1) << myGameListModel->item(it, 2) << myGameListModel->item(it, 3) << myGameListModel->item(it, 4) << myGameListModel->item(it, 5); - updateGameItem(itemList, gameId); break; } it++; } +} - //mark player as active +void gameLobbyDialogImpl::gameAddSpectator(unsigned /*gameId*/, unsigned playerId) +{ int it1 = 0; while (myNickListModel->item(it1)) { if (myNickListModel->item(it1, 0)->data(Qt::UserRole) == playerId) { @@ -799,11 +823,6 @@ void gameLobbyDialogImpl::gameAddPlayer(unsigned gameId, unsigned playerId) } } -void gameLobbyDialogImpl::gameAddSpectator(unsigned, unsigned) -{ - -} - void gameLobbyDialogImpl::gameRemovePlayer(unsigned gameId, unsigned playerId) { if (!inGame) { @@ -840,9 +859,17 @@ void gameLobbyDialogImpl::gameRemovePlayer(unsigned gameId, unsigned playerId) } } -void gameLobbyDialogImpl::gameRemoveSpectator(unsigned, unsigned) +void gameLobbyDialogImpl::gameRemoveSpectator(unsigned, unsigned playerId) { - + //mark spectator as idle again + int it1 = 0; + while (myNickListModel->item(it1)) { + if (myNickListModel->item(it1, 0)->data(Qt::UserRole) == playerId) { + myNickListModel->item(it1, 0)->setData("idle", 34); + break; + } + ++it1; + } } void gameLobbyDialogImpl::updateStats(ServerStats /*stats*/) @@ -1093,12 +1120,13 @@ void gameLobbyDialogImpl::updatePlayer(unsigned playerId, QString newPlayerName) myNickListModel->item(it1, 0)->setToolTip(getFullCountryString(countryString.toUpper())); } - unsigned gameIdOfPlayer = mySession->getGameIdOfPlayer(playerId); - if(gameIdOfPlayer) { - myNickListModel->item(it1, 0)->setData("active", 34); - } else { - myNickListModel->item(it1, 0)->setData("idle", 34); - } +// unsigned gameIdOfPlayer = mySession->getGameIdOfPlayer(playerId); +// if(gameIdOfPlayer) { +// myNickListModel->item(it1, 0)->setData("active", 34); +// } else { +// qDebug("updateplayer idle"); +// myNickListModel->item(it1, 0)->setData("idle", 34); +// } break; } @@ -1167,15 +1195,7 @@ void gameLobbyDialogImpl::playerJoinedLobby(unsigned playerId, QString /*playerN item->setIcon(QIcon(QString(":/cflags/cflags/%1.png").arg(countryString))); item->setToolTip(getFullCountryString(countryString.toUpper())); } - - unsigned gameIdOfPlayer = mySession->getGameIdOfPlayer(playerId); - if(gameIdOfPlayer) { - item->setData("active", 34); - } else { - item->setData("idle", 34); - } - - + item->setData("idle", 34); myNickListModel->appendRow(item); refreshPlayerStats(); From 196c4b2e0a5e67bb2367ced25b85a19bbc4265ed Mon Sep 17 00:00:00 2001 From: floty Date: Sun, 15 Sep 2013 16:10:43 +0200 Subject: [PATCH 048/128] delete waste code fpr cppcheck --- src/engine/local_engine/cardsvalue.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/engine/local_engine/cardsvalue.cpp b/src/engine/local_engine/cardsvalue.cpp index edb72451..e309d95f 100755 --- a/src/engine/local_engine/cardsvalue.cpp +++ b/src/engine/local_engine/cardsvalue.cpp @@ -1142,11 +1142,9 @@ std::string CardsValue::determineHandName(int myCardsValueInt, PlayerList active // 4.there are still same hands if(equal) { different = false; - equal = false; // third kicker? for(it = sameHandCardsValueInt.begin(); it != sameHandCardsValueInt.end(); ) { if((*it) == myCardsValueInt) { - equal = true; ++it; } else { different = true; From 8e3943275494179ad0eae28f4145e40567d09729 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 15 Sep 2013 22:54:45 +0200 Subject: [PATCH 049/128] Adding websocket server code, so that a gateway is no longer required. Still kind of untested. Requires websocketpp. --- pokerth_lib.pro | 17 +++- src/net/chatcleanermanager.h | 4 +- src/net/clientcontext.h | 6 -- src/net/common/chatcleanermanager.cpp | 8 +- src/net/common/clientthread.cpp | 1 + src/net/common/receivebuffer.cpp | 111 +------------------------- src/net/common/sendbuffer.cpp | 65 +-------------- src/net/common/senderhelper.cpp | 23 ++---- src/net/common/serveraccepthelper.cpp | 39 --------- src/net/common/serverlobbythread.cpp | 85 +++++++++++--------- src/net/common/servermanager.cpp | 6 ++ src/net/common/sessiondata.cpp | 58 +++++++++++++- src/net/common/sessionmanager.cpp | 4 +- src/net/receivebuffer.h | 24 ++---- src/net/sendbuffer.h | 68 +++------------- src/net/senderhelper.h | 3 - src/net/serveraccepthelper.h | 15 +--- src/net/serverlobbythread.h | 5 +- src/net/sessiondata.h | 9 ++- 19 files changed, 175 insertions(+), 376 deletions(-) delete mode 100644 src/net/common/serveraccepthelper.cpp diff --git a/pokerth_lib.pro b/pokerth_lib.pro index 9a30d60c..5fdcd453 100644 --- a/pokerth_lib.pro +++ b/pokerth_lib.pro @@ -74,7 +74,9 @@ HEADERS += \ src/net/senderhelper.h \ src/net/sendercallback.h \ src/net/serverexception.h \ + src/net/serveracceptinterface.h \ src/net/serveraccepthelper.h \ + src/net/serveracceptwebhelper.h \ src/net/servergame.h \ src/net/servergamestate.h \ src/net/serverlobbythread.h \ @@ -127,9 +129,15 @@ HEADERS += \ src/gui/qttoolsinterface.h \ src/gui/generic/serverguiwrapper.h \ src/net/receivebuffer.h \ + src/net/asioreceivebuffer.h \ + src/net/webreceivebuffer.h \ src/net/sendbuffer.h \ + src/net/asiosendbuffer.h \ + src/net/websendbuffer.h \ src/net/servermanagerfactory.h \ - src/net/uploadcallback.h + src/net/uploadcallback.h \ + src/net/websocket_defs.h \ + src/net/websocketdata.h SOURCES += \ src/engine/game.cpp \ @@ -178,7 +186,8 @@ SOURCES += \ src/net/common/senderhelper.cpp \ src/net/common/sendercallback.cpp \ src/net/common/serverexception.cpp \ - src/net/common/serveraccepthelper.cpp \ + src/net/common/serveraccepinterface.cpp \ + src/net/common/serveracceptwebhelper.cpp \ src/net/common/servergame.cpp \ src/net/common/servergamestate.cpp \ src/net/common/serverlobbythread.cpp \ @@ -202,7 +211,11 @@ SOURCES += \ src/gui/generic/serverguiwrapper.cpp \ src/gui/qttoolsinterface.cpp \ src/net/common/sendbuffer.cpp \ + src/net/common/asiosendbuffer.cpp \ + src/net/common/websendbuffer.cpp \ src/net/common/receivebuffer.cpp \ + src/net/common/asioreceivebuffer.cpp \ + src/net/common/webreceivebuffer.cpp \ src/net/common/uploadcallback.cpp !android:!android_test{ diff --git a/src/net/chatcleanermanager.h b/src/net/chatcleanermanager.h index 6a14d3d3..811f9d65 100644 --- a/src/net/chatcleanermanager.h +++ b/src/net/chatcleanermanager.h @@ -42,7 +42,7 @@ #define MAX_CLEANER_PACKET_SIZE 512 #define CLEANER_PROTOCOL_VERSION 2 -class SendBuffer; +class AsioSendBuffer; class ChatCleanerMessage; class ChatCleanerManager : public boost::enable_shared_from_this @@ -73,7 +73,7 @@ private: boost::shared_ptr m_ioService; boost::shared_ptr m_resolver; boost::shared_ptr m_socket; - boost::shared_ptr m_sendManager; + boost::shared_ptr m_sendManager; bool m_connected; unsigned m_curRequestId; diff --git a/src/net/clientcontext.h b/src/net/clientcontext.h index f96ab53d..5040093c 100644 --- a/src/net/clientcontext.h +++ b/src/net/clientcontext.h @@ -35,7 +35,6 @@ #include -#include #include #include @@ -135,10 +134,6 @@ public: m_hasSubscribedLobbyMsg = setSubscribe; } - ReceiveBuffer &GetReceiveBuffer() { - return m_receiveBuffer; - } - const std::string &GetSessionGuid() const { return m_sessionGuid; } @@ -164,7 +159,6 @@ private: std::string m_avatarFile; std::string m_cacheDir; bool m_hasSubscribedLobbyMsg; - ReceiveBuffer m_receiveBuffer; std::string m_sessionGuid; }; diff --git a/src/net/common/chatcleanermanager.cpp b/src/net/common/chatcleanermanager.cpp index fb6ba8fe..73a96268 100644 --- a/src/net/common/chatcleanermanager.cpp +++ b/src/net/common/chatcleanermanager.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * PokerTH - The open source texas holdem engine * - * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU Affero General Public License as * @@ -30,7 +30,7 @@ *****************************************************************************/ #include -#include +#include #include #include #include @@ -49,7 +49,7 @@ ChatCleanerManager::ChatCleanerManager(ChatCleanerCallback &cb, boost::shared_pt m_resolver.reset( new boost::asio::ip::tcp::resolver(*m_ioService)); m_sendManager.reset( - new SendBuffer); + new AsioSendBuffer); } ChatCleanerManager::~ChatCleanerManager() @@ -273,7 +273,7 @@ ChatCleanerManager::SendMessageToServer(ChatCleanerMessage &msg) google::protobuf::uint8 *buf = new google::protobuf::uint8[packetSize + CLEANER_NET_HEADER_SIZE]; *((uint32_t *)buf) = htonl(packetSize); msg.SerializeWithCachedSizesToArray(&buf[CLEANER_NET_HEADER_SIZE]); - SendBuffer::EncodeToBuf(buf, packetSize + CLEANER_NET_HEADER_SIZE, m_sendManager.get()); + m_sendManager->EncodeToBuf(NULL, buf, packetSize + CLEANER_NET_HEADER_SIZE); delete[] buf; m_sendManager->AsyncSendNextPacket(m_socket); diff --git a/src/net/common/clientthread.cpp b/src/net/common/clientthread.cpp index e2530261..e396fbd0 100644 --- a/src/net/common/clientthread.cpp +++ b/src/net/common/clientthread.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include diff --git a/src/net/common/receivebuffer.cpp b/src/net/common/receivebuffer.cpp index ae652fc4..f52566d6 100644 --- a/src/net/common/receivebuffer.cpp +++ b/src/net/common/receivebuffer.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * PokerTH - The open source texas holdem engine * - * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU Affero General Public License as * @@ -29,118 +29,11 @@ * as that of the covered work. * *****************************************************************************/ -#include -#include - #include -#include -#include -#include - -using namespace std; NetPacketValidator ReceiveBuffer::validator; -ReceiveBuffer::ReceiveBuffer() - : recvBufUsed(0) +ReceiveBuffer::~ReceiveBuffer() { - recvBuf[0] = 0; -} - -void -ReceiveBuffer::StartAsyncRead(boost::shared_ptr session) -{ - session->GetAsioSocket()->async_read_some( - boost::asio::buffer(recvBuf + recvBufUsed, RECV_BUF_SIZE - recvBufUsed), - boost::bind( - &ReceiveBuffer::HandleRead, - shared_from_this(), - session, - boost::asio::placeholders::error, - boost::asio::placeholders::bytes_transferred)); -} - -void -ReceiveBuffer::HandleRead(boost::shared_ptr session, const boost::system::error_code &error, size_t bytesRead) -{ - if (error != boost::asio::error::operation_aborted) { - try { - if (!error) { - recvBufUsed += bytesRead; - ScanPackets(session); - ProcessPackets(session); - StartAsyncRead(session); - } else if (error == boost::asio::error::interrupted || error == boost::asio::error::try_again) { - LOG_ERROR("Session " << session->GetId() << " - recv interrupted: " << error); - StartAsyncRead(session); - } else { - LOG_ERROR("Session " << session->GetId() << " - Connection closed: " << error); - // On error: Close this session. - session->Close(); - } - } catch (const exception &e) { - LOG_ERROR("Session " << session->GetId() << " - unhandled exception in HandleRead: " << e.what()); - throw; - } - } -} - -void -ReceiveBuffer::ScanPackets(boost::shared_ptr session) -{ - bool dataAvailable = true; - do { - boost::shared_ptr tmpPacket; - // This is necessary, because we use TCP. - // Packets may be received in multiple chunks or - // several packets may be received at once. - if (recvBufUsed >= NET_HEADER_SIZE) { - // Read the size of the packet (first 4 bytes in network byte order). - uint32_t nativeVal; - memcpy(&nativeVal, &recvBuf[0], sizeof(uint32_t)); - size_t packetSize = ntohl(nativeVal); - if (packetSize > MAX_PACKET_SIZE) { - recvBufUsed = 0; - LOG_ERROR("Session " << session->GetId() << " - Invalid packet size: " << packetSize); - } else if (recvBufUsed >= packetSize + NET_HEADER_SIZE) { - try { - tmpPacket = NetPacket::Create(&recvBuf[NET_HEADER_SIZE], packetSize); - if (tmpPacket) { - recvBufUsed -= (packetSize + NET_HEADER_SIZE); - if (recvBufUsed) { - memmove(recvBuf, recvBuf + packetSize + NET_HEADER_SIZE, recvBufUsed); - } - } - } catch (const exception &e) { - // Reset buffer on error. - recvBufUsed = 0; - LOG_ERROR("Session " << session->GetId() << " - " << e.what()); - } - } - } - if (tmpPacket) { - if (validator.IsValidPacket(*tmpPacket)) { - receivedPackets.push_back(tmpPacket); - } else { - LOG_ERROR("Session " << session->GetId() << " - Invalid packet: " << tmpPacket->GetMsg()->messagetype()); - } - } else { - dataAvailable = false; - } - } while(dataAvailable); -} - -void -ReceiveBuffer::ProcessPackets(boost::shared_ptr session) -{ - while (!receivedPackets.empty()) { - boost::shared_ptr p = receivedPackets.front(); - receivedPackets.pop_front(); - session->HandlePacket(p); - } - if (recvBufUsed >= RECV_BUF_SIZE) { - LOG_ERROR("Session " << session->GetId() << " - Receive buf full: " << recvBufUsed); - recvBufUsed = 0; - } } diff --git a/src/net/common/sendbuffer.cpp b/src/net/common/sendbuffer.cpp index 9eb66b05..112bfd37 100644 --- a/src/net/common/sendbuffer.cpp +++ b/src/net/common/sendbuffer.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * PokerTH - The open source texas holdem engine * - * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU Affero General Public License as * @@ -29,75 +29,12 @@ * as that of the covered work. * *****************************************************************************/ -#include -#include - #include -#include using namespace std; -SendBuffer::SendBuffer() - : sendBuf(NULL), curWriteBuf(NULL), sendBufAllocated(0), sendBufUsed(0), - curWriteBufAllocated(0), curWriteBufUsed(0), closeAfterSend(false) -{ -} - SendBuffer::~SendBuffer() { - free(sendBuf); - free(curWriteBuf); -} - -void -SendBuffer::HandleWrite(boost::shared_ptr socket, const boost::system::error_code &error) -{ - if (!error) { - // Successfully sent the data. - boost::mutex::scoped_lock lock(dataMutex); - curWriteBufUsed = 0; - // Send more data, if available. - AsyncSendNextPacket(socket); - } -} - -void -SendBuffer::AsyncSendNextPacket(boost::shared_ptr socket) -{ - if (!curWriteBufUsed) { - // Swap buffers and send data. - boost::swap(curWriteBuf, sendBuf); - boost::swap(curWriteBufAllocated, sendBufAllocated); - boost::swap(curWriteBufUsed, sendBufUsed); - if (curWriteBufUsed) { - boost::asio::async_write( - *socket, - boost::asio::buffer(curWriteBuf, curWriteBufUsed), - boost::bind(&SendBuffer::HandleWrite, - shared_from_this(), - socket, - boost::asio::placeholders::error)); - } else if (closeAfterSend) { - socket->close(); - } - } -} - -int -SendBuffer::EncodeToBuf(const void *data, size_t size, void *arg) -{ - SendBuffer *m = static_cast(arg); - - // Realloc buffer if necessary. - while (m->GetSendBufLeft() < size) { - if (!m->ReallocSendBuf()) { - return -1; - } - } - - m->AppendToSendBufWithoutCheck((const char*)data, size); - - return 0; } diff --git a/src/net/common/senderhelper.cpp b/src/net/common/senderhelper.cpp index 5b2006a5..2ec2b2c9 100644 --- a/src/net/common/senderhelper.cpp +++ b/src/net/common/senderhelper.cpp @@ -1,6 +1,6 @@ /***************************************************************************** * PokerTH - The open source texas holdem engine * - * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU Affero General Public License as * @@ -56,9 +56,9 @@ SenderHelper::Send(boost::shared_ptr session, boost::shared_ptrGetSendBuffer(); // Add packet to specific queue. boost::mutex::scoped_lock lock(tmpBuffer.dataMutex); - InternalStorePacket(tmpBuffer, packet); + tmpBuffer.InternalStorePacket(session, packet); // Activate async send, if needed. - tmpBuffer.AsyncSendNextPacket(session->GetAsioSocket()); + tmpBuffer.AsyncSendNextPacket(session); } } @@ -73,11 +73,11 @@ SenderHelper::Send(boost::shared_ptr session, const NetPacketList & NetPacketList::const_iterator end = packetList.end(); while (i != end) { if (*i) - InternalStorePacket(tmpBuffer, *i); + tmpBuffer.InternalStorePacket(session, *i); ++i; } // Activate async send, if needed. - tmpBuffer.AsyncSendNextPacket(session->GetAsioSocket()); + tmpBuffer.AsyncSendNextPacket(session); } } @@ -90,17 +90,6 @@ SenderHelper::SetCloseAfterSend(boost::shared_ptr session) // Mark that the socket should be closed after the send operation. tmpBuffer.SetCloseAfterSend(); // Activate async send, if needed. - tmpBuffer.AsyncSendNextPacket(session->GetAsioSocket()); -} - -void -SenderHelper::InternalStorePacket(SendBuffer &tmpBuffer, boost::shared_ptr packet) -{ - uint32_t packetSize = packet->GetMsg()->ByteSize(); - google::protobuf::uint8 *buf = new google::protobuf::uint8[packetSize + NET_HEADER_SIZE]; - *((uint32_t *)buf) = htonl(packetSize); - packet->GetMsg()->SerializeWithCachedSizesToArray(&buf[NET_HEADER_SIZE]); - SendBuffer::EncodeToBuf(buf, packetSize + NET_HEADER_SIZE, &tmpBuffer); - delete[] buf; + tmpBuffer.AsyncSendNextPacket(session); } diff --git a/src/net/common/serveraccepthelper.cpp b/src/net/common/serveraccepthelper.cpp deleted file mode 100644 index f939d7d0..00000000 --- a/src/net/common/serveraccepthelper.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/***************************************************************************** - * PokerTH - The open source texas holdem engine * - * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Affero General Public License as * - * published by the Free Software Foundation, either version 3 of the * - * License, or (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Affero General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - * * - * * - * Additional permission under GNU AGPL version 3 section 7 * - * * - * If you modify this program, or any covered work, by linking or * - * combining it with the OpenSSL project's OpenSSL library (or a * - * modified version of that library), containing parts covered by the * - * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * - * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * - * permission to convey the resulting work. * - * Corresponding Source for a non-source form of such a combination * - * shall include the source code for the parts of OpenSSL used as well * - * as that of the covered work. * - *****************************************************************************/ - -#include - - -ServerAcceptInterface::~ServerAcceptInterface() -{ -} - - diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 21a16d46..61d23ee0 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -267,10 +267,9 @@ ServerLobbyThread::SignalTermination() } void -ServerLobbyThread::AddConnection(boost::shared_ptr sock) +ServerLobbyThread::AddConnection(boost::shared_ptr sessionData) { // Create a new session. - boost::shared_ptr sessionData(new SessionData(sock, m_curSessionId++, *m_internalServerCallback, GetIOService())); m_sessionManager.AddSession(sessionData); LOG_VERBOSE("Accepted connection - session #" << sessionData->GetId() << "."); @@ -284,42 +283,37 @@ ServerLobbyThread::AddConnection(boost::shared_ptr sock) if (numLobbySessions <= SERVER_MAX_NUM_LOBBY_SESSIONS && numLobbySessions + numGameSessions <= SERVER_MAX_NUM_TOTAL_SESSIONS) { bool hasClientIp = false; - boost::system::error_code errCode; - tcp::endpoint clientEndpoint = sock->remote_endpoint(errCode); - if (!errCode) { - string ipAddress = clientEndpoint.address().to_string(errCode); - if (!errCode && !ipAddress.empty()) { - sessionData->SetClientAddr(ipAddress); - hasClientIp = true; + string ipAddress = sessionData->GetRemoteIPAddressFromSocket(); + if (!ipAddress.empty()) { + sessionData->SetClientAddr(ipAddress); + hasClientIp = true; - boost::shared_ptr packet(new NetPacket); - packet->GetMsg()->set_messagetype(PokerTHMessage::Type_AnnounceMessage); - AnnounceMessage *netAnnounce = packet->GetMsg()->mutable_announcemessage(); - netAnnounce->mutable_protocolversion()->set_majorversion(NET_VERSION_MAJOR); - netAnnounce->mutable_protocolversion()->set_minorversion(NET_VERSION_MINOR); - netAnnounce->mutable_latestgameversion()->set_majorversion(POKERTH_VERSION_MAJOR); - netAnnounce->mutable_latestgameversion()->set_minorversion(POKERTH_VERSION_MINOR); - netAnnounce->set_latestbetarevision(POKERTH_BETA_REVISION); - switch (GetServerMode()) { - case SERVER_MODE_LAN: - netAnnounce->set_servertype(AnnounceMessage::serverTypeLAN); - break; - case SERVER_MODE_INTERNET_NOAUTH: - netAnnounce->set_servertype(AnnounceMessage::serverTypeInternetNoAuth); - break; - case SERVER_MODE_INTERNET_AUTH: - netAnnounce->set_servertype(AnnounceMessage::serverTypeInternetAuth); - break; - } - { - boost::mutex::scoped_lock lock(m_statMutex); - netAnnounce->set_numplayersonserver(m_statData.numberOfPlayersOnServer); - } - GetSender().Send(sessionData, packet); - sessionData->GetReceiveBuffer().StartAsyncRead(sessionData); + boost::shared_ptr packet(new NetPacket); + packet->GetMsg()->set_messagetype(PokerTHMessage::Type_AnnounceMessage); + AnnounceMessage *netAnnounce = packet->GetMsg()->mutable_announcemessage(); + netAnnounce->mutable_protocolversion()->set_majorversion(NET_VERSION_MAJOR); + netAnnounce->mutable_protocolversion()->set_minorversion(NET_VERSION_MINOR); + netAnnounce->mutable_latestgameversion()->set_majorversion(POKERTH_VERSION_MAJOR); + netAnnounce->mutable_latestgameversion()->set_minorversion(POKERTH_VERSION_MINOR); + netAnnounce->set_latestbetarevision(POKERTH_BETA_REVISION); + switch (GetServerMode()) { + case SERVER_MODE_LAN: + netAnnounce->set_servertype(AnnounceMessage::serverTypeLAN); + break; + case SERVER_MODE_INTERNET_NOAUTH: + netAnnounce->set_servertype(AnnounceMessage::serverTypeInternetNoAuth); + break; + case SERVER_MODE_INTERNET_AUTH: + netAnnounce->set_servertype(AnnounceMessage::serverTypeInternetAuth); + break; } - } - if (!hasClientIp) { + { + boost::mutex::scoped_lock lock(m_statMutex); + netAnnounce->set_numplayersonserver(m_statData.numberOfPlayersOnServer); + } + GetSender().Send(sessionData, packet); + sessionData->GetReceiveBuffer().StartAsyncRead(sessionData); + } else { // We do not accept sessions if we cannot // retrieve the client address. SessionError(sessionData, ERR_NET_INVALID_SESSION); @@ -406,8 +400,11 @@ ServerLobbyThread::CloseSession(boost::shared_ptr session) UpdateStatisticsNumberOfPlayers(); // Ignore error when shutting down the socket. - boost::system::error_code ec; - session->GetAsioSocket()->shutdown(boost::asio::ip::tcp::socket::shutdown_receive, ec); + boost::shared_ptr sock = session->GetAsioSocket(); + if (sock) { + boost::system::error_code ec; + session->GetAsioSocket()->shutdown(boost::asio::ip::tcp::socket::shutdown_receive, ec); + } // Close this session after send. GetSender().SetCloseAfterSend(session); // Cancel all timers of the session. @@ -789,6 +786,18 @@ ServerLobbyThread::GetBanManager() return *m_banManager; } +SessionDataCallback & +ServerLobbyThread::GetSessionDataCallback() +{ + return *m_internalServerCallback; +} + +u_int32_t +ServerLobbyThread::GetNextSessionId() +{ + return m_curSessionId++; +} + u_int32_t ServerLobbyThread::GetNextUniquePlayerId() { diff --git a/src/net/common/servermanager.cpp b/src/net/common/servermanager.cpp index 297444ac..9f928b73 100644 --- a/src/net/common/servermanager.cpp +++ b/src/net/common/servermanager.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include @@ -92,6 +93,11 @@ ServerManager::Init(unsigned serverPort, bool ipv6, ServerTransportProtocol prot sctpAcceptHelper->Listen(serverPort, ipv6, logDir, m_lobbyThread); m_acceptHelperPool.push_back(sctpAcceptHelper); }*/ + { + boost::shared_ptr webAcceptHelper(new ServerAcceptWebHelper(GetGui(), m_ioService)); + webAcceptHelper->Listen(7233, true, logDir, m_lobbyThread); + m_acceptHelperPool.push_back(webAcceptHelper); + } } void diff --git a/src/net/common/sessiondata.cpp b/src/net/common/sessiondata.cpp index d52b78f6..aa991066 100644 --- a/src/net/common/sessiondata.cpp +++ b/src/net/common/sessiondata.cpp @@ -30,25 +30,40 @@ *****************************************************************************/ #include -#include -#include +#include +#include +#include +#include #include +#include #include using namespace std; +using boost::asio::ip::tcp; SessionData::SessionData(boost::shared_ptr sock, SessionId id, SessionDataCallback &cb, boost::asio::io_service &ioService) : m_socket(sock), m_id(id), m_state(SessionData::Init), m_readyFlag(false), m_wantsLobbyMsg(true), m_activityTimeoutSec(0), m_activityWarningRemainingSec(0), m_initTimeoutTimer(ioService), m_globalTimeoutTimer(ioService), m_activityTimeoutTimer(ioService), m_callback(cb), m_authSession(NULL), m_curAuthStep(0) { - m_receiveBuffer.reset(new ReceiveBuffer); - m_sendBuffer.reset(new SendBuffer); + m_receiveBuffer.reset(new AsioReceiveBuffer); + m_sendBuffer.reset(new AsioSendBuffer); +} + +SessionData::SessionData(boost::shared_ptr webData, SessionId id, SessionDataCallback &cb, boost::asio::io_service &ioService, int filler) + : m_webData(webData), m_id(id), m_state(SessionData::Init), m_readyFlag(false), m_wantsLobbyMsg(true), + m_activityTimeoutSec(0), m_activityWarningRemainingSec(0), m_initTimeoutTimer(ioService), m_globalTimeoutTimer(ioService), + m_activityTimeoutTimer(ioService), m_callback(cb), m_authSession(NULL), m_curAuthStep(0) +{ + m_receiveBuffer.reset(new WebReceiveBuffer); + m_sendBuffer.reset(new WebSendBuffer(webData)); } SessionData::~SessionData() { InternalClearAuthSession(); + // Web Socket handle needs to be manually closed, asio socket is closed automatically. + CloseWebSocketHandle(); } SessionId @@ -278,6 +293,24 @@ SessionData::SetClientAddr(const std::string &addr) m_clientAddr = addr; } +void +SessionData::CloseSocketHandle() +{ + if (m_socket) { + boost::system::error_code ec; + m_socket->close(ec); + } +} + +void +SessionData::CloseWebSocketHandle() +{ + if (m_webData) { + boost::system::error_code ec; + m_webData->webSocketServer->close(m_webData->webHandle, websocketpp::close::status::normal, "PokerTH server closed the connection.", ec); + } +} + void SessionData::ResetActivityTimer() { @@ -348,3 +381,20 @@ SessionData::GetPlayerData() return m_playerData; } +string +SessionData::GetRemoteIPAddressFromSocket() const +{ + string ipAddress; + if (m_socket) { + boost::system::error_code errCode; + tcp::endpoint clientEndpoint = m_socket->remote_endpoint(errCode); + if (!errCode) { + ipAddress = clientEndpoint.address().to_string(errCode); + } + } else { + server::connection_ptr con = m_webData->webSocketServer->get_con_from_hdl(m_webData->webHandle); + ipAddress = con->get_remote_endpoint(); + } + return ipAddress; +} + diff --git a/src/net/common/sessionmanager.cpp b/src/net/common/sessionmanager.cpp index 4d711318..56a7e7b0 100644 --- a/src/net/common/sessionmanager.cpp +++ b/src/net/common/sessionmanager.cpp @@ -281,7 +281,9 @@ SessionManager::Clear() boost::system::error_code ec; while (i != end) { - i->second->GetAsioSocket()->close(ec); + // Close all raw handles. + i->second->CloseSocketHandle(); + i->second->CloseWebSocketHandle(); ++i; } m_sessionMap.clear(); diff --git a/src/net/receivebuffer.h b/src/net/receivebuffer.h index a0ece22f..f631600b 100644 --- a/src/net/receivebuffer.h +++ b/src/net/receivebuffer.h @@ -1,6 +1,6 @@ /***************************************************************************** * PokerTH - The open source texas holdem engine * - * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU Affero General Public License as * @@ -28,39 +28,31 @@ * shall include the source code for the parts of OpenSSL used as well * * as that of the covered work. * *****************************************************************************/ -/* Buffer for ReceiveHelper. */ +/* Interface for receive buffers. */ #ifndef _RECEIVEBUFFER_H_ #define _RECEIVEBUFFER_H_ #include +#include #include #include -// MUST be larger than MAX_PACKET_SIZE -#define RECV_BUF_SIZE 5 * MAX_PACKET_SIZE - class SessionData; class ReceiveBuffer : public boost::enable_shared_from_this { public: - ReceiveBuffer(); + virtual ~ReceiveBuffer(); - void StartAsyncRead(boost::shared_ptr session); + virtual void StartAsyncRead(boost::shared_ptr session) = 0; + virtual void HandleRead(boost::shared_ptr session, const boost::system::error_code &error, size_t bytesRead) = 0; + virtual void HandleMessage(boost::shared_ptr session, const std::string &msg) = 0; protected: - void HandleRead(boost::shared_ptr session, const boost::system::error_code &error, size_t bytesRead); - void ScanPackets(boost::shared_ptr session); - void ProcessPackets(boost::shared_ptr session); - - -private: - NetPacketList receivedPackets; - char recvBuf[RECV_BUF_SIZE]; - size_t recvBufUsed; static NetPacketValidator validator; + }; #endif diff --git a/src/net/sendbuffer.h b/src/net/sendbuffer.h index 72363043..f425448d 100644 --- a/src/net/sendbuffer.h +++ b/src/net/sendbuffer.h @@ -1,6 +1,6 @@ /***************************************************************************** * PokerTH - The open source texas holdem engine * - * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * * * * This program is free software: you can redistribute it and/or modify * * it under the terms of the GNU Affero General Public License as * @@ -28,77 +28,31 @@ * shall include the source code for the parts of OpenSSL used as well * * as that of the covered work. * *****************************************************************************/ -/* Buffer for sending network data. */ +/* Buffer interface for sending network data. */ #ifndef _SENDBUFFER_H_ #define _SENDBUFFER_H_ -#include -#include +#include #include -#include - - -#define SEND_BUF_FIRST_ALLOC_CHUNKSIZE 4096 -#define MAX_SEND_BUF_SIZE SEND_BUF_FIRST_ALLOC_CHUNKSIZE * 256 +#include +class SessionData; +class NetPacket; class SendBuffer : public boost::enable_shared_from_this { public: - SendBuffer(); - ~SendBuffer(); + virtual ~SendBuffer(); - inline size_t GetSendBufLeft() const { - int bytesLeft = (int)(sendBufAllocated - sendBufUsed); - return bytesLeft < 0 ? (size_t)0 : (size_t)bytesLeft; - } + virtual void SetCloseAfterSend() = 0; - inline size_t GetAllocated() const { - return sendBufAllocated; - } + virtual void AsyncSendNextPacket(boost::shared_ptr session) = 0; + virtual void InternalStorePacket(boost::shared_ptr session, boost::shared_ptr packet) = 0; - inline bool ReallocSendBuf() { - bool retVal = false; - size_t allocAmount = sendBufAllocated * 2; - if (0 == allocAmount) { - allocAmount = (size_t)SEND_BUF_FIRST_ALLOC_CHUNKSIZE; - } - if (allocAmount <= MAX_SEND_BUF_SIZE) { - char *tempBuf = (char *)std::realloc(sendBuf, allocAmount); - if (tempBuf) { - sendBuf = tempBuf; - sendBufAllocated = allocAmount; - retVal = true; - } - } - return retVal; - } - - inline void AppendToSendBufWithoutCheck(const char *data, size_t size) { - std::memcpy(sendBuf + sendBufUsed, data, size); - sendBufUsed += size; - } - - inline void SetCloseAfterSend() { - closeAfterSend = true; - } - - void HandleWrite(boost::shared_ptr socket, const boost::system::error_code &error); - void AsyncSendNextPacket(boost::shared_ptr socket); - - static int EncodeToBuf(const void *data, size_t size, void *arg); + virtual void HandleWrite(boost::shared_ptr socket, const boost::system::error_code &error) = 0; mutable boost::mutex dataMutex; - -private: - char *sendBuf; - char *curWriteBuf; - size_t sendBufAllocated; - size_t sendBufUsed; - size_t curWriteBufAllocated; - size_t curWriteBufUsed; - bool closeAfterSend; }; #endif diff --git a/src/net/senderhelper.h b/src/net/senderhelper.h index 112bef05..1a7615b0 100644 --- a/src/net/senderhelper.h +++ b/src/net/senderhelper.h @@ -50,9 +50,6 @@ public: void SetCloseAfterSend(boost::shared_ptr session); -protected: - void InternalStorePacket(SendBuffer &tmpManager, boost::shared_ptr packet); - private: boost::shared_ptr m_ioService; diff --git a/src/net/serveraccepthelper.h b/src/net/serveraccepthelper.h index b71e49eb..59421f61 100644 --- a/src/net/serveraccepthelper.h +++ b/src/net/serveraccepthelper.h @@ -36,6 +36,7 @@ #include #include +#include #include #include #include @@ -43,17 +44,6 @@ #include #include -class ServerAcceptInterface -{ -public: - virtual ~ServerAcceptInterface(); - - virtual void Listen(unsigned serverPort, bool ipv6, const std::string &logDir, - boost::shared_ptr lobbyThread) = 0; - - virtual void Close() = 0; -}; - template class ServerAcceptHelper : public ServerAcceptInterface { @@ -130,7 +120,8 @@ protected: acceptedSocket->io_control(command); acceptedSocket->set_option(typename P::no_delay(true)); acceptedSocket->set_option(boost::asio::socket_base::keep_alive(true)); - GetLobbyThread().AddConnection(acceptedSocket); + boost::shared_ptr sessionData(new SessionData(acceptedSocket, m_lobbyThread->GetNextSessionId(), m_lobbyThread->GetSessionDataCallback(), *m_ioService)); + GetLobbyThread().AddConnection(sessionData); boost::shared_ptr newSocket(new typename P::socket(*m_ioService)); m_acceptor->async_accept( diff --git a/src/net/serverlobbythread.h b/src/net/serverlobbythread.h index ee675e7d..c26486b7 100644 --- a/src/net/serverlobbythread.h +++ b/src/net/serverlobbythread.h @@ -70,7 +70,7 @@ public: void Init(const std::string &logDir); virtual void SignalTermination(); - void AddConnection(boost::shared_ptr sock); + void AddConnection(boost::shared_ptr sessionData); void ReAddSession(boost::shared_ptr session, int reason, unsigned gameId); void MoveSessionToGame(boost::shared_ptr game, boost::shared_ptr session, bool autoLeave, bool spectateOnly); void SessionError(boost::shared_ptr session, int errorCode); @@ -111,6 +111,7 @@ public: bool SendToLobbyPlayer(unsigned playerId, boost::shared_ptr packet); + u_int32_t GetNextSessionId(); u_int32_t GetNextUniquePlayerId(); u_int32_t GetNextGameId(); ServerCallback &GetCallback(); @@ -127,6 +128,8 @@ public: boost::shared_ptr GetDatabase(); ServerBanManager &GetBanManager(); + SessionDataCallback &GetSessionDataCallback(); + protected: typedef std::deque > ConnectQueue; diff --git a/src/net/sessiondata.h b/src/net/sessiondata.h index d0a01c7f..e74eefa1 100644 --- a/src/net/sessiondata.h +++ b/src/net/sessiondata.h @@ -49,6 +49,7 @@ typedef unsigned SessionId; struct Gsasl; struct Gsasl_session; +struct WebSocketData; class ReceiveBuffer; class SendBuffer; class NetPacket; @@ -61,6 +62,7 @@ public: enum State { Init = 1, ReceivingAvatar = 2, Established = 4, Game = 8, Spectating = 16, SpectatorWaiting = 32, Closed = 128 }; SessionData(boost::shared_ptr sock, SessionId id, SessionDataCallback &cb, boost::asio::io_service &ioService); + SessionData(boost::shared_ptr webData, SessionId id, SessionDataCallback &cb, boost::asio::io_service &ioService, int filler); ~SessionData(); SessionId GetId() const; @@ -102,6 +104,8 @@ public: void Close() { m_callback.CloseSession(shared_from_this()); } + void CloseSocketHandle(); + void CloseWebSocketHandle(); void HandlePacket(boost::shared_ptr packet) { m_callback.HandlePacket(shared_from_this(), packet); } @@ -116,6 +120,8 @@ public: void SetPlayerData(boost::shared_ptr player); boost::shared_ptr GetPlayerData(); + std::string GetRemoteIPAddressFromSocket() const; + protected: SessionData(const SessionData &other); SessionData &operator=(const SessionData &other); @@ -125,7 +131,8 @@ protected: void TimerActivityWarning(const boost::system::error_code &ec); private: - boost::shared_ptr m_socket; + boost::shared_ptr m_socket; + boost::shared_ptr m_webData; const SessionId m_id; boost::weak_ptr m_game; State m_state; From 36eeaee5d78c6da712d1497b5f3396b9642f2078 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 15 Sep 2013 23:06:15 +0200 Subject: [PATCH 050/128] Adding missing files for websocket implementation. --- src/net/asioreceivebuffer.h | 62 ++++++++++ src/net/asiosendbuffer.h | 101 +++++++++++++++ src/net/common/asioreceivebuffer.cpp | 150 +++++++++++++++++++++++ src/net/common/asiosendbuffer.cpp | 126 +++++++++++++++++++ src/net/common/serveracceptinterface.cpp | 39 ++++++ src/net/common/serveracceptwebhelper.cpp | 116 ++++++++++++++++++ src/net/common/webreceivebuffer.cpp | 72 +++++++++++ src/net/common/websendbuffer.cpp | 75 ++++++++++++ src/net/serveracceptinterface.h | 53 ++++++++ src/net/serveracceptwebhelper.h | 68 ++++++++++ src/net/webreceivebuffer.h | 48 ++++++++ src/net/websendbuffer.h | 59 +++++++++ src/net/websocket_defs.h | 41 +++++++ src/net/websocketdata.h | 45 +++++++ 14 files changed, 1055 insertions(+) create mode 100644 src/net/asioreceivebuffer.h create mode 100644 src/net/asiosendbuffer.h create mode 100644 src/net/common/asioreceivebuffer.cpp create mode 100644 src/net/common/asiosendbuffer.cpp create mode 100644 src/net/common/serveracceptinterface.cpp create mode 100644 src/net/common/serveracceptwebhelper.cpp create mode 100644 src/net/common/webreceivebuffer.cpp create mode 100644 src/net/common/websendbuffer.cpp create mode 100644 src/net/serveracceptinterface.h create mode 100644 src/net/serveracceptwebhelper.h create mode 100644 src/net/webreceivebuffer.h create mode 100644 src/net/websendbuffer.h create mode 100644 src/net/websocket_defs.h create mode 100644 src/net/websocketdata.h diff --git a/src/net/asioreceivebuffer.h b/src/net/asioreceivebuffer.h new file mode 100644 index 00000000..8427311b --- /dev/null +++ b/src/net/asioreceivebuffer.h @@ -0,0 +1,62 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ +/* ASIO standard socket receive buffer. */ + +#ifndef _ASIORECEIVEBUFFER_H_ +#define _ASIORECEIVEBUFFER_H_ + +#include + +// MUST be larger than MAX_PACKET_SIZE +#define RECV_BUF_SIZE 5 * MAX_PACKET_SIZE + +class AsioReceiveBuffer : public ReceiveBuffer +{ +public: + AsioReceiveBuffer(); + + virtual void StartAsyncRead(boost::shared_ptr session); + virtual void HandleRead(boost::shared_ptr session, const boost::system::error_code &error, size_t bytesRead); + virtual void HandleMessage(boost::shared_ptr session, const std::string &msg); + +protected: + + void ScanPackets(boost::shared_ptr session); + void ProcessPackets(boost::shared_ptr session); + + +private: + NetPacketList receivedPackets; + char recvBuf[RECV_BUF_SIZE]; + size_t recvBufUsed; +}; + +#endif diff --git a/src/net/asiosendbuffer.h b/src/net/asiosendbuffer.h new file mode 100644 index 00000000..d0eceff0 --- /dev/null +++ b/src/net/asiosendbuffer.h @@ -0,0 +1,101 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ +/* Buffer for sending network data. */ + +#ifndef _ASIOSENDBUFFER_H_ +#define _ASIOSENDBUFFER_H_ + +#include +#include + + +#define SEND_BUF_FIRST_ALLOC_CHUNKSIZE 4096 +#define MAX_SEND_BUF_SIZE SEND_BUF_FIRST_ALLOC_CHUNKSIZE * 256 + + +class AsioSendBuffer : public SendBuffer +{ +public: + AsioSendBuffer(); + virtual ~AsioSendBuffer(); + + inline size_t GetSendBufLeft() const { + int bytesLeft = (int)(sendBufAllocated - sendBufUsed); + return bytesLeft < 0 ? (size_t)0 : (size_t)bytesLeft; + } + + inline size_t GetAllocated() const { + return sendBufAllocated; + } + + inline bool ReallocSendBuf() { + bool retVal = false; + size_t allocAmount = sendBufAllocated * 2; + if (0 == allocAmount) { + allocAmount = (size_t)SEND_BUF_FIRST_ALLOC_CHUNKSIZE; + } + if (allocAmount <= MAX_SEND_BUF_SIZE) { + char *tempBuf = (char *)std::realloc(sendBuf, allocAmount); + if (tempBuf) { + sendBuf = tempBuf; + sendBufAllocated = allocAmount; + retVal = true; + } + } + return retVal; + } + + inline void AppendToSendBufWithoutCheck(const char *data, size_t size) { + std::memcpy(sendBuf + sendBufUsed, data, size); + sendBufUsed += size; + } + + virtual void SetCloseAfterSend(); + + virtual void AsyncSendNextPacket(boost::shared_ptr session); + void AsyncSendNextPacket(boost::shared_ptr socket); + virtual void InternalStorePacket(boost::shared_ptr session, boost::shared_ptr packet); + int EncodeToBuf(boost::shared_ptr session, const void *data, size_t size); + + virtual void HandleWrite(boost::shared_ptr socket, const boost::system::error_code &error); + +private: + char *sendBuf; + char *curWriteBuf; + size_t sendBufAllocated; + size_t sendBufUsed; + size_t curWriteBufAllocated; + size_t curWriteBufUsed; + bool closeAfterSend; +}; + +#endif + diff --git a/src/net/common/asioreceivebuffer.cpp b/src/net/common/asioreceivebuffer.cpp new file mode 100644 index 00000000..c4f85beb --- /dev/null +++ b/src/net/common/asioreceivebuffer.cpp @@ -0,0 +1,150 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ + +#include +#include + +#include +#include +#include +#include + +using namespace std; + +AsioReceiveBuffer::AsioReceiveBuffer() + : recvBufUsed(0) +{ + recvBuf[0] = 0; +} + +void +AsioReceiveBuffer::StartAsyncRead(boost::shared_ptr session) +{ + session->GetAsioSocket()->async_read_some( + boost::asio::buffer(recvBuf + recvBufUsed, RECV_BUF_SIZE - recvBufUsed), + boost::bind( + &ReceiveBuffer::HandleRead, + shared_from_this(), + session, + boost::asio::placeholders::error, + boost::asio::placeholders::bytes_transferred)); +} + +void +AsioReceiveBuffer::HandleRead(boost::shared_ptr session, const boost::system::error_code &error, size_t bytesRead) +{ + if (error != boost::asio::error::operation_aborted) { + try { + if (!error) { + recvBufUsed += bytesRead; + ScanPackets(session); + ProcessPackets(session); + StartAsyncRead(session); + } else if (error == boost::asio::error::interrupted || error == boost::asio::error::try_again) { + LOG_ERROR("Session " << session->GetId() << " - recv interrupted: " << error); + StartAsyncRead(session); + } else { + LOG_ERROR("Session " << session->GetId() << " - Connection closed: " << error); + // On error: Close this session. + session->Close(); + } + } catch (const exception &e) { + LOG_ERROR("Session " << session->GetId() << " - unhandled exception in HandleRead: " << e.what()); + throw; + } + } +} + +void +AsioReceiveBuffer::HandleMessage(boost::shared_ptr /*session*/, const string &/*msg*/) +{ + LOG_ERROR("AsioReceiveBuffer::HandleMessage should never be called because TCP I/O is not message based."); +} + +void +AsioReceiveBuffer::ScanPackets(boost::shared_ptr session) +{ + bool dataAvailable = true; + do { + boost::shared_ptr tmpPacket; + // This is necessary, because we use TCP. + // Packets may be received in multiple chunks or + // several packets may be received at once. + if (recvBufUsed >= NET_HEADER_SIZE) { + // Read the size of the packet (first 4 bytes in network byte order). + uint32_t nativeVal; + memcpy(&nativeVal, &recvBuf[0], sizeof(uint32_t)); + size_t packetSize = ntohl(nativeVal); + if (packetSize > MAX_PACKET_SIZE) { + recvBufUsed = 0; + LOG_ERROR("Session " << session->GetId() << " - Invalid packet size: " << packetSize); + } else if (recvBufUsed >= packetSize + NET_HEADER_SIZE) { + try { + tmpPacket = NetPacket::Create(&recvBuf[NET_HEADER_SIZE], packetSize); + if (tmpPacket) { + recvBufUsed -= (packetSize + NET_HEADER_SIZE); + if (recvBufUsed) { + memmove(recvBuf, recvBuf + packetSize + NET_HEADER_SIZE, recvBufUsed); + } + } + } catch (const exception &e) { + // Reset buffer on error. + recvBufUsed = 0; + LOG_ERROR("Session " << session->GetId() << " - " << e.what()); + } + } + } + if (tmpPacket) { + if (validator.IsValidPacket(*tmpPacket)) { + receivedPackets.push_back(tmpPacket); + } else { + LOG_ERROR("Session " << session->GetId() << " - Invalid packet: " << tmpPacket->GetMsg()->messagetype()); + } + } else { + dataAvailable = false; + } + } while(dataAvailable); +} + +void +AsioReceiveBuffer::ProcessPackets(boost::shared_ptr session) +{ + while (!receivedPackets.empty()) { + boost::shared_ptr p = receivedPackets.front(); + receivedPackets.pop_front(); + session->HandlePacket(p); + } + if (recvBufUsed >= RECV_BUF_SIZE) { + LOG_ERROR("Session " << session->GetId() << " - Receive buf full: " << recvBufUsed); + recvBufUsed = 0; + } +} + diff --git a/src/net/common/asiosendbuffer.cpp b/src/net/common/asiosendbuffer.cpp new file mode 100644 index 00000000..8d30ff5a --- /dev/null +++ b/src/net/common/asiosendbuffer.cpp @@ -0,0 +1,126 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ + +#include +#include + +#include +#include +#include +#include + +using namespace std; + + +AsioSendBuffer::AsioSendBuffer() + : sendBuf(NULL), curWriteBuf(NULL), sendBufAllocated(0), sendBufUsed(0), + curWriteBufAllocated(0), curWriteBufUsed(0), closeAfterSend(false) +{ +} + +AsioSendBuffer::~AsioSendBuffer() +{ + free(sendBuf); + free(curWriteBuf); +} + +void +AsioSendBuffer::SetCloseAfterSend() +{ + closeAfterSend = true; +} + +void +AsioSendBuffer::HandleWrite(boost::shared_ptr socket, const boost::system::error_code &error) +{ + if (!error) { + // Successfully sent the data. + boost::mutex::scoped_lock lock(dataMutex); + curWriteBufUsed = 0; + // Send more data, if available. + AsyncSendNextPacket(socket); + } +} + +void +AsioSendBuffer::AsyncSendNextPacket(boost::shared_ptr session) +{ + AsyncSendNextPacket(session->GetAsioSocket()); +} + +void +AsioSendBuffer::AsyncSendNextPacket(boost::shared_ptr socket) +{ + if (!curWriteBufUsed) { + // Swap buffers and send data. + boost::swap(curWriteBuf, sendBuf); + boost::swap(curWriteBufAllocated, sendBufAllocated); + boost::swap(curWriteBufUsed, sendBufUsed); + if (curWriteBufUsed) { + boost::asio::async_write( + *socket, + boost::asio::buffer(curWriteBuf, curWriteBufUsed), + boost::bind(&SendBuffer::HandleWrite, + shared_from_this(), + socket, + boost::asio::placeholders::error)); + } else if (closeAfterSend) { + socket->close(); + } + } +} + +void +AsioSendBuffer::InternalStorePacket(boost::shared_ptr session, boost::shared_ptr packet) +{ + uint32_t packetSize = packet->GetMsg()->ByteSize(); + google::protobuf::uint8 *buf = new google::protobuf::uint8[packetSize + NET_HEADER_SIZE]; + *((uint32_t *)buf) = htonl(packetSize); + packet->GetMsg()->SerializeWithCachedSizesToArray(&buf[NET_HEADER_SIZE]); + EncodeToBuf(session, buf, packetSize + NET_HEADER_SIZE); + delete[] buf; +} + +int +AsioSendBuffer::EncodeToBuf(boost::shared_ptr /*session*/, const void *data, size_t size) +{ + // Realloc buffer if necessary. + while (GetSendBufLeft() < size) { + if (!ReallocSendBuf()) { + return -1; + } + } + + AppendToSendBufWithoutCheck((const char*)data, size); + + return 0; +} + diff --git a/src/net/common/serveracceptinterface.cpp b/src/net/common/serveracceptinterface.cpp new file mode 100644 index 00000000..6a449939 --- /dev/null +++ b/src/net/common/serveracceptinterface.cpp @@ -0,0 +1,39 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ + +#include + + +ServerAcceptInterface::~ServerAcceptInterface() +{ +} + + diff --git a/src/net/common/serveracceptwebhelper.cpp b/src/net/common/serveracceptwebhelper.cpp new file mode 100644 index 00000000..aac05908 --- /dev/null +++ b/src/net/common/serveracceptwebhelper.cpp @@ -0,0 +1,116 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ + +#include +#include +#include +#include + +using namespace std; + +ServerAcceptWebHelper::ServerAcceptWebHelper(ServerCallback &serverCallback, boost::shared_ptr ioService) + : m_serverCallback(serverCallback), m_ioService(ioService) +{ + m_webSocketServer.reset(new server); +} + +void +ServerAcceptWebHelper::Listen(unsigned serverPort, bool /*ipv6*/, const std::string &/*logDir*/, boost::shared_ptr lobbyThread) +{ + m_lobbyThread = lobbyThread; + + // Set logging settings +#ifdef QT_NO_DEBUG + m_webSocketServer->clear_access_channels(websocketpp::log::alevel::all); +#else + m_webSocketServer->set_access_channels(websocketpp::log::alevel::all); +#endif + + m_webSocketServer->init_asio(m_ioService.get()); + + m_webSocketServer->set_validate_handler(boost::bind(boost::mem_fn(&ServerAcceptWebHelper::validate), this, _1)); + m_webSocketServer->set_open_handler(boost::bind(boost::mem_fn(&ServerAcceptWebHelper::on_open), this, _1)); + m_webSocketServer->set_close_handler(boost::bind(boost::mem_fn(&ServerAcceptWebHelper::on_close), this, _1)); + m_webSocketServer->set_message_handler(boost::bind(boost::mem_fn(&ServerAcceptWebHelper::on_message), this, _1, _2)); + + m_webSocketServer->listen(serverPort); + m_webSocketServer->start_accept(); +} + +void +ServerAcceptWebHelper::Close() +{ +} + +bool +ServerAcceptWebHelper::validate(websocketpp::connection_hdl hdl) +{ + return true; +} + +void +ServerAcceptWebHelper::on_open(websocketpp::connection_hdl hdl) +{ + boost::shared_ptr webData(new WebSocketData); + webData->webSocketServer = m_webSocketServer; + webData->webHandle = hdl; + boost::shared_ptr sessionData(new SessionData(webData, m_lobbyThread->GetNextSessionId(), m_lobbyThread->GetSessionDataCallback(), *m_ioService, 0)); + m_sessionMap.insert(make_pair(hdl, sessionData)); + m_lobbyThread->AddConnection(sessionData); +} + +void +ServerAcceptWebHelper::on_close(websocketpp::connection_hdl hdl) +{ + SessionMap::iterator pos = m_sessionMap.find(hdl); + if (pos != m_sessionMap.end()) { + boost::shared_ptr tmpSession = pos->second.lock(); + if (tmpSession) { + tmpSession->Close(); + } + m_sessionMap.erase(pos); + } +} + +void +ServerAcceptWebHelper::on_message(websocketpp::connection_hdl hdl, server::message_ptr msg) +{ + if (msg->get_opcode() == websocketpp::frame::opcode::BINARY) { + SessionMap::iterator pos = m_sessionMap.find(hdl); + if (pos != m_sessionMap.end()) { + boost::shared_ptr tmpSession = pos->second.lock(); + if (tmpSession) { + tmpSession->GetReceiveBuffer().HandleMessage(tmpSession, msg->get_payload()); + } + } + } +} + diff --git a/src/net/common/webreceivebuffer.cpp b/src/net/common/webreceivebuffer.cpp new file mode 100644 index 00000000..e2b0fc0a --- /dev/null +++ b/src/net/common/webreceivebuffer.cpp @@ -0,0 +1,72 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ + +#include +#include +#include + +using namespace std; + + +WebReceiveBuffer::WebReceiveBuffer() +{ +} + +void +WebReceiveBuffer::StartAsyncRead(boost::shared_ptr session) +{ + // Nothing to do. This is handled internally by websocketpp. +} + +void +WebReceiveBuffer::HandleRead(boost::shared_ptr /*session*/, const boost::system::error_code &/*error*/, size_t /*bytesRead*/) +{ + LOG_ERROR("WebReceiveBuffer::HandleRead should never be called because Websocket I/O is message based."); +} + +void +WebReceiveBuffer::HandleMessage(boost::shared_ptr session, const string &msg) +{ + boost::shared_ptr tmpPacket; + try { + tmpPacket = NetPacket::Create(msg.c_str(), msg.size()); + if (!validator.IsValidPacket(*tmpPacket)) { + LOG_ERROR("Session " << session->GetId() << " - Invalid packet: " << tmpPacket->GetMsg()->messagetype()); + tmpPacket.reset(); + } + } catch (const exception &e) { + LOG_ERROR("Session " << session->GetId() << " - " << e.what()); + } + if (tmpPacket) { + session->HandlePacket(tmpPacket); + } +} + diff --git a/src/net/common/websendbuffer.cpp b/src/net/common/websendbuffer.cpp new file mode 100644 index 00000000..c3489132 --- /dev/null +++ b/src/net/common/websendbuffer.cpp @@ -0,0 +1,75 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ + +#include +#include +#include + +using namespace std; + + +WebSendBuffer::WebSendBuffer(boost::shared_ptr webData) + : closeAfterSend(false), m_webData(webData) +{ +} + +void +WebSendBuffer::SetCloseAfterSend() +{ + closeAfterSend = true; +} + +void +WebSendBuffer::HandleWrite(boost::shared_ptr /*socket*/, const boost::system::error_code &/*error*/) +{ +} + +void +WebSendBuffer::AsyncSendNextPacket(boost::shared_ptr session) +{ + if (closeAfterSend) { + boost::system::error_code ec; + m_webData->webSocketServer->close(m_webData->webHandle, websocketpp::close::status::normal, "PokerTH server closed the connection.", ec); + } +} + +void +WebSendBuffer::InternalStorePacket(boost::shared_ptr session, boost::shared_ptr packet) +{ + uint32_t packetSize = packet->GetMsg()->ByteSize(); + google::protobuf::uint8 *buf = new google::protobuf::uint8[packetSize]; + packet->GetMsg()->SerializeWithCachedSizesToArray(buf); + + m_webData->webSocketServer->send(m_webData->webHandle, string((const char *)buf, packetSize), websocketpp::frame::opcode::BINARY); + + delete[] buf; +} + diff --git a/src/net/serveracceptinterface.h b/src/net/serveracceptinterface.h new file mode 100644 index 00000000..34f4d200 --- /dev/null +++ b/src/net/serveracceptinterface.h @@ -0,0 +1,53 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ +/* Network server helper interface to accept connections. */ + +#ifndef _SERVERACCEPINTERFACE_H_ +#define _SERVERACCEPINTERFACE_H_ + +#include +#include + +class ServerLobbyThread; + +class ServerAcceptInterface +{ +public: + virtual ~ServerAcceptInterface(); + + virtual void Listen(unsigned serverPort, bool ipv6, const std::string &logDir, + boost::shared_ptr lobbyThread) = 0; + + virtual void Close() = 0; +}; + + +#endif diff --git a/src/net/serveracceptwebhelper.h b/src/net/serveracceptwebhelper.h new file mode 100644 index 00000000..3f7d91e7 --- /dev/null +++ b/src/net/serveracceptwebhelper.h @@ -0,0 +1,68 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ +/* Network server helper to accept websocket connections. */ + +#ifndef _SERVERACCEPTWEBHELPER_H_ +#define _SERVERACCEPTWEBHELPER_H_ + +#include +#include +#include + +class ServerAcceptWebHelper : public ServerAcceptInterface +{ +public: + ServerAcceptWebHelper(ServerCallback &serverCallback, boost::shared_ptr ioService); + + virtual void Listen(unsigned serverPort, bool ipv6, const std::string &logDir, + boost::shared_ptr lobbyThread); + + virtual void Close(); + +protected: + + typedef std::map > SessionMap; + + bool validate(websocketpp::connection_hdl hdl); + void on_open(websocketpp::connection_hdl hdl); + void on_close(websocketpp::connection_hdl hdl); + void on_message(websocketpp::connection_hdl hdl, server::message_ptr msg); + +private: + boost::shared_ptr m_ioService; + ServerCallback &m_serverCallback; + boost::shared_ptr m_webSocketServer; + SessionMap m_sessionMap; + + boost::shared_ptr m_lobbyThread; +}; + +#endif diff --git a/src/net/webreceivebuffer.h b/src/net/webreceivebuffer.h new file mode 100644 index 00000000..eb9ce77e --- /dev/null +++ b/src/net/webreceivebuffer.h @@ -0,0 +1,48 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ +/* Websocket receive buffer. */ + +#ifndef _WEBRECEIVEBUFFER_H_ +#define _WEBRECEIVEBUFFER_H_ + +#include + +class WebReceiveBuffer : public ReceiveBuffer +{ +public: + WebReceiveBuffer(); + + virtual void StartAsyncRead(boost::shared_ptr session); + virtual void HandleRead(boost::shared_ptr session, const boost::system::error_code &error, size_t bytesRead); + virtual void HandleMessage(boost::shared_ptr session, const std::string &msg); +}; + +#endif diff --git a/src/net/websendbuffer.h b/src/net/websendbuffer.h new file mode 100644 index 00000000..e3005d50 --- /dev/null +++ b/src/net/websendbuffer.h @@ -0,0 +1,59 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ +/* Buffer for sending network data through a websocket. */ + +#ifndef _WEBSENDBUFFER_H_ +#define _WEBSENDBUFFER_H_ + +#include +#include + +struct WebSocketData; + +class WebSendBuffer : public SendBuffer +{ +public: + WebSendBuffer(boost::shared_ptr webData); + + virtual void SetCloseAfterSend(); + + virtual void AsyncSendNextPacket(boost::shared_ptr session); + virtual void InternalStorePacket(boost::shared_ptr session, boost::shared_ptr packet); + + virtual void HandleWrite(boost::shared_ptr socket, const boost::system::error_code &error); + +private: + bool closeAfterSend; + boost::shared_ptr m_webData; +}; + +#endif + diff --git a/src/net/websocket_defs.h b/src/net/websocket_defs.h new file mode 100644 index 00000000..4bcb4752 --- /dev/null +++ b/src/net/websocket_defs.h @@ -0,0 +1,41 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ +/* Definitions and includes for websocketpp. */ + +#ifndef _WEBSOCKET_DEFS_H_ +#define _WEBSOCKET_DEFS_H_ + +#include +#include + +typedef websocketpp::server server; + +#endif diff --git a/src/net/websocketdata.h b/src/net/websocketdata.h new file mode 100644 index 00000000..005b924b --- /dev/null +++ b/src/net/websocketdata.h @@ -0,0 +1,45 @@ +/***************************************************************************** + * PokerTH - The open source texas holdem engine * + * Copyright (C) 2006-2013 Felix Hammer, Florian Thauer, Lothar May * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU Affero General Public License as * + * published by the Free Software Foundation, either version 3 of the * + * License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Affero General Public License for more details. * + * * + * You should have received a copy of the GNU Affero General Public License * + * along with this program. If not, see . * + * * + * * + * Additional permission under GNU AGPL version 3 section 7 * + * * + * If you modify this program, or any covered work, by linking or * + * combining it with the OpenSSL project's OpenSSL library (or a * + * modified version of that library), containing parts covered by the * + * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * + * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * + * permission to convey the resulting work. * + * Corresponding Source for a non-source form of such a combination * + * shall include the source code for the parts of OpenSSL used as well * + * as that of the covered work. * + *****************************************************************************/ +/* Structure for web socket data for a session. */ + +#ifndef _WEBSOCKETDATA_H_ +#define _WEBSOCKETDATA_H_ + +#include + + +struct WebSocketData +{ + boost::shared_ptr webSocketServer; + websocketpp::connection_hdl webHandle; +}; + +#endif From 84b9b56d6a96e5a98c8af5177d5016f92af3304a Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 15 Sep 2013 23:11:15 +0200 Subject: [PATCH 051/128] Fixing gcc problem with EncodeToBuf-function. --- src/net/asiosendbuffer.h | 2 +- src/net/common/asiosendbuffer.cpp | 4 ++-- src/net/common/chatcleanermanager.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/net/asiosendbuffer.h b/src/net/asiosendbuffer.h index d0eceff0..10fdec1a 100644 --- a/src/net/asiosendbuffer.h +++ b/src/net/asiosendbuffer.h @@ -83,7 +83,7 @@ public: virtual void AsyncSendNextPacket(boost::shared_ptr session); void AsyncSendNextPacket(boost::shared_ptr socket); virtual void InternalStorePacket(boost::shared_ptr session, boost::shared_ptr packet); - int EncodeToBuf(boost::shared_ptr session, const void *data, size_t size); + int EncodeToBuf(const void *data, size_t size); virtual void HandleWrite(boost::shared_ptr socket, const boost::system::error_code &error); diff --git a/src/net/common/asiosendbuffer.cpp b/src/net/common/asiosendbuffer.cpp index 8d30ff5a..9dad639c 100644 --- a/src/net/common/asiosendbuffer.cpp +++ b/src/net/common/asiosendbuffer.cpp @@ -105,12 +105,12 @@ AsioSendBuffer::InternalStorePacket(boost::shared_ptr session, boos google::protobuf::uint8 *buf = new google::protobuf::uint8[packetSize + NET_HEADER_SIZE]; *((uint32_t *)buf) = htonl(packetSize); packet->GetMsg()->SerializeWithCachedSizesToArray(&buf[NET_HEADER_SIZE]); - EncodeToBuf(session, buf, packetSize + NET_HEADER_SIZE); + EncodeToBuf(buf, packetSize + NET_HEADER_SIZE); delete[] buf; } int -AsioSendBuffer::EncodeToBuf(boost::shared_ptr /*session*/, const void *data, size_t size) +AsioSendBuffer::EncodeToBuf(const void *data, size_t size) { // Realloc buffer if necessary. while (GetSendBufLeft() < size) { diff --git a/src/net/common/chatcleanermanager.cpp b/src/net/common/chatcleanermanager.cpp index 73a96268..250f00fd 100644 --- a/src/net/common/chatcleanermanager.cpp +++ b/src/net/common/chatcleanermanager.cpp @@ -273,7 +273,7 @@ ChatCleanerManager::SendMessageToServer(ChatCleanerMessage &msg) google::protobuf::uint8 *buf = new google::protobuf::uint8[packetSize + CLEANER_NET_HEADER_SIZE]; *((uint32_t *)buf) = htonl(packetSize); msg.SerializeWithCachedSizesToArray(&buf[CLEANER_NET_HEADER_SIZE]); - m_sendManager->EncodeToBuf(NULL, buf, packetSize + CLEANER_NET_HEADER_SIZE); + m_sendManager->EncodeToBuf(buf, packetSize + CLEANER_NET_HEADER_SIZE); delete[] buf; m_sendManager->AsyncSendNextPacket(m_socket); From 07e0d6d798de7cf17d469a5837271189aa33263b Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 15 Sep 2013 23:27:27 +0200 Subject: [PATCH 052/128] Fixing typo in build file. --- pokerth_lib.pro | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pokerth_lib.pro b/pokerth_lib.pro index 5fdcd453..90286379 100644 --- a/pokerth_lib.pro +++ b/pokerth_lib.pro @@ -186,7 +186,7 @@ SOURCES += \ src/net/common/senderhelper.cpp \ src/net/common/sendercallback.cpp \ src/net/common/serverexception.cpp \ - src/net/common/serveraccepinterface.cpp \ + src/net/common/serveracceptinterface.cpp \ src/net/common/serveracceptwebhelper.cpp \ src/net/common/servergame.cpp \ src/net/common/servergamestate.cpp \ From 088c17a5865f77d68b3a4a9925bbbc9268f8dcd1 Mon Sep 17 00:00:00 2001 From: doitux Date: Mon, 16 Sep 2013 17:54:11 +0200 Subject: [PATCH 053/128] fix embarrassing spectator lobby bug :/ --- src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index a9d25ecf..737e66e8 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -700,6 +700,7 @@ void gameLobbyDialogImpl::updateGameItem(QList itemList, unsign } ++it2; } + ++s; } } From 496a668a154a00ad21a58fbe5006127facdcaabb Mon Sep 17 00:00:00 2001 From: lotodore Date: Mon, 16 Sep 2013 22:33:52 +0200 Subject: [PATCH 054/128] Fixing retrieval of remote webclient address for login blocker. --- src/net/common/serverlobbythread.cpp | 2 -- src/net/common/sessiondata.cpp | 6 +++++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 61d23ee0..9a2a8861 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -282,11 +282,9 @@ ServerLobbyThread::AddConnection(boost::shared_ptr sessionData) unsigned numGameSessions = m_gameSessionManager.GetRawSessionCount(); if (numLobbySessions <= SERVER_MAX_NUM_LOBBY_SESSIONS && numLobbySessions + numGameSessions <= SERVER_MAX_NUM_TOTAL_SESSIONS) { - bool hasClientIp = false; string ipAddress = sessionData->GetRemoteIPAddressFromSocket(); if (!ipAddress.empty()) { sessionData->SetClientAddr(ipAddress); - hasClientIp = true; boost::shared_ptr packet(new NetPacket); packet->GetMsg()->set_messagetype(PokerTHMessage::Type_AnnounceMessage); diff --git a/src/net/common/sessiondata.cpp b/src/net/common/sessiondata.cpp index aa991066..63e0a1ed 100644 --- a/src/net/common/sessiondata.cpp +++ b/src/net/common/sessiondata.cpp @@ -392,8 +392,12 @@ SessionData::GetRemoteIPAddressFromSocket() const ipAddress = clientEndpoint.address().to_string(errCode); } } else { + boost::system::error_code errCode; server::connection_ptr con = m_webData->webSocketServer->get_con_from_hdl(m_webData->webHandle); - ipAddress = con->get_remote_endpoint(); + tcp::endpoint webClientEndpoint = con->get_raw_socket().remote_endpoint(errCode); + if (!errCode) { + ipAddress = webClientEndpoint.address().to_string(errCode); + } } return ipAddress; } From c6c044b7840f747d879ae67f6124936b52cb7a99 Mon Sep 17 00:00:00 2001 From: lotodore Date: Mon, 16 Sep 2013 22:57:12 +0200 Subject: [PATCH 055/128] Fixing crash when sending data to a closed websocket connection. --- src/net/common/websendbuffer.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/net/common/websendbuffer.cpp b/src/net/common/websendbuffer.cpp index c3489132..daba16d3 100644 --- a/src/net/common/websendbuffer.cpp +++ b/src/net/common/websendbuffer.cpp @@ -68,7 +68,11 @@ WebSendBuffer::InternalStorePacket(boost::shared_ptr session, boost google::protobuf::uint8 *buf = new google::protobuf::uint8[packetSize]; packet->GetMsg()->SerializeWithCachedSizesToArray(buf); - m_webData->webSocketServer->send(m_webData->webHandle, string((const char *)buf, packetSize), websocketpp::frame::opcode::BINARY); + boost::system::error_code ec; + m_webData->webSocketServer->send(m_webData->webHandle, string((const char *)buf, packetSize), websocketpp::frame::opcode::BINARY, ec); + if (ec) { + SetCloseAfterSend(); + } delete[] buf; } From 20eb7b94bd6e709ad0537fa5dfb49957b03d58cc Mon Sep 17 00:00:00 2001 From: lotodore Date: Mon, 16 Sep 2013 23:11:16 +0200 Subject: [PATCH 056/128] Fixing several compiler warnings. --- src/net/common/asiosendbuffer.cpp | 2 +- src/net/common/serveracceptwebhelper.cpp | 4 ++-- src/net/common/sessiondata.cpp | 10 ++++++++-- src/net/common/webreceivebuffer.cpp | 2 +- src/net/common/websendbuffer.cpp | 11 +++++++---- src/net/sessiondata.h | 1 + src/net/websendbuffer.h | 5 +---- 7 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/net/common/asiosendbuffer.cpp b/src/net/common/asiosendbuffer.cpp index 9dad639c..6e379926 100644 --- a/src/net/common/asiosendbuffer.cpp +++ b/src/net/common/asiosendbuffer.cpp @@ -99,7 +99,7 @@ AsioSendBuffer::AsyncSendNextPacket(boost::shared_ptr session, boost::shared_ptr packet) +AsioSendBuffer::InternalStorePacket(boost::shared_ptr /*session*/, boost::shared_ptr packet) { uint32_t packetSize = packet->GetMsg()->ByteSize(); google::protobuf::uint8 *buf = new google::protobuf::uint8[packetSize + NET_HEADER_SIZE]; diff --git a/src/net/common/serveracceptwebhelper.cpp b/src/net/common/serveracceptwebhelper.cpp index aac05908..f5149ad2 100644 --- a/src/net/common/serveracceptwebhelper.cpp +++ b/src/net/common/serveracceptwebhelper.cpp @@ -37,7 +37,7 @@ using namespace std; ServerAcceptWebHelper::ServerAcceptWebHelper(ServerCallback &serverCallback, boost::shared_ptr ioService) - : m_serverCallback(serverCallback), m_ioService(ioService) + : m_ioService(ioService), m_serverCallback(serverCallback) { m_webSocketServer.reset(new server); } @@ -71,7 +71,7 @@ ServerAcceptWebHelper::Close() } bool -ServerAcceptWebHelper::validate(websocketpp::connection_hdl hdl) +ServerAcceptWebHelper::validate(websocketpp::connection_hdl /*hdl*/) { return true; } diff --git a/src/net/common/sessiondata.cpp b/src/net/common/sessiondata.cpp index 63e0a1ed..372300bb 100644 --- a/src/net/common/sessiondata.cpp +++ b/src/net/common/sessiondata.cpp @@ -50,13 +50,13 @@ SessionData::SessionData(boost::shared_ptr sock, S m_sendBuffer.reset(new AsioSendBuffer); } -SessionData::SessionData(boost::shared_ptr webData, SessionId id, SessionDataCallback &cb, boost::asio::io_service &ioService, int filler) +SessionData::SessionData(boost::shared_ptr webData, SessionId id, SessionDataCallback &cb, boost::asio::io_service &ioService, int /*filler*/) : m_webData(webData), m_id(id), m_state(SessionData::Init), m_readyFlag(false), m_wantsLobbyMsg(true), m_activityTimeoutSec(0), m_activityWarningRemainingSec(0), m_initTimeoutTimer(ioService), m_globalTimeoutTimer(ioService), m_activityTimeoutTimer(ioService), m_callback(cb), m_authSession(NULL), m_curAuthStep(0) { m_receiveBuffer.reset(new WebReceiveBuffer); - m_sendBuffer.reset(new WebSendBuffer(webData)); + m_sendBuffer.reset(new WebSendBuffer); } SessionData::~SessionData() @@ -107,6 +107,12 @@ SessionData::GetAsioSocket() return m_socket; } +boost::shared_ptr +SessionData::GetWebData() +{ + return m_webData; +} + bool SessionData::CreateServerAuthSession(Gsasl *context) { diff --git a/src/net/common/webreceivebuffer.cpp b/src/net/common/webreceivebuffer.cpp index e2b0fc0a..05c7d820 100644 --- a/src/net/common/webreceivebuffer.cpp +++ b/src/net/common/webreceivebuffer.cpp @@ -41,7 +41,7 @@ WebReceiveBuffer::WebReceiveBuffer() } void -WebReceiveBuffer::StartAsyncRead(boost::shared_ptr session) +WebReceiveBuffer::StartAsyncRead(boost::shared_ptr /*session*/) { // Nothing to do. This is handled internally by websocketpp. } diff --git a/src/net/common/websendbuffer.cpp b/src/net/common/websendbuffer.cpp index daba16d3..2ba665a5 100644 --- a/src/net/common/websendbuffer.cpp +++ b/src/net/common/websendbuffer.cpp @@ -32,12 +32,13 @@ #include #include #include +#include using namespace std; -WebSendBuffer::WebSendBuffer(boost::shared_ptr webData) - : closeAfterSend(false), m_webData(webData) +WebSendBuffer::WebSendBuffer() + : closeAfterSend(false) { } @@ -57,7 +58,8 @@ WebSendBuffer::AsyncSendNextPacket(boost::shared_ptr session) { if (closeAfterSend) { boost::system::error_code ec; - m_webData->webSocketServer->close(m_webData->webHandle, websocketpp::close::status::normal, "PokerTH server closed the connection.", ec); + boost::shared_ptr webData = session->GetWebData(); + webData->webSocketServer->close(webData->webHandle, websocketpp::close::status::normal, "PokerTH server closed the connection.", ec); } } @@ -69,7 +71,8 @@ WebSendBuffer::InternalStorePacket(boost::shared_ptr session, boost packet->GetMsg()->SerializeWithCachedSizesToArray(buf); boost::system::error_code ec; - m_webData->webSocketServer->send(m_webData->webHandle, string((const char *)buf, packetSize), websocketpp::frame::opcode::BINARY, ec); + boost::shared_ptr webData = session->GetWebData(); + webData->webSocketServer->send(webData->webHandle, string((const char *)buf, packetSize), websocketpp::frame::opcode::BINARY, ec); if (ec) { SetCloseAfterSend(); } diff --git a/src/net/sessiondata.h b/src/net/sessiondata.h index e74eefa1..48d94d9b 100644 --- a/src/net/sessiondata.h +++ b/src/net/sessiondata.h @@ -74,6 +74,7 @@ public: void SetState(State state); boost::shared_ptr GetAsioSocket(); + boost::shared_ptr GetWebData(); bool CreateServerAuthSession(Gsasl *context); bool CreateClientAuthSession(Gsasl *context, const std::string &userName, const std::string &password); diff --git a/src/net/websendbuffer.h b/src/net/websendbuffer.h index e3005d50..632be600 100644 --- a/src/net/websendbuffer.h +++ b/src/net/websendbuffer.h @@ -36,12 +36,10 @@ #include #include -struct WebSocketData; - class WebSendBuffer : public SendBuffer { public: - WebSendBuffer(boost::shared_ptr webData); + WebSendBuffer(); virtual void SetCloseAfterSend(); @@ -52,7 +50,6 @@ public: private: bool closeAfterSend; - boost::shared_ptr m_webData; }; #endif From cc1ae91c9234bb5f729f1cfe2ae54cbd2a2cc9ac Mon Sep 17 00:00:00 2001 From: doitux Date: Sat, 21 Sep 2013 23:04:40 +0200 Subject: [PATCH 057/128] windows menu bugfix try --- src/gui/qt/startwindow/startwindowimpl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/qt/startwindow/startwindowimpl.cpp b/src/gui/qt/startwindow/startwindowimpl.cpp index bcdacc09..3d5031ef 100644 --- a/src/gui/qt/startwindow/startwindowimpl.cpp +++ b/src/gui/qt/startwindow/startwindowimpl.cpp @@ -146,7 +146,7 @@ startWindowImpl::startWindowImpl(ConfigFile *c, Log *l) connect( pushButton_configure, SIGNAL( clicked() ), this, SLOT( callSettingsDialogFromStartwindow() ) ); #else //Desktop - this->menubar->setStyleSheet("QMenuBar { background-color: #505050; font-size:12px; border-width: 0px;} QMenuBar::item { color: #FDC942; }"); + this->menubar->setStyleSheet("QMenuBar { background-color: #505050; font-size:12px; border-width: 0px;} QMenuBar::item { background-color: #505050; color: #FDC942; }"); centralwidget->setStyleSheet(".QWidget { background-image: url(\""+myAppDataPath+"gfx/gui/misc/startwindowbg10_desktop.png\"); background-position: bottom center; background-origin: content; background-repeat: no-repeat;}"); pushButtonStart_Local_Game->setStyleSheet("QPushButton { text-align:left; font-weight:bold; padding-left: 1px; padding-bottom: 3px; padding-top: 3px; padding-right: 3px; background-color: #505050; color: #FDC942; font-size:12px; border-width: 0px;}"); From a16bbbb0e25e98028b2bc8be0556a9f9efb84df3 Mon Sep 17 00:00:00 2001 From: doitux Date: Sat, 21 Sep 2013 23:28:12 +0200 Subject: [PATCH 058/128] gametable windows menu fix --- src/gui/qt/styles/gametablestylereader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/qt/styles/gametablestylereader.cpp b/src/gui/qt/styles/gametablestylereader.cpp index d1829d6c..44ef1c37 100644 --- a/src/gui/qt/styles/gametablestylereader.cpp +++ b/src/gui/qt/styles/gametablestylereader.cpp @@ -1409,7 +1409,7 @@ void GameTableStyleReader::setCardHolderStyle(QLabel *l, int bero) void GameTableStyleReader::setMenuBarStyle(QMenuBar *mb) { - mb->setStyleSheet("QMenuBar { background-color: #"+MenuBgColor+"; font-size:12px; border-width: 0px;} QMenuBar::item { color: #"+MenuTextColor+"; }"); + mb->setStyleSheet("QMenuBar { background-color: #"+MenuBgColor+"; font-size:12px; border-width: 0px;} QMenuBar::item { background-color: #"+MenuBgColor+"; color: #"+MenuTextColor+"; }"); } void GameTableStyleReader::setBreakButtonStyle(QPushButton *bb, int state) From 7a782a845e98fc46ebd470154ba487d6762ffde1 Mon Sep 17 00:00:00 2001 From: doitux Date: Sun, 22 Sep 2013 00:06:33 +0200 Subject: [PATCH 059/128] QMenubar gui bugfix --- src/gui/qt/startwindow/startwindowimpl.cpp | 2 +- src/gui/qt/styles/gametablestylereader.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/qt/startwindow/startwindowimpl.cpp b/src/gui/qt/startwindow/startwindowimpl.cpp index 3d5031ef..7059d84b 100644 --- a/src/gui/qt/startwindow/startwindowimpl.cpp +++ b/src/gui/qt/startwindow/startwindowimpl.cpp @@ -146,7 +146,7 @@ startWindowImpl::startWindowImpl(ConfigFile *c, Log *l) connect( pushButton_configure, SIGNAL( clicked() ), this, SLOT( callSettingsDialogFromStartwindow() ) ); #else //Desktop - this->menubar->setStyleSheet("QMenuBar { background-color: #505050; font-size:12px; border-width: 0px;} QMenuBar::item { background-color: #505050; color: #FDC942; }"); + this->menubar->setStyleSheet("QMenuBar { background-color: #505050; font-size:12px; border-width: 0px;} QMenuBar::item { background: transparent; color: #FDC942; } QMenuBar::item:selected { background: #787878; color: #FDC942; } QMenuBar::item:pressed { background: #FDC942; color: #505050; }"); centralwidget->setStyleSheet(".QWidget { background-image: url(\""+myAppDataPath+"gfx/gui/misc/startwindowbg10_desktop.png\"); background-position: bottom center; background-origin: content; background-repeat: no-repeat;}"); pushButtonStart_Local_Game->setStyleSheet("QPushButton { text-align:left; font-weight:bold; padding-left: 1px; padding-bottom: 3px; padding-top: 3px; padding-right: 3px; background-color: #505050; color: #FDC942; font-size:12px; border-width: 0px;}"); diff --git a/src/gui/qt/styles/gametablestylereader.cpp b/src/gui/qt/styles/gametablestylereader.cpp index 44ef1c37..5cab9d2c 100644 --- a/src/gui/qt/styles/gametablestylereader.cpp +++ b/src/gui/qt/styles/gametablestylereader.cpp @@ -1409,7 +1409,7 @@ void GameTableStyleReader::setCardHolderStyle(QLabel *l, int bero) void GameTableStyleReader::setMenuBarStyle(QMenuBar *mb) { - mb->setStyleSheet("QMenuBar { background-color: #"+MenuBgColor+"; font-size:12px; border-width: 0px;} QMenuBar::item { background-color: #"+MenuBgColor+"; color: #"+MenuTextColor+"; }"); + mb->setStyleSheet("QMenuBar { background-color: #"+MenuBgColor+"; font-size:12px; border-width: 0px;} QMenuBar::item { background: transparent; color: #"+MenuTextColor+"; } QMenuBar::item:selected { background: #"+MenuTextColor+"; color: #"+MenuBgColor+"; } QMenuBar::item:pressed { background: #"+MenuTextColor+"; color: #"+MenuBgColor+"; }"); } void GameTableStyleReader::setBreakButtonStyle(QPushButton *bb, int state) From 07336778c5abacef244b2d4eeb0fe753f38c5bec Mon Sep 17 00:00:00 2001 From: doitux Date: Sun, 22 Sep 2013 00:43:11 +0200 Subject: [PATCH 060/128] try a gui bugfix for checkable groupboxes --- src/gui/qt/internetgamelogindialog.ui | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/gui/qt/internetgamelogindialog.ui b/src/gui/qt/internetgamelogindialog.ui index 0f3d5b40..4fc69f44 100644 --- a/src/gui/qt/internetgamelogindialog.ui +++ b/src/gui/qt/internetgamelogindialog.ui @@ -6,7 +6,7 @@ 0 0 - 292 + 300 230 @@ -14,6 +14,9 @@ Internet Game Login + + 11 + @@ -23,6 +26,9 @@ true + + 11 + From 14bf9504715b02d80f845c2dc4ba9f35967bad0a Mon Sep 17 00:00:00 2001 From: doitux Date: Sun, 22 Sep 2013 01:11:07 +0200 Subject: [PATCH 061/128] revert group/checkbox try --- src/gui/qt/internetgamelogindialog.ui | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/gui/qt/internetgamelogindialog.ui b/src/gui/qt/internetgamelogindialog.ui index 4fc69f44..97381d87 100644 --- a/src/gui/qt/internetgamelogindialog.ui +++ b/src/gui/qt/internetgamelogindialog.ui @@ -14,9 +14,6 @@ Internet Game Login - - 11 - @@ -26,9 +23,6 @@ true - - 11 - From a304903883f78ddfa2746dd9aeb3304e91ead801 Mon Sep 17 00:00:00 2001 From: lotodore Date: Tue, 24 Sep 2013 23:40:10 +0200 Subject: [PATCH 062/128] Send dealer player id with each hand start message. --- pokerth.proto | 1 + src/net/common/servergamestate.cpp | 1 + src/third_party/protobuf/pokerth.pb.cc | 35 +++++++++ src/third_party/protobuf/pokerth.pb.h | 34 ++++++++- tests/src/de/pokerth/protocol/ProtoBuf.java | 81 +++++++++++++++++++++ 5 files changed, 151 insertions(+), 1 deletion(-) diff --git a/pokerth.proto b/pokerth.proto index 3f7632b3..9724b6d0 100644 --- a/pokerth.proto +++ b/pokerth.proto @@ -451,6 +451,7 @@ message HandStartMessage { optional bytes encryptedCards = 3; required uint32 smallBlind = 4; repeated NetPlayerState seatStates = 5; + optional uint32 dealerPlayerId = 6; } message PlayersTurnMessage { diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index b066b4d6..7b9fa67b 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -438,6 +438,7 @@ AbstractServerGameStateReceiving::CreateNetPacketHandStart(const ServerGame &ser } netHandStart->set_smallblind(curGame.getCurrentHand()->getSmallBlind()); + netHandStart->set_dealerplayerid(curGame.getCurrentHand()->getDealerPosition()); return notifyCards; } diff --git a/src/third_party/protobuf/pokerth.pb.cc b/src/third_party/protobuf/pokerth.pb.cc index 872ff030..83b7ccc3 100644 --- a/src/third_party/protobuf/pokerth.pb.cc +++ b/src/third_party/protobuf/pokerth.pb.cc @@ -12596,6 +12596,7 @@ const int HandStartMessage::kPlainCardsFieldNumber; const int HandStartMessage::kEncryptedCardsFieldNumber; const int HandStartMessage::kSmallBlindFieldNumber; const int HandStartMessage::kSeatStatesFieldNumber; +const int HandStartMessage::kDealerPlayerIdFieldNumber; #endif // !_MSC_VER HandStartMessage::HandStartMessage() @@ -12624,6 +12625,7 @@ void HandStartMessage::SharedCtor() { plaincards_ = NULL; encryptedcards_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString); smallblind_ = 0u; + dealerplayerid_ = 0u; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -12676,6 +12678,7 @@ void HandStartMessage::Clear() { } } smallblind_ = 0u; + dealerplayerid_ = 0u; } seatstates_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); @@ -12769,6 +12772,22 @@ bool HandStartMessage::MergePartialFromCodedStream( goto handle_uninterpreted; } if (input->ExpectTag(40)) goto parse_seatStates; + if (input->ExpectTag(48)) goto parse_dealerPlayerId; + break; + } + + // optional uint32 dealerPlayerId = 6; + case 6: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_dealerPlayerId: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>( + input, &dealerplayerid_))); + set_has_dealerplayerid(); + } else { + goto handle_uninterpreted; + } if (input->ExpectAtEnd()) return true; break; } @@ -12818,6 +12837,11 @@ void HandStartMessage::SerializeWithCachedSizes( 5, this->seatstates(i), output); } + // optional uint32 dealerPlayerId = 6; + if (has_dealerplayerid()) { + ::google::protobuf::internal::WireFormatLite::WriteUInt32(6, this->dealerplayerid(), output); + } + } int HandStartMessage::ByteSize() const { @@ -12852,6 +12876,13 @@ int HandStartMessage::ByteSize() const { this->smallblind()); } + // optional uint32 dealerPlayerId = 6; + if (has_dealerplayerid()) { + total_size += 1 + + ::google::protobuf::internal::WireFormatLite::UInt32Size( + this->dealerplayerid()); + } + } // repeated .NetPlayerState seatStates = 5; { @@ -12890,6 +12921,9 @@ void HandStartMessage::MergeFrom(const HandStartMessage& from) { if (from.has_smallblind()) { set_smallblind(from.smallblind()); } + if (from.has_dealerplayerid()) { + set_dealerplayerid(from.dealerplayerid()); + } } } @@ -12915,6 +12949,7 @@ void HandStartMessage::Swap(HandStartMessage* other) { std::swap(encryptedcards_, other->encryptedcards_); std::swap(smallblind_, other->smallblind_); seatstates_.Swap(&other->seatstates_); + std::swap(dealerplayerid_, other->dealerplayerid_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } diff --git a/src/third_party/protobuf/pokerth.pb.h b/src/third_party/protobuf/pokerth.pb.h index 2e791ee4..53ca9f8e 100644 --- a/src/third_party/protobuf/pokerth.pb.h +++ b/src/third_party/protobuf/pokerth.pb.h @@ -6028,6 +6028,13 @@ class HandStartMessage : public ::google::protobuf::MessageLite { inline const ::google::protobuf::RepeatedField& seatstates() const; inline ::google::protobuf::RepeatedField* mutable_seatstates(); + // optional uint32 dealerPlayerId = 6; + inline bool has_dealerplayerid() const; + inline void clear_dealerplayerid(); + static const int kDealerPlayerIdFieldNumber = 6; + inline ::google::protobuf::uint32 dealerplayerid() const; + inline void set_dealerplayerid(::google::protobuf::uint32 value); + // @@protoc_insertion_point(class_scope:HandStartMessage) private: inline void set_has_gameid(); @@ -6038,15 +6045,18 @@ class HandStartMessage : public ::google::protobuf::MessageLite { inline void clear_has_encryptedcards(); inline void set_has_smallblind(); inline void clear_has_smallblind(); + inline void set_has_dealerplayerid(); + inline void clear_has_dealerplayerid(); ::HandStartMessage_PlainCards* plaincards_; ::google::protobuf::uint32 gameid_; ::google::protobuf::uint32 smallblind_; ::std::string* encryptedcards_; ::google::protobuf::RepeatedField seatstates_; + ::google::protobuf::uint32 dealerplayerid_; mutable int _cached_size_; - ::google::protobuf::uint32 _has_bits_[(5 + 31) / 32]; + ::google::protobuf::uint32 _has_bits_[(6 + 31) / 32]; #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER friend void protobuf_AddDesc_pokerth_2eproto_impl(); @@ -15865,6 +15875,28 @@ HandStartMessage::mutable_seatstates() { return &seatstates_; } +// optional uint32 dealerPlayerId = 6; +inline bool HandStartMessage::has_dealerplayerid() const { + return (_has_bits_[0] & 0x00000020u) != 0; +} +inline void HandStartMessage::set_has_dealerplayerid() { + _has_bits_[0] |= 0x00000020u; +} +inline void HandStartMessage::clear_has_dealerplayerid() { + _has_bits_[0] &= ~0x00000020u; +} +inline void HandStartMessage::clear_dealerplayerid() { + dealerplayerid_ = 0u; + clear_has_dealerplayerid(); +} +inline ::google::protobuf::uint32 HandStartMessage::dealerplayerid() const { + return dealerplayerid_; +} +inline void HandStartMessage::set_dealerplayerid(::google::protobuf::uint32 value) { + set_has_dealerplayerid(); + dealerplayerid_ = value; +} + // ------------------------------------------------------------------- // PlayersTurnMessage diff --git a/tests/src/de/pokerth/protocol/ProtoBuf.java b/tests/src/de/pokerth/protocol/ProtoBuf.java index df31b13d..f741871a 100644 --- a/tests/src/de/pokerth/protocol/ProtoBuf.java +++ b/tests/src/de/pokerth/protocol/ProtoBuf.java @@ -27845,6 +27845,16 @@ public final class ProtoBuf { * repeated .NetPlayerState seatStates = 5; */ de.pokerth.protocol.ProtoBuf.NetPlayerState getSeatStates(int index); + + // optional uint32 dealerPlayerId = 6; + /** + * optional uint32 dealerPlayerId = 6; + */ + boolean hasDealerPlayerId(); + /** + * optional uint32 dealerPlayerId = 6; + */ + int getDealerPlayerId(); } /** * Protobuf type {@code HandStartMessage} @@ -27946,6 +27956,11 @@ public final class ProtoBuf { input.popLimit(oldLimit); break; } + case 48: { + bitField0_ |= 0x00000010; + dealerPlayerId_ = input.readUInt32(); + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -28492,12 +28507,29 @@ public final class ProtoBuf { return seatStates_.get(index); } + // optional uint32 dealerPlayerId = 6; + public static final int DEALERPLAYERID_FIELD_NUMBER = 6; + private int dealerPlayerId_; + /** + * optional uint32 dealerPlayerId = 6; + */ + public boolean hasDealerPlayerId() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional uint32 dealerPlayerId = 6; + */ + public int getDealerPlayerId() { + return dealerPlayerId_; + } + private void initFields() { gameId_ = 0; plainCards_ = de.pokerth.protocol.ProtoBuf.HandStartMessage.PlainCards.getDefaultInstance(); encryptedCards_ = com.google.protobuf.ByteString.EMPTY; smallBlind_ = 0; seatStates_ = java.util.Collections.emptyList(); + dealerPlayerId_ = 0; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -28540,6 +28572,9 @@ public final class ProtoBuf { for (int i = 0; i < seatStates_.size(); i++) { output.writeEnum(5, seatStates_.get(i).getNumber()); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeUInt32(6, dealerPlayerId_); + } } private int memoizedSerializedSize = -1; @@ -28573,6 +28608,10 @@ public final class ProtoBuf { size += dataSize; size += 1 * seatStates_.size(); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += com.google.protobuf.CodedOutputStream + .computeUInt32Size(6, dealerPlayerId_); + } memoizedSerializedSize = size; return size; } @@ -28674,6 +28713,8 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000008); seatStates_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000010); + dealerPlayerId_ = 0; + bitField0_ = (bitField0_ & ~0x00000020); return this; } @@ -28718,6 +28759,10 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00000010); } result.seatStates_ = seatStates_; + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000010; + } + result.dealerPlayerId_ = dealerPlayerId_; result.bitField0_ = to_bitField0_; return result; } @@ -28746,6 +28791,9 @@ public final class ProtoBuf { } } + if (other.hasDealerPlayerId()) { + setDealerPlayerId(other.getDealerPlayerId()); + } return this; } @@ -29021,6 +29069,39 @@ public final class ProtoBuf { return this; } + // optional uint32 dealerPlayerId = 6; + private int dealerPlayerId_ ; + /** + * optional uint32 dealerPlayerId = 6; + */ + public boolean hasDealerPlayerId() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * optional uint32 dealerPlayerId = 6; + */ + public int getDealerPlayerId() { + return dealerPlayerId_; + } + /** + * optional uint32 dealerPlayerId = 6; + */ + public Builder setDealerPlayerId(int value) { + bitField0_ |= 0x00000020; + dealerPlayerId_ = value; + + return this; + } + /** + * optional uint32 dealerPlayerId = 6; + */ + public Builder clearDealerPlayerId() { + bitField0_ = (bitField0_ & ~0x00000020); + dealerPlayerId_ = 0; + + return this; + } + // @@protoc_insertion_point(builder_scope:HandStartMessage) } From 8baecdf9e0f6f6dfaaf9c78ce34032b527aca6c0 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 28 Sep 2013 18:58:43 +0200 Subject: [PATCH 063/128] Send spectator list to joining players. --- src/net/common/servergamestate.cpp | 9 +++++++++ src/net/common/sessionmanager.cpp | 22 ++++++++++++++++++++++ src/net/sessionmanager.h | 1 + 3 files changed, 32 insertions(+) diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index 7b9fa67b..a807c738 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -460,6 +460,15 @@ AbstractServerGameStateReceiving::AcceptNewSession(boost::shared_ptr ++player_i; } + // Send notifications for connected spectators to client. + PlayerDataList tmpSpectatorList(server->GetSessionManager().GetSpectatorDataList()); + PlayerDataList::iterator spectator_i = tmpSpectatorList.begin(); + PlayerDataList::iterator spectator_end = tmpSpectatorList.end(); + while (spectator_i != spectator_end) { + server->GetLobbyThread().GetSender().Send(session, CreateNetPacketSpectatorJoined(server->GetId(), *(*spectator_i))); + ++spectator_i; + } + // Send "Player Joined"/"Spectator Joined" to other fully connected clients. if (spectateOnly) { server->SendToAllPlayers(CreateNetPacketSpectatorJoined(server->GetId(), *session->GetPlayerData()), SessionData::Game | SessionData::Spectating | SessionData::SpectatorWaiting); diff --git a/src/net/common/sessionmanager.cpp b/src/net/common/sessionmanager.cpp index 56a7e7b0..bd8b65eb 100644 --- a/src/net/common/sessionmanager.cpp +++ b/src/net/common/sessionmanager.cpp @@ -161,6 +161,28 @@ SessionManager::GetPlayerDataList() const return playerList; } +PlayerDataList +SessionManager::GetSpectatorDataList() const +{ + PlayerDataList spectatorList; + boost::recursive_mutex::scoped_lock lock(m_sessionMapMutex); + + SessionMap::const_iterator session_i = m_sessionMap.begin(); + SessionMap::const_iterator session_end = m_sessionMap.end(); + + while (session_i != session_end) { + // Get all spectators of the game. + if (session_i->second->GetState() == SessionData::Spectating || session_i->second->GetState() == SessionData::SpectatorWaiting) { + boost::shared_ptr tmpPlayer(session_i->second->GetPlayerData()); + if (!tmpPlayer.get() || tmpPlayer->GetName().empty()) + throw ServerException(__FILE__, __LINE__, ERR_NET_INVALID_SESSION, 0); + spectatorList.push_back(tmpPlayer); + } + ++session_i; + } + return spectatorList; +} + PlayerIdList SessionManager::GetPlayerIdList(int state) const { diff --git a/src/net/sessionmanager.h b/src/net/sessionmanager.h index ac3cd3df..8e90a544 100644 --- a/src/net/sessionmanager.h +++ b/src/net/sessionmanager.h @@ -59,6 +59,7 @@ public: boost::shared_ptr GetSessionByUniquePlayerId(unsigned uniqueId, bool initSessions = false) const; PlayerDataList GetPlayerDataList() const; + PlayerDataList GetSpectatorDataList() const; PlayerIdList GetPlayerIdList(int state) const; bool IsPlayerConnected(const std::string &playerName) const; bool IsPlayerConnected(unsigned uniqueId) const; From d82c9a510dc0949399a33ee43be5a6f04d436932 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 29 Sep 2013 13:15:37 +0200 Subject: [PATCH 064/128] Add spectator list during the game (when lobby messages are disabled). --- src/engine/game.cpp | 15 +++++++----- src/gamedata.h | 1 + src/net/clientthread.h | 3 +++ src/net/common/clientstate.cpp | 10 ++++++-- src/net/common/clientthread.cpp | 42 +++++++++++++++++++++++++++++++++ 5 files changed, 63 insertions(+), 8 deletions(-) diff --git a/src/engine/game.cpp b/src/engine/game.cpp index e1582182..8d1fe4dc 100755 --- a/src/engine/game.cpp +++ b/src/engine/game.cpp @@ -220,8 +220,9 @@ void Game::startHand() boost::shared_ptr Game::getPlayerByUniqueId(unsigned id) { boost::shared_ptr tmpPlayer; - PlayerListIterator i = getSeatsList()->begin(); - PlayerListIterator end = getSeatsList()->end(); + PlayerList tmpList = getSeatsList(); + PlayerListIterator i = tmpList->begin(); + PlayerListIterator end = tmpList->end(); while (i != end) { if ((*i)->getMyUniqueID() == id) { tmpPlayer = *i; @@ -235,8 +236,9 @@ boost::shared_ptr Game::getPlayerByUniqueId(unsigned id) boost::shared_ptr Game::getPlayerByNumber(int number) { boost::shared_ptr tmpPlayer; - PlayerListIterator i = getSeatsList()->begin(); - PlayerListIterator end = getSeatsList()->end(); + PlayerList tmpList = getSeatsList(); + PlayerListIterator i = tmpList->begin(); + PlayerListIterator end = tmpList->end(); while (i != end) { if ((*i)->getMyID() == number) { tmpPlayer = *i; @@ -258,8 +260,9 @@ boost::shared_ptr Game::getCurrentPlayer() boost::shared_ptr Game::getPlayerByName(const std::string &name) { boost::shared_ptr tmpPlayer; - PlayerListIterator i = getSeatsList()->begin(); - PlayerListIterator end = getSeatsList()->end(); + PlayerList tmpList = getSeatsList(); + PlayerListIterator i = tmpList->begin(); + PlayerListIterator end = tmpList->end(); while (i != end) { if ((*i)->getMyName() == name) { tmpPlayer = *i; diff --git a/src/gamedata.h b/src/gamedata.h index a5e3e0d5..cb5a463a 100644 --- a/src/gamedata.h +++ b/src/gamedata.h @@ -102,6 +102,7 @@ struct GameInfo { unsigned adminPlayerId; PlayerIdList players; PlayerIdList spectators; + PlayerIdList spectatorsDuringGame; bool isPasswordProtected; }; diff --git a/src/net/clientthread.h b/src/net/clientthread.h index ae16614a..39de5407 100644 --- a/src/net/clientthread.h +++ b/src/net/clientthread.h @@ -218,6 +218,9 @@ protected: void ModifyGameInfoRemovePlayer(unsigned gameId, unsigned playerId); void ModifyGameInfoAddSpectator(unsigned gameId, unsigned playerId); void ModifyGameInfoRemoveSpectator(unsigned gameId, unsigned playerId); + void ModifyGameInfoClearSpectatorsDuringGame(); + void ModifyGameInfoAddSpectatorDuringGame(unsigned playerId); + void ModifyGameInfoRemoveSpectatorDuringGame(unsigned playerId, int removeReason); void ClearGameInfoMap(); void StartPetition(unsigned petitionId, unsigned proposingPlayerId, unsigned kickPlayerId, int timeoutSec, int numVotesToKick); diff --git a/src/net/common/clientstate.cpp b/src/net/common/clientstate.cpp index 25520963..a22620ce 100644 --- a/src/net/common/clientstate.cpp +++ b/src/net/common/clientstate.cpp @@ -631,7 +631,12 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr clien } else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_GameSpectatorJoinedMessage) { // Another spectator joined the network game. const GameSpectatorJoinedMessage &netSpectatorJoined = tmpPacket->GetMsg()->gamespectatorjoinedmessage(); - client->GetCallback().SignalNetClientSpectatorJoined(netSpectatorJoined.playerid(), client->GetPlayerName(netSpectatorJoined.playerid())); + // Request player info if needed. + PlayerInfo info; + if (!client->GetCachedPlayerInfo(netSpectatorJoined.playerid(), info)) { + client->RequestPlayerInfo(netSpectatorJoined.playerid()); + } + client->ModifyGameInfoAddSpectatorDuringGame(netSpectatorJoined.playerid()); } else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_GameSpectatorLeftMessage) { // A spectator left the network game. const GameSpectatorLeftMessage &netSpectatorLeft = tmpPacket->GetMsg()->gamespectatorleftmessage(); @@ -645,7 +650,7 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr clien removeReason = NTF_NET_REMOVED_ON_REQUEST; break; } - client->GetCallback().SignalNetClientSpectatorLeft(netSpectatorLeft.playerid(), client->GetPlayerName(netSpectatorLeft.playerid()), removeReason); + client->ModifyGameInfoRemoveSpectatorDuringGame(netSpectatorLeft.playerid(), removeReason); } else if (tmpPacket->GetMsg()->messagetype() == PokerTHMessage::Type_TimeoutWarningMessage) { const TimeoutWarningMessage &tmpTimeout = tmpPacket->GetMsg()->timeoutwarningmessage(); client->GetCallback().SignalNetClientShowTimeoutDialog((NetTimeoutReason)tmpTimeout.timeoutreason(), tmpTimeout.remainingseconds()); @@ -1252,6 +1257,7 @@ ClientStateWaitJoin::InternalHandlePacket(boost::shared_ptr client GameData tmpData; NetPacket::GetGameData(netJoinAck.gameinfo(), tmpData); client->SetGameData(tmpData); + client->ModifyGameInfoClearSpectatorsDuringGame(); // Player number is 0 on init. Will be set when the game starts. boost::shared_ptr playerData( diff --git a/src/net/common/clientthread.cpp b/src/net/common/clientthread.cpp index e396fbd0..775bce70 100644 --- a/src/net/common/clientthread.cpp +++ b/src/net/common/clientthread.cpp @@ -1454,6 +1454,48 @@ ClientThread::ModifyGameInfoRemoveSpectator(unsigned gameId, unsigned playerId) GetCallback().SignalNetClientGameListSpectatorLeft(gameId, playerId); } +void +ClientThread::ModifyGameInfoClearSpectatorsDuringGame() +{ + boost::mutex::scoped_lock lock(m_gameInfoMapMutex); + GameInfoMap::iterator pos = m_gameInfoMap.find(GetGameId()); + if (pos != m_gameInfoMap.end()) { + pos->second.spectatorsDuringGame.clear(); + } +} + +void +ClientThread::ModifyGameInfoAddSpectatorDuringGame(unsigned playerId) +{ + bool spectatorAdded = false; + { + boost::mutex::scoped_lock lock(m_gameInfoMapMutex); + GameInfoMap::iterator pos = m_gameInfoMap.find(GetGameId()); + if (pos != m_gameInfoMap.end()) { + pos->second.spectatorsDuringGame.push_back(playerId); + spectatorAdded = true; + } + } + if (spectatorAdded) + GetCallback().SignalNetClientSpectatorJoined(playerId, GetPlayerName(playerId)); +} + +void +ClientThread::ModifyGameInfoRemoveSpectatorDuringGame(unsigned playerId, int removeReason) +{ + bool spectatorRemoved = false; + { + boost::mutex::scoped_lock lock(m_gameInfoMapMutex); + GameInfoMap::iterator pos = m_gameInfoMap.find(GetGameId()); + if (pos != m_gameInfoMap.end()) { + pos->second.spectatorsDuringGame.remove(playerId); + spectatorRemoved = true; + } + } + if (spectatorRemoved) + GetCallback().SignalNetClientSpectatorLeft(playerId, GetPlayerName(playerId), removeReason); +} + void ClientThread::ClearGameInfoMap() { From d822130255609d5dee4527e8286114f8fd118a87 Mon Sep 17 00:00:00 2001 From: doitux Date: Sun, 29 Sep 2013 22:24:16 +0200 Subject: [PATCH 065/128] add spectator image --- src/gui/qt/resources/spectator.png | Bin 0 -> 2018 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 src/gui/qt/resources/spectator.png diff --git a/src/gui/qt/resources/spectator.png b/src/gui/qt/resources/spectator.png new file mode 100755 index 0000000000000000000000000000000000000000..f9d3213cf7da42b0cc06d0561f6f1152eeded29e GIT binary patch literal 2018 zcmV<82Oao{P)jlh`ud$;`H@zZWlJj!T~4K7fk6o}ENjb} zSi;JP{jnlv3pXKYYc%FE5ei4qY-Pr3r5H8K#9Bu5X{9AvroLucet)O$p6BB4#pJbg z+l9k@y}xtMdG0ySIrnO2Fc@SaBP%P*rLCYA*)0SAe1_q3dIOu>fY0@M?{*5PRN;q3uT8e{%gNjg2PEOO#ojYg1PoF727N!=F zKMUmZ@`@EJ#Ldl38MCsolHT5485$Z=PW$?lJrxBzJ39&;QV4>8mENjVtK3^#TeAUv z9Y73?2LK)Y9u^j6#}k53Jdv86oSd{UQ-_fuAcCWgk(63g`8NSZMn)~s1P4GkL|&@ml?lydIeIeGBlfda*<07(_d$&)7&B%M=N&7Pi~I`Ak9 z;N}Bd>qvj*qX9HEHDyelI@OF$DKs$Bd17LstX#QLii?X?n9&Cm7^bVJs7UmBz0%|0 z9u3U2Y12H{ty`z6VoU&FtJTGe7eCTYt`Uoap-o6gkgHd(N@!@Pa#USiE#>9qit&pV zFP7cAcdLHz^5sjWVPs_x0Mii#J9c9M;KomIdUGwG+GhTZx>hIj^YfFEk`hTvOXHgQ zy?OIyDJ(3MrAwDeQc{w1c6O2<8VG`C#gM2A;Kp$*4v<*$$#`z$CJG12QO=w>qjLS| z(Id`Gm7viOBzd45JbU&`oSmJeuC7j8U0ub|(a}gs&i3~94lJCp05GRB0fHNhdE`uT z-MxF4juipx>+2;yKi|j^w&L2_S_Q(_*O$7S>5wKgdpw9W2Bfy4<@W8{5)u-^n~;oF%$_r6j<~ioOHg08IDtRp z0HepqU=Tb(Fio`I&P>Cm$rP|}UxLygLagiP=pYDgB+*n@ckS9G85tQ86B8q7udEuS z6Nu>02})S@@82)(?(Rkcb3X<4xK>6?V@9B=s;YDC+O;(5z z_VJdJn>TNAP3c^?aDjUzJw2WG2FYl2&iw?7(9>ofm&YO@4fe;!$A1gb6hh2#64oxm z&Cs%@RUbHg`ZS5frlZzp%$UKwp{hFE@=KoM>X=x42zZ%bV%+Z1q#^Sas zKqx70Iwb(k z1VaGaH#BqR%*@=}+=Ihme`&y&C;$zFJtMkd!-g->bP`dbx*IocFuWQ!m=3LJ@xJJP z`t<2m=oDk$Ypk`r%f5xYXKdQE$$9qd**`8{zI;78A>ROh1_lP+L~cJs8(xE`bb@fX z2zwdYb0ng*V$q^SStn1PJPfeO|N2?JWy=;jgf;1F3_Q*4;JgH#Z^yA?$I9{98e)kD zN-f%Qd2(`c1UosTXZ`y1!RQM=14J;S9sgH+50L2x4jkw+>4*R{At1Or5fS?l;1~7baeCp{v9hDy-quEadGjfsi}Hg+lFh`u2sdx#>Qa%gVDNL1W2k7 z++sOFK|wwwn7_Y&M_F0f52){7OrU2qtVUz{1JCxMhYufm!A`?y9RO!r{0266T)A?^ z7UjzaO$i9iC%XPE4g?1WAN0XM+3`Klh-MOa{P^)kF+GSrl*~tovHf{N8b*=VYB((^ z=!(CgvzFs3*L{qEGX4(hTSsz$ef%r1`6pZ+S5Qi6FwTx*0~v(0QK&x*T8Gp4p(N80 zi2;!9^WjToXjq?nEg_DqAO;u} Date: Mon, 30 Sep 2013 10:23:51 +0200 Subject: [PATCH 066/128] implement spectator display on the table to check if spectators watching the current game (#196) --- src/gui/generic/serverguiwrapper.cpp | 20 -- .../gamelobbydialog/gamelobbydialogimpl.cpp | 9 - src/gui/qt/gametable.ui | 184 +++++++++++++++--- src/gui/qt/gametable/gametableimpl.cpp | 47 ++++- src/gui/qt/gametable/gametableimpl.h | 4 + src/gui/qt/guiwrapper.cpp | 2 + src/gui/qt/resources/pokerth.qrc | 1 + src/gui/qt/resources/pokerth_android.qrc | 1 + 8 files changed, 208 insertions(+), 60 deletions(-) diff --git a/src/gui/generic/serverguiwrapper.cpp b/src/gui/generic/serverguiwrapper.cpp index 3aeab28b..b0b1f535 100644 --- a/src/gui/generic/serverguiwrapper.cpp +++ b/src/gui/generic/serverguiwrapper.cpp @@ -58,70 +58,50 @@ void ServerGuiWrapper::setSession(boost::shared_ptr session) } void ServerGuiWrapper::refreshSet() const {} - void ServerGuiWrapper::refreshCash() const {} - void ServerGuiWrapper::refreshAction(int /*playerID*/, int /*playerAction*/) const {} - void ServerGuiWrapper::refreshChangePlayer() const {} - void ServerGuiWrapper::refreshAll() const {} - void ServerGuiWrapper::refreshPot() const {} void ServerGuiWrapper::refreshGroupbox(int /*playerID*/, int /*status*/) const {} void ServerGuiWrapper::refreshPlayerName() const {} void ServerGuiWrapper::refreshButton() const {} void ServerGuiWrapper::refreshGameLabels(GameState /*state*/) const {} - void ServerGuiWrapper::setPlayerAvatar(int /*myUniqueID*/, const std::string &/*myAvatar*/) const {}; - void ServerGuiWrapper::waitForGuiUpdateDone() const {} - void ServerGuiWrapper::dealBeRoCards(int /*myBeRoID*/) {} void ServerGuiWrapper::dealHoleCards() {} void ServerGuiWrapper::dealFlopCards() {} void ServerGuiWrapper::dealTurnCard() {} void ServerGuiWrapper::dealRiverCard() {} - void ServerGuiWrapper::nextPlayerAnimation() {} - void ServerGuiWrapper::beRoAnimation2(int /*myBeRoID*/) {} - void ServerGuiWrapper::preflopAnimation1() {} void ServerGuiWrapper::preflopAnimation2() {} - void ServerGuiWrapper::flopAnimation1() {} void ServerGuiWrapper::flopAnimation2() {} - void ServerGuiWrapper::turnAnimation1() {} void ServerGuiWrapper::turnAnimation2() {} - void ServerGuiWrapper::riverAnimation1() {} void ServerGuiWrapper::riverAnimation2() {} - void ServerGuiWrapper::postRiverAnimation1() {} void ServerGuiWrapper::postRiverRunAnimation1() {} void ServerGuiWrapper::flipHolecardsAllIn() {} - void ServerGuiWrapper::nextRoundCleanGui() {} - void ServerGuiWrapper::meInAction() {} void ServerGuiWrapper::disableMyButtons() {} void ServerGuiWrapper::updateMyButtonsState() {} void ServerGuiWrapper::startTimeoutAnimation(int /*playerNum*/, int /*timeoutSec*/) {} void ServerGuiWrapper::stopTimeoutAnimation(int /*playerNum*/) {} - void ServerGuiWrapper::startVoteOnKick(unsigned /*playerId*/, unsigned /*voteStarterPlayerId*/, int /*timeoutSec*/, int /*numVotesNeededToKick*/) {} void ServerGuiWrapper::changeVoteOnKickButtonsState(bool /*showHide*/) {} void ServerGuiWrapper::refreshVotesMonitor(int /*currentVotes*/, int /*numVotesNeededToKick*/) {} void ServerGuiWrapper::endVoteOnKick() {} - void ServerGuiWrapper::logPlayerActionMsg(string /*playerName*/, int /*action*/, int /*setValue*/) {} void ServerGuiWrapper::logNewGameHandMsg(int /*gameID*/, int /*handID*/) {} void ServerGuiWrapper::logPlayerWinsMsg(std::string /*playerName*/, int /*pot*/, bool /*main*/) {} void ServerGuiWrapper::logPlayerSitsOut(std::string /*playerName*/) {} void ServerGuiWrapper::logNewBlindsSetsMsg(int /*sbSet*/, int /*bbSet*/, std::string /*sbName*/, std::string /*bbName*/) {} - void ServerGuiWrapper::logDealBoardCardsMsg(int /*roundID*/, int /*card1*/, int /*card2*/, int /*card3*/, int /*card4*/, int /*card5*/) {} void ServerGuiWrapper::logFlipHoleCardsMsg(std::string /*playerName*/, int /*card1*/, int /*card2*/, int /*cardsValueInt*/, std::string /*showHas*/) {} void ServerGuiWrapper::logPlayerWinGame(std::string /*playerName*/, int /*gameID*/) {} diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 737e66e8..5c4de2e3 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -1120,15 +1120,6 @@ void gameLobbyDialogImpl::updatePlayer(unsigned playerId, QString newPlayerName) myNickListModel->item(it1, 0)->setIcon(QIcon(QString(":/cflags/cflags/%1.png").arg(countryString))); myNickListModel->item(it1, 0)->setToolTip(getFullCountryString(countryString.toUpper())); } - -// unsigned gameIdOfPlayer = mySession->getGameIdOfPlayer(playerId); -// if(gameIdOfPlayer) { -// myNickListModel->item(it1, 0)->setData("active", 34); -// } else { -// qDebug("updateplayer idle"); -// myNickListModel->item(it1, 0)->setData("idle", 34); -// } - break; } diff --git a/src/gui/qt/gametable.ui b/src/gui/qt/gametable.ui index 557211b5..fe723a76 100644 --- a/src/gui/qt/gametable.ui +++ b/src/gui/qt/gametable.ui @@ -2235,7 +2235,16 @@ p, li { white-space: pre-wrap; } QGroupBox {border-style:none;} - + + 0 + + + 0 + + + 0 + + 0 @@ -2306,15 +2315,24 @@ p, li { white-space: pre-wrap; } + + 0 + + + 0 + + + 0 + + + 0 + 3 2 - - 0 - @@ -2556,15 +2574,24 @@ p, li { white-space: pre-wrap; } + + 0 + + + 0 + + + 0 + + + 0 + 3 2 - - 0 - @@ -3532,7 +3559,16 @@ p, li { white-space: pre-wrap; } 0 - + + 0 + + + 0 + + + 0 + + 0 @@ -3582,7 +3618,16 @@ p, li { white-space: pre-wrap; } - + + 4 + + + 4 + + + 4 + + 4 @@ -3598,7 +3643,16 @@ p, li { white-space: pre-wrap; } Hands - + + 0 + + + 0 + + + 0 + + 0 @@ -3618,7 +3672,16 @@ p, li { white-space: pre-wrap; } Chat - + + 0 + + + 0 + + + 0 + + 0 @@ -3650,15 +3713,24 @@ p, li { white-space: pre-wrap; } Kick + + 5 + + + 5 + + + 5 + + + 5 + 0 6 - - 5 - @@ -3790,12 +3862,21 @@ p, li { white-space: pre-wrap; } Player info + + 6 + + + 6 + + + 6 + + + 6 + 3 - - 6 - @@ -3868,15 +3949,24 @@ p, li { white-space: pre-wrap; } + + 0 + + + 0 + + + 0 + + + 0 + 0 1 - - 0 - @@ -4026,7 +4116,7 @@ p, li { white-space: pre-wrap; } - 20 + 0 0 @@ -4039,7 +4129,7 @@ p, li { white-space: pre-wrap; } - 20 + 0 0 @@ -4069,7 +4159,16 @@ p, li { white-space: pre-wrap; } 0 - + + 0 + + + 0 + + + 0 + + 0 @@ -4119,15 +4218,24 @@ p, li { white-space: pre-wrap; } + + 4 + + + 4 + + + 4 + + + 4 + 1 2 - - 4 - @@ -4141,7 +4249,16 @@ p, li { white-space: pre-wrap; } Log - + + 0 + + + 0 + + + 0 + + 0 @@ -4251,7 +4368,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -4463,7 +4589,7 @@ p, li { white-space: pre-wrap; } 0 0 1024 - 26 + 19 diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp index d72a5e95..1f0e7ae4 100755 --- a/src/gui/qt/gametable/gametableimpl.cpp +++ b/src/gui/qt/gametable/gametableimpl.cpp @@ -449,6 +449,8 @@ gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent) pushButton_showMyCards->hide(); + spectatorIcon = new QLabel(this); + //style Game Table refreshGameTableStyle(); @@ -674,9 +676,9 @@ gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent) connect(this, SIGNAL(signalStartVoteOnKick(unsigned, unsigned, int, int)), this, SLOT(startVoteOnKick(unsigned, unsigned, int, int))); connect(this, SIGNAL(signalChangeVoteOnKickButtonsState(bool)), this, SLOT(changeVoteOnKickButtonsState(bool))); connect(this, SIGNAL(signalEndVoteOnKick()), this, SLOT(endVoteOnKick())); - connect(this, SIGNAL(signalNetClientPlayerLeft(unsigned)), this, SLOT(netClientPlayerLeft(unsigned))); connect(this, SIGNAL(signalNetClientSpectatorLeft(unsigned)), this, SLOT(netClientSpectatorLeft(unsigned))); + connect(this, SIGNAL(signalNetClientSpectatorJoined(unsigned)), this, SLOT(netClientSpectatorJoined(unsigned))); #ifdef GUI_800x480 connect( tabsButton, SIGNAL( clicked() ), this, SLOT( tabsButtonClicked() ) ); @@ -3260,6 +3262,9 @@ bool gameTableImpl::eventFilter(QObject *obj, QEvent *event) event->ignore(); closeGameTable(); return true; + } else if (event->type() == QEvent::Resize) { + refreshSpectatorsDisplay(); + return true; } else { // pass the event on to the parent class return QMainWindow::eventFilter(obj, event); @@ -3586,6 +3591,8 @@ void gameTableImpl::networkGameModification() myGameTableStyle->setBreakButtonStyle(pushButton_break,0); #endif blinkingStartButtonAnimationTimer->stop(); + + refreshSpectatorsDisplay(); } if(myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_NETWORK) { #ifdef GUI_800x480 @@ -3619,6 +3626,8 @@ void gameTableImpl::networkGameModification() //let the SoundEventHandler know that there is a new game mySoundEventHandler->newGameStarts(); + + //check if there are spectators } void gameTableImpl::mouseOverFlipCards(bool front) @@ -4303,9 +4312,14 @@ void gameTableImpl::netClientPlayerLeft(unsigned /*playerId*/) } } +void gameTableImpl::netClientSpectatorJoined(unsigned /*playerId*/) +{ + refreshSpectatorsDisplay(); +} + void gameTableImpl::netClientSpectatorLeft(unsigned /*playerId*/) { - // TODO + refreshSpectatorsDisplay(); } void gameTableImpl::registeredUserMode() @@ -4444,3 +4458,32 @@ void gameTableImpl::checkActionLabelPosition() } #endif } + +void gameTableImpl::refreshSpectatorsDisplay() +{ + assert(myStartWindow->getSession()); + GameInfo info(myStartWindow->getSession()->getClientGameInfo(myStartWindow->getSession()->getClientCurrentGameId())); + if(info.spectatorsDuringGame.size()) { + QPixmap spectatorPix(":/gfx/spectator.png"); + int iconX = this->centralWidget()->geometry().width() - spectatorPix.width() - 1; + int iconY = 2; + spectatorIcon->move(iconX,iconY); + spectatorIcon->setPixmap(spectatorPix); + + QString spectatorList = QString(""+tr("Spectators")+":
"); + PlayerIdList::const_iterator i = info.spectatorsDuringGame.begin(); + PlayerIdList::const_iterator end = info.spectatorsDuringGame.end(); + while (i != end) { + PlayerInfo playerInfo(myStartWindow->getSession()->getClientPlayerInfo(*i)); + spectatorList.append(QString::fromUtf8(playerInfo.playerName.c_str())+"
"); + ++i; + } + spectatorList.remove(spectatorList.size()-4,4); + spectatorIcon->setToolTip(spectatorList); + } + else { + spectatorIcon->setToolTip(""); + spectatorIcon->clear(); + } +} + diff --git a/src/gui/qt/gametable/gametableimpl.h b/src/gui/qt/gametable/gametableimpl.h index 71b6338e..cf53d0e2 100755 --- a/src/gui/qt/gametable/gametableimpl.h +++ b/src/gui/qt/gametable/gametableimpl.h @@ -173,6 +173,7 @@ signals: void signalEndVoteOnKick(); void signalNetClientPlayerLeft(unsigned playerId); void signalNetClientSpectatorLeft(unsigned playerId); + void signalNetClientSpectatorJoined(unsigned playerId); public slots: @@ -355,6 +356,7 @@ public slots: void netClientPlayerLeft(unsigned playerId); void netClientSpectatorLeft(unsigned playerId); + void netClientSpectatorJoined(unsigned playerId); void registeredUserMode(); void guestUserMode(); @@ -371,6 +373,7 @@ public slots: void tabsButtonClicked(); void tabsButtonClose(); #endif + void refreshSpectatorsDisplay(); private: @@ -437,6 +440,7 @@ private: QLabel *playerTipLabelArray[MAX_NUMBER_OF_PLAYERS]; QPixmap flipside; + QLabel *spectatorIcon; // Dialogs startWindowImpl *myStartWindow; diff --git a/src/gui/qt/guiwrapper.cpp b/src/gui/qt/guiwrapper.cpp index 689e4d48..7c1d9cbc 100644 --- a/src/gui/qt/guiwrapper.cpp +++ b/src/gui/qt/guiwrapper.cpp @@ -364,6 +364,7 @@ void GuiWrapper::SignalNetClientPlayerJoined(unsigned playerId, const string &pl void GuiWrapper::SignalNetClientPlayerChanged(unsigned playerId, const string &newPlayerName) { myStartWindow->signalNetClientPlayerChanged(playerId, QString::fromUtf8(newPlayerName.c_str())); + myW->refreshSpectatorsDisplay(); } void GuiWrapper::SignalNetClientPlayerLeft(unsigned playerId, const string &playerName, int removeReason) { @@ -376,6 +377,7 @@ void GuiWrapper::SignalNetClientPlayerLeft(unsigned playerId, const string &play void GuiWrapper::SignalNetClientSpectatorJoined(unsigned playerId, const string &playerName) { myStartWindow->signalNetClientSpectatorJoined(playerId, QString::fromUtf8(playerName.c_str())); + myW->signalNetClientSpectatorJoined(playerId); if (!playerName.empty() && playerName[0] != '#' && myW->isVisible()) { QString tmpName(QString::fromUtf8(playerName.c_str())); myGuiLog->signalLogSpectatorJoinedMsg(tmpName); diff --git a/src/gui/qt/resources/pokerth.qrc b/src/gui/qt/resources/pokerth.qrc index 5c8c2b5e..b7170b45 100644 --- a/src/gui/qt/resources/pokerth.qrc +++ b/src/gui/qt/resources/pokerth.qrc @@ -60,6 +60,7 @@ tab-new-background.png loader.gif text-x-log.png + spectator.png cflags/ad.png diff --git a/src/gui/qt/resources/pokerth_android.qrc b/src/gui/qt/resources/pokerth_android.qrc index 3feaea9c..861af7ea 100644 --- a/src/gui/qt/resources/pokerth_android.qrc +++ b/src/gui/qt/resources/pokerth_android.qrc @@ -60,6 +60,7 @@ tab-new-background.png tab-close.png text-x-log.png + spectator.png cflags/ad.png From 6a3b13e75350e672743b7237c06fef61be6822ac Mon Sep 17 00:00:00 2001 From: doitux Date: Mon, 30 Sep 2013 22:21:30 +0200 Subject: [PATCH 067/128] make cppcheck happy again ;) --- src/gui/qt/gametable/gametableimpl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp index 1f0e7ae4..9154eaf2 100755 --- a/src/gui/qt/gametable/gametableimpl.cpp +++ b/src/gui/qt/gametable/gametableimpl.cpp @@ -4463,7 +4463,7 @@ void gameTableImpl::refreshSpectatorsDisplay() { assert(myStartWindow->getSession()); GameInfo info(myStartWindow->getSession()->getClientGameInfo(myStartWindow->getSession()->getClientCurrentGameId())); - if(info.spectatorsDuringGame.size()) { + if(!info.spectatorsDuringGame.empty()) { QPixmap spectatorPix(":/gfx/spectator.png"); int iconX = this->centralWidget()->geometry().width() - spectatorPix.width() - 1; int iconY = 2; From c8739ccd4757b471d016c0981720bc77dcde6376 Mon Sep 17 00:00:00 2001 From: lotodore Date: Mon, 30 Sep 2013 23:36:32 +0200 Subject: [PATCH 068/128] Adding limitation for the number of spectators per game. --- src/net/common/servergamestate.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/net/common/servergamestate.cpp b/src/net/common/servergamestate.cpp index a807c738..372e5165 100644 --- a/src/net/common/servergamestate.cpp +++ b/src/net/common/servergamestate.cpp @@ -82,6 +82,7 @@ using namespace std; #define SERVER_GAME_FORCED_TIMEOUT_FACTOR 60 #define SERVER_VOTE_KICK_TIMEOUT_SEC 30 #define SERVER_LOOP_DELAY_MSEC 50 +#define SERVER_MAX_NUM_SPECTATORS_PER_GAME 100 // Helper functions @@ -555,7 +556,11 @@ void ServerGameStateInit::HandleNewSpectator(boost::shared_ptr server, boost::shared_ptr session) { if (session && session->GetPlayerData()) { - AcceptNewSession(server, session, true); + if (server->GetSpectatorIdList().size() >= SERVER_MAX_NUM_SPECTATORS_PER_GAME) { + server->MoveSessionToLobby(session, NTF_NET_REMOVED_GAME_FULL); + } else { + AcceptNewSession(server, session, true); + } } } From 1965665524fec2b1129009e53198978dccecced6 Mon Sep 17 00:00:00 2001 From: lotodore Date: Mon, 30 Sep 2013 23:36:49 +0200 Subject: [PATCH 069/128] Removing unused variable. --- src/core/common/avatarmanager.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/core/common/avatarmanager.cpp b/src/core/common/avatarmanager.cpp index 945caeab..d9b9fd41 100644 --- a/src/core/common/avatarmanager.cpp +++ b/src/core/common/avatarmanager.cpp @@ -435,7 +435,6 @@ AvatarManager::RemoveOldAvatarCacheEntries() // Count files and record age. AvatarList removeList; TimeAvatarMap timeMap; - unsigned fileCount = 0; { AvatarMap::const_iterator i = m_cachedAvatars.begin(); AvatarMap::const_iterator end = m_cachedAvatars.end(); @@ -448,7 +447,6 @@ AvatarManager::RemoveOldAvatarCacheEntries() // Only consider files with MD5 as file name. MD5Buf tmpBuf; if (exists(filePath) && tmpBuf.FromString(basename(filePath))) { - ++fileCount; timeMap.insert(TimeAvatarMap::value_type(last_write_time(filePath), i->first)); keepFile = true; } From 0d5cf28c9a0e3595b217d6f89688baeaa951b32a Mon Sep 17 00:00:00 2001 From: lotodore Date: Wed, 2 Oct 2013 23:57:21 +0200 Subject: [PATCH 070/128] Adding websocketpp 0.3 as third party lib (source: https://github.com/zaphoyd/websocketpp ) --- pokerth_lib.pro | 5 +- src/third_party/websocketpp/COPYING | 23 + .../websocketpp/websocketpp/CMakeLists.txt | 2 + .../websocketpp/websocketpp/base64/base64.cpp | 123 + .../websocketpp/websocketpp/base64/base64.h | 4 + .../websocketpp/websocketpp/base64/base64.hpp | 152 ++ .../websocketpp/websocketpp/client.hpp | 33 + .../websocketpp/websocketpp/close.hpp | 263 +++ .../websocketpp/websocketpp/common/chrono.hpp | 55 + .../websocketpp/common/connection_hdl.hpp | 52 + .../websocketpp/websocketpp/common/cpp11.hpp | 95 + .../websocketpp/common/functional.hpp | 66 + .../websocketpp/websocketpp/common/md5.hpp | 447 ++++ .../websocketpp/websocketpp/common/memory.hpp | 68 + .../websocketpp/common/network.hpp | 82 + .../websocketpp/common/platforms.hpp | 41 + .../websocketpp/websocketpp/common/random.hpp | 66 + .../websocketpp/websocketpp/common/regex.hpp | 59 + .../websocketpp/websocketpp/common/stdint.hpp | 73 + .../websocketpp/common/system_error.hpp | 66 + .../websocketpp/websocketpp/common/thread.hpp | 67 + .../websocketpp/concurrency/basic.hpp | 46 + .../websocketpp/concurrency/none.hpp | 58 + .../websocketpp/websocketpp/config/asio.hpp | 77 + .../websocketpp/config/asio_client.hpp | 77 + .../websocketpp/config/asio_no_tls.hpp | 73 + .../websocketpp/config/asio_no_tls_client.hpp | 73 + .../websocketpp/config/boost_config.hpp | 71 + .../websocketpp/websocketpp/config/core.hpp | 251 ++ .../websocketpp/config/core_client.hpp | 252 ++ .../websocketpp/websocketpp/config/debug.hpp | 252 ++ .../websocketpp/config/debug_asio.hpp | 77 + .../websocketpp/config/debug_asio_no_tls.hpp | 73 + .../websocketpp/websocketpp/connection.hpp | 1331 +++++++++++ .../websocketpp/connection_base.hpp | 38 + .../websocketpp/websocketpp/endpoint.hpp | 428 ++++ .../websocketpp/websocketpp/endpoint_base.hpp | 38 + .../websocketpp/websocketpp/error.hpp | 227 ++ .../websocketpp/error_container.hpp | 71 + .../websocketpp/extensions/extension.hpp | 102 + .../permessage_deflate/disabled.hpp | 91 + .../extensions/permessage_deflate/enabled.hpp | 724 ++++++ .../websocketpp/websocketpp/frame.hpp | 889 +++++++ .../websocketpp/http/constants.hpp | 302 +++ .../websocketpp/http/impl/parser.hpp | 171 ++ .../websocketpp/http/impl/request.hpp | 191 ++ .../websocketpp/http/impl/response.hpp | 289 +++ .../websocketpp/websocketpp/http/parser.hpp | 528 +++++ .../websocketpp/websocketpp/http/request.hpp | 122 + .../websocketpp/websocketpp/http/response.hpp | 168 ++ .../websocketpp/impl/connection_impl.hpp | 2041 +++++++++++++++++ .../websocketpp/impl/endpoint_impl.hpp | 235 ++ .../websocketpp/impl/utilities_impl.hpp | 84 + .../websocketpp/websocketpp/logger/basic.hpp | 143 ++ .../websocketpp/websocketpp/logger/levels.hpp | 173 ++ .../websocketpp/websocketpp/logger/stub.hpp | 63 + .../websocketpp/message_buffer/alloc.hpp | 105 + .../websocketpp/message_buffer/message.hpp | 340 +++ .../websocketpp/message_buffer/pool.hpp | 229 ++ .../websocketpp/processors/base.hpp | 294 +++ .../websocketpp/processors/hybi00.hpp | 392 ++++ .../websocketpp/processors/hybi07.hpp | 68 + .../websocketpp/processors/hybi08.hpp | 73 + .../websocketpp/processors/hybi13.hpp | 992 ++++++++ .../websocketpp/processors/processor.hpp | 369 +++ .../websocketpp/websocketpp/random/none.hpp | 59 + .../websocketpp/random/random_device.hpp | 80 + .../websocketpp/roles/client_endpoint.hpp | 184 ++ .../websocketpp/roles/server_endpoint.hpp | 134 ++ .../websocketpp/websocketpp/server.hpp | 33 + .../websocketpp/websocketpp/sha1/license.txt | 14 + .../websocketpp/websocketpp/sha1/sha1.hpp | 406 ++++ .../websocketpp/transport/asio/base.hpp | 123 + .../websocketpp/transport/asio/connection.hpp | 920 ++++++++ .../websocketpp/transport/asio/endpoint.hpp | 900 ++++++++ .../transport/asio/security/base.hpp | 148 ++ .../transport/asio/security/none.hpp | 302 +++ .../transport/asio/security/tls.hpp | 368 +++ .../websocketpp/transport/base/connection.hpp | 226 ++ .../websocketpp/transport/base/endpoint.hpp | 84 + .../websocketpp/transport/iostream/base.hpp | 111 + .../transport/iostream/connection.hpp | 551 +++++ .../transport/iostream/endpoint.hpp | 173 ++ .../websocketpp/websocketpp/uri.hpp | 336 +++ .../websocketpp/utf8_validator.hpp | 127 + .../websocketpp/websocketpp/utilities.hpp | 182 ++ .../websocketpp/websocketpp/version.hpp | 60 + 87 files changed, 20052 insertions(+), 2 deletions(-) create mode 100644 src/third_party/websocketpp/COPYING create mode 100644 src/third_party/websocketpp/websocketpp/CMakeLists.txt create mode 100644 src/third_party/websocketpp/websocketpp/base64/base64.cpp create mode 100644 src/third_party/websocketpp/websocketpp/base64/base64.h create mode 100644 src/third_party/websocketpp/websocketpp/base64/base64.hpp create mode 100644 src/third_party/websocketpp/websocketpp/client.hpp create mode 100644 src/third_party/websocketpp/websocketpp/close.hpp create mode 100644 src/third_party/websocketpp/websocketpp/common/chrono.hpp create mode 100644 src/third_party/websocketpp/websocketpp/common/connection_hdl.hpp create mode 100644 src/third_party/websocketpp/websocketpp/common/cpp11.hpp create mode 100644 src/third_party/websocketpp/websocketpp/common/functional.hpp create mode 100644 src/third_party/websocketpp/websocketpp/common/md5.hpp create mode 100644 src/third_party/websocketpp/websocketpp/common/memory.hpp create mode 100644 src/third_party/websocketpp/websocketpp/common/network.hpp create mode 100644 src/third_party/websocketpp/websocketpp/common/platforms.hpp create mode 100644 src/third_party/websocketpp/websocketpp/common/random.hpp create mode 100644 src/third_party/websocketpp/websocketpp/common/regex.hpp create mode 100644 src/third_party/websocketpp/websocketpp/common/stdint.hpp create mode 100644 src/third_party/websocketpp/websocketpp/common/system_error.hpp create mode 100644 src/third_party/websocketpp/websocketpp/common/thread.hpp create mode 100644 src/third_party/websocketpp/websocketpp/concurrency/basic.hpp create mode 100644 src/third_party/websocketpp/websocketpp/concurrency/none.hpp create mode 100644 src/third_party/websocketpp/websocketpp/config/asio.hpp create mode 100644 src/third_party/websocketpp/websocketpp/config/asio_client.hpp create mode 100644 src/third_party/websocketpp/websocketpp/config/asio_no_tls.hpp create mode 100644 src/third_party/websocketpp/websocketpp/config/asio_no_tls_client.hpp create mode 100644 src/third_party/websocketpp/websocketpp/config/boost_config.hpp create mode 100644 src/third_party/websocketpp/websocketpp/config/core.hpp create mode 100644 src/third_party/websocketpp/websocketpp/config/core_client.hpp create mode 100644 src/third_party/websocketpp/websocketpp/config/debug.hpp create mode 100644 src/third_party/websocketpp/websocketpp/config/debug_asio.hpp create mode 100644 src/third_party/websocketpp/websocketpp/config/debug_asio_no_tls.hpp create mode 100644 src/third_party/websocketpp/websocketpp/connection.hpp create mode 100644 src/third_party/websocketpp/websocketpp/connection_base.hpp create mode 100644 src/third_party/websocketpp/websocketpp/endpoint.hpp create mode 100644 src/third_party/websocketpp/websocketpp/endpoint_base.hpp create mode 100644 src/third_party/websocketpp/websocketpp/error.hpp create mode 100644 src/third_party/websocketpp/websocketpp/error_container.hpp create mode 100644 src/third_party/websocketpp/websocketpp/extensions/extension.hpp create mode 100644 src/third_party/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp create mode 100644 src/third_party/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp create mode 100644 src/third_party/websocketpp/websocketpp/frame.hpp create mode 100644 src/third_party/websocketpp/websocketpp/http/constants.hpp create mode 100644 src/third_party/websocketpp/websocketpp/http/impl/parser.hpp create mode 100644 src/third_party/websocketpp/websocketpp/http/impl/request.hpp create mode 100644 src/third_party/websocketpp/websocketpp/http/impl/response.hpp create mode 100644 src/third_party/websocketpp/websocketpp/http/parser.hpp create mode 100644 src/third_party/websocketpp/websocketpp/http/request.hpp create mode 100644 src/third_party/websocketpp/websocketpp/http/response.hpp create mode 100644 src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp create mode 100644 src/third_party/websocketpp/websocketpp/impl/endpoint_impl.hpp create mode 100644 src/third_party/websocketpp/websocketpp/impl/utilities_impl.hpp create mode 100644 src/third_party/websocketpp/websocketpp/logger/basic.hpp create mode 100644 src/third_party/websocketpp/websocketpp/logger/levels.hpp create mode 100644 src/third_party/websocketpp/websocketpp/logger/stub.hpp create mode 100644 src/third_party/websocketpp/websocketpp/message_buffer/alloc.hpp create mode 100644 src/third_party/websocketpp/websocketpp/message_buffer/message.hpp create mode 100644 src/third_party/websocketpp/websocketpp/message_buffer/pool.hpp create mode 100644 src/third_party/websocketpp/websocketpp/processors/base.hpp create mode 100644 src/third_party/websocketpp/websocketpp/processors/hybi00.hpp create mode 100644 src/third_party/websocketpp/websocketpp/processors/hybi07.hpp create mode 100644 src/third_party/websocketpp/websocketpp/processors/hybi08.hpp create mode 100644 src/third_party/websocketpp/websocketpp/processors/hybi13.hpp create mode 100644 src/third_party/websocketpp/websocketpp/processors/processor.hpp create mode 100644 src/third_party/websocketpp/websocketpp/random/none.hpp create mode 100644 src/third_party/websocketpp/websocketpp/random/random_device.hpp create mode 100644 src/third_party/websocketpp/websocketpp/roles/client_endpoint.hpp create mode 100644 src/third_party/websocketpp/websocketpp/roles/server_endpoint.hpp create mode 100644 src/third_party/websocketpp/websocketpp/server.hpp create mode 100644 src/third_party/websocketpp/websocketpp/sha1/license.txt create mode 100644 src/third_party/websocketpp/websocketpp/sha1/sha1.hpp create mode 100644 src/third_party/websocketpp/websocketpp/transport/asio/base.hpp create mode 100644 src/third_party/websocketpp/websocketpp/transport/asio/connection.hpp create mode 100644 src/third_party/websocketpp/websocketpp/transport/asio/endpoint.hpp create mode 100644 src/third_party/websocketpp/websocketpp/transport/asio/security/base.hpp create mode 100644 src/third_party/websocketpp/websocketpp/transport/asio/security/none.hpp create mode 100644 src/third_party/websocketpp/websocketpp/transport/asio/security/tls.hpp create mode 100644 src/third_party/websocketpp/websocketpp/transport/base/connection.hpp create mode 100644 src/third_party/websocketpp/websocketpp/transport/base/endpoint.hpp create mode 100644 src/third_party/websocketpp/websocketpp/transport/iostream/base.hpp create mode 100644 src/third_party/websocketpp/websocketpp/transport/iostream/connection.hpp create mode 100644 src/third_party/websocketpp/websocketpp/transport/iostream/endpoint.hpp create mode 100644 src/third_party/websocketpp/websocketpp/uri.hpp create mode 100644 src/third_party/websocketpp/websocketpp/utf8_validator.hpp create mode 100644 src/third_party/websocketpp/websocketpp/utilities.hpp create mode 100644 src/third_party/websocketpp/websocketpp/version.hpp diff --git a/pokerth_lib.pro b/pokerth_lib.pro index 90286379..6db489d8 100644 --- a/pokerth_lib.pro +++ b/pokerth_lib.pro @@ -27,7 +27,8 @@ INCLUDEPATH += . \ src/engine/local_engine \ src/engine/network_engine \ src/config \ - src/core + src/core \ + src/third_party/websocketpp DEPENDPATH += . \ src \ @@ -41,7 +42,7 @@ DEPENDPATH += . \ src/core/common \ src/engine/local_engine \ src/engine/network_engine \ - src/net/common \ + src/net/common # Input HEADERS += \ diff --git a/src/third_party/websocketpp/COPYING b/src/third_party/websocketpp/COPYING new file mode 100644 index 00000000..0ea3913e --- /dev/null +++ b/src/third_party/websocketpp/COPYING @@ -0,0 +1,23 @@ +Copyright (c) 2013, Peter Thorson. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the WebSocket++ Project nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/src/third_party/websocketpp/websocketpp/CMakeLists.txt b/src/third_party/websocketpp/websocketpp/CMakeLists.txt new file mode 100644 index 00000000..3ea8cc1c --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/CMakeLists.txt @@ -0,0 +1,2 @@ +init_target("websocketpp") +final_target () diff --git a/src/third_party/websocketpp/websocketpp/base64/base64.cpp b/src/third_party/websocketpp/websocketpp/base64/base64.cpp new file mode 100644 index 00000000..87388022 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/base64/base64.cpp @@ -0,0 +1,123 @@ +/* + base64.cpp and base64.h + + Copyright (C) 2004-2008 René Nyffenegger + + This source code is provided 'as-is', without any express or implied + warranty. In no event will the author be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this source code must not be misrepresented; you must not + claim that you wrote the original source code. If you use this source code + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original source code. + + 3. This notice may not be removed or altered from any source distribution. + + René Nyffenegger rene.nyffenegger@adp-gmbh.ch + +*/ + +#include "base64.h" +#include + +static const std::string base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/"; + + +static inline bool is_base64(unsigned char c) { + return (isalnum(c) || (c == '+') || (c == '/')); +} + +std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { + std::string ret; + int i = 0; + int j = 0; + unsigned char char_array_3[3]; + unsigned char char_array_4[4]; + + while (in_len--) { + char_array_3[i++] = *(bytes_to_encode++); + if (i == 3) { + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for(i = 0; (i <4) ; i++) + ret += base64_chars[char_array_4[i]]; + i = 0; + } + } + + if (i) + { + for(j = i; j < 3; j++) + char_array_3[j] = '\0'; + + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for (j = 0; (j < i + 1); j++) + ret += base64_chars[char_array_4[j]]; + + while((i++ < 3)) + ret += '='; + + } + + return ret; + +} + +std::string base64_decode(std::string const& encoded_string) { + size_t in_len = encoded_string.size(); + int i = 0; + int j = 0; + int in_ = 0; + unsigned char char_array_4[4], char_array_3[3]; + std::string ret; + + while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { + char_array_4[i++] = encoded_string[in_]; in_++; + if (i ==4) { + for (i = 0; i <4; i++) + char_array_4[i] = static_cast(base64_chars.find(char_array_4[i])); + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (i = 0; (i < 3); i++) + ret += char_array_3[i]; + i = 0; + } + } + + if (i) { + for (j = i; j <4; j++) + char_array_4[j] = 0; + + for (j = 0; j <4; j++) + char_array_4[j] = static_cast(base64_chars.find(char_array_4[j])); + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (j = 0; (j < i - 1); j++) ret += char_array_3[j]; + } + + return ret; +} diff --git a/src/third_party/websocketpp/websocketpp/base64/base64.h b/src/third_party/websocketpp/websocketpp/base64/base64.h new file mode 100644 index 00000000..65d5db8b --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/base64/base64.h @@ -0,0 +1,4 @@ +#include + +std::string base64_encode(unsigned char const* , unsigned int len); +std::string base64_decode(std::string const& s); diff --git a/src/third_party/websocketpp/websocketpp/base64/base64.hpp b/src/third_party/websocketpp/websocketpp/base64/base64.hpp new file mode 100644 index 00000000..aa2fc8f1 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/base64/base64.hpp @@ -0,0 +1,152 @@ +/* + ****** + base64.hpp is a repackaging of the base64.cpp and base64.h files into a + single headersuitable for use as a header only library. This conversion was + done by Peter Thorson (webmaster@zaphoyd.com) in 2012. All modifications to + the code are redistributed under the same license as the original, which is + listed below. + ****** + + base64.cpp and base64.h + + Copyright (C) 2004-2008 René Nyffenegger + + This source code is provided 'as-is', without any express or implied + warranty. In no event will the author be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this source code must not be misrepresented; you must not + claim that you wrote the original source code. If you use this source code + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original source code. + + 3. This notice may not be removed or altered from any source distribution. + + René Nyffenegger rene.nyffenegger@adp-gmbh.ch + +*/ + +#ifndef _BASE64_HPP_ +#define _BASE64_HPP_ + +#include + +static const std::string base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/"; + +static inline bool is_base64(unsigned char c) { + return (c == 43 || // + + (c >= 47 && c <= 57) || // /-9 + (c >= 65 && c <= 90) || // A-Z + (c >= 97 && c <= 122)); // a-z +} + +inline std::string base64_encode(unsigned char const* bytes_to_encode, unsigned + int in_len) +{ + std::string ret; + int i = 0; + int j = 0; + unsigned char char_array_3[3]; + unsigned char char_array_4[4]; + + while (in_len--) { + char_array_3[i++] = *(bytes_to_encode++); + if (i == 3) { + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for(i = 0; (i <4) ; i++) { + ret += base64_chars[char_array_4[i]]; + } + i = 0; + } + } + + if (i) { + for(j = i; j < 3; j++) { + char_array_3[j] = '\0'; + } + + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for (j = 0; (j < i + 1); j++) { + ret += base64_chars[char_array_4[j]]; + } + + while((i++ < 3)) { + ret += '='; + } + } + + return ret; +} + +inline std::string base64_encode(const std::string & data) { + return base64_encode(reinterpret_cast(data.data()),data.size()); +} + +inline std::string base64_decode(std::string const& encoded_string) { + size_t in_len = encoded_string.size(); + int i = 0; + int j = 0; + int in_ = 0; + unsigned char char_array_4[4], char_array_3[3]; + std::string ret; + + while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { + char_array_4[i++] = encoded_string[in_]; in_++; + if (i ==4) { + for (i = 0; i <4; i++) { + char_array_4[i] = static_cast(base64_chars.find(char_array_4[i])); + } + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (i = 0; (i < 3); i++) { + ret += char_array_3[i]; + } + i = 0; + } + } + + if (i) { + for (j = i; j <4; j++) + char_array_4[j] = 0; + + for (j = 0; j <4; j++) + char_array_4[j] = static_cast(base64_chars.find(char_array_4[j])); + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (j = 0; (j < i - 1); j++) { + ret += static_cast(char_array_3[j]); + } + } + + return ret; +} + +#endif // _BASE64_HPP_ diff --git a/src/third_party/websocketpp/websocketpp/client.hpp b/src/third_party/websocketpp/websocketpp/client.hpp new file mode 100644 index 00000000..45268be3 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/client.hpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CLIENT_HPP +#define WEBSOCKETPP_CLIENT_HPP + +#include + +#endif //WEBSOCKETPP_CLIENT_HPP diff --git a/src/third_party/websocketpp/websocketpp/close.hpp b/src/third_party/websocketpp/websocketpp/close.hpp new file mode 100644 index 00000000..107b345d --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/close.hpp @@ -0,0 +1,263 @@ + +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CLOSE_HPP +#define WEBSOCKETPP_CLOSE_HPP + +/** \file + * A package of types and methods for manipulating WebSocket close codes. + */ + +#include +#include +#include +#include + +#include + +namespace websocketpp { +/// A package of types and methods for manipulating WebSocket close codes. +namespace close { +/// A package of types and methods for manipulating WebSocket close status' +namespace status { + /// The type of a close code value. + typedef uint16_t value; + + /// A blank value for internal use. + static value const blank = 0; + + /// Normal closure, meaning that the purpose for which the connection was + /// established has been fulfilled. + static value const normal = 1000; + + /// The endpoint was "going away", such as a server going down or a browser + /// navigating away from a page. + static value const going_away = 1001; + + /// A protocol error occurred. + static value const protocol_error = 1002; + + /// The connection was terminated because an endpoint received a type of + /// data it cannot accept. + /** + * (e.g., an endpoint that understands only text data MAY send this if it + * receives a binary message). + */ + static value const unsupported_data = 1003; + + /// A dummy value to indicate that no status code was received. + /** + * This value is illegal on the wire. + */ + static value const no_status = 1005; + + /// A dummy value to indicate that the connection was closed abnormally. + /** + * In such a case there was no close frame to extract a value from. This + * value is illegal on the wire. + */ + static value const abnormal_close = 1006; + + /// An endpoint received message data inconsistent with its type. + /** + * For example: Invalid UTF8 bytes in a text message. + */ + static value const invalid_payload = 1007; + + /// An endpoint received a message that violated its policy. + /** + * This is a generic status code that can be returned when there is no other + * more suitable status code (e.g., 1003 or 1009) or if there is a need to + * hide specific details about the policy. + */ + static value const policy_violation = 1008; + + /// An endpoint received a message too large to process. + static value const message_too_big = 1009; + + /// A client expected the server to accept a required extension request + /** + * The list of extensions that are needed SHOULD appear in the /reason/ part + * of the Close frame. Note that this status code is not used by the server, + * because it can fail the WebSocket handshake instead. + */ + static value const extension_required = 1010; + + /// An endpoint encountered an unexpected condition that prevented it from + /// fulfilling the request. + static value const internal_endpoint_error = 1011; + + /// Indicates that the service is restarted. A client may reconnect and if + /// if it chooses to do so, should reconnect using a randomized delay of + /// 5-30s + static value const service_restart = 1012; + + /// Indicates that the service is experiencing overload. A client should + /// only connect to a different IP (when there are multiple for the target) + /// or reconnect to the same IP upon user action. + static value const try_again_later = 1013; + + /// An endpoint failed to perform a TLS handshake + /** + * Designated for use in applications expecting a status code to indicate + * that the connection was closed due to a failure to perform a TLS + * handshake (e.g., the server certificate can't be verified). This value is + * illegal on the wire. + */ + static value const tls_handshake = 1015; + + /// First value in range reserved for future protocol use + static value const rsv_start = 1016; + /// Last value in range reserved for future protocol use + static value const rsv_end = 2999; + + /// Test whether a close code is in a reserved range + /** + * @param [in] code The code to test + * @return Whether or not code is reserved + */ + inline bool reserved(value code) { + return ((code >= rsv_start && code <= rsv_end) || + code == 1004 || code == 1014); + } + + /// First value in range that is always invalid on the wire + static value const invalid_low = 999; + /// Last value in range that is always invalid on the wire + static value const invalid_high = 5000; + + /// Test whether a close code is invalid on the wire + /** + * @param [in] code The code to test + * @return Whether or not code is invalid on the wire + */ + inline bool invalid(value code) { + return (code <= invalid_low || code >= invalid_high || + code == no_status || code == abnormal_close || + code == tls_handshake); + } + + /// Determine if the code represents an unrecoverable error + /** + * There is a class of errors for which once they are discovered normal + * WebSocket functionality can no longer occur. This function determines + * if a given code is one of these values. This information is used to + * determine if the system has the capability of waiting for a close + * acknowledgement or if it should drop the TCP connection immediately + * after sending its close frame. + * + * @param [in] code The value to test. + * @return True if the code represents an unrecoverable error + */ + inline bool terminal(value code) { + return (code == protocol_error || code == invalid_payload || + code == policy_violation || code == message_too_big || + code == internal_endpoint_error); + } +} // namespace status + +/// Type used to convert close statuses between integer and wire representations +union code_converter { + uint16_t i; + char c[2]; +}; + +/// Extract a close code value from a close payload +/** + * If there is no close value (ie string is empty) status::no_status is + * returned. If a code couldn't be extracted (usually do to a short or + * otherwise mangled payload) status::protocol_error is returned and the ec + * value is flagged as an error. Note that this case is different than the case + * where protocol error is received over the wire. + * + * If the value is in an invalid or reserved range ec is set accordingly. + * + * @param [in] payload Close frame payload value recieved over the wire. + * @param [out] ec Set to indicate what error occurred, if any. + * @return The extracted value + */ +inline status::value extract_code(std::string const & payload, lib::error_code + & ec) +{ + ec = lib::error_code(); + + if (payload.size() == 0) { + return status::no_status; + } else if (payload.size() == 1) { + ec = make_error_code(error::bad_close_code); + return status::protocol_error; + } + + code_converter val; + + val.c[0] = payload[0]; + val.c[1] = payload[1]; + + status::value code(ntohs(val.i)); + + if (status::invalid(code)) { + ec = make_error_code(error::invalid_close_code); + } + + if (status::reserved(code)) { + ec = make_error_code(error::reserved_close_code); + } + + return code; +} + +/// Extract the reason string from a close payload +/** + * The string should be a valid UTF8 message. error::invalid_utf8 will be set if + * the function extracts a reason that is not valid UTF8. + * + * @param [in] payload The payload string to extract a reason from. + * @param [out] ec Set to indicate what error occurred, if any. + * @return The reason string. + */ +inline std::string extract_reason(std::string const & payload, lib::error_code + & ec) +{ + std::string reason = ""; + ec = lib::error_code(); + + if (payload.size() > 2) { + reason.append(payload.begin()+2,payload.end()); + } + + if (!websocketpp::utf8_validator::validate(reason)) { + ec = make_error_code(error::invalid_utf8); + } + + return reason; +} + +} // namespace close +} // namespace websocketpp + +#endif // WEBSOCKETPP_CLOSE_HPP diff --git a/src/third_party/websocketpp/websocketpp/common/chrono.hpp b/src/third_party/websocketpp/websocketpp/common/chrono.hpp new file mode 100644 index 00000000..731d7703 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/common/chrono.hpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_COMMON_CHRONO_HPP +#define WEBSOCKETPP_COMMON_CHRONO_HPP + +#if defined _WEBSOCKETPP_CPP11_STL_ && !defined _WEBSOCKETPP_NO_CPP11_CHRONO_ + #ifndef _WEBSOCKETPP_CPP11_CHRONO_ + #define _WEBSOCKETPP_CPP11_CHRONO_ + #endif +#endif + +#ifdef _WEBSOCKETPP_CPP11_CHRONO_ + #include +#else + #include +#endif + +namespace websocketpp { +namespace lib { + +#ifdef _WEBSOCKETPP_CPP11_CHRONO_ + using std::chrono::system_clock; +#else + using boost::chrono::system_clock; +#endif + +} // namespace lib +} // namespace websocketpp + +#endif // WEBSOCKETPP_COMMON_CHRONO_HPP diff --git a/src/third_party/websocketpp/websocketpp/common/connection_hdl.hpp b/src/third_party/websocketpp/websocketpp/common/connection_hdl.hpp new file mode 100644 index 00000000..71f490cf --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/common/connection_hdl.hpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_COMMON_CONNECTION_HDL_HPP +#define WEBSOCKETPP_COMMON_CONNECTION_HDL_HPP + +#include + +namespace websocketpp { + +/// A handle to uniquely identify a connection. +/** + * This type uniquely identifies a connection. It is implimented as a weak + * pointer to the connection in question. This provides uniqueness across + * multiple endpoints and ensures that IDs never conflict or run out. + * + * It is safe to make copies of this handle, store those copies in containers, + * and use them from other threads. + * + * This handle can be upgraded to a full shared_ptr using + * `endpoint::get_con_from_hdl()` from within a handler fired by the connection + * that owns the handler. + */ +typedef lib::weak_ptr connection_hdl; + +} // namespace websocketpp + +#endif // WEBSOCKETPP_COMMON_CONNECTION_HDL_HPP diff --git a/src/third_party/websocketpp/websocketpp/common/cpp11.hpp b/src/third_party/websocketpp/websocketpp/common/cpp11.hpp new file mode 100644 index 00000000..2a638dce --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/common/cpp11.hpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_COMMON_CPP11_HPP +#define WEBSOCKETPP_COMMON_CPP11_HPP + +/** + * This header sets up some constants based on the state of C++11 support + */ + +// Hide clang feature detection from other compilers +#ifndef __has_feature // Optional of course. + #define __has_feature(x) 0 // Compatibility with non-clang compilers. +#endif +#ifndef __has_extension + #define __has_extension __has_feature // Compatibility with pre-3.0 compilers. +#endif + + +#ifdef _WEBSOCKETPP_CPP11_STL_ + // This flag indicates that all of the C++11 language features are available + // to us. + #ifndef _WEBSOCKETPP_NOEXCEPT_TOKEN_ + #define _WEBSOCKETPP_NOEXCEPT_TOKEN_ noexcept + #endif + #ifndef _WEBSOCKETPP_CONSTEXPR_TOKEN_ + #define _WEBSOCKETPP_CONSTEXPR_TOKEN_ constexpr + #endif + #ifndef _WEBSOCKETPP_INITIALIZER_LISTS_ + #define _WEBSOCKETPP_INITIALIZER_LISTS_ + #endif +#else + // Test for noexcept + #ifndef _WEBSOCKETPP_NOEXCEPT_TOKEN_ + #ifdef _WEBSOCKETPP_NOEXCEPT_ + // build system says we have noexcept + #define _WEBSOCKETPP_NOEXCEPT_TOKEN_ noexcept + #else + #if __has_feature(cxx_noexcept) + // clang feature detect says we have noexcept + #define _WEBSOCKETPP_NOEXCEPT_TOKEN_ noexcept + #else + // assume we don't have noexcept + #define _WEBSOCKETPP_NOEXCEPT_TOKEN_ + #endif + #endif + #endif + + // Test for constexpr + #ifndef _WEBSOCKETPP_CONSTEXPR_TOKEN_ + #ifdef _WEBSOCKETPP_CONSTEXPR_ + // build system says we have constexpr + #define _WEBSOCKETPP_CONSTEXPR_TOKEN_ constexpr + #else + #if __has_feature(cxx_constexpr) + // clang feature detect says we have constexpr + #define _WEBSOCKETPP_CONSTEXPR_TOKEN_ constexpr + #else + // assume we don't have constexpr + #define _WEBSOCKETPP_CONSTEXPR_TOKEN_ + #endif + #endif + #endif + + // Enable initializer lists on clang when available. + #if __has_feature(cxx_generalized_initializers) && !defined(_WEBSOCKETPP_INITIALIZER_LISTS_) + #define _WEBSOCKETPP_INITIALIZER_LISTS_ + #endif +#endif + +#endif // WEBSOCKETPP_COMMON_CPP11_HPP diff --git a/src/third_party/websocketpp/websocketpp/common/functional.hpp b/src/third_party/websocketpp/websocketpp/common/functional.hpp new file mode 100644 index 00000000..8c52c08c --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/common/functional.hpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_COMMON_FUNCTIONAL_HPP +#define WEBSOCKETPP_COMMON_FUNCTIONAL_HPP + +#if defined _WEBSOCKETPP_CPP11_STL_ && !defined _WEBSOCKETPP_NO_CPP11_FUNCTIONAL_ + #ifndef _WEBSOCKETPP_CPP11_FUNCTIONAL_ + #define _WEBSOCKETPP_CPP11_FUNCTIONAL_ + #endif +#endif + +#ifdef _WEBSOCKETPP_CPP11_FUNCTIONAL_ + #include +#else + #include + #include +#endif + +namespace websocketpp { +namespace lib { + +#ifdef _WEBSOCKETPP_CPP11_FUNCTIONAL_ + using std::function; + using std::bind; + using std::ref; + namespace placeholders = std::placeholders; +#else + using boost::function; + using boost::bind; + using boost::ref; + namespace placeholders { + /// \todo this feels hacky, is there a better way? + using ::_1; + using ::_2; + } +#endif + +} // namespace lib +} // namespace websocketpp + +#endif // WEBSOCKETPP_COMMON_FUNCTIONAL_HPP diff --git a/src/third_party/websocketpp/websocketpp/common/md5.hpp b/src/third_party/websocketpp/websocketpp/common/md5.hpp new file mode 100644 index 00000000..70eaff89 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/common/md5.hpp @@ -0,0 +1,447 @@ +/* + md5.hpp is a reformulation of the md5.h and md5.c code to allow it to function + as a component of a header only library. This conversion was done by Peter + Thorson (webmaster@zaphoyd.com) in 2012 for the WebSocket++ project. The + changes are released under the same license as the original (listed below) +*/ +/* + Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved. + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + L. Peter Deutsch + ghost@aladdin.com + + */ +/* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */ +/* + Independent implementation of MD5 (RFC 1321). + + This code implements the MD5 Algorithm defined in RFC 1321, whose + text is available at + http://www.ietf.org/rfc/rfc1321.txt + The code is derived from the text of the RFC, including the test suite + (section A.5) but excluding the rest of Appendix A. It does not include + any code or documentation that is identified in the RFC as being + copyrighted. + + The original and principal author of md5.h is L. Peter Deutsch + . Other authors are noted in the change history + that follows (in reverse chronological order): + + 2002-04-13 lpd Removed support for non-ANSI compilers; removed + references to Ghostscript; clarified derivation from RFC 1321; + now handles byte order either statically or dynamically. + 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. + 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5); + added conditionalization for C++ compilation from Martin + Purschke . + 1999-05-03 lpd Original version. + */ + +#ifndef WEBSOCKETPP_COMMON_MD5_HPP +#define WEBSOCKETPP_COMMON_MD5_HPP + +/* + * This package supports both compile-time and run-time determination of CPU + * byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be + * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is + * defined as non-zero, the code will be compiled to run only on big-endian + * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to + * run on either big- or little-endian CPUs, but will run slightly less + * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined. + */ + +#include +#include +#include + +namespace websocketpp { +/// Provides MD5 hashing functionality +namespace md5 { + +typedef unsigned char md5_byte_t; /* 8-bit byte */ +typedef unsigned int md5_word_t; /* 32-bit word */ + +/* Define the state of the MD5 Algorithm. */ +typedef struct md5_state_s { + md5_word_t count[2]; /* message length in bits, lsw first */ + md5_word_t abcd[4]; /* digest buffer */ + md5_byte_t buf[64]; /* accumulate block */ +} md5_state_t; + +/* Initialize the algorithm. */ +inline void md5_init(md5_state_t *pms); + +/* Append a string to the message. */ +inline void md5_append(md5_state_t *pms, md5_byte_t const * data, size_t nbytes); + +/* Finish the message and return the digest. */ +inline void md5_finish(md5_state_t *pms, md5_byte_t digest[16]); + +#undef ZSW_MD5_BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */ +#ifdef ARCH_IS_BIG_ENDIAN +# define ZSW_MD5_BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1) +#else +# define ZSW_MD5_BYTE_ORDER 0 +#endif + +#define ZSW_MD5_T_MASK ((md5_word_t)~0) +#define ZSW_MD5_T1 /* 0xd76aa478 */ (ZSW_MD5_T_MASK ^ 0x28955b87) +#define ZSW_MD5_T2 /* 0xe8c7b756 */ (ZSW_MD5_T_MASK ^ 0x173848a9) +#define ZSW_MD5_T3 0x242070db +#define ZSW_MD5_T4 /* 0xc1bdceee */ (ZSW_MD5_T_MASK ^ 0x3e423111) +#define ZSW_MD5_T5 /* 0xf57c0faf */ (ZSW_MD5_T_MASK ^ 0x0a83f050) +#define ZSW_MD5_T6 0x4787c62a +#define ZSW_MD5_T7 /* 0xa8304613 */ (ZSW_MD5_T_MASK ^ 0x57cfb9ec) +#define ZSW_MD5_T8 /* 0xfd469501 */ (ZSW_MD5_T_MASK ^ 0x02b96afe) +#define ZSW_MD5_T9 0x698098d8 +#define ZSW_MD5_T10 /* 0x8b44f7af */ (ZSW_MD5_T_MASK ^ 0x74bb0850) +#define ZSW_MD5_T11 /* 0xffff5bb1 */ (ZSW_MD5_T_MASK ^ 0x0000a44e) +#define ZSW_MD5_T12 /* 0x895cd7be */ (ZSW_MD5_T_MASK ^ 0x76a32841) +#define ZSW_MD5_T13 0x6b901122 +#define ZSW_MD5_T14 /* 0xfd987193 */ (ZSW_MD5_T_MASK ^ 0x02678e6c) +#define ZSW_MD5_T15 /* 0xa679438e */ (ZSW_MD5_T_MASK ^ 0x5986bc71) +#define ZSW_MD5_T16 0x49b40821 +#define ZSW_MD5_T17 /* 0xf61e2562 */ (ZSW_MD5_T_MASK ^ 0x09e1da9d) +#define ZSW_MD5_T18 /* 0xc040b340 */ (ZSW_MD5_T_MASK ^ 0x3fbf4cbf) +#define ZSW_MD5_T19 0x265e5a51 +#define ZSW_MD5_T20 /* 0xe9b6c7aa */ (ZSW_MD5_T_MASK ^ 0x16493855) +#define ZSW_MD5_T21 /* 0xd62f105d */ (ZSW_MD5_T_MASK ^ 0x29d0efa2) +#define ZSW_MD5_T22 0x02441453 +#define ZSW_MD5_T23 /* 0xd8a1e681 */ (ZSW_MD5_T_MASK ^ 0x275e197e) +#define ZSW_MD5_T24 /* 0xe7d3fbc8 */ (ZSW_MD5_T_MASK ^ 0x182c0437) +#define ZSW_MD5_T25 0x21e1cde6 +#define ZSW_MD5_T26 /* 0xc33707d6 */ (ZSW_MD5_T_MASK ^ 0x3cc8f829) +#define ZSW_MD5_T27 /* 0xf4d50d87 */ (ZSW_MD5_T_MASK ^ 0x0b2af278) +#define ZSW_MD5_T28 0x455a14ed +#define ZSW_MD5_T29 /* 0xa9e3e905 */ (ZSW_MD5_T_MASK ^ 0x561c16fa) +#define ZSW_MD5_T30 /* 0xfcefa3f8 */ (ZSW_MD5_T_MASK ^ 0x03105c07) +#define ZSW_MD5_T31 0x676f02d9 +#define ZSW_MD5_T32 /* 0x8d2a4c8a */ (ZSW_MD5_T_MASK ^ 0x72d5b375) +#define ZSW_MD5_T33 /* 0xfffa3942 */ (ZSW_MD5_T_MASK ^ 0x0005c6bd) +#define ZSW_MD5_T34 /* 0x8771f681 */ (ZSW_MD5_T_MASK ^ 0x788e097e) +#define ZSW_MD5_T35 0x6d9d6122 +#define ZSW_MD5_T36 /* 0xfde5380c */ (ZSW_MD5_T_MASK ^ 0x021ac7f3) +#define ZSW_MD5_T37 /* 0xa4beea44 */ (ZSW_MD5_T_MASK ^ 0x5b4115bb) +#define ZSW_MD5_T38 0x4bdecfa9 +#define ZSW_MD5_T39 /* 0xf6bb4b60 */ (ZSW_MD5_T_MASK ^ 0x0944b49f) +#define ZSW_MD5_T40 /* 0xbebfbc70 */ (ZSW_MD5_T_MASK ^ 0x4140438f) +#define ZSW_MD5_T41 0x289b7ec6 +#define ZSW_MD5_T42 /* 0xeaa127fa */ (ZSW_MD5_T_MASK ^ 0x155ed805) +#define ZSW_MD5_T43 /* 0xd4ef3085 */ (ZSW_MD5_T_MASK ^ 0x2b10cf7a) +#define ZSW_MD5_T44 0x04881d05 +#define ZSW_MD5_T45 /* 0xd9d4d039 */ (ZSW_MD5_T_MASK ^ 0x262b2fc6) +#define ZSW_MD5_T46 /* 0xe6db99e5 */ (ZSW_MD5_T_MASK ^ 0x1924661a) +#define ZSW_MD5_T47 0x1fa27cf8 +#define ZSW_MD5_T48 /* 0xc4ac5665 */ (ZSW_MD5_T_MASK ^ 0x3b53a99a) +#define ZSW_MD5_T49 /* 0xf4292244 */ (ZSW_MD5_T_MASK ^ 0x0bd6ddbb) +#define ZSW_MD5_T50 0x432aff97 +#define ZSW_MD5_T51 /* 0xab9423a7 */ (ZSW_MD5_T_MASK ^ 0x546bdc58) +#define ZSW_MD5_T52 /* 0xfc93a039 */ (ZSW_MD5_T_MASK ^ 0x036c5fc6) +#define ZSW_MD5_T53 0x655b59c3 +#define ZSW_MD5_T54 /* 0x8f0ccc92 */ (ZSW_MD5_T_MASK ^ 0x70f3336d) +#define ZSW_MD5_T55 /* 0xffeff47d */ (ZSW_MD5_T_MASK ^ 0x00100b82) +#define ZSW_MD5_T56 /* 0x85845dd1 */ (ZSW_MD5_T_MASK ^ 0x7a7ba22e) +#define ZSW_MD5_T57 0x6fa87e4f +#define ZSW_MD5_T58 /* 0xfe2ce6e0 */ (ZSW_MD5_T_MASK ^ 0x01d3191f) +#define ZSW_MD5_T59 /* 0xa3014314 */ (ZSW_MD5_T_MASK ^ 0x5cfebceb) +#define ZSW_MD5_T60 0x4e0811a1 +#define ZSW_MD5_T61 /* 0xf7537e82 */ (ZSW_MD5_T_MASK ^ 0x08ac817d) +#define ZSW_MD5_T62 /* 0xbd3af235 */ (ZSW_MD5_T_MASK ^ 0x42c50dca) +#define ZSW_MD5_T63 0x2ad7d2bb +#define ZSW_MD5_T64 /* 0xeb86d391 */ (ZSW_MD5_T_MASK ^ 0x14792c6e) + +static void md5_process(md5_state_t *pms, md5_byte_t const * data /*[64]*/) { + md5_word_t + a = pms->abcd[0], b = pms->abcd[1], + c = pms->abcd[2], d = pms->abcd[3]; + md5_word_t t; +#if ZSW_MD5_BYTE_ORDER > 0 + /* Define storage only for big-endian CPUs. */ + md5_word_t X[16]; +#else + /* Define storage for little-endian or both types of CPUs. */ + md5_word_t xbuf[16]; + md5_word_t const * X; +#endif + + { +#if ZSW_MD5_BYTE_ORDER == 0 + /* + * Determine dynamically whether this is a big-endian or + * little-endian machine, since we can use a more efficient + * algorithm on the latter. + */ + static int const w = 1; + + if (*((md5_byte_t const *)&w)) /* dynamic little-endian */ +#endif +#if ZSW_MD5_BYTE_ORDER <= 0 /* little-endian */ + { + /* + * On little-endian machines, we can process properly aligned + * data without copying it. + */ + if (!((data - (md5_byte_t const *)0) & 3)) { + /* data are properly aligned */ + X = (md5_word_t const *)data; + } else { + /* not aligned */ + std::memcpy(xbuf, data, 64); + X = xbuf; + } + } +#endif +#if ZSW_MD5_BYTE_ORDER == 0 + else /* dynamic big-endian */ +#endif +#if ZSW_MD5_BYTE_ORDER >= 0 /* big-endian */ + { + /* + * On big-endian machines, we must arrange the bytes in the + * right order. + */ + const md5_byte_t *xp = data; + int i; + +# if ZSW_MD5_BYTE_ORDER == 0 + X = xbuf; /* (dynamic only) */ +# else +# define xbuf X /* (static only) */ +# endif + for (i = 0; i < 16; ++i, xp += 4) + xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24); + } +#endif + } + +#define ZSW_MD5_ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) + + /* Round 1. */ + /* Let [abcd k s i] denote the operation + a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */ +#define ZSW_MD5_F(x, y, z) (((x) & (y)) | (~(x) & (z))) +#define SET(a, b, c, d, k, s, Ti)\ + t = a + ZSW_MD5_F(b,c,d) + X[k] + Ti;\ + a = ZSW_MD5_ROTATE_LEFT(t, s) + b + /* Do the following 16 operations. */ + SET(a, b, c, d, 0, 7, ZSW_MD5_T1); + SET(d, a, b, c, 1, 12, ZSW_MD5_T2); + SET(c, d, a, b, 2, 17, ZSW_MD5_T3); + SET(b, c, d, a, 3, 22, ZSW_MD5_T4); + SET(a, b, c, d, 4, 7, ZSW_MD5_T5); + SET(d, a, b, c, 5, 12, ZSW_MD5_T6); + SET(c, d, a, b, 6, 17, ZSW_MD5_T7); + SET(b, c, d, a, 7, 22, ZSW_MD5_T8); + SET(a, b, c, d, 8, 7, ZSW_MD5_T9); + SET(d, a, b, c, 9, 12, ZSW_MD5_T10); + SET(c, d, a, b, 10, 17, ZSW_MD5_T11); + SET(b, c, d, a, 11, 22, ZSW_MD5_T12); + SET(a, b, c, d, 12, 7, ZSW_MD5_T13); + SET(d, a, b, c, 13, 12, ZSW_MD5_T14); + SET(c, d, a, b, 14, 17, ZSW_MD5_T15); + SET(b, c, d, a, 15, 22, ZSW_MD5_T16); +#undef SET + + /* Round 2. */ + /* Let [abcd k s i] denote the operation + a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */ +#define ZSW_MD5_G(x, y, z) (((x) & (z)) | ((y) & ~(z))) +#define SET(a, b, c, d, k, s, Ti)\ + t = a + ZSW_MD5_G(b,c,d) + X[k] + Ti;\ + a = ZSW_MD5_ROTATE_LEFT(t, s) + b + /* Do the following 16 operations. */ + SET(a, b, c, d, 1, 5, ZSW_MD5_T17); + SET(d, a, b, c, 6, 9, ZSW_MD5_T18); + SET(c, d, a, b, 11, 14, ZSW_MD5_T19); + SET(b, c, d, a, 0, 20, ZSW_MD5_T20); + SET(a, b, c, d, 5, 5, ZSW_MD5_T21); + SET(d, a, b, c, 10, 9, ZSW_MD5_T22); + SET(c, d, a, b, 15, 14, ZSW_MD5_T23); + SET(b, c, d, a, 4, 20, ZSW_MD5_T24); + SET(a, b, c, d, 9, 5, ZSW_MD5_T25); + SET(d, a, b, c, 14, 9, ZSW_MD5_T26); + SET(c, d, a, b, 3, 14, ZSW_MD5_T27); + SET(b, c, d, a, 8, 20, ZSW_MD5_T28); + SET(a, b, c, d, 13, 5, ZSW_MD5_T29); + SET(d, a, b, c, 2, 9, ZSW_MD5_T30); + SET(c, d, a, b, 7, 14, ZSW_MD5_T31); + SET(b, c, d, a, 12, 20, ZSW_MD5_T32); +#undef SET + + /* Round 3. */ + /* Let [abcd k s t] denote the operation + a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */ +#define ZSW_MD5_H(x, y, z) ((x) ^ (y) ^ (z)) +#define SET(a, b, c, d, k, s, Ti)\ + t = a + ZSW_MD5_H(b,c,d) + X[k] + Ti;\ + a = ZSW_MD5_ROTATE_LEFT(t, s) + b + /* Do the following 16 operations. */ + SET(a, b, c, d, 5, 4, ZSW_MD5_T33); + SET(d, a, b, c, 8, 11, ZSW_MD5_T34); + SET(c, d, a, b, 11, 16, ZSW_MD5_T35); + SET(b, c, d, a, 14, 23, ZSW_MD5_T36); + SET(a, b, c, d, 1, 4, ZSW_MD5_T37); + SET(d, a, b, c, 4, 11, ZSW_MD5_T38); + SET(c, d, a, b, 7, 16, ZSW_MD5_T39); + SET(b, c, d, a, 10, 23, ZSW_MD5_T40); + SET(a, b, c, d, 13, 4, ZSW_MD5_T41); + SET(d, a, b, c, 0, 11, ZSW_MD5_T42); + SET(c, d, a, b, 3, 16, ZSW_MD5_T43); + SET(b, c, d, a, 6, 23, ZSW_MD5_T44); + SET(a, b, c, d, 9, 4, ZSW_MD5_T45); + SET(d, a, b, c, 12, 11, ZSW_MD5_T46); + SET(c, d, a, b, 15, 16, ZSW_MD5_T47); + SET(b, c, d, a, 2, 23, ZSW_MD5_T48); +#undef SET + + /* Round 4. */ + /* Let [abcd k s t] denote the operation + a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */ +#define ZSW_MD5_I(x, y, z) ((y) ^ ((x) | ~(z))) +#define SET(a, b, c, d, k, s, Ti)\ + t = a + ZSW_MD5_I(b,c,d) + X[k] + Ti;\ + a = ZSW_MD5_ROTATE_LEFT(t, s) + b + /* Do the following 16 operations. */ + SET(a, b, c, d, 0, 6, ZSW_MD5_T49); + SET(d, a, b, c, 7, 10, ZSW_MD5_T50); + SET(c, d, a, b, 14, 15, ZSW_MD5_T51); + SET(b, c, d, a, 5, 21, ZSW_MD5_T52); + SET(a, b, c, d, 12, 6, ZSW_MD5_T53); + SET(d, a, b, c, 3, 10, ZSW_MD5_T54); + SET(c, d, a, b, 10, 15, ZSW_MD5_T55); + SET(b, c, d, a, 1, 21, ZSW_MD5_T56); + SET(a, b, c, d, 8, 6, ZSW_MD5_T57); + SET(d, a, b, c, 15, 10, ZSW_MD5_T58); + SET(c, d, a, b, 6, 15, ZSW_MD5_T59); + SET(b, c, d, a, 13, 21, ZSW_MD5_T60); + SET(a, b, c, d, 4, 6, ZSW_MD5_T61); + SET(d, a, b, c, 11, 10, ZSW_MD5_T62); + SET(c, d, a, b, 2, 15, ZSW_MD5_T63); + SET(b, c, d, a, 9, 21, ZSW_MD5_T64); +#undef SET + + /* Then perform the following additions. (That is increment each + of the four registers by the value it had before this block + was started.) */ + pms->abcd[0] += a; + pms->abcd[1] += b; + pms->abcd[2] += c; + pms->abcd[3] += d; +} + +void md5_init(md5_state_t *pms) { + pms->count[0] = pms->count[1] = 0; + pms->abcd[0] = 0x67452301; + pms->abcd[1] = /*0xefcdab89*/ ZSW_MD5_T_MASK ^ 0x10325476; + pms->abcd[2] = /*0x98badcfe*/ ZSW_MD5_T_MASK ^ 0x67452301; + pms->abcd[3] = 0x10325476; +} + +void md5_append(md5_state_t *pms, md5_byte_t const * data, size_t nbytes) { + md5_byte_t const * p = data; + size_t left = nbytes; + int offset = (pms->count[0] >> 3) & 63; + md5_word_t nbits = (md5_word_t)(nbytes << 3); + + if (nbytes <= 0) + return; + + /* Update the message length. */ + pms->count[1] += nbytes >> 29; + pms->count[0] += nbits; + if (pms->count[0] < nbits) + pms->count[1]++; + + /* Process an initial partial block. */ + if (offset) { + int copy = (offset + nbytes > 64 ? 64 - offset : static_cast(nbytes)); + + std::memcpy(pms->buf + offset, p, copy); + if (offset + copy < 64) + return; + p += copy; + left -= copy; + md5_process(pms, pms->buf); + } + + /* Process full blocks. */ + for (; left >= 64; p += 64, left -= 64) + md5_process(pms, p); + + /* Process a final partial block. */ + if (left) + std::memcpy(pms->buf, p, left); +} + +void md5_finish(md5_state_t *pms, md5_byte_t digest[16]) { + static md5_byte_t const pad[64] = { + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + }; + md5_byte_t data[8]; + int i; + + /* Save the length before padding. */ + for (i = 0; i < 8; ++i) + data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3)); + /* Pad to 56 bytes mod 64. */ + md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1); + /* Append the length. */ + md5_append(pms, data, 8); + for (i = 0; i < 16; ++i) + digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3)); +} + +// some convenience c++ functions +inline std::string md5_hash_string(std::string const & s) { + char digest[16]; + + md5_state_t state; + + md5_init(&state); + md5_append(&state, (md5_byte_t const *)s.c_str(), s.size()); + md5_finish(&state, (md5_byte_t *)digest); + + std::string ret; + ret.resize(16); + std::copy(digest,digest+16,ret.begin()); + + return ret; +} + +const char hexval[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; + +inline std::string md5_hash_hex(std::string const & input) { + std::string hash = md5_hash_string(input); + std::string hex; + + for (size_t i = 0; i < hash.size(); i++) { + hex.push_back(hexval[((hash[i] >> 4) & 0xF)]); + hex.push_back(hexval[(hash[i]) & 0x0F]); + } + + return hex; +} + +} // md5 +} // websocketpp + +#endif // WEBSOCKETPP_COMMON_MD5_HPP diff --git a/src/third_party/websocketpp/websocketpp/common/memory.hpp b/src/third_party/websocketpp/websocketpp/common/memory.hpp new file mode 100644 index 00000000..65a5b906 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/common/memory.hpp @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_COMMON_MEMORY_HPP +#define WEBSOCKETPP_COMMON_MEMORY_HPP + +#if defined _WEBSOCKETPP_CPP11_STL_ && !defined _WEBSOCKETPP_NO_CPP11_MEMORY_ + #ifndef _WEBSOCKETPP_CPP11_MEMORY_ + #define _WEBSOCKETPP_CPP11_MEMORY_ + #endif +#endif + +#ifdef _WEBSOCKETPP_CPP11_MEMORY_ + #include +#else + #include + #include + #include + #include +#endif + +namespace websocketpp { +namespace lib { + +#ifdef _WEBSOCKETPP_CPP11_MEMORY_ + using std::shared_ptr; + using std::weak_ptr; + using std::enable_shared_from_this; + using std::static_pointer_cast; + + typedef std::unique_ptr unique_ptr_uchar_array; +#else + using boost::shared_ptr; + using boost::weak_ptr; + using boost::enable_shared_from_this; + using boost::static_pointer_cast; + + typedef boost::scoped_array unique_ptr_uchar_array; +#endif + +} // namespace lib +} // namespace websocketpp + +#endif // WEBSOCKETPP_COMMON_MEMORY_HPP diff --git a/src/third_party/websocketpp/websocketpp/common/network.hpp b/src/third_party/websocketpp/websocketpp/common/network.hpp new file mode 100644 index 00000000..6a01f140 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/common/network.hpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_COMMON_NETWORK_HPP +#define WEBSOCKETPP_COMMON_NETWORK_HPP + +// For ntohs and htons +#if defined(WIN32) + #include +#else + //#include + #include +#endif + +namespace websocketpp { +namespace lib { +namespace net { + +inline bool is_little_endian() { + short int val = 0x1; + char *ptr = (char*)&val; + return (ptr[0] == 1); +} + +#define TYP_INIT 0 +#define TYP_SMLE 1 +#define TYP_BIGE 2 + +inline uint64_t htonll(uint64_t src) { + static int typ = TYP_INIT; + unsigned char c; + union { + uint64_t ull; + unsigned char c[8]; + } x; + if (typ == TYP_INIT) { + x.ull = 0x01; + typ = (x.c[7] == 0x01ULL) ? TYP_BIGE : TYP_SMLE; + } + if (typ == TYP_BIGE) + return src; + x.ull = src; + c = x.c[0]; x.c[0] = x.c[7]; x.c[7] = c; + c = x.c[1]; x.c[1] = x.c[6]; x.c[6] = c; + c = x.c[2]; x.c[2] = x.c[5]; x.c[5] = c; + c = x.c[3]; x.c[3] = x.c[4]; x.c[4] = c; + return x.ull; +} + +inline uint64_t ntohll(uint64_t src) { + return htonll(src); +} + +} // net +} // lib +} // websocketpp + +#endif // WEBSOCKETPP_COMMON_NETWORK_HPP diff --git a/src/third_party/websocketpp/websocketpp/common/platforms.hpp b/src/third_party/websocketpp/websocketpp/common/platforms.hpp new file mode 100644 index 00000000..4e031aa3 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/common/platforms.hpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_COMMON_PLATFORMS_HPP +#define WEBSOCKETPP_COMMON_PLATFORMS_HPP + +/** + * This header contains any platform specific preprocessor adjustments that + * don't fit somewhere else better. + */ + +#if defined(WIN32) && !defined(NOMINMAX) + // don't define min and max macros that conflict with std::min and std::max + #define NOMINMAX +#endif + +#endif // WEBSOCKETPP_COMMON_PLATFORMS_HPP diff --git a/src/third_party/websocketpp/websocketpp/common/random.hpp b/src/third_party/websocketpp/websocketpp/common/random.hpp new file mode 100644 index 00000000..fe139516 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/common/random.hpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_COMMON_RANDOM_DEVICE_HPP +#define WEBSOCKETPP_COMMON_RANDOM_DEVICE_HPP + +#if defined _WEBSOCKETPP_CPP11_STL_ && !defined _WEBSOCKETPP_NO_CPP11_RANDOM_DEVICE_ + #ifndef _WEBSOCKETPP_CPP11_RANDOM_DEVICE_ + #define _WEBSOCKETPP_CPP11_RANDOM_DEVICE_ + #endif +#endif + +#ifdef _WEBSOCKETPP_CPP11_RANDOM_DEVICE_ + #include +#else + #include + + #if (BOOST_VERSION/100000) == 1 && ((BOOST_VERSION/100)%1000) > 46 + #include + #include + #elif (BOOST_VERSION/100000) == 1 && ((BOOST_VERSION/100)%1000) >= 43 + #include + #else + // TODO: static_assert(false, "Could not find a suitable random_device") + #endif +#endif + +namespace websocketpp { +namespace lib { + +#ifdef _WEBSOCKETPP_CPP11_RANDOM_DEVICE_ + using std::random_device; + using std::uniform_int_distribution; +#else + using boost::random::random_device; + using boost::random::uniform_int_distribution; +#endif + +} // namespace lib +} // namespace websocketpp + +#endif // WEBSOCKETPP_COMMON_RANDOM_DEVICE_HPP diff --git a/src/third_party/websocketpp/websocketpp/common/regex.hpp b/src/third_party/websocketpp/websocketpp/common/regex.hpp new file mode 100644 index 00000000..b85cd709 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/common/regex.hpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_COMMON_REGEX_HPP +#define WEBSOCKETPP_COMMON_REGEX_HPP + +#if defined _WEBSOCKETPP_CPP11_STL_ && !defined _WEBSOCKETPP_NO_CPP11_REGEX_ + #ifndef _WEBSOCKETPP_CPP11_REGEX_ + #define _WEBSOCKETPP_CPP11_REGEX_ + #endif +#endif + +#ifdef _WEBSOCKETPP_CPP11_REGEX_ + #include +#else + #include +#endif + +namespace websocketpp { +namespace lib { + +#ifdef _WEBSOCKETPP_CPP11_REGEX_ + using std::cmatch; + using std::regex; + using std::regex_match; +#else + using boost::cmatch; + using boost::regex; + using boost::regex_match; +#endif + +} // namespace lib +} // namespace websocketpp + +#endif // WEBSOCKETPP_COMMON_REGEX_HPP diff --git a/src/third_party/websocketpp/websocketpp/common/stdint.hpp b/src/third_party/websocketpp/websocketpp/common/stdint.hpp new file mode 100644 index 00000000..233e36f5 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/common/stdint.hpp @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_COMMON_STDINT_HPP +#define WEBSOCKETPP_COMMON_STDINT_HPP + +#ifndef __STDC_LIMIT_MACROS + #define __STDC_LIMIT_MACROS 1 +#endif + +#if WIN32 && (_MSC_VER < 1600) + #include + + using boost::int8_t; + using boost::int_least8_t; + using boost::int_fast8_t; + using boost::uint8_t; + using boost::uint_least8_t; + using boost::uint_fast8_t; + + using boost::int16_t; + using boost::int_least16_t; + using boost::int_fast16_t; + using boost::uint16_t; + using boost::uint_least16_t; + using boost::uint_fast16_t; + + using boost::int32_t; + using boost::int_least32_t; + using boost::int_fast32_t; + using boost::uint32_t; + using boost::uint_least32_t; + using boost::uint_fast32_t; + + #ifndef BOOST_NO_INT64_T + using boost::int64_t; + using boost::int_least64_t; + using boost::int_fast64_t; + using boost::uint64_t; + using boost::uint_least64_t; + using boost::uint_fast64_t; + #endif + using boost::intmax_t; + using boost::uintmax_t; +#else + #include +#endif + +#endif // WEBSOCKETPP_COMMON_STDINT_HPP diff --git a/src/third_party/websocketpp/websocketpp/common/system_error.hpp b/src/third_party/websocketpp/websocketpp/common/system_error.hpp new file mode 100644 index 00000000..fff3dfe9 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/common/system_error.hpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_COMMON_SYSTEM_ERROR_HPP +#define WEBSOCKETPP_COMMON_SYSTEM_ERROR_HPP + +#if defined _WEBSOCKETPP_CPP11_STL_ && !defined _WEBSOCKETPP_NO_CPP11_SYSTEM_ERROR_ + #ifndef _WEBSOCKETPP_CPP11_SYSTEM_ERROR_ + #define _WEBSOCKETPP_CPP11_SYSTEM_ERROR_ + #endif +#endif + +#ifdef _WEBSOCKETPP_CPP11_SYSTEM_ERROR_ + #include +#else + #include + #include +#endif + +namespace websocketpp { +namespace lib { + +#ifdef _WEBSOCKETPP_CPP11_SYSTEM_ERROR_ + using std::error_code; + using std::error_category; + using std::error_condition; + using std::system_error; + #define _WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_ namespace std { + #define _WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_ } +#else + using boost::system::error_code; + using boost::system::error_category; + using boost::system::error_condition; + using boost::system::system_error; + #define _WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_ namespace boost { namespace system { + #define _WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_ }} +#endif + +} // namespace lib +} // namespace websocketpp + +#endif // WEBSOCKETPP_COMMON_SYSTEM_ERROR_HPP diff --git a/src/third_party/websocketpp/websocketpp/common/thread.hpp b/src/third_party/websocketpp/websocketpp/common/thread.hpp new file mode 100644 index 00000000..e02a6582 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/common/thread.hpp @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_COMMON_THREAD_HPP +#define WEBSOCKETPP_COMMON_THREAD_HPP + +#if defined _WEBSOCKETPP_CPP11_STL_ && !defined _WEBSOCKETPP_NO_CPP11_THREAD_ + #ifndef _WEBSOCKETPP_CPP11_THREAD_ + #define _WEBSOCKETPP_CPP11_THREAD_ + #endif +#endif + +#ifdef _WEBSOCKETPP_CPP11_THREAD_ + #include + #include + #include +#else + #include + #include + #include +#endif + +namespace websocketpp { +namespace lib { + +#ifdef _WEBSOCKETPP_CPP11_THREAD_ + using std::mutex; + using std::lock_guard; + using std::thread; + using std::unique_lock; + using std::condition_variable; +#else + using boost::mutex; + using boost::lock_guard; + using boost::thread; + using boost::unique_lock; + using boost::condition_variable; +#endif + +} // namespace lib +} // namespace websocketpp + +#endif // WEBSOCKETPP_COMMON_THREAD_HPP diff --git a/src/third_party/websocketpp/websocketpp/concurrency/basic.hpp b/src/third_party/websocketpp/websocketpp/concurrency/basic.hpp new file mode 100644 index 00000000..84e61b36 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/concurrency/basic.hpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONCURRENCY_BASIC_HPP +#define WEBSOCKETPP_CONCURRENCY_BASIC_HPP + +#include + +namespace websocketpp { +namespace concurrency { + +/// Concurrency policy that uses std::mutex / boost::mutex +class basic { +public: + typedef lib::mutex mutex_type; + typedef lib::lock_guard scoped_lock_type; +}; + +} // namespace concurrency +} // namespace websocketpp + +#endif // WEBSOCKETPP_CONCURRENCY_BASIC_HPP diff --git a/src/third_party/websocketpp/websocketpp/concurrency/none.hpp b/src/third_party/websocketpp/websocketpp/concurrency/none.hpp new file mode 100644 index 00000000..9d19d64c --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/concurrency/none.hpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONCURRENCY_NONE_HPP +#define WEBSOCKETPP_CONCURRENCY_NONE_HPP + +namespace websocketpp { +namespace concurrency { + +namespace none_impl { +class fake_mutex { +public: + fake_mutex() {} + ~fake_mutex() {} +}; + +class fake_lock_guard { +public: + explicit fake_lock_guard(fake_mutex foo) {} + ~fake_lock_guard() {} +}; +} // namespace none_impl + +/// Stub Concurrency policy to remove locking in single threaded projects +class none { +public: + typedef none_impl::fake_mutex mutex_type; + typedef none_impl::fake_lock_guard scoped_lock_type; +}; + +} // namespace concurrency +} // namespace websocketpp + +#endif // WEBSOCKETPP_CONCURRENCY_ASYNC_HPP diff --git a/src/third_party/websocketpp/websocketpp/config/asio.hpp b/src/third_party/websocketpp/websocketpp/config/asio.hpp new file mode 100644 index 00000000..b2070edb --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/config/asio.hpp @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONFIG_ASIO_TLS_HPP +#define WEBSOCKETPP_CONFIG_ASIO_TLS_HPP + +#include +#include +#include + +// Pull in non-tls config +#include + +// Define TLS config +namespace websocketpp { +namespace config { + +/// Server config with asio transport and TLS enabled +struct asio_tls : public core { + typedef asio_tls type; + typedef core base; + + typedef base::concurrency_type concurrency_type; + + typedef base::request_type request_type; + typedef base::response_type response_type; + + typedef base::message_type message_type; + typedef base::con_msg_manager_type con_msg_manager_type; + typedef base::endpoint_msg_manager_type endpoint_msg_manager_type; + + typedef base::alog_type alog_type; + typedef base::elog_type elog_type; + + typedef base::rng_type rng_type; + + struct transport_config : public base::transport_config { + typedef type::concurrency_type concurrency_type; + typedef type::alog_type alog_type; + typedef type::elog_type elog_type; + typedef type::request_type request_type; + typedef type::response_type response_type; + typedef websocketpp::transport::asio::tls_socket::endpoint socket_type; + }; + + typedef websocketpp::transport::asio::endpoint + transport_type; +}; + +} // namespace config +} // namespace websocketpp + +#endif // WEBSOCKETPP_CONFIG_ASIO_TLS_HPP diff --git a/src/third_party/websocketpp/websocketpp/config/asio_client.hpp b/src/third_party/websocketpp/websocketpp/config/asio_client.hpp new file mode 100644 index 00000000..26d4c4db --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/config/asio_client.hpp @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONFIG_ASIO_TLS_CLIENT_HPP +#define WEBSOCKETPP_CONFIG_ASIO_TLS_CLIENT_HPP + +#include +#include +#include + +// Pull in non-tls config +#include + +// Define TLS config +namespace websocketpp { +namespace config { + +/// Client config with asio transport and TLS enabled +struct asio_tls_client : public core_client { + typedef asio_tls_client type; + typedef core_client base; + + typedef base::concurrency_type concurrency_type; + + typedef base::request_type request_type; + typedef base::response_type response_type; + + typedef base::message_type message_type; + typedef base::con_msg_manager_type con_msg_manager_type; + typedef base::endpoint_msg_manager_type endpoint_msg_manager_type; + + typedef base::alog_type alog_type; + typedef base::elog_type elog_type; + + typedef base::rng_type rng_type; + + struct transport_config : public base::transport_config { + typedef type::concurrency_type concurrency_type; + typedef type::alog_type alog_type; + typedef type::elog_type elog_type; + typedef type::request_type request_type; + typedef type::response_type response_type; + typedef websocketpp::transport::asio::tls_socket::endpoint socket_type; + }; + + typedef websocketpp::transport::asio::endpoint + transport_type; +}; + +} // namespace config +} // namespace websocketpp + +#endif // WEBSOCKETPP_CONFIG_ASIO_TLS_CLIENT_HPP diff --git a/src/third_party/websocketpp/websocketpp/config/asio_no_tls.hpp b/src/third_party/websocketpp/websocketpp/config/asio_no_tls.hpp new file mode 100644 index 00000000..a40e99a8 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/config/asio_no_tls.hpp @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONFIG_ASIO_HPP +#define WEBSOCKETPP_CONFIG_ASIO_HPP + +#include +#include + +namespace websocketpp { +namespace config { + +/// Server config with asio transport and TLS disabled +struct asio : public core { + typedef asio type; + typedef core base; + + typedef base::concurrency_type concurrency_type; + + typedef base::request_type request_type; + typedef base::response_type response_type; + + typedef base::message_type message_type; + typedef base::con_msg_manager_type con_msg_manager_type; + typedef base::endpoint_msg_manager_type endpoint_msg_manager_type; + + typedef base::alog_type alog_type; + typedef base::elog_type elog_type; + + typedef base::rng_type rng_type; + + struct transport_config : public base::transport_config { + typedef type::concurrency_type concurrency_type; + typedef type::alog_type alog_type; + typedef type::elog_type elog_type; + typedef type::request_type request_type; + typedef type::response_type response_type; + typedef websocketpp::transport::asio::basic_socket::endpoint + socket_type; + }; + + typedef websocketpp::transport::asio::endpoint + transport_type; +}; + +} // namespace config +} // namespace websocketpp + +#endif // WEBSOCKETPP_CONFIG_ASIO_HPP diff --git a/src/third_party/websocketpp/websocketpp/config/asio_no_tls_client.hpp b/src/third_party/websocketpp/websocketpp/config/asio_no_tls_client.hpp new file mode 100644 index 00000000..8b9635f8 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/config/asio_no_tls_client.hpp @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONFIG_ASIO_CLIENT_HPP +#define WEBSOCKETPP_CONFIG_ASIO_CLIENT_HPP + +#include +#include + +namespace websocketpp { +namespace config { + +/// Client config with asio transport and TLS disabled +struct asio_client : public core_client { + typedef asio_client type; + typedef core_client base; + + typedef base::concurrency_type concurrency_type; + + typedef base::request_type request_type; + typedef base::response_type response_type; + + typedef base::message_type message_type; + typedef base::con_msg_manager_type con_msg_manager_type; + typedef base::endpoint_msg_manager_type endpoint_msg_manager_type; + + typedef base::alog_type alog_type; + typedef base::elog_type elog_type; + + typedef base::rng_type rng_type; + + struct transport_config : public base::transport_config { + typedef type::concurrency_type concurrency_type; + typedef type::alog_type alog_type; + typedef type::elog_type elog_type; + typedef type::request_type request_type; + typedef type::response_type response_type; + typedef websocketpp::transport::asio::basic_socket::endpoint + socket_type; + }; + + typedef websocketpp::transport::asio::endpoint + transport_type; +}; + +} // namespace config +} // namespace websocketpp + +#endif // WEBSOCKETPP_CONFIG_ASIO_CLIENT_HPP diff --git a/src/third_party/websocketpp/websocketpp/config/boost_config.hpp b/src/third_party/websocketpp/websocketpp/config/boost_config.hpp new file mode 100644 index 00000000..19c89053 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/config/boost_config.hpp @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + // This header defines WebSocket++ macros for C++11 compatibility based on the Boost.Config library. + // This will correctly configure most target platforms simply by including this header before + // any other WebSocket++ header. + +#ifndef WEBSOCKETPP_CONFIG_BOOST_CONFIG_HPP +#define WEBSOCKETPP_CONFIG_BOOST_CONFIG_HPP + +#include + +// _WEBSOCKETPP_CPP11_MEMORY_ and _WEBSOCKETPP_CPP11_FUNCTIONAL_ presently +// only work if either both or neither is defined. +#if !defined BOOST_NO_CXX11_SMART_PTR && !defined BOOST_NO_CXX11_HDR_FUNCTIONAL + #define _WEBSOCKETPP_CPP11_MEMORY_ + #define _WEBSOCKETPP_CPP11_FUNCTIONAL_ +#endif + +#ifndef BOOST_ASIO_HAS_STD_CHRONO + #define _WEBSOCKETPP_CPP11_CHRONO_ +#endif + +#ifndef BOOST_NO_CXX11_HDR_RANDOM + #define _WEBSOCKETPP_CPP11_RANDOM_DEVICE_ +#endif + +#ifndef BOOST_NO_CXX11_HDR_REGEX + #define _WEBSOCKETPP_CPP11_REGEX_ +#endif + +#ifndef BOOST_NO_CXX11_HDR_SYSTEM_ERROR + #define _WEBSOCKETPP_CPP11_SYSTEM_ERROR_ +#endif + +#ifndef BOOST_NO_CXX11_HDR_THREAD + #define _WEBSOCKETPP_CPP11_THREAD_ +#endif + +#ifndef BOOST_NO_CXX11_HDR_INITIALIZER_LIST + #define _WEBSOCKETPP_INITIALIZER_LISTS_ +#endif + +#define _WEBSOCKETPP_NOEXCEPT_TOKEN_ BOOST_NOEXCEPT +#define _WEBSOCKETPP_CONSTEXPR_TOKEN_ BOOST_CONSTEXPR + +#endif // WEBSOCKETPP_CONFIG_BOOST_CONFIG_HPP diff --git a/src/third_party/websocketpp/websocketpp/config/core.hpp b/src/third_party/websocketpp/websocketpp/config/core.hpp new file mode 100644 index 00000000..69744a19 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/config/core.hpp @@ -0,0 +1,251 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONFIG_CORE_HPP +#define WEBSOCKETPP_CONFIG_CORE_HPP + +// Non-Policy common stuff +#include +#include +#include + +// Concurrency +#include + +// Transport +#include + +// HTTP +#include +#include + +// Messages +#include +#include + +// Loggers +#include + +// RNG +#include + +// User stub base classes +#include +#include + +// Extensions +#include + +namespace websocketpp { +namespace config { + +/// Server config with iostream transport +struct core { + typedef core type; + + // Concurrency policy + typedef websocketpp::concurrency::basic concurrency_type; + + // HTTP Parser Policies + typedef http::parser::request request_type; + typedef http::parser::response response_type; + + // Message Policies + typedef message_buffer::message + message_type; + typedef message_buffer::alloc::con_msg_manager + con_msg_manager_type; + typedef message_buffer::alloc::endpoint_msg_manager + endpoint_msg_manager_type; + + /// Logging policies + typedef websocketpp::log::basic elog_type; + typedef websocketpp::log::basic alog_type; + + /// RNG policies + typedef websocketpp::random::none::int_generator rng_type; + + struct transport_config { + typedef type::concurrency_type concurrency_type; + typedef type::elog_type elog_type; + typedef type::alog_type alog_type; + typedef type::request_type request_type; + typedef type::response_type response_type; + + /// Default timer values (in ms) + + /// Length of time to wait for socket pre-initialization + /** + * Exactly what this includes depends on the socket policy in use + */ + static const long timeout_socket_pre_init = 5000; + + /// Length of time to wait before a proxy handshake is aborted + static const long timeout_proxy = 5000; + + /// Length of time to wait for socket post-initialization + /** + * Exactly what this includes depends on the socket policy in use. + * Often this means the TLS handshake + */ + static const long timeout_socket_post_init = 5000; + + /// Length of time to wait for dns resolution + static const long timeout_dns_resolve = 5000; + + /// Length of time to wait for TCP connect + static const long timeout_connect = 5000; + + /// Length of time to wait for socket shutdown + static const long timeout_socket_shutdown = 5000; + }; + + /// Transport Endpoint Component + typedef websocketpp::transport::iostream::endpoint + transport_type; + + /// User overridable Endpoint base class + typedef websocketpp::endpoint_base endpoint_base; + /// User overridable Connection base class + typedef websocketpp::connection_base connection_base; + + /// Default timer values (in ms) + + /// Length of time before an opening handshake is aborted + static const long timeout_open_handshake = 5000; + /// Length of time before a closing handshake is aborted + static const long timeout_close_handshake = 5000; + /// Length of time to wait for a pong after a ping + static const long timeout_pong = 5000; + + /// WebSocket Protocol version to use as a client + /** + * What version of the WebSocket Protocol to use for outgoing client + * connections. Setting this to a value other than 13 (RFC6455) is not + * recommended. + */ + static const int client_version = 13; // RFC6455 + + /// Default static error logging channels + /** + * Which error logging channels to enable at compile time. Channels not + * enabled here will be unable to be selected by programs using the library. + * This option gives an optimizing compiler the ability to remove entirely + * code to test whether or not to print out log messages on a certain + * channel + * + * Default is all except for development/debug level errors + */ + static const websocketpp::log::level elog_level = + websocketpp::log::elevel::all ^ websocketpp::log::elevel::devel; + + /// Default static access logging channels + /** + * Which access logging channels to enable at compile time. Channels not + * enabled here will be unable to be selected by programs using the library. + * This option gives an optimizing compiler the ability to remove entirely + * code to test whether or not to print out log messages on a certain + * channel + * + * Default is all except for development/debug level access messages + */ + static const websocketpp::log::level alog_level = + websocketpp::log::alevel::all ^ websocketpp::log::alevel::devel; + + /// + static const size_t connection_read_buffer_size = 512; + + /// Drop connections immediately on protocol error. + /** + * Drop connections on protocol error rather than sending a close frame. + * Off by default. This may result in legit messages near the error being + * dropped as well. It may free up resources otherwise spent dealing with + * misbehaving clients. + */ + static const bool drop_on_protocol_error = false; + + /// Suppresses the return of detailed connection close information + /** + * Silence close suppresses the return of detailed connection close + * information during the closing handshake. This information is useful + * for debugging and presenting useful errors to end users but may be + * undesirable for security reasons in some production environments. + * Close reasons could be used by an attacker to confirm that the endpoint + * is out of resources or be used to identify the WebSocket implementation + * in use. + * + * Note: this will suppress *all* close codes, including those explicitly + * sent by local applications. + */ + static const bool silent_close = false; + + /// Global flag for enabling/disabling extensions + static const bool enable_extensions = true; + + /// Extension specific settings: + + /// permessage_compress extension + struct permessage_deflate_config { + typedef core::request_type request_type; + + /// If the remote endpoint requests that we reset the compression + /// context after each message should we honor the request? + static const bool allow_disabling_context_takeover = true; + + /// If the remote endpoint requests that we reduce the size of the + /// LZ77 sliding window size this is the lowest value that will be + /// allowed. Values range from 8 to 15. A value of 8 means we will + /// allow any possible window size. A value of 15 means do not allow + /// negotiation of the window size (ie require the default). + static const uint8_t minimum_outgoing_window_bits = 8; + }; + + typedef websocketpp::extensions::permessage_deflate::disabled + permessage_deflate_type; + + /// Autonegotiate permessage-deflate + /** + * Automatically enables the permessage-deflate extension. + * + * For clients this results in a permessage-deflate extension request being + * sent with every request rather than requiring it to be requested manually + * + * For servers this results in accepting the first set of extension settings + * requested by the client that we understand being used. The alternative is + * requiring the extension to be manually negotiated in `validate`. With + * auto-negotiate on, you may still override the auto-negotiate manually if + * needed. + */ + //static const bool autonegotiate_compression = false; +}; + +} // namespace config +} // namespace websocketpp + +#endif // WEBSOCKETPP_CONFIG_CORE_HPP diff --git a/src/third_party/websocketpp/websocketpp/config/core_client.hpp b/src/third_party/websocketpp/websocketpp/config/core_client.hpp new file mode 100644 index 00000000..b7329756 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/config/core_client.hpp @@ -0,0 +1,252 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONFIG_CORE_CLIENT_HPP +#define WEBSOCKETPP_CONFIG_CORE_CLIENT_HPP + +// Non-Policy common stuff +#include +#include +#include + +// Concurrency +#include + +// Transport +#include + +// HTTP +#include +#include + +// Messages +#include +#include + +// Loggers +#include + +// RNG +#include + +// User stub base classes +#include +#include + +// Extensions +#include + +namespace websocketpp { +namespace config { + +/// Client config with iostream transport +struct core_client { + typedef core_client type; + + // Concurrency policy + typedef websocketpp::concurrency::basic concurrency_type; + + // HTTP Parser Policies + typedef http::parser::request request_type; + typedef http::parser::response response_type; + + // Message Policies + typedef message_buffer::message + message_type; + typedef message_buffer::alloc::con_msg_manager + con_msg_manager_type; + typedef message_buffer::alloc::endpoint_msg_manager + endpoint_msg_manager_type; + + /// Logging policies + typedef websocketpp::log::basic elog_type; + typedef websocketpp::log::basic alog_type; + + /// RNG policies + typedef websocketpp::random::random_device::int_generator rng_type; + + struct transport_config { + typedef type::concurrency_type concurrency_type; + typedef type::elog_type elog_type; + typedef type::alog_type alog_type; + typedef type::request_type request_type; + typedef type::response_type response_type; + + /// Default timer values (in ms) + + /// Length of time to wait for socket pre-initialization + /** + * Exactly what this includes depends on the socket policy in use + */ + static const long timeout_socket_pre_init = 5000; + + /// Length of time to wait before a proxy handshake is aborted + static const long timeout_proxy = 5000; + + /// Length of time to wait for socket post-initialization + /** + * Exactly what this includes depends on the socket policy in use. + * Often this means the TLS handshake + */ + static const long timeout_socket_post_init = 5000; + + /// Length of time to wait for dns resolution + static const long timeout_dns_resolve = 5000; + + /// Length of time to wait for TCP connect + static const long timeout_connect = 5000; + + /// Length of time to wait for socket shutdown + static const long timeout_socket_shutdown = 5000; + }; + + /// Transport Endpoint Component + typedef websocketpp::transport::iostream::endpoint + transport_type; + + /// User overridable Endpoint base class + typedef websocketpp::endpoint_base endpoint_base; + /// User overridable Connection base class + typedef websocketpp::connection_base connection_base; + + /// Default timer values (in ms) + + /// Length of time before an opening handshake is aborted + static const long timeout_open_handshake = 5000; + /// Length of time before a closing handshake is aborted + static const long timeout_close_handshake = 5000; + /// Length of time to wait for a pong after a ping + static const long timeout_pong = 5000; + + /// WebSocket Protocol version to use as a client + /** + * What version of the WebSocket Protocol to use for outgoing client + * connections. Setting this to a value other than 13 (RFC6455) is not + * recommended. + */ + static const int client_version = 13; // RFC6455 + + /// Default static error logging channels + /** + * Which error logging channels to enable at compile time. Channels not + * enabled here will be unable to be selected by programs using the library. + * This option gives an optimizing compiler the ability to remove entirely + * code to test whether or not to print out log messages on a certain + * channel + * + * Default is all except for development/debug level errors + */ + static const websocketpp::log::level elog_level = + websocketpp::log::elevel::all ^ websocketpp::log::elevel::devel; + + /// Default static access logging channels + /** + * Which access logging channels to enable at compile time. Channels not + * enabled here will be unable to be selected by programs using the library. + * This option gives an optimizing compiler the ability to remove entirely + * code to test whether or not to print out log messages on a certain + * channel + * + * Default is all except for development/debug level access messages + */ + static const websocketpp::log::level alog_level = + websocketpp::log::alevel::all ^ websocketpp::log::alevel::devel; + + /// + static const size_t connection_read_buffer_size = 512; + + /// Drop connections immediately on protocol error. + /** + * Drop connections on protocol error rather than sending a close frame. + * Off by default. This may result in legit messages near the error being + * dropped as well. It may free up resources otherwise spent dealing with + * misbehaving clients. + */ + static const bool drop_on_protocol_error = false; + + /// Suppresses the return of detailed connection close information + /** + * Silence close suppresses the return of detailed connection close + * information during the closing handshake. This information is useful + * for debugging and presenting useful errors to end users but may be + * undesirable for security reasons in some production environments. + * Close reasons could be used by an attacker to confirm that the endpoint + * is out of resources or be used to identify the WebSocket implementation + * in use. + * + * Note: this will suppress *all* close codes, including those explicitly + * sent by local applications. + */ + static const bool silent_close = false; + + /// Global flag for enabling/disabling extensions + static const bool enable_extensions = true; + + /// Extension specific settings: + + /// permessage_deflate extension + struct permessage_deflate_config { + typedef core_client::request_type request_type; + + /// If the remote endpoint requests that we reset the compression + /// context after each message should we honor the request? + static const bool allow_disabling_context_takeover = true; + + /// If the remote endpoint requests that we reduce the size of the + /// LZ77 sliding window size this is the lowest value that will be + /// allowed. Values range from 8 to 15. A value of 8 means we will + /// allow any possible window size. A value of 15 means do not allow + /// negotiation of the window size (ie require the default). + static const uint8_t minimum_outgoing_window_bits = 8; + }; + + typedef websocketpp::extensions::permessage_deflate::disabled + permessage_deflate_type; + + /// Autonegotiate permessage-compress + /** + * Automatically enables the permessage-compress extension. + * + * For clients this results in a permessage-compress extension request being + * sent with every request rather than requiring it to be requested manually + * + * For servers this results in accepting the first set of extension settings + * requested by the client that we understand being used. The alternative is + * requiring the extension to be manually negotiated in `validate`. With + * auto-negotiate on, you may still override the auto-negotiate manually if + * needed. + */ + //static const bool autonegotiate_compression = false; +}; + +} // namespace config +} // namespace websocketpp + +#endif // WEBSOCKETPP_CONFIG_CORE_CLIENT_HPP diff --git a/src/third_party/websocketpp/websocketpp/config/debug.hpp b/src/third_party/websocketpp/websocketpp/config/debug.hpp new file mode 100644 index 00000000..0f2fc65c --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/config/debug.hpp @@ -0,0 +1,252 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONFIG_DEBUG_HPP +#define WEBSOCKETPP_CONFIG_DEBUG_HPP + + + +// Non-Policy common stuff +#include +#include + +// Concurrency +#include + +// Transport +#include + +// HTTP +#include +#include + +// Messages +#include +#include + +// Loggers +#include + +// RNG +#include + +// User stub base classes +#include +#include + +// Extensions +#include + +namespace websocketpp { +namespace config { + +/// Client/Server debug config with iostream transport +struct debug_core { + typedef debug_core type; + + // Concurrency policy + typedef websocketpp::concurrency::basic concurrency_type; + + // HTTP Parser Policies + typedef http::parser::request request_type; + typedef http::parser::response response_type; + + // Message Policies + typedef message_buffer::message + message_type; + typedef message_buffer::alloc::con_msg_manager + con_msg_manager_type; + typedef message_buffer::alloc::endpoint_msg_manager + endpoint_msg_manager_type; + + /// Logging policies + typedef websocketpp::log::basic elog_type; + typedef websocketpp::log::basic alog_type; + + /// RNG policies + typedef websocketpp::random::none::int_generator rng_type; + + struct transport_config { + typedef type::concurrency_type concurrency_type; + typedef type::elog_type elog_type; + typedef type::alog_type alog_type; + typedef type::request_type request_type; + typedef type::response_type response_type; + + /// Default timer values (in ms) + + /// Length of time to wait for socket pre-initialization + /** + * Exactly what this includes depends on the socket policy in use + */ + static const long timeout_socket_pre_init = 5000; + + /// Length of time to wait before a proxy handshake is aborted + static const long timeout_proxy = 5000; + + /// Length of time to wait for socket post-initialization + /** + * Exactly what this includes depends on the socket policy in use. + * Often this means the TLS handshake + */ + static const long timeout_socket_post_init = 5000; + + /// Length of time to wait for dns resolution + static const long timeout_dns_resolve = 5000; + + /// Length of time to wait for TCP connect + static const long timeout_connect = 5000; + + /// Length of time to wait for socket shutdown + static const long timeout_socket_shutdown = 5000; + }; + + /// Transport Endpoint Component + typedef websocketpp::transport::iostream::endpoint + transport_type; + + /// User overridable Endpoint base class + typedef websocketpp::endpoint_base endpoint_base; + /// User overridable Connection base class + typedef websocketpp::connection_base connection_base; + + /// Default timer values (in ms) + + /// Length of time before an opening handshake is aborted + static const long timeout_open_handshake = 5000; + /// Length of time before a closing handshake is aborted + static const long timeout_close_handshake = 5000; + /// Length of time to wait for a pong after a ping + static const long timeout_pong = 5000; + + /// WebSocket Protocol version to use as a client + /** + * What version of the WebSocket Protocol to use for outgoing client + * connections. Setting this to a value other than 13 (RFC6455) is not + * recommended. + */ + static const int client_version = 13; // RFC6455 + + /// Default static error logging channels + /** + * Which error logging channels to enable at compile time. Channels not + * enabled here will be unable to be selected by programs using the library. + * This option gives an optimizing compiler the ability to remove entirely + * code to test whether or not to print out log messages on a certain + * channel + * + * Default is all except for development/debug level errors + */ + static const websocketpp::log::level elog_level = + websocketpp::log::elevel::all; + + /// Default static access logging channels + /** + * Which access logging channels to enable at compile time. Channels not + * enabled here will be unable to be selected by programs using the library. + * This option gives an optimizing compiler the ability to remove entirely + * code to test whether or not to print out log messages on a certain + * channel + * + * Default is all except for development/debug level access messages + */ + static const websocketpp::log::level alog_level = + websocketpp::log::alevel::all; + + /// + static const size_t connection_read_buffer_size = 512; + + /// Drop connections immediately on protocol error. + /** + * Drop connections on protocol error rather than sending a close frame. + * Off by default. This may result in legit messages near the error being + * dropped as well. It may free up resources otherwise spent dealing with + * misbehaving clients. + */ + static const bool drop_on_protocol_error = false; + + /// Suppresses the return of detailed connection close information + /** + * Silence close suppresses the return of detailed connection close + * information during the closing handshake. This information is useful + * for debugging and presenting useful errors to end users but may be + * undesirable for security reasons in some production environments. + * Close reasons could be used by an attacker to confirm that the endpoint + * is out of resources or be used to identify the WebSocket implementation + * in use. + * + * Note: this will suppress *all* close codes, including those explicitly + * sent by local applications. + */ + static const bool silent_close = false; + + /// Global flag for enabling/disabling extensions + static const bool enable_extensions = true; + + /// Extension specific settings: + + /// permessage_compress extension + struct permessage_deflate_config { + typedef type::request_type request_type; + + /// If the remote endpoint requests that we reset the compression + /// context after each message should we honor the request? + static const bool allow_disabling_context_takeover = true; + + /// If the remote endpoint requests that we reduce the size of the + /// LZ77 sliding window size this is the lowest value that will be + /// allowed. Values range from 8 to 15. A value of 8 means we will + /// allow any possible window size. A value of 15 means do not allow + /// negotiation of the window size (ie require the default). + static const uint8_t minimum_outgoing_window_bits = 8; + }; + + typedef websocketpp::extensions::permessage_deflate::disabled + permessage_deflate_type; + + /// Autonegotiate permessage-deflate + /** + * Automatically enables the permessage-deflate extension. + * + * For clients this results in a permessage-deflate extension request being + * sent with every request rather than requiring it to be requested manually + * + * For servers this results in accepting the first set of extension settings + * requested by the client that we understand being used. The alternative is + * requiring the extension to be manually negotiated in `validate`. With + * auto-negotiate on, you may still override the auto-negotiate manually if + * needed. + */ + //static const bool autonegotiate_compression = false; +}; + +} // namespace config +} // namespace websocketpp + +#endif // WEBSOCKETPP_CONFIG_CORE_HPP diff --git a/src/third_party/websocketpp/websocketpp/config/debug_asio.hpp b/src/third_party/websocketpp/websocketpp/config/debug_asio.hpp new file mode 100644 index 00000000..66a65fdd --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/config/debug_asio.hpp @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONFIG_ASIO_TLS_DEBUG_HPP +#define WEBSOCKETPP_CONFIG_ASIO_TLS_DEBUG_HPP + +#include +#include +#include + +// Pull in non-tls config +#include + +// Define TLS config +namespace websocketpp { +namespace config { + +/// Client/Server debug config with asio transport and TLS enabled +struct debug_asio_tls : public debug_core { + typedef debug_asio_tls type; + typedef debug_core base; + + typedef base::concurrency_type concurrency_type; + + typedef base::request_type request_type; + typedef base::response_type response_type; + + typedef base::message_type message_type; + typedef base::con_msg_manager_type con_msg_manager_type; + typedef base::endpoint_msg_manager_type endpoint_msg_manager_type; + + typedef base::alog_type alog_type; + typedef base::elog_type elog_type; + + typedef base::rng_type rng_type; + + struct transport_config : public base::transport_config { + typedef type::concurrency_type concurrency_type; + typedef type::alog_type alog_type; + typedef type::elog_type elog_type; + typedef type::request_type request_type; + typedef type::response_type response_type; + typedef websocketpp::transport::asio::tls_socket::endpoint socket_type; + }; + + typedef websocketpp::transport::asio::endpoint + transport_type; +}; + +} // namespace config +} // namespace websocketpp + +#endif // WEBSOCKETPP_CONFIG_ASIO_TLS_DEBUG_HPP diff --git a/src/third_party/websocketpp/websocketpp/config/debug_asio_no_tls.hpp b/src/third_party/websocketpp/websocketpp/config/debug_asio_no_tls.hpp new file mode 100644 index 00000000..7437650a --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/config/debug_asio_no_tls.hpp @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONFIG_ASIO_DEBUG_HPP +#define WEBSOCKETPP_CONFIG_ASIO_DEBUG_HPP + +#include +#include + +namespace websocketpp { +namespace config { + +/// Client/Server debug config with asio transport and TLS disabled +struct debug_asio : public debug_core { + typedef debug_asio type; + typedef debug_core base; + + typedef base::concurrency_type concurrency_type; + + typedef base::request_type request_type; + typedef base::response_type response_type; + + typedef base::message_type message_type; + typedef base::con_msg_manager_type con_msg_manager_type; + typedef base::endpoint_msg_manager_type endpoint_msg_manager_type; + + typedef base::alog_type alog_type; + typedef base::elog_type elog_type; + + typedef base::rng_type rng_type; + + struct transport_config : public base::transport_config { + typedef type::concurrency_type concurrency_type; + typedef type::alog_type alog_type; + typedef type::elog_type elog_type; + typedef type::request_type request_type; + typedef type::response_type response_type; + typedef websocketpp::transport::asio::basic_socket::endpoint + socket_type; + }; + + typedef websocketpp::transport::asio::endpoint + transport_type; +}; + +} // namespace config +} // namespace websocketpp + +#endif // WEBSOCKETPP_CONFIG_ASIO_DEBUG_HPP diff --git a/src/third_party/websocketpp/websocketpp/connection.hpp b/src/third_party/websocketpp/websocketpp/connection.hpp new file mode 100644 index 00000000..c8f1bc60 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/connection.hpp @@ -0,0 +1,1331 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONNECTION_HPP +#define WEBSOCKETPP_CONNECTION_HPP + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +namespace websocketpp { + +/// The type and function signature of an open handler +/** + * The open handler is called once for every successful WebSocket connection + * attempt. Either the fail handler or the open handler will be called for each + * WebSocket connection attempt. HTTP Connections that did not attempt to + * upgrade the connection to the WebSocket protocol will trigger the http + * handler instead of fail/open. + */ +typedef lib::function open_handler; + +/// The type and function signature of a close handler +/** + * The close handler is called once for every successfully established + * connection after it is no longer capable of sending or receiving new messages + * + * The close handler will be called exactly once for every connection for which + * the open handler was called. + */ +typedef lib::function close_handler; + +/// The type and function signature of a fail handler +/** + * The fail handler is called once for every unsuccessful WebSocket connection + * attempt. Either the fail handler or the open handler will be called for each + * WebSocket connection attempt. HTTP Connections that did not attempt to + * upgrade the connection to the WebSocket protocol will trigger the http + * handler instead of fail/open. + */ +typedef lib::function fail_handler; + +/// The type and function signature of an interrupt handler +/** + * The interrupt handler is called when a connection receives an interrupt + * request from the application. Interrupts allow the application to trigger a + * handler to be run in the absense of a WebSocket level handler trigger (like + * a new message). + * + * This is typically used by another application thread to schedule some tasks + * that can only be run from within the handler chain for thread safety reasons. + */ +typedef lib::function interrupt_handler; + +/// The type and function signature of a ping handler +/** + * The ping handler is called when the connection receives a WebSocket ping + * control frame. The string argument contains the ping payload. The payload is + * a binary string up to 126 bytes in length. The ping handler returns a bool, + * true if a pong response should be sent, false if the pong response should be + * suppressed. + */ +typedef lib::function ping_handler; + +/// The type and function signature of a pong handler +/** + * The pong handler is called when the connection receives a WebSocket pong + * control frame. The string argument contains the pong payload. The payload is + * a binary string up to 126 bytes in length. + */ +typedef lib::function pong_handler; + +/// The type and function signature of a pong timeout handler +/** + * The pong timeout handler is called when a ping goes unanswered by a pong for + * longer than the locally specified timeout period. + */ +typedef lib::function pong_timeout_handler; + +/// The type and function signature of a validate handler +/** + * The validate handler is called after a WebSocket handshake has been received + * and processed but before it has been accepted. This gives the application a + * chance to impliment connection details specific policies for accepting + * connections and the ability to negotiate extensions and subprotocols. + * + * The validate handler return value indicates whether or not the connection + * should be accepted. Additional methods may be called during the function to + * set response headers, set HTTP return/error codes, etc. + */ +typedef lib::function validate_handler; + +/// The type and function signature of a http handler +/** + * The http handler is called when an HTTP connection is made that does not + * attempt to upgrade the connection to the WebSocket protocol. This allows + * WebSocket++ servers to respond to these requests with regular HTTP responses. + * + * This can be used to deliver error pages & dashboards and to deliver static + * files such as the base HTML & JavaScript for an otherwise single page + * WebSocket application. + * + * Note: WebSocket++ is designed to be a high performance WebSocket server. It + * is not tuned to provide a full featured, high performance, HTTP web server + * solution. The HTTP handler is appropriate only for low volume HTTP traffic. + * If you expect to serve high volumes of HTTP traffic a dedicated HTTP web + * server is strongly recommended. + * + * The default HTTP handler will return a 426 Upgrade Required error. Custom + * handlers may override the response status code to deliver any type of + * response. + */ +typedef lib::function http_handler; + +// constants related to the default WebSocket protocol versions available +#ifdef _WEBSOCKETPP_INITIALIZER_LISTS_ // simplified C++11 version + /// Container that stores the list of protocol versions supported + /** + * @todo Move this to configs to allow compile/runtime disabling or enabling + * of protocol versions + */ + static std::vector const versions_supported = {0,7,8,13}; +#else + /// Helper array to get around lack of initializer lists pre C++11 + static int const helper[] = {0,7,8,13}; + /// Container that stores the list of protocol versions supported + /** + * @todo Move this to configs to allow compile/runtime disabling or enabling + * of protocol versions + */ + static std::vector const versions_supported(helper,helper+4); +#endif + +namespace session { +namespace state { + // externally visible session state (states based on the RFC) + enum value { + connecting = 0, + open = 1, + closing = 2, + closed = 3 + }; +} // namespace state + + +namespace fail { +namespace status { + enum value { + GOOD = 0, // no failure yet! + SYSTEM = 1, // system call returned error, check that code + WEBSOCKET = 2, // websocket close codes contain error + UNKNOWN = 3, // No failure information is available + TIMEOUT_TLS = 4, // TLS handshake timed out + TIMEOUT_WS = 5 // WS handshake timed out + }; +} // namespace status +} // namespace fail + +namespace internal_state { + // More granular internal states. These are used for multi-threaded + // connection synchronization and preventing values that are not yet or no + // longer available from being used. + + enum value { + USER_INIT = 0, + TRANSPORT_INIT = 1, + READ_HTTP_REQUEST = 2, + WRITE_HTTP_REQUEST = 3, + READ_HTTP_RESPONSE = 4, + WRITE_HTTP_RESPONSE = 5, + PROCESS_HTTP_REQUEST = 6, + PROCESS_CONNECTION = 7 + }; +} // namespace internal_state +} // namespace session + +/// Represents an individual WebSocket connection +template +class connection + : public config::transport_type::transport_con_type + , public config::connection_base +{ +public: + /// Type of this connection + typedef connection type; + /// Type of a shared pointer to this connection + typedef lib::shared_ptr ptr; + /// Type of a weak pointer to this connection + typedef lib::weak_ptr weak_ptr; + + /// Type of the concurrency component of this connection + typedef typename config::concurrency_type concurrency_type; + /// Type of the access logging policy + typedef typename config::alog_type alog_type; + /// Type of the error logging policy + typedef typename config::elog_type elog_type; + + /// Type of the transport component of this connection + typedef typename config::transport_type::transport_con_type + transport_con_type; + /// Type of a shared pointer to the transport component of this connection + typedef typename transport_con_type::ptr transport_con_ptr; + + typedef lib::function termination_handler; + + typedef typename concurrency_type::scoped_lock_type scoped_lock_type; + typedef typename concurrency_type::mutex_type mutex_type; + + typedef typename config::request_type request_type; + typedef typename config::response_type response_type; + + typedef typename config::message_type message_type; + typedef typename message_type::ptr message_ptr; + + typedef typename config::con_msg_manager_type con_msg_manager_type; + typedef typename con_msg_manager_type::ptr con_msg_manager_ptr; + + /// Type of RNG + typedef typename config::rng_type rng_type; + + typedef processor::processor processor_type; + typedef lib::shared_ptr processor_ptr; + + // Message handler (needs to know message type) + typedef lib::function message_handler; + + /// Type of a pointer to a transport timer handle + typedef typename transport_con_type::timer_ptr timer_ptr; + + // Misc Convenience Types + typedef session::internal_state::value istate_type; + +private: + enum terminate_status { + failed = 1, + closed, + unknown + }; +public: + + explicit connection(bool is_server, std::string const & ua, alog_type& alog, + elog_type& elog, rng_type & rng) + : transport_con_type(is_server,alog,elog) + , m_user_agent(ua) + , m_state(session::state::connecting) + , m_internal_state(session::internal_state::USER_INIT) + , m_msg_manager(new con_msg_manager_type()) + , m_send_buffer_size(0) + , m_write_flag(false) + , m_is_server(is_server) + , m_alog(alog) + , m_elog(elog) + , m_rng(rng) + , m_local_close_code(close::status::abnormal_close) + , m_remote_close_code(close::status::abnormal_close) + , m_was_clean(false) + { + m_alog.write(log::alevel::devel,"connection constructor"); + } + + /// Get a shared pointer to this component + ptr get_shared() { + return lib::static_pointer_cast(transport_con_type::get_shared()); + } + + /////////////////////////// + // Set Handler Callbacks // + /////////////////////////// + + /// Set open handler + /** + * The open handler is called after the WebSocket handshake is complete and + * the connection is considered OPEN. + * + * @param h The new open_handler + */ + void set_open_handler(open_handler h) { + m_open_handler = h; + } + + /// Set close handler + /** + * The close handler is called immediately after the connection is closed. + * + * @param h The new close_handler + */ + void set_close_handler(close_handler h) { + m_close_handler = h; + } + + /// Set fail handler + /** + * The fail handler is called whenever the connection fails while the + * handshake is bring processed. + * + * @param h The new fail_handler + */ + void set_fail_handler(fail_handler h) { + m_fail_handler = h; + } + + /// Set ping handler + /** + * The ping handler is called whenever the connection receives a ping + * control frame. The ping payload is included. + * + * The ping handler's return time controls whether or not a pong is + * sent in response to this ping. Returning false will suppress the + * return pong. If no ping handler is set a pong will be sent. + * + * @param h The new ping_handler + */ + void set_ping_handler(ping_handler h) { + m_ping_handler = h; + } + + /// Set pong handler + /** + * The pong handler is called whenever the connection receives a pong + * control frame. The pong payload is included. + * + * @param h The new pong_handler + */ + void set_pong_handler(pong_handler h) { + m_pong_handler = h; + } + + /// Set pong timeout handler + /** + * If the transport component being used supports timers, the pong timeout + * handler is called whenever a pong control frame is not received with the + * configured timeout period after the application sends a ping. + * + * The config setting `timeout_pong` controls the length of the timeout + * period. It is specified in milliseconds. + * + * This can be used to probe the health of the remote endpoint's WebSocket + * implementation. This does not guarantee that the remote application + * itself is still healthy but can be a useful diagnostic. + * + * Note: receipt of this callback doesn't mean the pong will never come. + * This functionality will not suppress delivery of the pong in question + * should it arrive after the timeout. + * + * @param h The new pong_timeout_handler + */ + void set_pong_timeout_handler(pong_timeout_handler h) { + m_pong_timeout_handler = h; + } + + /// Set interrupt handler + /** + * The interrupt handler is called whenever the connection is manually + * interrupted by the application. + * + * @param h The new interrupt_handler + */ + void set_interrupt_handler(interrupt_handler h) { + m_interrupt_handler = h; + } + + /// Set http handler + /** + * The http handler is called after an HTTP request other than a WebSocket + * upgrade request is received. It allows a WebSocket++ server to respond + * to regular HTTP requests on the same port as it processes WebSocket + * connections. This can be useful for hosting error messages, flash + * policy files, status pages, and other simple HTTP responses. It is not + * intended to be used as a primary web server. + * + * @param h The new http_handler + */ + void set_http_handler(http_handler h) { + m_http_handler = h; + } + + /// Set validate handler + /** + * The validate handler is called after a WebSocket handshake has been + * parsed but before a response is returned. It provides the application + * a chance to examine the request and determine whether or not it wants + * to accept the connection. + * + * Returning false from the validate handler will reject the connection. + * If no validate handler is present, all connections will be allowed. + * + * @param h The new validate_handler + */ + void set_validate_handler(validate_handler h) { + m_validate_handler = h; + } + + /// Set message handler + /** + * The message handler is called after a new message has been received. + * + * @param h The new message_handler + */ + void set_message_handler(message_handler h) { + m_message_handler = h; + } + + ////////////////////////////////// + // Uncategorized public methods // + ////////////////////////////////// + + /// Get the size of the outgoing write buffer (in payload bytes) + /** + * Retrieves the number of bytes in the outgoing write buffer that have not + * already been dispatched to the transport layer. This represents the bytes + * that are presently cancelable without uncleanly ending the websocket + * connection + * + * This method invokes the m_write_lock mutex + * + * @return The current number of bytes in the outgoing send buffer. + */ + size_t get_buffered_amount() const; + + /// DEPRECATED: use get_buffered_amount instead + size_t buffered_amount() const { + return get_buffered_amount(); + } + + //////////////////// + // Action Methods // + //////////////////// + + /// Create a message and then add it to the outgoing send queue + /** + * Convenience method to send a message given a payload string and + * optionally an opcode. Default opcode is utf8 text. + * + * This method locks the m_write_lock mutex + * + * @param payload The payload string to generated the message with + * + * @param op The opcode to generated the message with. Default is + * frame::opcode::text + */ + lib::error_code send(std::string const & payload, frame::opcode::value op = + frame::opcode::text); + + /// Send a message (raw array overload) + /** + * Convenience method to send a message given a raw array and optionally an + * opcode. Default opcode is binary. + * + * This method locks the m_write_lock mutex + * + * @param payload A pointer to the array containing the bytes to send. + * + * @param len Length of the array. + * + * @param op The opcode to generated the message with. Default is + * frame::opcode::binary + */ + lib::error_code send(void const * payload, size_t len, frame::opcode::value + op = frame::opcode::binary); + + /// Add a message to the outgoing send queue + /** + * If presented with a prepared message it is added without validation or + * framing. If presented with an unprepared message it is validated, framed, + * and then added + * + * Errors are returned via an exception + * \todo make exception system_error rather than error_code + * + * This method invokes the m_write_lock mutex + * + * @param msg A message_ptr to the message to send. + */ + lib::error_code send(message_ptr msg); + + /// Asyncronously invoke handler::on_inturrupt + /** + * Signals to the connection to asyncronously invoke the on_inturrupt + * callback for this connection's handler once it is safe to do so. + * + * When the on_inturrupt handler callback is called it will be from + * within the transport event loop with all the thread safety features + * guaranteed by the transport to regular handlers + * + * Multiple inturrupt signals can be active at once on the same connection + * + * @return An error code + */ + lib::error_code interrupt(); + + /// Transport inturrupt callback + void handle_interrupt(); + + /// Send a ping + /** + * Initiates a ping with the given payload/ + * + * There is no feedback directly from ping except in cases of immediately + * detectable errors. Feedback will be provided via on_pong or + * on_pong_timeout callbacks. + * + * Ping locks the m_write_lock mutex + * + * @param payload Payload to be used for the ping + */ + void ping(std::string const & payload); + + /// exception free variant of ping + void ping(std::string const & payload, lib::error_code & ec); + + /// Utility method that gets called back when the ping timer expires + void handle_pong_timeout(std::string payload, lib::error_code const & ec); + + /// Send a pong + /** + * Initiates a pong with the given payload. + * + * There is no feedback from a pong once sent. + * + * Pong locks the m_write_lock mutex + * + * @param payload Payload to be used for the pong + */ + void pong(std::string const & payload); + + /// exception free variant of pong + void pong(std::string const & payload, lib::error_code & ec); + + /// Close the connection + /** + * Initiates the close handshake process. + * + * If close returns successfully the connection will be in the closing + * state and no additional messages may be sent. All messages sent prior + * to calling close will be written out before the connection is closed. + * + * If no reason is specified none will be sent. If no code is specified + * then no code will be sent. + * + * The handler's on_close callback will be called once the close handshake + * is complete. + * + * Reasons will be automatically truncated to the maximum length (123 bytes) + * if necessary. + * + * @param code The close code to send + * @param reason The close reason to send + */ + void close(close::status::value const code, std::string const & reason); + + /// exception free variant of close + void close(close::status::value const code, std::string const & reason, + lib::error_code & ec); + + //////////////////////////////////////////////// + // Pass-through access to the uri information // + //////////////////////////////////////////////// + + /// Returns the secure flag from the connection URI + /** + * This value is available after the HTTP request has been fully read and + * may be called from any thread. + * + * @return Whether or not the connection URI is flagged secure. + */ + bool get_secure() const; + + /// Returns the host component of the connection URI + /** + * This value is available after the HTTP request has been fully read and + * may be called from any thread. + * + * @return The host component of the connection URI + */ + std::string const & get_host() const; + + /// Returns the resource component of the connection URI + /** + * This value is available after the HTTP request has been fully read and + * may be called from any thread. + * + * @return The resource component of the connection URI + */ + std::string const & get_resource() const; + + /// Returns the port component of the connection URI + /** + * This value is available after the HTTP request has been fully read and + * may be called from any thread. + * + * @return The port component of the connection URI + */ + uint16_t get_port() const; + + /// Gets the connection URI + /** + * This should really only be called by internal library methods unless you + * really know what you are doing. + * + * @return A pointer to the connection's URI + */ + uri_ptr get_uri() const; + + /// Sets the connection URI + /** + * This should really only be called by internal library methods unless you + * really know what you are doing. + * + * @param uri The new URI to set + */ + void set_uri(uri_ptr uri); + + ///////////////////////////// + // Subprotocol negotiation // + ///////////////////////////// + + /// Gets the negotated subprotocol + /** + * Retrieves the subprotocol that was negotiated during the handshake. This + * method is valid in the open handler and later. + * + * @return The negotiated subprotocol + */ + std::string const & get_subprotocol() const; + + /// Gets all of the subprotocols requested by the client + /** + * Retrieves the subprotocols that were requested during the handshake. This + * method is valid in the validate handler and later. + * + * @return A vector of the requested subprotocol + */ + std::vector const & get_requested_subprotocols() const; + + /// Adds the given subprotocol string to the request list (exception free) + /** + * Adds a subprotocol to the list to send with the opening handshake. This + * may be called multiple times to request more than one. If the server + * supports one of these, it may choose one. If so, it will return it + * in it's handshake reponse and the value will be available via + * get_subprotocol(). Subprotocol requests should be added in order of + * preference. + * + * @param request The subprotocol to request + * @param ec A reference to an error code that will be filled in the case of + * errors + */ + void add_subprotocol(std::string const & request, lib::error_code & ec); + + /// Adds the given subprotocol string to the request list + /** + * Adds a subprotocol to the list to send with the opening handshake. This + * may be called multiple times to request more than one. If the server + * supports one of these, it may choose one. If so, it will return it + * in it's handshake reponse and the value will be available via + * get_subprotocol(). Subprotocol requests should be added in order of + * preference. + * + * @param request The subprotocol to request + */ + void add_subprotocol(std::string const & request); + + /// Select a subprotocol to use (exception free) + /** + * Indicates which subprotocol should be used for this connection. Valid + * only during the validate handler callback. Subprotocol selected must have + * been requested by the client. Consult get_requested_subprotocols() for a + * list of valid subprotocols. + * + * This member function is valid on server endpoints/connections only + * + * @param value The subprotocol to select + * @param ec A reference to an error code that will be filled in the case of + * errors + */ + void select_subprotocol(std::string const & value, lib::error_code & ec); + + /// Select a subprotocol to use + /** + * Indicates which subprotocol should be used for this connection. Valid + * only during the validate handler callback. Subprotocol selected must have + * been requested by the client. Consult get_requested_subprotocols() for a + * list of valid subprotocols. + * + * This member function is valid on server endpoints/connections only + * + * @param value The subprotocol to select + */ + void select_subprotocol(std::string const & value); + + ///////////////////////////////////////////////////////////// + // Pass-through access to the request and response objects // + ///////////////////////////////////////////////////////////// + + /// Retrieve a request header + /** + * Retrieve the value of a header from the handshake HTTP request. + * + * @param key Name of the header to get + * @return The value of the header + */ + std::string const & get_request_header(std::string const & key); + + /// Retrieve a response header + /** + * Retrieve the value of a header from the handshake HTTP request. + * + * @param key Name of the header to get + * @return The value of the header + */ + std::string const & get_response_header(std::string const & key); + + /// Set response status code and message + /** + * Sets the response status code to `code` and looks up the corresponding + * message for standard codes. Non-standard codes will be entered as Unknown + * use set_status(status_code::value,std::string) overload to set both + * values explicitly. + * + * This member function is valid only from the http() and validate() handler + * callbacks. + * + * @param code Code to set + * @param msg Message to set + * @see websocketpp::http::response::set_status + */ + void set_status(http::status_code::value code); + + /// Set response status code and message + /** + * Sets the response status code and message to independent custom values. + * use set_status(status_code::value) to set the code and have the standard + * message be automatically set. + * + * This member function is valid only from the http() and validate() handler + * callbacks. + * + * @param code Code to set + * @param msg Message to set + * @see websocketpp::http::response::set_status + */ + void set_status(http::status_code::value code, std::string const & msg); + + /// Set response body content + /** + * Set the body content of the HTTP response to the parameter string. Note + * set_body will also set the Content-Length HTTP header to the appropriate + * value. If you want the Content-Length header to be something else set it + * to something else after calling set_body + * + * This member function is valid only from the http() and validate() handler + * callbacks. + * + * @param value String data to include as the body content. + * @see websocketpp::http::response::set_body + */ + void set_body(std::string const & value); + + /// Append a header + /** + * If a header with this name already exists the value will be appended to + * the existing header to form a comma separated list of values. Use + * `connection::replace_header` to overwrite existing values. + * + * This member function is valid only from the http() and validate() handler + * callbacks, or to a client connection before connect has been called. + * + * @param key Name of the header to set + * @param val Value to add + * @see replace_header + * @see websocketpp::http::parser::append_header + */ + void append_header(std::string const & key, std::string const & val); + + /// Replace a header + /** + * If a header with this name already exists the old value will be replaced + * Use `connection::append_header` to append to a list of existing values. + * + * This member function is valid only from the http() and validate() handler + * callbacks, or to a client connection before connect has been called. + * + * @param key Name of the header to set + * @param val Value to set + * @see append_header + * @see websocketpp::http::parser::replace_header + */ + void replace_header(std::string const & key, std::string const & val); + + /// Remove a header + /** + * Removes a header from the response. + * + * This member function is valid only from the http() and validate() handler + * callbacks, or to a client connection before connect has been called. + * + * @param key The name of the header to remove + * @see websocketpp::http::parser::remove_header + */ + void remove_header(std::string const & key); + + /// Get request object + /** + * Direct access to request object. This can be used to call methods of the + * request object that are not part of the standard request API that + * connection wraps. + * + * Note use of this method involves using behavior specific to the + * configured HTTP policy. Such behavior may not work with alternate HTTP + * policies. + * + * @since 0.3.0-alpha3 + * + * @return A const reference to the raw request object + */ + request_type const & get_request() const { + return m_request; + } + + ///////////////////////////////////////////////////////////// + // Pass-through access to the other connection information // + ///////////////////////////////////////////////////////////// + + /// Get Connection Handle + /** + * The connection handle is a token that can be shared outside the + * WebSocket++ core for the purposes of identifying a connection and + * sending it messages. + * + * @return A handle to the connection + */ + connection_hdl get_handle() const { + return m_connection_hdl; + } + + /// Get whether or not this connection is part of a server or client + /** + * @return whether or not the connection is attached to a server endpoint + */ + bool is_server() const { + return m_is_server; + } + + /// Return the same origin policy origin value from the opening request. + /** + * This value is available after the HTTP request has been fully read and + * may be called from any thread. + * + * @return The connection's origin value from the opening handshake. + */ + std::string const & get_origin() const; + + /// Return the connection state. + /** + * Values can be connecting, open, closing, and closed + * + * @return The connection's current state. + */ + session::state::value get_state() const; + + + /// Get the WebSocket close code sent by this endpoint. + /** + * @return The WebSocket close code sent by this endpoint. + */ + close::status::value get_local_close_code() const { + return m_local_close_code; + } + + /// Get the WebSocket close reason sent by this endpoint. + /** + * @return The WebSocket close reason sent by this endpoint. + */ + std::string const & get_local_close_reason() const { + return m_local_close_reason; + } + + /// Get the WebSocket close code sent by the remote endpoint. + /** + * @return The WebSocket close code sent by the remote endpoint. + */ + close::status::value get_remote_close_code() const { + return m_remote_close_code; + } + + /// Get the WebSocket close reason sent by the remote endpoint. + /** + * @return The WebSocket close reason sent by the remote endpoint. + */ + std::string const & get_remote_close_reason() const { + return m_remote_close_reason; + } + + /// Get the internal error code for a closed/failed connection + /** + * Retrieves a machine readable detailed error code indicating the reason + * that the connection was closed or failed. Valid only after the close or + * fail handler is called. + * + * @return Error code indicating the reason the connection was closed or + * failed + */ + lib::error_code get_ec() const { + return m_ec; + } + + //////////////////////////////////////////////////////////////////////// + // The remaining public member functions are for internal/policy use // + // only. Do not call from application code unless you understand what // + // you are doing. // + //////////////////////////////////////////////////////////////////////// + + /// Set Connection Handle + /** + * The connection handle is a token that can be shared outside the + * WebSocket++ core for the purposes of identifying a connection and + * sending it messages. + * + * @param hdl A connection_hdl that the connection will use to refer + * to itself. + */ + void set_handle(connection_hdl hdl) { + m_connection_hdl = hdl; + transport_con_type::set_handle(hdl); + } + + /// Get a message buffer + /** + * Warning: The API related to directly sending message buffers may change + * before the 1.0 release. If you plan to use it, please keep an eye on any + * breaking changes notifications in future release notes. Also if you have + * any feedback about usage and capabilities now is a great time to provide + * it. + * + * Message buffers are used to store message payloads and other message + * metadata. + * + * The size parameter is a hint only. Your final payload does not need to + * match it. There may be some performance benefits if the initial size + * guess is equal to or slightly higher than the final payload size. + * + * @param op The opcode for the new message + * @param size A hint to optimize the initial allocation of payload space. + * @return A new message buffer + */ + message_ptr get_message(websocketpp::frame::opcode::value op, size_t size) + const + { + return m_msg_manager->get_message(op, size); + } + + void start(); + + void read_handshake(size_t num_bytes); + + void handle_read_handshake(lib::error_code const & ec, + size_t bytes_transferred); + void handle_read_http_response(lib::error_code const & ec, + size_t bytes_transferred); + + void handle_send_http_response(lib::error_code const & ec); + void handle_send_http_request(lib::error_code const & ec); + + void handle_open_handshake_timeout(lib::error_code const & ec); + void handle_close_handshake_timeout(lib::error_code const & ec); + + void handle_read_frame(lib::error_code const & ec, + size_t bytes_transferred); + + /// Get array of WebSocket protocol versions that this connection supports. + const std::vector& get_supported_versions() const; + + /// Sets the handler for a terminating connection. Should only be used + /// internally by the endpoint class. + void set_termination_handler(termination_handler new_handler); + + void terminate(lib::error_code const & ec); + void handle_terminate(terminate_status tstat, lib::error_code const & ec); + + /// Checks if there are frames in the send queue and if there are sends one + /** + * \todo unit tests + * + * This method locks the m_write_lock mutex + */ + void write_frame(); + + /// Process the results of a frame write operation and start the next write + /** + * \todo unit tests + * + * This method locks the m_write_lock mutex + * + * @param terminate Whether or not to terminate the connection upon + * completion of this write. + * + * @param ec A status code from the transport layer, zero on success, + * non-zero otherwise. + */ + void handle_write_frame(bool terminate, lib::error_code const & ec); +protected: + void handle_transport_init(lib::error_code const & ec); + + /// Set m_processor based on information in m_request. Set m_response + /// status and return false on error. + bool initialize_processor(); + + /// Perform WebSocket handshake validation of m_request using m_processor. + /// set m_response and return false on error. + bool process_handshake_request(); + + /// Atomically change the internal connection state. + /** + * @param req The required starting state. If the internal state does not + * match req an exception is thrown. + * + * @param dest The state to change to. + * + * @param msg The message to include in the exception thrown + */ + void atomic_state_change(istate_type req, istate_type dest, + std::string msg); + + /// Atomically change the internal and external connection state. + /** + * @param ireq The required starting internal state. If the internal state + * does not match ireq an exception is thrown. + * + * @param idest The internal state to change to. + * + * @param ereq The required starting external state. If the external state + * does not match ereq an exception is thrown. + * + * @param edest The external state to change to. + * + * @param msg The message to include in the exception thrown + */ + void atomic_state_change(istate_type ireq, istate_type idest, + session::state::value ereq, session::state::value edest, + std::string msg); + + /// Atomically read and compared the internal state. + /** + * @param req The state to test against. If the internal state does not + * match req an exception is thrown. + * + * @param msg The message to include in the exception thrown + */ + void atomic_state_check(istate_type req, std::string msg); +private: + /// Completes m_response, serializes it, and sends it out on the wire. + void send_http_response(); + + /// Sends an opening WebSocket connect request + void send_http_request(); + + /// Alternate path for send_http_response in error conditions + void send_http_response_error(); + + /// Process control message + /** + * + */ + void process_control_frame(message_ptr msg); + + /// Send close acknowledgement + /** + * If no arguments are present no close code/reason will be specified. + * + * Note: the close code/reason values provided here may be overrided by + * other settings (such as silent close). + * + * @param code The close code to send + * @param reason The close reason to send + * @return A status code, zero on success, non-zero otherwise + */ + lib::error_code send_close_ack(close::status::value code = + close::status::blank, std::string const & reason = ""); + + /// Send close frame + /** + * If no arguments are present no close code/reason will be specified. + * + * Note: the close code/reason values provided here may be overrided by + * other settings (such as silent close). + * + * The ack flag determines what to do in the case of a blank status and + * whether or not to terminate the TCP connection after sending it. + * + * @param code The close code to send + * @param reason The close reason to send + * @param ack Whether or not this is an acknowledgement close frame + * @return A status code, zero on success, non-zero otherwise + */ + lib::error_code send_close_frame(close::status::value code = + close::status::blank, std::string const & reason = "", bool ack = false, + bool terminal = false); + + /// Get a pointer to a new WebSocket protocol processor for a given version + /** + * @param version Version number of the WebSocket protocol to get a + * processor for. Negative values indicate invalid/unknown versions and will + * always return a null ptr + * + * @return A shared_ptr to a new instance of the appropriate processor or a + * null ptr if there is no installed processor that matches the version + * number. + */ + processor_ptr get_processor(int version) const; + + /// Add a message to the write queue + /** + * Adds a message to the write queue and updates any associated shared state + * + * Must be called while holding m_write_lock + * + * @todo unit tests + * + * @param msg The message to push + */ + void write_push(message_ptr msg); + + /// Pop a message from the write queue + /** + * Removes and returns a message from the write queue and updates any + * associated shared state. + * + * Must be called while holding m_write_lock + * + * @todo unit tests + * + * @return the message_ptr at the front of the queue + */ + message_ptr write_pop(); + + /// Prints information about the incoming connection to the access log + /** + * Prints information about the incoming connection to the access log. + * Includes: connection type, websocket version, remote endpoint, user agent + * path, status code. + */ + void log_open_result(); + + /// Prints information about a connection being closed to the access log + /** + * Includes: local and remote close codes and reasons + */ + void log_close_result(); + + /// Prints information about a connection being failed to the access log + /** + * Includes: error code and message for why it was failed + */ + void log_fail_result(); + + // static settings + const std::string m_user_agent; + + /// Pointer to the connection handle + connection_hdl m_connection_hdl; + + /// Handler objects + open_handler m_open_handler; + close_handler m_close_handler; + fail_handler m_fail_handler; + ping_handler m_ping_handler; + pong_handler m_pong_handler; + pong_timeout_handler m_pong_timeout_handler; + interrupt_handler m_interrupt_handler; + http_handler m_http_handler; + validate_handler m_validate_handler; + message_handler m_message_handler; + + /// External connection state + /** + * Lock: m_connection_state_lock + */ + session::state::value m_state; + + /// Internal connection state + /** + * Lock: m_connection_state_lock + */ + istate_type m_internal_state; + + mutable mutex_type m_connection_state_lock; + + /// The lock used to protect the message queue + /** + * Serializes access to the write queue as well as shared state within the + * processor. + */ + mutex_type m_write_lock; + + // connection resources + char m_buf[config::connection_read_buffer_size]; + size_t m_buf_cursor; + termination_handler m_termination_handler; + con_msg_manager_ptr m_msg_manager; + timer_ptr m_handshake_timer; + timer_ptr m_ping_timer; + + /// @todo this is not memory efficient. this value is not used after the + /// handshake. + std::string m_handshake_buffer; + + /// Pointer to the processor object for this connection + /** + * The processor provides functionality that is specific to the WebSocket + * protocol version that the client has negotiated. It also contains all of + * the state necessary to encode and decode the incoming and outgoing + * WebSocket byte streams + * + * Use of the prepare_data_frame method requires lock: m_write_lock + */ + processor_ptr m_processor; + + /// Queue of unsent outgoing messages + /** + * Lock: m_write_lock + */ + std::queue m_send_queue; + + /// Size in bytes of the outstanding payloads in the write queue + /** + * Lock: m_write_lock + */ + size_t m_send_buffer_size; + + /// buffer holding the various parts of the current message being writen + /** + * Lock m_write_lock + */ + std::vector m_send_buffer; + + /// a pointer to hold on to the current message being written to keep it + /// from going out of scope before the write is complete. + message_ptr m_current_msg; + + /// True if there is currently an outstanding transport write + /** + * Lock m_write_lock + */ + bool m_write_flag; + + // connection data + request_type m_request; + response_type m_response; + uri_ptr m_uri; + std::string m_subprotocol; + + // connection data that might not be necessary to keep around for the life + // of the whole connection. + std::vector m_requested_subprotocols; + + bool const m_is_server; + alog_type& m_alog; + elog_type& m_elog; + + rng_type & m_rng; + + // Close state + /// Close code that was sent on the wire by this endpoint + close::status::value m_local_close_code; + + /// Close reason that was sent on the wire by this endpoint + std::string m_local_close_reason; + + /// Close code that was received on the wire from the remote endpoint + close::status::value m_remote_close_code; + + /// Close reason that was received on the wire from the remote endpoint + std::string m_remote_close_reason; + + /// Detailed internal error code + lib::error_code m_ec; + + bool m_was_clean; + + /// Whether or not this endpoint initiated the closing handshake. + bool m_closed_by_me; + + /// ??? + bool m_failed_by_me; + + /// Whether or not this endpoint initiated the drop of the TCP connection + bool m_dropped_by_me; +}; + +} // namespace websocketpp + +#include + +#endif // WEBSOCKETPP_CONNECTION_HPP diff --git a/src/third_party/websocketpp/websocketpp/connection_base.hpp b/src/third_party/websocketpp/websocketpp/connection_base.hpp new file mode 100644 index 00000000..f780da7b --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/connection_base.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONNECTION_BASE_HPP +#define WEBSOCKETPP_CONNECTION_BASE_HPP + +namespace websocketpp { + +/// Stub for user supplied base class. +class connection_base {}; + +} // namespace websocketpp + +#endif // WEBSOCKETPP_CONNECTION_BASE_HPP diff --git a/src/third_party/websocketpp/websocketpp/endpoint.hpp b/src/third_party/websocketpp/websocketpp/endpoint.hpp new file mode 100644 index 00000000..cc72a6de --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/endpoint.hpp @@ -0,0 +1,428 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_ENDPOINT_HPP +#define WEBSOCKETPP_ENDPOINT_HPP + +#include +#include +#include + +#include +#include + +namespace websocketpp { + +/// Creates and manages connections associated with a WebSocket endpoint +template +class endpoint : public config::transport_type, public config::endpoint_base { +public: + // Import appropriate types from our helper class + // See endpoint_types for more details. + typedef endpoint type; + + /// Type of the transport component of this endpoint + typedef typename config::transport_type transport_type; + /// Type of the concurrency component of this endpoint + typedef typename config::concurrency_type concurrency_type; + + /// Type of the connections that this endpoint creates + typedef connection connection_type; + /// Shared pointer to connection_type + typedef typename connection_type::ptr connection_ptr; + /// Weak pointer to connection type + typedef typename connection_type::weak_ptr connection_weak_ptr; + + /// Type of the transport component of the connections that this endpoint + /// creates + typedef typename transport_type::transport_con_type transport_con_type; + /// Type of a shared pointer to the transport component of the connections + /// that this endpoint creates. + typedef typename transport_con_type::ptr transport_con_ptr; + + /// Type of message_handler + typedef typename connection_type::message_handler message_handler; + /// Type of message pointers that this endpoint uses + typedef typename connection_type::message_ptr message_ptr; + + /// Type of error logger + typedef typename config::elog_type elog_type; + /// Type of access logger + typedef typename config::alog_type alog_type; + + /// Type of our concurrency policy's scoped lock object + typedef typename concurrency_type::scoped_lock_type scoped_lock_type; + /// Type of our concurrency policy's mutex object + typedef typename concurrency_type::mutex_type mutex_type; + + /// Type of RNG + typedef typename config::rng_type rng_type; + + // TODO: organize these + typedef typename connection_type::termination_handler termination_handler; + + typedef lib::shared_ptr hdl_type; + + explicit endpoint(bool is_server) + : m_alog(config::alog_level, &std::cout) + , m_elog(config::elog_level, &std::cerr) + , m_user_agent(::websocketpp::user_agent) + , m_is_server(is_server) + { + m_alog.set_channels(config::alog_level); + m_elog.set_channels(config::elog_level); + + m_alog.write(log::alevel::devel,"endpoint constructor"); + + transport_type::init_logging(&m_alog,&m_elog); + } + + /// Returns the user agent string that this endpoint will use + /** + * Returns the user agent string that this endpoint will use when creating + * new connections. + * + * The default value for this version is stored in websocketpp::user_agent + * + * @return The user agent string. + */ + std::string get_user_agent() const { + scoped_lock_type guard(m_mutex); + return m_user_agent; + } + + /// Sets the user agent string that this endpoint will use + /** + * Sets the identifier that this endpoint will use when creating new + * connections. Changing this value will only affect future connections. + * For client endpoints this will be sent as the "User-Agent" header in + * outgoing requests. For server endpoints this will be sent in the "Server" + * response header. + * + * Setting this value to the empty string will suppress the use of the + * Server and User-Agent headers. This is typically done to hide + * implementation details for security purposes. + * + * For best results set this before accepting or opening connections. + * + * The default value for this version is stored in websocketpp::user_agent + * + * This can be overridden on an individual connection basis by setting a + * custom "Server" header during the validate handler or "User-Agent" + * header on a connection before calling connect(). + * + * @param ua The string to set the user agent to. + */ + void set_user_agent(std::string const & ua) { + scoped_lock_type guard(m_mutex); + m_user_agent = ua; + } + + /// Returns whether or not this endpoint is a server. + /** + * @return Whether or not this endpoint is a server + */ + bool is_server() const { + return m_is_server; + } + + /********************************/ + /* Pass-through logging adaptor */ + /********************************/ + + /// Set Access logging channel + /** + * Set the access logger's channel value. The value is a number whose + * interpretation depends on the logging policy in use. + * + * @param channels The channel value(s) to set + */ + void set_access_channels(log::level channels) { + m_alog.set_channels(channels); + } + + /// Clear Access logging channels + /** + * Clear the access logger's channel value. The value is a number whose + * interpretation depends on the logging policy in use. + * + * @param channels The channel value(s) to clear + */ + void clear_access_channels(log::level channels) { + m_alog.clear_channels(channels); + } + + /// Set Error logging channel + /** + * Set the error logger's channel value. The value is a number whose + * interpretation depends on the logging policy in use. + * + * @param channels The channel value(s) to set + */ + void set_error_channels(log::level channels) { + m_elog.set_channels(channels); + } + + /// Clear Error logging channels + /** + * Clear the error logger's channel value. The value is a number whose + * interpretation depends on the logging policy in use. + * + * @param channels The channel value(s) to clear + */ + void clear_error_channels(log::level channels) { + m_elog.clear_channels(channels); + } + + /// Get reference to access logger + /** + * @return A reference to the access logger + */ + alog_type & get_alog() { + return m_alog; + } + + /// Get reference to error logger + /** + * @return A reference to the error logger + */ + elog_type & get_elog() { + return m_elog; + } + + /*************************/ + /* Set Handler functions */ + /*************************/ + + void set_open_handler(open_handler h) { + m_alog.write(log::alevel::devel,"set_open_handler"); + scoped_lock_type guard(m_mutex); + m_open_handler = h; + } + void set_close_handler(close_handler h) { + m_alog.write(log::alevel::devel,"set_close_handler"); + scoped_lock_type guard(m_mutex); + m_close_handler = h; + } + void set_fail_handler(fail_handler h) { + scoped_lock_type guard(m_mutex); + m_fail_handler = h; + } + void set_ping_handler(ping_handler h) { + scoped_lock_type guard(m_mutex); + m_ping_handler = h; + } + void set_pong_handler(pong_handler h) { + scoped_lock_type guard(m_mutex); + m_pong_handler = h; + } + void set_pong_timeout_handler(pong_timeout_handler h) { + scoped_lock_type guard(m_mutex); + m_pong_timeout_handler = h; + } + void set_interrupt_handler(interrupt_handler h) { + scoped_lock_type guard(m_mutex); + m_interrupt_handler = h; + } + void set_http_handler(http_handler h) { + scoped_lock_type guard(m_mutex); + m_http_handler = h; + } + void set_validate_handler(validate_handler h) { + scoped_lock_type guard(m_mutex); + m_validate_handler = h; + } + void set_message_handler(message_handler h) { + m_alog.write(log::alevel::devel,"set_message_handler"); + scoped_lock_type guard(m_mutex); + m_message_handler = h; + } + + /*************************************/ + /* Connection pass through functions */ + /*************************************/ + + /** + * These functions act as adaptors to their counterparts in connection. They + * can produce one additional type of error, the bad_connection error, that + * indicates that the conversion from connection_hdl to connection_ptr + * failed due to the connection not existing anymore. Each method has a + * default and an exception free varient. + */ + + void interrupt(connection_hdl hdl, lib::error_code & ec); + void interrupt(connection_hdl hdl); + + /// Create a message and add it to the outgoing send queue (exception free) + /** + * Convenience method to send a message given a payload string and an opcode + * + * @param [in] hdl The handle identifying the connection to send via. + * @param [in] payload The payload string to generated the message with + * @param [in] op The opcode to generated the message with. + * @param [out] ec A code to fill in for errors + */ + void send(connection_hdl hdl, std::string const & payload, + frame::opcode::value op, lib::error_code & ec); + /// Create a message and add it to the outgoing send queue + /** + * Convenience method to send a message given a payload string and an opcode + * + * @param [in] hdl The handle identifying the connection to send via. + * @param [in] payload The payload string to generated the message with + * @param [in] op The opcode to generated the message with. + * @param [out] ec A code to fill in for errors + */ + void send(connection_hdl hdl, std::string const & payload, + frame::opcode::value op); + + void send(connection_hdl hdl, void const * payload, size_t len, + frame::opcode::value op, lib::error_code & ec); + void send(connection_hdl hdl, void const * payload, size_t len, + frame::opcode::value op); + + void send(connection_hdl hdl, message_ptr msg, lib::error_code & ec); + void send(connection_hdl hdl, message_ptr msg); + + void close(connection_hdl hdl, close::status::value const code, + std::string const & reason, lib::error_code & ec); + void close(connection_hdl hdl, close::status::value const code, + std::string const & reason); + + /// Send a ping to a specific connection + /** + * @since 0.3.0-alpha3 + * + * @param [in] hdl The connection_hdl of the connection to send to. + * @param [in] payload The payload string to send. + * @param [out] ec A reference to an error code to fill in + */ + void ping(connection_hdl hdl, std::string const & payload, + lib::error_code & ec); + /// Send a ping to a specific connection + /** + * Exception variant of `ping` + * + * @since 0.3.0-alpha3 + * + * @param [in] hdl The connection_hdl of the connection to send to. + * @param [in] payload The payload string to send. + */ + void ping(connection_hdl hdl, std::string const & payload); + + /// Send a pong to a specific connection + /** + * @since 0.3.0-alpha3 + * + * @param [in] hdl The connection_hdl of the connection to send to. + * @param [in] payload The payload string to send. + * @param [out] ec A reference to an error code to fill in + */ + void pong(connection_hdl hdl, std::string const & payload, + lib::error_code & ec); + /// Send a pong to a specific connection + /** + * Exception variant of `pong` + * + * @since 0.3.0-alpha3 + * + * @param [in] hdl The connection_hdl of the connection to send to. + * @param [in] payload The payload string to send. + */ + void pong(connection_hdl hdl, std::string const & payload); + + /// Retrieves a connection_ptr from a connection_hdl (exception free) + /** + * Converting a weak pointer to shared_ptr is not thread safe because the + * pointer could be deleted at any time. + * + * NOTE: This method may be called by handler to upgrade its handle to a + * full connection_ptr. That full connection may then be used safely for the + * remainder of the handler body. get_con_from_hdl and the resulting + * connection_ptr are NOT safe to use outside the handler loop. + * + * @param hdl The connection handle to translate + * + * @return the connection_ptr. May be NULL if the handle was invalid. + */ + connection_ptr get_con_from_hdl(connection_hdl hdl, lib::error_code & ec) { + scoped_lock_type lock(m_mutex); + connection_ptr con = lib::static_pointer_cast( + hdl.lock()); + if (!con) { + ec = error::make_error_code(error::bad_connection); + } + return con; + } + + /// Retrieves a connection_ptr from a connection_hdl (exception version) + connection_ptr get_con_from_hdl(connection_hdl hdl) { + lib::error_code ec; + connection_ptr con = this->get_con_from_hdl(hdl,ec); + if (ec) { + throw ec; + } + return con; + } +protected: + connection_ptr create_connection(); + void remove_connection(connection_ptr con); + + alog_type m_alog; + elog_type m_elog; +private: + // dynamic settings + std::string m_user_agent; + + open_handler m_open_handler; + close_handler m_close_handler; + fail_handler m_fail_handler; + ping_handler m_ping_handler; + pong_handler m_pong_handler; + pong_timeout_handler m_pong_timeout_handler; + interrupt_handler m_interrupt_handler; + http_handler m_http_handler; + validate_handler m_validate_handler; + message_handler m_message_handler; + + rng_type m_rng; + + // endpoint resources + std::set m_connections; + + // static settings + bool const m_is_server; + + // endpoint state + mutex_type m_mutex; +}; + +} // namespace websocketpp + +#include + +#endif // WEBSOCKETPP_ENDPOINT_HPP diff --git a/src/third_party/websocketpp/websocketpp/endpoint_base.hpp b/src/third_party/websocketpp/websocketpp/endpoint_base.hpp new file mode 100644 index 00000000..c6f26285 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/endpoint_base.hpp @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_ENDPOINT_BASE_HPP +#define WEBSOCKETPP_ENDPOINT_BASE_HPP + +namespace websocketpp { + +/// Stub for user supplied base class. +class endpoint_base {}; + +} // namespace websocketpp + +#endif // WEBSOCKETPP_ENDPOINT_BASE_HPP diff --git a/src/third_party/websocketpp/websocketpp/error.hpp b/src/third_party/websocketpp/websocketpp/error.hpp new file mode 100644 index 00000000..d699075d --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/error.hpp @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_ERROR_HPP +#define WEBSOCKETPP_ERROR_HPP + +#include + +#include +#include + +namespace websocketpp { + +/// Combination error code / string type for returning two values +typedef std::pair err_str_pair; + +// setup for errors that should be propogated back to the user. +namespace error { +enum value { + /// Catch-all library error + general = 1, + + /// send attempted when endpoint write queue was full + send_queue_full, + + /// Attempted an operation using a payload that was improperly formatted + /// ex: invalid UTF8 encoding on a text message. + payload_violation, + + /// Attempted to open a secure connection with an insecure endpoint + endpoint_not_secure, + + /// Attempted an operation that required an endpoint that is no longer + /// available. This is usually because the endpoint went out of scope + /// before a connection that it created. + endpoint_unavailable, + + /// An invalid uri was supplied + invalid_uri, + + /// The endpoint is out of outgoing message buffers + no_outgoing_buffers, + + /// The endpoint is out of incoming message buffers + no_incoming_buffers, + + /// The connection was in the wrong state for this operation + invalid_state, + + /// Unable to parse close code + bad_close_code, + + /// Close code is in a reserved range + reserved_close_code, + + /// Close code is invalid + invalid_close_code, + + /// Invalid UTF-8 + invalid_utf8, + + /// Invalid subprotocol + invalid_subprotocol, + + /// Bad or unknown connection + bad_connection, + + /// Unit testing utility error code + test, + + /// Connection creation attempted failed + con_creation_failed, + + /// Selected subprotocol was not requested by the client + unrequested_subprotocol, + + /// Attempted to use a client specific feature on a server endpoint + client_only, + + /// Attempted to use a server specific feature on a client endpoint + server_only, + + /// HTTP connection ended + http_connection_ended, + + /// WebSocket opening handshake timed out + open_handshake_timeout, + + /// WebSocket close handshake timed out + close_handshake_timeout, + + /// Invalid port in URI + invalid_port +}; // enum value + + +class category : public lib::error_category { +public: + category() {} + + char const * name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ { + return "websocketpp"; + } + + std::string message(int value) const { + switch(value) { + case error::general: + return "Generic error"; + case error::send_queue_full: + return "send queue full"; + case error::payload_violation: + return "payload violation"; + case error::endpoint_not_secure: + return "endpoint not secure"; + case error::endpoint_unavailable: + return "endpoint not available"; + case error::invalid_uri: + return "invalid uri"; + case error::no_outgoing_buffers: + return "no outgoing message buffers"; + case error::no_incoming_buffers: + return "no incoming message buffers"; + case error::invalid_state: + return "invalid state"; + case error::bad_close_code: + return "Unable to extract close code"; + case error::invalid_close_code: + return "Extracted close code is in an invalid range"; + case error::reserved_close_code: + return "Extracted close code is in a reserved range"; + case error::invalid_utf8: + return "Invalid UTF-8"; + case error::invalid_subprotocol: + return "Invalid subprotocol"; + case error::bad_connection: + return "Bad Connection"; + case error::test: + return "Test Error"; + case error::con_creation_failed: + return "Connection creation attempt failed"; + case error::unrequested_subprotocol: + return "Selected subprotocol was not requested by the client"; + case error::client_only: + return "Feature not available on server endpoints"; + case error::server_only: + return "Feature not available on client endpoints"; + case error::http_connection_ended: + return "HTTP connection ended"; + case error::open_handshake_timeout: + return "The opening handshake timed out"; + case error::close_handshake_timeout: + return "The closing handshake timed out"; + case error::invalid_port: + return "Invalid URI port"; + default: + return "Unknown"; + } + } +}; + +inline const lib::error_category& get_category() { + static category instance; + return instance; +} + +inline lib::error_code make_error_code(error::value e) { + return lib::error_code(static_cast(e), get_category()); +} + +} // namespace error +} // namespace websocketpp + +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_ +template<> struct is_error_code_enum +{ + static bool const value = true; +}; +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_ + +namespace websocketpp { + +class exception : public std::exception { +public: + exception(std::string const & msg, + error::value code = error::general) + : m_msg(msg),m_code(code) {} + ~exception() throw() {} + + virtual char const * what() const throw() { + return m_msg.c_str(); + } + + error::value code() const throw() { + return m_code; + } + + std::string m_msg; + error::value m_code; +}; + +} // namespace websocketpp + +#endif // WEBSOCKETPP_ERROR_HPP diff --git a/src/third_party/websocketpp/websocketpp/error_container.hpp b/src/third_party/websocketpp/websocketpp/error_container.hpp new file mode 100644 index 00000000..b7c75ac9 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/error_container.hpp @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2012, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_ERROR_MESSAGE_HPP +#define WEBSOCKETPP_ERROR_MESSAGE_HPP + +namespace websocketpp { + +/** + * The transport::security::* classes are a set of security/socket related + * policies and support code for the ASIO transport types. + */ +class error_msg { +public: + const std::string& get_msg() const { + return m_error_msg; + } + + void set_msg(const std::string& msg) { + m_error_msg = msg; + } + + void append_msg(const std::string& msg) { + m_error_msg.append(msg); + } + + template + void set_msg(const T& thing) { + std::stringsteam val; + val << thing; + this->set_msg(val.str()); + } + + template + void append_msg(const T& thing) { + std::stringsteam val; + val << thing; + this->append_msg(val.str()); + } +private: + // error resources + std::string m_error_msg; +}; + +} // namespace websocketpp + +#endif // WEBSOCKETPP_ERROR_MESSAGE_HPP diff --git a/src/third_party/websocketpp/websocketpp/extensions/extension.hpp b/src/third_party/websocketpp/websocketpp/extensions/extension.hpp new file mode 100644 index 00000000..104ea704 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/extensions/extension.hpp @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_EXTENSION_HPP +#define WEBSOCKETPP_EXTENSION_HPP + +#include +#include + +#include +#include + +namespace websocketpp { + +/** + * Some generic information about extensions + * + * Each extension object has an implemented flag. It can be retrieved by calling + * is_implemented(). This compile time flag indicates whether or not the object + * in question actually implements the extension or if it is a placeholder stub + * + * Each extension object also has an enabled flag. It can be retrieved by + * calling is_enabled(). This runtime flag indicates whether or not the + * extension has been negotiated for this connection. + */ +namespace extensions { + +namespace error { +enum value { + /// Catch all + general = 1, + + /// Extension disabled + disabled +}; + +class category : public lib::error_category { +public: + category() {} + + const char *name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ { + return "websocketpp.extension"; + } + + std::string message(int value) const { + switch(value) { + case general: + return "Generic extension error"; + case disabled: + return "Use of methods from disabled extension"; + default: + return "Unknown permessage-compress error"; + } + } +}; + +inline const lib::error_category& get_category() { + static category instance; + return instance; +} + +inline lib::error_code make_error_code(error::value e) { + return lib::error_code(static_cast(e), get_category()); +} + +} // namespace error +} // namespace extensions +} // namespace websocketpp + +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_ +template<> struct is_error_code_enum + +{ + static const bool value = true; +}; +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_ + +#endif // WEBSOCKETPP_EXTENSION_HPP diff --git a/src/third_party/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp b/src/third_party/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp new file mode 100644 index 00000000..3a5da7fd --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_EXTENSION_PERMESSAGE_DEFLATE_DISABLED_HPP +#define WEBSOCKETPP_EXTENSION_PERMESSAGE_DEFLATE_DISABLED_HPP + +#include +#include + +#include +#include + +#include +#include +#include + +namespace websocketpp { +namespace extensions { +namespace permessage_deflate { + +/// Stub class for use when disabling permessage_deflate extension +/** + * This class is a stub that implements the permessage_deflate interface + * with minimal dependencies. It is used to disable permessage_deflate + * functionality at compile time without loading any unnecessary code. + */ +template +class disabled { + typedef std::pair err_str_pair; + +public: + err_str_pair negotiate(http::attribute_list const & attributes) { + return make_pair(make_error_code(error::disabled),std::string()); + } + + /// Returns true if the extension is capable of providing + /// permessage_deflate functionality + bool is_implemented() const { + return false; + } + + /// Returns true if permessage_deflate functionality is active for this + /// connection + bool is_enabled() const { + return false; + } + + lib::error_code compress(std::string const & in, std::string & out) { + return make_error_code(error::disabled); + } + + lib::error_code decompress(uint8_t const * buf, size_t len, + std::string & out) + { + return make_error_code(error::disabled); + } + + lib::error_code decompress(std::string const & in, std::string & out) { + return make_error_code(error::disabled); + } +}; + +} // namespace permessage_deflate +} // namespace extensions +} // namespace websocketpp + +#endif // WEBSOCKETPP_EXTENSION_PERMESSAGE_DEFLATE_DISABLED_HPP diff --git a/src/third_party/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp b/src/third_party/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp new file mode 100644 index 00000000..092690c2 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp @@ -0,0 +1,724 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_PROCESSOR_EXTENSION_PERMESSAGEDEFLATE_HPP +#define WEBSOCKETPP_PROCESSOR_EXTENSION_PERMESSAGEDEFLATE_HPP + +#include +#include +#include +#include + +#include + +#include "zlib.h" + +#include +#include +#include + +namespace websocketpp { +namespace extensions { + +/// Implimentation of the draft permessage-deflate WebSocket extension +/** + * ### permessage-deflate interface + * + * **is_implimented**\n + * `bool is_implimented()`\n + * Returns whether or not the object impliments the extension or not + * + * **is_enabled**\n + * `bool is_enabled()`\n + * Returns whether or not the extension was negotiated for the current + * connection + * + * **generate_offer**\n + * `std::string generate_offer() const`\n + * Create an extension offer string based on local policy + * + * **validate_response**\n + * `lib::error_code validate_response(http::attribute_list const & response)`\n + * Negotiate the parameters of extension use + * + * **negotiate**\n + * `err_str_pair negotiate(http::attribute_list const & attributes)`\n + * Negotiate the parameters of extension use + * + * **compress**\n + * `lib::error_code compress(std::string const & in, std::string & out)`\n + * Compress the bytes in `in` and append them to `out` + * + * **decompress**\n + * `lib::error_code decompress(uint8_t const * buf, size_t len, std::string & + * out)`\n + * Decompress `len` bytes from `buf` and append them to string `out` + */ +namespace permessage_deflate { + +/// Permessage deflate error values +namespace error { +enum value { + /// Catch all + general = 1, + + /// Invalid extension attributes + invalid_attributes, + + /// Invalid extension attribute value + invalid_attribute_value, + + /// Invalid megotiation mode + invalid_mode, + + /// Unsupported extension attributes + unsupported_attributes, + + /// Invalid value for max_window_bits + invalid_max_window_bits, + + /// ZLib Error + zlib_error, + + /// Uninitialized + uninitialized, +}; + +/// Permessage-deflate error category +class category : public lib::error_category { +public: + category() {} + + char const * name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ { + return "websocketpp.extension.permessage-deflate"; + } + + std::string message(int value) const { + switch(value) { + case general: + return "Generic permessage-compress error"; + case invalid_attributes: + return "Invalid extension attributes"; + case invalid_attribute_value: + return "Invalid extension attribute value"; + case invalid_mode: + return "Invalid permessage-deflate negotiation mode"; + case unsupported_attributes: + return "Unsupported extension attributes"; + case invalid_max_window_bits: + return "Invalid value for max_window_bits"; + case zlib_error: + return "A zlib function returned an error"; + case uninitialized: + return "Object must be initialized before use"; + default: + return "Unknown permessage-compress error"; + } + } +}; + +/// Get a reference to a static copy of the permessage-deflate error category +lib::error_category const & get_category() { + static category instance; + return instance; +} + +/// Create an error code in the permessage-deflate category +lib::error_code make_error_code(error::value e) { + return lib::error_code(static_cast(e), get_category()); +} + +} // namespace error +} // namespace permessage_deflate +} // namespace extensions +} // namespace websocketpp + +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_ +template<> struct is_error_code_enum + +{ + static bool const value = true; +}; +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_ +namespace websocketpp { +namespace extensions { +namespace permessage_deflate { + +/// Default value for s2c_max_window_bits as defined by RFC6455 +static uint8_t const default_s2c_max_window_bits = 15; +/// Minimum value for s2c_max_window_bits as defined by RFC6455 +static uint8_t const min_s2c_max_window_bits = 8; +/// Maximum value for s2c_max_window_bits as defined by RFC6455 +static uint8_t const max_s2c_max_window_bits = 15; + +/// Default value for c2s_max_window_bits as defined by RFC6455 +static uint8_t const default_c2s_max_window_bits = 15; +/// Minimum value for c2s_max_window_bits as defined by RFC6455 +static uint8_t const min_c2s_max_window_bits = 8; +/// Maximum value for c2s_max_window_bits as defined by RFC6455 +static uint8_t const max_c2s_max_window_bits = 15; + +namespace mode { +enum value { + /// Accept any value the remote endpoint offers + accept = 1, + /// Decline any value the remote endpoint offers. Insist on defaults. + decline, + /// Use the largest value common to both offers + largest, + /// Use the smallest value common to both offers + smallest +}; +} // namespace mode + +template +class enabled { +public: + enabled() + : m_enabled(false) + , m_s2c_no_context_takeover(false) + , m_c2s_no_context_takeover(false) + , m_s2c_max_window_bits(15) + , m_c2s_max_window_bits(15) + , m_s2c_max_window_bits_mode(mode::accept) + , m_c2s_max_window_bits_mode(mode::accept) + , m_initialized(false) + , m_compress_buffer_size(16384) + { + m_dstate.zalloc = Z_NULL; + m_dstate.zfree = Z_NULL; + m_dstate.opaque = Z_NULL; + + m_istate.zalloc = Z_NULL; + m_istate.zfree = Z_NULL; + m_istate.opaque = Z_NULL; + m_istate.avail_in = 0; + m_istate.next_in = Z_NULL; + } + + ~enabled() { + if (!m_initialized) { + return; + } + + int ret = deflateEnd(&m_dstate); + + if (ret != Z_OK) { + //std::cout << "error cleaning up zlib compression state" + // << std::endl; + } + + ret = inflateEnd(&m_istate); + + if (ret != Z_OK) { + //std::cout << "error cleaning up zlib decompression state" + // << std::endl; + } + } + + /// Initialize zlib state + /** + * + * @todo memory level, strategy, etc are hardcoded + * @todo server detection is hardcoded + */ + lib::error_code init() { + uint8_t deflate_bits; + uint8_t inflate_bits; + + if (true /*is_server*/) { + deflate_bits = m_s2c_max_window_bits; + inflate_bits = m_c2s_max_window_bits; + } else { + deflate_bits = m_c2s_max_window_bits; + inflate_bits = m_s2c_max_window_bits; + } + + int ret = deflateInit2( + &m_dstate, + Z_DEFAULT_COMPRESSION, + Z_DEFLATED, + -1*deflate_bits, + 8, // memory level 1-9 + /*Z_DEFAULT_STRATEGY*/Z_FIXED + ); + + if (ret != Z_OK) { + return make_error_code(error::zlib_error); + } + + ret = inflateInit2( + &m_istate, + -1*inflate_bits + ); + + if (ret != Z_OK) { + return make_error_code(error::zlib_error); + } + + m_compress_buffer.reset(new unsigned char[m_compress_buffer_size]); + m_initialized = true; + return lib::error_code(); + } + + /// Test if this object impliments the permessage-deflate specification + /** + * Because this object does impliment it, it will always return true. + * + * @return Whether or not this object impliments permessage-deflate + */ + bool is_implemented() const { + return true; + } + + /// Test if the extension was negotiated for this connection + /** + * Retrieves whether or not this extension is in use based on the initial + * handshake extension negotiations. + * + * @return Whether or not the extension is in use + */ + bool is_enabled() const { + return m_enabled; + } + + /// Reset server's outgoing LZ77 sliding window for each new message + /** + * Enabling this setting will cause the server's compressor to reset the + * compression state (the LZ77 sliding window) for every message. This + * means that the compressor will not look back to patterns in previous + * messages to improve compression. This will reduce the compression + * efficiency for large messages somewhat and small messages drastically. + * + * This option may reduce server compressor memory usage and client + * decompressor memory usage. + * @todo Document to what extent memory usage will be reduced + * + * For clients, this option is dependent on server support. Enabling it + * via this method does not guarantee that it will be successfully + * negotiated, only that it will be requested. + * + * For servers, no client support is required. Enabling this option on a + * server will result in its use. The server will signal to clients that + * the option will be in use so they can optimize resource usage if they + * are able. + */ + void enable_s2c_no_context_takeover() { + m_s2c_no_context_takeover = true; + } + + /// Reset client's outgoing LZ77 sliding window for each new message + /** + * Enabling this setting will cause the client's compressor to reset the + * compression state (the LZ77 sliding window) for every message. This + * means that the compressor will not look back to patterns in previous + * messages to improve compression. This will reduce the compression + * efficiency for large messages somewhat and small messages drastically. + * + * This option may reduce client compressor memory usage and server + * decompressor memory usage. + * @todo Document to what extent memory usage will be reduced + * + * This option is supported by all compliant clients and servers. Enabling + * it via either endpoint should be sufficient to ensure it is used. + */ + void enable_c2s_no_context_takeover() { + m_c2s_no_context_takeover = true; + } + + /// Limit server LZ77 sliding window size + /** + * The bits setting is the base 2 logarithm of the maximum window size that + * the server must use to compress outgoing messages. The permitted range + * is 8 to 15 inclusive. 8 represents a 256 byte window and 15 a 32KiB + * window. The default setting is 15. + * + * Mode Options: + * - accept: Accept whatever the remote endpoint offers. + * - decline: Decline any offers to deviate from the defaults + * - largest: Accept largest window size acceptable to both endpoints + * - smallest: Accept smallest window size acceptiable to both endpoints + * + * This setting is dependent on server support. A client requesting this + * setting may be rejected by the server or have the exact value used + * adjusted by the server. A server may unilaterally set this value without + * client support. + * + * @param bits The size to request for the outgoing window size + * @param mode The mode to use for negotiating this parameter + * @return A status code + */ + lib::error_code set_s2c_max_window_bits(uint8_t bits, mode::value mode) { + if (bits < min_s2c_max_window_bits || bits > max_s2c_max_window_bits) { + return error::make_error_code(error::invalid_max_window_bits); + } + m_s2c_max_window_bits = bits; + m_s2c_max_window_bits_mode = mode; + + return lib::error_code(); + } + + /// Limit client LZ77 sliding window size + /** + * The bits setting is the base 2 logarithm of the window size that the + * client must use to compress outgoing messages. The permitted range is 8 + * to 15 inclusive. 8 represents a 256 byte window and 15 a 32KiB window. + * The default setting is 15. + * + * Mode Options: + * - accept: Accept whatever the remote endpoint offers. + * - decline: Decline any offers to deviate from the defaults + * - largest: Accept largest window size acceptable to both endpoints + * - smallest: Accept smallest window size acceptiable to both endpoints + * + * This setting is dependent on client support. A client may limit its own + * outgoing window size unilaterally. A server may only limit the client's + * window size if the remote client supports that feature. + * + * @param bits The size to request for the outgoing window size + * @param mode The mode to use for negotiating this parameter + * @return A status code + */ + lib::error_code set_c2s_max_window_bits(uint8_t bits, mode::value mode) { + if (bits < min_c2s_max_window_bits || bits > max_c2s_max_window_bits) { + return error::make_error_code(error::invalid_max_window_bits); + } + m_c2s_max_window_bits = bits; + m_c2s_max_window_bits_mode = mode; + + return lib::error_code(); + } + + /// Generate extension offer + /** + * Creates an offer string to include in the Sec-WebSocket-Extensions + * header of outgoing client requests. + * + * @return A WebSocket extension offer string for this extension + */ + std::string generate_offer() const { + return ""; + } + + /// Validate extension response + /** + * Confirm that the server has negotiated settings compatible with our + * original offer and apply those settings to the extension state. + * + * @param response The server response attribute list to validate + * @return Validation error or 0 on success + */ + lib::error_code validate_offer(http::attribute_list const & response) { + + } + + /// Negotiate extension + /** + * Confirm that the client's extension negotiation offer has settings + * compatible with local policy. If so, generate a reply and apply those + * settings to the extension state. + * + * @param offer Attribute from client's offer + * @return Status code and value to return to remote endpoint + */ + err_str_pair negotiate(http::attribute_list const & offer) { + err_str_pair ret; + + http::attribute_list::const_iterator it; + for (it = offer.begin(); it != offer.end(); ++it) { + if (it->first == "s2c_no_context_takeover") { + negotiate_s2c_no_context_takeover(it->second,ret.first); + } else if (it->first == "c2s_no_context_takeover") { + negotiate_c2s_no_context_takeover(it->second,ret.first); + } else if (it->first == "s2c_max_window_bits") { + negotiate_s2c_max_window_bits(it->second,ret.first); + } else if (it->first == "c2s_max_window_bits") { + negotiate_c2s_max_window_bits(it->second,ret.first); + } else { + ret.first = make_error_code(error::invalid_attributes); + } + + if (ret.first) { + break; + } + } + + if (ret.first == lib::error_code()) { + m_enabled = true; + ret.second = generate_response(); + } + + return ret; + } + + /// Compress bytes + /** + * @param [in] in String to compress + * @param [out] out String to append compressed bytes to + * @return Error or status code + */ + lib::error_code compress(std::string const & in, std::string & out) { + if (!m_initialized) { + return make_error_code(error::uninitialized); + } + + size_t output; + int ret; + + m_dstate.avail_out = m_compress_buffer_size; + m_dstate.next_in = (unsigned char *)(const_cast(in.data())); + + do { + // Output to local buffer + m_dstate.avail_out = m_compress_buffer_size; + m_dstate.next_out = m_compress_buffer.get(); + + ret = deflate(&m_dstate, Z_SYNC_FLUSH); + + output = m_compress_buffer_size - m_dstate.avail_out; + + out.append((char *)(m_compress_buffer.get()),output); + } while (m_dstate.avail_out == 0); + + return lib::error_code(); + } + + /// Decompress bytes + /** + * @param buf Byte buffer to decompress + * @param len Length of buf + * @param out String to append decompressed bytes to + * @return Error or status code + */ + lib::error_code decompress(uint8_t const * buf, size_t len, std::string & + out) + { + if (!m_initialized) { + return make_error_code(error::uninitialized); + } + + int ret; + + m_istate.avail_in = len; + m_istate.next_in = const_cast(buf); + + do { + m_istate.avail_out = m_compress_buffer_size; + m_istate.next_out = m_compress_buffer.get(); + + ret = inflate(&m_istate, Z_SYNC_FLUSH); + + if (ret == Z_NEED_DICT || ret == Z_DATA_ERROR || ret == Z_MEM_ERROR) { + return make_error_code(error::zlib_error); + } + + out.append( + reinterpret_cast(m_compress_buffer.get()), + m_compress_buffer_size - m_istate.avail_out + ); + } while (m_istate.avail_out == 0); + + return lib::error_code(); + } +private: + /// Generate negotiation response + /** + * @return Generate extension negotiation reponse string to send to client + */ + std::string generate_response() { + std::string ret = "permessage-deflate"; + + if (m_s2c_no_context_takeover) { + ret += "; s2c_no_context_takeover"; + } + + if (m_c2s_no_context_takeover) { + ret += "; c2s_no_context_takeover"; + } + + if (m_s2c_max_window_bits < default_s2c_max_window_bits) { + std::stringstream s; + s << int(m_s2c_max_window_bits); + ret += "; s2c_max_window_bits="+s.str(); + } + + if (m_c2s_max_window_bits < default_c2s_max_window_bits) { + std::stringstream s; + s << int(m_c2s_max_window_bits); + ret += "; c2s_max_window_bits="+s.str(); + } + + return ret; + } + + /// Negotiate s2c_no_context_takeover attribute + /** + * @param [in] value The value of the attribute from the offer + * @param [out] ec A reference to the error code to return errors via + */ + void negotiate_s2c_no_context_takeover(std::string const & value, + lib::error_code & ec) + { + if (!value.empty()) { + ec = make_error_code(error::invalid_attribute_value); + return; + } + + m_s2c_no_context_takeover = true; + } + + /// Negotiate c2s_no_context_takeover attribute + /** + * @param [in] value The value of the attribute from the offer + * @param [out] ec A reference to the error code to return errors via + */ + void negotiate_c2s_no_context_takeover(std::string const & value, + lib::error_code & ec) + { + if (!value.empty()) { + ec = make_error_code(error::invalid_attribute_value); + return; + } + + m_c2s_no_context_takeover = true; + } + + /// Negotiate s2c_max_window_bits attribute + /** + * When this method starts, m_s2c_max_window_bits will contain the server's + * preferred value and m_s2c_max_window_bits_mode will contain the mode the + * server wants to use to for negotiation. `value` contains the value the + * client requested that we use. + * + * options: + * - decline (refuse to use the attribute) + * - accept (use whatever the client says) + * - largest (use largest possible value) + * - smallest (use smallest possible value) + * + * @param [in] value The value of the attribute from the offer + * @param [out] ec A reference to the error code to return errors via + */ + void negotiate_s2c_max_window_bits(std::string const & value, + lib::error_code & ec) + { + uint8_t bits = uint8_t(atoi(value.c_str())); + + if (bits < min_s2c_max_window_bits || bits > max_s2c_max_window_bits) { + ec = make_error_code(error::invalid_attribute_value); + m_s2c_max_window_bits = default_s2c_max_window_bits; + return; + } + + switch (m_s2c_max_window_bits_mode) { + case mode::decline: + m_s2c_max_window_bits = default_s2c_max_window_bits; + break; + case mode::accept: + m_s2c_max_window_bits = bits; + break; + case mode::largest: + m_s2c_max_window_bits = std::min(bits,m_s2c_max_window_bits); + break; + case mode::smallest: + m_s2c_max_window_bits = min_s2c_max_window_bits; + break; + default: + ec = make_error_code(error::invalid_mode); + m_s2c_max_window_bits = default_s2c_max_window_bits; + } + } + + /// Negotiate c2s_max_window_bits attribute + /** + * When this method starts, m_c2s_max_window_bits and m_c2s_max_window_mode + * will contain the server's preferred values for window size and + * negotiation mode. + * + * options: + * - decline (refuse to use the attribute) + * - accept (use whatever the client says) + * - largest (use largest possible value) + * - smallest (use smallest possible value) + * + * @param [in] value The value of the attribute from the offer + * @param [out] ec A reference to the error code to return errors via + */ + void negotiate_c2s_max_window_bits(std::string const & value, + lib::error_code & ec) + { + uint8_t bits = uint8_t(atoi(value.c_str())); + + if (value.empty()) { + bits = default_c2s_max_window_bits; + } else if (bits < min_c2s_max_window_bits || + bits > max_c2s_max_window_bits) + { + ec = make_error_code(error::invalid_attribute_value); + m_c2s_max_window_bits = default_c2s_max_window_bits; + return; + } + + switch (m_c2s_max_window_bits_mode) { + case mode::decline: + m_c2s_max_window_bits = default_c2s_max_window_bits; + break; + case mode::accept: + m_c2s_max_window_bits = bits; + break; + case mode::largest: + m_c2s_max_window_bits = std::min(bits,m_c2s_max_window_bits); + break; + case mode::smallest: + m_c2s_max_window_bits = min_c2s_max_window_bits; + break; + default: + ec = make_error_code(error::invalid_mode); + m_c2s_max_window_bits = default_c2s_max_window_bits; + } + } + + bool m_enabled; + bool m_s2c_no_context_takeover; + bool m_c2s_no_context_takeover; + uint8_t m_s2c_max_window_bits; + uint8_t m_c2s_max_window_bits; + mode::value m_s2c_max_window_bits_mode; + mode::value m_c2s_max_window_bits_mode; + + bool m_initialized; + size_t m_compress_buffer_size; + lib::unique_ptr_uchar_array m_compress_buffer; + z_stream m_dstate; + z_stream m_istate; +}; + +} // namespace permessage_deflate +} // namespace extensions +} // namespace websocketpp + +#endif // WEBSOCKETPP_PROCESSOR_EXTENSION_PERMESSAGEDEFLATE_HPP diff --git a/src/third_party/websocketpp/websocketpp/frame.hpp b/src/third_party/websocketpp/websocketpp/frame.hpp new file mode 100644 index 00000000..32b50a64 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/frame.hpp @@ -0,0 +1,889 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_FRAME_HPP +#define WEBSOCKETPP_FRAME_HPP + +#include + +#include +#include + +#include + +namespace websocketpp { +/// Data structures and utility functions for manipulating WebSocket frames +/** + * namespace frame provides a number of data structures and utility functions + * for reading, writing, and manipulating binary encoded WebSocket frames. + */ +namespace frame { + +/// Minimum length of a WebSocket frame header. +static unsigned int const BASIC_HEADER_LENGTH = 2; +/// Maximum length of a WebSocket header +static unsigned int const MAX_HEADER_LENGTH = 14; +/// Maximum length of the variable portion of the WebSocket header +static unsigned int const MAX_EXTENDED_HEADER_LENGTH = 12; + +/// Two byte conversion union +union uint16_converter { + uint16_t i; + uint8_t c[2]; +}; + +/// Four byte conversion union +union uint32_converter { + uint32_t i; + uint8_t c[4]; +}; + +/// Eight byte conversion union +union uint64_converter { + uint64_t i; + uint8_t c[8]; +}; + +/// Constants and utility functions related to WebSocket opcodes +/** + * WebSocket Opcodes are 4 bits. See RFC6455 section 5.2. + */ +namespace opcode { + enum value { + continuation = 0x0, + text = 0x1, + binary = 0x2, + rsv3 = 0x3, + rsv4 = 0x4, + rsv5 = 0x5, + rsv6 = 0x6, + rsv7 = 0x7, + close = 0x8, + ping = 0x9, + pong = 0xA, + control_rsvb = 0xB, + control_rsvc = 0xC, + control_rsvd = 0xD, + control_rsve = 0xE, + control_rsvf = 0xF, + + CONTINUATION = 0x0, + TEXT = 0x1, + BINARY = 0x2, + RSV3 = 0x3, + RSV4 = 0x4, + RSV5 = 0x5, + RSV6 = 0x6, + RSV7 = 0x7, + CLOSE = 0x8, + PING = 0x9, + PONG = 0xA, + CONTROL_RSVB = 0xB, + CONTROL_RSVC = 0xC, + CONTROL_RSVD = 0xD, + CONTROL_RSVE = 0xE, + CONTROL_RSVF = 0xF + }; + + /// Check if an opcode is reserved + /** + * @param v The opcode to test. + * @return Whether or not the opcode is reserved. + */ + inline bool reserved(value v) { + return (v >= rsv3 && v <= rsv7) || + (v >= control_rsvb && v <= control_rsvf); + } + + /// Check if an opcode is invalid + /** + * Invalid opcodes are negative or require greater than 4 bits to store. + * + * @param v The opcode to test. + * @return Whether or not the opcode is invalid. + */ + inline bool invalid(value v) { + return (v > 0xF || v < 0); + } + + /// Check if an opcode is for a control frame + /** + * @param v The opcode to test. + * @return Whether or not the opcode is a control opcode. + */ + inline bool is_control(value v) { + return v >= 0x8; + } +} + +/// Constants related to frame and payload limits +namespace limits { + /// Minimum length of a WebSocket frame header. + static unsigned int const basic_header_length = 2; + + /// Maximum length of a WebSocket header + static unsigned int const max_header_length = 14; + + /// Maximum length of the variable portion of the WebSocket header + static unsigned int const max_extended_header_length = 12; + + /// Maximum size of a basic WebSocket payload + static uint8_t const payload_size_basic = 125; + + /// Maximum size of an extended WebSocket payload (basic payload = 126) + static uint16_t const payload_size_extended = 0xFFFF; // 2^16, 65535 + + /// Maximum size of a jumbo WebSocket payload (basic payload = 127) + static uint64_t const payload_size_jumbo = 0x7FFFFFFFFFFFFFFFLL;//2^63 + + /// Maximum size of close frame reason + /** + * This is payload_size_basic - 2 bytes (as first two bytes are used for + * the close code + */ + static uint8_t const close_reason_size = 123; +} + + +// masks for fields in the basic header +static uint8_t const BHB0_OPCODE = 0x0F; +static uint8_t const BHB0_RSV3 = 0x10; +static uint8_t const BHB0_RSV2 = 0x20; +static uint8_t const BHB0_RSV1 = 0x40; +static uint8_t const BHB0_FIN = 0x80; + +static uint8_t const BHB1_PAYLOAD = 0x7F; +static uint8_t const BHB1_MASK = 0x80; + +static uint8_t const payload_size_code_16bit = 0x7E; // 126 +static uint8_t const payload_size_code_64bit = 0x7F; // 127 + +typedef uint32_converter masking_key_type; + +/// The constant size component of a WebSocket frame header +struct basic_header { + basic_header() : b0(0x00),b1(0x00) {} + + basic_header(uint8_t p0, uint8_t p1) : b0(p0), b1(p1) {} + + basic_header(opcode::value op, uint64_t size, bool fin, bool mask, + bool rsv1 = false, bool rsv2 = false, bool rsv3 = false) : b0(0x00), + b1(0x00) + { + if (fin) { + b0 |= BHB0_FIN; + } + if (rsv1) { + b0 |= BHB0_RSV1; + } + if (rsv2) { + b0 |= BHB0_RSV2; + } + if (rsv3) { + b0 |= BHB0_RSV3; + } + b0 |= (op & BHB0_OPCODE); + + if (mask) { + b1 |= BHB1_MASK; + } + + uint8_t basic_value; + + if (size <= limits::payload_size_basic) { + basic_value = static_cast(size); + } else if (size <= limits::payload_size_extended) { + basic_value = payload_size_code_16bit; + } else { + basic_value = payload_size_code_64bit; + } + + + b1 |= basic_value; + } + + uint8_t b0; + uint8_t b1; +}; + +/// The variable size component of a WebSocket frame header +struct extended_header { + extended_header() { + std::fill_n(this->bytes,MAX_EXTENDED_HEADER_LENGTH,0x00); + } + + extended_header(uint64_t payload_size) { + std::fill_n(this->bytes,MAX_EXTENDED_HEADER_LENGTH,0x00); + + copy_payload(payload_size); + } + + extended_header(uint64_t payload_size, uint32_t masking_key) { + std::fill_n(this->bytes,MAX_EXTENDED_HEADER_LENGTH,0x00); + + // Copy payload size + int offset = copy_payload(payload_size); + + // Copy Masking Key + uint32_converter temp32; + temp32.i = masking_key; + std::copy(temp32.c,temp32.c+4,bytes+offset); + } + + uint8_t bytes[MAX_EXTENDED_HEADER_LENGTH]; +private: + int copy_payload(uint64_t payload_size) { + int payload_offset = 0; + + if (payload_size <= limits::payload_size_basic) { + payload_offset = 8; + } else if (payload_size <= limits::payload_size_extended) { + payload_offset = 6; + } + + uint64_converter temp64; + temp64.i = lib::net::htonll(payload_size); + std::copy(temp64.c+payload_offset,temp64.c+8,bytes); + + return 8-payload_offset; + } +}; + +bool get_fin(basic_header const &h); +void set_fin(basic_header &h, bool value); +bool get_rsv1(basic_header const &h); +void set_rsv1(basic_header &h, bool value); +bool get_rsv2(basic_header const &h); +void set_rsv2(basic_header &h, bool value); +bool get_rsv3(basic_header const &h); +void set_rsv3(basic_header &h, bool value); +opcode::value get_opcode(basic_header const &h); +bool get_masked(basic_header const &h); +void set_masked(basic_header &h, bool value); +uint8_t get_basic_size(basic_header const &); +size_t get_header_len(basic_header const &); +unsigned int get_masking_key_offset(basic_header const &); + +std::string write_header(basic_header const &, extended_header const &); +masking_key_type get_masking_key(basic_header const &, extended_header const &); +uint16_t get_extended_size(extended_header const &); +uint64_t get_jumbo_size(extended_header const &); +uint64_t get_payload_size(basic_header const &, extended_header const &); + +size_t prepare_masking_key(masking_key_type const & key); +size_t circshift_prepared_key(size_t prepared_key, size_t offset); + +// Functions for performing xor based masking and unmasking +template +void byte_mask(input_iter b, input_iter e, output_iter o, masking_key_type + const & key, size_t key_offset = 0); +template +void byte_mask(iter_type b, iter_type e, masking_key_type const & key, + size_t key_offset = 0); +void word_mask_exact(uint8_t * input, uint8_t * output, size_t length, + masking_key_type const & key); +void word_mask_exact(uint8_t * data, size_t length, masking_key_type const & + key); +size_t word_mask_circ(uint8_t * input, uint8_t * output, size_t length, + size_t prepared_key); +size_t word_mask_circ(uint8_t * data, size_t length, size_t prepared_key); + +/// Check whether the frame's FIN bit is set. +/** + * @param [in] h The basic header to extract from. + * @return True if the header's fin bit is set. + */ +inline bool get_fin(basic_header const & h) { + return ((h.b0 & BHB0_FIN) == BHB0_FIN); +} + +/// Set the frame's FIN bit +/** + * @param [out] h Header to set. + * @param [in] value Value to set it to. + */ +inline void set_fin(basic_header & h, bool value) { + h.b0 = (value ? h.b0 | BHB0_FIN : h.b0 & ~BHB0_FIN); +} + +/// check whether the frame's RSV1 bit is set +/** + * @param [in] h The basic header to extract from. + * @return True if the header's RSV1 bit is set. + */ +inline bool get_rsv1(const basic_header &h) { + return ((h.b0 & BHB0_RSV1) == BHB0_RSV1); +} + +/// Set the frame's RSV1 bit +/** + * @param [out] h Header to set. + * @param [in] value Value to set it to. + */ +inline void set_rsv1(basic_header &h, bool value) { + h.b0 = (value ? h.b0 | BHB0_RSV1 : h.b0 & ~BHB0_RSV1); +} + +/// check whether the frame's RSV2 bit is set +/** + * @param [in] h The basic header to extract from. + * @return True if the header's RSV2 bit is set. + */ +inline bool get_rsv2(const basic_header &h) { + return ((h.b0 & BHB0_RSV2) == BHB0_RSV2); +} + +/// Set the frame's RSV2 bit +/** + * @param [out] h Header to set. + * @param [in] value Value to set it to. + */ +inline void set_rsv2(basic_header &h, bool value) { + h.b0 = (value ? h.b0 | BHB0_RSV2 : h.b0 & ~BHB0_RSV2); +} + +/// check whether the frame's RSV3 bit is set +/** + * @param [in] h The basic header to extract from. + * @return True if the header's RSV3 bit is set. + */ +inline bool get_rsv3(const basic_header &h) { + return ((h.b0 & BHB0_RSV3) == BHB0_RSV3); +} + +/// Set the frame's RSV3 bit +/** + * @param [out] h Header to set. + * @param [in] value Value to set it to. + */ +inline void set_rsv3(basic_header &h, bool value) { + h.b0 = (value ? h.b0 | BHB0_RSV3 : h.b0 & ~BHB0_RSV3); +} + +/// Extract opcode from basic header +/** + * @param [in] h The basic header to extract from. + * @return The opcode value of the header. + */ +inline opcode::value get_opcode(const basic_header &h) { + return opcode::value(h.b0 & BHB0_OPCODE); +} + +/// check whether the frame is masked +/** + * @param [in] h The basic header to extract from. + * @return True if the header mask bit is set. + */ +inline bool get_masked(basic_header const & h) { + return ((h.b1 & BHB1_MASK) == BHB1_MASK); +} + +/// Set the frame's MASK bit +/** + * @param [out] h Header to set. + * @param value Value to set it to. + */ +inline void set_masked(basic_header & h, bool value) { + h.b1 = (value ? h.b1 | BHB1_MASK : h.b1 & ~BHB1_MASK); +} + +/// Extracts the raw payload length specified in the basic header +/** + * A basic WebSocket frame header contains a 7 bit value that represents the + * payload size. There are two reserved values that are used to indicate that + * the actual payload size will not fit in 7 bits and that the full payload + * size is included in a separate field. The values are as follows: + * + * PAYLOAD_SIZE_CODE_16BIT (0x7E) indicates that the actual payload is less + * than 16 bit + * + * PAYLOAD_SIZE_CODE_64BIT (0x7F) indicates that the actual payload is less + * than 63 bit + * + * @param [in] h Basic header to read value from. + * @return The exact size encoded in h. + */ +inline uint8_t get_basic_size(const basic_header &h) { + return h.b1 & BHB1_PAYLOAD; +} + +/// Calculates the full length of the header based on the first bytes. +/** + * A WebSocket frame header always has at least two bytes. Encoded within the + * first two bytes is all the information necessary to calculate the full + * (variable) header length. get_header_len() calculates the full header + * length for the given two byte basic header. + * + * @param h Basic frame header to extract size from. + * @return Full length of the extended header. + */ +inline size_t get_header_len(basic_header const & h) { + // TODO: check extensions? + + // masking key offset represents the space used for the extended length + // fields + size_t size = BASIC_HEADER_LENGTH + get_masking_key_offset(h); + + // If the header is masked there is a 4 byte masking key + if (get_masked(h)) { + size += 4; + } + + return size; +} + +/// Set the frame's size +/** + * @param [out] h The basic header to set. + * @param [out] eh The extended header to set. + * @param [in] The size to set. + * @return What error occurred, if any. + */ +inline lib::error_code set_size(basic_header & h, extended_header & eh, uint64_t + size) +{ + // make sure value isn't too big + uint8_t basic_value; + + if (size <= limits::payload_size_basic) { + basic_value = static_cast(size); + } else if (size <= limits::payload_size_extended) { + basic_value = payload_size_code_16bit; + } else if (size <= limits::payload_size_jumbo) { + basic_value = payload_size_code_64bit; + } else { + // error + return lib::error_code(); + } + + h.b1 = (basic_value & BHB1_PAYLOAD) | (h.b1 & BHB1_MASK); + + return lib::error_code(); +} + +/// Calculate the offset location of the masking key within the extended header +/** + * Calculate the offset location of the masking key within the extended header + * using information from its corresponding basic header + * + * @param h Corresponding basic header to calculate from. + * + * @return byte offset of the first byte of the masking key + */ +inline unsigned int get_masking_key_offset(const basic_header &h) { + if (get_basic_size(h) == payload_size_code_16bit) { + return 2; + } else if (get_basic_size(h) == payload_size_code_64bit) { + return 8; + } else { + return 0; + } +} + +/// Generate a properly sized contiguous string that encodes a full frame header +/** + * Copy the basic header h and extended header e into a properly sized + * contiguous frame header string for the purposes of writing out to the wire. + * + * @param h The basic header to include + * @param e The extended header to include + * + * @return A contiguous string containing h and e + */ +inline std::string prepare_header(const basic_header &h, const + extended_header &e) +{ + std::string ret; + + ret.push_back(char(h.b0)); + ret.push_back(char(h.b1)); + ret.append( + reinterpret_cast(e.bytes), + get_header_len(h)-BASIC_HEADER_LENGTH + ); + + return ret; +} + +/// Extract the masking key from a frame header +/** + * Note that while read and written as an integer at times, this value is not + * an integer and should never be interpreted as one. Big and little endian + * machines will generate and store masking keys differently without issue as + * long as the integer values remain irrelivant. + * + * @param h The basic header to extract from + * @param e The extended header to extract from + * + * @return The masking key as an integer. + */ +inline masking_key_type get_masking_key(const basic_header &h, const + extended_header &e) +{ + masking_key_type temp32; + + if (!get_masked(h)) { + temp32.i = 0; + } else { + unsigned int offset = get_masking_key_offset(h); + std::copy(e.bytes+offset,e.bytes+offset+4,temp32.c); + } + + return temp32; +} + +/// Extract the extended size field from an extended header +/** + * It is the responsibility of the caller to verify that e is a valid extended + * header. This function assumes that e contains an extended payload size. + * + * @param e The extended header to extract from + * + * @return The size encoded in the extended header in host byte order + */ +inline uint16_t get_extended_size(const extended_header &e) { + uint16_converter temp16; + std::copy(e.bytes,e.bytes+2,temp16.c); + return ntohs(temp16.i); +} + +/// Extract the jumbo size field from an extended header +/** + * It is the responsibility of the caller to verify that e is a valid extended + * header. This function assumes that e contains a jumbo payload size. + * + * @param e The extended header to extract from + * + * @return The size encoded in the extended header in host byte order + */ +inline uint64_t get_jumbo_size(const extended_header &e) { + uint64_converter temp64; + std::copy(e.bytes,e.bytes+8,temp64.c); + return lib::net::ntohll(temp64.i); +} + +/// Extract the full payload size field from a WebSocket header +/** + * It is the responsibility of the caller to verify that h and e together + * represent a valid WebSocket frame header. This function assumes only that h + * and e are valid. It uses information in the basic header to determine where + * to look for the payload_size + * + * @param h The basic header to extract from + * @param e The extended header to extract from + * + * @return The size encoded in the combined header in host byte order. + */ +inline uint64_t get_payload_size(const basic_header &h, const + extended_header &e) +{ + uint8_t val = get_basic_size(h); + + if (val <= limits::payload_size_basic) { + return val; + } else if (val == payload_size_code_16bit) { + return get_extended_size(e); + } else { + return get_jumbo_size(e); + } +} + +/// Extract a masking key into a value the size of a machine word. +/** + * Machine word size must be 4 or 8. + * + * @param key Masking key to extract from + * + * @return prepared key as a machine word + */ +inline size_t prepare_masking_key(const masking_key_type& key) { + size_t low_bits = static_cast(key.i); + + if (sizeof(size_t) == 8) { + uint64_t high_bits = static_cast(key.i); + return static_cast((high_bits << 32) | low_bits); + } else { + return low_bits; + } +} + +/// circularly shifts the supplied prepared masking key by offset bytes +/** + * Prepared_key must be the output of prepare_masking_key with the associated + * restrictions on the machine word size. offset must be greater than or equal + * to zero and less than sizeof(size_t). + */ +inline size_t circshift_prepared_key(size_t prepared_key, size_t offset) { + if (lib::net::is_little_endian()) { + size_t temp = prepared_key << (sizeof(size_t)-offset)*8; + return (prepared_key >> offset*8) | temp; + } else { + size_t temp = prepared_key >> (sizeof(size_t)-offset)*8; + return (prepared_key << offset*8) | temp; + } +} + +/// Byte by byte mask/unmask +/** + * Iterator based byte by byte masking and unmasking for WebSocket payloads. + * Performs masking in place using the supplied key offset by the supplied + * offset number of bytes. + * + * This function is simple and can be done in place on input with arbitrary + * lengths and does not vary based on machine word size. It is slow. + * + * @param b Beginning iterator to start masking + * + * @param e Ending iterator to end masking + * + * @param o Beginning iterator to store masked results + * + * @param key 32 bit key to mask with. + * + * @param key_offset offset value to start masking at. + */ +template +void byte_mask(input_iter first, input_iter last, output_iter result, + masking_key_type const & key, size_t key_offset) +{ + size_t key_index = key_offset%4; + while (first != last) { + *result = *first ^ key.c[key_index++]; + key_index %= 4; + ++result; + ++first; + } +} + +/// Byte by byte mask/unmask (in place) +/** + * Iterator based byte by byte masking and unmasking for WebSocket payloads. + * Performs masking in place using the supplied key offset by the supplied + * offset number of bytes. + * + * This function is simple and can be done in place on input with arbitrary + * lengths and does not vary based on machine word size. It is slow. + * + * @param b Beginning iterator to start masking + * + * @param e Ending iterator to end masking + * + * @param key 32 bit key to mask with. + * + * @param key_offset offset value to start masking at. + */ +template +void byte_mask(iter_type b, iter_type e, masking_key_type const & key, + size_t key_offset) +{ + byte_mask(b,e,b,key,key_offset); +} + +/// Exact word aligned mask/unmask +/** + * Balanced combination of byte by byte and circular word by word masking. + * Best used to mask complete messages at once. Has much higher setup costs than + * word_mask_circ but works with exact sized buffers. + * + * Buffer based word by word masking and unmasking for WebSocket payloads. + * Masking is done in word by word chunks with the remainder not divisible by + * the word size done byte by byte. + * + * input and output must both be at least length bytes. Exactly length bytes + * will be written. + * + * @param input buffer to mask or unmask + * + * @param output buffer to store the output. May be the same as input. + * + * @param length length of data buffer + * + * @param key Masking key to use + */ +inline void word_mask_exact(uint8_t* input, uint8_t* output, size_t length, + const masking_key_type& key) +{ + size_t prepared_key = prepare_masking_key(key); + size_t n = length/sizeof(size_t); + size_t* input_word = reinterpret_cast(input); + size_t* output_word = reinterpret_cast(output); + + for (size_t i = 0; i < n; i++) { + output_word[i] = input_word[i] ^ prepared_key; + } + + for (size_t i = n*sizeof(size_t); i < length; i++) { + output[i] = input[i] ^ key.c[i%4]; + } +} + +/// Exact word aligned mask/unmask (in place) +/** + * In place version of word_mask_exact + * + * @see word_mask_exact + * + * @param data buffer to read and write from + * + * @param length length of data buffer + * + * @param key Masking key to use + */ +inline void word_mask_exact(uint8_t* data, size_t length, const + masking_key_type& key) +{ + word_mask_exact(data,data,length,key); +} + +/// Circular word aligned mask/unmask +/** + * Performs a circular mask/unmask in word sized chunks using pre-prepared keys + * that store state between calls. Best for providing streaming masking or + * unmasking of small chunks at a time of a larger message. Requires that the + * underlying allocated size of the data buffer be a multiple of the word size. + * Data in the buffer after `length` will be overwritten only with the same + * values that were originally present. + * + * Buffer based word by word masking and unmasking for WebSocket payloads. + * Performs masking in place using the supplied key. Casts the data buffer to + * an array of size_t's and performs masking word by word. The underlying + * buffer size must be a muliple of the word size. + * + * word_mask returns a copy of prepared_key circularly shifted based on the + * length value. The returned value may be fed back into word_mask when more + * data is available. + * + * input and output must both have length at least: + * ceil(length/sizeof(size_t))*sizeof(size_t) + * Exactly that many bytes will be written, although only exactly length bytes + * will be changed (trailing bytes will be replaced without masking) + * + * @param data Character buffer to mask + * + * @param length Length of data + * + * @param prepared_key Prepared key to use. + * + * @return the prepared_key shifted to account for the input length + */ +inline size_t word_mask_circ(uint8_t * input, uint8_t * output, size_t length, + size_t prepared_key) +{ + size_t n = length / sizeof(size_t); // whole words + size_t l = length - (n * sizeof(size_t)); // remaining bytes + size_t * input_word = reinterpret_cast(input); + size_t * output_word = reinterpret_cast(output); + + // mask word by word + for (size_t i = 0; i < n; i++) { + output_word[i] = input_word[i] ^ prepared_key; + } + + // mask partial word at the end + size_t start = length - l; + uint8_t * byte_key = reinterpret_cast(&prepared_key); + for (size_t i = 0; i < l; ++i) { + output[start+i] = input[start+i] ^ byte_key[i]; + } + + return circshift_prepared_key(prepared_key,l); +} + +/// Circular word aligned mask/unmask (in place) +/** + * In place version of word_mask_circ + * + * @see word_mask_circ + * + * @param data Character buffer to read from and write to + * + * @param length Length of data + * + * @param prepared_key Prepared key to use. + * + * @return the prepared_key shifted to account for the input length + */ +inline size_t word_mask_circ(uint8_t* data, size_t length, size_t prepared_key){ + return word_mask_circ(data,data,length,prepared_key); +} + +/// Circular byte aligned mask/unmask +/** + * Performs a circular mask/unmask in byte sized chunks using pre-prepared keys + * that store state between calls. Best for providing streaming masking or + * unmasking of small chunks at a time of a larger message. Requires that the + * underlying allocated size of the data buffer be a multiple of the word size. + * Data in the buffer after `length` will be overwritten only with the same + * values that were originally present. + * + * word_mask returns a copy of prepared_key circularly shifted based on the + * length value. The returned value may be fed back into byte_mask when more + * data is available. + * + * @param data Character buffer to mask + * + * @param length Length of data + * + * @param prepared_key Prepared key to use. + * + * @return the prepared_key shifted to account for the input length + */ +inline size_t byte_mask_circ(uint8_t * input, uint8_t * output, size_t length, + size_t prepared_key) +{ + uint32_converter key; + key.i = prepared_key; + + for (size_t i = 0; i < length; ++i) { + output[i] = input[i] ^ key.c[i % 4]; + } + + return circshift_prepared_key(prepared_key,length % 4); +} + +/// Circular byte aligned mask/unmask (in place) +/** + * In place version of byte_mask_circ + * + * @see byte_mask_circ + * + * @param data Character buffer to read from and write to + * + * @param length Length of data + * + * @param prepared_key Prepared key to use. + * + * @return the prepared_key shifted to account for the input length + */ +inline size_t byte_mask_circ(uint8_t* data, size_t length, size_t prepared_key){ + return byte_mask_circ(data,data,length,prepared_key); +} + +} // namespace frame +} // namespace websocketpp + +#endif //WEBSOCKETPP_FRAME_HPP diff --git a/src/third_party/websocketpp/websocketpp/http/constants.hpp b/src/third_party/websocketpp/websocketpp/http/constants.hpp new file mode 100644 index 00000000..3edc3eb0 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/http/constants.hpp @@ -0,0 +1,302 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef HTTP_CONSTANTS_HPP +#define HTTP_CONSTANTS_HPP + +#include +#include +#include + +namespace websocketpp { +namespace http { + /// The type of an HTTP attribute list + /** + * The attribute list is an unordered key/value map. Encoded attribute + * values are delimited by semicolons. + */ + typedef std::map attribute_list; + + /// The type of an HTTP parameter list + /** + * The parameter list is an ordered pairing of a parameter and its + * associated attribute list. Encoded parameter values are delimited by + * commas. + */ + typedef std::vector< std::pair > parameter_list; + + /// Literal value of the HTTP header delimiter + static char const header_delimiter[] = "\r\n"; + + /// Literal value of the HTTP header separator + static char const header_separator[] = ": "; + + /// Literal value of an empty header + static std::string const empty_header = ""; + + /// Maximum size in bytes before rejecting an HTTP header as too big. + size_t const max_header_size = 16000; + + /// Number of bytes to use for temporary istream read buffers + size_t const istream_buffer = 512; + + /// invalid HTTP token characters + /** + * 0x00 - 0x32, 0x7f-0xff + * ( ) < > @ , ; : \ " / [ ] ? = { } + */ + static char const header_token[] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 00..0f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 10..1f + 0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0, // 20..2f + 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, // 30..3f + 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // 40..4f + 1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1, // 50..5f + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // 60..6f + 1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0, // 70..7f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 80..8f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 90..9f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // a0..af + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // b0..bf + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // c0..cf + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // d0..df + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // e0..ef + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // f0..ff + }; + + /// Is the character a token + inline bool is_token_char(unsigned char c) { + return (header_token[c] == 1); + } + + /// Is the character a non-token + inline bool is_not_token_char(unsigned char c) { + return !header_token[c]; + } + + /// Is the character whitespace + /** + * whitespace is space (32) or horizontal tab (9) + */ + inline bool is_whitespace_char(unsigned char c) { + return (c == 9 || c == 32); + } + + /// Is the character non-whitespace + inline bool is_not_whitespace_char(unsigned char c) { + return (c != 9 && c != 32); + } + + /// HTTP Status codes + namespace status_code { + enum value { + uninitialized = 0, + + continue_code = 100, + switching_protocols = 101, + + ok = 200, + created = 201, + accepted = 202, + non_authoritative_information = 203, + no_content = 204, + reset_content = 205, + partial_content = 206, + + multiple_choices = 300, + moved_permanently = 301, + found = 302, + see_other = 303, + not_modified = 304, + use_proxy = 305, + temporary_redirect = 307, + + bad_request = 400, + unauthorized = 401, + payment_required = 402, + forbidden = 403, + not_found = 404, + method_not_allowed = 405, + not_acceptable = 406, + proxy_authentication_required = 407, + request_timeout = 408, + conflict = 409, + gone = 410, + length_required = 411, + precondition_failed = 412, + request_entity_too_large = 413, + request_uri_too_long = 414, + unsupported_media_type = 415, + request_range_not_satisfiable = 416, + expectation_failed = 417, + im_a_teapot = 418, + upgrade_required = 426, + precondition_required = 428, + too_many_requests = 429, + request_header_fields_too_large = 431, + + internal_server_error = 500, + not_implemented = 501, + bad_gateway = 502, + service_unavailable = 503, + gateway_timeout = 504, + http_version_not_supported = 505, + not_extended = 510, + network_authentication_required = 511 + }; + + // TODO: should this be inline? + inline std::string get_string(value c) { + switch (c) { + case uninitialized: + return "Uninitialized"; + case continue_code: + return "Continue"; + case switching_protocols: + return "Switching Protocols"; + case ok: + return "OK"; + case created: + return "Created"; + case accepted: + return "Accepted"; + case non_authoritative_information: + return "Non Authoritative Information"; + case no_content: + return "No Content"; + case reset_content: + return "Reset Content"; + case partial_content: + return "Partial Content"; + case multiple_choices: + return "Multiple Choices"; + case moved_permanently: + return "Moved Permanently"; + case found: + return "Found"; + case see_other: + return "See Other"; + case not_modified: + return "Not Modified"; + case use_proxy: + return "Use Proxy"; + case temporary_redirect: + return "Temporary Redirect"; + case bad_request: + return "Bad Request"; + case unauthorized: + return "Unauthorized"; + case payment_required: + return "Payment Required"; + case forbidden: + return "Forbidden"; + case not_found: + return "Not Found"; + case method_not_allowed: + return "Method Not Allowed"; + case not_acceptable: + return "Not Acceptable"; + case proxy_authentication_required: + return "Proxy Authentication Required"; + case request_timeout: + return "Request Timeout"; + case conflict: + return "Conflict"; + case gone: + return "Gone"; + case length_required: + return "Length Required"; + case precondition_failed: + return "Precondition Failed"; + case request_entity_too_large: + return "Request Entity Too Large"; + case request_uri_too_long: + return "Request-URI Too Long"; + case unsupported_media_type: + return "Unsupported Media Type"; + case request_range_not_satisfiable: + return "Requested Range Not Satisfiable"; + case expectation_failed: + return "Expectation Failed"; + case im_a_teapot: + return "I'm a teapot"; + case upgrade_required: + return "Upgrade Required"; + case precondition_required: + return "Precondition Required"; + case too_many_requests: + return "Too Many Requests"; + case request_header_fields_too_large: + return "Request Header Fields Too Large"; + case internal_server_error: + return "Internal Server Error"; + case not_implemented: + return "Not Implimented"; + case bad_gateway: + return "Bad Gateway"; + case service_unavailable: + return "Service Unavailable"; + case gateway_timeout: + return "Gateway Timeout"; + case http_version_not_supported: + return "HTTP Version Not Supported"; + case not_extended: + return "Not Extended"; + case network_authentication_required: + return "Network Authentication Required"; + default: + return "Unknown"; + } + } + } + + class exception : public std::exception { + public: + exception(const std::string& log_msg, + status_code::value error_code, + const std::string& error_msg = "", + const std::string& body = "") + : m_msg(log_msg) + , m_error_msg(error_msg) + , m_body(body) + , m_error_code(error_code) {} + + ~exception() throw() {} + + virtual const char* what() const throw() { + return m_msg.c_str(); + } + + std::string m_msg; + std::string m_error_msg; + std::string m_body; + status_code::value m_error_code; + }; +} +} + +#endif // HTTP_CONSTANTS_HPP diff --git a/src/third_party/websocketpp/websocketpp/http/impl/parser.hpp b/src/third_party/websocketpp/websocketpp/http/impl/parser.hpp new file mode 100644 index 00000000..0ceac2ed --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/http/impl/parser.hpp @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef HTTP_PARSER_IMPL_HPP +#define HTTP_PARSER_IMPL_HPP + +#include +#include +#include + +namespace websocketpp { +namespace http { +namespace parser { + +inline void parser::set_version(std::string const & version) { + m_version = version; +} + +inline std::string const & parser::get_header(std::string const & key) const { + header_list::const_iterator h = m_headers.find(key); + + if (h == m_headers.end()) { + return empty_header; + } else { + return h->second; + } +} + +inline bool parser::get_header_as_plist(std::string const & key, + parameter_list & out) const +{ + header_list::const_iterator it = m_headers.find(key); + + if (it == m_headers.end() || it->second.size() == 0) { + return false; + } + + return this->parse_parameter_list(it->second,out); +} + +inline void parser::append_header(std::string const & key, std::string const & + val) +{ + if (std::find_if(key.begin(),key.end(),is_not_token_char) != key.end()) { + throw exception("Invalid header name",status_code::bad_request); + } + + if (this->get_header(key) == "") { + m_headers[key] = val; + } else { + m_headers[key] += ", " + val; + } +} + +inline void parser::replace_header(std::string const & key, std::string const & + val) +{ + m_headers[key] = val; +} + +inline void parser::remove_header(std::string const & key) { + m_headers.erase(key); +} + +inline void parser::set_body(std::string const & value) { + if (value.size() == 0) { + remove_header("Content-Length"); + m_body = ""; + return; + } + + std::stringstream len; + len << value.size(); + replace_header("Content-Length", len.str()); + m_body = value; +} + +inline bool parser::parse_parameter_list(std::string const & in, + parameter_list & out) const +{ + if (in.size() == 0) { + return false; + } + + std::string::const_iterator it; + it = extract_parameters(in.begin(),in.end(),out); + return (it == in.begin()); +} + +inline bool parser::parse_headers(std::istream & s) { + std::string header; + std::string::size_type end; + + // get headers + while (std::getline(s, header) && header != "\r") { + if (header[header.size()-1] != '\r') { + continue; // ignore malformed header lines? + } else { + header.erase(header.end()-1); + } + + end = header.find(header_separator,0); + + if (end != std::string::npos) { + append_header(header.substr(0,end),header.substr(end+2)); + } + } + + return true; +} + +inline void parser::process_header(std::string::iterator begin, + std::string::iterator end) +{ + std::string::iterator cursor = std::search( + begin, + end, + header_separator, + header_separator + sizeof(header_separator) - 1 + ); + + if (cursor == end) { + throw exception("Invalid header line",status_code::bad_request); + } + + append_header(std::string(begin,cursor), + std::string(cursor+sizeof(header_separator)-1,end)); +} + +inline std::string parser::raw_headers() const { + std::stringstream raw; + + header_list::const_iterator it; + for (it = m_headers.begin(); it != m_headers.end(); it++) { + raw << it->first << ": " << it->second << "\r\n"; + } + + return raw.str(); +} + + + +} // namespace parser +} // namespace http +} // namespace websocketpp + +#endif // HTTP_PARSER_IMPL_HPP diff --git a/src/third_party/websocketpp/websocketpp/http/impl/request.hpp b/src/third_party/websocketpp/websocketpp/http/impl/request.hpp new file mode 100644 index 00000000..804a7faf --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/http/impl/request.hpp @@ -0,0 +1,191 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef HTTP_PARSER_REQUEST_IMPL_HPP +#define HTTP_PARSER_REQUEST_IMPL_HPP + +#include +#include + +#include + +namespace websocketpp { +namespace http { +namespace parser { + +inline bool request::parse_complete(std::istream& s) { + std::string request; + + // get status line + std::getline(s, request); + + if (request[request.size()-1] == '\r') { + request.erase(request.end()-1); + + std::stringstream ss(request); + std::string val; + + ss >> val; + set_method(val); + + ss >> val; + set_uri(val); + + ss >> val; + set_version(val); + } else { + return false; + } + + return parse_headers(s); +} + +inline size_t request::consume(const char *buf, size_t len) { + if (m_ready) {return 0;} + + if (m_buf->size() + len > max_header_size) { + // exceeded max header size + throw exception("Maximum header size exceeded.", + status_code::request_header_fields_too_large); + } + + // copy new header bytes into buffer + m_buf->append(buf,len); + + // Search for delimiter in buf. If found read until then. If not read all + std::string::iterator begin = m_buf->begin(); + std::string::iterator end; + + for (;;) { + // search for line delimiter + end = std::search( + begin, + m_buf->end(), + header_delimiter, + header_delimiter+sizeof(header_delimiter)-1 + ); + + //std::cout << "mark5: " << end-begin << std::endl; + //std::cout << "mark6: " << sizeof(header_delimiter) << std::endl; + + if (end == m_buf->end()) { + // we are out of bytes. Discard the processed bytes and copy the + // remaining unprecessed bytes to the beginning of the buffer + std::copy(begin,end,m_buf->begin()); + m_buf->resize(static_cast(end-begin)); + + return len; + } + + //the range [begin,end) now represents a line to be processed. + if (end-begin == 0) { + // we got a blank line + if (m_method.empty() || get_header("Host") == "") { + throw exception("Incomplete Request",status_code::bad_request); + } + m_ready = true; + + size_t bytes_processed = ( + len - static_cast(m_buf->end()-end) + + sizeof(header_delimiter) - 1 + ); + + // frees memory used temporarily during request parsing + m_buf.reset(); + + // return number of bytes processed (starting bytes - bytes left) + return bytes_processed; + } else { + if (m_method.empty()) { + this->process(begin,end); + } else { + this->process_header(begin,end); + } + } + + begin = end+sizeof(header_delimiter)-1; + } +} + +inline std::string request::raw() { + // TODO: validation. Make sure all required fields have been set? + std::stringstream raw; + + raw << m_method << " " << m_uri << " " << get_version() << "\r\n"; + raw << raw_headers() << "\r\n" << m_body; + + return raw.str(); +} + +inline void request::set_method(const std::string& method) { + if (std::find_if(method.begin(),method.end(),is_not_token_char) != method.end()) { + throw exception("Invalid method token.",status_code::bad_request); + } + + m_method = method; +} + +/// Set HTTP body +/** + * Sets the body of the HTTP object and fills in the appropriate content length + * header + * + * @param value The value to set the body to. + */ +inline void request::set_uri(const std::string& uri) { + // TODO: validation? + m_uri = uri; +} + +inline void request::process(std::string::iterator begin, std::string::iterator + end) +{ + std::string::iterator cursor_start = begin; + std::string::iterator cursor_end = std::find(begin,end,' '); + + if (cursor_end == end) { + throw exception("Invalid request line1",status_code::bad_request); + } + + set_method(std::string(cursor_start,cursor_end)); + + cursor_start = cursor_end+1; + cursor_end = std::find(cursor_start,end,' '); + + if (cursor_end == end) { + throw exception("Invalid request line2",status_code::bad_request); + } + + set_uri(std::string(cursor_start,cursor_end)); + set_version(std::string(cursor_end+1,end)); +} + +} // namespace parser +} // namespace http +} // namespace websocketpp + +#endif // HTTP_PARSER_REQUEST_IMPL_HPP diff --git a/src/third_party/websocketpp/websocketpp/http/impl/response.hpp b/src/third_party/websocketpp/websocketpp/http/impl/response.hpp new file mode 100644 index 00000000..bcddd176 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/http/impl/response.hpp @@ -0,0 +1,289 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef HTTP_PARSER_RESPONSE_IMPL_HPP +#define HTTP_PARSER_RESPONSE_IMPL_HPP + +#include +#include + +#include + +namespace websocketpp { +namespace http { +namespace parser { + +inline size_t response::consume(const char *buf, size_t len) { + if (m_state == DONE) {return 0;} + + if (m_state == BODY) { + return this->process_body(buf,len); + } + + if (m_read + len > max_header_size) { + // exceeded max header size + throw exception("Maximum header size exceeded.", + status_code::request_header_fields_too_large); + } + + // copy new header bytes into buffer + m_buf->append(buf,len); + + // Search for delimiter in buf. If found read until then. If not read all + std::string::iterator begin = m_buf->begin(); + std::string::iterator end = begin; + + + for (;;) { + // search for delimiter + end = std::search( + begin, + m_buf->end(), + header_delimiter, + header_delimiter + sizeof(header_delimiter) - 1 + ); + + if (end == m_buf->end()) { + // we are out of bytes. Discard the processed bytes and copy the + // remaining unprecessed bytes to the beginning of the buffer + std::copy(begin,end,m_buf->begin()); + m_buf->resize(static_cast(end-begin)); + + m_read +=len; + + return len; + } + + //the range [begin,end) now represents a line to be processed. + + if (end-begin == 0) { + // we got a blank line + if (m_state == RESPONSE_LINE) { + throw exception("Incomplete Request",status_code::bad_request); + } + + // TODO: grab content-length + std::string length = get_header("Content-Length"); + + if (length == "") { + // no content length found, read indefinitely + m_read = 0; + } else { + std::istringstream ss(length); + + if ((ss >> m_read).fail()) { + throw exception("Unable to parse Content-Length header", + status_code::bad_request); + } + } + + m_state = BODY; + + // calc header bytes processed (starting bytes - bytes left) + size_t read = ( + len - static_cast(m_buf->end() - end) + + sizeof(header_delimiter) - 1 + ); + + // if there were bytes left process them as body bytes + if (read < len) { + read += this->process_body(buf+read,(len-read)); + } + + // frees memory used temporarily during header parsing + m_buf.reset(); + + return read; + } else { + if (m_state == RESPONSE_LINE) { + this->process(begin,end); + m_state = HEADERS; + } else { + this->process_header(begin,end); + } + } + + begin = end+(sizeof(header_delimiter) - 1); + } +} + +inline size_t response::consume(std::istream & s) { + char buf[istream_buffer]; + size_t bytes_read; + size_t bytes_processed; + size_t total = 0; + + while (s.good()) { + s.getline(buf,istream_buffer); + bytes_read = static_cast(s.gcount()); + + if (s.fail() || s.eof()) { + bytes_processed = this->consume(buf,bytes_read); + total += bytes_processed; + + if (bytes_processed != bytes_read) { + // problem + break; + } + } else if (s.bad()) { + // problem + break; + } else { + // the delimiting newline was found. Replace the trailing null with + // the newline that was discarded, since our raw consume function + // expects the newline to be be there. + buf[bytes_read-1] = '\n'; + bytes_processed = this->consume(buf,bytes_read); + total += bytes_processed; + + if (bytes_processed != bytes_read) { + // problem + break; + } + } + } + + return total; +} + +inline bool response::parse_complete(std::istream& s) { + // parse a complete header (ie \r\n\r\n MUST be in the input stream) + std::string response; + + // get status line + std::getline(s, response); + + if (response[response.size()-1] == '\r') { + response.erase(response.end()-1); + + std::stringstream ss(response); + std::string str_val; + int int_val; + char char_val[256]; + + ss >> str_val; + set_version(str_val); + + ss >> int_val; + ss.getline(char_val,256); + set_status(status_code::value(int_val),std::string(char_val)); + } else { + return false; + } + + return parse_headers(s); +} + +inline std::string response::raw() const { + // TODO: validation. Make sure all required fields have been set? + + std::stringstream raw; + + raw << get_version() << " " << m_status_code << " " << m_status_msg; + raw << "\r\n" << raw_headers() << "\r\n"; + + raw << m_body; + + return raw.str(); +} + +inline void response::set_status(status_code::value code) { + // TODO: validation? + m_status_code = code; + m_status_msg = get_string(code); +} + +inline void response::set_status(status_code::value code, const std::string& + msg) +{ + // TODO: validation? + m_status_code = code; + m_status_msg = msg; +} + +inline void response::process(std::string::iterator begin, + std::string::iterator end) +{ + std::string::iterator cursor_start = begin; + std::string::iterator cursor_end = std::find(begin,end,' '); + + if (cursor_end == end) { + throw exception("Invalid response line",status_code::bad_request); + } + + set_version(std::string(cursor_start,cursor_end)); + + cursor_start = cursor_end+1; + cursor_end = std::find(cursor_start,end,' '); + + if (cursor_end == end) { + throw exception("Invalid request line",status_code::bad_request); + } + + int code; + + std::istringstream ss(std::string(cursor_start,cursor_end)); + + if ((ss >> code).fail()) { + throw exception("Unable to parse response code",status_code::bad_request); + } + + set_status(status_code::value(code),std::string(cursor_end+1,end)); +} + +inline size_t response::process_body(const char *buf, size_t len) { + // If no content length was set then we read forever and never set m_ready + if (m_read == 0) { + //m_body.append(buf,len); + //return len; + m_state = DONE; + return 0; + } + + // Otherwise m_read is the number of bytes left. + size_t to_read; + + if (len >= m_read) { + // if we have more bytes than we need read, read only the amount needed + // then set done state + to_read = m_read; + m_state = DONE; + } else { + // we need more bytes than are available, read them all + to_read = len; + } + + m_body.append(buf,to_read); + m_read -= to_read; + return to_read; +} + +} // namespace parser +} // namespace http +} // namespace websocketpp + +#endif // HTTP_PARSER_RESPONSE_IMPL_HPP diff --git a/src/third_party/websocketpp/websocketpp/http/parser.hpp b/src/third_party/websocketpp/websocketpp/http/parser.hpp new file mode 100644 index 00000000..0bb52c2b --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/http/parser.hpp @@ -0,0 +1,528 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef HTTP_PARSER_HPP +#define HTTP_PARSER_HPP + +#include +#include +#include + +#include +#include + +namespace websocketpp { +namespace http { +namespace parser { + +namespace state { + enum value { + method, + resource, + version, + headers + }; +} + +typedef std::map header_list; + +/// Read and return the next token in the stream +/** + * Read until a non-token character is found and then return the token and + * iterator to the next character to read + * + * @param begin An iterator to the beginning of the sequence + * @param end An iterator to the end of the sequence + * @return A pair containing the token and an iterator to the next character in + * the stream + */ +template +std::pair extract_token(InputIterator begin, + InputIterator end) +{ + InputIterator it = std::find_if(begin,end,&is_not_token_char); + return std::make_pair(std::string(begin,it),it); +} + +/// Read and return the next quoted string in the stream +/** + * Read a double quoted string starting at `begin`. The quotes themselves are + * stripped. The quoted value is returned along with an iterator to the next + * character to read + * + * @param begin An iterator to the beginning of the sequence + * @param end An iterator to the end of the sequence + * @return A pair containing the string read and an iterator to the next + * character in the stream + */ +template +std::pair extract_quoted_string(InputIterator begin, + InputIterator end) +{ + std::string s; + + if (end == begin) { + return std::make_pair(s,begin); + } + + if (*begin != '"') { + return std::make_pair(s,begin); + } + + InputIterator cursor = begin+1; + InputIterator marker = cursor; + + cursor = std::find(cursor,end,'"'); + + while (cursor != end) { + // either this is the end or a quoted string + if (*(cursor-1) == '\\') { + s.append(marker,cursor-1); + s.append(1,'"'); + ++cursor; + marker = cursor; + } else { + s.append(marker,cursor); + ++cursor; + return std::make_pair(s,cursor); + } + + cursor = std::find(cursor,end,'"'); + } + + return std::make_pair("",begin); +} + +/// Read and discard one unit of linear whitespace +/** + * Read one unit of linear white space and return the iterator to the character + * afterwards. If `begin` is returned, no whitespace was extracted. + * + * @param begin An iterator to the beginning of the sequence + * @param end An iterator to the end of the sequence + * @return An iterator to the character after the linear whitespace read + */ +template +InputIterator extract_lws(InputIterator begin, InputIterator end) { + InputIterator it = begin; + + // strip leading CRLF + if (end-begin > 2 && *begin == '\r' && *(begin+1) == '\n' && + is_whitespace_char(static_cast(*(begin+2)))) + { + it+=3; + } + + it = std::find_if(it,end,&is_not_whitespace_char); + return it; +} + +/// Read and discard linear whitespace +/** + * Read linear white space until a non-lws character is read and return an + * iterator to that character. If `begin` is returned, no whitespace was + * extracted. + * + * @param begin An iterator to the beginning of the sequence + * @param end An iterator to the end of the sequence + * @return An iterator to the character after the linear whitespace read + */ +template +InputIterator extract_all_lws(InputIterator begin, InputIterator end) { + InputIterator old_it; + InputIterator new_it = begin; + + do { + // Pull value from previous iteration + old_it = new_it; + + // look ahead another pass + new_it = extract_lws(old_it,end); + } while (new_it != end && old_it != new_it); + + return new_it; +} + +/// Extract HTTP attributes +/** + * An http attributes list is a semicolon delimited list of key value pairs in + * the format: *( ";" attribute "=" value ) where attribute is a token and value + * is a token or quoted string. + * + * Attributes extracted are appended to the supplied attributes list + * `attributes`. + * + * @param [in] begin An iterator to the beginning of the sequence + * @param [in] end An iterator to the end of the sequence + * @param [out] attributes A reference to the attributes list to append + * attribute/value pairs extracted to + * @return An iterator to the character after the last atribute read + */ +template +InputIterator extract_attributes(InputIterator begin, InputIterator end, + attribute_list & attributes) +{ + InputIterator cursor; + bool first = true; + + if (begin == end) { + return begin; + } + + cursor = begin; + std::pair ret; + + while (cursor != end) { + std::string name; + + cursor = http::parser::extract_all_lws(cursor,end); + if (cursor == end) { + break; + } + + if (first) { + // ignore this check for the very first pass + first = false; + } else { + if (*cursor == ';') { + // advance past the ';' + ++cursor; + } else { + // non-semicolon in this position indicates end end of the + // attribute list, break and return. + break; + } + } + + cursor = http::parser::extract_all_lws(cursor,end); + ret = http::parser::extract_token(cursor,end); + + if (ret.first == "") { + // error: expected a token + return begin; + } else { + name = ret.first; + cursor = ret.second; + } + + cursor = http::parser::extract_all_lws(cursor,end); + if (cursor == end || *cursor != '=') { + // if there is an equals sign, read the attribute value. Otherwise + // record a blank value and continue + attributes[name] = ""; + continue; + } + + // advance past the '=' + ++cursor; + + cursor = http::parser::extract_all_lws(cursor,end); + if (cursor == end) { + // error: expected a token or quoted string + return begin; + } + + ret = http::parser::extract_quoted_string(cursor,end); + if (ret.second != cursor) { + attributes[name] = ret.first; + cursor = ret.second; + continue; + } + + ret = http::parser::extract_token(cursor,end); + if (ret.first == "") { + // error : expected token or quoted string + return begin; + } else { + attributes[name] = ret.first; + cursor = ret.second; + } + } + + return cursor; +} + +/// Extract HTTP parameters +/** + * An http parameters list is a comma delimited list of tokens followed by + * optional semicolon delimited attributes lists. + * + * Parameters extracted are appended to the supplied parameters list + * `parameters`. + * + * @param [in] begin An iterator to the beginning of the sequence + * @param [in] end An iterator to the end of the sequence + * @param [out] parameters A reference to the parameters list to append + * paramter values extracted to + * @return An iterator to the character after the last parameter read + */ +template +InputIterator extract_parameters(InputIterator begin, InputIterator end, + parameter_list ¶meters) +{ + InputIterator cursor; + + if (begin == end) { + // error: expected non-zero length range + return begin; + } + + cursor = begin; + std::pair ret; + + /** + * LWS + * token + * LWS + * *(";" method-param) + * LWS + * ,=loop again + */ + while (cursor != end) { + std::string parameter_name; + attribute_list attributes; + + // extract any stray whitespace + cursor = http::parser::extract_all_lws(cursor,end); + if (cursor == end) {break;} + + ret = http::parser::extract_token(cursor,end); + + if (ret.first == "") { + // error: expected a token + return begin; + } else { + parameter_name = ret.first; + cursor = ret.second; + } + + // Safe break point, insert parameter with blank attributes and exit + cursor = http::parser::extract_all_lws(cursor,end); + if (cursor == end) { + //parameters[parameter_name] = attributes; + parameters.push_back(std::make_pair(parameter_name,attributes)); + break; + } + + // If there is an attribute list, read it in + if (*cursor == ';') { + InputIterator acursor; + + ++cursor; + acursor = http::parser::extract_attributes(cursor,end,attributes); + + if (acursor == cursor) { + // attribute extraction ended in syntax error + return begin; + } + + cursor = acursor; + } + + // insert parameter into output list + //parameters[parameter_name] = attributes; + parameters.push_back(std::make_pair(parameter_name,attributes)); + + cursor = http::parser::extract_all_lws(cursor,end); + if (cursor == end) {break;} + + // if next char is ',' then read another parameter, else stop + if (*cursor != ',') { + break; + } + + // advance past comma + ++cursor; + + if (cursor == end) { + // expected more bytes after a comma + return begin; + } + } + + return cursor; +} + +/// Base HTTP parser +/** + * Includes methods and data elements common to all types of HTTP messages such + * as headers, versions, bodies, etc. + */ +class parser { +public: + /// Get the HTTP version string + /** + * @return The version string for this parser + */ + std::string const & get_version() const { + return m_version; + } + + /// Set HTTP parser Version + /** + * Input should be in format: HTTP/x.y where x and y are positive integers. + * @todo Does this method need any validation? + * + * @param [in] version The value to set the HTTP version to. + */ + void set_version(std::string const & version); + + /// Get the value of an HTTP header + /** + * @todo Make this method case insensitive. + * + * @param [in] key The name/key of the header to get. + * @return The value associated with the given HTTP header key. + */ + std::string const & get_header(std::string const & key) const; + + /// Extract an HTTP parameter list from a parser header. + /** + * If the header requested doesn't exist or exists and is empty the + * parameter list is valid (but empty). + * + * @param [in] key The name/key of the HTTP header to use as input. + * @param [out] out The parameter list to store extracted parameters in. + * @return Whether or not the input was a valid parameter list. + */ + bool get_header_as_plist(std::string const & key, parameter_list & out) + const; + + /// Append a value to an existing HTTP header + /** + * This method will set the value of the HTTP header `key` with the + * indicated value. If a header with the name `key` already exists, `val` + * will be appended to the existing value. + * + * @todo Make this method case insensitive. + * @todo Should there be any restrictions on which keys are allowed? + * @todo Exception free varient + * + * @see replace_header + * + * @param [in] key The name/key of the header to append to. + * @param [in] val The value to append. + */ + void append_header(std::string const & key, std::string const & val); + + /// Set a value for an HTTP header, replacing an existing value + /** + * This method will set the value of the HTTP header `key` with the + * indicated value. If a header with the name `key` already exists, `val` + * will replace the existing value. + * + * @todo Make this method case insensitive. + * @todo Should there be any restrictions on which keys are allowed? + * @todo Exception free varient + * + * @see append_header + * + * @param [in] key The name/key of the header to append to. + * @param [in] val The value to append. + */ + void replace_header(std::string const & key, std::string const & val); + + /// Remove a header from the parser + /** + * Removes the header entirely from the parser. This is different than + * setting the value of the header to blank. + * + * @todo Make this method case insensitive. + * + * @param [in] key The name/key of the header to remove. + */ + void remove_header(std::string const & key); + + /// Set HTTP body + /** + * Sets the body of the HTTP object and fills in the appropriate content + * length header. + * + * @param [in] value The value to set the body to. + */ + std::string const & get_body() const { + return m_body; + } + + /// Set body content + /** + * Set the body content of the HTTP response to the parameter string. Note + * set_body will also set the Content-Length HTTP header to the appropriate + * value. If you want the Content-Length header to be something else, do so + * via replace_header("Content-Length") after calling set_body() + * + * @param value String data to include as the body content. + */ + void set_body(std::string const & value); + + /// Extract an HTTP parameter list from a string. + /** + * @param [in] in The input string. + * @param [out] out The parameter list to store extracted parameters in. + * @return Whether or not the input was a valid parameter list. + */ + bool parse_parameter_list(std::string const & in, parameter_list & out) + const; +protected: + /// Parse headers from an istream + /** + * @deprecated Use process_header instead. + * + * @param [in] s The istream to extract headers from. + */ + bool parse_headers(std::istream & s); + + /// Process a header line + /** + * @todo Update this method to be exception free. + * + * @param [in] begin An iterator to the beginning of the sequence. + * @param [in] end An iterator to the end of the sequence. + */ + void process_header(std::string::iterator begin, std::string::iterator end); + + /// Generate and return the HTTP headers as a string + /** + * Each headers will be followed by the \r\n sequence including the last one. + * A second \r\n sequence (blank header) is not appended by this method + * + * @return The HTTP headers as a string. + */ + std::string raw_headers() const; + + std::string m_version; + header_list m_headers; + std::string m_body; +}; + +} // namespace parser +} // namespace http +} // namespace websocketpp + +#include + +#endif // HTTP_PARSER_HPP diff --git a/src/third_party/websocketpp/websocketpp/http/request.hpp b/src/third_party/websocketpp/websocketpp/http/request.hpp new file mode 100644 index 00000000..1b8c3e2a --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/http/request.hpp @@ -0,0 +1,122 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef HTTP_PARSER_REQUEST_HPP +#define HTTP_PARSER_REQUEST_HPP + +#include +#include + +namespace websocketpp { +namespace http { +namespace parser { + +/// Stores, parses, and manipulates HTTP requests +/** + * http::request provides the following functionality for working with HTTP + * requests. + * + * - Initialize request via manually setting each element + * - Initialize request via reading raw bytes and parsing + * - Once initialized, access individual parsed elements + * - Once initialized, read entire request as raw bytes + */ +class request : public parser { +public: + typedef request type; + typedef lib::shared_ptr ptr; + + request() + : m_buf(new std::string()) + , m_ready(false) {} + + /// DEPRECATED parse a complete header (\r\n\r\n MUST be in the istream) + bool parse_complete(std::istream& s); + + /// Process bytes in the input buffer + /** + * Process up to len bytes from input buffer buf. Returns the number of + * bytes processed. Bytes left unprocessed means bytes left over after the + * final header delimiters. + * + * Consume is a streaming processor. It may be called multiple times on one + * request and the full headers need not be available before processing can + * begin. If the end of the request was reached during this call to consume + * the ready flag will be set. Further calls to consume once ready will be + * ignored. + * + * Consume will throw an http::exception in the case of an error. Typical + * error reasons include malformed requests, incomplete requests, and max + * header size being reached. + * + * @param buf Pointer to byte buffer + * @param len Size of byte buffer + * @return Number of bytes processed. + */ + size_t consume(const char *buf, size_t len); + + /// Returns whether or not the request is ready for reading. + bool ready() const { + return m_ready; + } + + /// Returns the full raw request + std::string raw(); + + /// Set the HTTP method. Must be a valid HTTP token + void set_method(const std::string& method); + + /// Return the request method + const std::string& get_method() const { + return m_method; + } + + /// Set the HTTP uri. Must be a valid HTTP uri + void set_uri(const std::string& uri); + + /// Return the requested URI + const std::string& get_uri() const { + return m_uri; + } + +private: + /// Helper function for message::consume. Process request line + void process(std::string::iterator begin, std::string::iterator end); + + lib::shared_ptr m_buf; + std::string m_method; + std::string m_uri; + bool m_ready; +}; + +} // namespace parser +} // namespace http +} // namespace websocketpp + +#include + +#endif // HTTP_PARSER_REQUEST_HPP diff --git a/src/third_party/websocketpp/websocketpp/http/response.hpp b/src/third_party/websocketpp/websocketpp/http/response.hpp new file mode 100644 index 00000000..1ee622b1 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/http/response.hpp @@ -0,0 +1,168 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef HTTP_PARSER_RESPONSE_HPP +#define HTTP_PARSER_RESPONSE_HPP + +#include + +namespace websocketpp { +namespace http { +namespace parser { + +/// Stores, parses, and manipulates HTTP responses +/** + * http::response provides the following functionality for working with HTTP + * responses. + * + * - Initialize response via manually setting each element + * - Initialize response via reading raw bytes and parsing + * - Once initialized, access individual parsed elements + * - Once initialized, read entire response as raw bytes + * + * http::response checks for header completeness separately from the full + * response. Once the header is complete, the Content-Length header is read to + * determine when to stop reading body bytes. If no Content-Length is present + * ready() will never return true. It is the responsibility of the caller to + * consume to determine when the response is complete (ie when the connection + * terminates, or some other metric). + */ +class response : public parser { +public: + typedef response type; + typedef lib::shared_ptr ptr; + + response() + : m_read(0) + , m_buf(new std::string()) + , m_status_code(status_code::uninitialized) + , m_state(RESPONSE_LINE) {} + + /// Process bytes in the input buffer + /** + * Process up to len bytes from input buffer buf. Returns the number of + * bytes processed. Bytes left unprocessed means bytes left over after the + * final header delimiters. + * + * Consume is a streaming processor. It may be called multiple times on one + * response and the full headers need not be available before processing can + * begin. If the end of the response was reached during this call to consume + * the ready flag will be set. Further calls to consume once ready will be + * ignored. + * + * Consume will throw an http::exception in the case of an error. Typical + * error reasons include malformed responses, incomplete responses, and max + * header size being reached. + * + * @param buf Pointer to byte buffer + * @param len Size of byte buffer + * @return Number of bytes processed. + */ + size_t consume(const char *buf, size_t len); + + size_t consume(std::istream & s); + + /// Returns true if the response is ready. + /** + * @note will never return true if the content length header is not present + */ + bool ready() const { + return m_state == DONE; + } + + /// Returns true if the response headers are fully parsed. + bool headers_ready() const { + return (m_state == BODY || m_state == DONE); + } + + /// DEPRECATED parse a complete response from a pre-delimited istream + bool parse_complete(std::istream& s); + + /// Returns the full raw response + std::string raw() const; + + /// Set response status code and message + /** + * Sets the response status code to `code` and looks up the corresponding + * message for standard codes. Non-standard codes will be entered as Unknown + * use set_status(status_code::value,std::string) overload to set both + * values explicitly. + * + * @param code Code to set + * @param msg Message to set + */ + void set_status(status_code::value code); + + /// Set response status code and message + /** + * Sets the response status code and message to independent custom values. + * use set_status(status_code::value) to set the code and have the standard + * message be automatically set. + * + * @param code Code to set + * @param msg Message to set + */ + void set_status(status_code::value code, const std::string& msg); + + /// Return the response status code + status_code::value get_status_code() const { + return m_status_code; + } + + /// Return the response status message + const std::string& get_status_msg() const { + return m_status_msg; + } +private: + /// Helper function for consume. Process response line + void process(std::string::iterator begin, std::string::iterator end); + + /// Helper function for processing body bytes + size_t process_body(const char *buf, size_t len); + + enum state { + RESPONSE_LINE = 0, + HEADERS = 1, + BODY = 2, + DONE = 3 + }; + + std::string m_status_msg; + size_t m_read; + lib::shared_ptr m_buf; + status_code::value m_status_code; + state m_state; + +}; + +} // namespace parser +} // namespace http +} // namespace websocketpp + +#include + +#endif // HTTP_PARSER_RESPONSE_HPP diff --git a/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp b/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp new file mode 100644 index 00000000..7dde35a8 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp @@ -0,0 +1,2041 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CONNECTION_IMPL_HPP +#define WEBSOCKETPP_CONNECTION_IMPL_HPP + +#include + +#include + +#include +#include +#include +#include + +namespace websocketpp { + +namespace istate = session::internal_state; + +template +void connection::set_termination_handler( + termination_handler new_handler) +{ + m_alog.write(log::alevel::devel, + "connection set_termination_handler"); + + //scoped_lock_type lock(m_connection_state_lock); + + m_termination_handler = new_handler; +} + +template +const std::string& connection::get_origin() const { + //scoped_lock_type lock(m_connection_state_lock); + return m_processor->get_origin(m_request); +} + +template +size_t connection::get_buffered_amount() const { + //scoped_lock_type lock(m_connection_state_lock); + return m_send_buffer_size; +} + +template +session::state::value connection::get_state() const { + //scoped_lock_type lock(m_connection_state_lock); + return m_state; +} + +template +lib::error_code connection::send(const std::string& payload, + frame::opcode::value op) +{ + message_ptr msg = m_msg_manager->get_message(op,payload.size()); + msg->append_payload(payload); + + return send(msg); +} + +template +lib::error_code connection::send(const void* payload, size_t len, + frame::opcode::value op) +{ + message_ptr msg = m_msg_manager->get_message(op,len); + msg->append_payload(payload,len); + + return send(msg); +} + +template +lib::error_code connection::send(typename config::message_type::ptr msg) +{ + m_alog.write(log::alevel::devel,"connection send"); + // TODO: + + if (m_state != session::state::open) { + return error::make_error_code(error::invalid_state); + } + + message_ptr outgoing_msg; + bool needs_writing = false; + + if (msg->get_prepared()) { + outgoing_msg = msg; + + scoped_lock_type lock(m_write_lock); + write_push(outgoing_msg); + needs_writing = !m_write_flag && !m_send_queue.empty(); + } else { + outgoing_msg = m_msg_manager->get_message(); + + if (!outgoing_msg) { + return error::make_error_code(error::no_outgoing_buffers); + } + + scoped_lock_type lock(m_write_lock); + lib::error_code ec = m_processor->prepare_data_frame(msg,outgoing_msg); + + if (ec) { + return ec; + } + + write_push(outgoing_msg); + needs_writing = !m_write_flag && !m_send_queue.empty(); + } + + if (needs_writing) { + transport_con_type::dispatch(lib::bind( + &type::write_frame, + type::get_shared() + )); + } + + return lib::error_code(); +} + +template +void connection::ping(const std::string& payload, lib::error_code& ec) { + m_alog.write(log::alevel::devel,"connection ping"); + + if (m_state != session::state::open) { + ec = error::make_error_code(error::invalid_state); + return; + } + + message_ptr msg = m_msg_manager->get_message(); + if (!msg) { + ec = error::make_error_code(error::no_outgoing_buffers); + return; + } + + ec = m_processor->prepare_ping(payload,msg); + if (ec) {return;} + + // set ping timer if we are listening for one + if (m_pong_timeout_handler) { + // Cancel any existing timers + if (m_ping_timer) { + m_ping_timer->cancel(); + } + + m_ping_timer = transport_con_type::set_timer( + config::timeout_pong, + lib::bind( + &type::handle_pong_timeout, + type::get_shared(), + payload, + lib::placeholders::_1 + ) + ); + + if (!m_ping_timer) { + // Our transport doesn't support timers + m_elog.write(log::elevel::warn,"Warning: a pong_timeout_handler is \ + set but the transport in use does not support timeouts."); + } + } + + bool needs_writing = false; + { + scoped_lock_type lock(m_write_lock); + write_push(msg); + needs_writing = !m_write_flag && !m_send_queue.empty(); + } + + if (needs_writing) { + transport_con_type::dispatch(lib::bind( + &type::write_frame, + type::get_shared() + )); + } + + ec = lib::error_code(); +} + +template +void connection::ping(const std::string& payload) { + lib::error_code ec; + ping(payload,ec); + if (ec) { + throw ec; + } +} + +template +void connection::handle_pong_timeout(std::string payload, const lib::error_code & + ec) +{ + if (ec) { + if (ec == transport::error::operation_aborted) { + // ignore, this is expected + return; + } + + m_elog.write(log::elevel::devel,"pong_timeout error: "+ec.message()); + return; + } + + if (m_pong_timeout_handler) { + m_pong_timeout_handler(m_connection_hdl,payload); + } +} + +template +void connection::pong(const std::string& payload, lib::error_code& ec) { + m_alog.write(log::alevel::devel,"connection pong"); + + if (m_state != session::state::open) { + ec = error::make_error_code(error::invalid_state); + return; + } + + message_ptr msg = m_msg_manager->get_message(); + if (!msg) { + ec = error::make_error_code(error::no_outgoing_buffers); + return; + } + + ec = m_processor->prepare_pong(payload,msg); + if (ec) {return;} + + bool needs_writing = false; + { + scoped_lock_type lock(m_write_lock); + write_push(msg); + needs_writing = !m_write_flag && !m_send_queue.empty(); + } + + if (needs_writing) { + transport_con_type::dispatch(lib::bind( + &type::write_frame, + type::get_shared() + )); + } + + ec = lib::error_code(); +} + +template +void connection::pong(const std::string& payload) { + lib::error_code ec; + pong(payload,ec); + if (ec) { + throw ec; + } +} + +template +void connection::close(const close::status::value code, + const std::string & reason, lib::error_code & ec) +{ + m_alog.write(log::alevel::devel,"connection close"); + + if (m_state != session::state::open) { + ec = error::make_error_code(error::invalid_state); + return; + } + + // Truncate reason to maximum size allowable in a close frame. + std::string tr(reason,0,std::min(reason.size(), + frame::limits::close_reason_size)); + + ec = this->send_close_frame(code,tr,false,close::status::terminal(code)); +} + +template +void connection::close(const close::status::value code, + const std::string & reason) +{ + lib::error_code ec; + close(code,reason,ec); + if (ec) { + throw ec; + } +} + +/// Trigger the on_interrupt handler +/** + * This is thread safe if the transport is thread safe + */ +template +lib::error_code connection::interrupt() { + m_alog.write(log::alevel::devel,"connection connection::interrupt"); + return transport_con_type::interrupt( + lib::bind( + &type::handle_interrupt, + type::get_shared() + ) + ); +} + + +template +void connection::handle_interrupt() { + if (m_interrupt_handler) { + m_interrupt_handler(m_connection_hdl); + } +} + + + + + + + + + + + + +template +bool connection::get_secure() const { + //scoped_lock_type lock(m_connection_state_lock); + return m_uri->get_secure(); +} + +template +const std::string& connection::get_host() const { + //scoped_lock_type lock(m_connection_state_lock); + return m_uri->get_host(); +} + +template +const std::string& connection::get_resource() const { + //scoped_lock_type lock(m_connection_state_lock); + return m_uri->get_resource(); +} + +template +uint16_t connection::get_port() const { + //scoped_lock_type lock(m_connection_state_lock); + return m_uri->get_port(); +} + +template +uri_ptr connection::get_uri() const { + //scoped_lock_type lock(m_connection_state_lock); + return m_uri; +} + +template +void connection::set_uri(uri_ptr uri) { + //scoped_lock_type lock(m_connection_state_lock); + m_uri = uri; +} + + + + + + +template +const std::string & connection::get_subprotocol() const { + return m_subprotocol; +} + +template +const std::vector & +connection::get_requested_subprotocols() const { + return m_requested_subprotocols; +} + +template +void connection::add_subprotocol(const std::string & value, + lib::error_code & ec) +{ + if (m_is_server) { + ec = error::make_error_code(error::client_only); + return; + } + + // If the value is empty or has a non-RFC2616 token character it is invalid. + if (value.empty() || std::find_if(value.begin(),value.end(), + http::is_not_token_char) != value.end()) + { + ec = error::make_error_code(error::invalid_subprotocol); + return; + } + + m_requested_subprotocols.push_back(value); +} + +template +void connection::add_subprotocol(const std::string & value) { + lib::error_code ec; + this->add_subprotocol(value,ec); + if (ec) { + throw ec; + } +} + + +template +void connection::select_subprotocol(const std::string & value, + lib::error_code & ec) +{ + if (!m_is_server) { + ec = error::make_error_code(error::server_only); + return; + } + + if (value.empty()) { + ec = lib::error_code(); + return; + } + + std::vector::iterator it; + + it = std::find(m_requested_subprotocols.begin(), + m_requested_subprotocols.end(), + value); + + if (it == m_requested_subprotocols.end()) { + ec = error::make_error_code(error::unrequested_subprotocol); + return; + } + + m_subprotocol = value; +} + +template +void connection::select_subprotocol(const std::string & value) { + lib::error_code ec; + this->select_subprotocol(value,ec); + if (ec) { + throw ec; + } +} + + +template +const std::string & +connection::get_request_header(const std::string &key) { + return m_request.get_header(key); +} + +template +const std::string & +connection::get_response_header(const std::string &key) { + return m_response.get_header(key); +} + +template +void connection::set_status(http::status_code::value code) +{ + //scoped_lock_type lock(m_connection_state_lock); + + if (m_internal_state != istate::PROCESS_HTTP_REQUEST) { + throw error::make_error_code(error::invalid_state); + //throw exception("Call to set_status from invalid state", + // error::INVALID_STATE); + } + + m_response.set_status(code); +} +template +void connection::set_status(http::status_code::value code, + std::string const & msg) +{ + //scoped_lock_type lock(m_connection_state_lock); + + if (m_internal_state != istate::PROCESS_HTTP_REQUEST) { + throw error::make_error_code(error::invalid_state); + //throw exception("Call to set_status from invalid state", + // error::INVALID_STATE); + } + + m_response.set_status(code,msg); +} +template +void connection::set_body(std::string const & value) { + //scoped_lock_type lock(m_connection_state_lock); + + if (m_internal_state != istate::PROCESS_HTTP_REQUEST) { + throw error::make_error_code(error::invalid_state); + //throw exception("Call to set_status from invalid state", + // error::INVALID_STATE); + } + + m_response.set_body(value); +} + +template +void connection::append_header(std::string const & key, + std::string const & val) +{ + //scoped_lock_type lock(m_connection_state_lock); + + if (m_is_server) { + if (m_internal_state == istate::PROCESS_HTTP_REQUEST) { + // we are setting response headers for an incoming server connection + m_response.append_header(key,val); + } else { + throw error::make_error_code(error::invalid_state); + } + } else { + if (m_internal_state == istate::USER_INIT) { + // we are setting initial headers for an outgoing client connection + m_request.append_header(key,val); + } else { + throw error::make_error_code(error::invalid_state); + } + } +} +template +void connection::replace_header(std::string const & key, + std::string const & val) +{ + // scoped_lock_type lock(m_connection_state_lock); + + if (m_is_server) { + if (m_internal_state == istate::PROCESS_HTTP_REQUEST) { + // we are setting response headers for an incoming server connection + m_response.replace_header(key,val); + } else { + throw error::make_error_code(error::invalid_state); + } + } else { + if (m_internal_state == istate::USER_INIT) { + // we are setting initial headers for an outgoing client connection + m_request.replace_header(key,val); + } else { + throw error::make_error_code(error::invalid_state); + } + } +} +template +void connection::remove_header(std::string const & key) +{ + //scoped_lock_type lock(m_connection_state_lock); + + if (m_is_server) { + if (m_internal_state == istate::PROCESS_HTTP_REQUEST) { + // we are setting response headers for an incoming server connection + m_response.remove_header(key); + } else { + throw error::make_error_code(error::invalid_state); + } + } else { + if (m_internal_state == istate::USER_INIT) { + // we are setting initial headers for an outgoing client connection + m_request.remove_header(key); + } else { + throw error::make_error_code(error::invalid_state); + } + } +} + + + + + + +/******** logic thread ********/ + +template +void connection::start() { + m_alog.write(log::alevel::devel,"connection start"); + + this->atomic_state_change( + istate::USER_INIT, + istate::TRANSPORT_INIT, + "Start must be called from user init state" + ); + + // Depending on how the transport implements init this function may return + // immediately and call handle_transport_init later or call + // handle_transport_init from this function. + transport_con_type::init( + lib::bind( + &type::handle_transport_init, + type::get_shared(), + lib::placeholders::_1 + ) + ); +} + +template +void connection::handle_transport_init(lib::error_code const & ec) { + m_alog.write(log::alevel::devel,"connection handle_transport_init"); + + { + scoped_lock_type lock(m_connection_state_lock); + + if (m_internal_state != istate::TRANSPORT_INIT) { + throw error::make_error_code(error::invalid_state); + //throw exception("handle_transport_init must be called from transport init state", + // error::INVALID_STATE); + } + + if (!ec) { + // unless there was a transport error, advance internal state. + if (m_is_server) { + m_internal_state = istate::READ_HTTP_REQUEST; + } else { + m_internal_state = istate::WRITE_HTTP_REQUEST; + } + } + } + + if (ec) { + std::stringstream s; + s << "handle_transport_init recieved error: "<< ec.message(); + m_elog.write(log::elevel::fatal,s.str()); + + this->terminate(ec); + return; + } + + // At this point the transport is ready to read and write bytes. + if (m_is_server) { + this->read_handshake(1); + } else { + // We are a client. Set the processor to the version specified in the + // config file and send a handshake request. + m_processor = get_processor(config::client_version); + this->send_http_request(); + } +} + +template +void connection::read_handshake(size_t num_bytes) { + m_alog.write(log::alevel::devel,"connection read"); + + m_handshake_timer = transport_con_type::set_timer( + config::timeout_open_handshake, + lib::bind( + &type::handle_open_handshake_timeout, + type::get_shared(), + lib::placeholders::_1 + ) + ); + + transport_con_type::async_read_at_least( + num_bytes, + m_buf, + config::connection_read_buffer_size, + lib::bind( + &type::handle_read_handshake, + type::get_shared(), + lib::placeholders::_1, + lib::placeholders::_2 + ) + ); +} + +// All exit paths for this function need to call send_http_response() or submit +// a new read request with this function as the handler. +template +void connection::handle_read_handshake(const lib::error_code& ec, + size_t bytes_transferred) +{ + m_alog.write(log::alevel::devel,"connection handle_read_handshake"); + + this->atomic_state_check( + istate::READ_HTTP_REQUEST, + "handle_read_handshake must be called from READ_HTTP_REQUEST state" + ); + + if (ec) { + if (ec == transport::error::eof) { + // we expect to get eof if the connection is closed already + if (m_state == session::state::closed) { + m_alog.write(log::alevel::devel,"got eof from closed con"); + return; + } + } + + std::stringstream s; + s << "error in handle_read_handshake: "<< ec.message(); + m_elog.write(log::elevel::fatal,s.str()); + this->terminate(ec); + return; + } + + // Boundaries checking. TODO: How much of this should be done? + if (bytes_transferred > config::connection_read_buffer_size) { + m_elog.write(log::elevel::fatal,"Fatal boundaries checking error."); + this->terminate(make_error_code(error::general)); + return; + } + + size_t bytes_processed = 0; + try { + bytes_processed = m_request.consume(m_buf,bytes_transferred); + } catch (http::exception &e) { + // All HTTP exceptions will result in this request failing and an error + // response being returned. No more bytes will be read in this con. + m_response.set_status(e.m_error_code,e.m_error_msg); + this->send_http_response_error(); + return; + } + + // More paranoid boundaries checking. + // TODO: Is this overkill? + if (bytes_processed > config::connection_read_buffer_size) { + m_elog.write(log::elevel::fatal,"Fatal boundaries checking error."); + this->terminate(make_error_code(error::general)); + return; + } + + if (m_alog.static_test(log::alevel::devel)) { + std::stringstream s; + s << "bytes_transferred: " << bytes_transferred + << " bytes, bytes processed: " << bytes_processed << " bytes"; + m_alog.write(log::alevel::devel,s.str()); + } + + if (m_request.ready()) { + if (!this->initialize_processor()) { + this->send_http_response_error(); + return; + } + + if (m_processor && m_processor->get_version() == 0) { + // Version 00 has an extra requirement to read some bytes after the + // handshake + if (bytes_transferred-bytes_processed >= 8) { + m_request.replace_header( + "Sec-WebSocket-Key3", + std::string(m_buf+bytes_processed,m_buf+bytes_processed+8) + ); + bytes_processed += 8; + } else { + // TODO: need more bytes + m_alog.write(log::alevel::devel,"short key3 read"); + m_response.set_status(http::status_code::internal_server_error); + this->send_http_response_error(); + return; + } + } + + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,m_request.raw()); + if (m_request.get_header("Sec-WebSocket-Key3") != "") { + m_alog.write(log::alevel::devel, + utility::to_hex(m_request.get_header("Sec-WebSocket-Key3"))); + } + } + + // The remaining bytes in m_buf are frame data. Copy them to the + // beginning of the buffer and note the length. They will be read after + // the handshake completes and before more bytes are read. + std::copy(m_buf+bytes_processed,m_buf+bytes_transferred,m_buf); + m_buf_cursor = bytes_transferred-bytes_processed; + + this->atomic_state_change( + istate::READ_HTTP_REQUEST, + istate::PROCESS_HTTP_REQUEST, + "send_http_response must be called from READ_HTTP_REQUEST state" + ); + + // We have the complete request. Process it. + this->process_handshake_request(); + this->send_http_response(); + } else { + // read at least 1 more byte + transport_con_type::async_read_at_least( + 1, + m_buf, + config::connection_read_buffer_size, + lib::bind( + &type::handle_read_handshake, + type::get_shared(), + lib::placeholders::_1, + lib::placeholders::_2 + ) + ); + } +} + +// send_http_response requires the request to be fully read and the connection +// to be in the PROCESS_HTTP_REQUEST state. In some cases we can detect errors +// before the request is fully read (specifically at a point where we aren't +// sure if the hybi00 key3 bytes need to be read). This method sets the correct +// state and calls send_http_response +template +void connection::send_http_response_error() { + this->atomic_state_change( + istate::READ_HTTP_REQUEST, + istate::PROCESS_HTTP_REQUEST, + "send_http_response must be called from READ_HTTP_REQUEST state" + ); + this->send_http_response(); +} + +// All exit paths for this function need to call send_http_response() or submit +// a new read request with this function as the handler. +template +void connection::handle_read_frame(const lib::error_code& ec, + size_t bytes_transferred) +{ + //m_alog.write(log::alevel::devel,"connection handle_read_frame"); + + this->atomic_state_check( + istate::PROCESS_CONNECTION, + "handle_read_frame must be called from PROCESS_CONNECTION state" + ); + + if (ec) { + if (ec == transport::error::eof) { + if (m_state == session::state::closed) { + // we expect to get eof if the connection is closed already + // just ignore it + m_alog.write(log::alevel::devel,"got eof from closed con"); + return; + } else if (m_state == session::state::closing && !m_is_server) { + // If we are a client we expect to get eof in the closing state, + // this is a signal to terminate our end of the connection after + // the closing handshake + terminate(lib::error_code()); + return; + } + } + if (ec == transport::error::tls_short_read) { + m_elog.write(log::elevel::rerror,"got TLS short read, killing connection for now"); + this->terminate(ec); + return; + } + + std::stringstream s; + s << "error in handle_read_frame: " << ec.message() << " (" << ec << ")"; + m_elog.write(log::elevel::fatal,s.str()); + this->terminate(ec); + return; + } + + // Boundaries checking. TODO: How much of this should be done? + if (bytes_transferred > config::connection_read_buffer_size) { + m_elog.write(log::elevel::fatal,"Fatal boundaries checking error"); + this->terminate(make_error_code(error::general)); + return; + } + + size_t p = 0; + + if (m_alog.static_test(log::alevel::devel)) { + std::stringstream s; + s << "p = " << p << " bytes transferred = " << bytes_transferred; + m_alog.write(log::alevel::devel,s.str()); + } + + while (p < bytes_transferred) { + if (m_alog.static_test(log::alevel::devel)) { + std::stringstream s; + s << "calling consume with " << bytes_transferred-p << " bytes"; + m_alog.write(log::alevel::devel,s.str()); + } + + lib::error_code ec; + + p += m_processor->consume( + reinterpret_cast(m_buf)+p, + bytes_transferred-p, + ec + ); + + if (m_alog.static_test(log::alevel::devel)) { + std::stringstream s; + s << "bytes left after consume: " << bytes_transferred-p; + m_alog.write(log::alevel::devel,s.str()); + } + if (ec) { + m_elog.write(log::elevel::rerror,"consume error: "+ec.message()); + + if (config::drop_on_protocol_error) { + this->terminate(ec); + return; + } else { + lib::error_code close_ec; + this->close(processor::error::to_ws(ec),ec.message(),close_ec); + + if (close_ec) { + m_elog.write(log::elevel::fatal, + "Failed to send a close frame after protocol error: " + +close_ec.message()); + this->terminate(close_ec); + return; + } + } + return; + } + + if (m_processor->ready()) { + if (m_alog.static_test(log::alevel::devel)) { + std::stringstream s; + s << "Complete frame received. Dispatching"; + m_alog.write(log::alevel::devel,s.str()); + } + + message_ptr msg = m_processor->get_message(); + + if (!msg) { + m_alog.write(log::alevel::devel, + "null message from m_processor"); + } else if (!is_control(msg->get_opcode())) { + // data message, dispatch to user + if (m_state != session::state::open) { + m_elog.write(log::elevel::warn, + "got non-close data frame in state closing"); + } else if (m_message_handler) { + m_message_handler(m_connection_hdl, msg); + } + } else { + process_control_frame(msg); + } + } + } + + transport_con_type::async_read_at_least( + // std::min wont work with undefined static const values. + // TODO: is there a more elegant way to do this? + // Need to determine if requesting 1 byte or the exact number of bytes + // is better here. 1 byte lets us be a bit more responsive at a + // potential expense of additional runs through handle_read_frame + /*(m_processor->get_bytes_needed() > config::connection_read_buffer_size ? + config::connection_read_buffer_size : m_processor->get_bytes_needed())*/ + 1, + m_buf, + config::connection_read_buffer_size, + lib::bind( + &type::handle_read_frame, + type::get_shared(), + lib::placeholders::_1, + lib::placeholders::_2 + ) + ); +} + +template +bool connection::initialize_processor() { + m_alog.write(log::alevel::devel,"initialize_processor"); + + // if it isn't a websocket handshake nothing to do. + if (!processor::is_websocket_handshake(m_request)) { + return true; + } + + int version = processor::get_websocket_version(m_request); + + if (version < 0) { + m_alog.write(log::alevel::devel, + "BAD REQUEST: can't determine version"); + m_response.set_status(http::status_code::bad_request); + return false; + } + + m_processor = get_processor(version); + + // if the processor is not null we are done + if (m_processor) { + return true; + } + + // We don't have a processor for this version. Return bad request + // with Sec-WebSocket-Version header filled with values we do accept + m_alog.write(log::alevel::devel, + "BAD REQUEST: no processor for version"); + m_response.set_status(http::status_code::bad_request); + + std::stringstream ss; + std::string sep = ""; + std::vector::const_iterator it; + for (it = versions_supported.begin(); it != versions_supported.end(); it++) + { + ss << sep << *it; + sep = ","; + } + + m_response.replace_header("Sec-WebSocket-Version",ss.str()); + return false; +} + +template +bool connection::process_handshake_request() { + m_alog.write(log::alevel::devel,"process handshake request"); + + if (!processor::is_websocket_handshake(m_request)) { + // this is not a websocket handshake. Process as plain HTTP + m_alog.write(log::alevel::devel,"HTTP REQUEST"); + + // extract URI from request + m_uri = processor::get_uri_from_host( + m_request, + (transport_con_type::is_secure() ? "https" : "http") + ); + + if (!m_uri->get_valid()) { + m_alog.write(log::alevel::devel, + std::string("Bad request: failed to parse uri")); + m_response.set_status(http::status_code::bad_request); + return false; + } + + if (m_http_handler) { + m_http_handler(m_connection_hdl); + } else { + set_status(http::status_code::upgrade_required); + } + + return true; + } + + lib::error_code ec = m_processor->validate_handshake(m_request); + + // Validate: make sure all required elements are present. + if (ec){ + // Not a valid handshake request + m_alog.write(log::alevel::devel, + "BAD REQUEST (724) "+ec.message()); + m_response.set_status(http::status_code::bad_request); + return false; + } + + // Read extension parameters and set up values necessary for the end user + // to complete extension negotiation. + std::pair neg_results; + neg_results = m_processor->negotiate_extensions(m_request); + + if (neg_results.first) { + // There was a fatal error in extension parsing that should result in + // a failed connection attempt. + m_alog.write(log::alevel::devel, + "BAD REQUEST: (737) " + neg_results.first.message()); + m_response.set_status(http::status_code::bad_request); + return false; + } else { + // extension negotiation succeeded, set response header accordingly + // we don't send an empty extensions header because it breaks many + // clients. + if (neg_results.second.size() > 0) { + m_response.replace_header("Sec-WebSocket-Extensions", + neg_results.second); + } + } + + // extract URI from request + m_uri = m_processor->get_uri(m_request); + + + if (!m_uri->get_valid()) { + m_alog.write(log::alevel::devel, + std::string("Bad request: failed to parse uri")); + m_response.set_status(http::status_code::bad_request); + return false; + } + + // extract subprotocols + lib::error_code subp_ec = m_processor->extract_subprotocols(m_request, + m_requested_subprotocols); + + if (subp_ec) { + // should we do anything? + } + + // Ask application to validate the connection + if (!m_validate_handler || m_validate_handler(m_connection_hdl)) { + m_response.set_status(http::status_code::switching_protocols); + + // Write the appropriate response headers based on request and + // processor version + ec = m_processor->process_handshake(m_request,m_subprotocol,m_response); + + if (ec) { + std::stringstream s; + s << "Processing error: " << ec << "(" << ec.message() << ")"; + m_alog.write(log::alevel::devel,s.str()); + + m_response.set_status(http::status_code::internal_server_error); + return false; + } + } else { + // User application has rejected the handshake + m_alog.write(log::alevel::devel,"USER REJECT"); + + // Use Bad Request if the user handler did not provide a more + // specific http response error code. + // TODO: is there a better default? + if (m_response.get_status_code() == http::status_code::uninitialized) { + m_response.set_status(http::status_code::bad_request); + } + + return false; + } + + return true; +} + +template +void connection::send_http_response() { + m_alog.write(log::alevel::devel,"connection send_http_response"); + + if (m_response.get_status_code() == http::status_code::uninitialized) { + m_response.set_status(http::status_code::internal_server_error); + } + + m_response.set_version("HTTP/1.1"); + + // Set server header based on the user agent settings + if (m_response.get_header("Server") == "") { + if (!m_user_agent.empty()) { + m_response.replace_header("Server",m_user_agent); + } else { + m_response.remove_header("Server"); + } + } + + // have the processor generate the raw bytes for the wire (if it exists) + if (m_processor) { + m_handshake_buffer = m_processor->get_raw(m_response); + } else { + // a processor wont exist for raw HTTP responses. + m_handshake_buffer = m_response.raw(); + } + + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,"Raw Handshake response:\n"+m_handshake_buffer); + if (m_response.get_header("Sec-WebSocket-Key3") != "") { + m_alog.write(log::alevel::devel, + utility::to_hex(m_response.get_header("Sec-WebSocket-Key3"))); + } + } + + // write raw bytes + transport_con_type::async_write( + m_handshake_buffer.data(), + m_handshake_buffer.size(), + lib::bind( + &type::handle_send_http_response, + type::get_shared(), + lib::placeholders::_1 + ) + ); +} + +template +void connection::handle_send_http_response( + const lib::error_code& ec) +{ + m_alog.write(log::alevel::devel,"handle_send_http_response"); + + this->atomic_state_check( + istate::PROCESS_HTTP_REQUEST, + "handle_send_http_response must be called from PROCESS_HTTP_REQUEST state" + ); + + if (ec) { + m_elog.write(log::elevel::rerror, + "error in handle_send_http_response: "+ec.message()); + this->terminate(ec); + return; + } + + this->log_open_result(); + + if (m_response.get_status_code() != http::status_code::switching_protocols) + { + if (m_processor) { + // if this was not a websocket connection, we have written + // the expected response and the connection can be closed. + } else { + // this was a websocket connection that ended in an error + std::stringstream s; + s << "Handshake ended with HTTP error: " + << m_response.get_status_code(); + m_elog.write(log::elevel::rerror,s.str()); + } + this->terminate(make_error_code(error::http_connection_ended)); + return; + } + + if (m_handshake_timer) { + m_handshake_timer->cancel(); + m_handshake_timer.reset(); + } + + this->atomic_state_change( + istate::PROCESS_HTTP_REQUEST, + istate::PROCESS_CONNECTION, + session::state::connecting, + session::state::open, + "handle_send_http_response must be called from PROCESS_HTTP_REQUEST state" + ); + + if (m_open_handler) { + m_open_handler(m_connection_hdl); + } + + this->handle_read_frame(lib::error_code(), m_buf_cursor); +} + +template +void connection::send_http_request() { + m_alog.write(log::alevel::devel,"connection send_http_request"); + + // TODO: origin header? + + // Have the protocol processor fill in the appropriate fields based on the + // selected client version + if (m_processor) { + lib::error_code ec; + ec = m_processor->client_handshake_request(m_request,m_uri, + m_requested_subprotocols); + + if (ec) { + m_elog.write(log::elevel::fatal, + "Internal library error: processor error: "+ec.message()); + return; + } + } else { + m_elog.write(log::elevel::fatal, + "Internal library error: missing processor"); + return; + } + + // Unless the user has overridden the user agent, send generic WS++ UA. + if (m_request.get_header("User-Agent") == "") { + if (!m_user_agent.empty()) { + m_request.replace_header("User-Agent",m_user_agent); + } else { + m_request.remove_header("User-Agent"); + } + } + + m_handshake_buffer = m_request.raw(); + + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel, + "Raw Handshake request:\n"+m_handshake_buffer); + } + + m_handshake_timer = transport_con_type::set_timer( + config::timeout_open_handshake, + lib::bind( + &type::handle_open_handshake_timeout, + type::get_shared(), + lib::placeholders::_1 + ) + ); + + transport_con_type::async_write( + m_handshake_buffer.data(), + m_handshake_buffer.size(), + lib::bind( + &type::handle_send_http_request, + type::get_shared(), + lib::placeholders::_1 + ) + ); +} + +template +void connection::handle_send_http_request(const lib::error_code& ec) { + m_alog.write(log::alevel::devel,"handle_send_http_request"); + + this->atomic_state_check( + istate::WRITE_HTTP_REQUEST, + "handle_send_http_request must be called from WRITE_HTTP_REQUEST state" + ); + + if (ec) { + m_elog.write(log::elevel::rerror, + "error in handle_send_http_request: "+ec.message()); + this->terminate(ec); + return; + } + + this->atomic_state_change( + istate::WRITE_HTTP_REQUEST, + istate::READ_HTTP_RESPONSE, + "handle_send_http_request must be called from WRITE_HTTP_REQUEST state" + ); + + transport_con_type::async_read_at_least( + 1, + m_buf, + config::connection_read_buffer_size, + lib::bind( + &type::handle_read_http_response, + type::get_shared(), + lib::placeholders::_1, + lib::placeholders::_2 + ) + ); +} + +template +void connection::handle_read_http_response(const lib::error_code& ec, + size_t bytes_transferred) +{ + m_alog.write(log::alevel::devel,"handle_read_http_response"); + + this->atomic_state_check( + istate::READ_HTTP_RESPONSE, + "handle_read_http_response must be called from READ_HTTP_RESPONSE state" + ); + + if (ec) { + m_elog.write(log::elevel::rerror, + "error in handle_read_http_response: "+ec.message()); + this->terminate(ec); + return; + } + size_t bytes_processed = 0; + // TODO: refactor this to use error codes rather than exceptions + try { + bytes_processed = m_response.consume(m_buf,bytes_transferred); + } catch (http::exception & e) { + m_elog.write(log::elevel::rerror, + std::string("error in handle_read_http_response: ")+e.what()); + this->terminate(make_error_code(error::general)); + return; + } + + m_alog.write(log::alevel::devel,std::string("Raw response: ")+m_response.raw()); + + if (m_response.headers_ready()) { + lib::error_code ec = m_processor->validate_server_handshake_response( + m_request, + m_response + ); + if (ec) { + m_elog.write(log::elevel::rerror, + std::string("Server handshake response was invalid: ")+ + ec.message() + ); + this->terminate(ec); + return; + } + + // response is valid, connection can now be assumed to be open + this->atomic_state_change( + istate::READ_HTTP_RESPONSE, + istate::PROCESS_CONNECTION, + session::state::connecting, + session::state::open, + "handle_read_http_response must be called from READ_HTTP_RESPONSE state" + ); + + if (m_handshake_timer) { + m_handshake_timer->cancel(); + m_handshake_timer.reset(); + } + + this->log_open_result(); + + if (m_open_handler) { + m_open_handler(m_connection_hdl); + } + + // The remaining bytes in m_buf are frame data. Copy them to the + // beginning of the buffer and note the length. They will be read after + // the handshake completes and before more bytes are read. + std::copy(m_buf+bytes_processed,m_buf+bytes_transferred,m_buf); + m_buf_cursor = bytes_transferred-bytes_processed; + + this->handle_read_frame(lib::error_code(), m_buf_cursor); + } else { + transport_con_type::async_read_at_least( + 1, + m_buf, + config::connection_read_buffer_size, + lib::bind( + &type::handle_read_http_response, + type::get_shared(), + lib::placeholders::_1, + lib::placeholders::_2 + ) + ); + } +} + +template +void connection::handle_open_handshake_timeout( + lib::error_code const & ec) +{ + if (ec == transport::error::operation_aborted) { + m_alog.write(log::alevel::devel, + "asio open handshake timer cancelled"); + } else if (ec) { + m_alog.write(log::alevel::devel, + "asio open handle_open_handshake_timeout error: "+ec.message()); + // TODO: ignore or fail here? + } else { + m_alog.write(log::alevel::devel, "asio open handshake timer expired"); + terminate(make_error_code(error::open_handshake_timeout)); + } +} + +template +void connection::handle_close_handshake_timeout( + lib::error_code const & ec) +{ + if (ec == transport::error::operation_aborted) { + m_alog.write(log::alevel::devel, + "asio close handshake timer cancelled"); + } else if (ec) { + m_alog.write(log::alevel::devel, + "asio open handle_close_handshake_timeout error: "+ec.message()); + // TODO: ignore or fail here? + } else { + m_alog.write(log::alevel::devel, "asio close handshake timer expired"); + terminate(make_error_code(error::close_handshake_timeout)); + } +} + +template +void connection::terminate(const lib::error_code & ec) { + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,"connection terminate"); + } + + // Cancel close handshake timer + if (m_handshake_timer) { + m_handshake_timer->cancel(); + m_handshake_timer.reset(); + } + + terminate_status tstat = unknown; + if (ec) { + m_ec = ec; + m_local_close_code = close::status::abnormal_close; + m_local_close_reason = ec.message(); + } + + if (m_state == session::state::connecting) { + m_state = session::state::closed; + tstat = failed; + } else if (m_state != session::state::closed) { + m_state = session::state::closed; + tstat = closed; + } else { + m_alog.write(log::alevel::devel, + "terminate called on connection that was already terminated"); + return; + } + + transport_con_type::async_shutdown( + lib::bind( + &type::handle_terminate, + type::get_shared(), + tstat, + lib::placeholders::_1 + ) + ); +} + +template +void connection::handle_terminate(terminate_status tstat, + const lib::error_code& ec) +{ + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,"connection handle_terminate"); + } + + if (ec) { + // there was an error actually shutting down the connection + m_elog.write(log::elevel::rerror,ec.message()); + } + + // clean shutdown + if (tstat == failed) { + if (m_fail_handler) { + m_fail_handler(m_connection_hdl); + } + log_fail_result(); + } else if (tstat == closed) { + if (m_close_handler) { + m_close_handler(m_connection_hdl); + } + log_close_result(); + } else { + m_elog.write(log::elevel::rerror,"Unknown terminate_status"); + } + + // call the termination handler if it exists + // if it exists it might (but shouldn't) refer to a bad memory location. + // If it does, we don't care and should catch and ignore it. + if (m_termination_handler) { + try { + m_termination_handler(type::get_shared()); + } catch (const std::exception& e) { + m_elog.write(log::elevel::warn, + std::string("termination_handler call failed. Reason was: ") + +e.what()); + } + } +} + +template +void connection::write_frame() { + //m_alog.write(log::alevel::devel,"connection write_frame"); + + { + scoped_lock_type lock(m_write_lock); + + // Check the write flag. If true, there is an outstanding transport + // write already. In this case we just return. The write handler will + // start a new write if the write queue isn't empty. If false, we set + // the write flag and proceed to initiate a transport write. + if (m_write_flag) { + return; + } + + // Get the next message in the queue. This will return an empty + // message if the queue was empty. + m_current_msg = write_pop(); + + if (!m_current_msg) { + return; + } + + // At this point we own the next message to be sent and are + // responsible for holding the write flag until it is successfully + // sent or there is some error + m_write_flag = true; + } + + const std::string& header = m_current_msg->get_header(); + const std::string& payload = m_current_msg->get_payload(); + + m_send_buffer.push_back(transport::buffer(header.c_str(),header.size())); + m_send_buffer.push_back(transport::buffer(payload.c_str(),payload.size())); + + + if (m_alog.static_test(log::alevel::frame_header)) { + if (m_alog.dynamic_test(log::alevel::frame_header)) { + std::stringstream s; + s << "Dispatching write with " << header.size() + << " header bytes and " << payload.size() + << " payload bytes" << std::endl; + m_alog.write(log::alevel::frame_header,s.str()); + m_alog.write(log::alevel::frame_header,"Header: "+utility::to_hex(header)); + } + } + if (m_alog.static_test(log::alevel::frame_payload)) { + if (m_alog.dynamic_test(log::alevel::frame_payload)) { + m_alog.write(log::alevel::frame_payload,"Payload: "+utility::to_hex(payload)); + } + } + + transport_con_type::async_write( + m_send_buffer, + lib::bind( + &type::handle_write_frame, + type::get_shared(), + m_current_msg->get_terminal(), + lib::placeholders::_1 + ) + ); +} + +template +void connection::handle_write_frame(bool terminate, + const lib::error_code& ec) +{ + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,"connection handle_write_frame"); + } + + m_send_buffer.clear(); + m_current_msg.reset(); + + if (ec) { + m_elog.write(log::elevel::fatal,"error in handle_write_frame: "+ec.message()); + this->terminate(ec); + return; + } + + if (terminate) { + this->terminate(lib::error_code()); + return; + } + + bool needs_writing = false; + { + scoped_lock_type lock(m_write_lock); + + // release write flag + m_write_flag = false; + + needs_writing = !m_send_queue.empty(); + } + + if (needs_writing) { + transport_con_type::dispatch(lib::bind( + &type::write_frame, + type::get_shared() + )); + } +} + +template +void connection::atomic_state_change(istate_type req, + istate_type dest, std::string msg) +{ + scoped_lock_type lock(m_connection_state_lock); + + if (m_internal_state != req) { + throw error::make_error_code(error::invalid_state); + //throw exception(msg,error::INVALID_STATE); + } + + m_internal_state = dest; +} + +template +void connection::atomic_state_change( + istate_type internal_req, istate_type internal_dest, + session::state::value external_req, session::state::value external_dest, + std::string msg) +{ + scoped_lock_type lock(m_connection_state_lock); + + if (m_internal_state != internal_req || m_state != external_req) { + throw error::make_error_code(error::invalid_state); + //throw exception(msg,error::INVALID_STATE); + } + + m_internal_state = internal_dest; + m_state = external_dest; +} + +template +void connection::atomic_state_check(istate_type req, + std::string msg) +{ + scoped_lock_type lock(m_connection_state_lock); + + if (m_internal_state != req) { + throw error::make_error_code(error::invalid_state); + //throw exception(msg,error::INVALID_STATE); + } +} + +template +const std::vector& connection::get_supported_versions() const +{ + return versions_supported; +} + +template +void connection::process_control_frame(typename + config::message_type::ptr msg) +{ + m_alog.write(log::alevel::devel,"process_control_frame"); + + frame::opcode::value op = msg->get_opcode(); + lib::error_code ec; + + std::stringstream s; + s << "Control frame received with opcode " << op; + m_alog.write(log::alevel::control,s.str()); + + if (m_state == session::state::closed) { + m_elog.write(log::elevel::warn,"got frame in state closed"); + return; + } + if (op != frame::opcode::CLOSE && m_state != session::state::open) { + m_elog.write(log::elevel::warn,"got non-close frame in state closing"); + return; + } + + if (op == frame::opcode::PING) { + bool pong = true; + + if (m_ping_handler) { + pong = m_ping_handler(m_connection_hdl, msg->get_payload()); + } + + if (pong) { + this->pong(msg->get_payload(),ec); + if (ec) { + m_elog.write(log::elevel::devel, + "Failed to send response pong: "+ec.message()); + } + } + } else if (op == frame::opcode::PONG) { + if (m_pong_handler) { + m_pong_handler(m_connection_hdl, msg->get_payload()); + } + if (m_ping_timer) { + m_ping_timer->cancel(); + } + } else if (op == frame::opcode::CLOSE) { + m_alog.write(log::alevel::devel,"got close frame"); + // record close code and reason somewhere + + m_remote_close_code = close::extract_code(msg->get_payload(),ec); + if (ec) { + std::stringstream s; + if (config::drop_on_protocol_error) { + s << "Received invalid close code " << m_remote_close_code + << " dropping connection per config."; + m_elog.write(log::elevel::devel,s.str()); + this->terminate(ec); + } else { + s << "Received invalid close code " << m_remote_close_code + << " sending acknowledgement and closing"; + m_elog.write(log::elevel::devel,s.str()); + ec = send_close_ack(close::status::protocol_error, + "Invalid close code"); + if (ec) { + m_elog.write(log::elevel::devel, + "send_close_ack error: "+ec.message()); + } + } + return; + } + + m_remote_close_reason = close::extract_reason(msg->get_payload(),ec); + if (ec) { + if (config::drop_on_protocol_error) { + m_elog.write(log::elevel::devel, + "Received invalid close reason. Dropping connection per config"); + this->terminate(ec); + } else { + m_elog.write(log::elevel::devel, + "Received invalid close reason. Sending acknowledgement and closing"); + ec = send_close_ack(close::status::protocol_error, + "Invalid close reason"); + if (ec) { + m_elog.write(log::elevel::devel, + "send_close_ack error: "+ec.message()); + } + } + return; + } + + if (m_state == session::state::open) { + std::stringstream s; + s << "Received close frame with code " << m_remote_close_code + << " and reason " << m_remote_close_reason; + m_alog.write(log::alevel::devel,s.str()); + + ec = send_close_ack(); + if (ec) { + m_elog.write(log::elevel::devel, + "send_close_ack error: "+ec.message()); + } + } else if (m_state == session::state::closing && !m_was_clean) { + // ack of our close + m_alog.write(log::alevel::devel,"Got acknowledgement of close"); + + m_was_clean = true; + + // If we are a server terminate the connection now. Clients should + // leave the connection open to give the server an opportunity to + // initiate the TCP close. The client's timer will handle closing + // its side of the connection if the server misbehaves. + // + // TODO: different behavior if the underlying transport doesn't + // support timers? + if (m_is_server) { + terminate(lib::error_code()); + } + } else { + // spurious, ignore + m_elog.write(log::elevel::devel,"Got close frame in wrong state"); + } + } else { + // got an invalid control opcode + m_elog.write(log::elevel::devel,"Got control frame with invalid opcode"); + // initiate protocol error shutdown + } +} + +template +lib::error_code connection::send_close_ack(close::status::value code, + const std::string &reason) +{ + return send_close_frame(code,reason,true,m_is_server); +} + +template +lib::error_code connection::send_close_frame(close::status::value code, + const std::string &reason, bool ack, bool terminal) +{ + m_alog.write(log::alevel::devel,"send_close_frame"); + // If silent close is set, respect it and blank out close information + // Otherwise use whatever has been specified in the parameters. If + // parameters specifies close::status::blank then determine what to do + // based on whether or not this is an ack. If it is not an ack just + // send blank info. If it is an ack then echo the close information from + // the remote endpoint. + if (config::silent_close) { + m_alog.write(log::alevel::devel,"closing silently"); + m_local_close_code = close::status::no_status; + m_local_close_reason = ""; + } else if (code != close::status::blank) { + m_alog.write(log::alevel::devel,"closing with specified codes"); + m_local_close_code = code; + m_local_close_reason = reason; + } else if (!ack) { + m_alog.write(log::alevel::devel,"closing with no status code"); + m_local_close_code = close::status::no_status; + m_local_close_reason = ""; + } else if (m_remote_close_code == close::status::no_status) { + m_alog.write(log::alevel::devel, + "acknowledging a no-status close with normal code"); + m_local_close_code = close::status::normal; + m_local_close_reason = ""; + } else { + m_alog.write(log::alevel::devel,"acknowledging with remote codes"); + m_local_close_code = m_remote_close_code; + m_local_close_reason = m_remote_close_reason; + } + + std::stringstream s; + s << "Closing with code: " << m_local_close_code << ", and reason: " + << m_local_close_reason; + m_alog.write(log::alevel::devel,s.str()); + + message_ptr msg = m_msg_manager->get_message(); + if (!msg) { + return error::make_error_code(error::no_outgoing_buffers); + } + + lib::error_code ec = m_processor->prepare_close(m_local_close_code, + m_local_close_reason,msg); + if (ec) { + return ec; + } + + // Messages flagged terminal will result in the TCP connection being dropped + // after the message has been written. This is typically used when servers + // send an ack and when any endpoint encounters a protocol error + if (terminal) { + msg->set_terminal(true); + } + + m_state = session::state::closing; + + if (ack) { + m_was_clean = true; + } + + // Start a timer so we don't wait forever for the acknowledgement close + // frame + m_handshake_timer = transport_con_type::set_timer( + config::timeout_close_handshake, + lib::bind( + &type::handle_close_handshake_timeout, + type::get_shared(), + lib::placeholders::_1 + ) + ); + + bool needs_writing = false; + { + scoped_lock_type lock(m_write_lock); + write_push(msg); + needs_writing = !m_write_flag && !m_send_queue.empty(); + } + + if (needs_writing) { + transport_con_type::dispatch(lib::bind( + &type::write_frame, + type::get_shared() + )); + } + + return lib::error_code(); +} + +template +typename connection::processor_ptr +connection::get_processor(int version) const { + // TODO: allow disabling certain versions + switch (version) { + case 0: + return processor_ptr( + new processor::hybi00( + transport_con_type::is_secure(), + m_is_server, + m_msg_manager + ) + ); + break; + case 7: + return processor_ptr( + new processor::hybi07( + transport_con_type::is_secure(), + m_is_server, + m_msg_manager, + m_rng + ) + ); + break; + case 8: + return processor_ptr( + new processor::hybi08( + transport_con_type::is_secure(), + m_is_server, + m_msg_manager, + m_rng + ) + ); + break; + case 13: + return processor_ptr( + new processor::hybi13( + transport_con_type::is_secure(), + m_is_server, + m_msg_manager, + m_rng + ) + ); + break; + default: + return processor_ptr(); + } +} + +template +void connection::write_push(typename config::message_type::ptr msg) +{ + if (!msg) { + return; + } + + m_send_buffer_size += msg->get_payload().size(); + m_send_queue.push(msg); + + std::stringstream s; + s << "write_push: message count: " << m_send_queue.size() + << " buffer size: " << m_send_buffer_size; + m_alog.write(log::alevel::devel,s.str()); +} + +template +typename config::message_type::ptr connection::write_pop() +{ + message_ptr msg; + + if (m_send_queue.empty()) { + return msg; + } + + msg = m_send_queue.front(); + + m_send_buffer_size -= msg->get_payload().size(); + m_send_queue.pop(); + + std::stringstream s; + s << "write_pop: message count: " << m_send_queue.size() + << " buffer size: " << m_send_buffer_size; + m_alog.write(log::alevel::devel,s.str()); + return msg; +} + +template +void connection::log_open_result() +{ + std::stringstream s; + + int version; + if (!processor::is_websocket_handshake(m_request)) { + version = -1; + } else { + version = processor::get_websocket_version(m_request); + } + + // Connection Type + s << (version == -1 ? "HTTP" : "WebSocket") << " Connection "; + + // Remote endpoint address + s << transport_con_type::get_remote_endpoint() << " "; + + // Version string if WebSocket + if (version != -1) { + s << "v" << version << " "; + } + + // User Agent + std::string ua = m_request.get_header("User-Agent"); + if (ua == "") { + s << "\"\" "; + } else { + // check if there are any quotes in the user agent + s << "\"" << utility::string_replace_all(ua,"\"","\\\"") << "\" "; + } + + // URI + s << (m_uri ? m_uri->get_resource() : "NULL") << " "; + + // Status code + s << m_response.get_status_code(); + + m_alog.write(log::alevel::connect,s.str()); +} + +template +void connection::log_close_result() +{ + std::stringstream s; + + s << "Disconnect " + << "close local:[" << m_local_close_code + << (m_local_close_reason == "" ? "" : ","+m_local_close_reason) + << "] remote:[" << m_remote_close_code + << (m_remote_close_reason == "" ? "" : ","+m_remote_close_reason) << "]"; + + m_alog.write(log::alevel::disconnect,s.str()); +} + +template +void connection::log_fail_result() +{ + // TODO: include more information about the connection? + // should this be filed under connect rather than disconnect? + m_alog.write(log::alevel::disconnect,"Failed: "+m_ec.message()); +} + +} // namespace websocketpp + +#endif // WEBSOCKETPP_CONNECTION_IMPL_HPP diff --git a/src/third_party/websocketpp/websocketpp/impl/endpoint_impl.hpp b/src/third_party/websocketpp/websocketpp/impl/endpoint_impl.hpp new file mode 100644 index 00000000..2a7c82de --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/impl/endpoint_impl.hpp @@ -0,0 +1,235 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_ENDPOINT_IMPL_HPP +#define WEBSOCKETPP_ENDPOINT_IMPL_HPP + +namespace websocketpp { + +template +typename endpoint::connection_ptr +endpoint::create_connection() { + m_alog.write(log::alevel::devel,"create_connection"); + //scoped_lock_type lock(m_state_lock); + + /*if (m_state == STOPPING || m_state == STOPPED) { + return connection_ptr(); + }*/ + + // Create a connection on the heap and manage it using a shared pointer + connection_ptr con(new connection_type(m_is_server,m_user_agent,m_alog, + m_elog, m_rng)); + + connection_weak_ptr w(con); + + // Create a weak pointer on the heap using that shared_ptr. + // Cast that weak pointer to void* and manage it using another shared_ptr + // connection_hdl hdl(reinterpret_cast(new connection_weak_ptr(con))); + + // con->set_handle(hdl); + + // + con->set_handle(w); + + // Copy default handlers from the endpoint + con->set_open_handler(m_open_handler); + con->set_close_handler(m_close_handler); + con->set_fail_handler(m_fail_handler); + con->set_ping_handler(m_ping_handler); + con->set_pong_handler(m_pong_handler); + con->set_pong_timeout_handler(m_pong_timeout_handler); + con->set_interrupt_handler(m_interrupt_handler); + con->set_http_handler(m_http_handler); + con->set_validate_handler(m_validate_handler); + con->set_message_handler(m_message_handler); + + con->set_termination_handler( + lib::bind( + &type::remove_connection, + this, + lib::placeholders::_1 + ) + ); + + lib::error_code ec; + + ec = transport_type::init(con); + if (ec) { + m_elog.write(log::elevel::fatal,ec.message()); + return connection_ptr(); + } + + scoped_lock_type lock(m_mutex); + m_connections.insert(con); + + return con; +} + +template +void endpoint::interrupt(connection_hdl hdl, + lib::error_code & ec) +{ + connection_ptr con = get_con_from_hdl(hdl,ec); + if (ec) {return;} + + m_alog.write(log::alevel::devel,"Interrupting connection"); + + ec = con->interrupt(); +} + +template +void endpoint::interrupt(connection_hdl hdl) { + lib::error_code ec; + interrupt(hdl,ec); + if (ec) { throw ec; } +} + +template +void endpoint::send(connection_hdl hdl, std::string const & + payload, frame::opcode::value op, lib::error_code & ec) +{ + connection_ptr con = get_con_from_hdl(hdl,ec); + if (ec) {return;} + + ec = con->send(payload,op); +} + +template +void endpoint::send(connection_hdl hdl, std::string const & + payload, frame::opcode::value op) +{ + lib::error_code ec; + send(hdl,payload,op,ec); + if (ec) { throw ec; } +} + +template +void endpoint::send(connection_hdl hdl, void const * payload, + size_t len, frame::opcode::value op, lib::error_code & ec) +{ + connection_ptr con = get_con_from_hdl(hdl,ec); + if (ec) {return;} + ec = con->send(payload,len,op); +} + +template +void endpoint::send(connection_hdl hdl, void const * payload, + size_t len, frame::opcode::value op) +{ + lib::error_code ec; + send(hdl,payload,len,op,ec); + if (ec) { throw ec; } +} + +template +void endpoint::send(connection_hdl hdl, message_ptr msg, + lib::error_code & ec) +{ + connection_ptr con = get_con_from_hdl(hdl,ec); + if (ec) {return;} + ec = con->send(msg); +} + +template +void endpoint::send(connection_hdl hdl, message_ptr msg) { + lib::error_code ec; + send(hdl,msg,ec); + if (ec) { throw ec; } +} + +template +void endpoint::close(connection_hdl hdl, close::status::value + const code, std::string const & reason, + lib::error_code & ec) +{ + connection_ptr con = get_con_from_hdl(hdl,ec); + if (ec) {return;} + con->close(code,reason,ec); +} + +template +void endpoint::close(connection_hdl hdl, close::status::value + const code, std::string const & reason) +{ + lib::error_code ec; + close(hdl,code,reason,ec); + if (ec) { throw ec; } +} + +template +void endpoint::ping(connection_hdl hdl, std::string const & + payload, lib::error_code & ec) +{ + connection_ptr con = get_con_from_hdl(hdl,ec); + if (ec) {return;} + con->ping(payload,ec); +} + +template +void endpoint::ping(connection_hdl hdl, std::string const & + payload) +{ + lib::error_code ec; + ping(hdl,payload,ec); + if (ec) { throw ec; } +} + +template +void endpoint::pong(connection_hdl hdl, std::string const & + payload, lib::error_code & ec) +{ + connection_ptr con = get_con_from_hdl(hdl,ec); + if (ec) {return;} + con->pong(payload,ec); +} + +template +void endpoint::pong(connection_hdl hdl, std::string const & + payload) +{ + lib::error_code ec; + pong(hdl,payload,ec); + if (ec) { throw ec; } +} + +template +void endpoint::remove_connection(connection_ptr con) { + std::stringstream s; + s << "remove_connection. New count: " << m_connections.size()-1; + m_alog.write(log::alevel::devel,s.str()); + + scoped_lock_type lock(m_mutex); + + // unregister the termination handler + con->set_termination_handler(termination_handler()); + + m_connections.erase(con); +} + +} // namespace websocketpp + +#endif // WEBSOCKETPP_ENDPOINT_IMPL_HPP diff --git a/src/third_party/websocketpp/websocketpp/impl/utilities_impl.hpp b/src/third_party/websocketpp/websocketpp/impl/utilities_impl.hpp new file mode 100644 index 00000000..368b8681 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/impl/utilities_impl.hpp @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_UTILITIES_IMPL_HPP +#define WEBSOCKETPP_UTILITIES_IMPL_HPP + +namespace websocketpp { +namespace utility { + +inline std::string to_lower(std::string const & in) { + std::string out = in; + std::transform(out.begin(),out.end(),out.begin(),::tolower); + return out; +} + +inline std::string to_hex(const std::string& input) { + std::string output; + std::string hex = "0123456789ABCDEF"; + + for (size_t i = 0; i < input.size(); i++) { + output += hex[(input[i] & 0xF0) >> 4]; + output += hex[input[i] & 0x0F]; + output += " "; + } + + return output; +} + +inline std::string to_hex(const uint8_t* input,size_t length) { + std::string output; + std::string hex = "0123456789ABCDEF"; + + for (size_t i = 0; i < length; i++) { + output += hex[(input[i] & 0xF0) >> 4]; + output += hex[input[i] & 0x0F]; + output += " "; + } + + return output; +} + +inline std::string to_hex(const char* input,size_t length) { + return to_hex(reinterpret_cast(input),length); +} + +inline std::string string_replace_all(std::string subject, const std::string& + search, const std::string& replace) +{ + size_t pos = 0; + while((pos = subject.find(search, pos)) != std::string::npos) { + subject.replace(pos, search.length(), replace); + pos += replace.length(); + } + return subject; +} + +} // namespace utility +} // namespace websocketpp + +#endif // WEBSOCKETPP_UTILITIES_IMPL_HPP diff --git a/src/third_party/websocketpp/websocketpp/logger/basic.hpp b/src/third_party/websocketpp/websocketpp/logger/basic.hpp new file mode 100644 index 00000000..678c7246 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/logger/basic.hpp @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_LOGGER_BASIC_HPP +#define WEBSOCKETPP_LOGGER_BASIC_HPP + +/* Need a way to print a message to the log + * + * - timestamps + * - channels + * - thread safe + * - output to stdout or file + * - selective output channels, both compile time and runtime + * - named channels + * - ability to test whether a log message will be printed at compile time + * + */ + +#include +#include +#include + +#include +#include +#include + +namespace websocketpp { +namespace log { + +/// Basic logger that outputs to an ostream +template +class basic { +public: + basic(std::ostream * out = &std::cout) + : m_static_channels(0xffffffff) + , m_dynamic_channels(0) + , m_out(out) {} + + basic(level c, std::ostream * out = &std::cout) + : m_static_channels(c) + , m_dynamic_channels(0) + , m_out(out) {} + + void set_ostream(std::ostream * out = &std::cout) { + m_out = out; + } + + void set_channels(level channels) { + if (channels == names::none) { + clear_channels(names::all); + return; + } + + scoped_lock_type lock(m_lock); + m_dynamic_channels |= (channels & m_static_channels); + } + + void clear_channels(level channels) { + scoped_lock_type lock(m_lock); + m_dynamic_channels &= ~channels; + } + + void write(level channel, std::string const & msg) { + scoped_lock_type lock(m_lock); + if (!this->dynamic_test(channel)) { return; } + *m_out << "[" << timestamp << "] " + << "[" << names::channel_name(channel) << "] " + << msg << "\n"; + m_out->flush(); + } + + void write(level channel, char const * msg) { + scoped_lock_type lock(m_lock); + if (!this->dynamic_test(channel)) { return; } + *m_out << "[" << timestamp << "] " + << "[" << names::channel_name(channel) << "] " + << msg << "\n"; + m_out->flush(); + } + + _WEBSOCKETPP_CONSTEXPR_TOKEN_ bool static_test(level channel) const { + return ((channel & m_static_channels) != 0); + } + + bool dynamic_test(level channel) { + return ((channel & m_dynamic_channels) != 0); + } +private: + typedef typename concurrency::scoped_lock_type scoped_lock_type; + typedef typename concurrency::mutex_type mutex_type; + + // The timestamp does not include the time zone, because on Windows with the + // default registry settings, the time zone would be written out in full, + // which would be obnoxiously verbose. + // + // TODO: find a workaround for this or make this format user settable + static std::ostream & timestamp(std::ostream & os) { + std::time_t t = std::time(NULL); + std::tm* lt = std::localtime(&t); + #ifdef _WEBSOCKETPP_CPP11_CHRONO_ + return os << std::put_time(lt,"%Y-%m-%d %H:%M:%S"); + #else // Falls back to strftime, which requires a temporary copy of the string. + char buffer[20]; + std::strftime(buffer,sizeof(buffer),"%Y-%m-%d %H:%M:%S",lt); + return os << buffer; + #endif + } + + mutex_type m_lock; + + level const m_static_channels; + level m_dynamic_channels; + std::ostream * m_out; +}; + +} // log +} // websocketpp + +#endif // WEBSOCKETPP_LOGGER_BASIC_HPP diff --git a/src/third_party/websocketpp/websocketpp/logger/levels.hpp b/src/third_party/websocketpp/websocketpp/logger/levels.hpp new file mode 100644 index 00000000..2c0e92c9 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/logger/levels.hpp @@ -0,0 +1,173 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_LOGGER_LEVELS_HPP +#define WEBSOCKETPP_LOGGER_LEVELS_HPP + +#include + +namespace websocketpp { +namespace log { + +/// Type of a channel package +typedef uint32_t level; + +/// Package of log levels for logging errors +struct elevel { + /// Special aggregate value representing "no levels" + static level const none = 0x0; + /// Low level debugging information (warning: very chatty) + static level const devel = 0x1; + /// Information about unusual system states or other minor internal library + /// problems, less chatty than devel. + static level const library = 0x2; + /// Information about minor configuration problems or additional information + /// about other warnings. + static level const info = 0x4; + /// Information about important problems not severe enough to terminate + /// connections. + static level const warn = 0x8; + /// Recoverable error. Recovery may mean cleanly closing the connection with + /// an appropriate error code to the remote endpoint. + static level const rerror = 0x10; + /// Unrecoverable error. This error will trigger immediate unclean + /// termination of the connection or endpoint. + static level const fatal = 0x20; + /// Special aggregate value representing "all levels" + static level const all = 0xffffffff; + + /// Get the textual name of a channel given a channel id + /** + * The id must be that of a single channel. Passing an aggregate channel + * package results in undefined behavior. + * + * @param channel The channel id to look up. + * + * @return The name of the specified channel. + */ + static char const * channel_name(level channel) { + switch(channel) { + case devel: + return "devel"; + case library: + return "library"; + case info: + return "info"; + case warn: + return "warning"; + case rerror: + return "error"; + case fatal: + return "fatal"; + default: + return "unknown"; + } + } +}; + +/// Package of log levels for logging access events +struct alevel { + /// Special aggregate value representing "no levels" + static level const none = 0x0; + /// Information about new connections + /** + * One line for each new connection that includes a host of information + * including: the remote address, websocket version, requested resource, + * http code, remote user agent + */ + static level const connect = 0x1; + /// One line for each closed connection. Includes closing codes and reasons. + static level const disconnect = 0x2; + /// One line per control frame + static level const control = 0x4; + /// One line per frame, includes the full frame header + static level const frame_header = 0x8; + /// One line per frame, includes the full message payload (warning: chatty) + static level const frame_payload = 0x10; + /// Reserved + static level const message_header = 0x20; + /// Reserved + static level const message_payload = 0x40; + /// Reserved + static level const endpoint = 0x80; + /// Extra information about opening handshakes + static level const debug_handshake = 0x100; + /// Extra information about closing handshakes + static level const debug_close = 0x200; + /// Development messages (warning: very chatty) + static level const devel = 0x400; + /// Special channel for application specific logs. Not used by the library. + static level const app = 0x800; + /// Special aggregate value representing "all levels" + static level const all = 0xffffffff; + + /// Get the textual name of a channel given a channel id + /** + * Get the textual name of a channel given a channel id. The id must be that + * of a single channel. Passing an aggregate channel package results in + * undefined behavior. + * + * @param channel The channelid to look up. + * + * @return The name of the specified channel. + */ + static char const * channel_name(level channel) { + switch(channel) { + case connect: + return "connect"; + case disconnect: + return "disconnect"; + case control: + return "control"; + case frame_header: + return "frame_header"; + case frame_payload: + return "frame_payload"; + case message_header: + return "message_header"; + case message_payload: + return "message_payload"; + case endpoint: + return "endpoint"; + case debug_handshake: + return "debug_handshake"; + case debug_close: + return "debug_close"; + case devel: + return "devel"; + case app: + return "application"; + default: + return "unknown"; + } + } +}; + +} // logger +} // websocketpp + +#endif //WEBSOCKETPP_LOGGER_LEVELS_HPP diff --git a/src/third_party/websocketpp/websocketpp/logger/stub.hpp b/src/third_party/websocketpp/websocketpp/logger/stub.hpp new file mode 100644 index 00000000..4608d35b --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/logger/stub.hpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_LOGGER_STUB_HPP +#define WEBSOCKETPP_LOGGER_STUB_HPP + +#include + +#include +#include + +namespace websocketpp { +namespace log { + +/// Stub logger that ignores all input +class stub { +public: + explicit stub(std::ostream * out) {} + stub(level c, std::ostream * out) {} + _WEBSOCKETPP_CONSTEXPR_TOKEN_ stub() {} + + void set_channels(level channels) {} + void clear_channels(level channels) {} + + void write(level channel, std::string const & msg) {} + void write(level channel, char const * msg) {} + + _WEBSOCKETPP_CONSTEXPR_TOKEN_ bool static_test(level channel) const { + return false; + } + bool dynamic_test(level channel) { + return false; + } +}; + +} // log +} // websocketpp + +#endif // WEBSOCKETPP_LOGGER_STUB_HPP diff --git a/src/third_party/websocketpp/websocketpp/message_buffer/alloc.hpp b/src/third_party/websocketpp/websocketpp/message_buffer/alloc.hpp new file mode 100644 index 00000000..5ac0ed43 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/message_buffer/alloc.hpp @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_MESSAGE_BUFFER_ALLOC_HPP +#define WEBSOCKETPP_MESSAGE_BUFFER_ALLOC_HPP + +#include +#include + +namespace websocketpp { +namespace message_buffer { +namespace alloc { + +/// A connection message manager that allocates a new message for each +/// request. +template +class con_msg_manager + : public lib::enable_shared_from_this > +{ +public: + typedef con_msg_manager type; + typedef lib::shared_ptr ptr; + typedef lib::weak_ptr weak_ptr; + + typedef typename message::ptr message_ptr; + + /// Get an empty message buffer + /** + * @return A shared pointer to an empty new message + */ + message_ptr get_message() { + return message_ptr(new message(type::shared_from_this())); + } + + /// Get a message buffer with specified size and opcode + /** + * @param op The opcode to use + * @param size Minimum size in bytes to request for the message payload. + * + * @return A shared pointer to a new message with specified size. + */ + message_ptr get_message(frame::opcode::value op,size_t size) { + return message_ptr(new message(type::shared_from_this(),op,size)); + } + + /// Recycle a message + /** + * This method shouldn't be called. If it is, return false to indicate an + * error. The rest of the method recycle chain should notice this and free + * the memory. + * + * @param msg The message to be recycled. + * + * @return true if the message was successfully recycled, false otherwse. + */ + bool recycle(message * msg) { + return false; + } +}; + +/// An endpoint message manager that allocates a new manager for each +/// connection. +template +class endpoint_msg_manager { +public: + typedef typename con_msg_manager::ptr con_msg_man_ptr; + + /// Get a pointer to a connection message manager + /** + * @return A pointer to the requested connection message manager. + */ + con_msg_man_ptr get_manager() const { + return con_msg_man_ptr(new con_msg_manager()); + } +}; + +} // namespace alloc +} // namespace message_buffer +} // namespace websocketpp + +#endif // WEBSOCKETPP_MESSAGE_BUFFER_ALLOC_HPP diff --git a/src/third_party/websocketpp/websocketpp/message_buffer/message.hpp b/src/third_party/websocketpp/websocketpp/message_buffer/message.hpp new file mode 100644 index 00000000..e7839c8a --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/message_buffer/message.hpp @@ -0,0 +1,340 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_MESSAGE_BUFFER_MESSAGE_HPP +#define WEBSOCKETPP_MESSAGE_BUFFER_MESSAGE_HPP + +#include +#include + +#include + +namespace websocketpp { +namespace message_buffer { + +/* # message: + * object that stores a message while it is being sent or received. Contains + * the message payload itself, the message header, the extension data, and the + * opcode. + * + * # connection_message_manager: + * An object that manages all of the message_buffers associated with a given + * connection. Impliments the get_message_buffer(size) method that returns + * a message buffer at least size bytes long. + * + * Message buffers are reference counted with shared ownership semantics. Once + * requested from the manager the requester and it's associated downstream code + * may keep a pointer to the message indefinitely at a cost of extra resource + * usage. Once the reference count drops to the point where the manager is the + * only reference the messages is recycled using whatever method is implemented + * in the manager. + * + * # endpoint_message_manager: + * An object that manages connection_message_managers. Impliments the + * get_message_manager() method. This is used once by each connection to + * request the message manager that they are supposed to use to manage message + * buffers for their own use. + * + * TYPES OF CONNECTION_MESSAGE_MANAGERS + * - allocate a message with the exact size every time one is requested + * - maintain a pool of pre-allocated messages and return one when needed. + * Recycle previously used messages back into the pool + * + * TYPES OF ENDPOINT_MESSAGE_MANAGERS + * - allocate a new connection manager for each connection. Message pools + * become connection specific. This increases memory usage but improves + * concurrency. + * - allocate a single connection manager and share a pointer to it with all + * connections created by this endpoint. The message pool will be shared + * among all connections, improving memory usage and performance at the cost + * of reduced concurrency + */ + + +/// Represents a buffer for a single WebSocket message. +/** + * + * + */ +template class con_msg_manager> +class message { +public: + typedef lib::shared_ptr ptr; + + typedef con_msg_manager con_msg_man_type; + typedef typename con_msg_man_type::ptr con_msg_man_ptr; + typedef typename con_msg_man_type::weak_ptr con_msg_man_weak_ptr; + + /// Construct an empty message + /** + * Construct an empty message + */ + message(const con_msg_man_ptr manager) + : m_manager(manager) + , m_prepared(false) + , m_fin(true) + , m_terminal(false) + , m_compressed(false) {} + + /// Construct a message and fill in some values + /** + * + */ + message(const con_msg_man_ptr manager, frame::opcode::value op, size_t size = 128) + : m_manager(manager) + , m_opcode(op) + , m_prepared(false) + , m_fin(true) + , m_terminal(false) + , m_compressed(false) + { + m_payload.reserve(size); + } + + /// Return whether or not the message has been prepared for sending + /** + * The prepared flag indicates that the message has been prepared by a + * websocket protocol processor and is ready to be written to the wire. + * + * @return whether or not the message has been prepared for sending + */ + bool get_prepared() const { + return m_prepared; + } + + /// Set or clear the flag that indicates that the message has been prepared + /** + * This flag should not be set by end user code without a very good reason. + * + * @param value The value to set the prepared flag to + */ + void set_prepared(bool value) { + m_prepared = value; + } + + /// Return whether or not the message is flagged as compressed + /** + * @return whether or not the message is/should be compressed + */ + bool get_compressed() const { + return m_compressed; + } + + /// Set or clear the compression flag + /** + * The compression flag is used to indicate whether or not the message is + * or should be compressed. Compression is not guaranteed. Both endpoints + * must support a compression extension and the connection must have had + * that extension negotiated in its handshake. + * + * @param value The value to set the compressed flag to + */ + void set_compressed(bool value) { + m_compressed = value; + } + + /// Get whether or not the message is terminal + /** + * Messages can be flagged as terminal, which results in the connection + * being close after they are written rather than the implementation going + * on to the next message in the queue. This is typically used internally + * for close messages only. + * + * @return Whether or not this message is marked terminal + */ + bool get_terminal() const { + return m_terminal; + } + + /// Set the terminal flag + /** + * This flag should not be set by end user code without a very good reason. + * + * @see get_terminal() + * + * @param value The value to set the terminal flag to. + */ + void set_terminal(bool value) { + m_terminal = value; + } + /// Read the fin bit + /** + * A message with the fin bit set will be sent as the last message of its + * sequence. A message with the fin bit cleared will require subsequent + * frames of opcode continuation until one of them has the fin bit set. + * + * The remote end likely will not deliver any bytes until the frame with the fin + * bit set has been received. + * + * @return Whether or not the fin bit is set + */ + bool get_fin() const { + return m_fin; + } + + /// Set the fin bit + /** + * @see get_fin for a more detailed explaination of the fin bit + * + * @param value The value to set the fin bit to. + */ + void set_fin(bool value) { + m_fin = value; + } + + /// Return the message opcode + frame::opcode::value get_opcode() const { + return m_opcode; + } + + /// Set the opcode + void set_opcode(frame::opcode::value op) { + m_opcode = op; + } + + /// Return the prepared frame header + /** + * This value is typically set by a websocket protocol processor + * and shouldn't be tampered with. + */ + std::string const & get_header() const { + return m_header; + } + + /// Set prepared frame header + /** + * Under normal circumstances this should not be called by end users + * + * @param header A string to set the header to. + */ + void set_header(std::string const & header) { + m_header = header; + } + + std::string const & get_extension_data() const { + return m_extension_data; + } + + /// Get a reference to the payload string + /** + * @return A const reference to the message's payload string + */ + std::string const & get_payload() const { + return m_payload; + } + + /// Get a non-const reference to the payload string + /** + * @return A reference to the message's payload string + */ + std::string & get_raw_payload() { + return m_payload; + } + + /// Set payload data + /** + * Set the message buffer's payload to the given value. + * + * @param payload A string to set the payload to. + */ + void set_payload(std::string const & payload) { + m_payload = payload; + } + + /// Set payload data + /** + * Set the message buffer's payload to the given value. + * + * @param payload A pointer to a data array to set to. + * @param len The length of new payload in bytes. + */ + void set_payload(void const * payload, size_t len) { + m_payload.reserve(len); + char const * pl = static_cast(payload); + m_payload.assign(pl, pl + len); + } + + /// Append payload data + /** + * Append data to the message buffer's payload. + * + * @param payload A string containing the data array to append. + */ + void append_payload(std::string const & payload) { + m_payload.append(payload); + } + + /// Append payload data + /** + * Append data to the message buffer's payload. + * + * @param payload A pointer to a data array to append + * @param len The length of payload in bytes + */ + void append_payload(void const * payload, size_t len) { + m_payload.reserve(m_payload.size()+len); + m_payload.append(static_cast(payload),len); + } + + /// Recycle the message + /** + * A request to recycle this message was received. Forward that request to + * the connection message manager for processing. Errors and exceptions + * from the manager's recycle member function should be passed back up the + * call chain. The caller to message::recycle will deal with them. + * + * Recycle must *only* be called by the message shared_ptr's destructor. + * Once recycled successfully, ownership of the memory has been passed to + * another system and must not be accessed again. + * + * @return true if the message was successfully recycled, false otherwise. + */ + bool recycle() { + con_msg_man_ptr shared = m_manager.lock(); + + if (shared) { + return shared->recycle(this); + } else { + return false; + } + } +private: + con_msg_man_weak_ptr m_manager; + std::string m_header; + std::string m_extension_data; + std::string m_payload; + frame::opcode::value m_opcode; + bool m_prepared; + bool m_fin; + bool m_terminal; + bool m_compressed; +}; + +} // namespace message_buffer +} // namespace websocketpp + +#endif // WEBSOCKETPP_MESSAGE_BUFFER_MESSAGE_HPP diff --git a/src/third_party/websocketpp/websocketpp/message_buffer/pool.hpp b/src/third_party/websocketpp/websocketpp/message_buffer/pool.hpp new file mode 100644 index 00000000..46e24013 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/message_buffer/pool.hpp @@ -0,0 +1,229 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_MESSAGE_BUFFER_ALLOC_HPP +#define WEBSOCKETPP_MESSAGE_BUFFER_ALLOC_HPP + +#include + +#include + +namespace websocketpp { +namespace message_buffer { + +/* # message: + * object that stores a message while it is being sent or received. Contains + * the message payload itself, the message header, the extension data, and the + * opcode. + * + * # connection_message_manager: + * An object that manages all of the message_buffers associated with a given + * connection. Impliments the get_message_buffer(size) method that returns + * a message buffer at least size bytes long. + * + * Message buffers are reference counted with shared ownership semantics. Once + * requested from the manager the requester and it's associated downstream code + * may keep a pointer to the message indefinitely at a cost of extra resource + * usage. Once the reference count drops to the point where the manager is the + * only reference the messages is recycled using whatever method is implemented + * in the manager. + * + * # endpoint_message_manager: + * An object that manages connection_message_managers. Impliments the + * get_message_manager() method. This is used once by each connection to + * request the message manager that they are supposed to use to manage message + * buffers for their own use. + * + * TYPES OF CONNECTION_MESSAGE_MANAGERS + * - allocate a message with the exact size every time one is requested + * - maintain a pool of pre-allocated messages and return one when needed. + * Recycle previously used messages back into the pool + * + * TYPES OF ENDPOINT_MESSAGE_MANAGERS + * - allocate a new connection manager for each connection. Message pools + * become connection specific. This increases memory usage but improves + * concurrency. + * - allocate a single connection manager and share a pointer to it with all + * connections created by this endpoint. The message pool will be shared + * among all connections, improving memory usage and performance at the cost + * of reduced concurrency + */ + +/// Custom deleter for use in shared_ptrs to message. +/** + * This is used to catch messages about to be deleted and offer the manager the + * ability to recycle them instead. Message::recycle will return true if it was + * successfully recycled and false otherwise. In the case of exceptions or error + * this deleter frees the memory. + */ +template +void message_deleter(T* msg) { + try { + if (!msg->recycle()) { + delete msg; + } + } catch (...) { + // TODO: is there a better way to ensure this function doesn't throw? + delete msg; + } +} + +/// Represents a buffer for a single WebSocket message. +/** + * + * + */ +template +class message { +public: + typedef lib::shared_ptr ptr; + + typedef typename con_msg_manager::weak_ptr con_msg_man_ptr; + + message(con_msg_man_ptr manager, size_t size = 128) + : m_manager(manager) + , m_payload(size) {} + + frame::opcode::value get_opcode() const { + return m_opcode; + } + const std::string& get_header() const { + return m_header; + } + const std::string& get_extension_data() const { + return m_extension_data; + } + const std::string& get_payload() const { + return m_payload; + } + + /// Recycle the message + /** + * A request to recycle this message was received. Forward that request to + * the connection message manager for processing. Errors and exceptions + * from the manager's recycle member function should be passed back up the + * call chain. The caller to message::recycle will deal with them. + * + * Recycle must *only* be called by the message shared_ptr's destructor. + * Once recycled successfully, ownership of the memory has been passed to + * another system and must not be accessed again. + * + * @return true if the message was successfully recycled, false otherwise. + */ + bool recycle() { + typename con_msg_manager::ptr shared = m_manager.lock(); + + if (shared) { + return shared->(recycle(this)); + } else { + return false; + } + } +private: + con_msg_man_ptr m_manager; + + frame::opcode::value m_opcode; + std::string m_header; + std::string m_extension_data; + std::string m_payload; +}; + +namespace alloc { + +/// A connection message manager that allocates a new message for each +/// request. +template +class con_msg_manager { +public: + typedef lib::shared_ptr ptr; + typedef lib::weak_ptr weak_ptr; + + typedef typename message::ptr message_ptr; + + /// Get a message buffer with specified size + /** + * @param size Minimum size in bytes to request for the message payload. + * + * @return A shared pointer to a new message with specified size. + */ + message_ptr get_message(size_t size) const { + return message_ptr(new message(size)); + } + + /// Recycle a message + /** + * This method shouldn't be called. If it is, return false to indicate an + * error. The rest of the method recycle chain should notice this and free + * the memory. + * + * @param msg The message to be recycled. + * + * @return true if the message was successfully recycled, false otherwse. + */ + bool recycle(message * msg) { + return false; + } +}; + +/// An endpoint message manager that allocates a new manager for each +/// connection. +template +class endpoint_msg_manager { +public: + typedef typename con_msg_manager::ptr con_msg_man_ptr; + + /// Get a pointer to a connection message manager + /** + * @return A pointer to the requested connection message manager. + */ + con_msg_man_ptr get_manager() const { + return con_msg_man_ptr(new con_msg_manager()); + } +}; + +} // namespace alloc + +namespace pool { + +/// A connection messages manager that maintains a pool of messages that is +/// used to fulfill get_message requests. +class con_msg_manager { + +}; + +/// An endpoint manager that maintains a shared pool of connection managers +/// and returns an appropriate one for the requesting connection. +class endpoint_msg_manager { + +}; + +} // namespace pool + +} // namespace message_buffer +} // namespace websocketpp + +#endif // WEBSOCKETPP_MESSAGE_BUFFER_ALLOC_HPP diff --git a/src/third_party/websocketpp/websocketpp/processors/base.hpp b/src/third_party/websocketpp/websocketpp/processors/base.hpp new file mode 100644 index 00000000..e455e842 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/processors/base.hpp @@ -0,0 +1,294 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_PROCESSOR_BASE_HPP +#define WEBSOCKETPP_PROCESSOR_BASE_HPP + +#include +#include + +#include +#include +#include + +#include +#include + +namespace websocketpp { +namespace processor { + +/// Constants related to processing WebSocket connections +namespace constants { + +static char const upgrade_token[] = "websocket"; +static char const connection_token[] = "upgrade"; +static char const handshake_guid[] = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + +} // namespace constants + + +/// Processor class related error codes +namespace error_cat { +enum value { + BAD_REQUEST = 0, // Error was the result of improperly formatted user input + INTERNAL_ERROR = 1, // Error was a logic error internal to WebSocket++ + PROTOCOL_VIOLATION = 2, + MESSAGE_TOO_BIG = 3, + PAYLOAD_VIOLATION = 4 // Error was due to receiving invalid payload data +}; +} // namespace error_cat + +/// Error code category and codes used by all processor types +namespace error { +enum processor_errors { + /// Catch-all error for processor policy errors that don't fit in other + /// categories + general = 1, + + /// Error was the result of improperly formatted user input + bad_request, + + /// Processor encountered a protocol violation in an incoming message + protocol_violation, + + /// Processor encountered a message that was too large + message_too_big, + + /// Processor encountered invalid payload data. + invalid_payload, + + /// The processor method was called with invalid arguments + invalid_arguments, + + /// Opcode was invalid for requested operation + invalid_opcode, + + /// Control frame too large + control_too_big, + + /// Illegal use of reserved bit + invalid_rsv_bit, + + /// Fragmented control message + fragmented_control, + + /// Continuation without message + invalid_continuation, + + /// Clients may not send unmasked frames + masking_required, + + /// Servers may not send masked frames + masking_forbidden, + + /// Payload length not minimally encoded + non_minimal_encoding, + + /// Not supported on 32 bit systems + requires_64bit, + + /// Invalid UTF-8 encoding + invalid_utf8, + + /// Operation required not implemented functionality + not_implemented, + + /// Invalid HTTP method + invalid_http_method, + + /// Invalid HTTP version + invalid_http_version, + + /// Invalid HTTP status + invalid_http_status, + + /// Missing Required Header + missing_required_header, + + /// Embedded SHA-1 library error + sha1_library, + + /// No support for this feature in this protocol version. + no_protocol_support, + + /// Reserved close code used + reserved_close_code, + + /// Invalid close code used + invalid_close_code, + + /// Using a reason requires a close code + reason_requires_code, + + /// Error parsing subprotocols + subprotocol_parse_error, + + /// Error parsing extensions + extension_parse_error, + + /// Extension related operation was ignored because extensions are disabled + extensions_disabled +}; + +/// Category for processor errors +class processor_category : public lib::error_category { +public: + processor_category() {} + + char const * name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ { + return "websocketpp.processor"; + } + + std::string message(int value) const { + switch(value) { + case error::general: + return "Generic processor error"; + case error::bad_request: + return "invalid user input"; + case error::protocol_violation: + return "Generic protocol violation"; + case error::message_too_big: + return "A message was too large"; + case error::invalid_payload: + return "A payload contained invalid data"; + case error::invalid_arguments: + return "invalid function arguments"; + case error::invalid_opcode: + return "invalid opcode"; + case error::control_too_big: + return "Control messages are limited to fewer than 125 characters"; + case error::invalid_rsv_bit: + return "Invalid use of reserved bits"; + case error::fragmented_control: + return "Control messages cannot be fragmented"; + case error::invalid_continuation: + return "Invalid message continuation"; + case error::masking_required: + return "Clients may not send unmasked frames"; + case error::masking_forbidden: + return "Servers may not send masked frames"; + case error::non_minimal_encoding: + return "Payload length was not minimally encoded"; + case error::requires_64bit: + return "64 bit frames are not supported on 32 bit systems"; + case error::invalid_utf8: + return "Invalid UTF8 encoding"; + case error::not_implemented: + return "Operation required not implemented functionality"; + case error::invalid_http_method: + return "Invalid HTTP method."; + case error::invalid_http_version: + return "Invalid HTTP version."; + case error::invalid_http_status: + return "Invalid HTTP status."; + case error::missing_required_header: + return "A required HTTP header is missing"; + case error::sha1_library: + return "SHA-1 library error"; + case error::no_protocol_support: + return "The WebSocket protocol version in use does not support this feature"; + case error::reserved_close_code: + return "Reserved close code used"; + case error::invalid_close_code: + return "Invalid close code used"; + case error::reason_requires_code: + return "Using a close reason requires a valid close code"; + case error::subprotocol_parse_error: + return "Error parsing subprotocol header"; + case error::extension_parse_error: + return "Error parsing extension header"; + case error::extensions_disabled: + return "Extensions are disabled"; + default: + return "Unknown"; + } + } +}; + +/// Get a reference to a static copy of the processor error category +inline lib::error_category const & get_processor_category() { + static processor_category instance; + return instance; +} + +/// Create an error code with the given value and the processor category +inline lib::error_code make_error_code(error::processor_errors e) { + return lib::error_code(static_cast(e), get_processor_category()); +} + +/// Converts a processor error_code into a websocket close code +/** + * Looks up the appropriate WebSocket close code that should be sent after an + * error of this sort occurred. + * + * If the error is not in the processor category close::status::blank is + * returned. + * + * If the error isn't normally associated with reasons to close a connection + * (such as errors intended to be used internally or delivered to client + * applications, ex: invalid arguments) then + * close::status::internal_endpoint_error is returned. + */ +inline close::status::value to_ws(lib::error_code ec) { + if (ec.category() != get_processor_category()) { + return close::status::blank; + } + + switch (ec.value()) { + case error::protocol_violation: + case error::control_too_big: + case error::invalid_opcode: + case error::invalid_rsv_bit: + case error::fragmented_control: + case error::invalid_continuation: + case error::masking_required: + case error::masking_forbidden: + case error::reserved_close_code: + case error::invalid_close_code: + return close::status::protocol_error; + case error::invalid_payload: + case error::invalid_utf8: + return close::status::invalid_payload; + case error::message_too_big: + return close::status::message_too_big; + default: + return close::status::internal_endpoint_error; + } +} + +} // namespace error +} // namespace processor +} // namespace websocketpp + +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_ +template<> struct is_error_code_enum +{ + static bool const value = true; +}; +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_ + +#endif //WEBSOCKETPP_PROCESSOR_BASE_HPP diff --git a/src/third_party/websocketpp/websocketpp/processors/hybi00.hpp b/src/third_party/websocketpp/websocketpp/processors/hybi00.hpp new file mode 100644 index 00000000..27d0f936 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/processors/hybi00.hpp @@ -0,0 +1,392 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_PROCESSOR_HYBI00_HPP +#define WEBSOCKETPP_PROCESSOR_HYBI00_HPP + +#include + +#include +#include +#include +#include + +#include + +namespace websocketpp { +namespace processor { + +/// Processor for Hybi Draft version 00 +/** + * There are many differences between Hybi 00 and Hybi 13 + */ +template +class hybi00 : public processor { +public: + typedef processor base; + + typedef typename config::request_type request_type; + typedef typename config::response_type response_type; + + typedef typename config::message_type message_type; + typedef typename message_type::ptr message_ptr; + + typedef typename config::con_msg_manager_type::ptr msg_manager_ptr; + + explicit hybi00(bool secure, bool server, msg_manager_ptr manager) + : processor(secure, server) + , msg_hdr(0x00) + , msg_ftr(0xff) + , m_state(HEADER) + , m_msg_manager(manager) {} + + int get_version() const { + return 0; + } + + lib::error_code validate_handshake(request_type const & r) const { + if (r.get_method() != "GET") { + return make_error_code(error::invalid_http_method); + } + + if (r.get_version() != "HTTP/1.1") { + return make_error_code(error::invalid_http_version); + } + + // required headers + // Host is required by HTTP/1.1 + // Connection is required by is_websocket_handshake + // Upgrade is required by is_websocket_handshake + if (r.get_header("Sec-WebSocket-Key1") == "" || + r.get_header("Sec-WebSocket-Key2") == "" || + r.get_header("Sec-WebSocket-Key3") == "") + { + return make_error_code(error::missing_required_header); + } + + return lib::error_code(); + } + + lib::error_code process_handshake(request_type const & req, + std::string const & subprotocol, response_type & res) const + { + char key_final[16]; + + // copy key1 into final key + decode_client_key(req.get_header("Sec-WebSocket-Key1"), &key_final[0]); + + // copy key2 into final key + decode_client_key(req.get_header("Sec-WebSocket-Key2"), &key_final[4]); + + // copy key3 into final key + // key3 should be exactly 8 bytes. If it is more it will be truncated + // if it is less the final key will almost certainly be wrong. + // TODO: decide if it is best to silently fail here or produce some sort + // of warning or exception. + const std::string& key3 = req.get_header("Sec-WebSocket-Key3"); + std::copy(key3.c_str(), + key3.c_str()+std::min(static_cast(8), key3.size()), + &key_final[8]); + + res.append_header( + "Sec-WebSocket-Key3", + md5::md5_hash_string(std::string(key_final,16)) + ); + + res.append_header("Upgrade","WebSocket"); + res.append_header("Connection","Upgrade"); + + // Echo back client's origin unless our local application set a + // more restrictive one. + if (res.get_header("Sec-WebSocket-Origin") == "") { + res.append_header("Sec-WebSocket-Origin",req.get_header("Origin")); + } + + // Echo back the client's request host unless our local application + // set a different one. + if (res.get_header("Sec-WebSocket-Location") == "") { + uri_ptr uri = get_uri(req); + res.append_header("Sec-WebSocket-Location",uri->str()); + } + + if (subprotocol != "") { + res.replace_header("Sec-WebSocket-Protocol",subprotocol); + } + + return lib::error_code(); + } + + // outgoing client connection processing is not supported for this version + lib::error_code client_handshake_request(request_type& req, uri_ptr uri, + std::vector const & subprotocols) const + { + return error::make_error_code(error::no_protocol_support); + } + + lib::error_code validate_server_handshake_response(request_type const & req, + response_type & res) const + { + return error::make_error_code(error::no_protocol_support); + } + + std::string get_raw(response_type const & res) const { + response_type temp = res; + temp.remove_header("Sec-WebSocket-Key3"); + return temp.raw() + res.get_header("Sec-WebSocket-Key3"); + } + + std::string const & get_origin(request_type const & r) const { + return r.get_header("Origin"); + } + + // hybi00 doesn't support subprotocols so there never will be any requested + lib::error_code extract_subprotocols(request_type const & req, + std::vector & subprotocol_list) + { + return lib::error_code(); + } + + uri_ptr get_uri(request_type const & request) const { + std::string h = request.get_header("Host"); + + size_t last_colon = h.rfind(":"); + size_t last_sbrace = h.rfind("]"); + + // no : = hostname with no port + // last : before ] = ipv6 literal with no port + // : with no ] = hostname with port + // : after ] = ipv6 literal with port + + if (last_colon == std::string::npos || + (last_sbrace != std::string::npos && last_sbrace > last_colon)) + { + return uri_ptr(new uri(base::m_secure, h, request.get_uri())); + } else { + return uri_ptr(new uri(base::m_secure, + h.substr(0,last_colon), + h.substr(last_colon+1), + request.get_uri())); + } + + // TODO: check if get_uri is a full uri + } + + /// Get hybi00 handshake key3 + /** + * @todo This doesn't appear to be used anymore. It might be able to be + * removed + */ + std::string get_key3() const { + return ""; + } + + /// Process new websocket connection bytes + size_t consume(uint8_t * buf, size_t len, lib::error_code & ec) { + // if in state header we are expecting a 0x00 byte, if we don't get one + // it is a fatal error + size_t p = 0; // bytes processed + size_t l = 0; + + ec = lib::error_code(); + + while (p < len) { + if (m_state == HEADER) { + if (buf[p] == msg_hdr) { + p++; + m_msg_ptr = m_msg_manager->get_message(frame::opcode::text,1); + + if (!m_msg_ptr) { + ec = make_error_code(websocketpp::error::no_incoming_buffers); + m_state = FATAL_ERROR; + } else { + m_state = PAYLOAD; + } + } else { + ec = make_error_code(error::protocol_violation); + m_state = FATAL_ERROR; + } + } else if (m_state == PAYLOAD) { + uint8_t *it = std::find(buf+p,buf+len,msg_ftr); + + // 0 1 2 3 4 5 + // 0x00 0x23 0x23 0x23 0xff 0xXX + + // Copy payload bytes into message + l = static_cast(it-(buf+p)); + m_msg_ptr->append_payload(buf+p,l); + p += l; + + if (it != buf+len) { + // message is done, copy it and the trailing + p++; + // TODO: validation + m_state = READY; + } + } else { + // TODO + break; + } + } + // If we get one, we create a new message and move to application state + + // if in state application we are copying bytes into the output message + // and validating them for UTF8 until we hit a 0xff byte. Once we hit + // 0x00, the message is complete and is dispatched. Then we go back to + // header state. + + //ec = make_error_code(error::not_implemented); + return p; + } + + bool ready() const { + return (m_state == READY); + } + + bool get_error() const { + return false; + } + + message_ptr get_message() { + message_ptr ret = m_msg_ptr; + m_msg_ptr = message_ptr(); + m_state = HEADER; + return ret; + } + + /// Prepare a message for writing + /** + * Performs validation, masking, compression, etc. will return an error if + * there was an error, otherwise msg will be ready to be written + */ + virtual lib::error_code prepare_data_frame(message_ptr in, message_ptr out) + { + if (!in || !out) { + return make_error_code(error::invalid_arguments); + } + + // TODO: check if the message is prepared already + + // validate opcode + if (in->get_opcode() != frame::opcode::text) { + return make_error_code(error::invalid_opcode); + } + + std::string& i = in->get_raw_payload(); + //std::string& o = out->get_raw_payload(); + + // validate payload utf8 + if (!utf8_validator::validate(i)) { + return make_error_code(error::invalid_payload); + } + + // generate header + out->set_header(std::string(reinterpret_cast(&msg_hdr),1)); + + // process payload + out->set_payload(i); + out->append_payload(std::string(reinterpret_cast(&msg_ftr),1)); + + // hybi00 doesn't support compression + // hybi00 doesn't have masking + + out->set_prepared(true); + + return lib::error_code(); + } + + lib::error_code prepare_ping(std::string const & in, message_ptr out) const + { + return lib::error_code(error::no_protocol_support); + } + + lib::error_code prepare_pong(const std::string & in, message_ptr out) const + { + return lib::error_code(error::no_protocol_support); + } + + lib::error_code prepare_close(close::status::value code, + std::string const & reason, message_ptr out) const + { + if (!out) { + return lib::error_code(error::invalid_arguments); + } + + std::string val; + val.append(1,'\xff'); + val.append(1,'\x00'); + out->set_payload(val); + out->set_prepared(true); + + return lib::error_code(); + } +private: + void decode_client_key(std::string const & key, char * result) const { + unsigned int spaces = 0; + std::string digits = ""; + uint32_t num; + + // key2 + for (size_t i = 0; i < key.size(); i++) { + if (key[i] == ' ') { + spaces++; + } else if (key[i] >= '0' && key[i] <= '9') { + digits += key[i]; + } + } + + num = static_cast(strtoul(digits.c_str(), NULL, 10)); + if (spaces > 0 && num > 0) { + num = htonl(num/spaces); + std::copy(reinterpret_cast(&num), + reinterpret_cast(&num)+4, + result); + } else { + std::fill(result,result+4,0); + } + } + + enum state { + HEADER = 0, + PAYLOAD = 1, + READY = 2, + FATAL_ERROR = 3 + }; + + uint8_t const msg_hdr; + uint8_t const msg_ftr; + + state m_state; + + msg_manager_ptr m_msg_manager; + message_ptr m_msg_ptr; + utf8_validator::validator m_validator; +}; + +} // namespace processor +} // namespace websocketpp + +#endif //WEBSOCKETPP_PROCESSOR_HYBI00_HPP diff --git a/src/third_party/websocketpp/websocketpp/processors/hybi07.hpp b/src/third_party/websocketpp/websocketpp/processors/hybi07.hpp new file mode 100644 index 00000000..8b2df0ee --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/processors/hybi07.hpp @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_PROCESSOR_HYBI07_HPP +#define WEBSOCKETPP_PROCESSOR_HYBI07_HPP + +#include + +namespace websocketpp { +namespace processor { + +/// Processor for Hybi Draft version 07 +/** + * The primary difference between 07 and 08 is a version number. + */ +template +class hybi07 : public hybi08 { +public: + typedef typename config::request_type request_type; + + typedef typename config::con_msg_manager_type::ptr msg_manager_ptr; + typedef typename config::rng_type rng_type; + + explicit hybi07(bool secure, bool server, msg_manager_ptr manager, + rng_type& rng) + : hybi08(secure, server, manager, rng) {} + + // outgoing client connection processing is not supported for this version + lib::error_code client_handshake_request(request_type & req, uri_ptr uri, + std::vector const & subprotocols) const + { + return error::make_error_code(error::no_protocol_support); + } + + int get_version() const { + return 7; + } +private: +}; + +} // namespace processor +} // namespace websocketpp + +#endif //WEBSOCKETPP_PROCESSOR_HYBI07_HPP diff --git a/src/third_party/websocketpp/websocketpp/processors/hybi08.hpp b/src/third_party/websocketpp/websocketpp/processors/hybi08.hpp new file mode 100644 index 00000000..54f21036 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/processors/hybi08.hpp @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_PROCESSOR_HYBI08_HPP +#define WEBSOCKETPP_PROCESSOR_HYBI08_HPP + +#include + +namespace websocketpp { +namespace processor { + +/// Processor for Hybi Draft version 08 +/** + * The primary difference between 08 and 13 is a different origin header name + */ +template +class hybi08 : public hybi13 { +public: + typedef hybi08 type; + typedef typename config::request_type request_type; + + typedef typename config::con_msg_manager_type::ptr msg_manager_ptr; + typedef typename config::rng_type rng_type; + + explicit hybi08(bool secure, bool server, msg_manager_ptr manager, + rng_type& rng) + : hybi13(secure, server, manager, rng) {} + + // outgoing client connection processing is not supported for this version + lib::error_code client_handshake_request(request_type& req, uri_ptr uri, + std::vector const & subprotocols) const + { + return error::make_error_code(error::no_protocol_support); + } + + int get_version() const { + return 8; + } + + const std::string& get_origin(request_type const & r) const { + return r.get_header("Sec-WebSocket-Origin"); + } +private: +}; + +} // namespace processor +} // namespace websocketpp + +#endif //WEBSOCKETPP_PROCESSOR_HYBI08_HPP diff --git a/src/third_party/websocketpp/websocketpp/processors/hybi13.hpp b/src/third_party/websocketpp/websocketpp/processors/hybi13.hpp new file mode 100644 index 00000000..3c11e5b6 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/processors/hybi13.hpp @@ -0,0 +1,992 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_PROCESSOR_HYBI13_HPP +#define WEBSOCKETPP_PROCESSOR_HYBI13_HPP + +#include + +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include + +namespace websocketpp { +namespace processor { + +/// Processor for Hybi version 13 (RFC6455) +template +class hybi13 : public processor { +public: + typedef processor base; + + typedef typename config::request_type request_type; + typedef typename config::response_type response_type; + + typedef typename config::message_type message_type; + typedef typename message_type::ptr message_ptr; + + typedef typename config::con_msg_manager_type msg_manager_type; + typedef typename msg_manager_type::ptr msg_manager_ptr; + typedef typename config::rng_type rng_type; + + typedef typename config::permessage_deflate_type permessage_deflate_type; + + typedef std::pair err_str_pair; + + explicit hybi13(bool secure, bool server, msg_manager_ptr manager, + rng_type& rng) + : processor(secure,server) + , m_msg_manager(manager) + , m_rng(rng) + { + reset_headers(); + } + + int get_version() const { + return 13; + } + + bool has_permessage_deflate() const { + return m_permessage_deflate.is_implemented(); + } + + err_str_pair negotiate_extensions(request_type const & req) { + err_str_pair ret; + + // Respect blanket disabling of all extensions and don't even parse + // the extension header + if (!config::enable_extensions) { + ret.first = make_error_code(error::extensions_disabled); + return ret; + } + + http::parameter_list p; + + bool error = req.get_header_as_plist("Sec-WebSocket-Extensions",p); + + if (error) { + ret.first = make_error_code(error::extension_parse_error); + return ret; + } + + // If there are no extensions parsed then we are done! + if (p.size() == 0) { + return ret; + } + + http::parameter_list::const_iterator it; + + if (m_permessage_deflate.is_implemented()) { + err_str_pair neg_ret; + for (it = p.begin(); it != p.end(); ++it) { + // look through each extension, if the key is permessage-deflate + if (it->first == "permessage-deflate") { + neg_ret = m_permessage_deflate.negotiate(it->second); + + if (neg_ret.first) { + // Figure out if this is an error that should halt all + // extension negotiations or simply cause negotiation of + // this specific extension to fail. + std::cout << "permessage-compress negotiation failed: " + << neg_ret.first.message() << std::endl; + } else { + // Note: this list will need commas if WebSocket++ ever + // supports more than one extension + ret.second += neg_ret.second; + continue; + } + } + } + } + + return ret; + } + + lib::error_code validate_handshake(request_type const & r) const { + if (r.get_method() != "GET") { + return make_error_code(error::invalid_http_method); + } + + if (r.get_version() != "HTTP/1.1") { + return make_error_code(error::invalid_http_version); + } + + // required headers + // Host is required by HTTP/1.1 + // Connection is required by is_websocket_handshake + // Upgrade is required by is_websocket_handshake + if (r.get_header("Sec-WebSocket-Key") == "") { + return make_error_code(error::missing_required_header); + } + + return lib::error_code(); + } + + /* TODO: the 'subprotocol' parameter may need to be expanded into a more + * generic struct if other user input parameters to the processed handshake + * are found. + */ + lib::error_code process_handshake(request_type const & request, const + std::string & subprotocol, response_type& response) const + { + std::string server_key = request.get_header("Sec-WebSocket-Key"); + + lib::error_code ec = process_handshake_key(server_key); + + if (ec) { + return ec; + } + + response.replace_header("Sec-WebSocket-Accept",server_key); + response.append_header("Upgrade",constants::upgrade_token); + response.append_header("Connection",constants::connection_token); + + if (!subprotocol.empty()) { + response.replace_header("Sec-WebSocket-Protocol",subprotocol); + } + + return lib::error_code(); + } + + lib::error_code client_handshake_request(request_type& req, uri_ptr + uri, std::vector const & subprotocols) const + { + req.set_method("GET"); + req.set_uri(uri->get_resource()); + req.set_version("HTTP/1.1"); + + req.append_header("Upgrade","websocket"); + req.append_header("Connection","Upgrade"); + req.replace_header("Sec-WebSocket-Version","13"); + req.replace_header("Host",uri->get_host_port()); + + if (!subprotocols.empty()) { + std::ostringstream result; + std::vector::const_iterator it = subprotocols.begin(); + result << *it++; + while (it != subprotocols.end()) { + result << ", " << *it++; + } + + req.replace_header("Sec-WebSocket-Protocol",result.str()); + } + + // Generate handshake key + frame::uint32_converter conv; + unsigned char raw_key[16]; + + for (int i = 0; i < 4; i++) { + conv.i = m_rng(); + std::copy(conv.c,conv.c+4,&raw_key[i*4]); + } + + req.replace_header("Sec-WebSocket-Key",base64_encode(raw_key, 16)); + + return lib::error_code(); + } + + lib::error_code validate_server_handshake_response(request_type const & req, + response_type& res) const + { + // A valid response has an HTTP 101 switching protocols code + if (res.get_status_code() != http::status_code::switching_protocols) { + return error::make_error_code(error::invalid_http_status); + } + + // And the upgrade token in an upgrade header + std::string const & upgrade_header = res.get_header("Upgrade"); + if (utility::ci_find_substr(upgrade_header, constants::upgrade_token, + sizeof(constants::upgrade_token)-1) == upgrade_header.end()) + { + return error::make_error_code(error::missing_required_header); + } + + // And the websocket token in the connection header + std::string const & con_header = res.get_header("Connection"); + if (utility::ci_find_substr(con_header, constants::connection_token, + sizeof(constants::connection_token)-1) == con_header.end()) + { + return error::make_error_code(error::missing_required_header); + } + + // And has a valid Sec-WebSocket-Accept value + std::string key = req.get_header("Sec-WebSocket-Key"); + lib::error_code ec = process_handshake_key(key); + + if (ec || key != res.get_header("Sec-WebSocket-Accept")) { + return error::make_error_code(error::missing_required_header); + } + + return lib::error_code(); + } + + std::string get_raw(response_type const & res) const { + return res.raw(); + } + + std::string const & get_origin(request_type const & r) const { + return r.get_header("Origin"); + } + + lib::error_code extract_subprotocols(request_type const & req, + std::vector & subprotocol_list) + { + if (!req.get_header("Sec-WebSocket-Protocol").empty()) { + http::parameter_list p; + + if (!req.get_header_as_plist("Sec-WebSocket-Protocol",p)) { + http::parameter_list::const_iterator it; + + for (it = p.begin(); it != p.end(); ++it) { + subprotocol_list.push_back(it->first); + } + } else { + return error::make_error_code(error::subprotocol_parse_error); + } + } + return lib::error_code(); + } + + uri_ptr get_uri(request_type const & request) const { + return get_uri_from_host(request,(base::m_secure ? "wss" : "ws")); + } + + /// Process new websocket connection bytes + /** + * + * Hybi 13 data streams represent a series of variable length frames. Each + * frame is made up of a series of fixed length fields. The lengths of later + * fields are contained in earlier fields. The first field length is fixed + * by the spec. + * + * This processor represents a state machine that keeps track of what field + * is presently being read and how many more bytes are needed to complete it + * + * + * + * + * Read two header bytes + * Extract full frame length. + * Read extra header bytes + * Validate frame header (including extension validate) + * Read extension data into extension message state object + * Read payload data into payload + * + * @param buf Input buffer + * + * @param len Length of input buffer + * + * @return Number of bytes processed or zero on error + */ + size_t consume(uint8_t * buf, size_t len, lib::error_code & ec) { + size_t p = 0; + + ec = lib::error_code(); + + //std::cout << "consume: " << utility::to_hex(buf,len) << std::endl; + + // Loop while we don't have a message ready and we still have bytes + // left to process. + while (m_state != READY && m_state != FATAL_ERROR && + (p < len || m_bytes_needed == 0)) + { + if (m_state == HEADER_BASIC) { + p += this->copy_basic_header_bytes(buf+p,len-p); + + if (m_bytes_needed > 0) { + continue; + } + + ec = this->validate_incoming_basic_header( + m_basic_header, base::m_server, !m_data_msg.msg_ptr + ); + if (ec) {break;} + + // extract full header size and adjust consume state accordingly + m_state = HEADER_EXTENDED; + m_cursor = 0; + m_bytes_needed = frame::get_header_len(m_basic_header) - + frame::BASIC_HEADER_LENGTH; + } else if (m_state == HEADER_EXTENDED) { + p += this->copy_extended_header_bytes(buf+p,len-p); + + if (m_bytes_needed > 0) { + continue; + } + + ec = validate_incoming_extended_header(m_basic_header,m_extended_header); + if (ec){break;} + + m_state = APPLICATION; + m_bytes_needed = static_cast(get_payload_size(m_basic_header,m_extended_header)); + + // check if this frame is the start of a new message and set up + // the appropriate message metadata. + frame::opcode::value op = frame::get_opcode(m_basic_header); + + // TODO: get_message failure conditions + + if (frame::opcode::is_control(op)) { + m_control_msg = msg_metadata( + m_msg_manager->get_message(op,m_bytes_needed), + frame::get_masking_key(m_basic_header,m_extended_header) + ); + + m_current_msg = &m_control_msg; + } else { + if (!m_data_msg.msg_ptr) { + m_data_msg = msg_metadata( + m_msg_manager->get_message(op,m_bytes_needed), + frame::get_masking_key(m_basic_header,m_extended_header) + ); + } else { + // Each frame starts a new masking key. All other state + // remains between frames. + m_data_msg.prepared_key = prepare_masking_key( + frame::get_masking_key( + m_basic_header, + m_extended_header + ) + ); + // TODO: reserve space in the existing message for the new bytes + } + m_current_msg = &m_data_msg; + } + } else if (m_state == EXTENSION) { + m_state = APPLICATION; + } else if (m_state == APPLICATION) { + size_t bytes_to_process = std::min(m_bytes_needed,len-p); + + if (bytes_to_process > 0) { + p += this->process_payload_bytes(buf+p,bytes_to_process,ec); + + if (ec) {break;} + } + + if (m_bytes_needed > 0) { + continue; + } + + // If this was the last frame in the message set the ready flag. + // Otherwise, reset processor state to read additional frames. + if (frame::get_fin(m_basic_header)) { + // ensure that text messages end on a valid UTF8 code point + if (frame::get_opcode(m_basic_header) == frame::opcode::TEXT) { + if (!m_current_msg->validator.complete()) { + ec = make_error_code(error::invalid_utf8); + break; + } + } + + m_state = READY; + } else { + this->reset_headers(); + } + } else { + // shouldn't be here + ec = make_error_code(error::general); + return 0; + } + } + + return p; + } + + void reset_headers() { + m_state = HEADER_BASIC; + m_bytes_needed = frame::BASIC_HEADER_LENGTH; + + m_basic_header.b0 = 0x00; + m_basic_header.b1 = 0x00; + + std::fill_n( + m_extended_header.bytes, + frame::MAX_EXTENDED_HEADER_LENGTH, + 0x00 + ); + } + + /// Test whether or not the processor has a message ready + bool ready() const { + return (m_state == READY); + } + + message_ptr get_message() { + if (!ready()) { + return message_ptr(); + } + message_ptr ret = m_current_msg->msg_ptr; + m_current_msg->msg_ptr.reset(); + + if (frame::opcode::is_control(ret->get_opcode())) { + m_control_msg.msg_ptr.reset(); + } else { + m_data_msg.msg_ptr.reset(); + } + + this->reset_headers(); + + return ret; + } + + /// Test whether or not the processor is in a fatal error state. + bool get_error() const { + return m_state == FATAL_ERROR; + } + + size_t get_bytes_needed() const { + return m_bytes_needed; + } + + /// Prepare a user data message for writing + /** + * Performs validation, masking, compression, etc. will return an error if + * there was an error, otherwise msg will be ready to be written + * + * By default WebSocket++ performs block masking/unmasking in a manner that + * makes assumptions about the nature of the machine and STL library used. + * In particular the assumption is either a 32 or 64 bit word size and an + * STL with std::string::data returning a contiguous char array. + * + * This method improves masking performance by 3-8x depending on the ratio + * of small to large messages and the availability of a 64 bit processor. + * + * To disable this optimization (for use with alternative STL + * implementations or processors) define WEBSOCKETPP_STRICT_MASKING when + * compiling the library. This will force the library to perform masking in + * single byte chunks. + * + * TODO: tests + * + * @param in An unprepared message to prepare + * @param out A message to be overwritten with the prepared message + * @return error code + */ + virtual lib::error_code prepare_data_frame(message_ptr in, message_ptr out) + { + if (!in || !out) { + return make_error_code(error::invalid_arguments); + } + + frame::opcode::value op = in->get_opcode(); + + // validate opcode: only regular data frames + if (frame::opcode::is_control(op)) { + return make_error_code(error::invalid_opcode); + } + + std::string& i = in->get_raw_payload(); + std::string& o = out->get_raw_payload(); + + // validate payload utf8 + if (op == frame::opcode::TEXT && !utf8_validator::validate(i)) { + return make_error_code(error::invalid_payload); + } + + frame::masking_key_type key; + bool masked = !base::m_server; + bool compressed = m_permessage_deflate.is_enabled() + && in->get_compressed(); + bool fin = in->get_fin(); + + // generate header + frame::basic_header h(op,i.size(),fin,masked,compressed); + + if (masked) { + // Generate masking key. + key.i = m_rng(); + + frame::extended_header e(i.size(),key.i); + out->set_header(frame::prepare_header(h,e)); + } else { + frame::extended_header e(i.size()); + out->set_header(frame::prepare_header(h,e)); + } + + // prepare payload + if (compressed) { + // compress and store in o after header. + m_permessage_deflate.compress(i,o); + + // mask in place if necessary + if (masked) { + this->masked_copy(o,o,key); + } + } else { + // no compression, just copy data into the output buffer + o.resize(i.size()); + + // if we are masked, have the masking function write to the output + // buffer directly to avoid another copy. If not masked, copy + // directly without masking. + if (masked) { + this->masked_copy(i,o,key); + } else { + std::copy(i.begin(),i.end(),o.begin()); + } + } + + out->set_prepared(true); + + return lib::error_code(); + } + + /// Get URI + lib::error_code prepare_ping(std::string const & in, message_ptr out) const { + return this->prepare_control(frame::opcode::PING,in,out); + } + + lib::error_code prepare_pong(std::string const & in, message_ptr out) const { + return this->prepare_control(frame::opcode::PONG,in,out); + } + + virtual lib::error_code prepare_close(close::status::value code, + std::string const & reason, message_ptr out) const + { + if (close::status::reserved(code)) { + return make_error_code(error::reserved_close_code); + } + + if (close::status::invalid(code) && code != close::status::no_status) { + return make_error_code(error::invalid_close_code); + } + + if (code == close::status::no_status && reason.size() > 0) { + return make_error_code(error::reason_requires_code); + } + + if (reason.size() > frame:: limits::payload_size_basic-2) { + return make_error_code(error::control_too_big); + } + + std::string payload; + + if (code != close::status::no_status) { + close::code_converter val; + val.i = htons(code); + + payload.resize(reason.size()+2); + + payload[0] = val.c[0]; + payload[1] = val.c[1]; + + std::copy(reason.begin(),reason.end(),payload.begin()+2); + } + + return this->prepare_control(frame::opcode::CLOSE,payload,out); + } +protected: + /// Convert a client handshake key into a server response key in place + lib::error_code process_handshake_key(std::string & key) const { + key.append(constants::handshake_guid); + + sha1 sha; + uint32_t message_digest[5]; + + sha << key.c_str(); + + if (sha.get_raw_digest(message_digest)){ + // convert sha1 hash bytes to network byte order because this sha1 + // library works on ints rather than bytes + for (int i = 0; i < 5; i++) { + message_digest[i] = htonl(message_digest[i]); + } + + key = base64_encode( + reinterpret_cast(message_digest), + 20 + ); + + return lib::error_code(); + } else { + return error::make_error_code(error::sha1_library); + } + } + + /// Reads bytes from buf into m_basic_header + size_t copy_basic_header_bytes(uint8_t const * buf, size_t len) { + if (len == 0 || m_bytes_needed == 0) { + return 0; + } + + if (len > 1) { + // have at least two bytes + if (m_bytes_needed == 2) { + m_basic_header.b0 = buf[0]; + m_basic_header.b1 = buf[1]; + m_bytes_needed -= 2; + return 2; + } else { + m_basic_header.b1 = buf[0]; + m_bytes_needed--; + return 1; + } + } else { + // have exactly one byte + if (m_bytes_needed == 2) { + m_basic_header.b0 = buf[0]; + m_bytes_needed--; + return 1; + } else { + m_basic_header.b1 = buf[0]; + m_bytes_needed--; + return 1; + } + } + } + + /// Reads bytes from buf into m_extended_header + size_t copy_extended_header_bytes(uint8_t const * buf, size_t len) { + size_t bytes_to_read = std::min(m_bytes_needed,len); + + std::copy(buf,buf+bytes_to_read,m_extended_header.bytes+m_cursor); + m_cursor += bytes_to_read; + m_bytes_needed -= bytes_to_read; + + return bytes_to_read; + } + + /// Reads bytes from buf into message payload + /** + * This function performs unmasking and uncompression, validates the + * decoded bytes, and writes them to the appropriate message buffer. + * + * This member function will use the input buffer as stratch space for its + * work. The raw input bytes will not be preserved. This applies only to the + * bytes actually needed. At most min(m_bytes_needed,len) will be processed. + * + * @param buf Input/working buffer + * @param len Length of buf + * @return Number of bytes processed or zero in case of an error + */ + size_t process_payload_bytes(uint8_t * buf, size_t len, lib::error_code& ec) + { + // unmask if masked + if (frame::get_masked(m_basic_header)) { + #ifdef WEBSOCKETPP_STRICT_MASKING + m_current_msg->prepared_key = frame::byte_mask_circ( + buf, + len, + m_current_msg->prepared_key + ); + #else + m_current_msg->prepared_key = frame::word_mask_circ( + buf, + len, + m_current_msg->prepared_key + ); + #endif + } + + std::string & out = m_current_msg->msg_ptr->get_raw_payload(); + size_t offset = out.size(); + + // decompress message if needed. + if (m_permessage_deflate.is_enabled() + && frame::get_rsv1(m_basic_header)) + { + // Decompress current buffer into the message buffer + m_permessage_deflate.decompress(buf,len,out); + + // get the length of the newly uncompressed output + offset = out.size() - offset; + } else { + // No compression, straight copy + out.append(reinterpret_cast(buf),len); + } + + // validate unmasked, decompressed values + if (m_current_msg->msg_ptr->get_opcode() == frame::opcode::TEXT) { + if (!m_current_msg->validator.decode(out.begin()+offset,out.end())) { + ec = make_error_code(error::invalid_utf8); + return 0; + } + } + + m_bytes_needed -= len; + + return len; + } + + /// Validate an incoming basic header + /** + * Validates an incoming hybi13 basic header. + * + * @param h The basic header to validate + * @param is_server Whether or not the endpoint that received this frame + * is a server. + * @param new_msg Whether or not this is the first frame of the message + * @return 0 on success or a non-zero error code on failure + */ + lib::error_code validate_incoming_basic_header(frame::basic_header const & h, + bool is_server, bool new_msg) const + { + frame::opcode::value op = frame::get_opcode(h); + + // Check control frame size limit + if (frame::opcode::is_control(op) && + frame::get_basic_size(h) > frame::limits::payload_size_basic) + { + return make_error_code(error::control_too_big); + } + + // Check that RSV bits are clear + // The only RSV bits allowed are rsv1 if the permessage_compress + // extension is enabled for this connection and the message is not + // a control message. + // + // TODO: unit tests for this + if (frame::get_rsv1(h) && (!m_permessage_deflate.is_enabled() + || frame::opcode::is_control(op))) + { + return make_error_code(error::invalid_rsv_bit); + } + + if (frame::get_rsv2(h) || frame::get_rsv3(h)) { + return make_error_code(error::invalid_rsv_bit); + } + + // Check for reserved opcodes + if (frame::opcode::reserved(op)) { + return make_error_code(error::invalid_opcode); + } + + // Check for invalid opcodes + // TODO: unit tests for this? + if (frame::opcode::invalid(op)) { + return make_error_code(error::invalid_opcode); + } + + // Check for fragmented control message + if (frame::opcode::is_control(op) && !frame::get_fin(h)) { + return make_error_code(error::fragmented_control); + } + + // Check for continuation without an active message + if (new_msg && op == frame::opcode::CONTINUATION) { + return make_error_code(error::invalid_continuation); + } + + // Check for new data frame when expecting continuation + if (!new_msg && !frame::opcode::is_control(op) && + op != frame::opcode::CONTINUATION) + { + return make_error_code(error::invalid_continuation); + } + + // Servers should reject any unmasked frames from clients. + // Clients should reject any masked frames from servers. + if (is_server && !frame::get_masked(h)) { + return make_error_code(error::masking_required); + } else if (!is_server && frame::get_masked(h)) { + return make_error_code(error::masking_forbidden); + } + + return lib::error_code(); + } + + /// Validate an incoming extended header + /** + * Validates an incoming hybi13 full header. + * + * @todo unit test for the >32 bit frames on 32 bit systems case + * + * @param h The basic header to validate + * @param e The extended header to validate + * @return An error_code, non-zero values indicate why the validation + * failed + */ + lib::error_code validate_incoming_extended_header(frame::basic_header h, + frame::extended_header e) const + { + uint8_t basic_size = frame::get_basic_size(h); + uint64_t payload_size = frame::get_payload_size(h,e); + + // Check for non-minimally encoded payloads + if (basic_size == frame::payload_size_code_16bit && + payload_size <= frame::limits::payload_size_basic) + { + return make_error_code(error::non_minimal_encoding); + } + + if (basic_size == frame::payload_size_code_64bit && + payload_size <= frame::limits::payload_size_extended) + { + return make_error_code(error::non_minimal_encoding); + } + + // Check for >32bit frames on 32 bit systems + if (sizeof(size_t) == 4 && (payload_size >> 32)) { + return make_error_code(error::requires_64bit); + } + + return lib::error_code(); + } + + /// Copy and mask/unmask in one operation + /** + * Reads input from one string and writes unmasked output to another. + * + * @param [in] i The input string. + * @param [out] o The output string. + * @param [in] key The masking key to use for masking/unmasking + */ + void masked_copy (std::string const & i, std::string & o, + frame::masking_key_type key) const + { + #ifdef WEBSOCKETPP_STRICT_MASKING + frame::byte_mask(i.begin(),i.end(),o.begin(),key); + #else + websocketpp::frame::word_mask_exact( + reinterpret_cast(const_cast(i.data())), + reinterpret_cast(const_cast(o.data())), + i.size(), + key + ); + #endif + } + + /// Generic prepare control frame with opcode and payload. + /** + * Internal control frame building method. Handles validation, masking, etc + * + * @param op The control opcode to use + * @param payload The payload to use + * @param out The message buffer to store the prepared frame in + * @return Status code, zero on success, non-zero on error + */ + lib::error_code prepare_control(frame::opcode::value op, + std::string const & payload, message_ptr out) const + { + if (!out) { + return make_error_code(error::invalid_arguments); + } + + if (!frame::opcode::is_control(op)) { + return make_error_code(error::invalid_opcode); + } + + if (payload.size() > frame::limits::payload_size_basic) { + return make_error_code(error::control_too_big); + } + + frame::masking_key_type key; + bool masked = !base::m_server; + + frame::basic_header h(op,payload.size(),true,masked); + + std::string & o = out->get_raw_payload(); + o.resize(payload.size()); + + if (masked) { + // Generate masking key. + key.i = m_rng(); + + frame::extended_header e(payload.size(),key.i); + out->set_header(frame::prepare_header(h,e)); + this->masked_copy(payload,o,key); + } else { + frame::extended_header e(payload.size()); + out->set_header(frame::prepare_header(h,e)); + std::copy(payload.begin(),payload.end(),o.begin()); + } + + out->set_prepared(true); + + return lib::error_code(); + } + + enum state { + HEADER_BASIC = 0, + HEADER_EXTENDED = 1, + EXTENSION = 2, + APPLICATION = 3, + READY = 4, + FATAL_ERROR = 5 + }; + + /// This data structure holds data related to processing a message, such as + /// the buffer it is being written to, its masking key, its UTF8 validation + /// state, and sometimes its compression state. + struct msg_metadata { + msg_metadata() {} + msg_metadata(message_ptr m, size_t p) : msg_ptr(m),prepared_key(p) {} + msg_metadata(message_ptr m, frame::masking_key_type p) + : msg_ptr(m) + , prepared_key(prepare_masking_key(p)) {} + + message_ptr msg_ptr; // pointer to the message data buffer + size_t prepared_key; // prepared masking key + utf8_validator::validator validator; // utf8 validation state + }; + + // Basic header of the frame being read + frame::basic_header m_basic_header; + + // Pointer to a manager that can create message buffers for us. + msg_manager_ptr m_msg_manager; + + // Number of bytes needed to complete the current operation + size_t m_bytes_needed; + + // Number of extended header bytes read + size_t m_cursor; + + // Metadata for the current data msg + msg_metadata m_data_msg; + // Metadata for the current control msg + msg_metadata m_control_msg; + + // Pointer to the metadata associated with the frame being read + msg_metadata * m_current_msg; + + // Extended header of current frame + frame::extended_header m_extended_header; + + rng_type & m_rng; + + // Overall state of the processor + state m_state; + + // Extensions + permessage_deflate_type m_permessage_deflate; +}; + +} // namespace processor +} // namespace websocketpp + +#endif //WEBSOCKETPP_PROCESSOR_HYBI13_HPP diff --git a/src/third_party/websocketpp/websocketpp/processors/processor.hpp b/src/third_party/websocketpp/websocketpp/processors/processor.hpp new file mode 100644 index 00000000..6333b5b5 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/processors/processor.hpp @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_PROCESSOR_HPP +#define WEBSOCKETPP_PROCESSOR_HPP + +#include +#include + +#include +#include +#include + +#include +#include + +namespace websocketpp { +/// Processors encapsulate the protocol rules specific to each WebSocket version +/** + * The processors namespace includes a number of free functions that operate on + * various WebSocket related data structures and perform processing that is not + * related to specific versions of the protocol. + * + * It also includes the abstract interface for the protocol specific processing + * engines. These engines wrap all of the logic necessary for parsing and + * validating WebSocket handshakes and messages of specific protocol version + * and set of allowed extensions. + * + * An instance of a processor represents the state of a single WebSocket + * connection of the associated version. One processor instance is needed per + * logical WebSocket connection. + */ +namespace processor { + +/// Determine whether or not a generic HTTP request is a WebSocket handshake +/** + * @param r The HTTP request to read. + * + * @return True if the request is a WebSocket handshake, false otherwise + */ +template +bool is_websocket_handshake(request_type& r) { + using utility::ci_find_substr; + + std::string const & upgrade_header = r.get_header("Upgrade"); + + if (ci_find_substr(upgrade_header, constants::upgrade_token, + sizeof(constants::upgrade_token)-1) == upgrade_header.end()) + { + return false; + } + + std::string const & con_header = r.get_header("Connection"); + + if (ci_find_substr(con_header, constants::connection_token, + sizeof(constants::connection_token)-1) == con_header.end()) + { + return false; + } + + return true; +} + +/// Extract the version from a WebSocket handshake request +/** + * A blank version header indicates a spec before versions were introduced. + * The only such versions in shipping products are Hixie Draft 75 and Hixie + * Draft 76. Draft 75 is present in Chrome 4-5 and Safari 5.0.0, Draft 76 (also + * known as hybi 00 is present in Chrome 6-13 and Safari 5.0.1+. As + * differentiating between these two sets of browsers is very difficult and + * Safari 5.0.1+ accounts for the vast majority of cases in the wild this + * function assumes that all handshakes without a valid version header are + * Hybi 00. + * + * @param r The WebSocket handshake request to read. + * + * @return The WebSocket handshake version or -1 if there was an extraction + * error. + */ +template +int get_websocket_version(request_type& r) { + if (r.get_header("Sec-WebSocket-Version") == "") { + return 0; + } + + int version; + std::istringstream ss(r.get_header("Sec-WebSocket-Version")); + + if ((ss >> version).fail()) { + return -1; + } + + return version; +} + +/// Extract a URI ptr from the host header of the request +/** + * @param request The request to extract the Host header from. + * + * @param scheme The scheme under which this request was received (ws, wss, + * http, https, etc) + * + * @return A uri_pointer that encodes the value of the host header. + */ +template +uri_ptr get_uri_from_host(request_type & request, std::string scheme) { + std::string h = request.get_header("Host"); + + size_t last_colon = h.rfind(":"); + size_t last_sbrace = h.rfind("]"); + + // no : = hostname with no port + // last : before ] = ipv6 literal with no port + // : with no ] = hostname with port + // : after ] = ipv6 literal with port + if (last_colon == std::string::npos || + (last_sbrace != std::string::npos && last_sbrace > last_colon)) + { + return uri_ptr(new uri(scheme, h, request.get_uri())); + } else { + return uri_ptr(new uri(scheme, + h.substr(0,last_colon), + h.substr(last_colon+1), + request.get_uri())); + } +} + +/// WebSocket protocol processor abstract base class +template +class processor { +public: + typedef processor type; + typedef typename config::request_type request_type; + typedef typename config::response_type response_type; + typedef typename config::message_type::ptr message_ptr; + typedef std::pair err_str_pair; + + explicit processor(bool secure, bool server) + : m_secure(secure) + , m_server(server) {} + + virtual ~processor() {} + + /// Get the protocol version of this processor + virtual int get_version() const = 0; + + /// Returns whether or not the permessage_compress extension is implemented + /** + * Compile time flag that indicates whether this processor has implemented + * the permessage_compress extension. By default this is false. + */ + virtual bool has_permessage_compress() const { + return false; + } + + /// Initializes extensions based on the Sec-WebSocket-Extensions header + /** + * Reads the Sec-WebSocket-Extensions header and determines if any of the + * requested extensions are supported by this processor. If they are their + * settings data is initialized. + */ + virtual err_str_pair negotiate_extensions(request_type const & request) { + return err_str_pair(); + } + + /// validate a WebSocket handshake request for this version + /** + * @param request The WebSocket handshake request to validate. + * is_websocket_handshake(request) must be true and + * get_websocket_version(request) must equal this->get_version(). + * + * @return A status code, 0 on success, non-zero for specific sorts of + * failure + */ + virtual lib::error_code validate_handshake(request_type const & request) + const = 0; + + /// Calculate the appropriate response for this websocket request + /** + * @param req The request to process + * + * @param subprotocol The subprotocol in use + * + * @param res The response to store the processed response in + * + * @return An error code, 0 on success, non-zero for other errors + */ + virtual lib::error_code process_handshake(request_type const & req, + std::string const & subprotocol, response_type& res) const = 0; + + /// Fill in an HTTP request for an outgoing connection handshake + /** + * @param req The request to process. + * + * @return An error code, 0 on success, non-zero for other errors + */ + virtual lib::error_code client_handshake_request(request_type & req, + uri_ptr uri, std::vector const & subprotocols) const = 0; + + /// Validate the server's response to an outgoing handshake request + /** + * @param req The original request sent + * + * @param res The reponse to generate + * + * @return An error code, 0 on success, non-zero for other errors + */ + virtual lib::error_code validate_server_handshake_response(request_type + const & req, response_type & res) const = 0; + + /// Given a completed response, get the raw bytes to put on the wire + virtual std::string get_raw(response_type const & request) const = 0; + + /// Return the value of the header containing the CORS origin. + virtual std::string const & get_origin(request_type const & request) + const = 0; + + /// Extracts requested subprotocols from a handshake request + /** + * Extracts a list of all subprotocols that the client has requested in the + * given opening handshake request. + * + * @param req The request to extract from + * + * @param subprotocol_list A reference to a vector of strings to store the + * results in. + */ + virtual lib::error_code extract_subprotocols(const request_type & req, + std::vector & subprotocol_list) = 0; + + /// Extracts client uri from a handshake request + virtual uri_ptr get_uri(request_type const & request) const = 0; + + /// process new websocket connection bytes + /** + * WebSocket connections are a continous stream of bytes that must be + * interpreted by a protocol processor into discrete frames. + * + * @param buf Buffer from which bytes should be read. + * + * @param len Length of buffer + * + * @param ec Reference to an error code to return any errors in + * + * @return Number of bytes processed + */ + virtual size_t consume(uint8_t *buf, size_t len, lib::error_code & ec) = 0; + + /// Checks if there is a message ready + /** + * Checks if the most recent consume operation processed enough bytes to + * complete a new WebSocket message. The message can be retrieved by calling + * get_message() which will reset the internal state to not-ready and allow + * consume to read more bytes. + * + * @return Whether or not a message is ready. + */ + virtual bool ready() const = 0; + + /// Retrieves the most recently processed message + /** + * Retrieves a shared pointer to the recently completed message if there is + * one. If ready() returns true then there is a message available. + * Retrieving the message with get_message will reset the state of ready. + * As such, each new message may be retrieved only once. Calling get_message + * when there is no message available will result in a null pointer being + * returned. + * + * @return A pointer to the most recently processed message or a null shared + * pointer. + */ + virtual message_ptr get_message() = 0; + + /// Tests whether the processor is in a fatal error state + virtual bool get_error() const = 0; + + /// Retrieves the number of bytes presently needed by the processor + /// This value may be used as a hint to the transport layer as to how many + /// bytes to wait for before running consume again. + virtual size_t get_bytes_needed() const { + return 1; + } + + /// Prepare a data message for writing + /** + * Performs validation, masking, compression, etc. will return an error if + * there was an error, otherwise msg will be ready to be written + */ + virtual lib::error_code prepare_data_frame(message_ptr in, message_ptr out) + = 0; + + /// Prepare a ping frame + /** + * Ping preparation is entirely state free. There is no payload validation + * other than length. Payload need not be UTF-8. + * + * @param in The string to use for the ping payload + * + * @param out The message buffer to prepare the ping in. + * + * @return Status code, zero on success, non-zero on failure + */ + virtual lib::error_code prepare_ping(std::string const & in, + message_ptr out) const = 0; + + /// Prepare a pong frame + /** + * Pong preparation is entirely state free. There is no payload validation + * other than length. Payload need not be UTF-8. + * + * @param in The string to use for the pong payload + * + * @param out The message buffer to prepare the pong in. + * + * @return Status code, zero on success, non-zero on failure + */ + virtual lib::error_code prepare_pong(std::string const & in, + message_ptr out) const = 0; + + /// Prepare a close frame + /** + * Close preparation is entirely state free. The code and reason are both + * subject to validation. Reason must be valid UTF-8. Code must be a valid + * un-reserved WebSocket close code. Use close::status::no_status to + * indicate no code. If no code is supplied a reason may not be specified. + * + * @param code The close code to send + * + * @param reason The reason string to send + * + * @param out The message buffer to prepare the fame in + * + * @return Status code, zero on success, non-zero on failure + */ + virtual lib::error_code prepare_close(close::status::value code, + std::string const & reason, message_ptr out) const = 0; +protected: + bool const m_secure; + bool const m_server; +}; + +} // namespace processor +} // namespace websocketpp + +#endif //WEBSOCKETPP_PROCESSOR_HPP diff --git a/src/third_party/websocketpp/websocketpp/random/none.hpp b/src/third_party/websocketpp/websocketpp/random/none.hpp new file mode 100644 index 00000000..60fe7728 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/random/none.hpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_RANDOM_NONE_HPP +#define WEBSOCKETPP_RANDOM_NONE_HPP + +namespace websocketpp { +namespace random { +/// Stub RNG policy that always returns 0 +namespace none { + +/// Thread safe stub "random" integer generator. +/** + * This template class provides a random integer stub. The interface mimics the + * WebSocket++ RNG generator classes but the generater function always returns + * zero. This can be used to stub out the RNG for unit and performance testing. + * + * Call operator() to generate the next number + */ +template +class int_generator { + public: + int_generator() {} + + /// advances the engine's state and returns the generated value + int_type operator()() { + return 0; + } +}; + +} // namespace none +} // namespace random +} // namespace websocketpp + +#endif //WEBSOCKETPP_RANDOM_NONE_HPP diff --git a/src/third_party/websocketpp/websocketpp/random/random_device.hpp b/src/third_party/websocketpp/websocketpp/random/random_device.hpp new file mode 100644 index 00000000..7645399b --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/random/random_device.hpp @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_RANDOM_RANDOM_DEVICE_HPP +#define WEBSOCKETPP_RANDOM_RANDOM_DEVICE_HPP + +#include + +namespace websocketpp { +namespace random { +/// RNG policy based on std::random_device or boost::random_device +namespace random_device { + +/// Thread safe non-deterministic random integer generator. +/** + * This template class provides thread safe non-deterministic random integer + * generation. Numbers are produced in a uniformly distributed range from the + * smallest to largest value that int_type can store. + * + * Thread-safety is provided via locking based on the concurrency template + * parameter. + * + * Non-deterministic RNG is provided via websocketpp::lib which uses either + * C++11 or Boost 1.47+'s random_device class. + * + * Call operator() to generate the next number + */ +template +class int_generator { + public: + typedef typename concurrency::scoped_lock_type scoped_lock_type; + typedef typename concurrency::mutex_type mutex_type; + + /// constructor + //mac TODO: figure out if signed types present a range problem + int_generator() {} + + /// advances the engine's state and returns the generated value + int_type operator()() { + scoped_lock_type guard(m_lock); + return m_dis(m_rng); + } + private: + + + lib::random_device m_rng; + lib::uniform_int_distribution m_dis; + + mutex_type m_lock; +}; + +} // namespace random_device +} // namespace random +} // namespace websocketpp + +#endif //WEBSOCKETPP_RANDOM_RANDOM_DEVICE_HPP diff --git a/src/third_party/websocketpp/websocketpp/roles/client_endpoint.hpp b/src/third_party/websocketpp/websocketpp/roles/client_endpoint.hpp new file mode 100644 index 00000000..7ce05ece --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/roles/client_endpoint.hpp @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_CLIENT_ENDPOINT_HPP +#define WEBSOCKETPP_CLIENT_ENDPOINT_HPP + +#include +#include + +#include + +namespace websocketpp { + + +/// Client endpoint role based on the given config +/** + * + */ +template +class client : public endpoint,config> { +public: + /// Type of this endpoint + typedef client type; + + /// Type of the endpoint concurrency component + typedef typename config::concurrency_type concurrency_type; + /// Type of the endpoint transport component + typedef typename config::transport_type transport_type; + + /// Type of the connections this server will create + typedef connection connection_type; + /// Type of a shared pointer to the connections this server will create + typedef typename connection_type::ptr connection_ptr; + + /// Type of the connection transport component + typedef typename transport_type::transport_con_type transport_con_type; + /// Type of a shared pointer to the connection transport component + typedef typename transport_con_type::ptr transport_con_ptr; + + /// Type of the endpoint component of this server + typedef endpoint endpoint_type; + + explicit client() : endpoint_type(false) + { + endpoint_type::m_alog.write(log::alevel::devel, + "client constructor"); + } + + /// Get a new connection + /** + * Creates and returns a pointer to a new connection to the given URI + * suitable for passing to connect(connection_ptr). This method allows + * applying connection specific settings before performing the opening + * handshake. + * + * @return A connection_ptr to the new connection + */ + connection_ptr get_connection(uri_ptr location, lib::error_code &ec) { + if (location->get_secure() && !transport_type::is_secure()) { + ec = error::make_error_code(error::endpoint_not_secure); + return connection_ptr(); + } + + // create connection + connection_ptr con = endpoint_type::create_connection(); + + if (!con) { + ec = error::make_error_code(error::con_creation_failed); + return con; + } + + con->set_uri(location); + + // Success + ec = lib::error_code(); + return con; + } + + /// Get a new connection (string version) + /** + * Creates and returns a pointer to a new connection to the given URI + * suitable for passing to connect(connection_ptr). This overload allows + * default construction of the uri_ptr from a standard string. + * + * @return A connection_ptr to the new connection + */ + connection_ptr get_connection(const std::string& u, lib::error_code &ec) { + // parse uri + uri_ptr location(new uri(u)); + + if (!location->get_valid()) { + ec = error::make_error_code(error::invalid_uri); + return connection_ptr(); + } + + return get_connection(location, ec); + } + + /// Begin the connection process for the given connection + /** + * Initiates the opening connection handshake for connection con. Exact + * behavior depends on the underlying transport policy. + * + * @param con The connection to connect + * + * @return The pointer to the connection originally passed in. + */ + connection_ptr connect(connection_ptr con) { + // Ask transport to perform a connection + transport_type::async_connect( + lib::static_pointer_cast(con), + con->get_uri(), + lib::bind( + &type::handle_connect, + this, + lib::placeholders::_1, + lib::placeholders::_2 + ) + ); + + return con; + } + + + + // connect(...) +private: + // handle_connect + void handle_connect(connection_hdl hdl, const lib::error_code & ec) { + lib::error_code hdl_ec; + connection_ptr con = endpoint_type::get_con_from_hdl(hdl,hdl_ec); + + if (hdl_ec == error::bad_connection) { + endpoint_type::m_elog.write(log::elevel::fatal, + "handle_connect got an invalid handle back"); + } else if (hdl_ec) { + // There was some other unknown error attempting to convert the hdl + // to a connection. + endpoint_type::m_elog.write(log::elevel::fatal, + "handle_connect error in get_con_from_hdl: "+hdl_ec.message()); + //con->terminate(); + } else if (ec) { + // TODO + // Set connection's failure reasons + con->terminate(ec); + + endpoint_type::m_elog.write(log::elevel::rerror, + "handle_connect error: "+ec.message()); + } else { + endpoint_type::m_alog.write(log::alevel::connect, + "Successful connection"); + + con->start(); + } + } +}; + +} // namespace websocketpp + +#endif //WEBSOCKETPP_CLIENT_ENDPOINT_HPP diff --git a/src/third_party/websocketpp/websocketpp/roles/server_endpoint.hpp b/src/third_party/websocketpp/websocketpp/roles/server_endpoint.hpp new file mode 100644 index 00000000..f2bb7efb --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/roles/server_endpoint.hpp @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_SERVER_ENDPOINT_HPP +#define WEBSOCKETPP_SERVER_ENDPOINT_HPP + +#include +#include + +#include + +namespace websocketpp { + + +/// Server endpoint role based on the given config +/** + * + */ +template +class server : public endpoint,config> { +public: + /// Type of this endpoint + typedef server type; + + /// Type of the endpoint concurrency component + typedef typename config::concurrency_type concurrency_type; + /// Type of the endpoint transport component + typedef typename config::transport_type transport_type; + + /// Type of the connections this server will create + typedef connection connection_type; + /// Type of a shared pointer to the connections this server will create + typedef typename connection_type::ptr connection_ptr; + + /// Type of the connection transport component + typedef typename transport_type::transport_con_type transport_con_type; + /// Type of a shared pointer to the connection transport component + typedef typename transport_con_type::ptr transport_con_ptr; + + /// Type of the endpoint component of this server + typedef endpoint endpoint_type; + + + // TODO: clean up these types + + explicit server() : endpoint_type(true) + { + endpoint_type::m_alog.write(log::alevel::devel, + "server constructor"); + } + + // return an initialized connection_ptr. Call start() on this object to + // begin the processing loop. + connection_ptr get_connection() { + connection_ptr con = endpoint_type::create_connection(); + + return con; + } + + // Starts the server's async connection acceptance loop. + void start_accept() { + connection_ptr con = get_connection(); + + transport_type::async_accept( + lib::static_pointer_cast(con), + lib::bind( + &type::handle_accept, + this, + lib::placeholders::_1, + lib::placeholders::_2 + ) + ); + } + + void handle_accept(connection_hdl hdl, const lib::error_code& ec) { + lib::error_code hdl_ec; + connection_ptr con = endpoint_type::get_con_from_hdl(hdl,hdl_ec); + + if (hdl_ec == error::bad_connection) { + // The connection we were trying to connect went out of scope + // This really shouldn't happen + endpoint_type::m_elog.write(log::elevel::fatal, + "handle_accept got an invalid handle back"); + //con->terminate(); + } else if (hdl_ec) { + // There was some other unknown error attempting to convert the hdl + // to a connection. + endpoint_type::m_elog.write(log::elevel::fatal, + "handle_accept error in get_con_from_hdl: "+hdl_ec.message()); + //con->terminate(); + } else { + if (ec) { + con->terminate(ec); + + endpoint_type::m_elog.write(log::elevel::rerror, + "handle_accept error: "+ec.message()); + } else { + con->start(); + } + } + + // TODO: are there cases where we should terminate this loop? + start_accept(); + } +private: +}; + +} // namespace websocketpp + +#endif //WEBSOCKETPP_SERVER_ENDPOINT_HPP diff --git a/src/third_party/websocketpp/websocketpp/server.hpp b/src/third_party/websocketpp/websocketpp/server.hpp new file mode 100644 index 00000000..50d33d10 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/server.hpp @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_SERVER_HPP +#define WEBSOCKETPP_SERVER_HPP + +#include + +#endif //WEBSOCKETPP_SERVER_HPP diff --git a/src/third_party/websocketpp/websocketpp/sha1/license.txt b/src/third_party/websocketpp/websocketpp/sha1/license.txt new file mode 100644 index 00000000..5e852eef --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/sha1/license.txt @@ -0,0 +1,14 @@ +Copyright (C) 1998, 2009 +Paul E. Jones + +Freeware Public License (FPL) + +This software is licensed as "freeware." Permission to distribute +this software in source and binary forms, including incorporation +into other products, is hereby granted without a fee. THIS SOFTWARE +IS PROVIDED 'AS IS' AND WITHOUT ANY EXPRESSED OR IMPLIED WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHOR SHALL NOT BE HELD +LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE, EITHER +DIRECTLY OR INDIRECTLY, INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA +OR DATA BEING RENDERED INACCURATE. diff --git a/src/third_party/websocketpp/websocketpp/sha1/sha1.hpp b/src/third_party/websocketpp/websocketpp/sha1/sha1.hpp new file mode 100644 index 00000000..154196ac --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/sha1/sha1.hpp @@ -0,0 +1,406 @@ +/* + * sha1.hpp + * + * Copyright (C) 1998, 2009 + * Paul E. Jones + * All Rights Reserved. + * + * Modifications were done in 2012-13 by Peter Thorson (webmaster@zaphoyd.com) + * to allow header only usage of the library and use C++ features to better + * support C++ usage. These changes are distributed under the original freeware + * license included below + * + * Freeware Public License (FPL) + * + * This software is licensed as "freeware." Permission to distribute + * this software in source and binary forms, including incorporation + * into other products, is hereby granted without a fee. THIS SOFTWARE + * IS PROVIDED 'AS IS' AND WITHOUT ANY EXPRESSED OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHOR SHALL NOT BE HELD + * LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE, EITHER + * DIRECTLY OR INDIRECTLY, INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA + * OR DATA BEING RENDERED INACCURATE. + * + ***************************************************************************** + * + * Description: + * This class implements the Secure Hashing Standard as defined + * in FIPS PUB 180-1 published April 17, 1995. + * + * Many of the variable names in this class, especially the single + * character names, were used because those were the names used + * in the publication. + * + * The Secure Hashing Standard, which uses the Secure Hashing + * Algorithm (SHA), produces a 160-bit message digest for a + * given data stream. In theory, it is highly improbable that + * two messages will produce the same message digest. Therefore, + * this algorithm can serve as a means of providing a "fingerprint" + * for a message. + * + * Portability Issues: + * SHA-1 is defined in terms of 32-bit "words". This code was + * written with the expectation that the processor has at least + * a 32-bit machine word size. If the machine word size is larger, + * the code should still function properly. One caveat to that + * is that the input functions taking characters and character arrays + * assume that only 8 bits of information are stored in each character. + * + * Caveats: + * SHA-1 is designed to work with messages less than 2^64 bits long. + * Although SHA-1 allows a message digest to be generated for + * messages of any number of bits less than 2^64, this implementation + * only works with messages with a length that is a multiple of 8 + * bits. + * + ***************************************************************************** + */ + +#ifndef _SHA1_H_ +#define _SHA1_H_ + +#include + +namespace websocketpp { + +/// Provides SHA1 hashing functionality +class sha1 { +public: + sha1() { + reset(); + } + + virtual ~sha1() {} + + /// Re-initialize the class + void reset() { + length_low = 0; + length_high = 0; + message_block_index = 0; + + H[0] = 0x67452301; + H[1] = 0xEFCDAB89; + H[2] = 0x98BADCFE; + H[3] = 0x10325476; + H[4] = 0xC3D2E1F0; + + computed = false; + corrupted = false; + } + + /// Extract the message digest as a raw integer array + /** + * @param [out] message_digest_array Integer array to store the message in + * @return Whether or not the extraction was sucessful + */ + bool get_raw_digest(uint32_t * message_digest_array) { + if (corrupted) { + return false; + } + + if (!computed) { + pad_message(); + computed = true; + } + + for (int i = 0; i < 5; i++) { + message_digest_array[i] = H[i]; + } + + return true; + } + + /// Provide input to SHA1 + /** + * @param [in] message_array The input bytes + * @param [in] length Length of the message array + */ + void input(unsigned char const * message_array, uint32_t length) { + if (!length) { + return; + } + + if (computed || corrupted) { + corrupted = true; + return; + } + + while (length-- && !corrupted) { +// Suppresses Visual Studio code analysis for write overrun. It doesn't know the +// index into Message_Block is protected by checking length. +// +// TODO: is there a more compatible way to write the original code to avoid +// this sort of warning? +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(suppress: 6386) +#endif + message_block[message_block_index++] = (*message_array & 0xFF); +#ifdef _MSC_VER +#pragma warning(pop) +#endif + + length_low += 8; + length_low &= 0xFFFFFFFF; // Force it to 32 bits + if (length_low == 0) { + length_high++; + length_high &= 0xFFFFFFFF; // Force it to 32 bits + if (length_high == 0) { + corrupted = true; // Message is too long + } + } + + if (message_block_index == 64) { + process_message_block(); + } + + message_array++; + } + } + + /// Provide input to SHA1 + /** + * Overload with signed message array + * + * @param [in] message_array The input bytes + * @param [in] length Length of the message array + */ + void input(char const * message_array, uint32_t length) { + input(reinterpret_cast(message_array), length); + } + + /// Provide input to SHA1 + /** + * Overload with a single unsigned char + * + * @param [in] message_element The character to input + */ + void input(unsigned char message_element) { + input(&message_element, 1); + } + + /// Provide input to SHA1 + /** + * Overload with a single signed char + * + * @param [in] message_element The character to input + */ + void input(char message_element) { + input(reinterpret_cast(&message_element), 1); + } + + /// Provide input to SHA1 + /** + * Overload via signed char array stream input + * + * @param [in] message_array The character array to input + */ + sha1& operator<<(char const * message_array) { + char const * p = message_array; + + while(*p) { + input(*p); + p++; + } + + return *this; + } + + /// Provide input to SHA1 + /** + * Overload via unsigned char array stream input + * + * @param [in] message_array The character array to input + */ + sha1& operator<<(unsigned char const * message_array) { + unsigned char const * p = message_array; + + while(*p) { + input(*p); + p++; + } + + return *this; + } + + /// Provide input to SHA1 + /** + * Overload via signed char stream input + * + * @param [in] message_element The character to input + */ + sha1& operator<<(char message_element) { + input((unsigned char *) &message_element, 1); + + return *this; + } + + /// Provide input to SHA1 + /** + * Overload via unsigned char stream input + * + * @param [in] message_element The character to input + */ + sha1& operator<<(unsigned char message_element) { + input(&message_element, 1); + + return *this; + } +private: + /// Process the next 512 bits of the message + /** + * Many of the variable names in this function, especially the single + * character names, were used because those were the names used + * in the publication. + */ + void process_message_block() { + // Constants defined for SHA-1 + uint32_t const K[] = { 0x5A827999, + 0x6ED9EBA1, + 0x8F1BBCDC, + 0xCA62C1D6 }; + uint32_t temp; // Temporary word value + uint32_t W[80]; // Word sequence + uint32_t A, B, C, D, E; // Word buffers + + // Initialize the first 16 words in the array W + for (int t = 0; t < 16; t++) { + W[t] = ((uint32_t) message_block[t * 4]) << 24; + W[t] |= ((uint32_t) message_block[t * 4 + 1]) << 16; + W[t] |= ((uint32_t) message_block[t * 4 + 2]) << 8; + W[t] |= ((uint32_t) message_block[t * 4 + 3]); + } + + for (int t = 16; t < 80; t++) { + W[t] = CircularShift(1,W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]); + } + + A = H[0]; + B = H[1]; + C = H[2]; + D = H[3]; + E = H[4]; + + for (int t = 0; t < 20; t++) { + temp = CircularShift(5,A) + ((B & C) | ((~B) & D)) + E + W[t] + K[0]; + temp &= 0xFFFFFFFF; + E = D; + D = C; + C = CircularShift(30,B); + B = A; + A = temp; + } + + for (int t = 20; t < 40; t++) { + temp = CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[1]; + temp &= 0xFFFFFFFF; + E = D; + D = C; + C = CircularShift(30,B); + B = A; + A = temp; + } + + for (int t = 40; t < 60; t++) { + temp = CircularShift(5,A) + + ((B & C) | (B & D) | (C & D)) + E + W[t] + K[2]; + temp &= 0xFFFFFFFF; + E = D; + D = C; + C = CircularShift(30,B); + B = A; + A = temp; + } + + for (int t = 60; t < 80; t++) { + temp = CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[3]; + temp &= 0xFFFFFFFF; + E = D; + D = C; + C = CircularShift(30,B); + B = A; + A = temp; + } + + H[0] = (H[0] + A) & 0xFFFFFFFF; + H[1] = (H[1] + B) & 0xFFFFFFFF; + H[2] = (H[2] + C) & 0xFFFFFFFF; + H[3] = (H[3] + D) & 0xFFFFFFFF; + H[4] = (H[4] + E) & 0xFFFFFFFF; + + message_block_index = 0; + } + + /// Pads the current message block to 512 bits + /** + * According to the standard, the message must be padded to an even + * 512 bits. The first padding bit must be a '1'. The last 64 bits + * represent the length of the original message. All bits in between + * should be 0. This function will pad the message according to those + * rules by filling the message_block array accordingly. It will also + * call ProcessMessageBlock() appropriately. When it returns, it + * can be assumed that the message digest has been computed. + */ + void pad_message() { + // Check to see if the current message block is too small to hold + // the initial padding bits and length. If so, we will pad the + // block, process it, and then continue padding into a second block. + if (message_block_index > 55) { + message_block[message_block_index++] = 0x80; + while(message_block_index < 64) { + message_block[message_block_index++] = 0; + } + + process_message_block(); + + while(message_block_index < 56) { + message_block[message_block_index++] = 0; + } + } else { + message_block[message_block_index++] = 0x80; + while(message_block_index < 56) { + message_block[message_block_index++] = 0; + } + + } + + // Store the message length as the last 8 octets + message_block[56] = (length_high >> 24) & 0xFF; + message_block[57] = (length_high >> 16) & 0xFF; + message_block[58] = (length_high >> 8) & 0xFF; + message_block[59] = (length_high) & 0xFF; + message_block[60] = (length_low >> 24) & 0xFF; + message_block[61] = (length_low >> 16) & 0xFF; + message_block[62] = (length_low >> 8) & 0xFF; + message_block[63] = (length_low) & 0xFF; + + process_message_block(); + } + + /// Performs a circular left shift operation + /** + * @param [in] bits How many bits to shift + * @param [in] word The word to shift + * @return The shifted word + */ + inline uint32_t CircularShift(int bits, uint32_t word) { + return ((word << bits) & 0xFFFFFFFF) | ((word & 0xFFFFFFFF) >> (32-bits)); + } + + uint32_t H[5]; // Message digest buffers + + uint32_t length_low; // Message length in bits + uint32_t length_high; // Message length in bits + + unsigned char message_block[64]; // 512-bit message blocks + int message_block_index; // Index into message block array + + bool computed; // Is the digest computed? + bool corrupted; // Is the message digest corruped? + +}; + +} // namespace websocketpp + +#endif // _SHA1_H_ diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/base.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/base.hpp new file mode 100644 index 00000000..a868ad9a --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/transport/asio/base.hpp @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_TRANSPORT_ASIO_BASE_HPP +#define WEBSOCKETPP_TRANSPORT_ASIO_BASE_HPP + +#include +#include +#include + +#include + +#include + +namespace websocketpp { +namespace transport { +/// Transport policy that uses boost::asio +/** + * This policy uses a single boost::asio io_service to provide transport + * services to a WebSocket++ endpoint. + */ +namespace asio { + +typedef lib::function + socket_shutdown_handler; + +/// Asio transport errors +namespace error { +enum value { + /// Catch-all error for transport policy errors that don't fit in other + /// categories + general = 1, + + /// async_read_at_least call requested more bytes than buffer can store + invalid_num_bytes, + + /// there was an error in the underlying transport library + pass_through, + + /// The connection to the requested proxy server failed + proxy_failed, + + /// Invalid Proxy URI + proxy_invalid, + + /// Invalid host or service + invalid_host_service +}; + +/// Asio transport error category +class category : public lib::error_category { +public: + char const * name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ { + return "websocketpp.transport.asio"; + } + + std::string message(int value) const { + switch(value) { + case error::general: + return "Generic asio transport policy error"; + case error::invalid_num_bytes: + return "async_read_at_least call requested more bytes than buffer can store"; + case error::pass_through: + return "Underlying Transport Error"; + case error::proxy_failed: + return "Proxy connection failed"; + case error::proxy_invalid: + return "Invalid proxy URI"; + case error::invalid_host_service: + return "Invalid host or service"; + default: + return "Unknown"; + } + } +}; + +/// Get a reference to a static copy of the asio transport error category +inline lib::error_category const & get_category() { + static category instance; + return instance; +} + +/// Create an error code with the given value and the asio transport category +inline lib::error_code make_error_code(error::value e) { + return lib::error_code(static_cast(e), get_category()); +} + +} // namespace error +} // namespace asio +} // namespace transport +} // namespace websocketpp + +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_ +template<> struct is_error_code_enum +{ + static bool const value = true; +}; +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_ +#endif // WEBSOCKETPP_TRANSPORT_ASIO_HPP diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/connection.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/connection.hpp new file mode 100644 index 00000000..545dc818 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/transport/asio/connection.hpp @@ -0,0 +1,920 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_TRANSPORT_ASIO_CON_HPP +#define WEBSOCKETPP_TRANSPORT_ASIO_CON_HPP + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +namespace websocketpp { +namespace transport { +namespace asio { + +typedef lib::function tcp_init_handler; + +/// Boost Asio based connection transport component +/** + * transport::asio::connection implements a connection transport component using + * Boost ASIO that works with the transport::asio::endpoint endpoint transport + * component. + */ +template +class connection : public config::socket_type::socket_con_type { +public: + /// Type of this connection transport component + typedef connection type; + /// Type of a shared pointer to this connection transport component + typedef lib::shared_ptr ptr; + + /// Type of the socket connection component + typedef typename config::socket_type::socket_con_type socket_con_type; + /// Type of a shared pointer to the socket connection component + typedef typename socket_con_type::ptr socket_con_ptr; + /// Type of this transport's access logging policy + typedef typename config::alog_type alog_type; + /// Type of this transport's error logging policy + typedef typename config::elog_type elog_type; + + typedef typename config::request_type request_type; + typedef typename request_type::ptr request_ptr; + typedef typename config::response_type response_type; + typedef typename response_type::ptr response_ptr; + + /// Type of a pointer to the ASIO io_service being used + typedef boost::asio::io_service* io_service_ptr; + /// Type of a pointer to the ASIO timer class + typedef lib::shared_ptr timer_ptr; + + // generate and manage our own io_service + explicit connection(bool is_server, alog_type& alog, elog_type& elog) + : m_is_server(is_server) + , m_alog(alog) + , m_elog(elog) + { + m_alog.write(log::alevel::devel,"asio con transport constructor"); + } + + /// Get a shared pointer to this component + ptr get_shared() { + return lib::static_pointer_cast(socket_con_type::get_shared()); + } + + bool is_secure() const { + return socket_con_type::is_secure(); + } + + /// Finish constructing the transport + /** + * init_asio is called once immediately after construction to initialize + * boost::asio components to the io_service + * + * TODO: this method is not protected because the endpoint needs to call it. + * need to figure out if there is a way to friend the endpoint safely across + * different compilers. + * + * @param io_service A pointer to the io_service to register with this + * connection + * + * @return Status code for the success or failure of the initialization + */ + lib::error_code init_asio (io_service_ptr io_service) { + // do we need to store or use the io_service at this level? + m_io_service = io_service; + + //m_strand.reset(new boost::asio::strand(*io_service)); + + return socket_con_type::init_asio(io_service, m_is_server); + } + + void set_tcp_init_handler(tcp_init_handler h) { + m_tcp_init_handler = h; + } + + /// Set the proxy to connect through (exception free) + /** + * The URI passed should be a complete URI including scheme. For example: + * http://proxy.example.com:8080/ + * + * The proxy must be set up as an explicit (CONNECT) proxy allowed to + * connect to the port you specify. Traffic to the proxy is not encrypted. + * + * @param uri The full URI of the proxy to connect to. + * + * @param ec A status value + */ + void set_proxy(const std::string & uri, lib::error_code & ec) { + // TODO: return errors for illegal URIs here? + // TODO: should https urls be illegal for the moment? + m_proxy = uri; + m_proxy_data.reset(new proxy_data()); + ec = lib::error_code(); + } + + /// Set the proxy to connect through (exception) + void set_proxy(const std::string & uri) { + lib::error_code ec; + set_proxy(uri,ec); + if (ec) { throw ec; } + } + + /// Set the basic auth credentials to use (exception free) + /** + * The URI passed should be a complete URI including scheme. For example: + * http://proxy.example.com:8080/ + * + * The proxy must be set up as an explicit proxy + * + * @param username The username to send + * + * @param password The password to send + * + * @param ec A status value + */ + void set_proxy_basic_auth(const std::string & username, const + std::string & password, lib::error_code & ec) + { + if (!m_proxy_data) { + ec = make_error_code(websocketpp::error::invalid_state); + return; + } + + // TODO: username can't contain ':' + std::string val = "Basic "+base64_encode(username + ":" + password); + m_proxy_data->req.replace_header("Proxy-Authorization",val); + ec = lib::error_code(); + } + + /// Set the basic auth credentials to use (exception) + void set_proxy_basic_auth(const std::string & username, const + std::string & password) + { + lib::error_code ec; + set_proxy_basic_auth(username,password,ec); + if (ec) { throw ec; } + } + + /// Set the proxy timeout duration (exception free) + /** + * Duration is in milliseconds. Default value is based on the transport + * config + * + * @param duration The number of milliseconds to wait before aborting the + * proxy connection. + * + * @param ec A status value + */ + void set_proxy_timeout(long duration, lib::error_code & ec) { + if (!m_proxy_data) { + ec = make_error_code(websocketpp::error::invalid_state); + return; + } + + m_proxy_data->timeout_proxy = duration; + ec = lib::error_code(); + } + + /// Set the proxy timeout duration (exception) + void set_proxy_timeout(long duration) { + lib::error_code ec; + set_proxy_timeout(duration,ec); + if (ec) { throw ec; } + } + + const std::string & get_proxy() const { + return m_proxy; + } + + /// Get the remote endpoint address + /** + * The iostream transport has no information about the ultimate remote + * endpoint. It will return the string "iostream transport". To indicate + * this. + * + * TODO: allow user settable remote endpoint addresses if this seems useful + * + * @return A string identifying the address of the remote endpoint + */ + std::string get_remote_endpoint() const { + lib::error_code ec; + + std::string ret = socket_con_type::get_remote_endpoint(ec); + + if (ec) { + m_elog.write(log::elevel::info,ret); + return "Unknown"; + } else { + return ret; + } + } + + /// Get the connection handle + connection_hdl get_handle() const { + return m_connection_hdl; + } + + /// initialize the proxy buffers and http parsers + /** + * + * @param authority The address of the server we want the proxy to tunnel to + * in the format of a URI authority (host:port) + */ + lib::error_code proxy_init(const std::string & authority) { + if (!m_proxy_data) { + return websocketpp::error::make_error_code( + websocketpp::error::invalid_state); + } + m_proxy_data->req.set_version("HTTP/1.1"); + m_proxy_data->req.set_method("CONNECT"); + + m_proxy_data->req.set_uri(authority); + m_proxy_data->req.replace_header("Host",authority); + + return lib::error_code(); + } + + /// Call back a function after a period of time. + /** + * Sets a timer that calls back a function after the specified period of + * milliseconds. Returns a handle that can be used to cancel the timer. + * A cancelled timer will return the error code error::operation_aborted + * A timer that expired will return no error. + * + * @param duration Length of time to wait in milliseconds + * + * @param callback The function to call back when the timer has expired + * + * @return A handle that can be used to cancel the timer if it is no longer + * needed. + */ + timer_ptr set_timer(long duration, timer_handler callback) { + timer_ptr new_timer( + new boost::asio::deadline_timer( + *m_io_service, + boost::posix_time::milliseconds(duration) + ) + ); + + new_timer->async_wait( + lib::bind( + &type::handle_timer, + get_shared(), + new_timer, + callback, + lib::placeholders::_1 + ) + ); + + return new_timer; + } + + /// Timer callback + /** + * The timer pointer is included to ensure the timer isn't destroyed until + * after it has expired. + * + * @param t Pointer to the timer in question + * + * @param callback The function to call back + * + * @param ec The status code + */ + void handle_timer(timer_ptr t, timer_handler callback, const + boost::system::error_code& ec) + { + if (ec) { + if (ec == boost::asio::error::operation_aborted) { + callback(make_error_code(transport::error::operation_aborted)); + } else { + log_err(log::elevel::info,"asio handle_timer",ec); + callback(make_error_code(error::pass_through)); + } + } else { + callback(lib::error_code()); + } + } +protected: + /// Initialize transport for reading + /** + * init_asio is called once immediately after construction to initialize + * boost::asio components to the io_service + * + * The transport initialization sequence consists of the following steps: + * - Pre-init: the underlying socket is initialized to the point where + * bytes may be written. No bytes are actually written in this stage + * - Proxy negotiation: if a proxy is set, a request is made to it to start + * a tunnel to the final destination. This stage ends when the proxy is + * ready to forward the + * next byte to the remote endpoint. + * - Post-init: Perform any i/o with the remote endpoint, such as setting up + * tunnels for encryption. This stage ends when the connection is ready to + * read or write the WebSocket handshakes. At this point the original + * callback function is called. + */ + void init(init_handler callback) { + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,"asio connection init"); + } + + // TODO: pre-init timeout. Right now no implemented socket policies + // actually have an asyncronous pre-init + + socket_con_type::pre_init( + lib::bind( + &type::handle_pre_init, + get_shared(), + callback, + lib::placeholders::_1 + ) + ); + } + + void handle_pre_init(init_handler callback, const lib::error_code& ec) { + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,"asio connection handle pre_init"); + } + + if (m_tcp_init_handler) { + m_tcp_init_handler(m_connection_hdl); + } + + if (ec) { + callback(ec); + } + + // If we have a proxy set issue a proxy connect, otherwise skip to + // post_init + if (!m_proxy.empty()) { + proxy_write(callback); + } else { + post_init(callback); + } + } + + void post_init(init_handler callback) { + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,"asio connection post_init"); + } + + timer_ptr post_timer; + post_timer = set_timer( + config::timeout_socket_post_init, + lib::bind( + &type::handle_post_init_timeout, + get_shared(), + post_timer, + callback, + lib::placeholders::_1 + ) + ); + + socket_con_type::post_init( + lib::bind( + &type::handle_post_init, + get_shared(), + post_timer, + callback, + lib::placeholders::_1 + ) + ); + } + + void handle_post_init_timeout(timer_ptr post_timer, init_handler callback, + const lib::error_code& ec) + { + lib::error_code ret_ec; + + if (ec) { + if (ec == transport::error::operation_aborted) { + m_alog.write(log::alevel::devel, + "asio post init timer cancelled"); + return; + } + + log_err(log::elevel::devel,"asio handle_post_init_timeout",ec); + ret_ec = ec; + } else { + if (socket_con_type::get_ec()) { + ret_ec = socket_con_type::get_ec(); + } else { + ret_ec = make_error_code(transport::error::timeout); + } + } + + m_alog.write(log::alevel::devel,"Asio transport post-init timed out"); + socket_con_type::cancel_socket(); + callback(ret_ec); + } + + void handle_post_init(timer_ptr post_timer, init_handler callback, const + lib::error_code& ec) + { + if (ec == transport::error::operation_aborted || + post_timer->expires_from_now().is_negative()) + { + m_alog.write(log::alevel::devel,"post_init cancelled"); + return; + } + + post_timer->cancel(); + + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,"asio connection handle_post_init"); + } + + callback(ec); + } + + void proxy_write(init_handler callback) { + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,"asio connection proxy_write"); + } + + if (!m_proxy_data) { + m_elog.write(log::elevel::library, + "assertion failed: !m_proxy_data in asio::connection::proxy_write"); + callback(make_error_code(error::general)); + return; + } + + m_proxy_data->write_buf = m_proxy_data->req.raw(); + + m_bufs.push_back(boost::asio::buffer(m_proxy_data->write_buf.data(), + m_proxy_data->write_buf.size())); + + m_alog.write(log::alevel::devel,m_proxy_data->write_buf); + + // Set a timer so we don't wait forever for the proxy to respond + m_proxy_data->timer = this->set_timer( + m_proxy_data->timeout_proxy, + lib::bind( + &type::handle_proxy_timeout, + get_shared(), + callback, + lib::placeholders::_1 + ) + ); + + // Send proxy request + boost::asio::async_write( + socket_con_type::get_next_layer(), + m_bufs, + lib::bind( + &type::handle_proxy_write, + get_shared(), + callback, + lib::placeholders::_1 + ) + ); + } + + void handle_proxy_timeout(init_handler callback, const lib::error_code & ec) { + if (ec == transport::error::operation_aborted) { + m_alog.write(log::alevel::devel, + "asio handle_proxy_write timer cancelled"); + return; + } else if (ec) { + log_err(log::elevel::devel,"asio handle_proxy_write",ec); + callback(ec); + } else { + m_alog.write(log::alevel::devel, + "asio handle_proxy_write timer expired"); + socket_con_type::cancel_socket(); + callback(make_error_code(transport::error::timeout)); + } + } + + void handle_proxy_write(init_handler callback, const + boost::system::error_code& ec) + { + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,"asio connection handle_proxy_write"); + } + + m_bufs.clear(); + + // Timer expired or the operation was aborted for some reason. + // Whatever aborted it will be issuing the callback so we are safe to + // return + if (ec == boost::asio::error::operation_aborted || + m_proxy_data->timer->expires_from_now().is_negative()) + { + m_elog.write(log::elevel::devel,"write operation aborted"); + return; + } + + if (ec) { + log_err(log::elevel::info,"asio handle_proxy_write",ec); + m_proxy_data->timer->cancel(); + callback(make_error_code(error::pass_through)); + return; + } + + proxy_read(callback); + } + + void proxy_read(init_handler callback) { + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,"asio connection proxy_read"); + } + + if (!m_proxy_data) { + m_elog.write(log::elevel::library, + "assertion failed: !m_proxy_data in asio::connection::proxy_read"); + m_proxy_data->timer->cancel(); + callback(make_error_code(error::general)); + return; + } + + boost::asio::async_read_until( + socket_con_type::get_next_layer(), + m_proxy_data->read_buf, + "\r\n\r\n", + lib::bind( + &type::handle_proxy_read, + get_shared(), + callback, + lib::placeholders::_1, + lib::placeholders::_2 + ) + ); + } + + void handle_proxy_read(init_handler callback, const + boost::system::error_code& ec, size_t bytes_transferred) + { + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,"asio connection handle_proxy_read"); + } + + // Timer expired or the operation was aborted for some reason. + // Whatever aborted it will be issuing the callback so we are safe to + // return + if (ec == boost::asio::error::operation_aborted || + m_proxy_data->timer->expires_from_now().is_negative()) + { + m_elog.write(log::elevel::devel,"read operation aborted"); + return; + } + + // At this point there is no need to wait for the timer anymore + m_proxy_data->timer->cancel(); + + if (ec) { + m_elog.write(log::elevel::info, + "asio handle_proxy_read error: "+ec.message()); + callback(make_error_code(error::pass_through)); + } else { + if (!m_proxy_data) { + m_elog.write(log::elevel::library, + "assertion failed: !m_proxy_data in asio::connection::handle_proxy_read"); + callback(make_error_code(error::general)); + return; + } + + std::istream input(&m_proxy_data->read_buf); + + m_proxy_data->res.consume(input); + + if (!m_proxy_data->res.headers_ready()) { + // we read until the headers were done in theory but apparently + // they aren't. Internal endpoint error. + callback(make_error_code(error::general)); + return; + } + + m_alog.write(log::alevel::devel,m_proxy_data->res.raw()); + + if (m_proxy_data->res.get_status_code() != http::status_code::ok) { + // got an error response back + // TODO: expose this error in a programmatically accessible way? + // if so, see below for an option on how to do this. + std::stringstream s; + s << "Proxy connection error: " + << m_proxy_data->res.get_status_code() + << " (" + << m_proxy_data->res.get_status_msg() + << ")"; + m_elog.write(log::elevel::info,s.str()); + callback(make_error_code(error::proxy_failed)); + return; + } + + // we have successfully established a connection to the proxy, now + // we can continue and the proxy will transparently forward the + // WebSocket connection. + + // TODO: decide if we want an on_proxy callback that would allow + // access to the proxy response. + + // free the proxy buffers and req/res objects as they aren't needed + // anymore + m_proxy_data.reset(); + + // Continue with post proxy initialization + post_init(callback); + } + } + + /// read at least num_bytes bytes into buf and then call handler. + /** + * + * + */ + void async_read_at_least(size_t num_bytes, char *buf, size_t len, + read_handler handler) + { + if (m_alog.static_test(log::alevel::devel)) { + std::stringstream s; + s << "asio async_read_at_least: " << num_bytes; + m_alog.write(log::alevel::devel,s.str()); + } + + if (num_bytes > len) { + m_elog.write(log::elevel::devel, + "asio async_read_at_least error::invalid_num_bytes"); + handler(make_error_code(transport::error::invalid_num_bytes), + size_t(0)); + return; + } + + boost::asio::async_read( + socket_con_type::get_socket(), + boost::asio::buffer(buf,len), + boost::asio::transfer_at_least(num_bytes), + lib::bind( + &type::handle_async_read, + get_shared(), + handler, + lib::placeholders::_1, + lib::placeholders::_2 + ) + ); + } + + void handle_async_read(read_handler handler, const + boost::system::error_code& ec, size_t bytes_transferred) + { + if (!ec) { + handler(lib::error_code(), bytes_transferred); + return; + } + + // translate boost error codes into more lib::error_codes + if (ec == boost::asio::error::eof) { + handler(make_error_code(transport::error::eof), + bytes_transferred); + } else if (ec.value() == 335544539) { + handler(make_error_code(transport::error::tls_short_read), + bytes_transferred); + } else { + log_err(log::elevel::info,"asio async_read_at_least",ec); + handler(make_error_code(transport::error::pass_through), + bytes_transferred); + } + } + + void async_write(const char* buf, size_t len, write_handler handler) { + m_bufs.push_back(boost::asio::buffer(buf,len)); + + boost::asio::async_write( + socket_con_type::get_socket(), + m_bufs, + lib::bind( + &type::handle_async_write, + get_shared(), + handler, + lib::placeholders::_1 + ) + ); + } + + void async_write(const std::vector& bufs, write_handler handler) { + std::vector::const_iterator it; + + for (it = bufs.begin(); it != bufs.end(); ++it) { + m_bufs.push_back(boost::asio::buffer((*it).buf,(*it).len)); + } + + boost::asio::async_write( + socket_con_type::get_socket(), + m_bufs, + lib::bind( + &type::handle_async_write, + get_shared(), + handler, + lib::placeholders::_1 + ) + ); + } + + void handle_async_write(write_handler handler, const + boost::system::error_code& ec) + { + m_bufs.clear(); + if (ec) { + log_err(log::elevel::info,"asio async_write",ec); + handler(make_error_code(transport::error::pass_through)); + } else { + handler(lib::error_code()); + } + } + + /// Set Connection Handle + /** + * See common/connection_hdl.hpp for information + * + * @param hdl A connection_hdl that the transport will use to refer + * to itself + */ + void set_handle(connection_hdl hdl) { + m_connection_hdl = hdl; + socket_con_type::set_handle(hdl); + } + + /// Trigger the on_interrupt handler + /** + * This needs to be thread safe + * + * Might need a strand at some point? + */ + lib::error_code interrupt(interrupt_handler handler) { + m_io_service->post(handler); + return lib::error_code(); + } + + lib::error_code dispatch(dispatch_handler handler) { + m_io_service->post(handler); + return lib::error_code(); + } + + /*void handle_interrupt(interrupt_handler handler) { + handler(); + }*/ + + /// close and clean up the underlying socket + void async_shutdown(shutdown_handler callback) { + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel,"asio connection async_shutdown"); + } + + timer_ptr shutdown_timer; + shutdown_timer = set_timer( + config::timeout_socket_shutdown, + lib::bind( + &type::handle_async_shutdown_timeout, + get_shared(), + shutdown_timer, + callback, + lib::placeholders::_1 + ) + ); + + socket_con_type::async_shutdown( + lib::bind( + &type::handle_async_shutdown, + get_shared(), + shutdown_timer, + callback, + lib::placeholders::_1 + ) + ); + } + + void handle_async_shutdown_timeout(timer_ptr shutdown_timer, init_handler + callback, const lib::error_code& ec) + { + lib::error_code ret_ec; + + if (ec) { + if (ec == transport::error::operation_aborted) { + m_alog.write(log::alevel::devel, + "asio socket shutdown timer cancelled"); + return; + } + + log_err(log::elevel::devel,"asio handle_async_socket_shutdown",ec); + ret_ec = ec; + } else { + ret_ec = make_error_code(transport::error::timeout); + } + + m_alog.write(log::alevel::devel, + "Asio transport socket shutdown timed out"); + socket_con_type::cancel_socket(); + callback(ret_ec); + } + + void handle_async_shutdown(timer_ptr shutdown_timer, shutdown_handler + callback, const boost::system::error_code & ec) + { + if (ec == boost::asio::error::operation_aborted || + shutdown_timer->expires_from_now().is_negative()) + { + m_alog.write(log::alevel::devel,"async_shutdown cancelled"); + return; + } + + shutdown_timer->cancel(); + + if (ec) { + log_err(log::elevel::info,"asio async_shutdown",ec); + if (ec == boost::asio::error::not_connected) { + // The socket was already closed when we tried to close it. This + // happens periodically (usually if a read or write fails + // earlier and if it is a real error will be caught at another + // level of the stack. + callback(lib::error_code()); + } else { + callback(make_error_code(transport::error::pass_through)); + } + } else { + if (m_alog.static_test(log::alevel::devel)) { + m_alog.write(log::alevel::devel, + "asio con handle_async_shutdown"); + } + + callback(lib::error_code()); + } + } +private: + /// Convenience method for logging the code and message for an error_code + template + void log_err(log::level l, const char * msg, const error_type & ec) { + std::stringstream s; + s << msg << " error: " << ec << " (" << ec.message() << ")"; + m_elog.write(l,s.str()); + } + + // static settings + const bool m_is_server; + alog_type& m_alog; + elog_type& m_elog; + + struct proxy_data { + proxy_data() : timeout_proxy(config::timeout_proxy) {} + + request_type req; + response_type res; + std::string write_buf; + boost::asio::streambuf read_buf; + long timeout_proxy; + timer_ptr timer; + }; + + std::string m_proxy; + lib::shared_ptr m_proxy_data; + + // transport resources + io_service_ptr m_io_service; + connection_hdl m_connection_hdl; + std::vector m_bufs; + + // Handlers + tcp_init_handler m_tcp_init_handler; +}; + + +} // namespace asio +} // namespace transport +} // namespace websocketpp + +#endif // WEBSOCKETPP_TRANSPORT_ASIO_CON_HPP diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/endpoint.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/endpoint.hpp new file mode 100644 index 00000000..08bb2aab --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/transport/asio/endpoint.hpp @@ -0,0 +1,900 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_TRANSPORT_ASIO_HPP +#define WEBSOCKETPP_TRANSPORT_ASIO_HPP + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +namespace websocketpp { +namespace transport { +namespace asio { + +/// Boost Asio based endpoint transport component +/** + * transport::asio::endpoint implements an endpoint transport component using + * Boost ASIO. + */ +template +class endpoint : public config::socket_type { +public: + /// Type of this endpoint transport component + typedef endpoint type; + + /// Type of the concurrency policy + typedef typename config::concurrency_type concurrency_type; + /// Type of the socket policy + typedef typename config::socket_type socket_type; + /// Type of the error logging policy + typedef typename config::elog_type elog_type; + /// Type of the access logging policy + typedef typename config::alog_type alog_type; + + /// Type of the socket connection component + typedef typename socket_type::socket_con_type socket_con_type; + /// Type of a shared pointer to the socket connection component + typedef typename socket_con_type::ptr socket_con_ptr; + + /// Type of the connection transport component associated with this + /// endpoint transport component + typedef asio::connection transport_con_type; + /// Type of a shared pointer to the connection transport component + /// associated with this endpoint transport component + typedef typename transport_con_type::ptr transport_con_ptr; + + /// Type of a pointer to the ASIO io_service being used + typedef boost::asio::io_service* io_service_ptr; + /// Type of a shared pointer to the acceptor being used + typedef lib::shared_ptr acceptor_ptr; + /// Type of a shared pointer to the resolver being used + typedef lib::shared_ptr resolver_ptr; + /// Type of timer handle + typedef lib::shared_ptr timer_ptr; + + // generate and manage our own io_service + explicit endpoint() + : m_external_io_service(false) + , m_state(UNINITIALIZED) + { + //std::cout << "transport::asio::endpoint constructor" << std::endl; + } + + ~endpoint() { + // clean up our io_service if we were initialized with an internal one. + m_acceptor.reset(); + if (m_state != UNINITIALIZED && !m_external_io_service) { + delete m_io_service; + } + } + + /// transport::asio objects are moveable but not copyable or assignable. + /// The following code sets this situation up based on whether or not we + /// have C++11 support or not +#ifdef _WEBSOCKETPP_DELETED_FUNCTIONS_ + endpoint(const endpoint& src) = delete; + endpoint& operator= (const endpoint & rhs) = delete; +#else +private: + endpoint(const endpoint& src); + endpoint& operator= (const endpoint & rhs); +public: +#endif + +#ifdef _WEBSOCKETPP_RVALUE_REFERENCES_ + endpoint (endpoint&& src) + : m_io_service(src.m_io_service) + , m_external_io_service(src.m_external_io_service) + , m_acceptor(src.m_acceptor) + , m_state(src.m_state) + { + src.m_io_service = NULL; + src.m_external_io_service = false; + src.m_acceptor = NULL; + src.m_state = UNINITIALIZED; + } + + endpoint& operator= (const endpoint && rhs) { + if (this != &rhs) { + m_io_service = rhs.m_io_service; + m_external_io_service = rhs.m_external_io_service; + m_acceptor = rhs.m_acceptor; + m_state = rhs.m_state; + + rhs.m_io_service = NULL; + rhs.m_external_io_service = false; + rhs.m_acceptor = NULL; + rhs.m_state = UNINITIALIZED; + } + return *this; + } +#endif + /// Return whether or not the endpoint produces secure connections. + bool is_secure() const { + return socket_type::is_secure(); + } + + /// initialize asio transport with external io_service (exception free) + /** + * Initialize the ASIO transport policy for this endpoint using the provided + * io_service object. asio_init must be called exactly once on any endpoint + * that uses transport::asio before it can be used. + * + * @param ptr A pointer to the io_service to use for asio events + * @param ec Set to indicate what error occurred, if any. + */ + void init_asio(io_service_ptr ptr, lib::error_code & ec) { + if (m_state != UNINITIALIZED) { + m_elog->write(log::elevel::library, + "asio::init_asio called from the wrong state"); + using websocketpp::error::make_error_code; + ec = make_error_code(websocketpp::error::invalid_state); + return; + } + + m_alog->write(log::alevel::devel,"asio::init_asio"); + + m_io_service = ptr; + m_external_io_service = true; + m_acceptor.reset(new boost::asio::ip::tcp::acceptor(*m_io_service)); + m_state = READY; + ec = lib::error_code(); + } + + /// initialize asio transport with external io_service + /** + * Initialize the ASIO transport policy for this endpoint using the provided + * io_service object. asio_init must be called exactly once on any endpoint + * that uses transport::asio before it can be used. + * + * @param ptr A pointer to the io_service to use for asio events + */ + void init_asio(io_service_ptr ptr) { + lib::error_code ec; + init_asio(ptr,ec); + if (ec) { + throw ec; + } + } + + /// Initialize asio transport with internal io_service (exception free) + /** + * This method of initialization will allocate and use an internally managed + * io_service. + * + * @see init_asio(io_service_ptr ptr) + * + * @param ec Set to indicate what error occurred, if any. + */ + void init_asio(lib::error_code & ec) { + init_asio(new boost::asio::io_service(),ec); + m_external_io_service = false; + } + + /// Initialize asio transport with internal io_service + /** + * This method of initialization will allocate and use an internally managed + * io_service. + * + * @see init_asio(io_service_ptr ptr) + */ + void init_asio() { + init_asio(new boost::asio::io_service()); + m_external_io_service = false; + } + + /// Retrieve a reference to the endpoint's io_service + /** + * The io_service may be an internal or external one. This may be used to + * call methods of the io_service that are not explicitly wrapped by the + * endpoint. + * + * This method is only valid after the endpoint has been initialized with + * `init_asio`. No error will be returned if it isn't. + * + * @return A reference to the endpoint's io_service + */ + boost::asio::io_service & get_io_service() { + return *m_io_service; + } + + /// Sets the tcp init handler + /** + * The tcp init handler is called after the tcp connection has been + * established. + * + * @see WebSocket++ handler documentation for more information about + * handlers. + * + * @param h The handler to call on tcp init. + */ + void set_tcp_init_handler(tcp_init_handler h) { + m_tcp_init_handler = h; + } + + /// Set up endpoint for listening manually (exception free) + /** + * Bind the internal acceptor using the specified settings. The endpoint + * must have been initialized by calling init_asio before listening. + * + * @param ep An endpoint to read settings from + * @param ec Set to indicate what error occurred, if any. + */ + void listen(boost::asio::ip::tcp::endpoint const & ep, lib::error_code & ec) + { + if (m_state != READY) { + m_elog->write(log::elevel::library, + "asio::listen called from the wrong state"); + using websocketpp::error::make_error_code; + ec = make_error_code(websocketpp::error::invalid_state); + return; + } + + m_alog->write(log::alevel::devel,"asio::listen"); + + m_acceptor->open(ep.protocol()); + m_acceptor->set_option(boost::asio::socket_base::reuse_address(true)); + m_acceptor->bind(ep); + m_acceptor->listen(); + m_state = LISTENING; + ec = lib::error_code(); + } + + /// Set up endpoint for listening manually + /** + * Bind the internal acceptor using the settings specified by the endpoint e + * + * @param ep An endpoint to read settings from + */ + void listen(boost::asio::ip::tcp::endpoint const & ep) { + lib::error_code ec; + listen(ep,ec); + if (ec) { + throw ec; + } + } + + /// Set up endpoint for listening with protocol and port (exception free) + /** + * Bind the internal acceptor using the given internet protocol and port. + * The endpoint must have been initialized by calling init_asio before + * listening. + * + * Common options include: + * - IPv6 with mapped IPv4 for dual stack hosts boost::asio::ip::tcp::v6() + * - IPv4 only: boost::asio::ip::tcp::v4() + * + * @param internet_protocol The internet protocol to use. + * @param port The port to listen on. + * @param ec Set to indicate what error occurred, if any. + */ + template + void listen(InternetProtocol const & internet_protocol, uint16_t port, + lib::error_code & ec) + { + boost::asio::ip::tcp::endpoint ep(internet_protocol, port); + listen(ep,ec); + } + + /// Set up endpoint for listening with protocol and port + /** + * Bind the internal acceptor using the given internet protocol and port. + * The endpoint must have been initialized by calling init_asio before + * listening. + * + * Common options include: + * - IPv6 with mapped IPv4 for dual stack hosts boost::asio::ip::tcp::v6() + * - IPv4 only: boost::asio::ip::tcp::v4() + * + * @param internet_protocol The internet protocol to use. + * @param port The port to listen on. + */ + template + void listen(InternetProtocol const & internet_protocol, uint16_t port) + { + boost::asio::ip::tcp::endpoint ep(internet_protocol, port); + listen(ep); + } + + /// Set up endpoint for listening on a port (exception free) + /** + * Bind the internal acceptor using the given port. The IPv6 protocol with + * mapped IPv4 for dual stack hosts will be used. If you need IPv4 only use + * the overload that allows specifying the protocol explicitly. + * + * The endpoint must have been initialized by calling init_asio before + * listening. + * + * @param port The port to listen on. + * @param ec Set to indicate what error occurred, if any. + */ + void listen(uint16_t port, lib::error_code & ec) { + listen(boost::asio::ip::tcp::v6(), port, ec); + } + + /// Set up endpoint for listening on a port + /** + * Bind the internal acceptor using the given port. The IPv6 protocol with + * mapped IPv4 for dual stack hosts will be used. If you need IPv4 only use + * the overload that allows specifying the protocol explicitly. + * + * The endpoint must have been initialized by calling init_asio before + * listening. + * + * @param port The port to listen on. + * @param ec Set to indicate what error occurred, if any. + */ + void listen(uint16_t port) { + listen(boost::asio::ip::tcp::v6(), port); + } + + /// Set up endpoint for listening on a host and service (exception free) + /** + * Bind the internal acceptor using the given host and service. More details + * about what host and service can be are available in the boost asio + * documentation for ip::basic_resolver_query::basic_resolver_query's + * constructors. + * + * The endpoint must have been initialized by calling init_asio before + * listening. + * + * @param host A string identifying a location. May be a descriptive name or + * a numeric address string. + * @param service A string identifying the requested service. This may be a + * descriptive name or a numeric string corresponding to a port number. + * @param ec Set to indicate what error occurred, if any. + */ + void listen(std::string const & host, std::string const & service, + lib::error_code & ec) + { + using boost::asio::ip::tcp; + tcp::resolver r(*m_io_service); + tcp::resolver::query query(host, service); + tcp::resolver::iterator endpoint_iterator = r.resolve(query); + tcp::resolver::iterator end; + if (endpoint_iterator == end) { + m_elog->write(log::elevel::library, + "asio::listen could not resolve the supplied host or service"); + ec = make_error_code(error::invalid_host_service); + return; + } + listen(*endpoint_iterator,ec); + } + + /// Set up endpoint for listening on a host and service + /** + * Bind the internal acceptor using the given host and service. More details + * about what host and service can be are available in the boost asio + * documentation for ip::basic_resolver_query::basic_resolver_query's + * constructors. + * + * The endpoint must have been initialized by calling init_asio before + * listening. + * + * @param host A string identifying a location. May be a descriptive name or + * a numeric address string. + * @param service A string identifying the requested service. This may be a + * descriptive name or a numeric string corresponding to a port number. + * @param ec Set to indicate what error occurred, if any. + */ + void listen(std::string const & host, std::string const & service) + { + lib::error_code ec; + listen(host,service,ec); + if (ec) { + throw ec; + } + } + + /// Stop listening (exception free) + /** + * Stop listening and accepting new connections. This will not end any + * existing connections. + * + * @since 0.3.0-alpha4 + * @param ec A status code indicating an error, if any. + */ + void stop_listening(lib::error_code & ec) { + if (m_state != LISTENING) { + m_elog->write(log::elevel::library, + "asio::listen called from the wrong state"); + using websocketpp::error::make_error_code; + ec = make_error_code(websocketpp::error::invalid_state); + return; + } + + m_acceptor->close(); + m_state = READY; + ec = lib::error_code(); + } + + /// Stop listening + /** + * Stop listening and accepting new connections. This will not end any + * existing connections. + * + * @since 0.3.0-alpha4 + */ + void stop_listening() { + lib::error_code ec; + stop_listening(ec); + if (ec) { + throw ec; + } + } + + /// wraps the run method of the internal io_service object + std::size_t run() { + return m_io_service->run(); + } + + /// wraps the run_one method of the internal io_service object + /** + * @since 0.3.0-alpha4 + */ + std::size_t run_one() { + return m_io_service->run_one(); + } + + /// wraps the stop method of the internal io_service object + void stop() { + m_io_service->stop(); + } + + /// wraps the poll method of the internal io_service object + std::size_t poll() { + return m_io_service->poll(); + } + + /// wraps the poll_one method of the internal io_service object + std::size_t poll_one() { + return m_io_service->poll_one(); + } + + /// wraps the reset method of the internal io_service object + void reset() { + m_io_service->reset(); + } + + /// wraps the stopped method of the internal io_service object + bool stopped() const { + return m_io_service->stopped(); + } + + /// Call back a function after a period of time. + /** + * Sets a timer that calls back a function after the specified period of + * milliseconds. Returns a handle that can be used to cancel the timer. + * A cancelled timer will return the error code error::operation_aborted + * A timer that expired will return no error. + * + * @param duration Length of time to wait in milliseconds + * @param callback The function to call back when the timer has expired + * @return A handle that can be used to cancel the timer if it is no longer + * needed. + */ + timer_ptr set_timer(long duration, timer_handler callback) { + timer_ptr new_timer( + new boost::asio::deadline_timer( + *m_io_service, + boost::posix_time::milliseconds(duration) + ) + ); + + new_timer->async_wait( + lib::bind( + &type::handle_timer, + this, + new_timer, + callback, + lib::placeholders::_1 + ) + ); + + return new_timer; + } + + /// Timer callback + /** + * The timer pointer is included to ensure the timer isn't destroyed until + * after it has expired. + * + * @param t Pointer to the timer in question + * @param callback The function to call back + * @param ec A status code indicating an error, if any. + */ + void handle_timer(timer_ptr t, timer_handler callback, + boost::system::error_code const & ec) + { + if (ec) { + if (ec == boost::asio::error::operation_aborted) { + callback(make_error_code(transport::error::operation_aborted)); + } else { + m_elog->write(log::elevel::info, + "asio handle_timer error: "+ec.message()); + log_err(log::elevel::info,"asio handle_timer",ec); + callback(make_error_code(error::pass_through)); + } + } else { + callback(lib::error_code()); + } + } + + /// Accept the next connection attempt and assign it to con (exception free) + /** + * @param tcon The connection to accept into. + * @param callback The function to call when the operation is complete. + * @param ec A status code indicating an error, if any. + */ + void async_accept(transport_con_ptr tcon, accept_handler callback, + lib::error_code & ec) + { + if (m_state != LISTENING) { + m_elog->write(log::elevel::library, + "asio::async_accept called from the wrong state"); + using websocketpp::error::make_error_code; + ec = make_error_code(websocketpp::error::invalid_state); + return; + } + + m_alog->write(log::alevel::devel, "asio::async_accept"); + + m_acceptor->async_accept( + tcon->get_raw_socket(), + lib::bind( + &type::handle_accept, + this, + tcon->get_handle(), + callback, + lib::placeholders::_1 + ) + ); + } + + /// Accept the next connection attempt and assign it to con. + /** + * @param tcon The connection to accept into. + * @param callback The function to call when the operation is complete. + */ + void async_accept(transport_con_ptr tcon, accept_handler callback) { + lib::error_code ec; + async_accept(tcon,callback,ec); + if (ec) { + throw ec; + } + } +protected: + /// Initialize logging + /** + * The loggers are located in the main endpoint class. As such, the + * transport doesn't have direct access to them. This method is called + * by the endpoint constructor to allow shared logging from the transport + * component. These are raw pointers to member variables of the endpoint. + * In particular, they cannot be used in the transport constructor as they + * haven't been constructed yet, and cannot be used in the transport + * destructor as they will have been destroyed by then. + */ + void init_logging(alog_type* a, elog_type* e) { + m_alog = a; + m_elog = e; + } + + void handle_accept(connection_hdl hdl, accept_handler callback, + const boost::system::error_code& error) + { + if (error) { + //con->terminate(); + // TODO: Better translation of errors at this point + callback(hdl,make_error_code(error::pass_through)); + return; + } + + //con->start(); + callback(hdl,lib::error_code()); + } + + /// Initiate a new connection + // TODO: there have to be some more failure conditions here + void async_connect(transport_con_ptr tcon, uri_ptr u, connect_handler cb) { + using namespace boost::asio::ip; + + // Create a resolver + if (!m_resolver) { + m_resolver.reset(new boost::asio::ip::tcp::resolver(*m_io_service)); + } + + std::string proxy = tcon->get_proxy(); + std::string host; + std::string port; + + if (proxy.empty()) { + host = u->get_host(); + port = u->get_port_str(); + } else { + lib::error_code ec; + + uri_ptr pu(new uri(proxy)); + + if (!pu->get_valid()) { + cb(tcon->get_handle(),make_error_code(error::proxy_invalid)); + return; + } + + ec = tcon->proxy_init(u->get_authority()); + if (ec) { + cb(tcon->get_handle(),ec); + return; + } + + host = pu->get_host(); + port = pu->get_port_str(); + } + + tcp::resolver::query query(host,port); + + if (m_alog->static_test(log::alevel::devel)) { + m_alog->write(log::alevel::devel, + "starting async DNS resolve for "+host+":"+port); + } + + timer_ptr dns_timer; + + dns_timer = set_timer( + config::timeout_dns_resolve, + lib::bind( + &type::handle_resolve_timeout, + this, + tcon, + dns_timer, + cb, + lib::placeholders::_1 + ) + ); + + m_resolver->async_resolve( + query, + lib::bind( + &type::handle_resolve, + this, + tcon, + dns_timer, + cb, + lib::placeholders::_1, + lib::placeholders::_2 + ) + ); + } + + void handle_resolve_timeout(transport_con_ptr tcon, timer_ptr dns_timer, + connect_handler callback, const lib::error_code & ec) + { + lib::error_code ret_ec; + + if (ec) { + if (ec == transport::error::operation_aborted) { + m_alog->write(log::alevel::devel, + "asio handle_resolve_timeout timer cancelled"); + return; + } + + log_err(log::elevel::devel,"asio handle_resolve_timeout",ec); + ret_ec = ec; + } else { + ret_ec = make_error_code(transport::error::timeout); + } + + m_alog->write(log::alevel::devel,"DNS resolution timed out"); + m_resolver->cancel(); + callback(tcon->get_handle(),ret_ec); + } + + void handle_resolve(transport_con_ptr tcon, timer_ptr dns_timer, + connect_handler callback, const boost::system::error_code& ec, + boost::asio::ip::tcp::resolver::iterator iterator) + { + if (ec == boost::asio::error::operation_aborted || + dns_timer->expires_from_now().is_negative()) + { + m_alog->write(log::alevel::devel,"async_resolve cancelled"); + return; + } + + dns_timer->cancel(); + + if (ec) { + log_err(log::elevel::info,"asio async_resolve",ec); + callback(tcon->get_handle(),make_error_code(error::pass_through)); + return; + } + + if (m_alog->static_test(log::alevel::devel)) { + std::stringstream s; + s << "Async DNS resolve successful. Results: "; + + boost::asio::ip::tcp::resolver::iterator it, end; + for (it = iterator; it != end; ++it) { + s << (*it).endpoint() << " "; + } + + m_alog->write(log::alevel::devel,s.str()); + } + + m_alog->write(log::alevel::devel,"Starting async connect"); + + timer_ptr con_timer; + + con_timer = set_timer( + config::timeout_connect, + lib::bind( + &type::handle_resolve_timeout, + this, + tcon, + con_timer, + callback, + lib::placeholders::_1 + ) + ); + + boost::asio::async_connect( + tcon->get_raw_socket(), + iterator, + lib::bind( + &type::handle_connect, + this, + tcon, + con_timer, + callback, + lib::placeholders::_1 + ) + ); + } + + void handle_connect_timeout(transport_con_ptr tcon, timer_ptr con_timer, + connect_handler callback, const lib::error_code & ec) + { + lib::error_code ret_ec; + + if (ec) { + if (ec == transport::error::operation_aborted) { + m_alog->write(log::alevel::devel, + "asio handle_connect_timeout timer cancelled"); + return; + } + + log_err(log::elevel::devel,"asio handle_connect_timeout",ec); + ret_ec = ec; + } else { + ret_ec = make_error_code(transport::error::timeout); + } + + m_alog->write(log::alevel::devel,"TCP connect timed out"); + tcon->cancel_socket(); + callback(tcon->get_handle(),ret_ec); + } + + void handle_connect(transport_con_ptr tcon, timer_ptr con_timer, + connect_handler callback, const boost::system::error_code& ec) + { + if (ec == boost::asio::error::operation_aborted || + con_timer->expires_from_now().is_negative()) + { + m_alog->write(log::alevel::devel,"async_connect cancelled"); + return; + } + + con_timer->cancel(); + + if (ec) { + log_err(log::elevel::info,"asio async_connect",ec); + callback(tcon->get_handle(),make_error_code(error::pass_through)); + return; + } + + if (m_alog->static_test(log::alevel::devel)) { + m_alog->write(log::alevel::devel, + "Async connect to "+tcon->get_remote_endpoint()+" successful."); + } + + callback(tcon->get_handle(),lib::error_code()); + } + + bool is_listening() const { + return (m_state == LISTENING); + } + + /// Initialize a connection + /** + * init is called by an endpoint once for each newly created connection. + * It's purpose is to give the transport policy the chance to perform any + * transport specific initialization that couldn't be done via the default + * constructor. + * + * @param tcon A pointer to the transport portion of the connection. + * + * @return A status code indicating the success or failure of the operation + */ + lib::error_code init(transport_con_ptr tcon) { + m_alog->write(log::alevel::devel, "transport::asio::init"); + + // Initialize the connection socket component + socket_type::init(lib::static_pointer_cast(tcon)); + + lib::error_code ec; + + ec = tcon->init_asio(m_io_service); + if (ec) {return ec;} + + tcon->set_tcp_init_handler(m_tcp_init_handler); + + return lib::error_code(); + } +private: + /// Convenience method for logging the code and message for an error_code + template + void log_err(log::level l, char const * msg, error_type const & ec) { + std::stringstream s; + s << msg << " error: " << ec << " (" << ec.message() << ")"; + m_elog->write(l,s.str()); + } + + enum state { + UNINITIALIZED = 0, + READY = 1, + LISTENING = 2 + }; + + // Handlers + tcp_init_handler m_tcp_init_handler; + + // Network Resources + io_service_ptr m_io_service; + bool m_external_io_service; + acceptor_ptr m_acceptor; + resolver_ptr m_resolver; + + elog_type* m_elog; + alog_type* m_alog; + + // Transport state + state m_state; +}; + +} // namespace asio +} // namespace transport +} // namespace websocketpp + +#endif // WEBSOCKETPP_TRANSPORT_ASIO_HPP diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/security/base.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/security/base.hpp new file mode 100644 index 00000000..7e003794 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/transport/asio/security/base.hpp @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_TRANSPORT_ASIO_SOCKET_BASE_HPP +#define WEBSOCKETPP_TRANSPORT_ASIO_SOCKET_BASE_HPP + +#include +#include +#include +#include +#include + +#include + +#include +#include + +// Interface that sockets/security policies must implement + +/* + * Endpoint Interface + * + * bool is_secure() const; + * @return Whether or not the endpoint creates secure connections + * + * lib::error_code init(socket_con_ptr scon); + * Called by the transport after a new connection is created to initialize + * the socket component of the connection. + * @param scon Pointer to the socket component of the connection + * @return Error code (empty on success) + */ + + +// Connection +// TODO +// pre_init(init_handler); +// post_init(init_handler); + +namespace websocketpp { +namespace transport { +namespace asio { +namespace socket { + +/** + * The transport::asio::socket::* classes are a set of security/socket related + * policies and support code for the ASIO transport types. + */ + +/// Errors related to asio transport sockets +namespace error { + enum value { + /// Catch-all error for security policy errors that don't fit in other + /// categories + security = 1, + + /// Catch-all error for socket component errors that don't fit in other + /// categories + socket, + + /// A function was called in a state that it was illegal to do so. + invalid_state, + + /// The application was prompted to provide a TLS context and it was + /// empty or otherwise invalid + invalid_tls_context, + + /// TLS Handshake Timeout + tls_handshake_timeout, + + /// pass_through from underlying library + pass_through, + + /// Required tls_init handler not present + missing_tls_init_handler + }; +} // namespace error + +/// Error category related to asio transport socket policies +class socket_category : public lib::error_category { +public: + const char *name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ { + return "websocketpp.transport.asio.socket"; + } + + std::string message(int value) const { + switch(value) { + case error::security: + return "Security policy error"; + case error::socket: + return "Socket component error"; + case error::invalid_state: + return "Invalid state"; + case error::invalid_tls_context: + return "Invalid or empty TLS context supplied"; + case error::tls_handshake_timeout: + return "TLS handshake timed out"; + case error::pass_through: + return "Pass through from underlying library"; + case error::missing_tls_init_handler: + return "Required tls_init handler not present."; + default: + return "Unknown"; + } + } +}; + +inline const lib::error_category& get_socket_category() { + static socket_category instance; + return instance; +} + +inline lib::error_code make_error_code(error::value e) { + return lib::error_code(static_cast(e), get_socket_category()); +} + +/// Type of asio transport socket policy initialization handlers +typedef lib::function init_handler; + +} // namespace socket +} // namespace asio +} // namespace transport +} // namespace websocketpp + +#endif // WEBSOCKETPP_TRANSPORT_ASIO_SOCKET_BASE_HPP diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/security/none.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/security/none.hpp new file mode 100644 index 00000000..19d9bf60 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/transport/asio/security/none.hpp @@ -0,0 +1,302 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_TRANSPORT_SECURITY_NONE_HPP +#define WEBSOCKETPP_TRANSPORT_SECURITY_NONE_HPP + +#include +#include + +#include + +#include +#include + +namespace websocketpp { +namespace transport { +namespace asio { +namespace basic_socket { + +typedef lib::function + socket_init_handler; + +/// Basic Boost ASIO connection socket component +/** + * transport::asio::basic_socket::connection implements a connection socket + * component using Boost ASIO ip::tcp::socket. + */ +class connection : public lib::enable_shared_from_this { +public: + /// Type of this connection socket component + typedef connection type; + /// Type of a shared pointer to this connection socket component + typedef lib::shared_ptr ptr; + + /// Type of a pointer to the ASIO io_service being used + typedef boost::asio::io_service* io_service_ptr; + /// Type of a shared pointer to the socket being used. + typedef lib::shared_ptr socket_ptr; + + explicit connection() : m_state(UNINITIALIZED) { + //std::cout << "transport::asio::basic_socket::connection constructor" + // << std::endl; + } + + /// Get a shared pointer to this component + ptr get_shared() { + return shared_from_this(); + } + + /// Check whether or not this connection is secure + /** + * @return Whether or not this connection is secure + */ + bool is_secure() const { + return false; + } + + /// Set the socket initialization handler + /** + * The socket initialization handler is called after the socket object is + * created but before it is used. This gives the application a chance to + * set any ASIO socket options it needs. + * + * @param h The new socket_init_handler + */ + void set_socket_init_handler(socket_init_handler h) { + m_socket_init_handler = h; + } + + /// Retrieve a pointer to the underlying socket + /** + * This is used internally. It can also be used to set socket options, etc + */ + boost::asio::ip::tcp::socket& get_socket() { + return *m_socket; + } + + /// Retrieve a pointer to the underlying socket + /** + * This is used internally. + */ + boost::asio::ip::tcp::socket& get_next_layer() { + return *m_socket; + } + + /// Retrieve a pointer to the underlying socket + /** + * This is used internally. It can also be used to set socket options, etc + */ + boost::asio::ip::tcp::socket& get_raw_socket() { + return *m_socket; + } + + /// Get the remote endpoint address + /** + * The iostream transport has no information about the ultimate remote + * endpoint. It will return the string "iostream transport". To indicate + * this. + * + * TODO: allow user settable remote endpoint addresses if this seems useful + * + * @return A string identifying the address of the remote endpoint + */ + std::string get_remote_endpoint(lib::error_code &ec) const { + std::stringstream s; + + boost::system::error_code bec; + boost::asio::ip::tcp::endpoint ep = m_socket->remote_endpoint(bec); + + if (bec) { + ec = error::make_error_code(error::pass_through); + s << "Error getting remote endpoint: " << bec + << " (" << bec.message() << ")"; + return s.str(); + } else { + ec = lib::error_code(); + s << ep; + return s.str(); + } + } +protected: + /// Perform one time initializations + /** + * init_asio is called once immediately after construction to initialize + * boost::asio components to the io_service + * + * @param service A pointer to the endpoint's io_service + * @param strand A shared pointer to the connection's asio strand + * @param is_server Whether or not the endpoint is a server or not. + */ + lib::error_code init_asio (io_service_ptr service, bool is_server) { + if (m_state != UNINITIALIZED) { + return socket::make_error_code(socket::error::invalid_state); + } + + m_socket.reset(new boost::asio::ip::tcp::socket(*service)); + + m_state = READY; + + return lib::error_code(); + } + + /// Pre-initialize security policy + /** + * Called by the transport after a new connection is created to initialize + * the socket component of the connection. This method is not allowed to + * write any bytes to the wire. This initialization happens before any + * proxies or other intermediate wrappers are negotiated. + * + * @param callback Handler to call back with completion information + */ + void pre_init(init_handler callback) { + if (m_state != READY) { + callback(socket::make_error_code(socket::error::invalid_state)); + return; + } + + if (m_socket_init_handler) { + m_socket_init_handler(m_hdl,*m_socket); + } + + m_state = READING; + + callback(lib::error_code()); + } + + /// Post-initialize security policy + /** + * Called by the transport after all intermediate proxies have been + * negotiated. This gives the security policy the chance to talk with the + * real remote endpoint for a bit before the websocket handshake. + * + * @param callback Handler to call back with completion information + */ + void post_init(init_handler callback) { + callback(lib::error_code()); + } + + /// Sets the connection handle + /** + * The connection handle is passed to any handlers to identify the + * connection + * + * @param hdl The new handle + */ + void set_handle(connection_hdl hdl) { + m_hdl = hdl; + } + + /// Cancel all async operations on this socket + void cancel_socket() { + m_socket->cancel(); + } + + void async_shutdown(socket_shutdown_handler h) { + boost::system::error_code ec; + m_socket->shutdown(boost::asio::ip::tcp::socket::shutdown_both,ec); + h(ec); + } + + lib::error_code get_ec() const { + return lib::error_code(); + } +private: + enum state { + UNINITIALIZED = 0, + READY = 1, + READING = 2 + }; + + socket_ptr m_socket; + state m_state; + + connection_hdl m_hdl; + socket_init_handler m_socket_init_handler; +}; + +/// Basic ASIO endpoint socket component +/** + * transport::asio::basic_socket::endpoint implements an endpoint socket + * component that uses Boost ASIO's ip::tcp::socket. + */ +class endpoint { +public: + /// The type of this endpoint socket component + typedef endpoint type; + + /// The type of the corresponding connection socket component + typedef connection socket_con_type; + /// The type of a shared pointer to the corresponding connection socket + /// component. + typedef socket_con_type::ptr socket_con_ptr; + + explicit endpoint() {} + + /// Checks whether the endpoint creates secure connections + /** + * @return Whether or not the endpoint creates secure connections + */ + bool is_secure() const { + return false; + } + + /// Set socket init handler + /** + * The socket init handler is called after a connection's socket is created + * but before it is used. This gives the end application an opportunity to + * set asio socket specific parameters. + * + * @param h The new socket_init_handler + */ + void set_socket_init_handler(socket_init_handler h) { + m_socket_init_handler = h; + } +protected: + /// Initialize a connection + /** + * Called by the transport after a new connection is created to initialize + * the socket component of the connection. + * + * @param scon Pointer to the socket component of the connection + * + * @return Error code (empty on success) + */ + lib::error_code init(socket_con_ptr scon) { + scon->set_socket_init_handler(m_socket_init_handler); + return lib::error_code(); + } +private: + socket_init_handler m_socket_init_handler; +}; + +} // namespace basic_socket +} // namespace asio +} // namespace transport +} // namespace websocketpp + +#endif // WEBSOCKETPP_TRANSPORT_SECURITY_NONE_HPP diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/security/tls.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/security/tls.hpp new file mode 100644 index 00000000..1d6ab7e2 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/transport/asio/security/tls.hpp @@ -0,0 +1,368 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_TRANSPORT_SECURITY_TLS_HPP +#define WEBSOCKETPP_TRANSPORT_SECURITY_TLS_HPP + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +namespace websocketpp { +namespace transport { +namespace asio { +namespace tls_socket { + +typedef lib::function&)> socket_init_handler; +typedef lib::function(connection_hdl)> + tls_init_handler; + +/// TLS enabled Boost ASIO connection socket component +/** + * transport::asio::tls_socket::connection implements a secure connection socket + * component that uses Boost ASIO's ssl::stream to wrap an ip::tcp::socket. + */ +class connection : public lib::enable_shared_from_this { +public: + /// Type of this connection socket component + typedef connection type; + /// Type of a shared pointer to this connection socket component + typedef lib::shared_ptr ptr; + + /// Type of the ASIO socket being used + typedef boost::asio::ssl::stream socket_type; + /// Type of a shared pointer to the ASIO socket being used + typedef lib::shared_ptr socket_ptr; + /// Type of a pointer to the ASIO io_service being used + typedef boost::asio::io_service* io_service_ptr; + /// Type of a shared pointer to the ASIO TLS context being used + typedef lib::shared_ptr context_ptr; + + typedef boost::system::error_code boost_error; + + explicit connection() { + //std::cout << "transport::asio::tls_socket::connection constructor" + // << std::endl; + } + + /// Get a shared pointer to this component + ptr get_shared() { + return shared_from_this(); + } + + /// Check whether or not this connection is secure + /** + * @return Whether or not this connection is secure + */ + bool is_secure() const { + return true; + } + + /// Retrieve a pointer to the underlying socket + /** + * This is used internally. It can also be used to set socket options, etc + */ + socket_type::lowest_layer_type& get_raw_socket() { + return m_socket->lowest_layer(); + } + + /// Retrieve a pointer to the layer below the ssl stream + /** + * This is used internally. + */ + socket_type::next_layer_type& get_next_layer() { + return m_socket->next_layer(); + } + + /// Retrieve a pointer to the wrapped socket + /** + * This is used internally. + */ + socket_type& get_socket() { + return *m_socket; + } + + /// Set the socket initialization handler + /** + * The socket initialization handler is called after the socket object is + * created but before it is used. This gives the application a chance to + * set any ASIO socket options it needs. + * + * @param h The new socket_init_handler + */ + void set_socket_init_handler(socket_init_handler h) { + m_socket_init_handler = h; + } + + /// Set TLS init handler + /** + * The tls init handler is called when needed to request a TLS context for + * the library to use. A TLS init handler must be set and it must return a + * valid TLS context in order for this endpoint to be able to initialize + * TLS connections + * + * @param h The new tls_init_handler + */ + void set_tls_init_handler(tls_init_handler h) { + m_tls_init_handler = h; + } + + /// Get the remote endpoint address + /** + * The iostream transport has no information about the ultimate remote + * endpoint. It will return the string "iostream transport". To indicate + * this. + * + * TODO: allow user settable remote endpoint addresses if this seems useful + * + * @return A string identifying the address of the remote endpoint + */ + std::string get_remote_endpoint(lib::error_code &ec) const { + std::stringstream s; + + boost::system::error_code bec; + boost::asio::ip::tcp::endpoint ep = m_socket->lowest_layer().remote_endpoint(bec); + + if (bec) { + ec = error::make_error_code(error::pass_through); + s << "Error getting remote endpoint: " << bec + << " (" << bec.message() << ")"; + return s.str(); + } else { + ec = lib::error_code(); + s << ep; + return s.str(); + } + } +protected: + /// Perform one time initializations + /** + * init_asio is called once immediately after construction to initialize + * boost::asio components to the io_service + * + * @param service A pointer to the endpoint's io_service + * @param is_server Whether or not the endpoint is a server or not. + */ + lib::error_code init_asio (io_service_ptr service, bool is_server) { + if (!m_tls_init_handler) { + return socket::make_error_code(socket::error::missing_tls_init_handler); + } + m_context = m_tls_init_handler(m_hdl); + + if (!m_context) { + return socket::make_error_code(socket::error::invalid_tls_context); + } + m_socket.reset(new socket_type(*service,*m_context)); + + m_io_service = service; + m_is_server = is_server; + + return lib::error_code(); + } + + /// Pre-initialize security policy + /** + * Called by the transport after a new connection is created to initialize + * the socket component of the connection. This method is not allowed to + * write any bytes to the wire. This initialization happens before any + * proxies or other intermediate wrappers are negotiated. + * + * @param callback Handler to call back with completion information + */ + void pre_init(init_handler callback) { + if (m_socket_init_handler) { + m_socket_init_handler(m_hdl,get_socket()); + } + + callback(lib::error_code()); + } + + /// Post-initialize security policy + /** + * Called by the transport after all intermediate proxies have been + * negotiated. This gives the security policy the chance to talk with the + * real remote endpoint for a bit before the websocket handshake. + * + * @param callback Handler to call back with completion information + */ + void post_init(init_handler callback) { + m_ec = socket::make_error_code(socket::error::tls_handshake_timeout); + + // TLS handshake + m_socket->async_handshake( + get_handshake_type(), + lib::bind( + &type::handle_init, + get_shared(), + callback, + lib::placeholders::_1 + ) + ); + } + + /// Sets the connection handle + /** + * The connection handle is passed to any handlers to identify the + * connection + * + * @param hdl The new handle + */ + void set_handle(connection_hdl hdl) { + m_hdl = hdl; + } + + void handle_init(init_handler callback, const + boost::system::error_code& ec) + { + if (ec) { + m_ec = socket::make_error_code(socket::error::pass_through); + } else { + m_ec = lib::error_code(); + } + + callback(m_ec); + } + + lib::error_code get_ec() const { + return m_ec; + } + + /// Cancel all async operations on this socket + void cancel_socket() { + get_raw_socket().cancel(); + } + + void async_shutdown(socket_shutdown_handler callback) { + m_socket->async_shutdown(callback); + } +private: + socket_type::handshake_type get_handshake_type() { + if (m_is_server) { + return boost::asio::ssl::stream_base::server; + } else { + return boost::asio::ssl::stream_base::client; + } + } + + io_service_ptr m_io_service; + context_ptr m_context; + socket_ptr m_socket; + bool m_is_server; + + lib::error_code m_ec; + + connection_hdl m_hdl; + socket_init_handler m_socket_init_handler; + tls_init_handler m_tls_init_handler; +}; + +/// TLS enabled Boost ASIO endpoint socket component +/** + * transport::asio::tls_socket::endpoint implements a secure endpoint socket + * component that uses Boost ASIO's ssl::stream to wrap an ip::tcp::socket. + */ +class endpoint { +public: + /// The type of this endpoint socket component + typedef endpoint type; + + /// The type of the corresponding connection socket component + typedef connection socket_con_type; + /// The type of a shared pointer to the corresponding connection socket + /// component. + typedef socket_con_type::ptr socket_con_ptr; + + explicit endpoint() {} + + /// Checks whether the endpoint creates secure connections + /** + * @return Whether or not the endpoint creates secure connections + */ + bool is_secure() const { + return true; + } + + /// Set socket init handler + /** + * The socket init handler is called after a connection's socket is created + * but before it is used. This gives the end application an opportunity to + * set asio socket specific parameters. + * + * @param h The new socket_init_handler + */ + void set_socket_init_handler(socket_init_handler h) { + m_socket_init_handler = h; + } + + /// Set TLS init handler + /** + * The tls init handler is called when needed to request a TLS context for + * the library to use. A TLS init handler must be set and it must return a + * valid TLS context in order for this endpoint to be able to initialize + * TLS connections + * + * @param h The new tls_init_handler + */ + void set_tls_init_handler(tls_init_handler h) { + m_tls_init_handler = h; + } +protected: + /// Initialize a connection + /** + * Called by the transport after a new connection is created to initialize + * the socket component of the connection. + * + * @param scon Pointer to the socket component of the connection + * + * @return Error code (empty on success) + */ + lib::error_code init(socket_con_ptr scon) { + scon->set_socket_init_handler(m_socket_init_handler); + scon->set_tls_init_handler(m_tls_init_handler); + return lib::error_code(); + } + +private: + socket_init_handler m_socket_init_handler; + tls_init_handler m_tls_init_handler; +}; + +} // namespace tls_socket +} // namespace asio +} // namespace transport +} // namespace websocketpp + +#endif // WEBSOCKETPP_TRANSPORT_SECURITY_TLS_HPP diff --git a/src/third_party/websocketpp/websocketpp/transport/base/connection.hpp b/src/third_party/websocketpp/websocketpp/transport/base/connection.hpp new file mode 100644 index 00000000..1db6310d --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/transport/base/connection.hpp @@ -0,0 +1,226 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_TRANSPORT_BASE_CON_HPP +#define WEBSOCKETPP_TRANSPORT_BASE_CON_HPP + +#include +#include +#include +#include +#include + +namespace websocketpp { +/// Transport policies provide network connectivity and timers +/** + * ### Connection Interface + * + * Transport connection components needs to provide: + * + * **init**\n + * `void init(init_handler handler)`\n + * Called once shortly after construction to give the policy the chance to + * perform one time initialization. When complete, the policy must call the + * supplied `init_handler` to continue setup. The handler takes one argument + * with the error code if any. If an error is returned here setup will fail and + * the connection will be aborted or terminated. + * + * WebSocket++ will call init only once. The transport must call `handler` + * exactly once. + * + * **async_read_at_least**\n + * `void async_read_at_least(size_t num_bytes, char *buf, size_t len, + * read_handler handler)`\n + * start an async read for at least num_bytes and at most len + * bytes into buf. Call handler when done with number of bytes read. + * + * WebSocket++ promises to have only one async_read_at_least in flight at a + * time. The transport must promise to only call read_handler once per async + * read. + * + * **async_write**\n + * `void async_write(const char* buf, size_t len, write_handler handler)`\n + * `void async_write(std::vector & bufs, write_handler handler)`\n + * Start a write of all of the data in buf or bufs. In second case data is + * written sequentially and in place without copying anything to a temporary + * location. + * + * Websocket++ promises to have only one async_write in flight at a time. + * The transport must promise to only call the write_handler once per async + * write + * + * **set_handle**\n + * `void set_handle(connection_hdl hdl)`\n + * Called by WebSocket++ to let this policy know the hdl to the connection. It + * may be stored for later use or ignored/discarded. This handle should be used + * if the policy adds any connection handlers. Connection handlers must be + * called with the handle as the first argument so that the handler code knows + * which connection generated the callback. + * + * **set_timer**\n + * `timer_ptr set_timer(long duration, timer_handler handler)`\n + * WebSocket++ uses the timers provided by the transport policy as the + * implementation of timers is often highly coupled with the implementation of + * the networking event loops. + * + * Transport timer support is an optional feature. A transport method may elect + * to implement a dummy timer object and have this method return an empty + * pointer. If so, all timer related features of WebSocket++ core will be + * disabled. This includes many security features designed to prevent denial of + * service attacks. Use timer-free transport policies with caution. + * + * **get_remote_endpoint**\n + * `std::string get_remote_endpoint()`\n + * retrieve address of remote endpoint + * + * **is_secure**\n + * `void is_secure()`\n + * whether or not the connection to the remote endpoint is secure + * + * **dispatch**\n + * `lib::error_code dispatch(dispatch_handler handler)`: invoke handler within + * the transport's event system if it uses one. Otherwise, this method should + * simply call `handler` immediately. + * + * **async_shutdown**\n + * `void async_shutdown(shutdown_handler handler)`\n + * Perform any cleanup necessary (if any). Call `handler` when complete. + */ +namespace transport { + +/// The type and signature of the callback passed to the init hook +typedef lib::function init_handler; + +/// The type and signature of the callback passed to the read method +typedef lib::function read_handler; + +/// The type and signature of the callback passed to the write method +typedef lib::function write_handler; + +/// The type and signature of the callback passed to the read method +typedef lib::function timer_handler; + +/// The type and signature of the callback passed to the shutdown method +typedef lib::function shutdown_handler; + +/// The type and signature of the callback passed to the interrupt method +typedef lib::function interrupt_handler; + +/// The type and signature of the callback passed to the dispatch method +typedef lib::function dispatch_handler; + +/// A simple utility buffer class +struct buffer { + buffer(char const * b, size_t l) : buf(b),len(l) {} + + char const * buf; + size_t len; +}; + +namespace error { +enum value { + /// Catch-all error for transport policy errors that don't fit in other + /// categories + general = 1, + + /// underlying transport pass through + pass_through, + + /// async_read_at_least call requested more bytes than buffer can store + invalid_num_bytes, + + /// async_read called while another async_read was in progress + double_read, + + /// Operation aborted + operation_aborted, + + /// Operation not supported + operation_not_supported, + + /// End of file + eof, + + /// TLS short read + tls_short_read, + + /// Timer expired + timeout +}; + +class category : public lib::error_category { + public: + category() {} + + char const * name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ { + return "websocketpp.transport"; + } + + std::string message(int value) const { + switch(value) { + case general: + return "Generic transport policy error"; + case pass_through: + return "Underlying Transport Error"; + case invalid_num_bytes: + return "async_read_at_least call requested more bytes than buffer can store"; + case operation_aborted: + return "The operation was aborted"; + case operation_not_supported: + return "The operation is not supported by this transport"; + case eof: + return "End of File"; + case tls_short_read: + return "TLS Short Read"; + case timeout: + return "Timer Expired"; + default: + return "Unknown"; + } + } +}; + +inline lib::error_category const & get_category() { + static category instance; + return instance; +} + +inline lib::error_code make_error_code(error::value e) { + return lib::error_code(static_cast(e), get_category()); +} + +} // namespace error +} // namespace transport +} // namespace websocketpp +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_ +template<> struct is_error_code_enum +{ + static bool const value = true; +}; +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_ + +#endif // WEBSOCKETPP_TRANSPORT_BASE_CON_HPP diff --git a/src/third_party/websocketpp/websocketpp/transport/base/endpoint.hpp b/src/third_party/websocketpp/websocketpp/transport/base/endpoint.hpp new file mode 100644 index 00000000..df1dc45a --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/transport/base/endpoint.hpp @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_TRANSPORT_BASE_HPP +#define WEBSOCKETPP_TRANSPORT_BASE_HPP + +#include +#include +#include +#include +#include + +#include + +namespace websocketpp { +/// Transport policies provide network connectivity and timers +/** + * ### Endpoint Interface + * + * Transport endpoint components needs to provide: + * + * **init**\n + * `lib::error_code init(transport_con_ptr tcon)`\n + * init is called by an endpoint once for each newly created connection. + * It's purpose is to give the transport policy the chance to perform any + * transport specific initialization that couldn't be done via the default + * constructor. + * + * **is_secure**\n + * `bool is_secure() const`\n + * Test whether the transport component of this endpoint is capable of secure + * connections. + * + * **async_connect**\n + * `void async_connect(transport_con_ptr tcon, uri_ptr location, + * connect_handler handler)`\n + * Initiate a connection to `location` using the given connection `tcon`. `tcon` + * is a pointer to the transport connection component of the connection. When + * complete, `handler` should be called with the the connection's + * `connection_hdl` and any error that occurred. + * + * **init_logging** + * `void init_logging(alog_type * a, elog_type * e)`\n + * Called once after construction to provide pointers to the endpoint's access + * and error loggers. These may be stored and used to log messages or ignored. + */ +namespace transport { + +/// The type and signature of the callback passed to the accept method +typedef lib::function + accept_handler; + +/// The type and signature of the callback passed to the connect method +typedef lib::function + connect_handler; + +} // namespace transport +} // namespace websocketpp + +#endif // WEBSOCKETPP_TRANSPORT_BASE_HPP diff --git a/src/third_party/websocketpp/websocketpp/transport/iostream/base.hpp b/src/third_party/websocketpp/websocketpp/transport/iostream/base.hpp new file mode 100644 index 00000000..5bfb5539 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/transport/iostream/base.hpp @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_TRANSPORT_IOSTREAM_BASE_HPP +#define WEBSOCKETPP_TRANSPORT_IOSTREAM_BASE_HPP + +#include +#include + +#include + +namespace websocketpp { +namespace transport { +/// Transport policy that uses STL iostream for I/O and does not support timers +namespace iostream { + +/// iostream transport errors +namespace error { +enum value { + /// Catch-all error for transport policy errors that don't fit in other + /// categories + general = 1, + + /// async_read_at_least call requested more bytes than buffer can store + invalid_num_bytes, + + /// async_read called while another async_read was in progress + double_read, + + /// An operation that requires an output stream was attempted before + /// setting one. + output_stream_required, + + /// stream error + bad_stream +}; + +/// iostream transport error category +class category : public lib::error_category { + public: + category() {} + + char const * name() const _WEBSOCKETPP_NOEXCEPT_TOKEN_ { + return "websocketpp.transport.iostream"; + } + + std::string message(int value) const { + switch(value) { + case general: + return "Generic iostream transport policy error"; + case invalid_num_bytes: + return "async_read_at_least call requested more bytes than buffer can store"; + case double_read: + return "Async read already in progress"; + case output_stream_required: + return "An output stream to be set before async_write can be used"; + case bad_stream: + return "A stream operation returned ios::bad"; + default: + return "Unknown"; + } + } +}; + +/// Get a reference to a static copy of the iostream transport error category +inline lib::error_category const & get_category() { + static category instance; + return instance; +} + +/// Get an error code with the given value and the iostream transport category +inline lib::error_code make_error_code(error::value e) { + return lib::error_code(static_cast(e), get_category()); +} + +} // namespace error +} // namespace iostream +} // namespace transport +} // namespace websocketpp +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_START_ +template<> struct is_error_code_enum +{ + static bool const value = true; +}; +_WEBSOCKETPP_ERROR_CODE_ENUM_NS_END_ + +#endif // WEBSOCKETPP_TRANSPORT_IOSTREAM_BASE_HPP diff --git a/src/third_party/websocketpp/websocketpp/transport/iostream/connection.hpp b/src/third_party/websocketpp/websocketpp/transport/iostream/connection.hpp new file mode 100644 index 00000000..458e42cd --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/transport/iostream/connection.hpp @@ -0,0 +1,551 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_TRANSPORT_IOSTREAM_CON_HPP +#define WEBSOCKETPP_TRANSPORT_IOSTREAM_CON_HPP + +#include +#include +#include + +#include +#include + +#include +#include + +namespace websocketpp { +namespace transport { +namespace iostream { + +/// Empty timer class to stub out for timer functionality that iostream +/// transport doesn't support +struct timer { + void cancel() {} +}; + +template +class connection : public lib::enable_shared_from_this< connection > { +public: + /// Type of this connection transport component + typedef connection type; + /// Type of a shared pointer to this connection transport component + typedef lib::shared_ptr ptr; + + /// transport concurrency policy + typedef typename config::concurrency_type concurrency_type; + /// Type of this transport's access logging policy + typedef typename config::alog_type alog_type; + /// Type of this transport's error logging policy + typedef typename config::elog_type elog_type; + + // Concurrency policy types + typedef typename concurrency_type::scoped_lock_type scoped_lock_type; + typedef typename concurrency_type::mutex_type mutex_type; + + typedef lib::shared_ptr timer_ptr; + + explicit connection(bool is_server, alog_type & alog, elog_type & elog) + : m_output_stream(NULL) + , m_reading(false) + , m_is_server(is_server) + , m_is_secure(false) + , m_alog(alog) + , m_elog(elog) + , m_remote_endpoint("iostream transport") + { + m_alog.write(log::alevel::devel,"iostream con transport constructor"); + } + + /// Get a shared pointer to this component + ptr get_shared() { + return type::shared_from_this(); + } + + /// Register a std::ostream with the transport for writing output + /** + * Register a std::ostream with the transport. All future writes will be + * done to this output stream. + * + * @param o A pointer to the ostream to use for output. + */ + void register_ostream(std::ostream * o) { + // TODO: lock transport state? + scoped_lock_type lock(m_read_mutex); + m_output_stream = o; + } + + /// Overloaded stream input operator + /** + * Attempts to read input from the given stream into the transport. Bytes + * will be extracted from the input stream to fulfill any pending reads. + * Input in this manner will only read until the current read buffer has + * been filled. Then it will signal the library to process the input. If the + * library's input handler adds a new async_read, additional bytes will be + * read, otherwise the input operation will end. + * + * When this function returns one of the following conditions is true: + * - There is no outstanding read operation + * - There are no more bytes available in the input stream + * + * You can use tellg() on the input stream to determine if all of the input + * bytes were read or not. + * + * If there is no pending read operation when the input method is called, it + * will return immediately and tellg() will not have changed. + */ + friend std::istream & operator>> (std::istream & in, type & t) { + // this serializes calls to external read. + scoped_lock_type lock(t.m_read_mutex); + + t.read(in); + + return in; + } + + /// Manual input supply + /** + * Copies bytes from buf into WebSocket++'s input buffers. Bytes will be + * copied from the supplied buffer to fulfill any pending library reads. It + * will return the number of bytes successfully processed. If there are no + * pending reads read_some will return immediately. Not all of the bytes may + * be able to be read in one call + * + * + * @since 0.3.0-alpha4 + * + * @param buf Char buffer to read into the websocket + * @param len Length of buf + * @return The number of characters from buf actually read. + */ + size_t read_some(char const * buf, size_t len) { + // this serializes calls to external read. + scoped_lock_type lock(m_read_mutex); + + return this->read_some_impl(buf,len); + } + + /// Manual input supply (DEPRECATED) + /** + * @deprecated DEPRECATED in favor of read_some() + * @see read_some() + */ + size_t readsome(char const * buf, size_t len) { + return this->read_some(buf,len); + } + + /// Signal EOF + /** + * Signals to the transport that data stream being read has reached EOF and + * that no more bytes may be read or written to/from the transport. + * + * @since 0.3.0-alpha4 + */ + void eof() { + // this serializes calls to external read. + scoped_lock_type lock(m_read_mutex); + + if (m_reading) { + complete_read(make_error_code(transport::error::eof)); + } + } + + /// Signal transport error + /** + * Signals to the transport that a fatal data stream error has occurred and + * that no more bytes may be read or written to/from the transport. + * + * @since 0.3.0-alpha4 + */ + void fatal_error() { + // this serializes calls to external read. + scoped_lock_type lock(m_read_mutex); + + if (m_reading) { + complete_read(make_error_code(transport::error::pass_through)); + } + } + + /// Set whether or not this connection is secure + /** + * The iostream transport does not provide any security features. As such + * it defaults to returning false when `is_secure` is called. However, the + * iostream transport may be used to wrap an external socket API that may + * provide secure transport. This method allows that external API to flag + * whether or not this connection is secure so that users of the WebSocket++ + * API will get more accurate information. + * + * @since 0.3.0-alpha4 + * + * @param value Whether or not this connection is secure. + */ + void set_secure(bool value) { + m_is_secure = value; + } + + /// Tests whether or not the underlying transport is secure + /** + * iostream transport will return false always because it has no information + * about the ultimate remote endpoint. This may or may not be accurate + * depending on the real source of bytes being input. The `set_secure` + * method may be used to flag connections that are secured by an external + * API + * + * @return Whether or not the underlying transport is secure + */ + bool is_secure() const { + return m_is_secure; + } + + /// Set human readable remote endpoint address + /** + * Sets the remote endpoint address returned by `get_remote_endpoint`. This + * value should be a human readable string that describes the remote + * endpoint. Typically an IP address or hostname, perhaps with a port. But + * may be something else depending on the nature of the underlying + * transport. + * + * If none is set the default is "iostream transport". + * + * @since 0.3.0-alpha4 + * + * @param value The remote endpoint address to set. + */ + void set_remote_endpoint(std::string value) { + m_remote_endpoint = value; + } + + /// Get human readable remote endpoint address + /** + * The iostream transport has no information about the ultimate remote + * endpoint. It will return the string "iostream transport". The + * `set_remote_endpoint` method may be used by external network code to set + * a more accurate value. + * + * This value is used in access and error logs and is available to the end + * application for including in user facing interfaces and messages. + * + * @return A string identifying the address of the remote endpoint + */ + std::string get_remote_endpoint() const { + return m_remote_endpoint; + } + + /// Get the connection handle + /** + * @return The handle for this connection. + */ + connection_hdl get_handle() const { + return m_connection_hdl; + } + + /// Call back a function after a period of time. + /** + * Timers are not implemented in this transport. The timer pointer will + * always be empty. The handler will never be called. + * + * @param duration Length of time to wait in milliseconds + * @param callback The function to call back when the timer has expired + * @return A handle that can be used to cancel the timer if it is no longer + * needed. + */ + timer_ptr set_timer(long duration, timer_handler handler) { + return timer_ptr(); + } +protected: + /// Initialize the connection transport + /** + * Initialize the connection's transport component. + * + * @param handler The `init_handler` to call when initialization is done + */ + void init(init_handler handler) { + m_alog.write(log::alevel::devel,"iostream connection init"); + handler(lib::error_code()); + } + + /// Initiate an async_read for at least num_bytes bytes into buf + /** + * Initiates an async_read request for at least num_bytes bytes. The input + * will be read into buf. A maximum of len bytes will be input. When the + * operation is complete, handler will be called with the status and number + * of bytes read. + * + * This method may or may not call handler from within the initial call. The + * application should be prepared to accept either. + * + * The application should never call this method a second time before it has + * been called back for the first read. If this is done, the second read + * will be called back immediately with a double_read error. + * + * If num_bytes or len are zero handler will be called back immediately + * indicating success. + * + * @param num_bytes Don't call handler until at least this many bytes have + * been read. + * @param buf The buffer to read bytes into + * @param len The size of buf. At maximum, this many bytes will be read. + * @param handler The callback to invoke when the operation is complete or + * ends in an error + */ + void async_read_at_least(size_t num_bytes, char *buf, size_t len, + read_handler handler) + { + std::stringstream s; + s << "iostream_con async_read_at_least: " << num_bytes; + m_alog.write(log::alevel::devel,s.str()); + + if (num_bytes > len) { + handler(make_error_code(error::invalid_num_bytes),size_t(0)); + return; + } + + if (m_reading == true) { + handler(make_error_code(error::double_read),size_t(0)); + return; + } + + if (num_bytes == 0 || len == 0) { + handler(lib::error_code(),size_t(0)); + return; + } + + m_buf = buf; + m_len = len; + m_bytes_needed = num_bytes; + m_read_handler = handler; + m_cursor = 0; + m_reading = true; + } + + /// Asyncronous Transport Write + /** + * Write len bytes in buf to the output stream. Call handler to report + * success or failure. handler may or may not be called during async_write, + * but it must be safe for this to happen. + * + * Will return 0 on success. Other possible errors (not exhaustive) + * output_stream_required: No output stream was registered to write to + * bad_stream: a ostream pass through error + * + * @param buf buffer to read bytes from + * @param len number of bytes to write + * @param handler Callback to invoke with operation status. + */ + void async_write(char const * buf, size_t len, write_handler handler) { + m_alog.write(log::alevel::devel,"iostream_con async_write"); + // TODO: lock transport state? + + if (!m_output_stream) { + handler(make_error_code(error::output_stream_required)); + return; + } + + m_output_stream->write(buf,len); + + if (m_output_stream->bad()) { + handler(make_error_code(error::bad_stream)); + } else { + handler(lib::error_code()); + } + } + + /// Asyncronous Transport Write (scatter-gather) + /** + * Write a sequence of buffers to the output stream. Call handler to report + * success or failure. handler may or may not be called during async_write, + * but it must be safe for this to happen. + * + * Will return 0 on success. Other possible errors (not exhaustive) + * output_stream_required: No output stream was registered to write to + * bad_stream: a ostream pass through error + * + * @param bufs vector of buffers to write + * @param handler Callback to invoke with operation status. + */ + void async_write(std::vector const & bufs, write_handler handler) { + m_alog.write(log::alevel::devel,"iostream_con async_write buffer list"); + // TODO: lock transport state? + + if (!m_output_stream) { + handler(make_error_code(error::output_stream_required)); + return; + } + + std::vector::const_iterator it; + for (it = bufs.begin(); it != bufs.end(); it++) { + m_output_stream->write((*it).buf,(*it).len); + + if (m_output_stream->bad()) { + handler(make_error_code(error::bad_stream)); + } + } + + handler(lib::error_code()); + } + + /// Set Connection Handle + /** + * @param hdl The new handle + */ + void set_handle(connection_hdl hdl) { + m_connection_hdl = hdl; + } + + /// Call given handler back within the transport's event system (if present) + /** + * Invoke a callback within the transport's event system if it has one. If + * it doesn't, the handler will be invoked immediately before this function + * returns. + * + * @param handler The callback to invoke + * + * @return Whether or not the transport was able to register the handler for + * callback. + */ + lib::error_code dispatch(dispatch_handler handler) { + handler(); + return lib::error_code(); + } + + /// Perform cleanup on socket shutdown_handler + /** + * @param h The `shutdown_handler` to call back when complete + */ + void async_shutdown(shutdown_handler handler) { + handler(lib::error_code()); + } +private: + void read(std::istream &in) { + m_alog.write(log::alevel::devel,"iostream_con read"); + + while (in.good()) { + if (!m_reading) { + m_elog.write(log::elevel::devel,"write while not reading"); + break; + } + + in.read(m_buf+m_cursor,static_cast(m_len-m_cursor)); + + if (in.gcount() == 0) { + m_elog.write(log::elevel::devel,"read zero bytes"); + break; + } + + m_cursor += static_cast(in.gcount()); + + // TODO: error handling + if (in.bad()) { + m_reading = false; + complete_read(make_error_code(error::bad_stream)); + } + + if (m_cursor >= m_bytes_needed) { + m_reading = false; + complete_read(lib::error_code()); + } + } + } + + size_t read_some_impl(char const * buf, size_t len) { + m_alog.write(log::alevel::devel,"iostream_con read_some"); + + if (!m_reading) { + m_elog.write(log::elevel::devel,"write while not reading"); + return 0; + } + + size_t bytes_to_copy = std::min(len,m_len-m_cursor); + + std::copy(buf,buf+bytes_to_copy,m_buf+m_cursor); + + m_cursor += bytes_to_copy; + + if (m_cursor >= m_bytes_needed) { + complete_read(lib::error_code()); + } + + return bytes_to_copy; + } + + /// Signal that a requested read is complete + /** + * Sets the reading flag to false and returns the handler that should be + * called back with the result of the read. The cursor position that is sent + * is whatever the value of m_cursor is. + * + * It MUST NOT be called when m_reading is false. + * it MUST be called while holding the read lock + * + * It is important to use this method rather than directly setting/calling + * m_read_handler back because this function makes sure to delete the + * locally stored handler which contains shared pointers that will otherwise + * cause circular reference based memory leaks. + * + * @param ec The error code to forward to the read handler + */ + void complete_read(lib::error_code const & ec) { + m_reading = false; + + read_handler handler = m_read_handler; + m_read_handler = read_handler(); + + handler(ec,m_cursor); + } + + // Read space (Protected by m_read_mutex) + char * m_buf; + size_t m_len; + size_t m_bytes_needed; + read_handler m_read_handler; + size_t m_cursor; + + // transport resources + std::ostream * m_output_stream; + connection_hdl m_connection_hdl; + + bool m_reading; + bool const m_is_server; + bool m_is_secure; + alog_type & m_alog; + elog_type & m_elog; + std::string m_remote_endpoint; + + // This lock ensures that only one thread can edit read data for this + // connection. This is a very coarse lock that is basically locked all the + // time. The nature of the connection is such that it cannot be + // parallelized, the locking is here to prevent intra-connection concurrency + // in order to allow inter-connection concurrency. + mutex_type m_read_mutex; +}; + + +} // namespace iostream +} // namespace transport +} // namespace websocketpp + +#endif // WEBSOCKETPP_TRANSPORT_IOSTREAM_CON_HPP diff --git a/src/third_party/websocketpp/websocketpp/transport/iostream/endpoint.hpp b/src/third_party/websocketpp/websocketpp/transport/iostream/endpoint.hpp new file mode 100644 index 00000000..91ea6fcf --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/transport/iostream/endpoint.hpp @@ -0,0 +1,173 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_TRANSPORT_IOSTREAM_HPP +#define WEBSOCKETPP_TRANSPORT_IOSTREAM_HPP + +#include +#include + +#include +#include + +#include + +namespace websocketpp { +namespace transport { +namespace iostream { + +template +class endpoint { +public: + /// Type of this endpoint transport component + typedef endpoint type; + /// Type of a pointer to this endpoint transport component + typedef lib::shared_ptr ptr; + + /// Type of this endpoint's concurrency policy + typedef typename config::concurrency_type concurrency_type; + /// Type of this endpoint's error logging policy + typedef typename config::elog_type elog_type; + /// Type of this endpoint's access logging policy + typedef typename config::alog_type alog_type; + + /// Type of this endpoint transport component's associated connection + /// transport component. + typedef iostream::connection transport_con_type; + /// Type of a shared pointer to this endpoint transport component's + /// associated connection transport component + typedef typename transport_con_type::ptr transport_con_ptr; + + // generate and manage our own io_service + explicit endpoint() : m_output_stream(NULL), m_is_secure(false) + { + //std::cout << "transport::iostream::endpoint constructor" << std::endl; + } + + /// Register a default output stream + /** + * The specified output stream will be assigned to future connections as the + * default output stream. + * + * @param o The ostream to use as the default output stream. + */ + void register_ostream(std::ostream * o) { + m_alog->write(log::alevel::devel,"register_ostream"); + m_output_stream = o; + } + + /// Set whether or not endpoint can create secure connections + /** + * The iostream transport does not provide any security features. As such + * it defaults to returning false when `is_secure` is called. However, the + * iostream transport may be used to wrap an external socket API that may + * provide secure transport. This method allows that external API to flag + * whether or not it can create secure connections so that users of the + * WebSocket++ API will get more accurate information. + * + * Setting this value only indicates whether or not the endpoint is capable + * of producing and managing secure connections. Connections produced by + * this endpoint must also be individually flagged as secure if they are. + * + * @since 0.3.0-alpha4 + * + * @param value Whether or not the endpoint can create secure connections. + */ + void set_secure(bool value) { + m_is_secure = value; + } + + /// Tests whether or not the underlying transport is secure + /** + * iostream transport will return false by default because it has no + * information about the ultimate remote endpoint. This may or may not be + * accurate depending on the real source of bytes being input. `set_secure` + * may be used by a wrapper API to correct the return value in the case that + * secure connections are in fact possible. + * + * @return Whether or not the underlying transport is secure + */ + bool is_secure() const { + return m_is_secure; + } +protected: + /// Initialize logging + /** + * The loggers are located in the main endpoint class. As such, the + * transport doesn't have direct access to them. This method is called + * by the endpoint constructor to allow shared logging from the transport + * component. These are raw pointers to member variables of the endpoint. + * In particular, they cannot be used in the transport constructor as they + * haven't been constructed yet, and cannot be used in the transport + * destructor as they will have been destroyed by then. + * + * @param a A pointer to the access logger to use. + * @param e A pointer to the error logger to use. + */ + void init_logging(alog_type * a, elog_type * e) { + m_elog = e; + m_alog = a; + } + + /// Initiate a new connection + /** + * @param tcon A pointer to the transport connection component of the + * connection to connect. + * @param u A URI pointer to the URI to connect to. + * @param cb The function to call back with the results when complete. + */ + void async_connect(transport_con_ptr tcon, uri_ptr u, connect_handler cb) { + cb(tcon->get_handle(),lib::error_code()); + } + + /// Initialize a connection + /** + * Init is called by an endpoint once for each newly created connection. + * It's purpose is to give the transport policy the chance to perform any + * transport specific initialization that couldn't be done via the default + * constructor. + * + * @param tcon A pointer to the transport portion of the connection. + * @return A status code indicating the success or failure of the operation + */ + lib::error_code init(transport_con_ptr tcon) { + tcon->register_ostream(m_output_stream); + return lib::error_code(); + } +private: + std::ostream * m_output_stream; + elog_type * m_elog; + alog_type * m_alog; + bool m_is_secure; +}; + + +} // namespace iostream +} // namespace transport +} // namespace websocketpp + +#endif // WEBSOCKETPP_TRANSPORT_IOSTREAM_HPP diff --git a/src/third_party/websocketpp/websocketpp/uri.hpp b/src/third_party/websocketpp/websocketpp/uri.hpp new file mode 100644 index 00000000..2bfa1f7c --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/uri.hpp @@ -0,0 +1,336 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_URI_HPP +#define WEBSOCKETPP_URI_HPP + +#include +#include + +#include +#include +#include +#include + +namespace websocketpp { + +// TODO: figure out why this fixes horrible linking errors. + +/// Default port for ws:// +static uint16_t const uri_default_port = 80; +/// Default port for wss:// +static uint16_t const uri_default_secure_port = 443; + +class uri { +public: + explicit uri(std::string const & uri) : m_valid(false) { + std::string::const_iterator it; + std::string::const_iterator temp; + + int state = 0; + + it = uri.begin(); + + if (std::equal(it,it+6,"wss://")) { + m_secure = true; + m_scheme = "wss"; + it += 6; + } else if (std::equal(it,it+5,"ws://")) { + m_secure = false; + m_scheme = "ws"; + it += 5; + } else if (std::equal(it,it+7,"http://")) { + m_secure = false; + m_scheme = "http"; + it += 7; + } else if (std::equal(it,it+8,"https://")) { + m_secure = true; + m_scheme = "https"; + it += 8; + } else { + return; + } + + // extract host. + // either a host string + // an IPv4 address + // or an IPv6 address + if (*it == '[') { + ++it; + // IPv6 literal + // extract IPv6 digits until ] + + // TODO: this doesn't work on g++... not sure why + //temp = std::find(it,it2,']'); + + temp = it; + while (temp != uri.end()) { + if (*temp == ']') { + break; + } + ++temp; + } + + if (temp == uri.end()) { + return; + } else { + // validate IPv6 literal parts + // can contain numbers, a-f and A-F + m_host.append(it,temp); + } + it = temp+1; + if (it == uri.end()) { + state = 2; + } else if (*it == '/') { + state = 2; + ++it; + } else if (*it == ':') { + state = 1; + ++it; + } else { + // problem + return; + } + } else { + // IPv4 or hostname + // extract until : or / + while (state == 0) { + if (it == uri.end()) { + state = 2; + break; + } else if (*it == '/') { + state = 2; + } else if (*it == ':') { + // end hostname start port + state = 1; + } else { + m_host += *it; + } + ++it; + } + } + + // parse port + std::string port = ""; + while (state == 1) { + if (it == uri.end()) { + state = 3; + break; + } else if (*it == '/') { + state = 3; + } else { + port += *it; + } + ++it; + } + + lib::error_code ec; + m_port = get_port_from_string(port, ec); + + if (ec) { + return; + } + + m_resource = "/"; + m_resource.append(it,uri.end()); + + + m_valid = true; + } + + uri(bool secure, std::string const & host, uint16_t port, + std::string const & resource) + : m_scheme(secure ? "wss" : "ws") + , m_host(host) + , m_resource(resource == "" ? "/" : resource) + , m_port(port) + , m_secure(secure) + , m_valid(true) {} + + uri(bool secure, std::string const & host, std::string const & resource) + : m_scheme(secure ? "wss" : "ws") + , m_host(host) + , m_resource(resource == "" ? "/" : resource) + , m_port(secure ? uri_default_secure_port : uri_default_port) + , m_secure(secure) + , m_valid(true) {} + + uri(bool secure, std::string const & host, std::string const & port, + std::string const & resource) + : m_scheme(secure ? "wss" : "ws") + , m_host(host) + , m_resource(resource == "" ? "/" : resource) + , m_secure(secure) + { + lib::error_code ec; + m_port = get_port_from_string(port,ec); + m_valid = !ec; + } + + uri(std::string const & scheme, std::string const & host, uint16_t port, + std::string const & resource) + : m_scheme(scheme) + , m_host(host) + , m_resource(resource == "" ? "/" : resource) + , m_port(port) + , m_secure(scheme == "wss" || scheme == "https") + , m_valid(true) {} + + uri(std::string scheme, std::string const & host, std::string const & resource) + : m_scheme(scheme) + , m_host(host) + , m_resource(resource == "" ? "/" : resource) + , m_port((scheme == "wss" || scheme == "https") ? uri_default_secure_port : uri_default_port) + , m_secure(scheme == "wss" || scheme == "https") + , m_valid(true) {} + + uri(std::string const & scheme, std::string const & host, + std::string const & port, std::string const & resource) + : m_scheme(scheme) + , m_host(host) + , m_resource(resource == "" ? "/" : resource) + , m_secure(scheme == "wss" || scheme == "https") + { + lib::error_code ec; + m_port = get_port_from_string(port,ec); + m_valid = !ec; + } + + bool get_valid() const { + return m_valid; + } + + bool get_secure() const { + return m_secure; + } + + std::string const & get_scheme() const { + return m_scheme; + } + + std::string const & get_host() const { + return m_host; + } + + std::string get_host_port() const { + if (m_port == (m_secure ? uri_default_secure_port : uri_default_port)) { + return m_host; + } else { + std::stringstream p; + p << m_host << ":" << m_port; + return p.str(); + } + } + + std::string get_authority() const { + std::stringstream p; + p << m_host << ":" << m_port; + return p.str(); + } + + uint16_t get_port() const { + return m_port; + } + + std::string get_port_str() const { + std::stringstream p; + p << m_port; + return p.str(); + } + + std::string const & get_resource() const { + return m_resource; + } + + std::string str() const { + std::stringstream s; + + s << m_scheme << "://" << m_host; + + if (m_port != (m_secure ? uri_default_secure_port : uri_default_port)) { + s << ":" << m_port; + } + + s << m_resource; + return s.str(); + } + + // get query? + // get fragment + + // hi <3 + + // get the string representation of this URI + + //std::string base() const; // is this still needed? + + // setter methods set some or all (in the case of parse) based on the input. + // These functions throw a uri_exception on failure. + /*void set_uri(const std::string& uri); + + void set_secure(bool secure); + void set_host(const std::string& host); + void set_port(uint16_t port); + void set_port(const std::string& port); + void set_resource(const std::string& resource);*/ +private: + uint16_t get_port_from_string(std::string const & port, lib::error_code & + ec) const + { + ec = lib::error_code(); + + if (port == "") { + return (m_secure ? uri_default_secure_port : uri_default_port); + } + + unsigned int t_port = static_cast(atoi(port.c_str())); + + if (t_port > 65535) { + ec = error::make_error_code(error::invalid_port); + } + + if (t_port == 0) { + ec = error::make_error_code(error::invalid_port); + } + + return static_cast(t_port); + } + + std::string m_scheme; + std::string m_host; + std::string m_resource; + uint16_t m_port; + bool m_secure; + bool m_valid; +}; + +/// Pointer to a URI +typedef lib::shared_ptr uri_ptr; + +} // namespace websocketpp + +#endif // WEBSOCKETPP_URI_HPP diff --git a/src/third_party/websocketpp/websocketpp/utf8_validator.hpp b/src/third_party/websocketpp/websocketpp/utf8_validator.hpp new file mode 100644 index 00000000..b0c56644 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/utf8_validator.hpp @@ -0,0 +1,127 @@ +// Copyright (c) 2008-2009 Bjoern Hoehrmann +// See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details. + +#ifndef UTF8_VALIDATOR_HPP +#define UTF8_VALIDATOR_HPP + +#include + +namespace websocketpp { +namespace utf8_validator { + +/// State that represents a valid utf8 input sequence +static unsigned int const utf8_accept = 0; +/// State that represents an invalid utf8 input sequence +static unsigned int const utf8_reject = 1; + +/// Lookup table for the UTF8 decode state machine +static uint8_t const utf8d[] = { + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 00..1f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 20..3f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 40..5f + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 60..7f + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, // 80..9f + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, // a0..bf + 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, // c0..df + 0xa,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x4,0x3,0x3, // e0..ef + 0xb,0x6,0x6,0x6,0x5,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8, // f0..ff + 0x0,0x1,0x2,0x3,0x5,0x8,0x7,0x1,0x1,0x1,0x4,0x6,0x1,0x1,0x1,0x1, // s0..s0 + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1, // s1..s2 + 1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1, // s3..s4 + 1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,1,1, // s5..s6 + 1,3,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1, // s7..s8 +}; + +/// Decode the next byte of a UTF8 sequence +/** + * @param [out] state The decoder state to advance + * @param [out] codep The codepoint to fill in + * @param [in] byte The byte to input + * @return The ending state of the decode operation + */ +inline uint32_t decode(uint32_t * state, uint32_t * codep, uint8_t byte) { + uint32_t type = utf8d[byte]; + + *codep = (*state != utf8_accept) ? + (byte & 0x3fu) | (*codep << 6) : + (0xff >> type) & (byte); + + *state = utf8d[256 + *state*16 + type]; + return *state; +} + +/// Provides streaming UTF8 validation functionality +class validator { +public: + /// Construct and initialize the validator + validator() : m_state(utf8_accept),m_codepoint(0) {} + + /// Advance the state of the validator with the next input byte + /** + * @param byte The byte to advance the validation state with + * @return Whether or not the byte resulted in a validation error. + */ + bool consume (uint8_t byte) { + if (utf8_validator::decode(&m_state,&m_codepoint,byte) == utf8_reject) { + return false; + } + return true; + } + + /// Advance validator state with input from an iterator pair + /** + * @param begin Input iterator to the start of the input range + * @param end Input iterator to the end of the input range + * @return Whether or not decoding the bytes resulted in a validation error. + */ + template + bool decode (iterator_type begin, iterator_type end) { + for (iterator_type it = begin; it != end; ++it) { + unsigned int result = utf8_validator::decode( + &m_state, + &m_codepoint, + static_cast(*it) + ); + + if (result == utf8_reject) { + return false; + } + } + return true; + } + + /// Return whether the input sequence ended on a valid utf8 codepoint + /** + * @return Whether or not the input sequence ended on a valid codepoint. + */ + bool complete() { + return m_state == utf8_accept; + } + + /// Reset the validator to decode another message + void reset() { + m_state = utf8_accept; + m_codepoint = 0; + } +private: + uint32_t m_state; + uint32_t m_codepoint; +}; + +/// Validate a UTF8 string +/** + * convenience function that creates a validator, validates a complete string + * and returns the result. + */ +inline bool validate(std::string const & s) { + validator v; + if (!v.decode(s.begin(),s.end())) { + return false; + } + return v.complete(); +} + +} // namespace utf8_validator +} // namespace websocketpp + +#endif // UTF8_VALIDATOR_HPP diff --git a/src/third_party/websocketpp/websocketpp/utilities.hpp b/src/third_party/websocketpp/websocketpp/utilities.hpp new file mode 100644 index 00000000..07745661 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/utilities.hpp @@ -0,0 +1,182 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_UTILITIES_HPP +#define WEBSOCKETPP_UTILITIES_HPP + +#include + +#include +#include +#include + +namespace websocketpp { +/// Generic non-websocket specific utility functions and data structures +namespace utility { + +/// Helper functor for case insensitive find +/** + * Based on code from + * http://stackoverflow.com/questions/3152241/case-insensitive-stdstring-find + * + * templated version of my_equal so it could work with both char and wchar_t + */ +template +struct my_equal { + /// Construct the functor with the given locale + /** + * @param [in] loc The locale to use for determining the case of values + */ + my_equal(std::locale const & loc ) : m_loc(loc) {} + + /// Perform a case insensitive comparison + /** + * @param ch1 The first value to compare + * @param ch2 The second value to compare + * @return Whether or not the two values are equal when both are converted + * to uppercase using the given locale. + */ + bool operator()(charT ch1, charT ch2) { + return std::toupper(ch1, m_loc) == std::toupper(ch2, m_loc); + } +private: + std::locale const & m_loc; +}; + +/// Helper less than functor for case insensitive find +/** + * Based on code from + * http://stackoverflow.com/questions/3152241/case-insensitive-stdstring-find + */ +struct ci_less : std::binary_function { + // case-independent (ci) compare_less binary function + struct nocase_compare + : public std::binary_function + { + bool operator() (unsigned char const & c1, unsigned char const & c2) const { + return std::tolower (c1) < std::tolower (c2); + } + }; + bool operator() (std::string const & s1, std::string const & s2) const { + return std::lexicographical_compare + (s1.begin (), s1.end (), // source range + s2.begin (), s2.end (), // dest range + nocase_compare ()); // comparison + } +}; + +/// Find substring (case insensitive) +/** + * @param [in] haystack The string to search in + * @param [in] needle The string to search for + * @param [in] loc The locale to use for determining the case of values. + * Defaults to the current locale. + * @return An iterator to the first element of the first occurrance of needle in + * haystack. If the sequence is not found, the function returns + * haystack.end() + */ +template +typename T::const_iterator ci_find_substr(T const & haystack, T const & needle, + std::locale const & loc = std::locale()) +{ + return std::search( haystack.begin(), haystack.end(), + needle.begin(), needle.end(), my_equal(loc) ); +} + +/// Find substring (case insensitive) +/** + * @todo Is this still used? This method may not make sense.. should use + * iterators or be less generic. As is it is too tightly coupled to std::string + * + * @param [in] haystack The string to search in + * @param [in] needle The string to search for as a char array of values + * @param [in] size Length of needle + * @param [in] loc The locale to use for determining the case of values. + * Defaults to the current locale. + * @return An iterator to the first element of the first occurrance of needle in + * haystack. If the sequence is not found, the function returns + * haystack.end() + */ +template +typename T::const_iterator ci_find_substr(T const & haystack, + typename T::value_type const * needle, typename T::size_type size, + std::locale const & loc = std::locale()) +{ + return std::search( haystack.begin(), haystack.end(), + needle, needle+size, my_equal(loc) ); +} + +/// Convert a string to lowercase +/** + * @param [in] in The string to convert + * @return The converted string + */ +std::string to_lower(std::string const & in); + +/// Replace all occurrances of a substring with another +/** + * @param [in] subject The string to search in + * @param [in] search The string to search for + * @param [in] replace The string to replace with + * @return A copy of `subject` with all occurances of `search` replaced with + * `replace` + */ +std::string string_replace_all(std::string subject, std::string const & search, + std::string const & replace); + +/// Convert std::string to ascii printed string of hex digits +/** + * @param [in] input The string to print + * @return A copy of `input` converted to the printable representation of the + * hex values of its data. + */ +std::string to_hex(std::string const & input); + +/// Convert byte array (uint8_t) to ascii printed string of hex digits +/** + * @param [in] input The byte array to print + * @param [in] length The length of input + * @return A copy of `input` converted to the printable representation of the + * hex values of its data. + */ +std::string to_hex(uint8_t const * input, size_t length); + +/// Convert char array to ascii printed string of hex digits +/** + * @param [in] input The char array to print + * @param [in] length The length of input + * @return A copy of `input` converted to the printable representation of the + * hex values of its data. + */ +std::string to_hex(char const * input, size_t length); + +} // namespace utility +} // namespace websocketpp + +#include + +#endif // WEBSOCKETPP_UTILITIES_HPP diff --git a/src/third_party/websocketpp/websocketpp/version.hpp b/src/third_party/websocketpp/websocketpp/version.hpp new file mode 100644 index 00000000..6c77010b --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/version.hpp @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2013, Peter Thorson. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the WebSocket++ Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL PETER THORSON BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WEBSOCKETPP_VERSION_HPP +#define WEBSOCKETPP_VERSION_HPP + +/// Namespace for the WebSocket++ project +namespace websocketpp { + +/* + other places where version information is kept + - readme.md + - changelog.md + - Doxyfile + - CMakeLists.txt +*/ + +/// Library major version number +static int const major_version = 0; +/// Library minor version number +static int const minor_version = 3; +/// Library patch version number +static int const patch_version = 0; +/// Library pre-release flag +/** + * This is a textual flag indicating the type and number for pre-release + * versions (dev, alpha, beta, rc). This will be blank for release versions. + */ +static char const prerelease_flag[] = "alpha3"; + +/// Default user agent string +static char const user_agent[] = "WebSocket++/0.3.0-alpha3"; + +} // namespace websocketpp + +#endif // WEBSOCKETPP_VERSION_HPP From d23cc87c933d5a52a41ed581229f39ef6a24ab5b Mon Sep 17 00:00:00 2001 From: lotodore Date: Wed, 2 Oct 2013 23:58:47 +0200 Subject: [PATCH 071/128] Adding missing license files. --- src/third_party/qtlockedfile/LICENSE.LGPL | 514 ++++++++++++++++++ .../qtsingleapplication/LICENSE.LGPL | 514 ++++++++++++++++++ 2 files changed, 1028 insertions(+) create mode 100644 src/third_party/qtlockedfile/LICENSE.LGPL create mode 100644 src/third_party/qtsingleapplication/LICENSE.LGPL diff --git a/src/third_party/qtlockedfile/LICENSE.LGPL b/src/third_party/qtlockedfile/LICENSE.LGPL new file mode 100644 index 00000000..b2e7909d --- /dev/null +++ b/src/third_party/qtlockedfile/LICENSE.LGPL @@ -0,0 +1,514 @@ + GNU LESSER GENERAL PUBLIC LICENSE + + The Qt Toolkit is Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). + Contact: http://www.qt-project.org/legal + + You may use, distribute and copy the Qt GUI Toolkit under the terms of + GNU Lesser General Public License version 2.1, which is displayed below. + +------------------------------------------------------------------------- + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/src/third_party/qtsingleapplication/LICENSE.LGPL b/src/third_party/qtsingleapplication/LICENSE.LGPL new file mode 100644 index 00000000..b2e7909d --- /dev/null +++ b/src/third_party/qtsingleapplication/LICENSE.LGPL @@ -0,0 +1,514 @@ + GNU LESSER GENERAL PUBLIC LICENSE + + The Qt Toolkit is Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). + Contact: http://www.qt-project.org/legal + + You may use, distribute and copy the Qt GUI Toolkit under the terms of + GNU Lesser General Public License version 2.1, which is displayed below. + +------------------------------------------------------------------------- + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + From 04abfb658d9a16e9354542e6ccf5a615cf909a7a Mon Sep 17 00:00:00 2001 From: lotodore Date: Thu, 3 Oct 2013 00:41:07 +0200 Subject: [PATCH 072/128] WebSocket protocol support can now be configured and is only used in the dedicated server. --- src/config/configfile.cpp | 4 +++- src/game_defs.h | 5 ++++- src/net/common/servermanager.cpp | 5 +++-- src/net/common/servermanagerirc.cpp | 4 ++-- src/net/servermanager.h | 2 +- src/net/servermanagerirc.h | 2 +- src/session.cpp | 10 +++++++++- 7 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/config/configfile.cpp b/src/config/configfile.cpp index 9c0b18e9..d9fc1a5f 100644 --- a/src/config/configfile.cpp +++ b/src/config/configfile.cpp @@ -64,7 +64,7 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly) myConfigState = OK; // !!!! Revisionsnummer der Configdefaults !!!!! - configRev = 100; + configRev = 101; //standard defaults logOnOffDefault = "1"; @@ -220,7 +220,9 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly) configList.push_back(ConfigInfo("ServerPassword", CONFIG_TYPE_STRING, "")); configList.push_back(ConfigInfo("ServerUseIpv6", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("ServerUseSctp", CONFIG_TYPE_INT, "0")); + configList.push_back(ConfigInfo("ServerUseWebSocket", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("ServerPort", CONFIG_TYPE_INT, "7234")); + configList.push_back(ConfigInfo("ServerWebSocketPort", CONFIG_TYPE_INT, "7233")); configList.push_back(ConfigInfo("ServerUsePutAvatars", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("ServerPutAvatarsAddress", CONFIG_TYPE_STRING, "")); configList.push_back(ConfigInfo("ServerPutAvatarsUser", CONFIG_TYPE_STRING, "")); diff --git a/src/game_defs.h b/src/game_defs.h index bef056ce..aade5fd8 100644 --- a/src/game_defs.h +++ b/src/game_defs.h @@ -64,7 +64,10 @@ enum ServerMode { enum ServerTransportProtocol { TRANSPORT_PROTOCOL_TCP = 1, TRANSPORT_PROTOCOL_SCTP = 2, - TRANSPORT_PROTOCOL_TCP_SCTP = 3 + TRANSPORT_PROTOCOL_TCP_SCTP = 3, + TRANSPORT_PROTOCOL_WEBSOCKET = 4, + TRANSPORT_PROTOCOL_TCP_WEBSOCKET = 5, + TRANSPORT_PROTOCOL_TCP_SCTP_WEBSOCKET = 7 }; enum GameState { diff --git a/src/net/common/servermanager.cpp b/src/net/common/servermanager.cpp index 9f928b73..b75e6961 100644 --- a/src/net/common/servermanager.cpp +++ b/src/net/common/servermanager.cpp @@ -78,7 +78,7 @@ ServerManager::~ServerManager() } void -ServerManager::Init(unsigned serverPort, bool ipv6, ServerTransportProtocol proto, const string &logDir) +ServerManager::Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const string &logDir) { GetLobbyThread().Init(logDir); @@ -93,9 +93,10 @@ ServerManager::Init(unsigned serverPort, bool ipv6, ServerTransportProtocol prot sctpAcceptHelper->Listen(serverPort, ipv6, logDir, m_lobbyThread); m_acceptHelperPool.push_back(sctpAcceptHelper); }*/ + if (proto & TRANSPORT_PROTOCOL_WEBSOCKET) { boost::shared_ptr webAcceptHelper(new ServerAcceptWebHelper(GetGui(), m_ioService)); - webAcceptHelper->Listen(7233, true, logDir, m_lobbyThread); + webAcceptHelper->Listen(websocketPort, ipv6, logDir, m_lobbyThread); m_acceptHelperPool.push_back(webAcceptHelper); } } diff --git a/src/net/common/servermanagerirc.cpp b/src/net/common/servermanagerirc.cpp index 6e55a0bb..3b7b028b 100644 --- a/src/net/common/servermanagerirc.cpp +++ b/src/net/common/servermanagerirc.cpp @@ -52,7 +52,7 @@ ServerManagerIrc::~ServerManagerIrc() } void -ServerManagerIrc::Init(unsigned serverPort, bool ipv6, ServerTransportProtocol proto, const string &logDir) +ServerManagerIrc::Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const string &logDir) { boost::shared_ptr tmpIrcAdminThread; boost::shared_ptr tmpIrcLobbyThread; @@ -83,7 +83,7 @@ ServerManagerIrc::Init(unsigned serverPort, bool ipv6, ServerTransportProtocol p m_adminBot->Init(m_lobbyThread, tmpIrcAdminThread, myConfig.readConfigString("CacheDir")); m_lobbyBot->Init(m_lobbyThread, tmpIrcLobbyThread); - ServerManager::Init(serverPort, ipv6, proto, logDir); + ServerManager::Init(serverPort, websocketPort, ipv6, proto, logDir); } void diff --git a/src/net/servermanager.h b/src/net/servermanager.h index 1c88ecfa..09b7468d 100644 --- a/src/net/servermanager.h +++ b/src/net/servermanager.h @@ -54,7 +54,7 @@ public: virtual ~ServerManager(); // Set the parameters. - virtual void Init(unsigned serverPort, bool ipv6, ServerTransportProtocol proto, const std::string &logDir); + virtual void Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const std::string &logDir); // Main start function. virtual void RunAll(); diff --git a/src/net/servermanagerirc.h b/src/net/servermanagerirc.h index 63ce6500..3126a98a 100644 --- a/src/net/servermanagerirc.h +++ b/src/net/servermanagerirc.h @@ -45,7 +45,7 @@ public: virtual ~ServerManagerIrc(); // Set the parameters. - virtual void Init(unsigned serverPort, bool ipv6, ServerTransportProtocol proto, const std::string &logDir); + virtual void Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const std::string &logDir); // Main start function. virtual void RunAll(); diff --git a/src/session.cpp b/src/session.cpp index f68b7bae..5a067ba0 100755 --- a/src/session.cpp +++ b/src/session.cpp @@ -330,10 +330,18 @@ void Session::startNetworkServer(bool dedicated) myNetServer = ServerManagerFactory::CreateServerManager(*myConfig, *myGui, mode, *myAvatarManager); + int protocol = TRANSPORT_PROTOCOL_TCP; + if (dedicated && myConfig->readConfigInt("ServerUseWebSocket") == 1) { + protocol |= TRANSPORT_PROTOCOL_WEBSOCKET; + } + if (myConfig->readConfigInt("ServerUseSctp") == 1) { + protocol |= TRANSPORT_PROTOCOL_SCTP; + } myNetServer->Init( myConfig->readConfigInt("ServerPort"), + myConfig->readConfigInt("ServerWebSocketPort"), myConfig->readConfigInt("ServerUseIpv6") == 1, - myConfig->readConfigInt("ServerUseSctp") == 1 ? TRANSPORT_PROTOCOL_TCP_SCTP : TRANSPORT_PROTOCOL_TCP, + protocol, myQtToolsInterface->stringFromUtf8(myConfig->readConfigString("LogDir")) ); From 1e23bca665a3e24f858377ef90a59e915a37f310 Mon Sep 17 00:00:00 2001 From: doitux Date: Fri, 4 Oct 2013 21:32:24 +0200 Subject: [PATCH 073/128] remove join any game button - add spectator link to pokerth-live --- src/gui/qt/gamelobbydialog.ui | 28 ++-- .../gamelobbydialog/gamelobbydialogimpl.cpp | 62 +-------- .../qt/gamelobbydialog/gamelobbydialogimpl.h | 2 - .../qt/gui_800x480/gamelobbydialog_800x480.ui | 130 ++++++++++++------ 4 files changed, 99 insertions(+), 123 deletions(-) diff --git a/src/gui/qt/gamelobbydialog.ui b/src/gui/qt/gamelobbydialog.ui index 0ea2d2f6..6b42066c 100644 --- a/src/gui/qt/gamelobbydialog.ui +++ b/src/gui/qt/gamelobbydialog.ui @@ -223,13 +223,20 @@ 0
- + - Join &any game + &Join Game - :/gfx/transform-rotate.png:/gfx/transform-rotate.png + :/gfx/go-next-view.png:/gfx/go-next-view.png + + + + + + + true @@ -260,17 +267,6 @@
- - - - &Join Game - - - - :/gfx/go-next-view.png:/gfx/go-next-view.png - - -
@@ -533,7 +529,7 @@ 200
- + 4 @@ -957,9 +953,7 @@ comboBox_nickListFilter comboBox_gameListFilter treeView_GameList - pushButton_joinAnyGame pushButton_CreateGame - pushButton_JoinGame textBrowser_ChatDisplay lineEdit_ChatInput treeWidget_connectedPlayers diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 5c4de2e3..69633b2f 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -86,8 +86,10 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) //HTML stuff QString pokerthDotNet("http://www.pokerth.net"); QString clickToRanking(QString("%1").arg(tr("Click here to view the online rankings"))); + QString clickToSpectate(QString("%1").arg(tr("Spectate"))); label_pokerthDotNet->setText(pokerthDotNet); label_rankings->setText(clickToRanking); + label_spectate->setText(clickToSpectate); waitStartGameMsgBoxTimer = new QTimer(this); waitStartGameMsgBoxTimer->setSingleShot(true); @@ -219,7 +221,6 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) connect( pushButton_CreateGame, SIGNAL( clicked() ), this, SLOT( createGame() ) ); connect( pushButton_JoinGame, SIGNAL( clicked() ), this, SLOT( joinGame() ) ); - connect( pushButton_joinAnyGame, SIGNAL( clicked() ), this, SLOT( joinAnyGame() ) ); connect( pushButton_StartGame, SIGNAL( clicked() ), this, SLOT( startGame() ) ); connect( pushButton_Kick, SIGNAL( clicked() ), this, SLOT( kickPlayer() ) ); connect( pushButton_Leave, SIGNAL( clicked() ), this, SLOT( leaveGame() ) ); @@ -414,37 +415,6 @@ void gameLobbyDialogImpl::joinGame() } } -void gameLobbyDialogImpl::joinAnyGame() -{ - - if(comboBox_gameListFilter->currentIndex() != 3 && comboBox_gameListFilter->currentIndex() != 0 && comboBox_gameListFilter->currentIndex() != 5) comboBox_gameListFilter->setCurrentIndex(0); - - bool found = false; - - int it = 0; - int gameToJoinId = 0; - int mostConnectedPlayers = 0; - - while (myGameListModel->item(it)) { - - int players = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",0,0).toInt(); - int maxPlayers = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",1,1).toInt(); - if (myGameListModel->item(it, 2)->data(16) == "open" && myGameListModel->item(it, 4)->data(16) == "nonpriv" && players < maxPlayers) { - if(players > mostConnectedPlayers) { - mostConnectedPlayers = players; - gameToJoinId = it; - } - found = true; - } - it++; - } - - if(found) { - treeView_GameList->setCurrentIndex(myGameListSortFilterProxyModel->mapFromSource(myGameListModel->item(gameToJoinId)->index())); - joinGame(); - } -} - void gameLobbyDialogImpl::refresh(int actionID) { @@ -773,9 +743,6 @@ void gameLobbyDialogImpl::refreshGameStats() label_openGamesCounter->setText(" | "+tr("running games: %1").arg(runningGamesCounter)); label_runningGamesCounter->setText(" | "+tr("open games: %1").arg(openGamesCounter)); - //refresh joinAnyGameButton state - joinAnyGameButtonRefresh(); - } void gameLobbyDialogImpl::refreshPlayerStats() @@ -910,8 +877,6 @@ void gameLobbyDialogImpl::clearDialog() pushButton_CreateGame->show(); pushButton_JoinGame->show(); pushButton_JoinGame->setEnabled(false); - pushButton_joinAnyGame->show(); - pushButton_joinAnyGame->setEnabled(false); QStringList headerList; headerList << tr("Game") << tr("Players") << tr("State") << tr("T") << tr("P") << tr("Time"); @@ -1245,7 +1210,6 @@ void gameLobbyDialogImpl::joinedGameDialogUpdate() treeWidget_connectedPlayers->clear(); pushButton_CreateGame->hide(); pushButton_JoinGame->hide(); - pushButton_joinAnyGame->hide(); pushButton_Leave->show(); pushButton_Leave->setEnabled(true); @@ -1315,8 +1279,6 @@ void gameLobbyDialogImpl::leftGameDialogUpdate() pushButton_CreateGame->show(); pushButton_JoinGame->show(); pushButton_JoinGame->setEnabled(false); - pushButton_joinAnyGame->show(); - joinAnyGameButtonRefresh(); lineEdit_ChatInput->setFocus(); } @@ -1502,26 +1464,6 @@ void gameLobbyDialogImpl::hideWaitStartGameMsgBox() waitRejoinStartGameMsgBox->hide(); } -void gameLobbyDialogImpl::joinAnyGameButtonRefresh() -{ - - int openNonPrivateNonFullGamesCounter = 0; - - int it = 0; - while (myGameListModel->item(it)) { - - int players = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",0,0).toInt(); - int maxPlayers = myGameListModel->item(it, 1)->data(Qt::DisplayRole).toString().section("/",1,1).toInt(); - if (myGameListModel->item(it, 2)->data(16) == "open" && myGameListModel->item(it, 4)->data(16) == "nonpriv" && players < maxPlayers) { - openNonPrivateNonFullGamesCounter++; - } - ++it; - } - - if(openNonPrivateNonFullGamesCounter) pushButton_joinAnyGame->setEnabled(true); - else pushButton_joinAnyGame->setEnabled(false); -} - void gameLobbyDialogImpl::reject() { myStartWindow->show(); diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h index dbf6b3f6..a564a349 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h @@ -84,7 +84,6 @@ public slots: void createGame(); void joinGame(); - void joinAnyGame(); void gameSelected(const QModelIndex &); void updateGameItem(QList , unsigned gameId); void addGame(unsigned gameId); @@ -131,7 +130,6 @@ public slots: void showWaitStartGameMsgBox(); void hideWaitStartGameMsgBox(); void stopWaitStartGameMsgBoxTimer(); - void joinAnyGameButtonRefresh(); void reject(); void closeEvent(QCloseEvent *event); void accept(); diff --git a/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui b/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui index dffffa8b..0eac1e19 100644 --- a/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui +++ b/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui @@ -63,7 +63,16 @@ Games - + + 0 + + + 0 + + + 0 + + 0 @@ -306,11 +315,20 @@ 6 - + + 0 + + + 0 + + + 0 + + 0 - + 0 @@ -327,11 +345,18 @@ QObject {font: bold 20px} - Join &any game + &Join Game - :/gfx/transform-rotate.png:/gfx/transform-rotate.png + :/gfx/go-next-view.png:/gfx/go-next-view.png + + + + + + + true @@ -374,32 +399,6 @@
- - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - QObject {font: bold 20px} - - - &Join Game - - - - :/gfx/go-next-view.png:/gfx/go-next-view.png - - -
@@ -465,10 +464,19 @@ Game Info - + 0 - + + 0 + + + 0 + + + 0 + + 0 @@ -481,7 +489,16 @@ Players - + + 0 + + + 0 + + + 0 + + 0 @@ -533,7 +550,16 @@ Spectators - + + 0 + + + 0 + + + 0 + + 0 @@ -577,20 +603,29 @@ 0 0 - 288 - 195 + 292 + 199 + + 4 + + + 4 + + + 4 + + + 4 + - -1 + 6 2 - - 4 - @@ -858,7 +893,16 @@ Lobby-Chat - + + 0 + + + 0 + + + 0 + + 0 @@ -1159,9 +1203,7 @@ p, li { white-space: pre-wrap; } - pushButton_joinAnyGame pushButton_CreateGame - pushButton_JoinGame textBrowser_ChatDisplay lineEdit_ChatInput treeWidget_connectedPlayers From 947c3e4c94460bfa3c00cf77eeffc9743e34f9b8 Mon Sep 17 00:00:00 2001 From: doitux Date: Fri, 4 Oct 2013 22:36:22 +0200 Subject: [PATCH 074/128] bugfix for android --- src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui b/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui index 0eac1e19..3dbc9b31 100644 --- a/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui +++ b/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui @@ -354,7 +354,7 @@ - + true From 3710f94c1e7ecc6ad64101d33a00769206a85374 Mon Sep 17 00:00:00 2001 From: doitux Date: Sat, 5 Oct 2013 00:34:54 +0200 Subject: [PATCH 075/128] bugfix refreshSpectatorsDisplay(); threadsafe now --- src/gui/qt/gametable/gametableimpl.cpp | 2 ++ src/gui/qt/gametable/gametableimpl.h | 1 + src/gui/qt/guiwrapper.cpp | 2 +- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp index 9154eaf2..599a0309 100755 --- a/src/gui/qt/gametable/gametableimpl.cpp +++ b/src/gui/qt/gametable/gametableimpl.cpp @@ -646,6 +646,7 @@ gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent) connect(this, SIGNAL(signalRefreshPlayerName()), this, SLOT(refreshPlayerName())); connect(this, SIGNAL(signalRefreshButton()), this, SLOT(refreshButton())); connect(this, SIGNAL(signalRefreshGameLabels(int)), this, SLOT(refreshGameLabels(int))); + connect(this, SIGNAL(signalRefreshSpectatorsDisplay()), this, SLOT(refreshSpectatorsDisplay())); connect(this, SIGNAL(signalSetPlayerAvatar(int, QString)), this, SLOT(setPlayerAvatar(int, QString))); connect(this, SIGNAL(signalGuiUpdateDone()), this, SLOT(guiUpdateDone())); connect(this, SIGNAL(signalMeInAction()), this, SLOT(meInAction())); @@ -680,6 +681,7 @@ gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent) connect(this, SIGNAL(signalNetClientSpectatorLeft(unsigned)), this, SLOT(netClientSpectatorLeft(unsigned))); connect(this, SIGNAL(signalNetClientSpectatorJoined(unsigned)), this, SLOT(netClientSpectatorJoined(unsigned))); + #ifdef GUI_800x480 connect( tabsButton, SIGNAL( clicked() ), this, SLOT( tabsButtonClicked() ) ); #endif diff --git a/src/gui/qt/gametable/gametableimpl.h b/src/gui/qt/gametable/gametableimpl.h index cf53d0e2..565ac770 100755 --- a/src/gui/qt/gametable/gametableimpl.h +++ b/src/gui/qt/gametable/gametableimpl.h @@ -133,6 +133,7 @@ signals: void signalRefreshPlayerName(); void signalRefreshButton(); void signalRefreshGameLabels(int); + void signalRefreshSpectatorsDisplay(); void signalSetPlayerAvatar(int, QString); void signalGuiUpdateDone(); diff --git a/src/gui/qt/guiwrapper.cpp b/src/gui/qt/guiwrapper.cpp index 7c1d9cbc..a8736112 100644 --- a/src/gui/qt/guiwrapper.cpp +++ b/src/gui/qt/guiwrapper.cpp @@ -364,7 +364,7 @@ void GuiWrapper::SignalNetClientPlayerJoined(unsigned playerId, const string &pl void GuiWrapper::SignalNetClientPlayerChanged(unsigned playerId, const string &newPlayerName) { myStartWindow->signalNetClientPlayerChanged(playerId, QString::fromUtf8(newPlayerName.c_str())); - myW->refreshSpectatorsDisplay(); + myW->signalRefreshSpectatorsDisplay(); } void GuiWrapper::SignalNetClientPlayerLeft(unsigned playerId, const string &playerName, int removeReason) { From c4209fd5c0e7c5c2f350ab1bd311218c46bd6ffb Mon Sep 17 00:00:00 2001 From: doitux Date: Sat, 5 Oct 2013 10:25:01 +0200 Subject: [PATCH 076/128] move join and create game buttons back to original positions --- src/gui/qt/gamelobbydialog.ui | 22 ++++---- .../qt/gui_800x480/gamelobbydialog_800x480.ui | 53 +++++++++---------- 2 files changed, 37 insertions(+), 38 deletions(-) diff --git a/src/gui/qt/gamelobbydialog.ui b/src/gui/qt/gamelobbydialog.ui index 6b42066c..a5e35730 100644 --- a/src/gui/qt/gamelobbydialog.ui +++ b/src/gui/qt/gamelobbydialog.ui @@ -222,17 +222,6 @@ 0 - - - - &Join Game - - - - :/gfx/go-next-view.png:/gfx/go-next-view.png - - - @@ -267,6 +256,17 @@ + + + + &Join Game + + + + :/gfx/go-next-view.png:/gfx/go-next-view.png + + + diff --git a/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui b/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui index 3dbc9b31..3289c842 100644 --- a/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui +++ b/src/gui/qt/gui_800x480/gamelobbydialog_800x480.ui @@ -327,32 +327,6 @@ 0 - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - QObject {font: bold 20px} - - - &Join Game - - - - :/gfx/go-next-view.png:/gfx/go-next-view.png - - - @@ -399,6 +373,32 @@ + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + QObject {font: bold 20px} + + + &Join Game + + + + :/gfx/go-next-view.png:/gfx/go-next-view.png + + + @@ -1203,7 +1203,6 @@ p, li { white-space: pre-wrap; } - pushButton_CreateGame textBrowser_ChatDisplay lineEdit_ChatInput treeWidget_connectedPlayers From bc7f34a2a65ccd9c7808ac796d1177c6cd55a3cd Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 5 Oct 2013 12:49:21 +0200 Subject: [PATCH 077/128] Move spectators to lobby before closing a game. --- pokerth.proto | 1 + src/net/common/clientstate.cpp | 3 +++ src/net/common/servergame.cpp | 15 +++++++++++++++ src/net/common/serverlobbythread.cpp | 1 + src/net/servergame.h | 1 + src/net/socket_msg.h | 1 + src/third_party/protobuf/pokerth.pb.cc | 2 ++ src/third_party/protobuf/pokerth.pb.h | 6 ++++-- tests/src/de/pokerth/protocol/ProtoBuf.java | 9 +++++++++ 9 files changed, 37 insertions(+), 2 deletions(-) diff --git a/pokerth.proto b/pokerth.proto index 9724b6d0..169ca5da 100644 --- a/pokerth.proto +++ b/pokerth.proto @@ -371,6 +371,7 @@ message RemovedFromGameMessage { gameIsRunning = 3; gameTimeout = 4; removedStartFailed = 5; + gameClosed = 6; } required RemovedFromGameReason removedFromGameReason = 2; } diff --git a/src/net/common/clientstate.cpp b/src/net/common/clientstate.cpp index a22620ce..f1bf33a0 100644 --- a/src/net/common/clientstate.cpp +++ b/src/net/common/clientstate.cpp @@ -589,6 +589,9 @@ AbstractClientStateReceiving::HandlePacket(boost::shared_ptr clien case RemovedFromGameMessage::removedStartFailed : removeReason = NTF_NET_REMOVED_START_FAILED; break; + case RemovedFromGameMessage::gameClosed : + removeReason = NTF_NET_REMOVED_GAME_CLOSED; + break; default : removeReason = NTF_NET_REMOVED_ON_REQUEST; break; diff --git a/src/net/common/servergame.cpp b/src/net/common/servergame.cpp index 91d25ed0..592b5c35 100644 --- a/src/net/common/servergame.cpp +++ b/src/net/common/servergame.cpp @@ -198,6 +198,21 @@ ServerGame::RemoveAllSessions() SetState(ServerGameStateFinal::Instance()); } +void +ServerGame::MoveSpectatorsToLobby() +{ + PlayerIdList spectatorList = GetSpectatorIdList(); + PlayerIdList::const_iterator i = spectatorList.begin(); + PlayerIdList::const_iterator end = spectatorList.end(); + while (i != end) { + boost::shared_ptr tmpSession = GetSessionManager().GetSessionByUniquePlayerId(*i); + // Only remove if the spectator was found. + if (tmpSession) + MoveSessionToLobby(tmpSession, NTF_NET_REMOVED_GAME_CLOSED); + ++i; + } +} + void ServerGame::TimerVoteKick(const boost::system::error_code &ec) { diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 9a2a8861..aa7dc50a 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -1835,6 +1835,7 @@ ServerLobbyThread::TimerRemoveGame(const boost::system::error_code &ec) ++next; boost::shared_ptr tmpGame = i->second; if (!tmpGame->GetSessionManager().HasSessionWithState(SessionData::Game)) + tmpGame->MoveSpectatorsToLobby(); InternalRemoveGame(tmpGame); // This will delete the game. i = next; } diff --git a/src/net/servergame.h b/src/net/servergame.h index 43dfab0b..560c54aa 100644 --- a/src/net/servergame.h +++ b/src/net/servergame.h @@ -80,6 +80,7 @@ public: void SendToAllPlayers(boost::shared_ptr packet, int state); void SendToAllButOnePlayers(boost::shared_ptr packet, SessionId except, int state); void RemoveAllSessions(); + void MoveSpectatorsToLobby(); bool IsPasswordProtected() const; bool CheckPassword(const std::string &password) const; diff --git a/src/net/socket_msg.h b/src/net/socket_msg.h index 7242a992..416f731d 100644 --- a/src/net/socket_msg.h +++ b/src/net/socket_msg.h @@ -116,6 +116,7 @@ #define NTF_NET_REMOVED_KICKED 205 #define NTF_NET_REMOVED_TIMEOUT 206 #define NTF_NET_REMOVED_START_FAILED 207 +#define NTF_NET_REMOVED_GAME_CLOSED 208 // Notifications - join failed #define NTF_NET_JOIN_GAME_INVALID 210 diff --git a/src/third_party/protobuf/pokerth.pb.cc b/src/third_party/protobuf/pokerth.pb.cc index 83b7ccc3..02fd38af 100644 --- a/src/third_party/protobuf/pokerth.pb.cc +++ b/src/third_party/protobuf/pokerth.pb.cc @@ -9732,6 +9732,7 @@ bool RemovedFromGameMessage_RemovedFromGameReason_IsValid(int value) { case 3: case 4: case 5: + case 6: return true; default: return false; @@ -9745,6 +9746,7 @@ const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::gameI const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::gameIsRunning; const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::gameTimeout; const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::removedStartFailed; +const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::gameClosed; const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::RemovedFromGameReason_MIN; const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage::RemovedFromGameReason_MAX; const int RemovedFromGameMessage::RemovedFromGameReason_ARRAYSIZE; diff --git a/src/third_party/protobuf/pokerth.pb.h b/src/third_party/protobuf/pokerth.pb.h index 53ca9f8e..7c8f0293 100644 --- a/src/third_party/protobuf/pokerth.pb.h +++ b/src/third_party/protobuf/pokerth.pb.h @@ -224,11 +224,12 @@ enum RemovedFromGameMessage_RemovedFromGameReason { RemovedFromGameMessage_RemovedFromGameReason_gameIsFull = 2, RemovedFromGameMessage_RemovedFromGameReason_gameIsRunning = 3, RemovedFromGameMessage_RemovedFromGameReason_gameTimeout = 4, - RemovedFromGameMessage_RemovedFromGameReason_removedStartFailed = 5 + RemovedFromGameMessage_RemovedFromGameReason_removedStartFailed = 5, + RemovedFromGameMessage_RemovedFromGameReason_gameClosed = 6 }; bool RemovedFromGameMessage_RemovedFromGameReason_IsValid(int value); const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_MIN = RemovedFromGameMessage_RemovedFromGameReason_removedOnRequest; -const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_MAX = RemovedFromGameMessage_RemovedFromGameReason_removedStartFailed; +const RemovedFromGameMessage_RemovedFromGameReason RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_MAX = RemovedFromGameMessage_RemovedFromGameReason_gameClosed; const int RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_ARRAYSIZE = RemovedFromGameMessage_RemovedFromGameReason_RemovedFromGameReason_MAX + 1; enum RejectGameInvitationMessage_RejectGameInvReason { @@ -4685,6 +4686,7 @@ class RemovedFromGameMessage : public ::google::protobuf::MessageLite { static const RemovedFromGameReason gameIsRunning = RemovedFromGameMessage_RemovedFromGameReason_gameIsRunning; static const RemovedFromGameReason gameTimeout = RemovedFromGameMessage_RemovedFromGameReason_gameTimeout; static const RemovedFromGameReason removedStartFailed = RemovedFromGameMessage_RemovedFromGameReason_removedStartFailed; + static const RemovedFromGameReason gameClosed = RemovedFromGameMessage_RemovedFromGameReason_gameClosed; static inline bool RemovedFromGameReason_IsValid(int value) { return RemovedFromGameMessage_RemovedFromGameReason_IsValid(value); } diff --git a/tests/src/de/pokerth/protocol/ProtoBuf.java b/tests/src/de/pokerth/protocol/ProtoBuf.java index f741871a..57e1a4ae 100644 --- a/tests/src/de/pokerth/protocol/ProtoBuf.java +++ b/tests/src/de/pokerth/protocol/ProtoBuf.java @@ -21967,6 +21967,10 @@ public final class ProtoBuf { * removedStartFailed = 5; */ removedStartFailed(5, 5), + /** + * gameClosed = 6; + */ + gameClosed(6, 6), ; /** @@ -21997,6 +22001,10 @@ public final class ProtoBuf { * removedStartFailed = 5; */ public static final int removedStartFailed_VALUE = 5; + /** + * gameClosed = 6; + */ + public static final int gameClosed_VALUE = 6; public final int getNumber() { return value; } @@ -22009,6 +22017,7 @@ public final class ProtoBuf { case 3: return gameIsRunning; case 4: return gameTimeout; case 5: return removedStartFailed; + case 6: return gameClosed; default: return null; } } From 917f49c8bf99545b4ea39413b6d13a543a938295 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 5 Oct 2013 13:10:40 +0200 Subject: [PATCH 078/128] Fixing missing if-block. --- src/net/common/serverlobbythread.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index aa7dc50a..128a1ef0 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -1835,8 +1835,10 @@ ServerLobbyThread::TimerRemoveGame(const boost::system::error_code &ec) ++next; boost::shared_ptr tmpGame = i->second; if (!tmpGame->GetSessionManager().HasSessionWithState(SessionData::Game)) + { tmpGame->MoveSpectatorsToLobby(); InternalRemoveGame(tmpGame); // This will delete the game. + } i = next; } // Restart timer From 2c5dcc2ba04c0858865c3d6836c10c4e31333cae Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 5 Oct 2013 13:30:19 +0200 Subject: [PATCH 079/128] Properly send game closed message to spectators. --- src/net/common/serverlobbythread.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 128a1ef0..c3c0d1d4 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -348,6 +348,9 @@ ServerLobbyThread::ReAddSession(boost::shared_ptr session, int reas case NTF_NET_REMOVED_START_FAILED : removed->set_removedfromgamereason(RemovedFromGameMessage::removedStartFailed); break; + case NTF_NET_REMOVED_GAME_CLOSED : + removed->set_removedfromgamereason(RemovedFromGameMessage::gameClosed); + break; default : removed->set_removedfromgamereason(RemovedFromGameMessage::removedOnRequest); break; From a6f3536290db3e293a359aa8461d3ab6c03a9b97 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 5 Oct 2013 16:42:05 +0200 Subject: [PATCH 080/128] Enable validation according to WebSocket resource and origin. --- src/config/configfile.cpp | 4 +++- src/net/common/serveracceptwebhelper.cpp | 16 ++++++++++++---- src/net/common/servermanager.cpp | 6 ++++-- src/net/common/servermanagerirc.cpp | 5 +++-- src/net/serveracceptwebhelper.h | 5 ++++- src/net/servermanager.h | 3 ++- src/net/servermanagerirc.h | 3 ++- src/session.cpp | 4 +++- 8 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/config/configfile.cpp b/src/config/configfile.cpp index d9fc1a5f..f6285dbe 100644 --- a/src/config/configfile.cpp +++ b/src/config/configfile.cpp @@ -64,7 +64,7 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly) myConfigState = OK; // !!!! Revisionsnummer der Configdefaults !!!!! - configRev = 101; + configRev = 102; //standard defaults logOnOffDefault = "1"; @@ -223,6 +223,8 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly) configList.push_back(ConfigInfo("ServerUseWebSocket", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("ServerPort", CONFIG_TYPE_INT, "7234")); configList.push_back(ConfigInfo("ServerWebSocketPort", CONFIG_TYPE_INT, "7233")); + configList.push_back(ConfigInfo("ServerWebSocketResource", CONFIG_TYPE_STRING, "")); + configList.push_back(ConfigInfo("ServerWebSocketOrigin", CONFIG_TYPE_STRING, "")); configList.push_back(ConfigInfo("ServerUsePutAvatars", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("ServerPutAvatarsAddress", CONFIG_TYPE_STRING, "")); configList.push_back(ConfigInfo("ServerPutAvatarsUser", CONFIG_TYPE_STRING, "")); diff --git a/src/net/common/serveracceptwebhelper.cpp b/src/net/common/serveracceptwebhelper.cpp index f5149ad2..8cfdd05a 100644 --- a/src/net/common/serveracceptwebhelper.cpp +++ b/src/net/common/serveracceptwebhelper.cpp @@ -36,8 +36,10 @@ using namespace std; -ServerAcceptWebHelper::ServerAcceptWebHelper(ServerCallback &serverCallback, boost::shared_ptr ioService) - : m_ioService(ioService), m_serverCallback(serverCallback) +ServerAcceptWebHelper::ServerAcceptWebHelper(ServerCallback &serverCallback, boost::shared_ptr ioService, + const string &webSocketResource, const string &webSocketOrigin) + : m_ioService(ioService), m_serverCallback(serverCallback), + m_webSocketResource(webSocketResource), m_webSocketOrigin(webSocketOrigin) { m_webSocketServer.reset(new server); } @@ -71,9 +73,15 @@ ServerAcceptWebHelper::Close() } bool -ServerAcceptWebHelper::validate(websocketpp::connection_hdl /*hdl*/) +ServerAcceptWebHelper::validate(websocketpp::connection_hdl hdl) { - return true; + bool retVal = false; + server::connection_ptr con = m_webSocketServer->get_con_from_hdl(hdl); + if ((m_webSocketResource.empty() || con->get_resource() == m_webSocketResource) + && (m_webSocketOrigin.empty() || (con->get_origin() != "null" && con->get_origin() == m_webSocketOrigin))) { + retVal = true; + } + return retVal; } void diff --git a/src/net/common/servermanager.cpp b/src/net/common/servermanager.cpp index b75e6961..2be86e38 100644 --- a/src/net/common/servermanager.cpp +++ b/src/net/common/servermanager.cpp @@ -78,7 +78,8 @@ ServerManager::~ServerManager() } void -ServerManager::Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const string &logDir) +ServerManager::Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const string &logDir, + const string &webSocketResource, const string &webSocketOrigin) { GetLobbyThread().Init(logDir); @@ -95,7 +96,8 @@ ServerManager::Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int }*/ if (proto & TRANSPORT_PROTOCOL_WEBSOCKET) { - boost::shared_ptr webAcceptHelper(new ServerAcceptWebHelper(GetGui(), m_ioService)); + boost::shared_ptr webAcceptHelper( + new ServerAcceptWebHelper(GetGui(), m_ioService, webSocketResource, webSocketOrigin)); webAcceptHelper->Listen(websocketPort, ipv6, logDir, m_lobbyThread); m_acceptHelperPool.push_back(webAcceptHelper); } diff --git a/src/net/common/servermanagerirc.cpp b/src/net/common/servermanagerirc.cpp index 3b7b028b..0f84eb7c 100644 --- a/src/net/common/servermanagerirc.cpp +++ b/src/net/common/servermanagerirc.cpp @@ -52,7 +52,8 @@ ServerManagerIrc::~ServerManagerIrc() } void -ServerManagerIrc::Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const string &logDir) +ServerManagerIrc::Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const string &logDir, + const std::string &webSocketResource, const std::string &webSocketOrigin) { boost::shared_ptr tmpIrcAdminThread; boost::shared_ptr tmpIrcLobbyThread; @@ -83,7 +84,7 @@ ServerManagerIrc::Init(unsigned serverPort, unsigned websocketPort, bool ipv6, i m_adminBot->Init(m_lobbyThread, tmpIrcAdminThread, myConfig.readConfigString("CacheDir")); m_lobbyBot->Init(m_lobbyThread, tmpIrcLobbyThread); - ServerManager::Init(serverPort, websocketPort, ipv6, proto, logDir); + ServerManager::Init(serverPort, websocketPort, ipv6, proto, logDir, webSocketResource, webSocketOrigin); } void diff --git a/src/net/serveracceptwebhelper.h b/src/net/serveracceptwebhelper.h index 3f7d91e7..e0e9faec 100644 --- a/src/net/serveracceptwebhelper.h +++ b/src/net/serveracceptwebhelper.h @@ -40,7 +40,8 @@ class ServerAcceptWebHelper : public ServerAcceptInterface { public: - ServerAcceptWebHelper(ServerCallback &serverCallback, boost::shared_ptr ioService); + ServerAcceptWebHelper(ServerCallback &serverCallback, boost::shared_ptr ioService, + const std::string &webSocketResource, const std::string &webSocketOrigin); virtual void Listen(unsigned serverPort, bool ipv6, const std::string &logDir, boost::shared_ptr lobbyThread); @@ -61,6 +62,8 @@ private: ServerCallback &m_serverCallback; boost::shared_ptr m_webSocketServer; SessionMap m_sessionMap; + std::string m_webSocketResource; + std::string m_webSocketOrigin; boost::shared_ptr m_lobbyThread; }; diff --git a/src/net/servermanager.h b/src/net/servermanager.h index 09b7468d..cce0e467 100644 --- a/src/net/servermanager.h +++ b/src/net/servermanager.h @@ -54,7 +54,8 @@ public: virtual ~ServerManager(); // Set the parameters. - virtual void Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const std::string &logDir); + virtual void Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const std::string &logDir, + const std::string &webSocketResource, const std::string &webSocketOrigin); // Main start function. virtual void RunAll(); diff --git a/src/net/servermanagerirc.h b/src/net/servermanagerirc.h index 3126a98a..feb7e684 100644 --- a/src/net/servermanagerirc.h +++ b/src/net/servermanagerirc.h @@ -45,7 +45,8 @@ public: virtual ~ServerManagerIrc(); // Set the parameters. - virtual void Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const std::string &logDir); + virtual void Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const std::string &logDir, + const std::string &webSocketResource, const std::string &webSocketOrigin); // Main start function. virtual void RunAll(); diff --git a/src/session.cpp b/src/session.cpp index 5a067ba0..8db33601 100755 --- a/src/session.cpp +++ b/src/session.cpp @@ -342,7 +342,9 @@ void Session::startNetworkServer(bool dedicated) myConfig->readConfigInt("ServerWebSocketPort"), myConfig->readConfigInt("ServerUseIpv6") == 1, protocol, - myQtToolsInterface->stringFromUtf8(myConfig->readConfigString("LogDir")) + myQtToolsInterface->stringFromUtf8(myConfig->readConfigString("LogDir")), + myQtToolsInterface->stringFromUtf8(myConfig->readConfigString("ServerWebSocketResource")), + myQtToolsInterface->stringFromUtf8(myConfig->readConfigString("ServerWebSocketOrigin")) ); myNetServer->RunAll(); From b5e8a9ac9937ea43092ac289983943bbe914dc71 Mon Sep 17 00:00:00 2001 From: doitux Date: Sat, 5 Oct 2013 19:34:49 +0200 Subject: [PATCH 081/128] add third party libs licence infos into about --- data/misc/third_party_libs.txt | 40 +++++++++ src/gui/qt/aboutpokerth.ui | 88 ++++++++++++++++--- src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp | 10 +++ .../gamelobbydialog/gamelobbydialogimpl.cpp | 2 +- .../qt/gui_800x480/aboutpokerth_800x480.ui | 65 ++++++++++++-- 5 files changed, 187 insertions(+), 18 deletions(-) create mode 100644 data/misc/third_party_libs.txt diff --git a/data/misc/third_party_libs.txt b/data/misc/third_party_libs.txt new file mode 100644 index 00000000..1242eabc --- /dev/null +++ b/data/misc/third_party_libs.txt @@ -0,0 +1,40 @@ +Qt +http://qt-project.org/doc/qt-5.0/qtdoc/opensourcelicense.html +http://qt-project.org/doc/qt-5.0/qtdoc/3rdparty.html + +Boost +http://www.boost.org/users/license.html + +libprotobuf +http://code.google.com/p/protobuf/ + +websocket++ +https://github.com/zaphoyd/websocketpp/blob/master/COPYING + +libcurl +http://curl.haxx.se/docs/copyright.html + +libgsasl +http://www.gnu.org/software/gsasl/ + +tinyxml +http://www.grinninglizard.com/tinyxmldocs/ + +OpenSSL +http://www.openssl.org/source/license.html + +libgcrypt +http://www.gnupg.org/ + +SDL +http://www.libsdl.org/license.php + +SDL_mixer +http://www.libsdl.org/projects/SDL_mixer/ + +sqlite3 +http://www.sqlite.org/copyright.html + +Due to dependencies of these libs, PokerTH may link to additional libs not listed here. If you think acknowledgement for a certain lib is missing, please contact us. + +This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) diff --git a/src/gui/qt/aboutpokerth.ui b/src/gui/qt/aboutpokerth.ui index 6d844ac2..d9b138fe 100755 --- a/src/gui/qt/aboutpokerth.ui +++ b/src/gui/qt/aboutpokerth.ui @@ -12,7 +12,16 @@ - + + 9 + + + 9 + + + 9 + + 9 @@ -102,7 +111,16 @@ Project - + + 9 + + + 9 + + + 9 + + 9 @@ -117,8 +135,8 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html>
true @@ -132,7 +150,16 @@ p, li { white-space: pre-wrap; } Translation - + + 9 + + + 9 + + + 9 + + 9 @@ -144,11 +171,11 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html>
true @@ -162,7 +189,16 @@ p, li { white-space: pre-wrap; } Thanks to - + + 9 + + + 9 + + + 9 + + 9 @@ -174,8 +210,8 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html>
false @@ -195,7 +231,16 @@ p, li { white-space: pre-wrap; } License - + + 9 + + + 9 + + + 9 + + 9 @@ -213,6 +258,16 @@ p, li { white-space: pre-wrap; } + + + Third party libs + + + + + + + @@ -220,7 +275,16 @@ p, li { white-space: pre-wrap; } 6 - + + 0 + + + 0 + + + 0 + + 0 diff --git a/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp b/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp index 79d95324..55c4a883 100755 --- a/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp +++ b/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp @@ -131,4 +131,14 @@ aboutPokerthImpl::aboutPokerthImpl(QWidget *parent, ConfigFile *c) projectText.append("    Oskar Lindqvist (tranberry@pokerth.net)
"); projectText.append("        - "+tr("initial gui graphics design")+"
"); textBrowser_2->setHtml(projectText); + + QFile file(QDir::toNativeSeparators(myAppDataPath+"misc/third_party_libs.txt")); + QString string; + if(file.exists()) { + if (file.open( QIODevice::ReadOnly)) { + QTextStream stream( &file ); + string = stream.readAll(); + textBrowser_thirdPartyLicenceText->setPlainText(string); + } + } } diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 69633b2f..8169d531 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -86,7 +86,7 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) //HTML stuff QString pokerthDotNet("http://www.pokerth.net"); QString clickToRanking(QString("%1").arg(tr("Click here to view the online rankings"))); - QString clickToSpectate(QString("%1").arg(tr("Spectate"))); + QString clickToSpectate(QString("%1").arg(tr("Spectate"))); label_pokerthDotNet->setText(pokerthDotNet); label_rankings->setText(clickToRanking); label_spectate->setText(clickToSpectate); diff --git a/src/gui/qt/gui_800x480/aboutpokerth_800x480.ui b/src/gui/qt/gui_800x480/aboutpokerth_800x480.ui index 4da768a3..36a69b6b 100755 --- a/src/gui/qt/gui_800x480/aboutpokerth_800x480.ui +++ b/src/gui/qt/gui_800x480/aboutpokerth_800x480.ui @@ -24,7 +24,16 @@
- + + 9 + + + 9 + + + 9 + + 9 @@ -139,7 +148,16 @@ Project - + + 9 + + + 9 + + + 9 + + 9 @@ -169,7 +187,16 @@ p, li { white-space: pre-wrap; } Translation - + + 9 + + + 9 + + + 9 + + 9 @@ -199,7 +226,16 @@ p, li { white-space: pre-wrap; } Thanks to - + + 9 + + + 9 + + + 9 + + 9 @@ -226,7 +262,16 @@ p, li { white-space: pre-wrap; } License - + + 9 + + + 9 + + + 9 + + 9 @@ -244,6 +289,16 @@ p, li { white-space: pre-wrap; }
+ + + Third party libs + + + + + + + From c8939fdbdf50bad8a6a1c584536db7c37c43c769 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 6 Oct 2013 16:21:35 +0200 Subject: [PATCH 082/128] Preparing Release 1.1 beta1 --- src/game_defs.h | 10 +++++----- src/session.cpp | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/game_defs.h b/src/game_defs.h index aade5fd8..28d63406 100644 --- a/src/game_defs.h +++ b/src/game_defs.h @@ -38,15 +38,15 @@ #define MAX_GUI_SPEED 11 #define DEBUG_MODE 0 -#define SQLITE_LOG 1 -#define HTML_LOG 0 +#define SQLITE_LOG 1 +#define HTML_LOG 0 #define POKERTH_VERSION_MAJOR 1 -#define POKERTH_VERSION_MINOR 01 +#define POKERTH_VERSION_MINOR 10 #define POKERTH_VERSION ((POKERTH_VERSION_MAJOR << 8) | POKERTH_VERSION_MINOR) -#define POKERTH_BETA_REVISION 0 -#define POKERTH_BETA_RELEASE_STRING "1.0.1" +#define POKERTH_BETA_REVISION 1 +#define POKERTH_BETA_RELEASE_STRING "1.1 beta1" #define SQLITE_LOG_VERSION 1 diff --git a/src/session.cpp b/src/session.cpp index 8db33601..138f303d 100755 --- a/src/session.cpp +++ b/src/session.cpp @@ -189,11 +189,11 @@ void Session::startInternetClient() myNetClient->Init( myConfig->readConfigString("InternetServerAddress"), - myConfig->readConfigString("InternetServerListAddress"), -// "pokerth.net/serverlist_testing.xml.z", +// myConfig->readConfigString("InternetServerListAddress"), + "pokerth.net/serverlist_testing.xml.z", myConfig->readConfigString("ServerPassword"), - myConfig->readConfigInt("InternetServerConfigMode") == 0, -// true, +// myConfig->readConfigInt("InternetServerConfigMode") == 0, + true, myConfig->readConfigInt("InternetServerPort"), myConfig->readConfigInt("InternetServerUseIpv6") == 1, myConfig->readConfigInt("InternetServerUseSctp") == 1, From f0f3d2eb04c977bee37bed1f203b632bce47e426 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 6 Oct 2013 16:30:09 +0200 Subject: [PATCH 083/128] Running astyle. --- src/engine/local_engine/localplayer.cpp | 2 +- src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp | 32 ++--- .../gamelobbydialog/gamelobbydialogimpl.cpp | 17 ++- .../qt/gamelobbydialog/mygamelisttreewidget.h | 2 +- src/gui/qt/gametable/gametableimpl.cpp | 3 +- src/gui/qt/gametable/gametableimpl.h | 2 +- src/gui/qt/gametable/log/guilog.h | 2 +- src/gui/qt/gametable/myactionbutton.h | 2 +- src/gui/qt/gametable/myavatarlabel.cpp | 7 +- src/gui/qt/gametable/myavatarlabel.h | 2 +- src/gui/qt/gametable/mycardspixmaplabel.h | 2 +- src/gui/qt/gametable/mycashlabel.h | 2 +- src/gui/qt/gametable/mychancelabel.h | 2 +- src/gui/qt/gametable/mylefttabwidget.h | 2 +- src/gui/qt/gametable/mymenubar.h | 2 +- src/gui/qt/gametable/mynamelabel.h | 2 +- src/gui/qt/gametable/myrighttabwidget.h | 2 +- src/gui/qt/gametable/mysetlabel.h | 2 +- src/gui/qt/gametable/mystatuslabel.h | 2 +- src/gui/qt/gametable/mytimeoutlabel.h | 2 +- .../qt/gametable/startsplash/startsplash.h | 2 +- src/gui/qt/logfiledialog/logfiledialog.cpp | 49 ++++---- .../qt/newlocalgamedialog/newgamedialogimpl.h | 2 +- .../serverlistdialog/serverlistdialogimpl.h | 2 +- src/gui/qt/settingsdialog/myavatarbutton.h | 2 +- src/gui/qt/settingsdialog/myhpavatarbutton.h | 2 +- src/gui/qt/settingsdialog/mystylelistitem.h | 2 +- .../selectavatardialog/myavatarlistitem.h | 2 +- .../selectavatardialogimpl.h | 2 +- .../qt/settingsdialog/settingsdialogimpl.h | 2 +- src/gui/qt/sound/soundevents.cpp | 22 ++-- src/gui/qt/sound/soundevents.h | 22 ++-- src/gui/qt/startwindow/startwindowimpl.cpp | 55 ++++----- src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h | 2 +- src/net/common/netpacketvalidator.cpp | 110 +++++++++--------- src/net/common/serveracceptwebhelper.cpp | 4 +- src/net/common/serverlobbythread.cpp | 11 +- src/net/common/servermanager.cpp | 3 +- src/net/netpacketvalidator.h | 2 +- src/net/serveracceptwebhelper.h | 2 +- src/net/servermanager.h | 2 +- src/net/servermanagerirc.h | 2 +- src/net/websocketdata.h | 3 +- src/pokerth.cpp | 3 +- 44 files changed, 201 insertions(+), 200 deletions(-) diff --git a/src/engine/local_engine/localplayer.cpp b/src/engine/local_engine/localplayer.cpp index a81f1e61..c3d16b25 100755 --- a/src/engine/local_engine/localplayer.cpp +++ b/src/engine/local_engine/localplayer.cpp @@ -3452,7 +3452,7 @@ int LocalPlayer::flopCardsValue(int* cards) return (71000 + temp*100 + array[j1][1]); } else { // Test auf Straight-Flush-Ausnahme 5-4-3-2-A - if(array[j1][1] == 12 && (array[j1+1][1]<=3 || (j1==0 && array[j1+2][1]<=3 && array[j1][0]==array[j1+4][0]))) { + if(array[j1][1] == 12 && (array[j1+1][1]<=3 || (j1==0 && array[j1+2][1]<=3 && array[j1][0]==array[j1+4][0]))) { // cout << "Straight-Flush-Draw Ass unten"; for(j2=0; j2<4; j2++) { if(array[j1+j2][2] <= 1) temp++; diff --git a/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp b/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp index 55c4a883..d342c14e 100755 --- a/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp +++ b/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp @@ -34,10 +34,10 @@ #include #ifdef ANDROID - #ifndef ANDROID_TEST - #include "QtGui/5.1.1/QtGui/qpa/qplatformnativeinterface.h" - #include - #endif +#ifndef ANDROID_TEST +#include "QtGui/5.1.1/QtGui/qpa/qplatformnativeinterface.h" +#include +#endif #endif aboutPokerthImpl::aboutPokerthImpl(QWidget *parent, ConfigFile *c) @@ -71,19 +71,19 @@ aboutPokerthImpl::aboutPokerthImpl(QWidget *parent, ConfigFile *c) #ifdef ANDROID int api = -2; - #ifndef ANDROID_TEST - JavaVM *currVM = (JavaVM *)QApplication::platformNativeInterface()->nativeResourceForIntegration("JavaVM"); - JNIEnv* env; - if (currVM->AttachCurrentThread(&env, NULL)<0) { - qCritical()<<"AttachCurrentThread failed"; - } else { - jclass jclassApplicationClass = env->FindClass("android/os/Build$VERSION"); - if (jclassApplicationClass) { - api = env->GetStaticIntField(jclassApplicationClass, env->GetStaticFieldID(jclassApplicationClass,"SDK_INT", "I")); - } - currVM->DetachCurrentThread(); +#ifndef ANDROID_TEST + JavaVM *currVM = (JavaVM *)QApplication::platformNativeInterface()->nativeResourceForIntegration("JavaVM"); + JNIEnv* env; + if (currVM->AttachCurrentThread(&env, NULL)<0) { + qCritical()<<"AttachCurrentThread failed"; + } else { + jclass jclassApplicationClass = env->FindClass("android/os/Build$VERSION"); + if (jclassApplicationClass) { + api = env->GetStaticIntField(jclassApplicationClass, env->GetStaticFieldID(jclassApplicationClass,"SDK_INT", "I")); } - #endif + currVM->DetachCurrentThread(); + } +#endif label_pokerthVersion->setText(QString(tr("PokerTH %1 for Android (API%2)").arg(POKERTH_BETA_RELEASE_STRING).arg(api))); #else label_pokerthVersion->setText(QString(tr("PokerTH %1").arg(POKERTH_BETA_RELEASE_STRING))); diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 8169d531..2d0b8d99 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -1041,7 +1041,8 @@ void gameLobbyDialogImpl::addConnectedPlayer(unsigned playerId, QString playerNa refreshConnectedPlayerAvatars(); } -void gameLobbyDialogImpl::addConnectedSpectator(unsigned spectatorId, QString spectatorName) { +void gameLobbyDialogImpl::addConnectedSpectator(unsigned spectatorId, QString spectatorName) +{ QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget_connectedSpectators, 0); item->setData(0, Qt::UserRole, spectatorId); @@ -1672,8 +1673,11 @@ void gameLobbyDialogImpl::showNickListContextMenu(QPoint p) nickListPlayerInGameInfo->setText(playerInGameInfoString); //prevent admin to total kickban himself - if(playerUid == mySession->getClientUniquePlayerId()) { nickListAdminTotalKickBan->setDisabled(true); } - else { nickListAdminTotalKickBan->setEnabled(true); } + if(playerUid == mySession->getClientUniquePlayerId()) { + nickListAdminTotalKickBan->setDisabled(true); + } else { + nickListAdminTotalKickBan->setEnabled(true); + } // check for admin and remove admin actions for non-admins if(!mySession->getClientPlayerInfo(mySession->getClientUniquePlayerId()).isAdmin) { @@ -1693,8 +1697,11 @@ void gameLobbyDialogImpl::showGameListContextMenu(QPoint p) assert(mySession); unsigned selectedGameId = myGameListSelectionModel->selectedRows().first().data(Qt::UserRole).toUInt(); - if(selectedGameId == mySession->getClientCurrentGameId()) { gameListAdminCloseGame->setDisabled(true); } - else { gameListAdminCloseGame->setEnabled(true); } + if(selectedGameId == mySession->getClientCurrentGameId()) { + gameListAdminCloseGame->setDisabled(true); + } else { + gameListAdminCloseGame->setEnabled(true); + } // check for admin and remove admin actions for non-admins if(!mySession->getClientPlayerInfo(mySession->getClientUniquePlayerId()).isAdmin) { diff --git a/src/gui/qt/gamelobbydialog/mygamelisttreewidget.h b/src/gui/qt/gamelobbydialog/mygamelisttreewidget.h index f97647e9..ea8985e3 100644 --- a/src/gui/qt/gamelobbydialog/mygamelisttreewidget.h +++ b/src/gui/qt/gamelobbydialog/mygamelisttreewidget.h @@ -34,7 +34,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class MyGameListTreeWidget : public QTreeWidget diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp index 599a0309..375cbe1f 100755 --- a/src/gui/qt/gametable/gametableimpl.cpp +++ b/src/gui/qt/gametable/gametableimpl.cpp @@ -4482,8 +4482,7 @@ void gameTableImpl::refreshSpectatorsDisplay() } spectatorList.remove(spectatorList.size()-4,4); spectatorIcon->setToolTip(spectatorList); - } - else { + } else { spectatorIcon->setToolTip(""); spectatorIcon->clear(); } diff --git a/src/gui/qt/gametable/gametableimpl.h b/src/gui/qt/gametable/gametableimpl.h index 565ac770..c89c4d1f 100755 --- a/src/gui/qt/gametable/gametableimpl.h +++ b/src/gui/qt/gametable/gametableimpl.h @@ -48,7 +48,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class guiLog; diff --git a/src/gui/qt/gametable/log/guilog.h b/src/gui/qt/gametable/log/guilog.h index 41cdca5a..1202751e 100644 --- a/src/gui/qt/gametable/log/guilog.h +++ b/src/gui/qt/gametable/log/guilog.h @@ -42,7 +42,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif struct result_struct { diff --git a/src/gui/qt/gametable/myactionbutton.h b/src/gui/qt/gametable/myactionbutton.h index b92a862e..f18ca078 100644 --- a/src/gui/qt/gametable/myactionbutton.h +++ b/src/gui/qt/gametable/myactionbutton.h @@ -34,7 +34,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class GameTableStyleReader; diff --git a/src/gui/qt/gametable/myavatarlabel.cpp b/src/gui/qt/gametable/myavatarlabel.cpp index fcf0c8ed..793bce28 100644 --- a/src/gui/qt/gametable/myavatarlabel.cpp +++ b/src/gui/qt/gametable/myavatarlabel.cpp @@ -397,10 +397,9 @@ void MyAvatarLabel::paintEvent(QPaintEvent*) //hide avatar if player is on ignore list boost::shared_ptr mySession = myW->myStartWindow->getSession(); if(!playerIsOnIgnoreList(QString::fromUtf8(mySession->getClientPlayerInfo(myUniqueId).playerName.c_str()))) { - painter.drawPixmap(0,0,myPixmap); - return; - } - else if(myW->getMyConfig()->readConfigInt("DontHideAvatarsOfIgnored")) { + painter.drawPixmap(0,0,myPixmap); + return; + } else if(myW->getMyConfig()->readConfigInt("DontHideAvatarsOfIgnored")) { painter.drawPixmap(0,0,myPixmap); return; } diff --git a/src/gui/qt/gametable/myavatarlabel.h b/src/gui/qt/gametable/myavatarlabel.h index 60d83ca9..fcf61647 100644 --- a/src/gui/qt/gametable/myavatarlabel.h +++ b/src/gui/qt/gametable/myavatarlabel.h @@ -36,7 +36,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class gameTableImpl; diff --git a/src/gui/qt/gametable/mycardspixmaplabel.h b/src/gui/qt/gametable/mycardspixmaplabel.h index 5cbd4272..c279f19f 100755 --- a/src/gui/qt/gametable/mycardspixmaplabel.h +++ b/src/gui/qt/gametable/mycardspixmaplabel.h @@ -36,7 +36,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class gameTableImpl; diff --git a/src/gui/qt/gametable/mycashlabel.h b/src/gui/qt/gametable/mycashlabel.h index 3ae3cf05..35a2adae 100644 --- a/src/gui/qt/gametable/mycashlabel.h +++ b/src/gui/qt/gametable/mycashlabel.h @@ -36,7 +36,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class gameTableImpl; diff --git a/src/gui/qt/gametable/mychancelabel.h b/src/gui/qt/gametable/mychancelabel.h index 120ab6ed..2d026acb 100644 --- a/src/gui/qt/gametable/mychancelabel.h +++ b/src/gui/qt/gametable/mychancelabel.h @@ -36,7 +36,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class gameTableImpl; diff --git a/src/gui/qt/gametable/mylefttabwidget.h b/src/gui/qt/gametable/mylefttabwidget.h index 2397a51e..a01e35bf 100755 --- a/src/gui/qt/gametable/mylefttabwidget.h +++ b/src/gui/qt/gametable/mylefttabwidget.h @@ -34,7 +34,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class MyLeftTabWidget : public QTabWidget diff --git a/src/gui/qt/gametable/mymenubar.h b/src/gui/qt/gametable/mymenubar.h index 4b588905..efe17037 100644 --- a/src/gui/qt/gametable/mymenubar.h +++ b/src/gui/qt/gametable/mymenubar.h @@ -34,7 +34,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class MyMenuBar : public QMenuBar diff --git a/src/gui/qt/gametable/mynamelabel.h b/src/gui/qt/gametable/mynamelabel.h index 9d62021c..93ed3a2d 100644 --- a/src/gui/qt/gametable/mynamelabel.h +++ b/src/gui/qt/gametable/mynamelabel.h @@ -36,7 +36,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class gameTableImpl; diff --git a/src/gui/qt/gametable/myrighttabwidget.h b/src/gui/qt/gametable/myrighttabwidget.h index a822c88e..71643862 100755 --- a/src/gui/qt/gametable/myrighttabwidget.h +++ b/src/gui/qt/gametable/myrighttabwidget.h @@ -34,7 +34,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class MyRightTabWidget : public QTabWidget diff --git a/src/gui/qt/gametable/mysetlabel.h b/src/gui/qt/gametable/mysetlabel.h index 67491d85..adf3ea1d 100644 --- a/src/gui/qt/gametable/mysetlabel.h +++ b/src/gui/qt/gametable/mysetlabel.h @@ -36,7 +36,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class gameTableImpl; diff --git a/src/gui/qt/gametable/mystatuslabel.h b/src/gui/qt/gametable/mystatuslabel.h index 673b48c2..e1107243 100755 --- a/src/gui/qt/gametable/mystatuslabel.h +++ b/src/gui/qt/gametable/mystatuslabel.h @@ -36,7 +36,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class gameTableImpl; diff --git a/src/gui/qt/gametable/mytimeoutlabel.h b/src/gui/qt/gametable/mytimeoutlabel.h index 8ceb9a14..749234a0 100644 --- a/src/gui/qt/gametable/mytimeoutlabel.h +++ b/src/gui/qt/gametable/mytimeoutlabel.h @@ -39,7 +39,7 @@ #include #endif #if QT_VERSION >= 0x050000 - #include +#include #endif class gameTableImpl; diff --git a/src/gui/qt/gametable/startsplash/startsplash.h b/src/gui/qt/gametable/startsplash/startsplash.h index 0d24b14c..d6c34e91 100755 --- a/src/gui/qt/gametable/startsplash/startsplash.h +++ b/src/gui/qt/gametable/startsplash/startsplash.h @@ -34,7 +34,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif diff --git a/src/gui/qt/logfiledialog/logfiledialog.cpp b/src/gui/qt/logfiledialog/logfiledialog.cpp index 913b560b..1da92ecc 100644 --- a/src/gui/qt/logfiledialog/logfiledialog.cpp +++ b/src/gui/qt/logfiledialog/logfiledialog.cpp @@ -287,31 +287,30 @@ void LogFileDialog::showLogAnalysis(QString /*filename*/, QString returnMessage) if (retStr == LOG_UPLOAD_ERROR_STR) { QString errorId(returnMessage.mid(retStr.size()).trimmed()); serverMsg += "\n" + tr("Failure reason: "); - switch (errorId.toInt()) - { - case LOG_UPLOAD_ERROR_NO_FILE : - serverMsg += tr("No file received."); - break; - case LOG_UPLOAD_ERROR_MAX_NUM_TOTAL : - serverMsg += tr("File rejected because of too many uploads."); - break; - case LOG_UPLOAD_ERROR_MAX_NUM_IP : - serverMsg += tr("File rejected because of too many recent uploads. Please try again later."); - break; - case LOG_UPLOAD_ERROR_FILE_SIZE : - serverMsg += tr("The file is too large."); - break; - case LOG_UPLOAD_ERROR_FILE_EXT : - case LOG_UPLOAD_ERROR_FILE_HEAD : - serverMsg += tr("This file is not a valid and current PokerTH log file."); - break; - case LOG_UPLOAD_ERROR_OPEN_DB : - case LOG_UPLOAD_ERROR_ID : - case LOG_UPLOAD_ERROR_FILE_MOVE : - case LOG_UPLOAD_ERROR_INSERT_DB : - default : - serverMsg += tr("Internal error. Please try again later. ID: ") + returnMessage; - break; + switch (errorId.toInt()) { + case LOG_UPLOAD_ERROR_NO_FILE : + serverMsg += tr("No file received."); + break; + case LOG_UPLOAD_ERROR_MAX_NUM_TOTAL : + serverMsg += tr("File rejected because of too many uploads."); + break; + case LOG_UPLOAD_ERROR_MAX_NUM_IP : + serverMsg += tr("File rejected because of too many recent uploads. Please try again later."); + break; + case LOG_UPLOAD_ERROR_FILE_SIZE : + serverMsg += tr("The file is too large."); + break; + case LOG_UPLOAD_ERROR_FILE_EXT : + case LOG_UPLOAD_ERROR_FILE_HEAD : + serverMsg += tr("This file is not a valid and current PokerTH log file."); + break; + case LOG_UPLOAD_ERROR_OPEN_DB : + case LOG_UPLOAD_ERROR_ID : + case LOG_UPLOAD_ERROR_FILE_MOVE : + case LOG_UPLOAD_ERROR_INSERT_DB : + default : + serverMsg += tr("Internal error. Please try again later. ID: ") + returnMessage; + break; } } MyMessageBox::warning( diff --git a/src/gui/qt/newlocalgamedialog/newgamedialogimpl.h b/src/gui/qt/newlocalgamedialog/newgamedialogimpl.h index 3faf1e2d..ab0eda98 100755 --- a/src/gui/qt/newlocalgamedialog/newgamedialogimpl.h +++ b/src/gui/qt/newlocalgamedialog/newgamedialogimpl.h @@ -40,7 +40,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class ConfigFile; diff --git a/src/gui/qt/serverlistdialog/serverlistdialogimpl.h b/src/gui/qt/serverlistdialog/serverlistdialogimpl.h index 6ff6826f..18afec9d 100644 --- a/src/gui/qt/serverlistdialog/serverlistdialogimpl.h +++ b/src/gui/qt/serverlistdialog/serverlistdialogimpl.h @@ -40,7 +40,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class ConfigFile; diff --git a/src/gui/qt/settingsdialog/myavatarbutton.h b/src/gui/qt/settingsdialog/myavatarbutton.h index bff9a920..465f2065 100644 --- a/src/gui/qt/settingsdialog/myavatarbutton.h +++ b/src/gui/qt/settingsdialog/myavatarbutton.h @@ -34,7 +34,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class MyAvatarButton : public QPushButton diff --git a/src/gui/qt/settingsdialog/myhpavatarbutton.h b/src/gui/qt/settingsdialog/myhpavatarbutton.h index e2a79ffb..ac8ae2fa 100644 --- a/src/gui/qt/settingsdialog/myhpavatarbutton.h +++ b/src/gui/qt/settingsdialog/myhpavatarbutton.h @@ -34,7 +34,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class MyHPAvatarButton : public QPushButton diff --git a/src/gui/qt/settingsdialog/mystylelistitem.h b/src/gui/qt/settingsdialog/mystylelistitem.h index 08dfcc38..8575b70f 100644 --- a/src/gui/qt/settingsdialog/mystylelistitem.h +++ b/src/gui/qt/settingsdialog/mystylelistitem.h @@ -34,7 +34,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class MyStyleListItem : public QTreeWidgetItem diff --git a/src/gui/qt/settingsdialog/selectavatardialog/myavatarlistitem.h b/src/gui/qt/settingsdialog/selectavatardialog/myavatarlistitem.h index f0ee6b04..6f44af09 100644 --- a/src/gui/qt/settingsdialog/selectavatardialog/myavatarlistitem.h +++ b/src/gui/qt/settingsdialog/selectavatardialog/myavatarlistitem.h @@ -34,7 +34,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif class MyAvatarListItem : public QListWidgetItem diff --git a/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.h b/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.h index 7fe52a2a..80cd9705 100644 --- a/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.h +++ b/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.h @@ -37,7 +37,7 @@ #include "ui_selectavatardialog.h" #endif #if QT_VERSION >= 0x050000 - #include +#include #endif #include #include diff --git a/src/gui/qt/settingsdialog/settingsdialogimpl.h b/src/gui/qt/settingsdialog/settingsdialogimpl.h index 6c588a7d..dce85786 100644 --- a/src/gui/qt/settingsdialog/settingsdialogimpl.h +++ b/src/gui/qt/settingsdialog/settingsdialogimpl.h @@ -42,7 +42,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif #include diff --git a/src/gui/qt/sound/soundevents.cpp b/src/gui/qt/sound/soundevents.cpp index eb7ca68b..c100458b 100644 --- a/src/gui/qt/sound/soundevents.cpp +++ b/src/gui/qt/sound/soundevents.cpp @@ -31,13 +31,13 @@ #include "soundevents.h" #ifdef ANDROID - #ifdef ANDROID_API8 - #include "androidapi8dummy.h" - #else - #include "androidaudio.h" - #endif +#ifdef ANDROID_API8 +#include "androidapi8dummy.h" #else - #include "sdlplayer.h" +#include "androidaudio.h" +#endif +#else +#include "sdlplayer.h" #endif @@ -52,11 +52,11 @@ SoundEvents::SoundEvents(ConfigFile *c): myConfig(c), lastSBValue(0), lastSBLeve { #ifdef ANDROID - #ifdef ANDROID_API8 - myPlayer = new AndroidApi8Dummy(myConfig); - #else - myPlayer = new AndroidAudio(myConfig); - #endif +#ifdef ANDROID_API8 + myPlayer = new AndroidApi8Dummy(myConfig); +#else + myPlayer = new AndroidAudio(myConfig); +#endif #else myPlayer = new SDLPlayer(myConfig); #endif diff --git a/src/gui/qt/sound/soundevents.h b/src/gui/qt/sound/soundevents.h index da1aab19..77985489 100644 --- a/src/gui/qt/sound/soundevents.h +++ b/src/gui/qt/sound/soundevents.h @@ -34,13 +34,13 @@ #include #ifdef ANDROID - #ifdef ANDROID_API8 - class AndroidApi8Dummy; - #else - class AndroidAudio; - #endif +#ifdef ANDROID_API8 +class AndroidApi8Dummy; #else - class SDLPlayer; +class AndroidAudio; +#endif +#else +class SDLPlayer; #endif @@ -64,11 +64,11 @@ protected: private: #ifdef ANDROID - #ifdef ANDROID_API8 - AndroidApi8Dummy *myPlayer; - #else - AndroidAudio *myPlayer; - #endif +#ifdef ANDROID_API8 + AndroidApi8Dummy *myPlayer; +#else + AndroidAudio *myPlayer; +#endif #else SDLPlayer *myPlayer; #endif diff --git a/src/gui/qt/startwindow/startwindowimpl.cpp b/src/gui/qt/startwindow/startwindowimpl.cpp index 7059d84b..41004c23 100644 --- a/src/gui/qt/startwindow/startwindowimpl.cpp +++ b/src/gui/qt/startwindow/startwindowimpl.cpp @@ -60,10 +60,10 @@ #include "guilog.h" #ifdef ANDROID - #ifndef ANDROID_TEST - #include "QtGui/5.1.1/QtGui/qpa/qplatformnativeinterface.h" - #include - #endif +#ifndef ANDROID_TEST +#include "QtGui/5.1.1/QtGui/qpa/qplatformnativeinterface.h" +#include +#endif #endif using namespace std; @@ -96,25 +96,25 @@ startWindowImpl::startWindowImpl(ConfigFile *c, Log *l) this->setStatusBar(0); #ifdef GUI_800x480 - #ifdef ANDROID - this->menubar->hide(); +#ifdef ANDROID + this->menubar->hide(); - //check if custom background picture for the resolution is there. Otherwise create it! - QString UserDataDir = QString::fromUtf8(myConfig->readConfigString("UserDataDir").c_str()); - QDesktopWidget dw; - int screenWidth = dw.screenGeometry().width(); - int screenHeight = dw.screenGeometry().height(); - QString customStartWindowBgFileString(UserDataDir+"/startwindowbg10_"+QString::number(screenWidth)+"x"+QString::number(screenHeight)+".png"); - QFile customStartWindowBgFile(customStartWindowBgFileString); - if(customStartWindowBgFile.exists()) { - centralwidget->setStyleSheet(".QWidget { background-image: url("+QFileInfo(customStartWindowBgFile).absoluteFilePath()+"); background-position: top center; background-origin: content; background-repeat: no-repeat;}"); - } else { - //if custom bg file could not be found load the big origin file - centralwidget->setStyleSheet(".QWidget { background-image: url(:/android/android-data/gfx/gui/misc/startwindowbg10_mobile.png); background-position: top center; background-origin: content; background-repeat: no-repeat;}"); - } - this->showFullScreen(); + //check if custom background picture for the resolution is there. Otherwise create it! + QString UserDataDir = QString::fromUtf8(myConfig->readConfigString("UserDataDir").c_str()); + QDesktopWidget dw; + int screenWidth = dw.screenGeometry().width(); + int screenHeight = dw.screenGeometry().height(); + QString customStartWindowBgFileString(UserDataDir+"/startwindowbg10_"+QString::number(screenWidth)+"x"+QString::number(screenHeight)+".png"); + QFile customStartWindowBgFile(customStartWindowBgFileString); + if(customStartWindowBgFile.exists()) { + centralwidget->setStyleSheet(".QWidget { background-image: url("+QFileInfo(customStartWindowBgFile).absoluteFilePath()+"); background-position: top center; background-origin: content; background-repeat: no-repeat;}"); + } else { + //if custom bg file could not be found load the big origin file + centralwidget->setStyleSheet(".QWidget { background-image: url(:/android/android-data/gfx/gui/misc/startwindowbg10_mobile.png); background-position: top center; background-origin: content; background-repeat: no-repeat;}"); + } + this->showFullScreen(); - //TODO HACK Missing QSystemScreenSaver::setScreenSaverInhibited(true) + //TODO HACK Missing QSystemScreenSaver::setScreenSaverInhibited(true) // #ifndef ANDROID_TEST // JavaVM *currVM = (JavaVM *)QApplication::platformNativeInterface()->nativeResourceForWidget("JavaVM", 0); // JNIEnv* env; @@ -128,11 +128,11 @@ startWindowImpl::startWindowImpl(ConfigFile *c, Log *l) // currVM->DetachCurrentThread(); // } // #endif - #else +#else // Maemo - this->menubar->hide(); - centralwidget->setStyleSheet(".QWidget { background-image: url(\""+myAppDataPath+"gfx/gui/misc/startwindowbg10_desktop.png\"); background-position: bottom center; background-origin: content; background-repeat: no-repeat;}"); - #endif + this->menubar->hide(); + centralwidget->setStyleSheet(".QWidget { background-image: url(\""+myAppDataPath+"gfx/gui/misc/startwindowbg10_desktop.png\"); background-position: bottom center; background-origin: content; background-repeat: no-repeat;}"); +#endif // All mobile GUI's pushButtonStart_Local_Game->setStyleSheet("QPushButton { text-align:left; font-weight:bold; padding-left: 3px; padding-bottom: 3px; padding-top: 3px; padding-right: 3px; background-color: #505050; color: #FDC942; font-size:22px; border-width: 0px;}"); pushButtonInternet_Game->setStyleSheet("QPushButton { text-align:left; font-weight:bold; padding-left: 3px; padding-bottom: 3px; padding-top: 3px; padding-right: 3px; background-color: #505050; color: #FDC942; font-size:22px; border-width: 0px;}"); @@ -1186,8 +1186,9 @@ void startWindowImpl::networkMessage(unsigned msgId) msgText = tr("The player could not be found."); } break; - default: showMsgBox = false; - break; + default: + showMsgBox = false; + break; } if(showMsgBox) { diff --git a/src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h b/src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h index 50f2d66c..41c01f81 100644 --- a/src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h +++ b/src/gui/qt/timeoutmsgbox/timeoutmsgboximpl.h @@ -35,7 +35,7 @@ #include #include #if QT_VERSION >= 0x050000 - #include +#include #endif #ifndef Q_MOC_RUN #include diff --git a/src/net/common/netpacketvalidator.cpp b/src/net/common/netpacketvalidator.cpp index 99621995..5eb51849 100644 --- a/src/net/common/netpacketvalidator.cpp +++ b/src/net/common/netpacketvalidator.cpp @@ -158,11 +158,11 @@ NetPacketValidator::ValidateAnnounceMessage(const NetPacket &packet) if (packet.GetMsg()->has_announcemessage()) { const AnnounceMessage &msg = packet.GetMsg()->announcemessage(); if (VALIDATE_IS_UINT16(msg.protocolversion().majorversion()) - && VALIDATE_IS_UINT16(msg.protocolversion().minorversion()) - && VALIDATE_IS_UINT16(msg.latestgameversion().majorversion()) - && VALIDATE_IS_UINT16(msg.latestgameversion().minorversion()) - && VALIDATE_IS_UINT16(msg.latestbetarevision()) - && VALIDATE_IS_UINT16(msg.numplayersonserver())) { + && VALIDATE_IS_UINT16(msg.protocolversion().minorversion()) + && VALIDATE_IS_UINT16(msg.latestgameversion().majorversion()) + && VALIDATE_IS_UINT16(msg.latestgameversion().minorversion()) + && VALIDATE_IS_UINT16(msg.latestbetarevision()) + && VALIDATE_IS_UINT16(msg.numplayersonserver())) { retVal = true; } @@ -177,12 +177,12 @@ NetPacketValidator::ValidateInitMessage(const NetPacket &packet) if (packet.GetMsg()->has_initmessage()) { const InitMessage &msg = packet.GetMsg()->initmessage(); if (VALIDATE_IS_UINT16(msg.requestedversion().majorversion()) - && VALIDATE_IS_UINT16(msg.requestedversion().minorversion()) - && (!msg.has_mylastsessionid() || msg.mylastsessionid().size() == 16) - && (!msg.has_authserverpassword() || VALIDATE_STRING_SIZE(msg.authserverpassword(), 1, 64)) - && (!msg.has_nickname() || VALIDATE_STRING_SIZE(msg.nickname(), 1, 64)) - && (!msg.has_clientuserdata() || VALIDATE_STRING_SIZE(msg.clientuserdata(), 1, 256)) - && (!msg.has_avatarhash() || msg.avatarhash().size() == 16)) { + && VALIDATE_IS_UINT16(msg.requestedversion().minorversion()) + && (!msg.has_mylastsessionid() || msg.mylastsessionid().size() == 16) + && (!msg.has_authserverpassword() || VALIDATE_STRING_SIZE(msg.authserverpassword(), 1, 64)) + && (!msg.has_nickname() || VALIDATE_STRING_SIZE(msg.nickname(), 1, 64)) + && (!msg.has_clientuserdata() || VALIDATE_STRING_SIZE(msg.clientuserdata(), 1, 256)) + && (!msg.has_avatarhash() || msg.avatarhash().size() == 16)) { retVal = true; } @@ -236,9 +236,9 @@ NetPacketValidator::ValidateInitAckMessage(const NetPacket &packet) if (packet.GetMsg()->has_initackmessage()) { const InitAckMessage &msg = packet.GetMsg()->initackmessage(); if (msg.yoursessionid().size() == 16 - && msg.yourplayerid() != 0 - && (!msg.has_youravatarhash() || msg.youravatarhash().size() == 16) - && (!msg.has_rejoingameid() || msg.rejoingameid() != 0)) { + && msg.yourplayerid() != 0 + && (!msg.has_youravatarhash() || msg.youravatarhash().size() == 16) + && (!msg.has_rejoingameid() || msg.rejoingameid() != 0)) { retVal = true; } @@ -253,7 +253,7 @@ NetPacketValidator::ValidateAvatarRequestMessage(const NetPacket &packet) if (packet.GetMsg()->has_avatarrequestmessage()) { const AvatarRequestMessage &msg = packet.GetMsg()->avatarrequestmessage(); if (msg.requestid() != 0 - && msg.avatarhash().size() == 16) { + && msg.avatarhash().size() == 16) { retVal = true; } @@ -268,7 +268,7 @@ NetPacketValidator::ValidateAvatarHeaderMessage(const NetPacket &packet) if (packet.GetMsg()->has_avatarheadermessage()) { const AvatarHeaderMessage &msg = packet.GetMsg()->avatarheadermessage(); if (msg.requestid() != 0 - && VALIDATE_UINT_RANGE(msg.avatarsize(), 32, 30720)) { + && VALIDATE_UINT_RANGE(msg.avatarsize(), 32, 30720)) { retVal = true; } @@ -283,7 +283,7 @@ NetPacketValidator::ValidateAvatarDataMessage(const NetPacket &packet) if (packet.GetMsg()->has_avatardatamessage()) { const AvatarDataMessage &msg = packet.GetMsg()->avatardatamessage(); if (msg.requestid() != 0 - && VALIDATE_STRING_SIZE(msg.avatarblock(), 1, 256)) { + && VALIDATE_STRING_SIZE(msg.avatarblock(), 1, 256)) { retVal = true; } @@ -337,9 +337,9 @@ NetPacketValidator::ValidateGameListNewMessage(const NetPacket &packet) if (packet.GetMsg()->has_gamelistnewmessage()) { const GameListNewMessage &msg = packet.GetMsg()->gamelistnewmessage(); if (msg.gameid() != 0 - && VALIDATE_LIST_SIZE(msg.playerids(), 0, 10) - && msg.adminplayerid() != 0 - && ValidateGameInfo(msg.gameinfo())) { + && VALIDATE_LIST_SIZE(msg.playerids(), 0, 10) + && msg.adminplayerid() != 0 + && ValidateGameInfo(msg.gameinfo())) { retVal = true; } @@ -444,7 +444,7 @@ NetPacketValidator::ValidateJoinExistingGameMessage(const NetPacket &packet) if (packet.GetMsg()->has_joinexistinggamemessage()) { const JoinExistingGameMessage &msg = packet.GetMsg()->joinexistinggamemessage(); if (msg.gameid() != 0 - && (!msg.has_password() || VALIDATE_STRING_SIZE(msg.password(), 1, 64))) { + && (!msg.has_password() || VALIDATE_STRING_SIZE(msg.password(), 1, 64))) { retVal = true; } @@ -459,7 +459,7 @@ NetPacketValidator::ValidateJoinNewGameMessage(const NetPacket &packet) if (packet.GetMsg()->has_joinnewgamemessage()) { const JoinNewGameMessage &msg = packet.GetMsg()->joinnewgamemessage(); if (ValidateGameInfo(msg.gameinfo()) - && (!msg.has_password() || VALIDATE_STRING_SIZE(msg.password(), 1, 64))) { + && (!msg.has_password() || VALIDATE_STRING_SIZE(msg.password(), 1, 64))) { retVal = true; } @@ -669,8 +669,8 @@ NetPacketValidator::ValidateGameStartInitialMessage(const NetPacket &packet) if (packet.GetMsg()->has_gamestartinitialmessage()) { const GameStartInitialMessage &msg = packet.GetMsg()->gamestartinitialmessage(); if (msg.gameid() != 0 - && msg.startdealerplayerid() != 0 - && VALIDATE_LIST_SIZE(msg.playerseats(), 2, 10)) { + && msg.startdealerplayerid() != 0 + && VALIDATE_LIST_SIZE(msg.playerseats(), 2, 10)) { retVal = true; } @@ -685,9 +685,9 @@ NetPacketValidator::ValidateGameStartRejoinMessage(const NetPacket &packet) if (packet.GetMsg()->has_gamestartrejoinmessage()) { const GameStartRejoinMessage &msg = packet.GetMsg()->gamestartrejoinmessage(); if (msg.gameid() != 0 - && msg.startdealerplayerid() != 0 - && msg.handnum() != 0 - && VALIDATE_LIST_SIZE(msg.rejoinplayerdata(), 2, 10)) { + && msg.startdealerplayerid() != 0 + && msg.handnum() != 0 + && VALIDATE_LIST_SIZE(msg.rejoinplayerdata(), 2, 10)) { retVal = true; } @@ -702,8 +702,8 @@ NetPacketValidator::ValidateHandStartMessage(const NetPacket &packet) if (packet.GetMsg()->has_handstartmessage()) { const HandStartMessage &msg = packet.GetMsg()->handstartmessage(); if (msg.gameid() != 0 - && VALIDATE_UINT_RANGE(msg.smallblind(), 1, 100000000) - && VALIDATE_LIST_SIZE(msg.seatstates(), 2, 10)) { + && VALIDATE_UINT_RANGE(msg.smallblind(), 1, 100000000) + && VALIDATE_LIST_SIZE(msg.seatstates(), 2, 10)) { retVal = true; } @@ -731,8 +731,8 @@ NetPacketValidator::ValidateMyActionRequestMessage(const NetPacket &packet) if (packet.GetMsg()->has_myactionrequestmessage()) { const MyActionRequestMessage &msg = packet.GetMsg()->myactionrequestmessage(); if (msg.gameid() != 0 - && msg.handnum() != 0 - && VALIDATE_UINT_UPPER(msg.myrelativebet(), 10000000)) { + && msg.handnum() != 0 + && VALIDATE_UINT_UPPER(msg.myrelativebet(), 10000000)) { retVal = true; } @@ -773,9 +773,9 @@ NetPacketValidator::ValidateDealFlopCardsMessage(const NetPacket &packet) if (packet.GetMsg()->has_dealflopcardsmessage()) { const DealFlopCardsMessage &msg = packet.GetMsg()->dealflopcardsmessage(); if (msg.gameid() != 0 - && VALIDATE_UINT_UPPER(msg.flopcard1(), 51) - && VALIDATE_UINT_UPPER(msg.flopcard2(), 51) - && VALIDATE_UINT_UPPER(msg.flopcard3(), 51)) { + && VALIDATE_UINT_UPPER(msg.flopcard1(), 51) + && VALIDATE_UINT_UPPER(msg.flopcard2(), 51) + && VALIDATE_UINT_UPPER(msg.flopcard3(), 51)) { retVal = true; } @@ -790,7 +790,7 @@ NetPacketValidator::ValidateDealTurnCardMessage(const NetPacket &packet) if (packet.GetMsg()->has_dealturncardmessage()) { const DealTurnCardMessage &msg = packet.GetMsg()->dealturncardmessage(); if (msg.gameid() != 0 - && VALIDATE_UINT_UPPER(msg.turncard(), 51)) { + && VALIDATE_UINT_UPPER(msg.turncard(), 51)) { retVal = true; } @@ -805,7 +805,7 @@ NetPacketValidator::ValidateDealRiverCardMessage(const NetPacket &packet) if (packet.GetMsg()->has_dealrivercardmessage()) { const DealRiverCardMessage &msg = packet.GetMsg()->dealrivercardmessage(); if (msg.gameid() != 0 - && VALIDATE_UINT_UPPER(msg.rivercard(), 51)) { + && VALIDATE_UINT_UPPER(msg.rivercard(), 51)) { retVal = true; } @@ -820,7 +820,7 @@ NetPacketValidator::ValidateAllInShowCardsMessage(const NetPacket &packet) if (packet.GetMsg()->has_allinshowcardsmessage()) { const AllInShowCardsMessage &msg = packet.GetMsg()->allinshowcardsmessage(); if (msg.gameid() != 0 - && VALIDATE_LIST_SIZE(msg.playersallin(), 1, 10)) { + && VALIDATE_LIST_SIZE(msg.playersallin(), 1, 10)) { retVal = true; } @@ -835,7 +835,7 @@ NetPacketValidator::ValidateEndOfHandShowCardsMessage(const NetPacket &packet) if (packet.GetMsg()->has_endofhandshowcardsmessage()) { const EndOfHandShowCardsMessage &msg = packet.GetMsg()->endofhandshowcardsmessage(); if (msg.gameid() != 0 - && VALIDATE_LIST_SIZE(msg.playerresults(), 1, 10)) { + && VALIDATE_LIST_SIZE(msg.playerresults(), 1, 10)) { retVal = true; } @@ -938,11 +938,11 @@ NetPacketValidator::ValidateStartKickPetitionMessage(const NetPacket &packet) if (packet.GetMsg()->has_startkickpetitionmessage()) { const StartKickPetitionMessage &msg = packet.GetMsg()->startkickpetitionmessage(); if (msg.gameid() != 0 - && msg.petitionid() != 0 - && msg.proposingplayerid() != 0 - && msg.kickplayerid() != 0 - && msg.kicktimeoutsec() > 0 - && msg.numvotesneededtokick() > 0) { + && msg.petitionid() != 0 + && msg.proposingplayerid() != 0 + && msg.kickplayerid() != 0 + && msg.kicktimeoutsec() > 0 + && msg.numvotesneededtokick() > 0) { retVal = true; } @@ -1095,7 +1095,7 @@ NetPacketValidator::ValidateReportAvatarMessage(const NetPacket &packet) if (packet.GetMsg()->has_reportavatarmessage()) { const ReportAvatarMessage &msg = packet.GetMsg()->reportavatarmessage(); if (msg.reportedplayerid() != 0 - && msg.reportedavatarhash().size() == 16) { + && msg.reportedavatarhash().size() == 16) { retVal = true; } @@ -1210,17 +1210,17 @@ NetPacketValidator::ValidateGameInfo(const NetGameInfo &gameInfo) { bool retVal = false; if (VALIDATE_STRING_SIZE(gameInfo.gamename(), 1, 64) - && VALIDATE_UINT_RANGE(gameInfo.maxnumplayers(), 2, 10) - && (!gameInfo.has_raiseeveryhands() || VALIDATE_UINT_RANGE(gameInfo.raiseeveryhands(), 1, 1000)) - && (!gameInfo.has_raiseeveryminutes() || VALIDATE_UINT_RANGE(gameInfo.raiseeveryminutes(), 1, 1000)) - && (!gameInfo.has_endraisesmallblindvalue() || VALIDATE_UINT_UPPER(gameInfo.endraisesmallblindvalue(), 1000000)) - && VALIDATE_UINT_RANGE(gameInfo.proposedguispeed(), 1, 11) - && VALIDATE_UINT_RANGE(gameInfo.delaybetweenhands(), 5, 20) - && VALIDATE_UINT_UPPER(gameInfo.playeractiontimeout(), 60) - && VALIDATE_UINT_RANGE(gameInfo.firstsmallblind(), 1, 20000) - && VALIDATE_UINT_RANGE(gameInfo.startmoney(), 1, 1000000) - && VALIDATE_LIST_SIZE(gameInfo.manualblinds(), 0, 30) - && ValidateListIntRange(gameInfo.manualblinds(), 1, 1000000)) { + && VALIDATE_UINT_RANGE(gameInfo.maxnumplayers(), 2, 10) + && (!gameInfo.has_raiseeveryhands() || VALIDATE_UINT_RANGE(gameInfo.raiseeveryhands(), 1, 1000)) + && (!gameInfo.has_raiseeveryminutes() || VALIDATE_UINT_RANGE(gameInfo.raiseeveryminutes(), 1, 1000)) + && (!gameInfo.has_endraisesmallblindvalue() || VALIDATE_UINT_UPPER(gameInfo.endraisesmallblindvalue(), 1000000)) + && VALIDATE_UINT_RANGE(gameInfo.proposedguispeed(), 1, 11) + && VALIDATE_UINT_RANGE(gameInfo.delaybetweenhands(), 5, 20) + && VALIDATE_UINT_UPPER(gameInfo.playeractiontimeout(), 60) + && VALIDATE_UINT_RANGE(gameInfo.firstsmallblind(), 1, 20000) + && VALIDATE_UINT_RANGE(gameInfo.startmoney(), 1, 1000000) + && VALIDATE_LIST_SIZE(gameInfo.manualblinds(), 0, 30) + && ValidateListIntRange(gameInfo.manualblinds(), 1, 1000000)) { retVal = true; } diff --git a/src/net/common/serveracceptwebhelper.cpp b/src/net/common/serveracceptwebhelper.cpp index 8cfdd05a..1eb57b74 100644 --- a/src/net/common/serveracceptwebhelper.cpp +++ b/src/net/common/serveracceptwebhelper.cpp @@ -37,7 +37,7 @@ using namespace std; ServerAcceptWebHelper::ServerAcceptWebHelper(ServerCallback &serverCallback, boost::shared_ptr ioService, - const string &webSocketResource, const string &webSocketOrigin) + const string &webSocketResource, const string &webSocketOrigin) : m_ioService(ioService), m_serverCallback(serverCallback), m_webSocketResource(webSocketResource), m_webSocketOrigin(webSocketOrigin) { @@ -78,7 +78,7 @@ ServerAcceptWebHelper::validate(websocketpp::connection_hdl hdl) bool retVal = false; server::connection_ptr con = m_webSocketServer->get_con_from_hdl(hdl); if ((m_webSocketResource.empty() || con->get_resource() == m_webSocketResource) - && (m_webSocketOrigin.empty() || (con->get_origin() != "null" && con->get_origin() == m_webSocketOrigin))) { + && (m_webSocketOrigin.empty() || (con->get_origin() != "null" && con->get_origin() == m_webSocketOrigin))) { retVal = true; } return retVal; diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index c3c0d1d4..0dba087c 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -1372,7 +1372,7 @@ ServerLobbyThread::HandleNetPacketJoinGame(boost::shared_ptr sessio const GameData &tmpData = game->GetGameData(); // As guest, you are only allowed to join normal games or to join as spectator. if (session->GetPlayerData()->GetRights() == PLAYER_RIGHTS_GUEST - && tmpData.gameType != GAME_TYPE_NORMAL && !joinGame.spectateonly()) { + && tmpData.gameType != GAME_TYPE_NORMAL && !joinGame.spectateonly()) { SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_GUEST_FORBIDDEN); } else if (tmpData.gameType == GAME_TYPE_INVITE_ONLY && !game->IsPlayerInvited(session->GetPlayerData()->GetUniqueId())) { @@ -1583,9 +1583,9 @@ ServerLobbyThread::HandleNetPacketAdminBanPlayer(boost::shared_ptr RemovePlayer(tmpPlayer->GetUniqueId(), ERR_NET_PLAYER_KICKED); // Permanently ban the player in the database. if (tmpPlayer->GetDBId() != DB_ID_INVALID) { - LOG_ERROR("Player " << session->GetPlayerData()->GetName() << "(" << session->GetPlayerData()->GetDBId() - << ") bans player " << tmpPlayer->GetName() << "(" << tmpPlayer->GetDBId() - << ") who has IP " << tmpSession->GetClientAddr()); + LOG_ERROR("Player " << session->GetPlayerData()->GetName() << "(" << session->GetPlayerData()->GetDBId() + << ") bans player " << tmpPlayer->GetName() << "(" << tmpPlayer->GetDBId() + << ") who has IP " << tmpSession->GetClientAddr()); GetDatabase()->AsyncBlockPlayer(session->GetPlayerData()->GetUniqueId(), tmpPlayer->GetUniqueId(), tmpPlayer->GetDBId(), 0, 4); netBanAck->set_banplayerresult(AdminBanPlayerAckMessage::banPlayerPending); } else { @@ -1837,8 +1837,7 @@ ServerLobbyThread::TimerRemoveGame(const boost::system::error_code &ec) GameMap::iterator next = i; ++next; boost::shared_ptr tmpGame = i->second; - if (!tmpGame->GetSessionManager().HasSessionWithState(SessionData::Game)) - { + if (!tmpGame->GetSessionManager().HasSessionWithState(SessionData::Game)) { tmpGame->MoveSpectatorsToLobby(); InternalRemoveGame(tmpGame); // This will delete the game. } diff --git a/src/net/common/servermanager.cpp b/src/net/common/servermanager.cpp index 2be86e38..9c42f827 100644 --- a/src/net/common/servermanager.cpp +++ b/src/net/common/servermanager.cpp @@ -94,8 +94,7 @@ ServerManager::Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int sctpAcceptHelper->Listen(serverPort, ipv6, logDir, m_lobbyThread); m_acceptHelperPool.push_back(sctpAcceptHelper); }*/ - if (proto & TRANSPORT_PROTOCOL_WEBSOCKET) - { + if (proto & TRANSPORT_PROTOCOL_WEBSOCKET) { boost::shared_ptr webAcceptHelper( new ServerAcceptWebHelper(GetGui(), m_ioService, webSocketResource, webSocketOrigin)); webAcceptHelper->Listen(websocketPort, ipv6, logDir, m_lobbyThread); diff --git a/src/net/netpacketvalidator.h b/src/net/netpacketvalidator.h index fef4059e..f6afaaaa 100644 --- a/src/net/netpacketvalidator.h +++ b/src/net/netpacketvalidator.h @@ -133,7 +133,7 @@ protected: typedef bool (*ValidateFunctor)(const NetPacket &); typedef std::map ValidateFunctorMap; private: - + ValidateFunctorMap m_validationMap; }; diff --git a/src/net/serveracceptwebhelper.h b/src/net/serveracceptwebhelper.h index e0e9faec..ea5b926e 100644 --- a/src/net/serveracceptwebhelper.h +++ b/src/net/serveracceptwebhelper.h @@ -52,7 +52,7 @@ protected: typedef std::map > SessionMap; - bool validate(websocketpp::connection_hdl hdl); + bool validate(websocketpp::connection_hdl hdl); void on_open(websocketpp::connection_hdl hdl); void on_close(websocketpp::connection_hdl hdl); void on_message(websocketpp::connection_hdl hdl, server::message_ptr msg); diff --git a/src/net/servermanager.h b/src/net/servermanager.h index cce0e467..600bc366 100644 --- a/src/net/servermanager.h +++ b/src/net/servermanager.h @@ -55,7 +55,7 @@ public: // Set the parameters. virtual void Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const std::string &logDir, - const std::string &webSocketResource, const std::string &webSocketOrigin); + const std::string &webSocketResource, const std::string &webSocketOrigin); // Main start function. virtual void RunAll(); diff --git a/src/net/servermanagerirc.h b/src/net/servermanagerirc.h index feb7e684..31f79219 100644 --- a/src/net/servermanagerirc.h +++ b/src/net/servermanagerirc.h @@ -46,7 +46,7 @@ public: // Set the parameters. virtual void Init(unsigned serverPort, unsigned websocketPort, bool ipv6, int proto, const std::string &logDir, - const std::string &webSocketResource, const std::string &webSocketOrigin); + const std::string &webSocketResource, const std::string &webSocketOrigin); // Main start function. virtual void RunAll(); diff --git a/src/net/websocketdata.h b/src/net/websocketdata.h index 005b924b..a7f93503 100644 --- a/src/net/websocketdata.h +++ b/src/net/websocketdata.h @@ -36,8 +36,7 @@ #include -struct WebSocketData -{ +struct WebSocketData { boost::shared_ptr webSocketServer; websocketpp::connection_hdl webHandle; }; diff --git a/src/pokerth.cpp b/src/pokerth.cpp index 6038f4b3..46acdaf1 100755 --- a/src/pokerth.cpp +++ b/src/pokerth.cpp @@ -211,8 +211,7 @@ int main( int argc, char **argv ) QPixmap pixmap; if(customWelcomePokerTHFile.exists()) { pixmap.load(QFileInfo(customWelcomePokerTHFile).absoluteFilePath()); - } - else { + } else { //if custom welcome pic could not be saved locally we need to scale it on the fly pixmap.load(":/android/android-data/gfx/gui/misc/welcomepokerth10_mobile.png"); pixmap = pixmap.scaled(screenWidth, screenHeight, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation); From 1913947ec490f68973fceff599c6c5d682435aef Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 6 Oct 2013 16:58:09 +0200 Subject: [PATCH 084/128] Updating changelog for 1.1 beta1 --- ChangeLog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ChangeLog b/ChangeLog index 949d177b..980bd8d4 100755 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2013-10-06 version 1.1 beta1 +- New web-based spectator mode on http://www.pokerth.net/live (#37) +- Show list of spectators in the lobby and on the game table (#196) +- Support for WebSocket connections was integrated in the server +- Added option to disable emoticons in the chat (#172) +- Avatars are no longer displayed for players which are on the ignore list (#187) +- BUGFIX: context menu in connected player list was fixed (#183) +- BUGFIX: "display idle players" in the lobby was fixed (#136) +- translation updates + 2013-04-07 version 1.0.1 - New Galician (gl) translation - Client settings dialog option for connecting to a private, password protected server (#178) From 2d6db51465054c044e97b13d26e3cdd93b34bdc2 Mon Sep 17 00:00:00 2001 From: lotodore Date: Mon, 7 Oct 2013 22:43:03 +0200 Subject: [PATCH 085/128] Origin check tolerates http:// and http://www. --- src/net/common/serveracceptwebhelper.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/net/common/serveracceptwebhelper.cpp b/src/net/common/serveracceptwebhelper.cpp index 1eb57b74..3143fde6 100644 --- a/src/net/common/serveracceptwebhelper.cpp +++ b/src/net/common/serveracceptwebhelper.cpp @@ -78,7 +78,9 @@ ServerAcceptWebHelper::validate(websocketpp::connection_hdl hdl) bool retVal = false; server::connection_ptr con = m_webSocketServer->get_con_from_hdl(hdl); if ((m_webSocketResource.empty() || con->get_resource() == m_webSocketResource) - && (m_webSocketOrigin.empty() || (con->get_origin() != "null" && con->get_origin() == m_webSocketOrigin))) { + && (m_webSocketOrigin.empty() || + (con->get_origin() != "null" && + (con->get_origin() == "http://" + m_webSocketOrigin || con->get_origin() == "http://www." + m_webSocketOrigin)))) { retVal = true; } return retVal; From 7ffd85b1c1493241a5937107b5121b88705be5f1 Mon Sep 17 00:00:00 2001 From: doitux Date: Wed, 9 Oct 2013 23:45:57 +0200 Subject: [PATCH 086/128] bugfix for "Idle players are not show correctly if they join YOUR game" #198 --- .../gamelobbydialog/gamelobbydialogimpl.cpp | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 2d0b8d99..0b9ab25e 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -563,16 +563,6 @@ void gameLobbyDialogImpl::updateGameItem(QList itemList, unsign PlayerIdList::const_iterator end = info.players.end(); while (i != end) { - //mark players as active - int it1 = 0; - while (myNickListModel->item(it1)) { - if (myNickListModel->item(it1, 0)->data(Qt::UserRole) == *i) { - myNickListModel->item(it1, 0)->setData("active", 34); - break; - } - ++it1; - } - if(myPlayerId == *i) { itemList.at(0)->setData( "MeInThisGame", 16); itemList.at(0)->setBackground(QBrush(QColor(0, 255, 0, 127))); @@ -594,6 +584,22 @@ void gameLobbyDialogImpl::updateGameItem(QList itemList, unsign ++i; } + //reset players iterator + i = info.players.begin(); + end = info.players.end(); + while (i != end) { + //mark players as active + int it1 = 0; + while (myNickListModel->item(it1)) { + if (myNickListModel->item(it1, 0)->data(Qt::UserRole) == *i) { + myNickListModel->item(it1, 0)->setData("active", 34); + break; + } + ++it1; + } + ++i; + } + QString playerStr; playerStr.sprintf("%u/%u", (unsigned)info.players.size(), (unsigned)info.data.maxNumberOfPlayers); itemList.at(1)->setData(playerStr, Qt::DisplayRole); From 235b41acae4703daaf0e2259e921e538f2174156 Mon Sep 17 00:00:00 2001 From: doitux Date: Thu, 10 Oct 2013 00:24:08 +0200 Subject: [PATCH 087/128] remove unused mymenubar class --- src/gui/qt/gametable.ui | 7 +-- src/gui/qt/gametable/gametableimpl.cpp | 1 - src/gui/qt/gametable/mymenubar.cpp | 46 ------------------ src/gui/qt/gametable/mymenubar.h | 49 ------------------- src/gui/qt/gui_800x480/gametable_800x480.ui | 52 +++++++++++++++------ src/gui/qt/styles/gametablestylereader.cpp | 1 + 6 files changed, 39 insertions(+), 117 deletions(-) delete mode 100644 src/gui/qt/gametable/mymenubar.cpp delete mode 100644 src/gui/qt/gametable/mymenubar.h diff --git a/src/gui/qt/gametable.ui b/src/gui/qt/gametable.ui index fe723a76..f76fcf38 100644 --- a/src/gui/qt/gametable.ui +++ b/src/gui/qt/gametable.ui @@ -4583,7 +4583,7 @@ p, li { white-space: pre-wrap; } - + 0 @@ -4786,11 +4786,6 @@ p, li { white-space: pre-wrap; } QPushButton
myactionbutton.h
- - MyMenuBar - QMenuBar -
mymenubar.h
-
MyTimeoutLabel QLabel diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp index 375cbe1f..464e7cf4 100755 --- a/src/gui/qt/gametable/gametableimpl.cpp +++ b/src/gui/qt/gametable/gametableimpl.cpp @@ -43,7 +43,6 @@ #include "mynamelabel.h" #include "mychancelabel.h" #include "mytimeoutlabel.h" -#include "mymenubar.h" #include "guilog.h" #include "chattools.h" diff --git a/src/gui/qt/gametable/mymenubar.cpp b/src/gui/qt/gametable/mymenubar.cpp deleted file mode 100644 index 9cf620c7..00000000 --- a/src/gui/qt/gametable/mymenubar.cpp +++ /dev/null @@ -1,46 +0,0 @@ -/***************************************************************************** - * PokerTH - The open source texas holdem engine * - * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Affero General Public License as * - * published by the Free Software Foundation, either version 3 of the * - * License, or (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Affero General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - * * - * * - * Additional permission under GNU AGPL version 3 section 7 * - * * - * If you modify this program, or any covered work, by linking or * - * combining it with the OpenSSL project's OpenSSL library (or a * - * modified version of that library), containing parts covered by the * - * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * - * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * - * permission to convey the resulting work. * - * Corresponding Source for a non-source form of such a combination * - * shall include the source code for the parts of OpenSSL used as well * - * as that of the covered work. * - *****************************************************************************/ -#include "mymenubar.h" - -MyMenuBar::MyMenuBar(QMainWindow* parent) - : QMenuBar(parent) -{ -#if (QT_VERSION >= 0x040501) - this->setAttribute(Qt::WA_TranslucentBackground); - this->setStyleSheet("QMenuBar { border-width: 0px; border-style: none;} "); -#endif -} - -void MyMenuBar::paintEvent(QPaintEvent *e) -{ - - QMenuBar::paintEvent(e); -} diff --git a/src/gui/qt/gametable/mymenubar.h b/src/gui/qt/gametable/mymenubar.h deleted file mode 100644 index efe17037..00000000 --- a/src/gui/qt/gametable/mymenubar.h +++ /dev/null @@ -1,49 +0,0 @@ -/***************************************************************************** - * PokerTH - The open source texas holdem engine * - * Copyright (C) 2006-2012 Felix Hammer, Florian Thauer, Lothar May * - * * - * This program is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Affero General Public License as * - * published by the Free Software Foundation, either version 3 of the * - * License, or (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Affero General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with this program. If not, see . * - * * - * * - * Additional permission under GNU AGPL version 3 section 7 * - * * - * If you modify this program, or any covered work, by linking or * - * combining it with the OpenSSL project's OpenSSL library (or a * - * modified version of that library), containing parts covered by the * - * terms of the OpenSSL or SSLeay licenses, the authors of PokerTH * - * (Felix Hammer, Florian Thauer, Lothar May) grant you additional * - * permission to convey the resulting work. * - * Corresponding Source for a non-source form of such a combination * - * shall include the source code for the parts of OpenSSL used as well * - * as that of the covered work. * - *****************************************************************************/ -#ifndef MYMENUBAR_H -#define MYMENUBAR_H - -#include -#include -#if QT_VERSION >= 0x050000 -#include -#endif - -class MyMenuBar : public QMenuBar -{ - Q_OBJECT -public: - MyMenuBar(QMainWindow*); - - void paintEvent(QPaintEvent * event); -}; - -#endif diff --git a/src/gui/qt/gui_800x480/gametable_800x480.ui b/src/gui/qt/gui_800x480/gametable_800x480.ui index ca512667..ba2eb0e9 100644 --- a/src/gui/qt/gui_800x480/gametable_800x480.ui +++ b/src/gui/qt/gui_800x480/gametable_800x480.ui @@ -54,7 +54,16 @@
- + + 0 + + + 0 + + + 0 + + 0 @@ -2749,7 +2758,16 @@ p, li { white-space: pre-wrap; } QGroupBox {border-style:none;} - + + 0 + + + 0 + + + 0 + + 0 @@ -4262,7 +4280,16 @@ p, li { white-space: pre-wrap; } - + + 0 + + + 0 + + + 0 + + 0 @@ -4621,13 +4648,13 @@ p, li { white-space: pre-wrap; }
- + 0 0 800 - 20 + 19 @@ -4781,11 +4808,6 @@ p, li { white-space: pre-wrap; } - - Slider - QSlider -
myslider.h
-
MySetLabel QLabel @@ -4811,11 +4833,6 @@ p, li { white-space: pre-wrap; } QPushButton
myactionbutton.h
- - MyMenuBar - QMenuBar -
mymenubar.h
-
MyTimeoutLabel QLabel @@ -4826,6 +4843,11 @@ p, li { white-space: pre-wrap; } QLabel
mynamelabel.h
+ + Slider + QSlider +
myslider.h
+
MyCashLabel QLabel diff --git a/src/gui/qt/styles/gametablestylereader.cpp b/src/gui/qt/styles/gametablestylereader.cpp index 5cab9d2c..fc5c74e3 100644 --- a/src/gui/qt/styles/gametablestylereader.cpp +++ b/src/gui/qt/styles/gametablestylereader.cpp @@ -1409,6 +1409,7 @@ void GameTableStyleReader::setCardHolderStyle(QLabel *l, int bero) void GameTableStyleReader::setMenuBarStyle(QMenuBar *mb) { + mb->setAttribute(Qt::WA_TranslucentBackground); mb->setStyleSheet("QMenuBar { background-color: #"+MenuBgColor+"; font-size:12px; border-width: 0px;} QMenuBar::item { background: transparent; color: #"+MenuTextColor+"; } QMenuBar::item:selected { background: #"+MenuTextColor+"; color: #"+MenuBgColor+"; } QMenuBar::item:pressed { background: #"+MenuTextColor+"; color: #"+MenuBgColor+"; }"); } From d142bc8cdc9837cb01382f18f0e88629551bc3ff Mon Sep 17 00:00:00 2001 From: doitux Date: Thu, 10 Oct 2013 08:47:47 +0200 Subject: [PATCH 088/128] update mymenubar removed from pokerth_game.pro --- pokerth_game.pro | 2 -- 1 file changed, 2 deletions(-) diff --git a/pokerth_game.pro b/pokerth_game.pro index e8b164de..294dce32 100644 --- a/pokerth_game.pro +++ b/pokerth_game.pro @@ -200,7 +200,6 @@ HEADERS += src/engine/game.h \ src/gui/generic/serverguiwrapper.h \ src/gui/qt/gametable/mychancelabel.h \ src/gui/qt/serverlistdialog/serverlistdialogimpl.h \ - src/gui/qt/gametable/mymenubar.h \ src/gui/qt/gametable/mytimeoutlabel.h \ src/gui/qt/gametable/mynamelabel.h \ src/gui/qt/settingsdialog/mystylelistitem.h \ @@ -277,7 +276,6 @@ SOURCES += src/pokerth.cpp \ src/core/common/loghelper_client.cpp \ src/gui/qt/gametable/mychancelabel.cpp \ src/gui/qt/serverlistdialog/serverlistdialogimpl.cpp \ - src/gui/qt/gametable/mymenubar.cpp \ src/gui/qt/gametable/mytimeoutlabel.cpp \ src/gui/qt/gametable/mynamelabel.cpp \ src/gui/qt/settingsdialog/mystylelistitem.cpp \ From 0368b57432a7c3ee589467ffb3968760da53b443 Mon Sep 17 00:00:00 2001 From: lotodore Date: Fri, 11 Oct 2013 23:54:30 +0200 Subject: [PATCH 089/128] Updating websocket++ to latest github release (0.3 alpha4). --- src/third_party/websocketpp/COPYING | 122 ++++ .../websocketpp/websocketpp/base64/base64.hpp | 2 +- .../websocketpp/websocketpp/common/md5.hpp | 7 +- .../websocketpp/websocketpp/endpoint.hpp | 11 +- .../websocketpp/impl/connection_impl.hpp | 26 +- .../websocketpp/impl/endpoint_impl.hpp | 28 - .../websocketpp/processors/hybi13.hpp | 24 +- .../websocketpp/roles/client_endpoint.hpp | 42 +- .../websocketpp/roles/server_endpoint.hpp | 33 +- .../websocketpp/websocketpp/sha1/license.txt | 14 - .../websocketpp/websocketpp/sha1/sha1.cpp | 185 ++++++ .../websocketpp/websocketpp/sha1/sha1.h | 49 ++ .../websocketpp/websocketpp/sha1/sha1.hpp | 546 ++++++------------ .../websocketpp/transport/asio/base.hpp | 5 + .../websocketpp/transport/asio/connection.hpp | 137 +++-- .../websocketpp/transport/asio/endpoint.hpp | 63 +- .../transport/asio/security/none.hpp | 6 +- .../transport/asio/security/tls.hpp | 13 +- .../websocketpp/transport/base/endpoint.hpp | 6 +- .../transport/iostream/endpoint.hpp | 2 +- .../websocketpp/websocketpp/uri.hpp | 5 +- .../websocketpp/utf8_validator.hpp | 29 +- .../websocketpp/websocketpp/version.hpp | 4 +- 23 files changed, 732 insertions(+), 627 deletions(-) delete mode 100644 src/third_party/websocketpp/websocketpp/sha1/license.txt create mode 100644 src/third_party/websocketpp/websocketpp/sha1/sha1.cpp create mode 100644 src/third_party/websocketpp/websocketpp/sha1/sha1.h diff --git a/src/third_party/websocketpp/COPYING b/src/third_party/websocketpp/COPYING index 0ea3913e..7eeeb8f3 100644 --- a/src/third_party/websocketpp/COPYING +++ b/src/third_party/websocketpp/COPYING @@ -1,3 +1,5 @@ +Main Library: + Copyright (c) 2013, Peter Thorson. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -21,3 +23,123 @@ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Bundled Libraries: + +****** Base 64 Library (base64/base64.hpp) ****** +base64.hpp is a repackaging of the base64.cpp and base64.h files into a +single header suitable for use as a header only library. This conversion was +done by Peter Thorson (webmaster@zaphoyd.com) in 2012. All modifications to +the code are redistributed under the same license as the original, which is +listed below. + +base64.cpp and base64.h + +Copyright (C) 2004-2008 René Nyffenegger + +This source code is provided 'as-is', without any express or implied +warranty. In no event will the author be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this source code must not be misrepresented; you must not + claim that you wrote the original source code. If you use this source code + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original source code. + +3. This notice may not be removed or altered from any source distribution. + +René Nyffenegger rene.nyffenegger@adp-gmbh.ch + +****** SHA1 Library (sha1/sha1.hpp) ****** +sha1.hpp is a repackaging of the sha1.cpp and sha1.h files from the shallsha1 +library (http://code.google.com/p/smallsha1/) into a single header suitable for +use as a header only library. This conversion was done by Peter Thorson +(webmaster@zaphoyd.com) in 2013. All modifications to the code are redistributed +under the same license as the original, which is listed below. + + Copyright (c) 2011, Micael Hildenborg + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Micael Hildenborg nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY Micael Hildenborg ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL Micael Hildenborg BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +****** MD5 Library (common/md5.hpp) ****** +md5.hpp is a reformulation of the md5.h and md5.c code from +http://www.opensource.apple.com/source/cups/cups-59/cups/md5.c to allow it to +function as a component of a header only library. This conversion was done by +Peter Thorson (webmaster@zaphoyd.com) in 2012 for the WebSocket++ project. The +changes are released under the same license as the original (listed below) + +Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved. + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +L. Peter Deutsch +ghost@aladdin.com + +****** UTF8 Validation logic (utf8_validation.hpp) ****** +utf8_validation.hpp is adapted from code originally written by Bjoern Hoehrmann +. See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for +details. + +The original license: + +Copyright (c) 2008-2009 Bjoern Hoehrmann + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/src/third_party/websocketpp/websocketpp/base64/base64.hpp b/src/third_party/websocketpp/websocketpp/base64/base64.hpp index aa2fc8f1..e0e9c4e7 100644 --- a/src/third_party/websocketpp/websocketpp/base64/base64.hpp +++ b/src/third_party/websocketpp/websocketpp/base64/base64.hpp @@ -1,7 +1,7 @@ /* ****** base64.hpp is a repackaging of the base64.cpp and base64.h files into a - single headersuitable for use as a header only library. This conversion was + single header suitable for use as a header only library. This conversion was done by Peter Thorson (webmaster@zaphoyd.com) in 2012. All modifications to the code are redistributed under the same license as the original, which is listed below. diff --git a/src/third_party/websocketpp/websocketpp/common/md5.hpp b/src/third_party/websocketpp/websocketpp/common/md5.hpp index 70eaff89..ed48e992 100644 --- a/src/third_party/websocketpp/websocketpp/common/md5.hpp +++ b/src/third_party/websocketpp/websocketpp/common/md5.hpp @@ -1,7 +1,8 @@ /* - md5.hpp is a reformulation of the md5.h and md5.c code to allow it to function - as a component of a header only library. This conversion was done by Peter - Thorson (webmaster@zaphoyd.com) in 2012 for the WebSocket++ project. The + md5.hpp is a reformulation of the md5.h and md5.c code from + http://www.opensource.apple.com/source/cups/cups-59/cups/md5.c to allow it to + function as a component of a header only library. This conversion was done by + Peter Thorson (webmaster@zaphoyd.com) in 2012 for the WebSocket++ project. The changes are released under the same license as the original (listed below) */ /* diff --git a/src/third_party/websocketpp/websocketpp/endpoint.hpp b/src/third_party/websocketpp/websocketpp/endpoint.hpp index cc72a6de..3c72b504 100644 --- a/src/third_party/websocketpp/websocketpp/endpoint.hpp +++ b/src/third_party/websocketpp/websocketpp/endpoint.hpp @@ -229,30 +229,37 @@ public: m_close_handler = h; } void set_fail_handler(fail_handler h) { + m_alog.write(log::alevel::devel,"set_fail_handler"); scoped_lock_type guard(m_mutex); m_fail_handler = h; } void set_ping_handler(ping_handler h) { + m_alog.write(log::alevel::devel,"set_ping_handler"); scoped_lock_type guard(m_mutex); m_ping_handler = h; } void set_pong_handler(pong_handler h) { + m_alog.write(log::alevel::devel,"set_pong_handler"); scoped_lock_type guard(m_mutex); m_pong_handler = h; } void set_pong_timeout_handler(pong_timeout_handler h) { + m_alog.write(log::alevel::devel,"set_pong_timeout_handler"); scoped_lock_type guard(m_mutex); m_pong_timeout_handler = h; } void set_interrupt_handler(interrupt_handler h) { + m_alog.write(log::alevel::devel,"set_interrupt_handler"); scoped_lock_type guard(m_mutex); m_interrupt_handler = h; } void set_http_handler(http_handler h) { + m_alog.write(log::alevel::devel,"set_http_handler"); scoped_lock_type guard(m_mutex); m_http_handler = h; } void set_validate_handler(validate_handler h) { + m_alog.write(log::alevel::devel,"set_validate_handler"); scoped_lock_type guard(m_mutex); m_validate_handler = h; } @@ -390,7 +397,6 @@ public: } protected: connection_ptr create_connection(); - void remove_connection(connection_ptr con); alog_type m_alog; elog_type m_elog; @@ -411,9 +417,6 @@ private: rng_type m_rng; - // endpoint resources - std::set m_connections; - // static settings bool const m_is_server; diff --git a/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp b/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp index 7dde35a8..9932ca64 100644 --- a/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp +++ b/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp @@ -1177,27 +1177,27 @@ void connection::handle_send_http_response( this->log_open_result(); + if (m_handshake_timer) { + m_handshake_timer->cancel(); + m_handshake_timer.reset(); + } + if (m_response.get_status_code() != http::status_code::switching_protocols) { if (m_processor) { - // if this was not a websocket connection, we have written - // the expected response and the connection can be closed. - } else { // this was a websocket connection that ended in an error std::stringstream s; s << "Handshake ended with HTTP error: " << m_response.get_status_code(); m_elog.write(log::elevel::rerror,s.str()); + } else { + // if this was not a websocket connection, we have written + // the expected response and the connection can be closed. } this->terminate(make_error_code(error::http_connection_ended)); return; } - if (m_handshake_timer) { - m_handshake_timer->cancel(); - m_handshake_timer.reset(); - } - this->atomic_state_change( istate::PROCESS_HTTP_REQUEST, istate::PROCESS_CONNECTION, @@ -1339,6 +1339,11 @@ void connection::handle_read_http_response(const lib::error_code& ec, m_alog.write(log::alevel::devel,std::string("Raw response: ")+m_response.raw()); if (m_response.headers_ready()) { + if (m_handshake_timer) { + m_handshake_timer->cancel(); + m_handshake_timer.reset(); + } + lib::error_code ec = m_processor->validate_server_handshake_response( m_request, m_response @@ -1361,11 +1366,6 @@ void connection::handle_read_http_response(const lib::error_code& ec, "handle_read_http_response must be called from READ_HTTP_RESPONSE state" ); - if (m_handshake_timer) { - m_handshake_timer->cancel(); - m_handshake_timer.reset(); - } - this->log_open_result(); if (m_open_handler) { diff --git a/src/third_party/websocketpp/websocketpp/impl/endpoint_impl.hpp b/src/third_party/websocketpp/websocketpp/impl/endpoint_impl.hpp index 2a7c82de..e30c0d9d 100644 --- a/src/third_party/websocketpp/websocketpp/impl/endpoint_impl.hpp +++ b/src/third_party/websocketpp/websocketpp/impl/endpoint_impl.hpp @@ -50,9 +50,6 @@ endpoint::create_connection() { // Cast that weak pointer to void* and manage it using another shared_ptr // connection_hdl hdl(reinterpret_cast(new connection_weak_ptr(con))); - // con->set_handle(hdl); - - // con->set_handle(w); // Copy default handlers from the endpoint @@ -67,14 +64,6 @@ endpoint::create_connection() { con->set_validate_handler(m_validate_handler); con->set_message_handler(m_message_handler); - con->set_termination_handler( - lib::bind( - &type::remove_connection, - this, - lib::placeholders::_1 - ) - ); - lib::error_code ec; ec = transport_type::init(con); @@ -83,9 +72,6 @@ endpoint::create_connection() { return connection_ptr(); } - scoped_lock_type lock(m_mutex); - m_connections.insert(con); - return con; } @@ -216,20 +202,6 @@ void endpoint::pong(connection_hdl hdl, std::string const & if (ec) { throw ec; } } -template -void endpoint::remove_connection(connection_ptr con) { - std::stringstream s; - s << "remove_connection. New count: " << m_connections.size()-1; - m_alog.write(log::alevel::devel,s.str()); - - scoped_lock_type lock(m_mutex); - - // unregister the termination handler - con->set_termination_handler(termination_handler()); - - m_connections.erase(con); -} - } // namespace websocketpp #endif // WEBSOCKETPP_ENDPOINT_IMPL_HPP diff --git a/src/third_party/websocketpp/websocketpp/processors/hybi13.hpp b/src/third_party/websocketpp/websocketpp/processors/hybi13.hpp index 3c11e5b6..b6b984fe 100644 --- a/src/third_party/websocketpp/websocketpp/processors/hybi13.hpp +++ b/src/third_party/websocketpp/websocketpp/processors/hybi13.hpp @@ -614,27 +614,11 @@ protected: lib::error_code process_handshake_key(std::string & key) const { key.append(constants::handshake_guid); - sha1 sha; - uint32_t message_digest[5]; + unsigned char message_digest[20]; + sha1::calc(key.c_str(),key.length(),message_digest); + key = base64_encode(message_digest,20); - sha << key.c_str(); - - if (sha.get_raw_digest(message_digest)){ - // convert sha1 hash bytes to network byte order because this sha1 - // library works on ints rather than bytes - for (int i = 0; i < 5; i++) { - message_digest[i] = htonl(message_digest[i]); - } - - key = base64_encode( - reinterpret_cast(message_digest), - 20 - ); - - return lib::error_code(); - } else { - return error::make_error_code(error::sha1_library); - } + return lib::error_code(); } /// Reads bytes from buf into m_basic_header diff --git a/src/third_party/websocketpp/websocketpp/roles/client_endpoint.hpp b/src/third_party/websocketpp/websocketpp/roles/client_endpoint.hpp index 7ce05ece..1072a0f3 100644 --- a/src/third_party/websocketpp/websocketpp/roles/client_endpoint.hpp +++ b/src/third_party/websocketpp/websocketpp/roles/client_endpoint.hpp @@ -66,8 +66,7 @@ public: explicit client() : endpoint_type(false) { - endpoint_type::m_alog.write(log::alevel::devel, - "client constructor"); + endpoint_type::m_alog.write(log::alevel::devel, "client constructor"); } /// Get a new connection @@ -77,15 +76,17 @@ public: * applying connection specific settings before performing the opening * handshake. * + * @param [in] location URI to open the connection to as a uri_ptr + * @param [out] ec An status code indicating failure reasons, if any + * * @return A connection_ptr to the new connection */ - connection_ptr get_connection(uri_ptr location, lib::error_code &ec) { + connection_ptr get_connection(uri_ptr location, lib::error_code & ec) { if (location->get_secure() && !transport_type::is_secure()) { ec = error::make_error_code(error::endpoint_not_secure); return connection_ptr(); } - // create connection connection_ptr con = endpoint_type::create_connection(); if (!con) { @@ -95,7 +96,6 @@ public: con->set_uri(location); - // Success ec = lib::error_code(); return con; } @@ -106,10 +106,12 @@ public: * suitable for passing to connect(connection_ptr). This overload allows * default construction of the uri_ptr from a standard string. * + * @param [in] u URI to open the connection to as a string + * @param [out] ec An status code indicating failure reasons, if any + * * @return A connection_ptr to the new connection */ - connection_ptr get_connection(const std::string& u, lib::error_code &ec) { - // parse uri + connection_ptr get_connection(std::string const & u, lib::error_code & ec) { uri_ptr location(new uri(u)); if (!location->get_valid()) { @@ -137,35 +139,17 @@ public: lib::bind( &type::handle_connect, this, - lib::placeholders::_1, - lib::placeholders::_2 + con, + lib::placeholders::_1 ) ); return con; } - - - - // connect(...) private: // handle_connect - void handle_connect(connection_hdl hdl, const lib::error_code & ec) { - lib::error_code hdl_ec; - connection_ptr con = endpoint_type::get_con_from_hdl(hdl,hdl_ec); - - if (hdl_ec == error::bad_connection) { - endpoint_type::m_elog.write(log::elevel::fatal, - "handle_connect got an invalid handle back"); - } else if (hdl_ec) { - // There was some other unknown error attempting to convert the hdl - // to a connection. - endpoint_type::m_elog.write(log::elevel::fatal, - "handle_connect error in get_con_from_hdl: "+hdl_ec.message()); - //con->terminate(); - } else if (ec) { - // TODO - // Set connection's failure reasons + void handle_connect(connection_ptr con, lib::error_code const & ec) { + if (ec) { con->terminate(ec); endpoint_type::m_elog.write(log::elevel::rerror, diff --git a/src/third_party/websocketpp/websocketpp/roles/server_endpoint.hpp b/src/third_party/websocketpp/websocketpp/roles/server_endpoint.hpp index f2bb7efb..77f1c291 100644 --- a/src/third_party/websocketpp/websocketpp/roles/server_endpoint.hpp +++ b/src/third_party/websocketpp/websocketpp/roles/server_endpoint.hpp @@ -90,37 +90,20 @@ public: lib::bind( &type::handle_accept, this, - lib::placeholders::_1, - lib::placeholders::_2 + con, + lib::placeholders::_1 ) ); } - void handle_accept(connection_hdl hdl, const lib::error_code& ec) { - lib::error_code hdl_ec; - connection_ptr con = endpoint_type::get_con_from_hdl(hdl,hdl_ec); + void handle_accept(connection_ptr con, const lib::error_code& ec) { + if (ec) { + con->terminate(ec); - if (hdl_ec == error::bad_connection) { - // The connection we were trying to connect went out of scope - // This really shouldn't happen - endpoint_type::m_elog.write(log::elevel::fatal, - "handle_accept got an invalid handle back"); - //con->terminate(); - } else if (hdl_ec) { - // There was some other unknown error attempting to convert the hdl - // to a connection. - endpoint_type::m_elog.write(log::elevel::fatal, - "handle_accept error in get_con_from_hdl: "+hdl_ec.message()); - //con->terminate(); + endpoint_type::m_elog.write(log::elevel::rerror, + "handle_accept error: "+ec.message()); } else { - if (ec) { - con->terminate(ec); - - endpoint_type::m_elog.write(log::elevel::rerror, - "handle_accept error: "+ec.message()); - } else { - con->start(); - } + con->start(); } // TODO: are there cases where we should terminate this loop? diff --git a/src/third_party/websocketpp/websocketpp/sha1/license.txt b/src/third_party/websocketpp/websocketpp/sha1/license.txt deleted file mode 100644 index 5e852eef..00000000 --- a/src/third_party/websocketpp/websocketpp/sha1/license.txt +++ /dev/null @@ -1,14 +0,0 @@ -Copyright (C) 1998, 2009 -Paul E. Jones - -Freeware Public License (FPL) - -This software is licensed as "freeware." Permission to distribute -this software in source and binary forms, including incorporation -into other products, is hereby granted without a fee. THIS SOFTWARE -IS PROVIDED 'AS IS' AND WITHOUT ANY EXPRESSED OR IMPLIED WARRANTIES, -INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHOR SHALL NOT BE HELD -LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE, EITHER -DIRECTLY OR INDIRECTLY, INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA -OR DATA BEING RENDERED INACCURATE. diff --git a/src/third_party/websocketpp/websocketpp/sha1/sha1.cpp b/src/third_party/websocketpp/websocketpp/sha1/sha1.cpp new file mode 100644 index 00000000..661562a3 --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/sha1/sha1.cpp @@ -0,0 +1,185 @@ +/* + Copyright (c) 2011, Micael Hildenborg + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Micael Hildenborg nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY Micael Hildenborg ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL Micael Hildenborg BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + Contributors: + Gustav + Several members in the gamedev.se forum. + Gregory Petrosyan + */ + +#include "sha1.h" + +namespace sha1 +{ + namespace // local + { + // Rotate an integer value to left. + inline const unsigned int rol(const unsigned int value, + const unsigned int steps) + { + return ((value << steps) | (value >> (32 - steps))); + } + + // Sets the first 16 integers in the buffert to zero. + // Used for clearing the W buffert. + inline void clearWBuffert(unsigned int* buffert) + { + for (int pos = 16; --pos >= 0;) + { + buffert[pos] = 0; + } + } + + void innerHash(unsigned int* result, unsigned int* w) + { + unsigned int a = result[0]; + unsigned int b = result[1]; + unsigned int c = result[2]; + unsigned int d = result[3]; + unsigned int e = result[4]; + + int round = 0; + + #define sha1macro(func,val) \ + { \ + const unsigned int t = rol(a, 5) + (func) + e + val + w[round]; \ + e = d; \ + d = c; \ + c = rol(b, 30); \ + b = a; \ + a = t; \ + } + + while (round < 16) + { + sha1macro((b & c) | (~b & d), 0x5a827999) + ++round; + } + while (round < 20) + { + w[round] = rol((w[round - 3] ^ w[round - 8] ^ w[round - 14] ^ w[round - 16]), 1); + sha1macro((b & c) | (~b & d), 0x5a827999) + ++round; + } + while (round < 40) + { + w[round] = rol((w[round - 3] ^ w[round - 8] ^ w[round - 14] ^ w[round - 16]), 1); + sha1macro(b ^ c ^ d, 0x6ed9eba1) + ++round; + } + while (round < 60) + { + w[round] = rol((w[round - 3] ^ w[round - 8] ^ w[round - 14] ^ w[round - 16]), 1); + sha1macro((b & c) | (b & d) | (c & d), 0x8f1bbcdc) + ++round; + } + while (round < 80) + { + w[round] = rol((w[round - 3] ^ w[round - 8] ^ w[round - 14] ^ w[round - 16]), 1); + sha1macro(b ^ c ^ d, 0xca62c1d6) + ++round; + } + + #undef sha1macro + + result[0] += a; + result[1] += b; + result[2] += c; + result[3] += d; + result[4] += e; + } + } // namespace + + void calc(const void* src, const int bytelength, unsigned char* hash) + { + // Init the result array. + unsigned int result[5] = { 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 }; + + // Cast the void src pointer to be the byte array we can work with. + const unsigned char* sarray = (const unsigned char*) src; + + // The reusable round buffer + unsigned int w[80]; + + // Loop through all complete 64byte blocks. + const int endOfFullBlocks = bytelength - 64; + int endCurrentBlock; + int currentBlock = 0; + + while (currentBlock <= endOfFullBlocks) + { + endCurrentBlock = currentBlock + 64; + + // Init the round buffer with the 64 byte block data. + for (int roundPos = 0; currentBlock < endCurrentBlock; currentBlock += 4) + { + // This line will swap endian on big endian and keep endian on little endian. + w[roundPos++] = (unsigned int) sarray[currentBlock + 3] + | (((unsigned int) sarray[currentBlock + 2]) << 8) + | (((unsigned int) sarray[currentBlock + 1]) << 16) + | (((unsigned int) sarray[currentBlock]) << 24); + } + innerHash(result, w); + } + + // Handle the last and not full 64 byte block if existing. + endCurrentBlock = bytelength - currentBlock; + clearWBuffert(w); + int lastBlockBytes = 0; + for (;lastBlockBytes < endCurrentBlock; ++lastBlockBytes) + { + w[lastBlockBytes >> 2] |= (unsigned int) sarray[lastBlockBytes + currentBlock] << ((3 - (lastBlockBytes & 3)) << 3); + } + w[lastBlockBytes >> 2] |= 0x80 << ((3 - (lastBlockBytes & 3)) << 3); + if (endCurrentBlock >= 56) + { + innerHash(result, w); + clearWBuffert(w); + } + w[15] = bytelength << 3; + innerHash(result, w); + + // Store hash in result pointer, and make sure we get in in the correct order on both endian models. + for (int hashByte = 20; --hashByte >= 0;) + { + hash[hashByte] = (result[hashByte >> 2] >> (((3 - hashByte) & 0x3) << 3)) & 0xff; + } + } + + void toHexString(const unsigned char* hash, char* hexstring) + { + const char hexDigits[] = { "0123456789abcdef" }; + + for (int hashByte = 20; --hashByte >= 0;) + { + hexstring[hashByte << 1] = hexDigits[(hash[hashByte] >> 4) & 0xf]; + hexstring[(hashByte << 1) + 1] = hexDigits[hash[hashByte] & 0xf]; + } + hexstring[40] = 0; + } +} // namespace sha1 diff --git a/src/third_party/websocketpp/websocketpp/sha1/sha1.h b/src/third_party/websocketpp/websocketpp/sha1/sha1.h new file mode 100644 index 00000000..96d8ce4d --- /dev/null +++ b/src/third_party/websocketpp/websocketpp/sha1/sha1.h @@ -0,0 +1,49 @@ +/* + Copyright (c) 2011, Micael Hildenborg + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Micael Hildenborg nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY Micael Hildenborg ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL Micael Hildenborg BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef SHA1_DEFINED +#define SHA1_DEFINED + +namespace sha1 +{ + + /** + @param src points to any kind of data to be hashed. + @param bytelength the number of bytes to hash from the src pointer. + @param hash should point to a buffer of at least 20 bytes of size for storing the sha1 result in. + */ + void calc(const void* src, const int bytelength, unsigned char* hash); + + /** + @param hash is 20 bytes of sha1 hash. This is the same data that is the result from the calc function. + @param hexstring should point to a buffer of at least 41 bytes of size for storing the hexadecimal representation of the hash. A zero will be written at position 40, so the buffer will be a valid zero ended string. + */ + void toHexString(const unsigned char* hash, char* hexstring); + +} // namespace sha1 + +#endif // SHA1_DEFINED diff --git a/src/third_party/websocketpp/websocketpp/sha1/sha1.hpp b/src/third_party/websocketpp/websocketpp/sha1/sha1.hpp index 154196ac..fd4f0760 100644 --- a/src/third_party/websocketpp/websocketpp/sha1/sha1.hpp +++ b/src/third_party/websocketpp/websocketpp/sha1/sha1.hpp @@ -1,406 +1,184 @@ /* - * sha1.hpp - * - * Copyright (C) 1998, 2009 - * Paul E. Jones - * All Rights Reserved. - * - * Modifications were done in 2012-13 by Peter Thorson (webmaster@zaphoyd.com) - * to allow header only usage of the library and use C++ features to better - * support C++ usage. These changes are distributed under the original freeware - * license included below - * - * Freeware Public License (FPL) - * - * This software is licensed as "freeware." Permission to distribute - * this software in source and binary forms, including incorporation - * into other products, is hereby granted without a fee. THIS SOFTWARE - * IS PROVIDED 'AS IS' AND WITHOUT ANY EXPRESSED OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHOR SHALL NOT BE HELD - * LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE, EITHER - * DIRECTLY OR INDIRECTLY, INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA - * OR DATA BEING RENDERED INACCURATE. - * - ***************************************************************************** - * - * Description: - * This class implements the Secure Hashing Standard as defined - * in FIPS PUB 180-1 published April 17, 1995. - * - * Many of the variable names in this class, especially the single - * character names, were used because those were the names used - * in the publication. - * - * The Secure Hashing Standard, which uses the Secure Hashing - * Algorithm (SHA), produces a 160-bit message digest for a - * given data stream. In theory, it is highly improbable that - * two messages will produce the same message digest. Therefore, - * this algorithm can serve as a means of providing a "fingerprint" - * for a message. - * - * Portability Issues: - * SHA-1 is defined in terms of 32-bit "words". This code was - * written with the expectation that the processor has at least - * a 32-bit machine word size. If the machine word size is larger, - * the code should still function properly. One caveat to that - * is that the input functions taking characters and character arrays - * assume that only 8 bits of information are stored in each character. - * - * Caveats: - * SHA-1 is designed to work with messages less than 2^64 bits long. - * Although SHA-1 allows a message digest to be generated for - * messages of any number of bits less than 2^64, this implementation - * only works with messages with a length that is a multiple of 8 - * bits. - * - ***************************************************************************** +***** +sha1.hpp is a repackaging of the sha1.cpp and sha1.h files from the shallsha1 +library (http://code.google.com/p/smallsha1/) into a single header suitable for +use as a header only library. This conversion was done by Peter Thorson +(webmaster@zaphoyd.com) in 2013. All modifications to the code are redistributed +under the same license as the original, which is listed below. +***** + + Copyright (c) 2011, Micael Hildenborg + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Micael Hildenborg nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY Micael Hildenborg ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL Micael Hildenborg BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _SHA1_H_ -#define _SHA1_H_ - -#include +#ifndef SHA1_DEFINED +#define SHA1_DEFINED namespace websocketpp { +namespace sha1 { -/// Provides SHA1 hashing functionality -class sha1 { -public: - sha1() { - reset(); - } - - virtual ~sha1() {} - - /// Re-initialize the class - void reset() { - length_low = 0; - length_high = 0; - message_block_index = 0; - - H[0] = 0x67452301; - H[1] = 0xEFCDAB89; - H[2] = 0x98BADCFE; - H[3] = 0x10325476; - H[4] = 0xC3D2E1F0; - - computed = false; - corrupted = false; - } - - /// Extract the message digest as a raw integer array - /** - * @param [out] message_digest_array Integer array to store the message in - * @return Whether or not the extraction was sucessful - */ - bool get_raw_digest(uint32_t * message_digest_array) { - if (corrupted) { - return false; + namespace // local + { + // Rotate an integer value to left. + inline const unsigned int rol(const unsigned int value, + const unsigned int steps) + { + return ((value << steps) | (value >> (32 - steps))); } - if (!computed) { - pad_message(); - computed = true; + // Sets the first 16 integers in the buffert to zero. + // Used for clearing the W buffert. + inline void clearWBuffert(unsigned int* buffert) + { + for (int pos = 16; --pos >= 0;) + { + buffert[pos] = 0; + } } - for (int i = 0; i < 5; i++) { - message_digest_array[i] = H[i]; - } + inline void innerHash(unsigned int* result, unsigned int* w) + { + unsigned int a = result[0]; + unsigned int b = result[1]; + unsigned int c = result[2]; + unsigned int d = result[3]; + unsigned int e = result[4]; - return true; - } + int round = 0; - /// Provide input to SHA1 - /** - * @param [in] message_array The input bytes - * @param [in] length Length of the message array - */ - void input(unsigned char const * message_array, uint32_t length) { - if (!length) { - return; - } + #define sha1macro(func,val) \ + { \ + const unsigned int t = rol(a, 5) + (func) + e + val + w[round]; \ + e = d; \ + d = c; \ + c = rol(b, 30); \ + b = a; \ + a = t; \ + } - if (computed || corrupted) { - corrupted = true; - return; - } - - while (length-- && !corrupted) { -// Suppresses Visual Studio code analysis for write overrun. It doesn't know the -// index into Message_Block is protected by checking length. -// -// TODO: is there a more compatible way to write the original code to avoid -// this sort of warning? -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(suppress: 6386) -#endif - message_block[message_block_index++] = (*message_array & 0xFF); -#ifdef _MSC_VER -#pragma warning(pop) -#endif - - length_low += 8; - length_low &= 0xFFFFFFFF; // Force it to 32 bits - if (length_low == 0) { - length_high++; - length_high &= 0xFFFFFFFF; // Force it to 32 bits - if (length_high == 0) { - corrupted = true; // Message is too long - } + while (round < 16) + { + sha1macro((b & c) | (~b & d), 0x5a827999) + ++round; + } + while (round < 20) + { + w[round] = rol((w[round - 3] ^ w[round - 8] ^ w[round - 14] ^ w[round - 16]), 1); + sha1macro((b & c) | (~b & d), 0x5a827999) + ++round; + } + while (round < 40) + { + w[round] = rol((w[round - 3] ^ w[round - 8] ^ w[round - 14] ^ w[round - 16]), 1); + sha1macro(b ^ c ^ d, 0x6ed9eba1) + ++round; + } + while (round < 60) + { + w[round] = rol((w[round - 3] ^ w[round - 8] ^ w[round - 14] ^ w[round - 16]), 1); + sha1macro((b & c) | (b & d) | (c & d), 0x8f1bbcdc) + ++round; + } + while (round < 80) + { + w[round] = rol((w[round - 3] ^ w[round - 8] ^ w[round - 14] ^ w[round - 16]), 1); + sha1macro(b ^ c ^ d, 0xca62c1d6) + ++round; } - if (message_block_index == 64) { - process_message_block(); + #undef sha1macro + + result[0] += a; + result[1] += b; + result[2] += c; + result[3] += d; + result[4] += e; + } + } // namespace + + /** + @param src points to any kind of data to be hashed. + @param bytelength the number of bytes to hash from the src pointer. + @param hash should point to a buffer of at least 20 bytes of size for storing the sha1 result in. + */ + inline void calc(const void* src, const int bytelength, unsigned char* hash) { + // Init the result array. + unsigned int result[5] = { 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 }; + + // Cast the void src pointer to be the byte array we can work with. + const unsigned char* sarray = (const unsigned char*) src; + + // The reusable round buffer + unsigned int w[80]; + + // Loop through all complete 64byte blocks. + const int endOfFullBlocks = bytelength - 64; + int endCurrentBlock; + int currentBlock = 0; + + while (currentBlock <= endOfFullBlocks) + { + endCurrentBlock = currentBlock + 64; + + // Init the round buffer with the 64 byte block data. + for (int roundPos = 0; currentBlock < endCurrentBlock; currentBlock += 4) + { + // This line will swap endian on big endian and keep endian on little endian. + w[roundPos++] = (unsigned int) sarray[currentBlock + 3] + | (((unsigned int) sarray[currentBlock + 2]) << 8) + | (((unsigned int) sarray[currentBlock + 1]) << 16) + | (((unsigned int) sarray[currentBlock]) << 24); } + innerHash(result, w); + } - message_array++; + // Handle the last and not full 64 byte block if existing. + endCurrentBlock = bytelength - currentBlock; + clearWBuffert(w); + int lastBlockBytes = 0; + for (;lastBlockBytes < endCurrentBlock; ++lastBlockBytes) + { + w[lastBlockBytes >> 2] |= (unsigned int) sarray[lastBlockBytes + currentBlock] << ((3 - (lastBlockBytes & 3)) << 3); + } + w[lastBlockBytes >> 2] |= 0x80 << ((3 - (lastBlockBytes & 3)) << 3); + if (endCurrentBlock >= 56) + { + innerHash(result, w); + clearWBuffert(w); + } + w[15] = bytelength << 3; + innerHash(result, w); + + // Store hash in result pointer, and make sure we get in in the correct order on both endian models. + for (int hashByte = 20; --hashByte >= 0;) + { + hash[hashByte] = (result[hashByte >> 2] >> (((3 - hashByte) & 0x3) << 3)) & 0xff; } } - /// Provide input to SHA1 - /** - * Overload with signed message array - * - * @param [in] message_array The input bytes - * @param [in] length Length of the message array - */ - void input(char const * message_array, uint32_t length) { - input(reinterpret_cast(message_array), length); - } - - /// Provide input to SHA1 - /** - * Overload with a single unsigned char - * - * @param [in] message_element The character to input - */ - void input(unsigned char message_element) { - input(&message_element, 1); - } - - /// Provide input to SHA1 - /** - * Overload with a single signed char - * - * @param [in] message_element The character to input - */ - void input(char message_element) { - input(reinterpret_cast(&message_element), 1); - } - - /// Provide input to SHA1 - /** - * Overload via signed char array stream input - * - * @param [in] message_array The character array to input - */ - sha1& operator<<(char const * message_array) { - char const * p = message_array; - - while(*p) { - input(*p); - p++; - } - - return *this; - } - - /// Provide input to SHA1 - /** - * Overload via unsigned char array stream input - * - * @param [in] message_array The character array to input - */ - sha1& operator<<(unsigned char const * message_array) { - unsigned char const * p = message_array; - - while(*p) { - input(*p); - p++; - } - - return *this; - } - - /// Provide input to SHA1 - /** - * Overload via signed char stream input - * - * @param [in] message_element The character to input - */ - sha1& operator<<(char message_element) { - input((unsigned char *) &message_element, 1); - - return *this; - } - - /// Provide input to SHA1 - /** - * Overload via unsigned char stream input - * - * @param [in] message_element The character to input - */ - sha1& operator<<(unsigned char message_element) { - input(&message_element, 1); - - return *this; - } -private: - /// Process the next 512 bits of the message - /** - * Many of the variable names in this function, especially the single - * character names, were used because those were the names used - * in the publication. - */ - void process_message_block() { - // Constants defined for SHA-1 - uint32_t const K[] = { 0x5A827999, - 0x6ED9EBA1, - 0x8F1BBCDC, - 0xCA62C1D6 }; - uint32_t temp; // Temporary word value - uint32_t W[80]; // Word sequence - uint32_t A, B, C, D, E; // Word buffers - - // Initialize the first 16 words in the array W - for (int t = 0; t < 16; t++) { - W[t] = ((uint32_t) message_block[t * 4]) << 24; - W[t] |= ((uint32_t) message_block[t * 4 + 1]) << 16; - W[t] |= ((uint32_t) message_block[t * 4 + 2]) << 8; - W[t] |= ((uint32_t) message_block[t * 4 + 3]); - } - - for (int t = 16; t < 80; t++) { - W[t] = CircularShift(1,W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]); - } - - A = H[0]; - B = H[1]; - C = H[2]; - D = H[3]; - E = H[4]; - - for (int t = 0; t < 20; t++) { - temp = CircularShift(5,A) + ((B & C) | ((~B) & D)) + E + W[t] + K[0]; - temp &= 0xFFFFFFFF; - E = D; - D = C; - C = CircularShift(30,B); - B = A; - A = temp; - } - - for (int t = 20; t < 40; t++) { - temp = CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[1]; - temp &= 0xFFFFFFFF; - E = D; - D = C; - C = CircularShift(30,B); - B = A; - A = temp; - } - - for (int t = 40; t < 60; t++) { - temp = CircularShift(5,A) + - ((B & C) | (B & D) | (C & D)) + E + W[t] + K[2]; - temp &= 0xFFFFFFFF; - E = D; - D = C; - C = CircularShift(30,B); - B = A; - A = temp; - } - - for (int t = 60; t < 80; t++) { - temp = CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[3]; - temp &= 0xFFFFFFFF; - E = D; - D = C; - C = CircularShift(30,B); - B = A; - A = temp; - } - - H[0] = (H[0] + A) & 0xFFFFFFFF; - H[1] = (H[1] + B) & 0xFFFFFFFF; - H[2] = (H[2] + C) & 0xFFFFFFFF; - H[3] = (H[3] + D) & 0xFFFFFFFF; - H[4] = (H[4] + E) & 0xFFFFFFFF; - - message_block_index = 0; - } - - /// Pads the current message block to 512 bits - /** - * According to the standard, the message must be padded to an even - * 512 bits. The first padding bit must be a '1'. The last 64 bits - * represent the length of the original message. All bits in between - * should be 0. This function will pad the message according to those - * rules by filling the message_block array accordingly. It will also - * call ProcessMessageBlock() appropriately. When it returns, it - * can be assumed that the message digest has been computed. - */ - void pad_message() { - // Check to see if the current message block is too small to hold - // the initial padding bits and length. If so, we will pad the - // block, process it, and then continue padding into a second block. - if (message_block_index > 55) { - message_block[message_block_index++] = 0x80; - while(message_block_index < 64) { - message_block[message_block_index++] = 0; - } - - process_message_block(); - - while(message_block_index < 56) { - message_block[message_block_index++] = 0; - } - } else { - message_block[message_block_index++] = 0x80; - while(message_block_index < 56) { - message_block[message_block_index++] = 0; - } - - } - - // Store the message length as the last 8 octets - message_block[56] = (length_high >> 24) & 0xFF; - message_block[57] = (length_high >> 16) & 0xFF; - message_block[58] = (length_high >> 8) & 0xFF; - message_block[59] = (length_high) & 0xFF; - message_block[60] = (length_low >> 24) & 0xFF; - message_block[61] = (length_low >> 16) & 0xFF; - message_block[62] = (length_low >> 8) & 0xFF; - message_block[63] = (length_low) & 0xFF; - - process_message_block(); - } - - /// Performs a circular left shift operation - /** - * @param [in] bits How many bits to shift - * @param [in] word The word to shift - * @return The shifted word - */ - inline uint32_t CircularShift(int bits, uint32_t word) { - return ((word << bits) & 0xFFFFFFFF) | ((word & 0xFFFFFFFF) >> (32-bits)); - } - - uint32_t H[5]; // Message digest buffers - - uint32_t length_low; // Message length in bits - uint32_t length_high; // Message length in bits - - unsigned char message_block[64]; // 512-bit message blocks - int message_block_index; // Index into message block array - - bool computed; // Is the digest computed? - bool corrupted; // Is the message digest corruped? - -}; - +} // namespace sha1 } // namespace websocketpp -#endif // _SHA1_H_ +#endif // SHA1_DEFINED diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/base.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/base.hpp index a868ad9a..35c80ef2 100644 --- a/src/third_party/websocketpp/websocketpp/transport/asio/base.hpp +++ b/src/third_party/websocketpp/websocketpp/transport/asio/base.hpp @@ -45,6 +45,11 @@ namespace transport { */ namespace asio { +// Forward declaration of class endpoint so that it can be friended/referenced +// before being included. +template +class endpoint; + typedef lib::function socket_shutdown_handler; diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/connection.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/connection.hpp index 545dc818..c69ea604 100644 --- a/src/third_party/websocketpp/websocketpp/transport/asio/connection.hpp +++ b/src/third_party/websocketpp/websocketpp/transport/asio/connection.hpp @@ -81,9 +81,16 @@ public: /// Type of a pointer to the ASIO io_service being used typedef boost::asio::io_service* io_service_ptr; + /// Type of a pointer to the ASIO io_service::strand being used + typedef lib::shared_ptr strand_ptr; /// Type of a pointer to the ASIO timer class typedef lib::shared_ptr timer_ptr; + // connection is friends with its associated endpoint to allow the endpoint + // to call private/protected utility methods that we don't want to expose + // to the public api. + friend class endpoint; + // generate and manage our own io_service explicit connection(bool is_server, alog_type& alog, elog_type& elog) : m_is_server(is_server) @@ -102,29 +109,13 @@ public: return socket_con_type::is_secure(); } - /// Finish constructing the transport + /// Sets the tcp init handler /** - * init_asio is called once immediately after construction to initialize - * boost::asio components to the io_service + * The tcp init handler is called after the tcp connection has been + * established. * - * TODO: this method is not protected because the endpoint needs to call it. - * need to figure out if there is a way to friend the endpoint safely across - * different compilers. - * - * @param io_service A pointer to the io_service to register with this - * connection - * - * @return Status code for the success or failure of the initialization + * @param h The handler to call on tcp init. */ - lib::error_code init_asio (io_service_ptr io_service) { - // do we need to store or use the io_service at this level? - m_io_service = io_service; - - //m_strand.reset(new boost::asio::strand(*io_service)); - - return socket_con_type::init_asio(io_service, m_is_server); - } - void set_tcp_init_handler(tcp_init_handler h) { m_tcp_init_handler = h; } @@ -251,26 +242,6 @@ public: return m_connection_hdl; } - /// initialize the proxy buffers and http parsers - /** - * - * @param authority The address of the server we want the proxy to tunnel to - * in the format of a URI authority (host:port) - */ - lib::error_code proxy_init(const std::string & authority) { - if (!m_proxy_data) { - return websocketpp::error::make_error_code( - websocketpp::error::invalid_state); - } - m_proxy_data->req.set_version("HTTP/1.1"); - m_proxy_data->req.set_method("CONNECT"); - - m_proxy_data->req.set_uri(authority); - m_proxy_data->req.replace_header("Host",authority); - - return lib::error_code(); - } - /// Call back a function after a period of time. /** * Sets a timer that calls back a function after the specified period of @@ -294,13 +265,13 @@ public: ); new_timer->async_wait( - lib::bind( + m_strand->wrap(lib::bind( &type::handle_timer, get_shared(), new_timer, callback, lib::placeholders::_1 - ) + )) ); return new_timer; @@ -311,10 +282,10 @@ public: * The timer pointer is included to ensure the timer isn't destroyed until * after it has expired. * + * TODO: candidate for protected status + * * @param t Pointer to the timer in question - * * @param callback The function to call back - * * @param ec The status code */ void handle_timer(timer_ptr t, timer_handler callback, const @@ -332,6 +303,11 @@ public: } } protected: + /// Get a pointer to this connection's strand + strand_ptr get_strand() { + return m_strand; + } + /// Initialize transport for reading /** * init_asio is called once immediately after construction to initialize @@ -367,6 +343,47 @@ protected: ); } + /// initialize the proxy buffers and http parsers + /** + * + * @param authority The address of the server we want the proxy to tunnel to + * in the format of a URI authority (host:port) + * + * @return Status code indicating what errors occurred, if any + */ + lib::error_code proxy_init(std::string const & authority) { + if (!m_proxy_data) { + return websocketpp::error::make_error_code( + websocketpp::error::invalid_state); + } + m_proxy_data->req.set_version("HTTP/1.1"); + m_proxy_data->req.set_method("CONNECT"); + + m_proxy_data->req.set_uri(authority); + m_proxy_data->req.replace_header("Host",authority); + + return lib::error_code(); + } + + /// Finish constructing the transport + /** + * init_asio is called once immediately after construction to initialize + * boost::asio components to the io_service + * + * @param io_service A pointer to the io_service to register with this + * connection + * + * @return Status code for the success or failure of the initialization + */ + lib::error_code init_asio (io_service_ptr io_service) { + // do we need to store or use the io_service at this level? + m_io_service = io_service; + + m_strand.reset(new boost::asio::strand(*io_service)); + + return socket_con_type::init_asio(io_service, m_strand, m_is_server); + } + void handle_pre_init(init_handler callback, const lib::error_code& ec) { if (m_alog.static_test(log::alevel::devel)) { m_alog.write(log::alevel::devel,"asio connection handle pre_init"); @@ -497,12 +514,12 @@ protected: boost::asio::async_write( socket_con_type::get_next_layer(), m_bufs, - lib::bind( + m_strand->wrap(lib::bind( &type::handle_proxy_write, get_shared(), callback, lib::placeholders::_1 - ) + )) ); } @@ -568,13 +585,13 @@ protected: socket_con_type::get_next_layer(), m_proxy_data->read_buf, "\r\n\r\n", - lib::bind( + m_strand->wrap(lib::bind( &type::handle_proxy_read, get_shared(), callback, lib::placeholders::_1, lib::placeholders::_2 - ) + )) ); } @@ -680,13 +697,13 @@ protected: socket_con_type::get_socket(), boost::asio::buffer(buf,len), boost::asio::transfer_at_least(num_bytes), - lib::bind( + m_strand->wrap(lib::bind( &type::handle_async_read, get_shared(), handler, lib::placeholders::_1, lib::placeholders::_2 - ) + )) ); } @@ -718,12 +735,12 @@ protected: boost::asio::async_write( socket_con_type::get_socket(), m_bufs, - lib::bind( + m_strand->wrap(lib::bind( &type::handle_async_write, get_shared(), handler, lib::placeholders::_1 - ) + )) ); } @@ -737,12 +754,12 @@ protected: boost::asio::async_write( socket_con_type::get_socket(), m_bufs, - lib::bind( + m_strand->wrap(lib::bind( &type::handle_async_write, get_shared(), handler, lib::placeholders::_1 - ) + )) ); } @@ -773,16 +790,14 @@ protected: /// Trigger the on_interrupt handler /** * This needs to be thread safe - * - * Might need a strand at some point? */ lib::error_code interrupt(interrupt_handler handler) { - m_io_service->post(handler); + m_io_service->post(m_strand->wrap(handler)); return lib::error_code(); } lib::error_code dispatch(dispatch_handler handler) { - m_io_service->post(handler); + m_io_service->post(m_strand->wrap(handler)); return lib::error_code(); } @@ -904,8 +919,10 @@ private: lib::shared_ptr m_proxy_data; // transport resources - io_service_ptr m_io_service; - connection_hdl m_connection_hdl; + io_service_ptr m_io_service; + strand_ptr m_strand; + connection_hdl m_connection_hdl; + std::vector m_bufs; // Handlers diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/endpoint.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/endpoint.hpp index 08bb2aab..e91dc58a 100644 --- a/src/third_party/websocketpp/websocketpp/transport/asio/endpoint.hpp +++ b/src/third_party/websocketpp/websocketpp/transport/asio/endpoint.hpp @@ -574,13 +574,12 @@ public: m_acceptor->async_accept( tcon->get_raw_socket(), - lib::bind( + tcon->get_strand()->wrap(lib::bind( &type::handle_accept, this, - tcon->get_handle(), callback, lib::placeholders::_1 - ) + )) ); } @@ -612,18 +611,19 @@ protected: m_elog = e; } - void handle_accept(connection_hdl hdl, accept_handler callback, - const boost::system::error_code& error) + void handle_accept(accept_handler callback, boost::system::error_code const + & boost_ec) { - if (error) { - //con->terminate(); - // TODO: Better translation of errors at this point - callback(hdl,make_error_code(error::pass_through)); - return; + lib::error_code ret_ec; + + m_alog->write(log::alevel::devel, "asio::handle_accept"); + + if (boost_ec) { + log_err(log::elevel::devel,"asio handle_accept",boost_ec); + ret_ec = make_error_code(error::pass_through); } - //con->start(); - callback(hdl,lib::error_code()); + callback(ret_ec); } /// Initiate a new connection @@ -649,13 +649,13 @@ protected: uri_ptr pu(new uri(proxy)); if (!pu->get_valid()) { - cb(tcon->get_handle(),make_error_code(error::proxy_invalid)); + cb(make_error_code(error::proxy_invalid)); return; } ec = tcon->proxy_init(u->get_authority()); if (ec) { - cb(tcon->get_handle(),ec); + cb(ec); return; } @@ -672,12 +672,11 @@ protected: timer_ptr dns_timer; - dns_timer = set_timer( + dns_timer = tcon->set_timer( config::timeout_dns_resolve, lib::bind( &type::handle_resolve_timeout, this, - tcon, dns_timer, cb, lib::placeholders::_1 @@ -686,7 +685,7 @@ protected: m_resolver->async_resolve( query, - lib::bind( + tcon->get_strand()->wrap(lib::bind( &type::handle_resolve, this, tcon, @@ -694,12 +693,12 @@ protected: cb, lib::placeholders::_1, lib::placeholders::_2 - ) + )) ); } - void handle_resolve_timeout(transport_con_ptr tcon, timer_ptr dns_timer, - connect_handler callback, const lib::error_code & ec) + void handle_resolve_timeout(timer_ptr dns_timer, connect_handler callback, + lib::error_code const & ec) { lib::error_code ret_ec; @@ -718,11 +717,11 @@ protected: m_alog->write(log::alevel::devel,"DNS resolution timed out"); m_resolver->cancel(); - callback(tcon->get_handle(),ret_ec); + callback(ret_ec); } void handle_resolve(transport_con_ptr tcon, timer_ptr dns_timer, - connect_handler callback, const boost::system::error_code& ec, + connect_handler callback, boost::system::error_code const & ec, boost::asio::ip::tcp::resolver::iterator iterator) { if (ec == boost::asio::error::operation_aborted || @@ -736,7 +735,7 @@ protected: if (ec) { log_err(log::elevel::info,"asio async_resolve",ec); - callback(tcon->get_handle(),make_error_code(error::pass_through)); + callback(make_error_code(error::pass_through)); return; } @@ -756,10 +755,10 @@ protected: timer_ptr con_timer; - con_timer = set_timer( + con_timer = tcon->set_timer( config::timeout_connect, lib::bind( - &type::handle_resolve_timeout, + &type::handle_connect_timeout, this, tcon, con_timer, @@ -771,19 +770,19 @@ protected: boost::asio::async_connect( tcon->get_raw_socket(), iterator, - lib::bind( + tcon->get_strand()->wrap(lib::bind( &type::handle_connect, this, tcon, con_timer, callback, lib::placeholders::_1 - ) + )) ); } void handle_connect_timeout(transport_con_ptr tcon, timer_ptr con_timer, - connect_handler callback, const lib::error_code & ec) + connect_handler callback, lib::error_code const & ec) { lib::error_code ret_ec; @@ -802,11 +801,11 @@ protected: m_alog->write(log::alevel::devel,"TCP connect timed out"); tcon->cancel_socket(); - callback(tcon->get_handle(),ret_ec); + callback(ret_ec); } void handle_connect(transport_con_ptr tcon, timer_ptr con_timer, - connect_handler callback, const boost::system::error_code& ec) + connect_handler callback, boost::system::error_code const & ec) { if (ec == boost::asio::error::operation_aborted || con_timer->expires_from_now().is_negative()) @@ -819,7 +818,7 @@ protected: if (ec) { log_err(log::elevel::info,"asio async_connect",ec); - callback(tcon->get_handle(),make_error_code(error::pass_through)); + callback(make_error_code(error::pass_through)); return; } @@ -828,7 +827,7 @@ protected: "Async connect to "+tcon->get_remote_endpoint()+" successful."); } - callback(tcon->get_handle(),lib::error_code()); + callback(lib::error_code()); } bool is_listening() const { diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/security/none.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/security/none.hpp index 19d9bf60..1c9486fa 100644 --- a/src/third_party/websocketpp/websocketpp/transport/asio/security/none.hpp +++ b/src/third_party/websocketpp/websocketpp/transport/asio/security/none.hpp @@ -58,6 +58,8 @@ public: /// Type of a pointer to the ASIO io_service being used typedef boost::asio::io_service* io_service_ptr; + /// Type of a pointer to the ASIO io_service strand being used + typedef lib::shared_ptr strand_ptr; /// Type of a shared pointer to the socket being used. typedef lib::shared_ptr socket_ptr; @@ -152,7 +154,9 @@ protected: * @param strand A shared pointer to the connection's asio strand * @param is_server Whether or not the endpoint is a server or not. */ - lib::error_code init_asio (io_service_ptr service, bool is_server) { + lib::error_code init_asio (io_service_ptr service, strand_ptr strand, + bool is_server) + { if (m_state != UNINITIALIZED) { return socket::make_error_code(socket::error::invalid_state); } diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/security/tls.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/security/tls.hpp index 1d6ab7e2..d7da561e 100644 --- a/src/third_party/websocketpp/websocketpp/transport/asio/security/tls.hpp +++ b/src/third_party/websocketpp/websocketpp/transport/asio/security/tls.hpp @@ -68,6 +68,8 @@ public: typedef lib::shared_ptr socket_ptr; /// Type of a pointer to the ASIO io_service being used typedef boost::asio::io_service* io_service_ptr; + /// Type of a pointer to the ASIO io_service strand being used + typedef lib::shared_ptr strand_ptr; /// Type of a shared pointer to the ASIO TLS context being used typedef lib::shared_ptr context_ptr; @@ -174,9 +176,12 @@ protected: * boost::asio components to the io_service * * @param service A pointer to the endpoint's io_service + * @param strand A pointer to the connection's strand * @param is_server Whether or not the endpoint is a server or not. */ - lib::error_code init_asio (io_service_ptr service, bool is_server) { + lib::error_code init_asio (io_service_ptr service, strand_ptr strand, + bool is_server) + { if (!m_tls_init_handler) { return socket::make_error_code(socket::error::missing_tls_init_handler); } @@ -188,6 +193,7 @@ protected: m_socket.reset(new socket_type(*service,*m_context)); m_io_service = service; + m_strand = strand; m_is_server = is_server; return lib::error_code(); @@ -224,12 +230,12 @@ protected: // TLS handshake m_socket->async_handshake( get_handshake_type(), - lib::bind( + m_strand->wrap(lib::bind( &type::handle_init, get_shared(), callback, lib::placeholders::_1 - ) + )) ); } @@ -278,6 +284,7 @@ private: } io_service_ptr m_io_service; + strand_ptr m_strand; context_ptr m_context; socket_ptr m_socket; bool m_is_server; diff --git a/src/third_party/websocketpp/websocketpp/transport/base/endpoint.hpp b/src/third_party/websocketpp/websocketpp/transport/base/endpoint.hpp index df1dc45a..1fefd483 100644 --- a/src/third_party/websocketpp/websocketpp/transport/base/endpoint.hpp +++ b/src/third_party/websocketpp/websocketpp/transport/base/endpoint.hpp @@ -71,12 +71,10 @@ namespace websocketpp { namespace transport { /// The type and signature of the callback passed to the accept method -typedef lib::function - accept_handler; +typedef lib::function accept_handler; /// The type and signature of the callback passed to the connect method -typedef lib::function - connect_handler; +typedef lib::function connect_handler; } // namespace transport } // namespace websocketpp diff --git a/src/third_party/websocketpp/websocketpp/transport/iostream/endpoint.hpp b/src/third_party/websocketpp/websocketpp/transport/iostream/endpoint.hpp index 91ea6fcf..ff37866d 100644 --- a/src/third_party/websocketpp/websocketpp/transport/iostream/endpoint.hpp +++ b/src/third_party/websocketpp/websocketpp/transport/iostream/endpoint.hpp @@ -141,7 +141,7 @@ protected: * @param cb The function to call back with the results when complete. */ void async_connect(transport_con_ptr tcon, uri_ptr u, connect_handler cb) { - cb(tcon->get_handle(),lib::error_code()); + cb(lib::error_code()); } /// Initialize a connection diff --git a/src/third_party/websocketpp/websocketpp/uri.hpp b/src/third_party/websocketpp/websocketpp/uri.hpp index 2bfa1f7c..b0c7f38f 100644 --- a/src/third_party/websocketpp/websocketpp/uri.hpp +++ b/src/third_party/websocketpp/websocketpp/uri.hpp @@ -138,7 +138,10 @@ public: std::string port = ""; while (state == 1) { if (it == uri.end()) { - state = 3; + // state is not used after this point presently. + // this should be re-enabled if it ever is needed in a future + // refactoring + //state = 3; break; } else if (*it == '/') { state = 3; diff --git a/src/third_party/websocketpp/websocketpp/utf8_validator.hpp b/src/third_party/websocketpp/websocketpp/utf8_validator.hpp index b0c56644..528ede18 100644 --- a/src/third_party/websocketpp/websocketpp/utf8_validator.hpp +++ b/src/third_party/websocketpp/websocketpp/utf8_validator.hpp @@ -1,5 +1,30 @@ -// Copyright (c) 2008-2009 Bjoern Hoehrmann -// See http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details. +/* + * The following code is adapted from code originally written by Bjoern + * Hoehrmann . See + * http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ for details. + * + * The original license: + * + * Copyright (c) 2008-2009 Bjoern Hoehrmann + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ #ifndef UTF8_VALIDATOR_HPP #define UTF8_VALIDATOR_HPP diff --git a/src/third_party/websocketpp/websocketpp/version.hpp b/src/third_party/websocketpp/websocketpp/version.hpp index 6c77010b..e6c9cbf7 100644 --- a/src/third_party/websocketpp/websocketpp/version.hpp +++ b/src/third_party/websocketpp/websocketpp/version.hpp @@ -50,10 +50,10 @@ static int const patch_version = 0; * This is a textual flag indicating the type and number for pre-release * versions (dev, alpha, beta, rc). This will be blank for release versions. */ -static char const prerelease_flag[] = "alpha3"; +static char const prerelease_flag[] = "alpha4"; /// Default user agent string -static char const user_agent[] = "WebSocket++/0.3.0-alpha3"; +static char const user_agent[] = "WebSocket++/0.3.0-alpha4"; } // namespace websocketpp From dfea01882bd23a7e15cf7375888f811be36140c3 Mon Sep 17 00:00:00 2001 From: doitux Date: Sat, 12 Oct 2013 00:41:46 +0200 Subject: [PATCH 090/128] bugfix for #203 local game menu bug --- src/gui/qt/gametable/gametableimpl.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp index 464e7cf4..c86db229 100755 --- a/src/gui/qt/gametable/gametableimpl.cpp +++ b/src/gui/qt/gametable/gametableimpl.cpp @@ -3543,6 +3543,7 @@ void gameTableImpl::localGameModification() //let the SoundEventHandler know that there is a new game mySoundEventHandler->newGameStarts(); + spectatorIcon->hide(); } void gameTableImpl::networkGameModification() @@ -3592,7 +3593,7 @@ void gameTableImpl::networkGameModification() myGameTableStyle->setBreakButtonStyle(pushButton_break,0); #endif blinkingStartButtonAnimationTimer->stop(); - + spectatorIcon->show(); refreshSpectatorsDisplay(); } if(myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_NETWORK) { @@ -3601,6 +3602,7 @@ void gameTableImpl::networkGameModification() #else pushButton_break->hide(); #endif + spectatorIcon->hide(); } //Set the playing mode to "manual" #ifdef GUI_800x480 @@ -3627,8 +3629,6 @@ void gameTableImpl::networkGameModification() //let the SoundEventHandler know that there is a new game mySoundEventHandler->newGameStarts(); - - //check if there are spectators } void gameTableImpl::mouseOverFlipCards(bool front) From 2d1aca523f7490529149a1e3cac327c48999b17c Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 12 Oct 2013 11:14:13 +0200 Subject: [PATCH 091/128] Incrementing beta-revision to prepare 1.1 beta2. --- src/game_defs.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/game_defs.h b/src/game_defs.h index 28d63406..8083b53e 100644 --- a/src/game_defs.h +++ b/src/game_defs.h @@ -45,8 +45,8 @@ #define POKERTH_VERSION_MINOR 10 #define POKERTH_VERSION ((POKERTH_VERSION_MAJOR << 8) | POKERTH_VERSION_MINOR) -#define POKERTH_BETA_REVISION 1 -#define POKERTH_BETA_RELEASE_STRING "1.1 beta1" +#define POKERTH_BETA_REVISION 2 +#define POKERTH_BETA_RELEASE_STRING "1.1 beta2" #define SQLITE_LOG_VERSION 1 From 881e76921c9b2f48979205572f328aeb6565094d Mon Sep 17 00:00:00 2001 From: doitux Date: Sat, 12 Oct 2013 15:47:35 +0200 Subject: [PATCH 092/128] changelog for beta2 --- ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ChangeLog b/ChangeLog index 980bd8d4..7e0cf57d 100755 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-10-12 version 1.1 beta2 +- BUGFIX: Now you are able to click the menu buttons during a local game again (#203) +- BUGFIX: Idle players are shown correctly if they join YOUR game (#198) +- Updating websocket++ to latest github release (0.3 alpha4) + 2013-10-06 version 1.1 beta1 - New web-based spectator mode on http://www.pokerth.net/live (#37) - Show list of spectators in the lobby and on the game table (#196) From c63180a7afaa77186b2aa7cf7f32bf6aca3f6f22 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Sun, 13 Oct 2013 18:28:55 +0200 Subject: [PATCH 093/128] fix "recieve" typo in various places --- src/third_party/websocketpp/websocketpp/close.hpp | 2 +- .../websocketpp/websocketpp/impl/connection_impl.hpp | 2 +- ts/pokerth_ca.ts | 4 ++-- ts/pokerth_cz.ts | 4 ++-- ts/pokerth_ta.ts | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/third_party/websocketpp/websocketpp/close.hpp b/src/third_party/websocketpp/websocketpp/close.hpp index 107b345d..d0e87663 100644 --- a/src/third_party/websocketpp/websocketpp/close.hpp +++ b/src/third_party/websocketpp/websocketpp/close.hpp @@ -197,7 +197,7 @@ union code_converter { * * If the value is in an invalid or reserved range ec is set accordingly. * - * @param [in] payload Close frame payload value recieved over the wire. + * @param [in] payload Close frame payload value received over the wire. * @param [out] ec Set to indicate what error occurred, if any. * @return The extracted value */ diff --git a/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp b/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp index 9932ca64..980e2ecc 100644 --- a/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp +++ b/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp @@ -624,7 +624,7 @@ void connection::handle_transport_init(lib::error_code const & ec) { if (ec) { std::stringstream s; - s << "handle_transport_init recieved error: "<< ec.message(); + s << "handle_transport_init received error: "<< ec.message(); m_elog.write(log::elevel::fatal,s.str()); this->terminate(ec); diff --git a/ts/pokerth_ca.ts b/ts/pokerth_ca.ts index 1900114f..7d54ae1b 100644 --- a/ts/pokerth_ca.ts +++ b/ts/pokerth_ca.ts @@ -473,7 +473,7 @@ Please verify that you are uploading a valid PokerTH log file. Esteu segur que voleu denunciar l'avatar de "%1" com a offensiu?
- You will no longer recieve chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? No rebreu més missatges del xat o invitacions de partides d'aquest usuari.<br>Realment voleu posar el jugador <b>%1</b> a la llista per ignorar? @@ -3457,7 +3457,7 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist <span style='color:red;'>El jugador %1 no pot unir-se a %2 perquè està ocupat.</span> - You will no longer recieve chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? No rebreu més missatges del xat o invitacions de partides d'aquest usuari.<br>Realment voleu posar el jugador <b>%1</b> a la llista per ignorar? diff --git a/ts/pokerth_cz.ts b/ts/pokerth_cz.ts index 5df721e7..0c260dbc 100644 --- a/ts/pokerth_cz.ts +++ b/ts/pokerth_cz.ts @@ -465,7 +465,7 @@ Zkontrolujte, že jste nahrávali platný PokerTH soubor záznamů.Ignorovat hráče - You will no longer recieve chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Od toho hráče již nebudete dostávat zprávy, ani pozvánky do hry.<br>Opravdu chcete přidat hráče <b>%1</b> do ignore listu? @@ -2250,7 +2250,7 @@ Ostatní hráče můžete pozvat kliknutím pravým tlačítkem na jejich přezd <span style='color:red;'>Hráč %1 se nemůže připojit do hry %2, protože je zaneprázdněn.</span> - You will no longer recieve chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Od tohoto uživatele již nebudete přijímat žádné zprávy, ani pozvánky do her.<br>Opravdu chcete přidat uživatele <b>%1</b> do ignore listu? diff --git a/ts/pokerth_ta.ts b/ts/pokerth_ta.ts index 960a73bd..ff865f1c 100644 --- a/ts/pokerth_ta.ts +++ b/ts/pokerth_ta.ts @@ -456,7 +456,7 @@ Please verify that you are uploading a valid PokerTH log file. - You will no longer recieve chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? இந்த நபரிடமிருந்து இனி பேச்சு தகவலோ விளையாடுவதற்கு அழைப்பிதலோ பெற முடியாது.<br>இருந்தும் இந்த விளையாட்டு வீரரை <b>%1</b> புறக்கணிப்பு பட்டியலில் போட விரும்புகிறீர்களா? @@ -3110,7 +3110,7 @@ You can invite other players with right-click on their nick in the left availabl <span style='color:red;'>விளையாட்டு வீரர் %1 %2 விளையாட்டில் ஏனெனில் அவர் வேறொரு வேலையில் மும்முரமாக.</span> - You will no longer recieve chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? இனிமேல் இந்த நபரிடமிருந்து உரையாடல் செய்தியோ விளையாட்டு அழைப்பிதலோ பெற முடியாது.<br>நீங்கள் இந்த விளையாட்டு வீரரை <b>%1</b> புறக்கணிப்பு பட்டியலில் போட விரும்புகிறீர்களா? From aea8a6c2e9f978e9456fda1ad51aca089630cb13 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 20 Oct 2013 19:06:53 +0200 Subject: [PATCH 094/128] Allow spectators to join invite-only games (for now) #214 --- src/net/common/serverlobbythread.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 0dba087c..5a88f5b3 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -1375,7 +1375,8 @@ ServerLobbyThread::HandleNetPacketJoinGame(boost::shared_ptr sessio && tmpData.gameType != GAME_TYPE_NORMAL && !joinGame.spectateonly()) { SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_GUEST_FORBIDDEN); } else if (tmpData.gameType == GAME_TYPE_INVITE_ONLY - && !game->IsPlayerInvited(session->GetPlayerData()->GetUniqueId())) { + && !game->IsPlayerInvited(session->GetPlayerData()->GetUniqueId()) + && !joinGame.spectateonly()) { SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_NOT_INVITED); } else if (!game->CheckPassword(password)) { SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_INVALID_PASSWORD); From 4647ceb452bc37e22652e387f63cec8176f1ab5c Mon Sep 17 00:00:00 2001 From: doitux Date: Thu, 24 Oct 2013 09:12:51 +0200 Subject: [PATCH 095/128] gui preparation for allow spectators flag #215 --- src/config/configfile.cpp | 3 +- src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp | 2 +- src/gui/qt/createinternetgamedialog.ui | 53 +++- .../createinternetgamedialogimpl.cpp | 10 +- .../gamelobbydialog/gamelobbydialogimpl.cpp | 3 +- .../createinternetgamedialog_800x480.ui | 241 ++++++++++-------- .../qt/gui_800x480/settingsdialog_800x480.ui | 27 +- src/gui/qt/settingsdialog.ui | 9 +- .../qt/settingsdialog/settingsdialogimpl.cpp | 3 +- src/gui/qt/startwindow/startwindowimpl.cpp | 2 +- 10 files changed, 212 insertions(+), 141 deletions(-) diff --git a/src/config/configfile.cpp b/src/config/configfile.cpp index f6285dbe..3d9d1e74 100644 --- a/src/config/configfile.cpp +++ b/src/config/configfile.cpp @@ -64,7 +64,7 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly) myConfigState = OK; // !!!! Revisionsnummer der Configdefaults !!!!! - configRev = 102; + configRev = 103; //standard defaults logOnOffDefault = "1"; @@ -242,6 +242,7 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly) configList.push_back(ConfigInfo("InternetGamePassword", CONFIG_TYPE_STRING, "")); configList.push_back(ConfigInfo("InternetGameType", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("InternetGameName", CONFIG_TYPE_STRING, "My Online Game")); + configList.push_back(ConfigInfo("InternetGameAllowSpectators", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("UseLobbyChat", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("UseAdminIRC", CONFIG_TYPE_INT, "0")); configList.push_back(ConfigInfo("AdminIRCServerAddress", CONFIG_TYPE_STRING, "chat.freenode.net")); diff --git a/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp b/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp index d342c14e..71f38cdd 100755 --- a/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp +++ b/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp @@ -35,7 +35,7 @@ #ifdef ANDROID #ifndef ANDROID_TEST -#include "QtGui/5.1.1/QtGui/qpa/qplatformnativeinterface.h" +#include "QtGui/5.2.0/QtGui/qpa/qplatformnativeinterface.h" #include #endif #endif diff --git a/src/gui/qt/createinternetgamedialog.ui b/src/gui/qt/createinternetgamedialog.ui index f676c8f3..1fa3d32e 100644 --- a/src/gui/qt/createinternetgamedialog.ui +++ b/src/gui/qt/createinternetgamedialog.ui @@ -6,8 +6,8 @@ 0 0 - 303 - 390 + 293 + 410 @@ -100,7 +100,16 @@ 6 - + + 0 + + + 0 + + + 0 + + 0 @@ -126,14 +135,14 @@ - + Qt::Horizontal - + Maximum number of players: @@ -143,7 +152,7 @@ - + 2 @@ -156,7 +165,7 @@ - + Start Cash: @@ -166,7 +175,7 @@ - + @@ -188,7 +197,7 @@ - + Blinds @@ -217,7 +226,7 @@ - + @@ -233,7 +242,7 @@ - + s @@ -249,7 +258,7 @@ - + Delay between hands: @@ -259,7 +268,7 @@ - + @@ -281,6 +290,13 @@ + + + + Allow spectators to watch the game + + + @@ -289,7 +305,16 @@ 6 - + + 0 + + + 0 + + + 0 + + 0 diff --git a/src/gui/qt/createinternetgamedialog/createinternetgamedialogimpl.cpp b/src/gui/qt/createinternetgamedialog/createinternetgamedialogimpl.cpp index 0ae6fe04..7254ab23 100644 --- a/src/gui/qt/createinternetgamedialog/createinternetgamedialogimpl.cpp +++ b/src/gui/qt/createinternetgamedialog/createinternetgamedialogimpl.cpp @@ -164,6 +164,8 @@ void createInternetGameDialogImpl::gameTypeChanged() radioButton_changeBlindsSettings->show(); startBlind->hide(); raiseMode->hide(); + checkBox_allowSpectators->setEnabled(true); + checkBox_allowSpectators->setChecked(myConfig->readConfigInt("InternetGameAllowSpectators")); } break; @@ -177,6 +179,8 @@ void createInternetGameDialogImpl::gameTypeChanged() radioButton_changeBlindsSettings->show(); startBlind->hide(); raiseMode->hide(); + checkBox_allowSpectators->setEnabled(true); + checkBox_allowSpectators->setChecked(myConfig->readConfigInt("InternetGameAllowSpectators")); } break; case GAME_TYPE_INVITE_ONLY-1: { @@ -190,7 +194,8 @@ void createInternetGameDialogImpl::gameTypeChanged() radioButton_changeBlindsSettings->show(); startBlind->hide(); raiseMode->hide(); - + checkBox_allowSpectators->setEnabled(true); + checkBox_allowSpectators->setChecked(myConfig->readConfigInt("InternetGameAllowSpectators")); } break; case GAME_TYPE_RANKING-1: { @@ -205,7 +210,8 @@ void createInternetGameDialogImpl::gameTypeChanged() radioButton_changeBlindsSettings->hide(); startBlind->show(); raiseMode->show(); - + checkBox_allowSpectators->setDisabled(true); + checkBox_allowSpectators->setChecked(true); } break; } diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 0b9ab25e..5e55f775 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -382,10 +382,9 @@ void gameLobbyDialogImpl::createGame() label_SmallBlind->setText(QString("%L1").arg(gameData.firstSmallBlind)); label_StartCash->setText(QString("%L1").arg(gameData.startMoney)); - updateDialogBlinds(gameData); - label_GameTiming->setText(QString::number(gameData.playerActionTimeoutSec)+" "+tr("sec (action)")+"\n"+QString::number(gameData.delayBetweenHandsSec)+" "+tr("sec (hand delay)")); +// TODO gameData.allowSpectators = myCreateInternetGameDialog->checkBox_allowSpectators->isChecked(); mySession->clientCreateGame(gameData, currentGameName.toUtf8().constData(), myCreateInternetGameDialog->lineEdit_Password->text().toUtf8().constData()); diff --git a/src/gui/qt/gui_800x480/createinternetgamedialog_800x480.ui b/src/gui/qt/gui_800x480/createinternetgamedialog_800x480.ui index dac0424f..6b6d395f 100644 --- a/src/gui/qt/gui_800x480/createinternetgamedialog_800x480.ui +++ b/src/gui/qt/gui_800x480/createinternetgamedialog_800x480.ui @@ -85,45 +85,45 @@ 0 - 7 + 4 - - + + - + 0 0 - - - - Default game name: + Maximum number of players: - + + + + 0 + 0 + + - 400 + 150 0 - - - 16777215 - 16777215 - + + 2 - - Qt::ImhNoPredictiveText + + 10 - - 48 + + 10 @@ -198,7 +198,7 @@ - + Blinds @@ -233,7 +233,7 @@ - + 10 @@ -298,7 +298,103 @@ - + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + Password: + + + + 32 + 32 + + + + + + + + false + + + + 400 + 0 + + + + QLineEdit::Password + + + + + + + + + + + + 0 + 0 + + + + + + + Default game name: + + + + + + + + 400 + 0 + + + + + 16777215 + 16777215 + + + + Qt::ImhNoPredictiveText + + + 48 + + + + + + @@ -349,92 +445,12 @@ - - - - 6 - - - 0 - - - - - - 0 - 0 - - - - Password: - - - - 32 - 32 - - - - - - - - false - - - - 400 - 0 - - - - QLineEdit::Password - - - - - - - - - - - 0 - 0 - - - - Maximum number of players: - - - - - - - - 0 - 0 - - - - - 150 - 0 - - - - 2 - - - 10 - - - 10 - - - - + + + Allow spectators to watch the game + + @@ -472,7 +488,16 @@ 0 - + + 0 + + + 0 + + + 0 + + 0 diff --git a/src/gui/qt/gui_800x480/settingsdialog_800x480.ui b/src/gui/qt/gui_800x480/settingsdialog_800x480.ui index 80b45ad0..54a1f2d5 100644 --- a/src/gui/qt/gui_800x480/settingsdialog_800x480.ui +++ b/src/gui/qt/gui_800x480/settingsdialog_800x480.ui @@ -1835,7 +1835,7 @@ p, li { white-space: pre-wrap; } - 1 + 0 @@ -2075,6 +2075,20 @@ p, li { white-space: pre-wrap; } + + + + Show lobby chat + + + + + + + Automatically leave the table after the game finished + + + @@ -2161,16 +2175,9 @@ p, li { white-space: pre-wrap; } - + - Show lobby chat - - - - - - - Automatically leave the table after the game finished + Allow spectators to watch the game diff --git a/src/gui/qt/settingsdialog.ui b/src/gui/qt/settingsdialog.ui index a6626c07..71067bcb 100644 --- a/src/gui/qt/settingsdialog.ui +++ b/src/gui/qt/settingsdialog.ui @@ -1885,7 +1885,7 @@ p, li { white-space: pre-wrap; } - + Qt::Vertical @@ -1905,6 +1905,13 @@ p, li { white-space: pre-wrap; } + + + + Allow spectators to watch the game + + + diff --git a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp index f764530a..27f4c528 100644 --- a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp +++ b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp @@ -273,6 +273,7 @@ void settingsDialogImpl::prepareDialog() QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget_internetGameIgnoredPlayers); item->setText(0, QString::fromUtf8(it5->c_str())); } + checkBox_allowSpectators->setChecked(myConfig->readConfigInt("InternetGameAllowSpectators")); //Interface comboBox_switchLanguage->setCurrentIndex(comboBox_switchLanguage->findData(QString::fromUtf8(myConfig->readConfigString("Language").c_str()).section('_', 0, 0))); @@ -721,7 +722,7 @@ void settingsDialogImpl::isAccepted() playerIgnoreList.push_back(QString("%1").arg(treeWidget_internetGameIgnoredPlayers->topLevelItem(k)->text(0)).toUtf8().constData()); } myConfig->writeConfigStringList("PlayerIgnoreList", playerIgnoreList); - + myConfig->writeConfigInt("InternetGameAllowSpectators", checkBox_allowSpectators->isChecked()); // Interface myConfig->writeConfigString("Language", comboBox_switchLanguage->itemData(comboBox_switchLanguage->currentIndex()).toString().toUtf8().constData()); diff --git a/src/gui/qt/startwindow/startwindowimpl.cpp b/src/gui/qt/startwindow/startwindowimpl.cpp index 41004c23..8c4149dc 100644 --- a/src/gui/qt/startwindow/startwindowimpl.cpp +++ b/src/gui/qt/startwindow/startwindowimpl.cpp @@ -61,7 +61,7 @@ #ifdef ANDROID #ifndef ANDROID_TEST -#include "QtGui/5.1.1/QtGui/qpa/qplatformnativeinterface.h" +#include "QtGui/5.2.0/QtGui/qpa/qplatformnativeinterface.h" #include #endif #endif From 11a45cd6d6d78bed2e716e5786452172ce1622d8 Mon Sep 17 00:00:00 2001 From: doitux Date: Thu, 24 Oct 2013 09:35:00 +0200 Subject: [PATCH 096/128] fix a typo --- src/gui/qt/gui_800x480/settingsdialog_800x480.ui | 2 +- src/gui/qt/settingsdialog.ui | 2 +- src/gui/qt/settingsdialog/settingsdialogimpl.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gui/qt/gui_800x480/settingsdialog_800x480.ui b/src/gui/qt/gui_800x480/settingsdialog_800x480.ui index 54a1f2d5..f0acae58 100644 --- a/src/gui/qt/gui_800x480/settingsdialog_800x480.ui +++ b/src/gui/qt/gui_800x480/settingsdialog_800x480.ui @@ -2083,7 +2083,7 @@ p, li { white-space: pre-wrap; } - + Automatically leave the table after the game finished diff --git a/src/gui/qt/settingsdialog.ui b/src/gui/qt/settingsdialog.ui index 71067bcb..de3ec349 100644 --- a/src/gui/qt/settingsdialog.ui +++ b/src/gui/qt/settingsdialog.ui @@ -1899,7 +1899,7 @@ p, li { white-space: pre-wrap; } - + Automatically leave the table after the game finished diff --git a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp index 27f4c528..87d37efe 100644 --- a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp +++ b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp @@ -257,7 +257,7 @@ void settingsDialogImpl::prepareDialog() lineEdit_InternetGamePassword->setText(QString::fromUtf8(myConfig->readConfigString("InternetGamePassword").c_str())); } checkBox_UseLobbyChat->setChecked(myConfig->readConfigInt("UseLobbyChat")); - checkBox_InetGane_AutoLeaveTheTableAfterGameFinished->setChecked(myConfig->readConfigInt("NetAutoLeaveGameAfterFinish")); + checkBox_InetGame_AutoLeaveTheTableAfterGameFinished->setChecked(myConfig->readConfigInt("NetAutoLeaveGameAfterFinish")); comboBox_internetGameType->setCurrentIndex(myConfig->readConfigInt("InternetGameType")); lineEdit_internetGameName->setText(QString::fromUtf8(myConfig->readConfigString("InternetGameName").c_str())); if(myConfig->readConfigInt("InternetServerConfigMode")) { @@ -712,7 +712,7 @@ void settingsDialogImpl::isAccepted() myConfig->writeConfigInt("UseInternetGamePassword", checkBox_UseInternetGamePassword->isChecked()); myConfig->writeConfigString("InternetGamePassword", lineEdit_InternetGamePassword->text().toUtf8().constData()); myConfig->writeConfigInt("UseLobbyChat", checkBox_UseLobbyChat->isChecked()); - myConfig->writeConfigInt("NetAutoLeaveGameAfterFinish", checkBox_InetGane_AutoLeaveTheTableAfterGameFinished->isChecked()); + myConfig->writeConfigInt("NetAutoLeaveGameAfterFinish", checkBox_InetGame_AutoLeaveTheTableAfterGameFinished->isChecked()); myConfig->writeConfigInt("InternetGameType", comboBox_internetGameType->currentIndex()); myConfig->writeConfigString("InternetGameName", lineEdit_internetGameName->text().toUtf8().constData()); From 6992c732af767431c25fd79616b104ab0f98602c Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 27 Oct 2013 00:41:13 +0200 Subject: [PATCH 097/128] Preparing "allow spectators" flag in network protocol (#215). --- pokerth.proto | 1 + src/gamedata.h | 13 +-- .../gamelobbydialog/gamelobbydialogimpl.cpp | 2 +- src/net/common/netpacket.cpp | 2 + src/net/common/servergame.cpp | 3 +- src/third_party/protobuf/pokerth.pb.cc | 33 ++++++++ src/third_party/protobuf/pokerth.pb.h | 34 +++++++- tests/src/de/pokerth/protocol/ProtoBuf.java | 81 +++++++++++++++++++ 8 files changed, 160 insertions(+), 9 deletions(-) diff --git a/pokerth.proto b/pokerth.proto index 169ca5da..04e4f2a1 100644 --- a/pokerth.proto +++ b/pokerth.proto @@ -110,6 +110,7 @@ message NetGameInfo { required uint32 firstSmallBlind = 12; required uint32 startMoney = 13; repeated uint32 manualBlinds = 14 [packed = true]; + optional bool allowSpectators = 15 [default = true]; } // Message Part containing player result. diff --git a/src/gamedata.h b/src/gamedata.h index cb5a463a..9f7586ed 100644 --- a/src/gamedata.h +++ b/src/gamedata.h @@ -72,13 +72,14 @@ enum AfterManualBlindsMode { // For the sake of simplicity, this is a struct. struct GameData { - GameData() : gameType(GAME_TYPE_NORMAL), maxNumberOfPlayers(0), startMoney(0), - firstSmallBlind(0), raiseIntervalMode(RAISE_ON_HANDNUMBER), - raiseSmallBlindEveryHandsValue(8), raiseSmallBlindEveryMinutesValue(1), - raiseMode(DOUBLE_BLINDS), afterManualBlindsMode(AFTERMB_DOUBLE_BLINDS), - afterMBAlwaysRaiseValue(0), guiSpeed(4), delayBetweenHandsSec(6), - playerActionTimeoutSec(20) {} + GameData() : gameType(GAME_TYPE_NORMAL), allowSpectators(true), + maxNumberOfPlayers(0), startMoney(0), firstSmallBlind(0), + raiseIntervalMode(RAISE_ON_HANDNUMBER), raiseSmallBlindEveryHandsValue(8), + raiseSmallBlindEveryMinutesValue(1), raiseMode(DOUBLE_BLINDS), + afterManualBlindsMode(AFTERMB_DOUBLE_BLINDS), afterMBAlwaysRaiseValue(0), + guiSpeed(4), delayBetweenHandsSec(6), playerActionTimeoutSec(20) {} GameType gameType; + bool allowSpectators; int maxNumberOfPlayers; int startMoney; int firstSmallBlind; diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 5e55f775..29b16437 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -352,6 +352,7 @@ void gameLobbyDialogImpl::createGame() gameData.delayBetweenHandsSec = myCreateInternetGameDialog->spinBox_netDelayBetweenHands->value(); gameData.playerActionTimeoutSec = myCreateInternetGameDialog->spinBox_netTimeOutPlayerAction->value(); gameData.gameType = GameType(myCreateInternetGameDialog->comboBox_gameType->itemData(myCreateInternetGameDialog->comboBox_gameType->currentIndex(), Qt::UserRole).toInt()); + gameData.allowSpectators = myCreateInternetGameDialog->checkBox_allowSpectators->isChecked(); currentGameName = myCreateInternetGameDialog->lineEdit_gameName->text().simplified(); @@ -384,7 +385,6 @@ void gameLobbyDialogImpl::createGame() label_StartCash->setText(QString("%L1").arg(gameData.startMoney)); updateDialogBlinds(gameData); label_GameTiming->setText(QString::number(gameData.playerActionTimeoutSec)+" "+tr("sec (action)")+"\n"+QString::number(gameData.delayBetweenHandsSec)+" "+tr("sec (hand delay)")); -// TODO gameData.allowSpectators = myCreateInternetGameDialog->checkBox_allowSpectators->isChecked(); mySession->clientCreateGame(gameData, currentGameName.toUtf8().constData(), myCreateInternetGameDialog->lineEdit_Password->text().toUtf8().constData()); diff --git a/src/net/common/netpacket.cpp b/src/net/common/netpacket.cpp index 1385724e..c07cc7a7 100644 --- a/src/net/common/netpacket.cpp +++ b/src/net/common/netpacket.cpp @@ -98,6 +98,7 @@ void NetPacket::SetGameData(const GameData &inData, NetGameInfo &outData) { outData.set_netgametype(static_cast(inData.gameType)); + outData.set_allowspectators(inData.allowSpectators); outData.set_maxnumplayers(inData.maxNumberOfPlayers); outData.set_raiseintervalmode(static_cast(inData.raiseIntervalMode)); if (inData.raiseIntervalMode == RAISE_ON_HANDNUMBER) { @@ -124,6 +125,7 @@ NetPacket::GetGameData(const NetGameInfo &inData, GameData &outData) int numManualBlinds = inData.manualblinds_size(); outData.gameType = static_cast(inData.netgametype()); + outData.allowSpectators = inData.allowspectators(); outData.maxNumberOfPlayers = inData.maxnumplayers(); outData.raiseIntervalMode = static_cast(inData.raiseintervalmode()); outData.raiseSmallBlindEveryHandsValue = outData.raiseSmallBlindEveryMinutesValue = 0; diff --git a/src/net/common/servergame.cpp b/src/net/common/servergame.cpp index 592b5c35..bf7102b0 100644 --- a/src/net/common/servergame.cpp +++ b/src/net/common/servergame.cpp @@ -1144,7 +1144,8 @@ ServerGame::CheckSettings(const GameData &data, const string &password, ServerMo || (data.raiseIntervalMode != RAISE_ON_HANDNUMBER) || (data.raiseMode != DOUBLE_BLINDS) || (data.raiseSmallBlindEveryHandsValue != RANKING_GAME_RAISE_EVERY_HAND) - || (!password.empty())) { + || (!password.empty()) + || (!data.allowSpectators)) { retVal = false; } } diff --git a/src/third_party/protobuf/pokerth.pb.cc b/src/third_party/protobuf/pokerth.pb.cc index 02fd38af..50f6ea2a 100644 --- a/src/third_party/protobuf/pokerth.pb.cc +++ b/src/third_party/protobuf/pokerth.pb.cc @@ -465,6 +465,7 @@ const int NetGameInfo::kPlayerActionTimeoutFieldNumber; const int NetGameInfo::kFirstSmallBlindFieldNumber; const int NetGameInfo::kStartMoneyFieldNumber; const int NetGameInfo::kManualBlindsFieldNumber; +const int NetGameInfo::kAllowSpectatorsFieldNumber; #endif // !_MSC_VER NetGameInfo::NetGameInfo() @@ -496,6 +497,7 @@ void NetGameInfo::SharedCtor() { playeractiontimeout_ = 0u; firstsmallblind_ = 0u; startmoney_ = 0u; + allowspectators_ = true; ::memset(_has_bits_, 0, sizeof(_has_bits_)); } @@ -556,6 +558,7 @@ void NetGameInfo::Clear() { playeractiontimeout_ = 0u; firstsmallblind_ = 0u; startmoney_ = 0u; + allowspectators_ = true; } manualblinds_.Clear(); ::memset(_has_bits_, 0, sizeof(_has_bits_)); @@ -798,6 +801,22 @@ bool NetGameInfo::MergePartialFromCodedStream( } else { goto handle_uninterpreted; } + if (input->ExpectTag(120)) goto parse_allowSpectators; + break; + } + + // optional bool allowSpectators = 15 [default = true]; + case 15: { + if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) == + ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) { + parse_allowSpectators: + DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive< + bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>( + input, &allowspectators_))); + set_has_allowspectators(); + } else { + goto handle_uninterpreted; + } if (input->ExpectAtEnd()) return true; break; } @@ -898,6 +917,11 @@ void NetGameInfo::SerializeWithCachedSizes( this->manualblinds(i), output); } + // optional bool allowSpectators = 15 [default = true]; + if (has_allowspectators()) { + ::google::protobuf::internal::WireFormatLite::WriteBool(15, this->allowspectators(), output); + } + } int NetGameInfo::ByteSize() const { @@ -994,6 +1018,11 @@ int NetGameInfo::ByteSize() const { this->startmoney()); } + // optional bool allowSpectators = 15 [default = true]; + if (has_allowspectators()) { + total_size += 1 + 1; + } + } // repeated uint32 manualBlinds = 14 [packed = true]; { @@ -1068,6 +1097,9 @@ void NetGameInfo::MergeFrom(const NetGameInfo& from) { if (from.has_startmoney()) { set_startmoney(from.startmoney()); } + if (from.has_allowspectators()) { + set_allowspectators(from.allowspectators()); + } } } @@ -1099,6 +1131,7 @@ void NetGameInfo::Swap(NetGameInfo* other) { std::swap(firstsmallblind_, other->firstsmallblind_); std::swap(startmoney_, other->startmoney_); manualblinds_.Swap(&other->manualblinds_); + std::swap(allowspectators_, other->allowspectators_); std::swap(_has_bits_[0], other->_has_bits_[0]); std::swap(_cached_size_, other->_cached_size_); } diff --git a/src/third_party/protobuf/pokerth.pb.h b/src/third_party/protobuf/pokerth.pb.h index 7c8f0293..326abd18 100644 --- a/src/third_party/protobuf/pokerth.pb.h +++ b/src/third_party/protobuf/pokerth.pb.h @@ -746,6 +746,13 @@ class NetGameInfo : public ::google::protobuf::MessageLite { inline ::google::protobuf::RepeatedField< ::google::protobuf::uint32 >* mutable_manualblinds(); + // optional bool allowSpectators = 15 [default = true]; + inline bool has_allowspectators() const; + inline void clear_allowspectators(); + static const int kAllowSpectatorsFieldNumber = 15; + inline bool allowspectators() const; + inline void set_allowspectators(bool value); + // @@protoc_insertion_point(class_scope:NetGameInfo) private: inline void set_has_gamename(); @@ -774,6 +781,8 @@ class NetGameInfo : public ::google::protobuf::MessageLite { inline void clear_has_firstsmallblind(); inline void set_has_startmoney(); inline void clear_has_startmoney(); + inline void set_has_allowspectators(); + inline void clear_has_allowspectators(); ::std::string* gamename_; int netgametype_; @@ -790,9 +799,10 @@ class NetGameInfo : public ::google::protobuf::MessageLite { ::google::protobuf::uint32 startmoney_; ::google::protobuf::RepeatedField< ::google::protobuf::uint32 > manualblinds_; mutable int _manualblinds_cached_byte_size_; + bool allowspectators_; mutable int _cached_size_; - ::google::protobuf::uint32 _has_bits_[(14 + 31) / 32]; + ::google::protobuf::uint32 _has_bits_[(15 + 31) / 32]; #ifdef GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER friend void protobuf_AddDesc_pokerth_2eproto_impl(); @@ -11668,6 +11678,28 @@ NetGameInfo::mutable_manualblinds() { return &manualblinds_; } +// optional bool allowSpectators = 15 [default = true]; +inline bool NetGameInfo::has_allowspectators() const { + return (_has_bits_[0] & 0x00004000u) != 0; +} +inline void NetGameInfo::set_has_allowspectators() { + _has_bits_[0] |= 0x00004000u; +} +inline void NetGameInfo::clear_has_allowspectators() { + _has_bits_[0] &= ~0x00004000u; +} +inline void NetGameInfo::clear_allowspectators() { + allowspectators_ = true; + clear_has_allowspectators(); +} +inline bool NetGameInfo::allowspectators() const { + return allowspectators_; +} +inline void NetGameInfo::set_allowspectators(bool value) { + set_has_allowspectators(); + allowspectators_ = value; +} + // ------------------------------------------------------------------- // PlayerResult diff --git a/tests/src/de/pokerth/protocol/ProtoBuf.java b/tests/src/de/pokerth/protocol/ProtoBuf.java index 57e1a4ae..79c9946e 100644 --- a/tests/src/de/pokerth/protocol/ProtoBuf.java +++ b/tests/src/de/pokerth/protocol/ProtoBuf.java @@ -628,6 +628,16 @@ public final class ProtoBuf { * repeated uint32 manualBlinds = 14 [packed = true]; */ int getManualBlinds(int index); + + // optional bool allowSpectators = 15 [default = true]; + /** + * optional bool allowSpectators = 15 [default = true]; + */ + boolean hasAllowSpectators(); + /** + * optional bool allowSpectators = 15 [default = true]; + */ + boolean getAllowSpectators(); } /** * Protobuf type {@code NetGameInfo} @@ -770,6 +780,11 @@ public final class ProtoBuf { input.popLimit(limit); break; } + case 120: { + bitField0_ |= 0x00002000; + allowSpectators_ = input.readBool(); + break; + } } } } catch (com.google.protobuf.InvalidProtocolBufferException e) { @@ -1270,6 +1285,22 @@ public final class ProtoBuf { } private int manualBlindsMemoizedSerializedSize = -1; + // optional bool allowSpectators = 15 [default = true]; + public static final int ALLOWSPECTATORS_FIELD_NUMBER = 15; + private boolean allowSpectators_; + /** + * optional bool allowSpectators = 15 [default = true]; + */ + public boolean hasAllowSpectators() { + return ((bitField0_ & 0x00002000) == 0x00002000); + } + /** + * optional bool allowSpectators = 15 [default = true]; + */ + public boolean getAllowSpectators() { + return allowSpectators_; + } + private void initFields() { gameName_ = ""; netGameType_ = de.pokerth.protocol.ProtoBuf.NetGameInfo.NetGameType.normalGame; @@ -1285,6 +1316,7 @@ public final class ProtoBuf { firstSmallBlind_ = 0; startMoney_ = 0; manualBlinds_ = java.util.Collections.emptyList(); + allowSpectators_ = true; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -1384,6 +1416,9 @@ public final class ProtoBuf { for (int i = 0; i < manualBlinds_.size(); i++) { output.writeUInt32NoTag(manualBlinds_.get(i)); } + if (((bitField0_ & 0x00002000) == 0x00002000)) { + output.writeBool(15, allowSpectators_); + } } private int memoizedSerializedSize = -1; @@ -1458,6 +1493,10 @@ public final class ProtoBuf { } manualBlindsMemoizedSerializedSize = dataSize; } + if (((bitField0_ & 0x00002000) == 0x00002000)) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(15, allowSpectators_); + } memoizedSerializedSize = size; return size; } @@ -1577,6 +1616,8 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00001000); manualBlinds_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00002000); + allowSpectators_ = true; + bitField0_ = (bitField0_ & ~0x00004000); return this; } @@ -1657,6 +1698,10 @@ public final class ProtoBuf { bitField0_ = (bitField0_ & ~0x00002000); } result.manualBlinds_ = manualBlinds_; + if (((from_bitField0_ & 0x00004000) == 0x00004000)) { + to_bitField0_ |= 0x00002000; + } + result.allowSpectators_ = allowSpectators_; result.bitField0_ = to_bitField0_; return result; } @@ -1714,6 +1759,9 @@ public final class ProtoBuf { } } + if (other.hasAllowSpectators()) { + setAllowSpectators(other.getAllowSpectators()); + } return this; } @@ -2357,6 +2405,39 @@ public final class ProtoBuf { return this; } + // optional bool allowSpectators = 15 [default = true]; + private boolean allowSpectators_ = true; + /** + * optional bool allowSpectators = 15 [default = true]; + */ + public boolean hasAllowSpectators() { + return ((bitField0_ & 0x00004000) == 0x00004000); + } + /** + * optional bool allowSpectators = 15 [default = true]; + */ + public boolean getAllowSpectators() { + return allowSpectators_; + } + /** + * optional bool allowSpectators = 15 [default = true]; + */ + public Builder setAllowSpectators(boolean value) { + bitField0_ |= 0x00004000; + allowSpectators_ = value; + + return this; + } + /** + * optional bool allowSpectators = 15 [default = true]; + */ + public Builder clearAllowSpectators() { + bitField0_ = (bitField0_ & ~0x00004000); + allowSpectators_ = true; + + return this; + } + // @@protoc_insertion_point(builder_scope:NetGameInfo) } From 2c6a98e9989308320503b8984b414fc059d1ef23 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 2 Nov 2013 18:13:18 +0100 Subject: [PATCH 098/128] Consider new "allow spectators" game flag in server (#215) --- pokerth.proto | 1 + src/net/common/serverlobbythread.cpp | 46 +++++++++++++-------- src/net/socket_msg.h | 5 ++- src/third_party/protobuf/pokerth.pb.cc | 2 + src/third_party/protobuf/pokerth.pb.h | 6 ++- tests/src/de/pokerth/protocol/ProtoBuf.java | 9 ++++ 6 files changed, 47 insertions(+), 22 deletions(-) diff --git a/pokerth.proto b/pokerth.proto index 04e4f2a1..bc880873 100644 --- a/pokerth.proto +++ b/pokerth.proto @@ -326,6 +326,7 @@ message JoinGameFailedMessage { invalidSettings = 9; ipAddressBlocked = 10; rejoinFailed = 11; + noSpectatorsAllowed = 12; } required JoinGameFailureReason joinGameFailureReason = 2; } diff --git a/src/net/common/serverlobbythread.cpp b/src/net/common/serverlobbythread.cpp index 5a88f5b3..22d2b1a7 100644 --- a/src/net/common/serverlobbythread.cpp +++ b/src/net/common/serverlobbythread.cpp @@ -1370,25 +1370,32 @@ ServerLobbyThread::HandleNetPacketJoinGame(boost::shared_ptr sessio if (pos != m_gameMap.end()) { boost::shared_ptr game = pos->second; const GameData &tmpData = game->GetGameData(); - // As guest, you are only allowed to join normal games or to join as spectator. - if (session->GetPlayerData()->GetRights() == PLAYER_RIGHTS_GUEST - && tmpData.gameType != GAME_TYPE_NORMAL && !joinGame.spectateonly()) { - SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_GUEST_FORBIDDEN); - } else if (tmpData.gameType == GAME_TYPE_INVITE_ONLY - && !game->IsPlayerInvited(session->GetPlayerData()->GetUniqueId()) - && !joinGame.spectateonly()) { - SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_NOT_INVITED); - } else if (!game->CheckPassword(password)) { - SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_INVALID_PASSWORD); - } else if (tmpData.gameType == GAME_TYPE_RANKING - && !joinGame.spectateonly() - && session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR - && session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4V6 - && session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4 - && game->IsClientAddressConnected(session->GetClientAddr())) { - SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_IP_BLOCKED); + if (joinGame.spectateonly()) { + if (!tmpData.allowSpectators) { + SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_NO_SPECTATORS); + } else { + MoveSessionToGame(game, session, joinGame.autoleave(), true); + } } else { - MoveSessionToGame(game, session, joinGame.autoleave(), joinGame.spectateonly()); + // As guest, you are only allowed to join normal games. + if (session->GetPlayerData()->GetRights() == PLAYER_RIGHTS_GUEST + && tmpData.gameType != GAME_TYPE_NORMAL) { + SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_GUEST_FORBIDDEN); + } else if (tmpData.gameType == GAME_TYPE_INVITE_ONLY + && !game->IsPlayerInvited(session->GetPlayerData()->GetUniqueId())) { + SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_NOT_INVITED); + } else if (!game->CheckPassword(password)) { + SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_INVALID_PASSWORD); + } else if (tmpData.gameType == GAME_TYPE_RANKING + && !joinGame.spectateonly() + && session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR + && session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4V6 + && session->GetClientAddr() != SERVER_ADDRESS_LOCALHOST_STR_V4 + && game->IsClientAddressConnected(session->GetClientAddr())) { + SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_IP_BLOCKED); + } else { + MoveSessionToGame(game, session, joinGame.autoleave(), false); + } } } else { SendJoinGameFailed(session, joinGame.gameid(), NTF_NET_JOIN_GAME_INVALID); @@ -2099,6 +2106,9 @@ ServerLobbyThread::SendJoinGameFailed(boost::shared_ptr s, unsigned case NTF_NET_JOIN_REJOIN_FAILED : netJoinFailed->set_joingamefailurereason(JoinGameFailedMessage::rejoinFailed); break; + case NTF_NET_JOIN_NO_SPECTATORS : + netJoinFailed->set_joingamefailurereason(JoinGameFailedMessage::noSpectatorsAllowed); + break; default : netJoinFailed->set_joingamefailurereason(JoinGameFailedMessage::invalidGame); break; diff --git a/src/net/socket_msg.h b/src/net/socket_msg.h index 416f731d..d65fe604 100644 --- a/src/net/socket_msg.h +++ b/src/net/socket_msg.h @@ -130,10 +130,11 @@ #define NTF_NET_JOIN_INVALID_SETTINGS 218 #define NTF_NET_JOIN_IP_BLOCKED 219 #define NTF_NET_JOIN_REJOIN_FAILED 220 +#define NTF_NET_JOIN_NO_SPECTATORS 221 // Notifications - version -#define NTF_NET_NEW_RELEASE_AVAILABLE 221 -#define NTF_NET_OUTDATED_BETA 222 +#define NTF_NET_NEW_RELEASE_AVAILABLE 231 +#define NTF_NET_OUTDATED_BETA 232 // This is an internal message which is not reported. #define MSG_SOCK_INTERNAL_PENDING 0 diff --git a/src/third_party/protobuf/pokerth.pb.cc b/src/third_party/protobuf/pokerth.pb.cc index 50f6ea2a..7997ef06 100644 --- a/src/third_party/protobuf/pokerth.pb.cc +++ b/src/third_party/protobuf/pokerth.pb.cc @@ -8386,6 +8386,7 @@ bool JoinGameFailedMessage_JoinGameFailureReason_IsValid(int value) { case 9: case 10: case 11: + case 12: return true; default: return false; @@ -8404,6 +8405,7 @@ const JoinGameFailedMessage_JoinGameFailureReason JoinGameFailedMessage::badGame const JoinGameFailedMessage_JoinGameFailureReason JoinGameFailedMessage::invalidSettings; const JoinGameFailedMessage_JoinGameFailureReason JoinGameFailedMessage::ipAddressBlocked; const JoinGameFailedMessage_JoinGameFailureReason JoinGameFailedMessage::rejoinFailed; +const JoinGameFailedMessage_JoinGameFailureReason JoinGameFailedMessage::noSpectatorsAllowed; const JoinGameFailedMessage_JoinGameFailureReason JoinGameFailedMessage::JoinGameFailureReason_MIN; const JoinGameFailedMessage_JoinGameFailureReason JoinGameFailedMessage::JoinGameFailureReason_MAX; const int JoinGameFailedMessage::JoinGameFailureReason_ARRAYSIZE; diff --git a/src/third_party/protobuf/pokerth.pb.h b/src/third_party/protobuf/pokerth.pb.h index 326abd18..15b3ea66 100644 --- a/src/third_party/protobuf/pokerth.pb.h +++ b/src/third_party/protobuf/pokerth.pb.h @@ -201,11 +201,12 @@ enum JoinGameFailedMessage_JoinGameFailureReason { JoinGameFailedMessage_JoinGameFailureReason_badGameName = 8, JoinGameFailedMessage_JoinGameFailureReason_invalidSettings = 9, JoinGameFailedMessage_JoinGameFailureReason_ipAddressBlocked = 10, - JoinGameFailedMessage_JoinGameFailureReason_rejoinFailed = 11 + JoinGameFailedMessage_JoinGameFailureReason_rejoinFailed = 11, + JoinGameFailedMessage_JoinGameFailureReason_noSpectatorsAllowed = 12 }; bool JoinGameFailedMessage_JoinGameFailureReason_IsValid(int value); const JoinGameFailedMessage_JoinGameFailureReason JoinGameFailedMessage_JoinGameFailureReason_JoinGameFailureReason_MIN = JoinGameFailedMessage_JoinGameFailureReason_invalidGame; -const JoinGameFailedMessage_JoinGameFailureReason JoinGameFailedMessage_JoinGameFailureReason_JoinGameFailureReason_MAX = JoinGameFailedMessage_JoinGameFailureReason_rejoinFailed; +const JoinGameFailedMessage_JoinGameFailureReason JoinGameFailedMessage_JoinGameFailureReason_JoinGameFailureReason_MAX = JoinGameFailedMessage_JoinGameFailureReason_noSpectatorsAllowed; const int JoinGameFailedMessage_JoinGameFailureReason_JoinGameFailureReason_ARRAYSIZE = JoinGameFailedMessage_JoinGameFailureReason_JoinGameFailureReason_MAX + 1; enum GamePlayerLeftMessage_GamePlayerLeftReason { @@ -4077,6 +4078,7 @@ class JoinGameFailedMessage : public ::google::protobuf::MessageLite { static const JoinGameFailureReason invalidSettings = JoinGameFailedMessage_JoinGameFailureReason_invalidSettings; static const JoinGameFailureReason ipAddressBlocked = JoinGameFailedMessage_JoinGameFailureReason_ipAddressBlocked; static const JoinGameFailureReason rejoinFailed = JoinGameFailedMessage_JoinGameFailureReason_rejoinFailed; + static const JoinGameFailureReason noSpectatorsAllowed = JoinGameFailedMessage_JoinGameFailureReason_noSpectatorsAllowed; static inline bool JoinGameFailureReason_IsValid(int value) { return JoinGameFailedMessage_JoinGameFailureReason_IsValid(value); } diff --git a/tests/src/de/pokerth/protocol/ProtoBuf.java b/tests/src/de/pokerth/protocol/ProtoBuf.java index 79c9946e..02a11a46 100644 --- a/tests/src/de/pokerth/protocol/ProtoBuf.java +++ b/tests/src/de/pokerth/protocol/ProtoBuf.java @@ -18994,6 +18994,10 @@ public final class ProtoBuf { * rejoinFailed = 11; */ rejoinFailed(10, 11), + /** + * noSpectatorsAllowed = 12; + */ + noSpectatorsAllowed(11, 12), ; /** @@ -19040,6 +19044,10 @@ public final class ProtoBuf { * rejoinFailed = 11; */ public static final int rejoinFailed_VALUE = 11; + /** + * noSpectatorsAllowed = 12; + */ + public static final int noSpectatorsAllowed_VALUE = 12; public final int getNumber() { return value; } @@ -19057,6 +19065,7 @@ public final class ProtoBuf { case 9: return invalidSettings; case 10: return ipAddressBlocked; case 11: return rejoinFailed; + case 12: return noSpectatorsAllowed; default: return null; } } From 62ee15a4c8989482c5bf49dcb1e4109007e277d8 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 2 Nov 2013 19:38:45 +0100 Subject: [PATCH 099/128] Preparing 1.1 beta3. --- ChangeLog | 3 +++ src/game_defs.h | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7e0cf57d..a92578b8 100755 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +2013-11-02 version 1.1 beta3 +- New option to allow/disallow spectators when creating a game (#215) + 2013-10-12 version 1.1 beta2 - BUGFIX: Now you are able to click the menu buttons during a local game again (#203) - BUGFIX: Idle players are shown correctly if they join YOUR game (#198) diff --git a/src/game_defs.h b/src/game_defs.h index 8083b53e..818c8952 100644 --- a/src/game_defs.h +++ b/src/game_defs.h @@ -45,8 +45,8 @@ #define POKERTH_VERSION_MINOR 10 #define POKERTH_VERSION ((POKERTH_VERSION_MAJOR << 8) | POKERTH_VERSION_MINOR) -#define POKERTH_BETA_REVISION 2 -#define POKERTH_BETA_RELEASE_STRING "1.1 beta2" +#define POKERTH_BETA_REVISION 3 +#define POKERTH_BETA_RELEASE_STRING "1.1 beta3" #define SQLITE_LOG_VERSION 1 From 6c5b79709f71200add79c9a930301b2a800cb473 Mon Sep 17 00:00:00 2001 From: Evgeni Golov Date: Sun, 20 Oct 2013 18:47:23 +0200 Subject: [PATCH 100/128] look for libs in $$system(qmake -query QT_INSTALL_LIBS) --- connectivity.pro | 4 ++-- load.pro | 4 ++-- pokerth_game.pro | 5 +++-- pokerth_server.pro | 4 ++-- zlib_compress.pro | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/connectivity.pro b/connectivity.pro index 5f4de829..a6704719 100644 --- a/connectivity.pro +++ b/connectivity.pro @@ -41,13 +41,13 @@ unix : !mac { QMAKE_LIBDIR += lib $${PREFIX}/lib /opt/gsasl/lib INCLUDEPATH += $${PREFIX}/include - LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 + LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 $$system(qmake -query QT_INSTALL_LIBS) BOOST_PROGRAM_OPTIONS = boost_program_options boost_program_options-mt BOOST_SYS = boost_system boost_system-mt # - # searching in $PREFIX/lib and $PREFIX/lib64 + # searching in $PREFIX/lib, $PREFIX/lib64 and $$system(qmake -query QT_INSTALL_LIBS) # to override the default '/usr' pass PREFIX # variable to qmake. # diff --git a/load.pro b/load.pro index c2deb473..8e3d80f1 100644 --- a/load.pro +++ b/load.pro @@ -42,14 +42,14 @@ unix : !mac { QMAKE_LIBDIR += lib $${PREFIX}/lib /opt/gsasl/lib INCLUDEPATH += $${PREFIX}/include - LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 + LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 $$system(qmake -query QT_INSTALL_LIBS) BOOST_THREAD = boost_thread boost_thread-mt BOOST_PROGRAM_OPTIONS = boost_program_options boost_program_options-mt BOOST_SYS = boost_system boost_system-mt # - # searching in $PREFIX/lib and $PREFIX/lib64 + # searching in $PREFIX/lib, $PREFIX/lib64 and $$system(qmake -query QT_INSTALL_LIBS) # to override the default '/usr' pass PREFIX # variable to qmake. # diff --git a/pokerth_game.pro b/pokerth_game.pro index 294dce32..d660452e 100644 --- a/pokerth_game.pro +++ b/pokerth_game.pro @@ -407,7 +407,8 @@ unix:!mac { !android{ LIBPATH += $${PREFIX}/lib /opt/gsasl/lib LIB_DIRS = $${PREFIX}/lib \ - $${PREFIX}/lib64 + $${PREFIX}/lib64 \ + $$system(qmake -query QT_INSTALL_LIBS) } android{ LIBPATH += $${PREFIX}/lib/armv7 @@ -426,7 +427,7 @@ unix:!mac { BOOST_RANDOM = boost_random \ boost_random-mt - # searching in $PREFIX/lib and $PREFIX/lib64 + # searching in $PREFIX/lib, $PREFIX/lib64 and $$system(qmake -query QT_INSTALL_LIBS) # to override the default '/usr' pass PREFIX # variable to qmake. for(dir, LIB_DIRS):exists($$dir) { diff --git a/pokerth_server.pro b/pokerth_server.pro index d27a0e77..706475f7 100644 --- a/pokerth_server.pro +++ b/pokerth_server.pro @@ -175,7 +175,7 @@ unix : !mac { LIBPATH += lib $${PREFIX}/lib /opt/gsasl/lib INCLUDEPATH += $${PREFIX}/include - LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 + LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 $$system(qmake -query QT_INSTALL_LIBS) BOOST_FS = boost_filesystem boost_filesystem-mt BOOST_THREAD = boost_thread boost_thread-mt BOOST_PROGRAM_OPTIONS = boost_program_options boost_program_options-mt @@ -185,7 +185,7 @@ unix : !mac { BOOST_RANDOM = boost_random boost_random-mt # - # searching in $PREFIX/lib and $PREFIX/lib64 + # searching in $PREFIX/lib, $PREFIX/lib64 and $$system(qmake -query QT_INSTALL_LIBS) # to override the default '/usr' pass PREFIX # variable to qmake. # diff --git a/zlib_compress.pro b/zlib_compress.pro index d141ac06..7863d6fb 100644 --- a/zlib_compress.pro +++ b/zlib_compress.pro @@ -48,7 +48,7 @@ unix : !mac { #QMAKE_CXXFLAGS += -ffunction-sections -fdata-sections #QMAKE_LFLAGS += -Wl,--gc-sections - LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 + LIB_DIRS = $${PREFIX}/lib $${PREFIX}/lib64 $$system(qmake -query QT_INSTALL_LIBS) BOOST_FS = boost_filesystem boost_filesystem-mt BOOST_IOSTREAMS = boost_iostreams boost_iostreams-mt BOOST_SYSTEM = boost_system boost_system-mt From 914974567dfccd42e260d5ea0d61c176a9c36509 Mon Sep 17 00:00:00 2001 From: doitux Date: Tue, 12 Nov 2013 16:54:08 +0100 Subject: [PATCH 101/128] new icon for #217 --- src/gui/qt/resources/spectator.png | Bin 2018 -> 2117 bytes 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 src/gui/qt/resources/spectator.png diff --git a/src/gui/qt/resources/spectator.png b/src/gui/qt/resources/spectator.png old mode 100755 new mode 100644 index f9d3213cf7da42b0cc06d0561f6f1152eeded29e..6ba5dd27c5e26f01c69e624f4eb94ba6860581b4 GIT binary patch delta 2104 zcmV-82*>y055*9WB!2;OQb$4nuFf3k00006VoOIv0RI600RN!9r;`8x010qNS#tmY z4c7nw4c7reD4Tcy000McNliru+6EX9Iy#ykyMh1!2gON5K~z}7wU&EOROcDSpYNRA zl{<(;SVc;V1S(n;0WZ|30mas|w%*2+I1?|U(~i*@Cyp7b9e<~pR%4nNFP%x#NwuY& zPA^`tLa-357Z4DPt6X$Zgt)*0vJ1QHp6mC${X=ZEb*5s;`^PzRzM1cRe(!gl^S%do z&UoXM$^W&sX71!+=dlcT!>d!qp`xJ^hGAx}n*H)7#@H+(vI#+rrfKd2aCJEO*z;6B z?`8X62x6tGbAJNBFmxSdky%Vc$XmtN+m9|={0fTxesSahvL?pA;|m1$(PLW)fCPX* z6cS=(5n)lss+!x@KTAGoxBw=z>{B!y{=pyugFy`X2jL&^VdB_mOc@u$ydED06=mH| zw{M;?;vRVa$J?eK`uH~}Sd@+I8B?JP8R4VjFn{3!gny5Yg9to8bHy3V-t+;QoX({H zzQ9NY?cIwRsV~m{R>n(2_bQ0)*OJk7gR}=NquV>avw_H2POnW*qWFkWdq?yY zu)TYs>Z&JeN(ulOrpX~VhcFC~sX>@37zw}@ij=R7N7nQ---vtQW<_CsT-+Fdi-*=D z0SFUh8h-#cz_3cSEC_Cb5eE|{Bw;`jIwY<^5(daLk-umG zCeB;(#}NkzPs!^H3$dKyy7mx&8<4mG#x+P>2je;zH)(d})K3|U8yInbTNTH_G<|o# z?}Nn6A#weoxcLx*n;K(+e&@e>@~i8F?Zv;mkbgLF;yflv3~Z>%zZuW zS#u4$5#2uVA?|#6|1Hd|=z;fisk&6z8V@^*`k3Sd;J_rpBO^S|=mQzzx z5g8e^GdnvwZQ8VH>jaZ<|KgvxRW^*s$bTrw#$e^+vk?)OfZm?o)|QsLYjSfJ)D;z- z#j<6uJ=<{{IB=jnCnu*cBqSsafcywBCnsmk#*G_k{rdHE?AS5#csvvgDx{i%T+Ow- zq2##fAM{ZmsF1GfR9;>#{QdwnH{bfAva)8`Gl_5Ay7iddZlC}7T1m-gt7>a&>wjG? z7pbZys;a7J?b@|eR#rybG>M34->Z4zy-^|5a@$F|u2WxMA2l>I5a*m!RTcgHKDu|W zZP4Mkxp({aonZiQ{CMG$;<>rG^D;9t(;q!wym;wn4#y3>we=pk-EN_(Dj9}BLI`rX zT(oJ^ChG3)rmE^{I{EIq^x?E=bbqb6nY>;vH8wVq5P~#KBTdst*L6}=mHd7`xm+F8 z)YSa9vu8`km6VkJ`zx^7Y);O3cT7waPMtcl#q0I#DlacXM@I*&Rx7jH?U+A*J~A^i zVYl0{fB$~$*|P^99X^Z;RaF=p8HpKbX>hyUNJvP4VHhAHFvcK+01?4zwSOWmE*4>7 zp-Zh+%lVX)l+-6oC`l5_&(EKdm6dh5xw$FQ?e1oYNt2)i{Qy@nHenpn)6=nH#R|m7 z$HVP*qxSlBD4%=+@sA5w=^KEo>v+_Jp4N56 z_)K(=iYC_$)VExRC)tkai#8)QH5D$G3nx#WgsY^ zLg(&VaN)wzo}M1QYu7GoAfV6yi@{%uFJZ3Ki{Pc> zD86|c%2+#+Cr!qR<;&64)rE7VrD& z!+^)*L1AIx{YNHbZGUZTC&I(Sw+kWkprTo2gV1p80)BnHuIqk9QPtkwUXRD)X>~eVZXP{)xC}ru051UXL@UnA%R_m2 zd3ZrV!Pz;pW-W+#VG=Ly87p`DBjNSmLHrBhh-fUsACBzAU_b%qoLnv!tGaSUkBpAC zZFuv|3;=yYiGNK11^^v^3V=T@_@5yIKx=C&s;jGwZQHi}wzI3t5gRF|+kBnzcN?0~ z-|D19)x|#g$p*->1jZOTJ3Ebrh6ceow^d%g`~!!>Q3hZDfDgbR0A&bZ= iE0U9wp9afDTIZisTTOLm?`gsS00009sM2_7G}p2f>1n>nw^}Sv@lbL zks%<0qkoQ(lv-5zHvvXQMy`JH!ETNfpS+lP41-ol{rMo}QjM@F)x5<^x>oNPp&|0W>u=WlWtq)r?LlG%(V6 zVq&7KT)9$;i;Gp5(FYV5rmLu^Nc4KW(&OMB4S&qEY12H{ty`z6VoU&FtJTGe7eCTY zt`Uoap-o6gkgHd(N@!@Pa#USiE#>9qit&pVFP7cAcdLHz^5sjWVPs_x0Mii#J9c9M z;KomIdUGwG+GhTZx>hIj^YfFEk`hTvOXHgQy?OIyDJ(3MrAwDeQc{w1c6O2<8VG`C z#ea~f3*g3aEDn%Z^T~K_dfqGXa7djCtfta^1aqmyQ(y>+946| z)KP%+_D<5-+b0X0?d4%vnarI#*I0&h*wxj=l+jktt5>gj$0XsKH*YGaO!O3XGJg%} z#*G{0_U+pe5)#6jkc?K$o-=2TxVAJ)P+zw=fj{H`qsPc#5IjLJO|;+6Ov9$h6tHh! zg3=&Dtn29LAP8?b;<785t526C-G^tQw^gi0IG>N?7*q-!Ja&?nVN0KLz%< zRz^%?Mxd&ys&nnywKp0X8U)>tp?_nzjYNuwh>(5z_VJdJn>TNAP3c^?aDjUzJw2WG z2FYl2&iw?7(9>ofm&YO@4fe;!$A1gb6hh2#64oxm&Cs%@RUbHg`ZS5frlZzp%$UKw z zq7(&|`XnAxNd20c8s`5{X=!N<%)c7Xb@r%Jk9Okyab(Z$FXC_%JJD6Vu=SzE!uK4*R{At1Or5fS?l;1~7baeCp z{v9hDy-quEadGjfsi}Hg+lFh`u2sdx#>Qa%gVDNL1W2k7++sOFK|wwwn7_Y&M_F0f z52){7OrU2qtVUz{1JCxMhYufm!A`?y9RO!r{0266T)A?^7Juc-2TchG%_qA4Ee-?+ z2OspoK-uv<(1>Odc>MVBMln5zK9tNyiLw28LmEbr*J?N|Dd>v7p|h6bD%X9CfinIM z>sv>1fPMTcu=yuk9#>FGX)w-?Vgnh3v{9%(3|fcN_@N}z5s3ki?epPFW@uQSdo3Z3 ztRMy$72}INn@v42@HSY6KJm8(KtoJtiy`iiW|k1771B=wBpzkd?+}O^qzKYU$HV%4 mqh{T(K1 Date: Tue, 12 Nov 2013 23:23:51 +0100 Subject: [PATCH 102/128] Add the number of spectators next to the spectator icon #206 --- src/gui/qt/gametable/gametableimpl.cpp | 11 +++++++++++ src/gui/qt/gametable/gametableimpl.h | 1 + src/gui/qt/styles/gametablestylereader.cpp | 6 ++++++ src/gui/qt/styles/gametablestylereader.h | 3 +-- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp index c86db229..7980b0b7 100755 --- a/src/gui/qt/gametable/gametableimpl.cpp +++ b/src/gui/qt/gametable/gametableimpl.cpp @@ -449,6 +449,7 @@ gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent) pushButton_showMyCards->hide(); spectatorIcon = new QLabel(this); + spectatorNumberLabel = new QLabel(this); //style Game Table refreshGameTableStyle(); @@ -3594,6 +3595,7 @@ void gameTableImpl::networkGameModification() #endif blinkingStartButtonAnimationTimer->stop(); spectatorIcon->show(); + spectatorNumberLabel->show(); refreshSpectatorsDisplay(); } if(myStartWindow->getSession()->getGameType() == Session::GAME_TYPE_NETWORK) { @@ -3603,6 +3605,7 @@ void gameTableImpl::networkGameModification() pushButton_break->hide(); #endif spectatorIcon->hide(); + spectatorNumberLabel->hide(); } //Set the playing mode to "manual" #ifdef GUI_800x480 @@ -4272,6 +4275,7 @@ void gameTableImpl::refreshGameTableStyle() label_handNumber->setText(HandString+":"); label_gameNumber->setText(GameString+":"); + myGameTableStyle->setSpectatorNumberLabelStyle(spectatorNumberLabel); } void gameTableImpl::saveGameTableGeometry() @@ -4470,6 +4474,10 @@ void gameTableImpl::refreshSpectatorsDisplay() int iconY = 2; spectatorIcon->move(iconX,iconY); spectatorIcon->setPixmap(spectatorPix); + int labelX = this->centralWidget()->geometry().width() - spectatorPix.width() - 1; + int labelY = spectatorPix.height()+2; + spectatorNumberLabel->setGeometry(labelX, labelY, 32, 14); + spectatorNumberLabel->setText(QString("%1").arg(info.spectatorsDuringGame.size())); QString spectatorList = QString(""+tr("Spectators")+":
"); PlayerIdList::const_iterator i = info.spectatorsDuringGame.begin(); @@ -4481,9 +4489,12 @@ void gameTableImpl::refreshSpectatorsDisplay() } spectatorList.remove(spectatorList.size()-4,4); spectatorIcon->setToolTip(spectatorList); + spectatorNumberLabel->setToolTip(spectatorList); } else { spectatorIcon->setToolTip(""); spectatorIcon->clear(); + spectatorNumberLabel->setToolTip(""); + spectatorNumberLabel->clear(); } } diff --git a/src/gui/qt/gametable/gametableimpl.h b/src/gui/qt/gametable/gametableimpl.h index c89c4d1f..5bbe874e 100755 --- a/src/gui/qt/gametable/gametableimpl.h +++ b/src/gui/qt/gametable/gametableimpl.h @@ -442,6 +442,7 @@ private: QLabel *playerTipLabelArray[MAX_NUMBER_OF_PLAYERS]; QPixmap flipside; QLabel *spectatorIcon; + QLabel *spectatorNumberLabel; // Dialogs startWindowImpl *myStartWindow; diff --git a/src/gui/qt/styles/gametablestylereader.cpp b/src/gui/qt/styles/gametablestylereader.cpp index fc5c74e3..5f19674f 100644 --- a/src/gui/qt/styles/gametablestylereader.cpp +++ b/src/gui/qt/styles/gametablestylereader.cpp @@ -1372,6 +1372,12 @@ void GameTableStyleReader::setCashLabelStyle(QLabel *cl) cl->setStyleSheet("QLabel { "+ font2String +" font-size: "+cashFontSize+"px; font-weight: bold; color: #"+PlayerCashTextColor+"; }"); } +void GameTableStyleReader::setSpectatorNumberLabelStyle(QLabel *snl) +{ + snl->setStyleSheet("QLabel { "+ font2String +" font-size: 12px; font-weight: bold; color: #"+MenuTextColor+"; }"); + snl->setAlignment(Qt::AlignHCenter); +} + void GameTableStyleReader::setSetLabelStyle(QLabel *sl) { sl->setStyleSheet("QLabel { "+ font2String +" font-size: "+setLabelFontSize+"px; font-weight: bold; color: #"+PlayerBetTextColor+"; }"); diff --git a/src/gui/qt/styles/gametablestylereader.h b/src/gui/qt/styles/gametablestylereader.h index 69326409..ad2ff8a5 100644 --- a/src/gui/qt/styles/gametablestylereader.h +++ b/src/gui/qt/styles/gametablestylereader.h @@ -222,10 +222,9 @@ public: void setVoteStringsStyle(QLabel*); void setBetValueInputStyle(QSpinBox*); void setSliderStyle(QSlider*); - void setTabWidgetStyle(QTabWidget*, QTabBar*); - void setWindowsGeometry(gameTableImpl*); + void setSpectatorNumberLabelStyle(QLabel*); //set pics and fonts and colors void setButtonsStyle(MyActionButton*, MyActionButton*, MyActionButton*, MyActionButton*, int); From 827ce4fee11b7d8c737e0a5227c98b39a1a3e9bb Mon Sep 17 00:00:00 2001 From: doitux Date: Sat, 16 Nov 2013 15:36:05 +0100 Subject: [PATCH 103/128] bugfix for #221 (Beep when message from ignored player) --- src/gui/qt/chattools/chattools.cpp | 24 +++++++++++------------- src/gui/qt/newgamedialog.ui | 5 +---- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/gui/qt/chattools/chattools.cpp b/src/gui/qt/chattools/chattools.cpp index 7781ab6a..069cc175 100644 --- a/src/gui/qt/chattools/chattools.cpp +++ b/src/gui/qt/chattools/chattools.cpp @@ -92,22 +92,11 @@ void ChatTools::receiveMessage(QString playerName, QString message, bool pm) QString tempMsg; if(myChatType == INET_LOBBY_CHAT && playerName == "(chat bot)" && message.startsWith(myNick)) { - tempMsg = QString(""+message+""); - //play beep sound only in INET-lobby-chat - if(myLobby->isVisible() && myConfig->readConfigInt("PlayLobbyChatNotification")) { - myLobby->getMyW()->getMySoundEventHandler()->playSound("lobbychatnotify",0); - } } else if(message.contains(myNick, Qt::CaseInsensitive)) { - switch (myChatType) { case INET_LOBBY_CHAT: { tempMsg = QString("palette().link().color().name()+";\">"+message+""); - //play beep sound only in INET-lobby-chat - // TODO dont play when message is from yourself - if(myLobby->isVisible() && myConfig->readConfigInt("PlayLobbyChatNotification")) { - myLobby->getMyW()->getMySoundEventHandler()->playSound("lobbychatnotify",0); - } } break; case LAN_LOBBY_CHAT: @@ -157,15 +146,24 @@ void ChatTools::receiveMessage(QString playerName, QString message, bool pm) } bool nickFoundOnIgnoreList = false; + bool chatBotWarnNickFoundOnIgnoreList = false; list::iterator it1; for(it1=ignoreList.begin(); it1 != ignoreList.end(); ++it1) { - if(playerName == QString::fromUtf8(it1->c_str())) { nickFoundOnIgnoreList = true; } + if(myChatType == INET_LOBBY_CHAT && playerName == "(chat bot)" && message.startsWith(QString::fromUtf8(it1->c_str()))) { + chatBotWarnNickFoundOnIgnoreList = true; + } } - if(!nickFoundOnIgnoreList) { + if(!nickFoundOnIgnoreList && !chatBotWarnNickFoundOnIgnoreList) { + //play beep sound as notification + if(myChatType == INET_LOBBY_CHAT && message.contains(myNick, Qt::CaseInsensitive) && playerName != myNick) { + if(myLobby->isVisible() && myConfig->readConfigInt("PlayLobbyChatNotification")) { + myLobby->getMyW()->getMySoundEventHandler()->playSound("lobbychatnotify",0); + } + } if(!myConfig->readConfigInt("DisableChatEmoticons")) { tempMsg = checkForEmotes(tempMsg); diff --git a/src/gui/qt/newgamedialog.ui b/src/gui/qt/newgamedialog.ui index 2e547bb8..3158dfa3 100755 --- a/src/gui/qt/newgamedialog.ui +++ b/src/gui/qt/newgamedialog.ui @@ -6,7 +6,7 @@ 0 0 - 225 + 239 271
@@ -78,9 +78,6 @@ Blinds
- - 0 - From e13a1987ebccd31a474eceb6d6b24b282150a448 Mon Sep 17 00:00:00 2001 From: doitux Date: Tue, 19 Nov 2013 10:59:16 +0100 Subject: [PATCH 104/128] Update translation sources for next beta4 release. Translated files already included --- ts/pokerth_START_HERE.ts | 2257 +++++++++++++++++++------------------ ts/pokerth_af.ts | 2256 +++++++++++++++++++------------------ ts/pokerth_bg.ts | 2253 +++++++++++++++++++------------------ ts/pokerth_ca.ts | 2260 +++++++++++++++++++------------------ ts/pokerth_cz.ts | 142 ++- ts/pokerth_de.ts | 2313 ++++++++++++++++++++------------------ ts/pokerth_dk.ts | 2263 +++++++++++++++++++------------------ ts/pokerth_es.ts | 2304 +++++++++++++++++++------------------ ts/pokerth_fi.ts | 2260 +++++++++++++++++++------------------ ts/pokerth_fr.ts | 2254 +++++++++++++++++++------------------ ts/pokerth_gd.ts | 2256 +++++++++++++++++++------------------ ts/pokerth_gl.ts | 2256 +++++++++++++++++++------------------ ts/pokerth_gr.ts | 2265 +++++++++++++++++++------------------ ts/pokerth_hu.ts | 2253 +++++++++++++++++++------------------ ts/pokerth_it.ts | 2305 +++++++++++++++++++------------------ ts/pokerth_jp.ts | 2271 +++++++++++++++++++------------------ ts/pokerth_lt.ts | 2247 ++++++++++++++++++------------------ ts/pokerth_nl.ts | 2245 ++++++++++++++++++------------------ ts/pokerth_no.ts | 2255 +++++++++++++++++++------------------ ts/pokerth_pl.ts | 2298 +++++++++++++++++++------------------ ts/pokerth_ptbr.ts | 125 +- ts/pokerth_ptpt.ts | 2262 +++++++++++++++++++------------------ ts/pokerth_ru.ts | 2254 +++++++++++++++++++------------------ ts/pokerth_sk.ts | 2251 +++++++++++++++++++------------------ ts/pokerth_sv.ts | 2265 +++++++++++++++++++------------------ ts/pokerth_ta.ts | 2253 +++++++++++++++++++------------------ ts/pokerth_tr.ts | 2277 +++++++++++++++++++------------------ ts/pokerth_vi.ts | 2256 +++++++++++++++++++------------------ ts/pokerth_zhcn.ts | 2262 +++++++++++++++++++------------------ 29 files changed, 31846 insertions(+), 29572 deletions(-) diff --git a/ts/pokerth_START_HERE.ts b/ts/pokerth_START_HERE.ts index 75a3b75a..5605ffb9 100644 --- a/ts/pokerth_START_HERE.ts +++ b/ts/pokerth_START_HERE.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -157,22 +156,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -247,52 +246,52 @@ Please select a game table style and try again!
- + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) @@ -339,13 +338,13 @@ Uploading log files may fail if you are using an http proxy.
- + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -374,18 +373,18 @@ Please verify that you are uploading a valid PokerTH log file. - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + PokerTH - Question - + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -414,71 +413,77 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - + + Translation - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + Thanks to - - + + License - + + + Third party libs + + + + Close - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -487,7 +492,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -739,12 +744,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order - + You cannot set more than 30 manual blinds. @@ -883,7 +888,7 @@ Please choose another one! - + Default game name: @@ -918,75 +923,81 @@ Please choose another one!
- - + + Maximum number of players: - - + + Start Cash: - - + + $ - + Blinds - + Use saved blinds settings - + Change blinds settings ... - + Timeout for player action: - - + + s - - + + Password: - + Delay between hands: - - + + + Allow spectators to watch the game + + + + + Create Game - + Cancel @@ -1099,56 +1110,68 @@ Please choose another one!
- - + + Game Info - - + + Game type: - - + + Connected Players - - + + search for player ... - - + + 5 - Show open & non-full & ranking games - - + + + Players + + + + + + Spectators + + + + + Start Cash: - - + + First small blind: - - + + Blinds raise interval: - - + + Blinds raise mode: @@ -1158,7 +1181,7 @@ Please choose another one! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1167,110 +1190,104 @@ p, li { white-space: pre-wrap; } - - + + Fill up with computer opponents - - + + &Start Game - - + + &Kick Player - - + + Sort alphabetically - - + + Sort by country - - + + Display idle players - - + + Manual blinds list: - - + + &Leave Game - - - Join &any game - - - - - + + &Create Game - - + + &Join Game - - + + 0 - No game list filter - - + + 1 - Show open games - - + + 2 - Show open & non-full games - - + + 3 - Show open & non-full & non-private games - - + + 4 - Show open & non-full & private games - - + + Timing: - - + + Lobby-Chat @@ -1283,210 +1300,217 @@ p, li { white-space: pre-wrap; } - + Joining a private Game - + You are about to join a private game. Please enter the password! - + open - - - - + + + + Game Info - - - + + Spectate + + + + + + Game - - - + + + Players - - - + + + State - - - + + + P - - - + + + Available Players - + Invite player - + Ignore player - + Player infos ... - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - Connected players - max. %1 - - - - - - + + + T - - - + + + sec (action) - - - + + + sec (hand delay) - - - Connected players - Max. %1 - - - - + running - - + + running games: %1 - - + + open games: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? - - + + connected players: %1 @@ -1501,1343 +1525,1337 @@ Feel free to invite other players by right-clicking on their nick in the availab - - - + + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game - - - Connected players - - - - + hands - + minutes - + double blinds - + manual blinds order - + Server Error - + You should not kick yourself from this game! - + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -2850,273 +2868,273 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Hands - + Chat - + Save - + Log - + Away - + Manual Action (default) - + Auto-Check / Auto-Fold - + Auto-Check / Auto-Call-Any - + Speed: - - + + Start Local Game ... - - + + Ctrl+N - - + + Quit - - + + Ctrl+Q - - + + About PokerTH ... - - + + Settings ... - - + + Create Network Game ... - - + + Ctrl+O - - + + Join Network Game ... - - + + Ctrl+J - - - + + + Fullscreen - - + + Ctrl+F - - + + Show/Hide Chat Window - - + + Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window - - + + Ctrl+H - - + + Show/Hide Log Window - - + + Ctrl+L - - + + Internet Game ... - - + + Ctrl+I - - + + Show/Hide Away Window - - + + Ctrl+A - + Kick - + Vote Timeout: - + Yes - + No - + Player info - + Chance - + Configure PokerTH ... - - + + Close - - + + Ctrl+X - + Vote started by: - - + + Show/Hide Chance Window - - + + Ctrl+C - + &View - + &Settings - + Shortcut: <Shift> - + Settings - + Configure PokerTH @@ -3124,141 +3142,146 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop - + PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - - - - + + + + + + + + Start - - - - - + + + + + Lobby - - + + Chat - + Closing PokerTH during network game - + You are the hosting server. Do you want to close PokerTH anyway? - + Really want to exit? - + PokerTH - Close Table? - + PokerTH - Internet Game Message - + Attention! Do you really want to leave the current game and go back to the lobby? - - + + Chat is only available to registered players. - - + + Spectators + + + + + Chance - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. @@ -3451,54 +3474,54 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error - - - - + + + + Could not load server-profiles-file: - +%1 - + Save Server Profile Error - + A profile with the name: %1 already exists. Would you like to overwrite ? - + Read Server-Profile List Error - + Could not read server-profiles list - - + + Save Server-Profile-File Error - - + + Could not save server-profiles-file: - +%1 @@ -3563,12 +3586,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order - + You cannot set more than 30 manual blinds. @@ -3633,7 +3656,7 @@ Would you like to overwrite ? - + Use saved blinds settings @@ -3644,13 +3667,13 @@ Would you like to overwrite ? - + Change blinds settings ... - + Game Speed: @@ -3691,36 +3714,36 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error - + Please select an avatar from the list! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! - + The entered avatar picture doesn't exist. Please enter an valid picture! - + Select external avatar picture - + Images (*.png *.jpg *.gif) @@ -3741,405 +3764,429 @@ Please enter an valid picture! - - + + Language: - - + + Show fade-out animation for non-winning cards - - + + Show flip-card animation - - + + Show buttons for small blind and big blind - - + + Show own cards only on mouse click - + Reverse order of F-Keys (F1 - F4) - - + + Network / Internet Game - - + + Switch keyboard focus to bet-input-field if it's your turn - + Sound - + Factory Settings - - + + + Common + + + + + Disable splashscreen on startup - - + + Show country flag in the corner of avatar - - + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State - - + + Card Deck - - + + Card Back - - + + Use card back from card style - - + + Use custom card back picture: - - + + Play sound effects - - + + Sound Volume: - - + + 10 - - + + Sound Categories - - + + Play game actions sounds like "check", "call", "raise" - - + + Play lobby chat notifications - - + + Play network/internet game notifications like "player joined the game" - - + + Server Password: - + + + Allow spectators to watch the game + + + + OK - + Local Game Settings - - + + Number of players: - - - - + + + + Start Cash: - - - - - - - - + + + + + + + + $ - - - - + + + + First small blind: - - - - + + + + Raise blinds: - - - - - - - - + + + + + + + + Every: - - - - + + + + hands - - - - + + + + minutes - - - - + + + + Raise mode: - - - - + + + + Always double blinds - - - - + + + + Manual blinds order: - - - - + + + + Edit ... - - + + Game Speed: - - + + Pause between hands (press "start" button to go on) - - + + Show game settings dialog on every new game - + Network Game Settings - - + + Maximum number of players: - - + + Timeout for player action: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! - - - - + + + + s - - + + Network Server Settings - - - - + + + + Server Port: - - - - + + + + Use SCTP - - - - + + + + Use IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> - + Internet Game Settings - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4147,61 +4194,61 @@ p, li { white-space: pre-wrap; } - - + + Server Address: - - + + Use password for private game: - - + + Computer Engine - - + + Opponent 6: - - + + Opponent 5: - - + + Opponent 4: - - + + Opponent 3: - - + + Opponent 2: - - + + Opponent 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4209,111 +4256,111 @@ p, li { white-space: pre-wrap; } - - + + Enable/Disable Logging - - + + Log File Directory: - - + + Write log after every: - - + + action (high frequent disc access) - - + + hand (medium disc access) - - + + game (low disc access) - + Log Messages - + Player Nicks/Avatars - + Show right toolbox - + Show left toolbox - - + + Play blind raise notification - - + + Automatic Server Configuration URL - - + + Serverlist Address: - - + + Manual Server Configuration - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -4342,62 +4389,62 @@ p, li { white-space: pre-wrap; } - - + + Show cards chance monitor - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: - + Style - - + + Don't translate poker strings like check, call, raise from game table style - - - - + + + + Add ... - - - - + + + + Remove - - - - + + + + Preview - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4406,8 +4453,8 @@ p, li { white-space: pre-wrap; } - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4416,7 +4463,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4428,96 +4475,96 @@ p, li { white-space: pre-wrap; } - - + + Delay between hands: - - + + Server - - + + Game - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4526,20 +4573,20 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: - - + + Opponent 8: - - + + Opponent 9: @@ -4547,69 +4594,69 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error - + The entered flipside picture doesn't exist. Please enter an valid picture! - - + + The log file directory doesn't exist. Please select an valid directory! - + Language Changed - + You have changed application language to %1. Please restart PokerTH to load new language! - + Select your flipside picture - + Images (*.png *.jpg *.gif) - + Open Directory - - + + Blinds Error - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. - + The entered server list address is not a valid URL. Please enter a valid server list address! @@ -4760,146 +4807,146 @@ Please enter a valid server list address! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -4964,12 +5011,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error - + You should not kick yourself from this game! @@ -5128,106 +5175,106 @@ Do you really want to reset factory settings? startWindowImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error - + Server address was not set. - + An invalid port was set (ports 0-1023 are not allowed). - + Could not create a socket for TCP communication. - + Could not set the IP address. - + Could not set the port for this type of address. - + The server name could not be resolved. - + Bind failed - please choose a different port. - + Internal network error: "listen" failed. - + Server execution was terminated. - + Could not connect to the server. - + Connection timed out. Please check the server address. @@ -5235,343 +5282,343 @@ If the server is behind a NAT-Router, make sure port forwarding has been set up - + Internal network error: "select" failed. - + Internal network error: "send" failed. - + Internal network error: Duplicate TCP connection. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. - + Invalid server list URL. Please correct the address in the settings. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. - + Could not unzip the PokerTH internet server list. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. - + Could not open the target file when downloading the server list. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. - + Sorry, this server is already full. - + Invalid login. Please check your username and password. - + Your account is blocked indefinitely. - + You cannot login at this time. Please try again in a few seconds. - + You cannot join this game, because another player in that game has your network address. - + Your connection to the server is very slow, the game had to start without you. - + This game is of type invite-only. You cannot join this game without being invited. - + Invalid password when joining the game. Please reenter the password and try again. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. - + The password is too long. Please choose another one. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game - + The connection to the server was lost. - + The game name is either too short or too long. Please choose another one. - + The game could not be found. - + The chat text is invalid. - + The server referred to an unknown player. Aborting. - + Internal error: The current player could not be found. - + Internal error: The current player is not active. - + You were kicked from the server. - + You were temporarily banned from the server. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! - + The client player count is invalid. - + Too many manual blinds were set. Please reconfigure the manual blinds. - + An invalid avatar file was configured. Please choose a different avatar. - + The selected avatar file is too large. Please choose a different avatar. - + An internal avatar error occured. Please report this to an admin in the lobby chat. - + Could not start game: Synchronization failed. - + The server is down for maintenance. Please try again later. - + An internal error occured. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification - + You were kicked from the game. - + Sorry, this game is already full. - + Unable to join - the server has already started the game. - + Your admin state timed out due to inactivity. Feel free to create a new game! - + You cannot join this type of game as guest. - + The settings are invalid for this type of game. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. - - + + Server Message diff --git a/ts/pokerth_af.ts b/ts/pokerth_af.ts index a58f6532..8beb7265 100644 --- a/ts/pokerth_af.ts +++ b/ts/pokerth_af.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -211,22 +210,22 @@ Kontak asseblief die speltafelstyl-bouer via "%4". Speltafelstyl-fout: verouderd - + Everything OK! Alles is oukei! - + Some pictures are missing, please contact style maintainer for this issue. Sommige prente word vermis. Kontak asseblief die styl se onderhouer oor hierdie probleem. - + Some style fields are missing, please contact style maintainer for this issue. Sommige stylvelde word vermis. Kontak asseblief die styl se onderhouer oor hierdie probleem. - + This style is outdated, please contact style maintainer for this issue. Hierdie styl is verouderd. Kontak asseblief die styl se onderhouer oor hierdie probleem. @@ -304,52 +303,52 @@ Kies asseblief 'n speltafelstyl en probeer weer! - + PokerTH - Delete log files PokerTH – Skrap loglêers - + Do you really want to delete the selected log files? Wil jy regtig die gekose loglêers skrap? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML Voer PokerTH-loglêer uit na HTML - + PokerTH HTML log (*.html) PokerTH se HTML-log (*.html) - + Export PokerTH log file to plain text Voer PokerTH-loglêer uit na skoonteks - + PokerTH plain text log (*.txt) PokerTH se skoonteks-log (*.txt) - + Save PokerTH log file Stoor PokerTH-loglêer - + PokerTH SQL log (*.pdb) PokerTH-SQL-log (*.pdb) @@ -396,13 +395,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -431,18 +430,18 @@ Please verify that you are uploading a valid PokerTH log file. Rapporteer onvanpaste avatar - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Jy sal nie meer kletsboodskappe of speluitnodigings van hierdie gebruiker kry nie.<br>Wil jy regtig speler <b>%1</b> op die ignoreerlys sit? - - + + PokerTH - Question PokerTH - Vraag - + Are you sure you want to report the avatar of "%1" as inappropriate? Is jy seker jy wil die avatar van "%1" as onvanpas rapporteer? @@ -471,8 +470,8 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About Aangaande @@ -507,17 +506,39 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project Projek + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -565,7 +586,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - aanvanklike GUI-grafikaontwerp</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -574,7 +594,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -584,14 +604,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Samuel Murray, afrikaans[at]gmail[dot]com</span></p></td></tr></table></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -694,8 +712,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - aanvanklike GUI-grafikaontwerp</span></p></body></html> - - + + Translation Vertaling @@ -712,8 +730,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" ">Samuel Murray, afrikaans[at]gmail[dot]com</span></p></body></html> - - + + Thanks to Dankie aan @@ -764,13 +782,19 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - vir modereer van forum en hantering van foutopsporing en wenslys</span></p></body></html> - - + + License Lisensie - + + + Third party libs + + + + Close Toemaak @@ -943,8 +967,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - vir nuwe tafelklanke</span></p></td></tr></table></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -953,7 +977,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1205,12 +1229,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Handmatige blindesvolgorde - + You cannot set more than 30 manual blinds. Jy kan nie meer as 30 handmatige blindes opstel nie. @@ -1359,7 +1383,7 @@ Kies asseblief 'n ander naam. - + Default game name: Verstek spelnaam: @@ -1394,75 +1418,81 @@ Kies asseblief 'n ander naam. Gradeerspel - - + + Maximum number of players: Maksimum getal spelers: - - + + Start Cash: Begingeld: - - + + $ $ - + Blinds Blindes - + Use saved blinds settings Gebruik gestoorde blindesinstellings - + Change blinds settings ... Verander blindesinstellings... - + Timeout for player action: Uittelling vir speleraksie: - - + + s s - - + + Password: Wagwoord: - + Delay between hands: Wagtyd tussen hande: - - + + + Allow spectators to watch the game + + + + + Create Game Skep spel - + Cancel Kanselleer @@ -1575,56 +1605,68 @@ Kies asseblief 'n ander naam. Internetspel-voorkamer - - + + Game Info Spelinfo - - + + Game type: Speltipe: - - + + Connected Players Gekoppelde spelers - - + + search for player ... soek vir speler... - - + + 5 - Show open & non-full & ranking games 5 - Wys oop & halfvol & gradeerspelle - - + + + Players + Spelers + + + + + Spectators + + + + + Start Cash: Begingeld: - - + + First small blind: Eerste klein blinde: - - + + Blinds raise interval: Blindesverhoog-interval: - - + + Blinds raise mode: Blindesverhoog-modus: @@ -1634,7 +1676,7 @@ Kies asseblief 'n ander naam. Speletjies - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1647,68 +1689,66 @@ p, li { white-space: pre-wrap; } Uittelling vir speleraksie (sek): - - + + Fill up with computer opponents Vul aan met rekenaaropponente - - + + &Start Game &Begin spel - - + + &Kick Player &Skop speler - - + + Sort alphabetically Rangskik alfabeties - - + + Sort by country Rangskik volgens land - - + + Display idle players Wys niksdoenspelers - - + + Manual blinds list: Handmatige blindeslys: - - + + &Leave Game &Verlaat spel - - Join &any game - Sluit aan &by enige spel + Sluit aan &by enige spel - - + + &Create Game &Skep spel - - + + &Join Game &Sluit by spel aan @@ -1731,44 +1771,44 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Kliek hier om die aanlyn graderings te bekyk</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - Geen spellysfilter nie - - + + 1 - Show open games 1 - Wys oop spelle - - + + 2 - Show open & non-full games 2 - Wys oop & halfvol spelle - - + + 3 - Show open & non-full & non-private games 3 - Wys oop & halfvol & nieprivate spelle - - + + 4 - Show open & non-full & private games 4 - Wys oop & halfvol & private spelle - - + + Timing: Tydneem: - - + + Lobby-Chat Voorkamer-klets @@ -1793,46 +1833,46 @@ p, li { white-space: pre-wrap; } Spel begin. Wag asseblief... - + Joining a private Game By 'n privaat spel aansluit - + You are about to join a private game. Please enter the password! Jy gaan nou by 'n privaat spel aansluit. Tik asseblief die wagwoord in! - + open maak oop - - - - + + + + Game Info Spelinfo - - - + + + Game Spel - - - + + + Players Spelers - - - + + + State Staat @@ -1841,71 +1881,70 @@ p, li { white-space: pre-wrap; } R - - - + + + P P - - - + + + Available Players Beskikbare spelers - + Invite player Nooi speler - + Ignore player Ignoreer speler - + Player infos ... Spelers se info... - - - + + + Standard Standaard - - - + + + Registered players only Net geregistreerde spelers - - - + + + Invited players only Net genooide spelers - - - + + + Ranking game Gradeerspel - Connected players - max. %1 - Gekoppelde spelers: maks %1 + Gekoppelde spelers: maks %1 - - - + + + T T @@ -1915,121 +1954,137 @@ p, li { white-space: pre-wrap; } - - - + + Spectate + + + + + + Time - - + + Admin action ... - + Total kickban - + Report inappropriate game name Rapporteer onvanpaste spelnaam - + Close game - - - + + + sec (action) sek (aksie) - - - + + + sec (hand delay) sek (handvertraging) - - Connected players - Max. %1 - Gekoppelde spelers: maks %1 + Gekoppelde spelers: maks %1 - + running aan die gang - - + + running games: %1 spelle aan die gang: %1 - - + + open games: %1 oop spelle: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 Nooi %1 - + Ignore %1 Ignoreer %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 het %1 uitgenooi na %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 het die uitnodiging na %2 van die hand gewys.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 kan nie by %2 aansluit nie want hy of sy is besig.</span> - - + + The game will start in<br><b>%1</b> seconds. Die spel begin oor<br><b>%1</b> sekondes. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Jy het by 'n spel aangesluit met die tipe "nooi-alleen". Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers te regskliek. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Jy is deur <b>%2</b> na die spel <b>%1</b> genooi.<br>Wil jy by daardie spel aansluit? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Jy sal nie meer kletsboodskappe of speluitnodigings van hierdie gebruiker kry nie.<br>Wil jy regtig speler <b>%1</b> op jou ignoreerlys sit? - - + + connected players: %1 gekoppelde spelers: %1 @@ -2039,8 +2094,8 @@ Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers t Wag tans vir die begin van die volgende hand om weer by die spel aan te sluit... - - + + Show player stats Wys spelerstatistiek @@ -2053,1314 +2108,1312 @@ Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers t sek (handvertraging) - - Connected players - Gekoppelde spelers + Gekoppelde spelers - + hands hande - + minutes minute - + double blinds dubbelblindes - + manual blinds order handmatige blindesvolgorde - + Server Error Bedienerfout - + You should not kick yourself from this game! Jy moenie jouself uit hierdie spel skop nie! - + search for player ... soek vir speler... - + Chat is only available to registered players. Klets werk net vir geregistreerde spelers. - + Invite player ... Nooi speler... - + Ignore player ... Ignoreer speler... - + %1 is playing in "%2". %1 speel in "%2". - + %1 is not playing at the moment. %1 speel nie op die oomblik nie. - - + + PokerTH - Info Message PokerTH - Inligtingsboodskap - - - - + + + + PokerTH - Question PokerTH - Vraag - + Afghanistan Afghanistan - + ALand Islands Alandeilande - + Albania Albanië - + Algeria Algerië - + American Samoa Amerikaanse Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarktika - + Antigua And Barbuda Antigua en Barbuda - + Argentina Argentinië - + Armenia Armenië - + Aruba Aruba - + Australia Australië - + Austria Oostenryk - + Azerbaijan Azerbeidjans - + Bahamas Bahamas - + Bahrain Bahrein - + Bangladesh Bangladesj - + Barbados Barbados - + Belarus Belarus - + Belgium België - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhoetan - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnië en Herzegowina - + Botswana Botswana - + Bouvet Island Bouveteiland - + Brazil Brasilië - + British Indian Ocean Territory Britse Indiese Oseaangebied - + Brunei Darussalam Broenei Darussalam - + Bulgaria Bulgarye - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodja - + Cameroon Kameroen - + Canada Kanada - + Cape Verde Kaap Verde - + Cayman Islands Kaaimaneilande - + Central African Republic Sentraal-Afrikaanse Republiek - + Chad Tsjad - + Chile Chili - + China Sjina - + Christmas Island Christmaseiland - + Cocos (Keeling) Islands Kokoseilande - + Colombia Colombia - + Comoros Comore - + Congo Kongo - + Congo, The Democratic Republic Of The Kongo, Demokratiese Republiek van die - + Cook Islands Cookeilande - + Costa Rica Costa Rica - + Cote D'Ivoire Ivoorkus - + Croatia Kroasië - + Cuba Kuba - + Cyprus Ciprus - + Czech Republic Tsjeggiese Republiek - + Denmark Denemarke - + Djibouti Djiboeti - + Dominica Dominica - + Dominican Republic Dominikaanse Republiek - + Ecuador Ecuador - + Egypt Egipte - + El Salvador El Salvador - + Equatorial Guinea Ekwatoriaal-Guinee - + Eritrea Eritrea - + Estonia Estland - + Ethiopia Etiopië - + Falkland Islands (Malvinas) Falklandeilande - + Faroe Islands Faroër-eilande - + Fiji Fidji - + Finland Finland - + France Frankryk - + French Guiana Frans-Guinee - + French Polynesia Frans-Polinesië - + French Southern Territories Franse Suidelike Gebiede - + Gabon Gaboen - + Gambia Gambië - + Georgia Georgië - + Germany Duitsland - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Griekeland - + Greenland Groenland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinee - + Guinea-Bissau Guinee-Bissau - + Guyana Guyana - + Haiti Haïti - + Heard Island And Mcdonald Islands Heard- en McDonald-eilande - + Holy See (Vatican City State) Vatikaanstad - + Honduras Honduras - + Hong Kong Hongkong - + Hungary Hongarye - + Iceland Ysland - + India Indië - + Indonesia Indonesië - + Iran, Islamic Republic Of Iran, Islamitiese Republiek van - + Iraq Irak - + Ireland Ierland - + Isle Of Man Eiland Man - + Israel Israel - + Italy Italië - + Jamaica Jamaika - + Japan Japan - + Jersey Jersey - + Jordan Jordanië - + Kazakhstan Kazakhstan - + Kenya Kenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Korea, Demokratiese Volksrepubliek van - + Korea, Republic Of Korea, Republiek van - + Kuwait Koeweit - + Kyrgyzstan Kirgisistan - + Lao People'S Democratic Republic Lao Volks- Demokratiese Republiek - + Latvia Letland - + Lebanon Libanon - + Lesotho Lesotho - + Liberia Liberië - + Libyan Arab Jamahiriya Libië - + Liechtenstein Liechtenstein - + Lithuania Litaue - + Luxembourg Luxemburg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Masedonië (FYROM) - + Madagascar Madagaskar - + Malawi Malawi - + Malaysia Maleisië - + Maldives Maledive - + Mali Mali - + Malta Malta - + Marshall Islands Marshalleilande - + Martinique Martinique - + Mauritania Mauritanië - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Meksiko - + Micronesia, Federated States Of Mikronesië, Federale State van - + Moldova, Republic Of Moldowa, Republiek van - + Monaco Monaco - + Mongolia Mongolië - + Montserrat Montserrat - + Morocco Marokko - + Mozambique Mosambiek - + Myanmar Birma - + Namibia Namibië - + Nauru Nauru - + Nepal Nepal - + Netherlands Nederland - + Netherlands Antilles Nederlandse Antille - + New Caledonia Nieu-Caledonië - + New Zealand Nieu-Seeland - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigerië - + Niue Niue - + Norfolk Island Norfolkeiland - + Northern Mariana Islands Noordelike Marianaeilande - + Norway Noorweë - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Palesteinse Gebied, Besette - + Panama Panama - + Papua New Guinea Papoea-Nieu-Guinee - + Paraguay Paraguay - + Peru Peru - + Philippines Filippyne - + Pitcairn Pitcairn - + Poland Pole - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Katar - + Reunion Reunion - + Romania Roemenië - + Russian Federation Russiese Federasie - + Rwanda Rwanda - + Saint Helena Sint Helena - + Saint Kitts And Nevis Sint Kitts en Nevis - + Saint Lucia Sint Lucia - + Saint Pierre And Miquelon Sint Pierre en Miquelon - + Saint Vincent And The Grenadines Sint Vincent en die Grenadine - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe Sao Tome en Principe - + Saudi Arabia Saoedi-Arabië - + Senegal Senegal - + Serbia And Montenegro Serwië en Montenegro - + Seychelles Seychelle - + Sierra Leone Sierra Leone - + Singapore Singapoer - + Slovakia Slowakye - + Slovenia Slowenië - + Solomon Islands Salomonseilande - + Somalia Somalië - + South Africa Suid-Afrika - + South Georgia And The South Sandwich Islands Suid-Georgië en die Suid-Sandwich-eilande - + Spain Spanje - + Sri Lanka Sri Lanka - + Sudan Soedan - + Suriname Suriname - + Svalbard And Jan Mayen Svalbard en Jan Mayen - + Swaziland Swaziland - + Sweden Swede - + Switzerland Switserland - + Syrian Arab Republic Sirië, Arabiese Republiek van - + Taiwan, Province Of China Taiwan (Republiek van Sjina) - + Tajikistan Tadjikistan - + Tanzania, United Republic Of Tanzanië, Verenigde Republiek van - + Thailand Thailand - + Timor-Leste Oos-Timor - + Togo Togo - + Tokelau Tokelau - + Tonga Tongaans - + Trinidad And Tobago Trinidad en Tobago - + Tunisia Tunisië - + Turkey Turkye - + Turkmenistan Turkmenistan - + Turks And Caicos Islands Turkse en Caicos-eilande - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Oekraïne - + United Arab Emirates Verenigde Arabiese Emirate - + United Kingdom Verenigde Koninkryk - + United States Verenigde State - + United States Minor Outlying Islands Verenigde State se Klein Buite-eilande - + Uruguay Uruguay - + Uzbekistan Oesbekistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Viëtnam - + Virgin Islands, British Britse Maagde-eilande - + Virgin Islands, U.S. Amerikaanse Maagde-eilande - + Wallis And Futuna Wallis en Futuna - + Western Sahara Wes-Sahara - + Yemen Jemen - + Zambia Zambië - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Is jy seker jy wil die spelnaam van "%1" as onvanpas rapporteer? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3389,273 +3442,273 @@ p, li { white-space: pre-wrap; } <a>&#9734;</a> - + Hands Hande - + Chat Klets - + Save Stoor - + Log Log - + Away Weg - + Manual Action (default) Handmatige aksie (verstek) - + Auto-Check / Auto-Fold Outo-inhou / outo-uitsit - + Auto-Check / Auto-Call-Any Outo-inhou / outo-roep enige - + Speed: Spoed: - - + + Start Local Game ... Begin plaaslike spel... - - + + Ctrl+N Ctrl+N - - + + Quit Verlaat - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... Aangaande PokerTH... - - + + Settings ... Instellings... - - + + Create Network Game ... Netwerkspel skep... - - + + Ctrl+O Ctrl+O - - + + Join Network Game ... By netwerkspel aansluit... - - + + Ctrl+J Ctrl+J - - - + + + Fullscreen Volskerm - - + + Ctrl+F Ctrl+F - - + + Show/Hide Chat Window Wys/versteek kletsvenster - - + + Ctrl+T Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window Wys/versteek handevenster - - + + Ctrl+H Ctrl+H - - + + Show/Hide Log Window Wys/versteek logvenster - - + + Ctrl+L Ctrl+L - - + + Internet Game ... Internetspel... - - + + Ctrl+I Ctrl+I - - + + Show/Hide Away Window Wys/versteek wegweesvenster - - + + Ctrl+A Ctrl+A - + Kick Skop - + Vote Timeout: Stem vir uittelling: - + Yes Ja - + No Nee - + Player info Speler-info - + Chance Kans - + Configure PokerTH ... PokerTH opstel... - - + + Close Toemaak - - + + Ctrl+X Ctrl+X - + Vote started by: Stemming begin deur: - - + + Show/Hide Chance Window Wys/versteek kansvenster - - + + Ctrl+C Ctrl+C - + &View &Bekyk - + &Settings &Instellings - + Shortcut: <Shift> Kortpad: <Shift> - + Settings Instellings - + Configure PokerTH @@ -3663,142 +3716,147 @@ p, li { white-space: pre-wrap; } gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Die oopbron-Texas Holdem-enjin - - - - - - - - + + + + + + + + Start Begin - - - - - + + + + + Lobby Voorkamer - - + + Chat Klets - + Closing PokerTH during network game PokerTH tydens netwerkspel toemaak - + You are the hosting server. Do you want to close PokerTH anyway? Jy is die gasheerbediener. Wil jy nog steeds PokerTH toemaak? - + Really want to exit? Wil jy regtig verlaat? - + PokerTH - Close Table? PokerTH - maak tafel toe? - + PokerTH - Internet Game Message PokerTH - Internetspelboodskap - + Attention! Do you really want to leave the current game and go back to the lobby? Let op! Wil jy regtig die huidige spel verlaat en na die voorkamer terugkeer? - - + + Chat is only available to registered players. Klets werk net vir geregistreerde spelers. - - + + Spectators + + + + + Chance Kans - - + + Kick Skop - - + + Do you want to kick <b>%1</b><br>from this game? Wil jy <b>%1</b><br> uit hierdie spel skop? - - - - + + + + <b>%1</b> secs left <b>%1</b> sek oor - + vote stem - + votes stemme - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Speler <b>%1</b> het <b>%2</b> %3<br> teen hom. <b>%4</b> stem(e) nodig om te skop. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Jy het <b>%1</b> %2 teen jou.<br><b>%3</b> stem(e) nodig om te skop. @@ -4015,57 +4073,67 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Kon nie bedienerprofiellêer laai nie - - - - Could not load server-profiles-file: - Kon nie bedienerprofielelêer laai nie: + Kon nie bedienerprofielelêer laai nie: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error Kon nie bedienerprofiel stoor nie - + A profile with the name: %1 already exists. Would you like to overwrite ? 'n Profiel genaamd %1 bestaan reeds. Wil jy dit oorheenskryf? - + Read Server-Profile List Error Kon nie bedienerprofiellys lees nie - + Could not read server-profiles list Kon nie bedienerprofielelys lees nie - - + + Save Server-Profile-File Error Kon nie bedienerprofiellêer stoor nie - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Kon nie bedienerprofielelêer stoor nie: + Kon nie bedienerprofielelêer stoor nie: @@ -4130,12 +4198,12 @@ Wil jy dit oorheenskryf? manualBlindsOrderDialogImpl - + Manual Blinds Order Handmatige blindesvolgorde - + You cannot set more than 30 manual blinds. Jy kan nie meer as 30 handmatige blindes opstel nie. @@ -4200,7 +4268,7 @@ Wil jy dit oorheenskryf? - + Use saved blinds settings Gebruik gestoorde blindesinstellings @@ -4211,13 +4279,13 @@ Wil jy dit oorheenskryf? - + Change blinds settings ... Verander blindesinstellings... - + Game Speed: Spelspoed: @@ -4258,38 +4326,38 @@ Wil jy dit oorheenskryf? selectAvatarDialogImpl - - - + + + Avatar File Error Avatarlêer-fout - + Please select an avatar from the list! Kies asseblief 'n avatar uit die lys! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Die lêergrootte van die gekose prent is te groot. (maks 30 KB) Kies asseblief 'n kleiner prent! - + The entered avatar picture doesn't exist. Please enter an valid picture! Die ingetikte avatarprent bestaan nie. Tik asseblief 'n geldige prent in! - + Select external avatar picture Kies eksterne avatarprent - + Images (*.png *.jpg *.gif) Prente (*.png *.jpg *.gif) @@ -4310,134 +4378,152 @@ Tik asseblief 'n geldige prent in! Koppelvlak - - + + Language: Taal: - - + + Show fade-out animation for non-winning cards Wys uitdoof-animasie vir niewen-kaarte - - + + Show flip-card animation Wys kaartomdraai-animasie - - + + Show buttons for small blind and big blind Wys knoppies vir klein blinde en groot blinde - - + + Show own cards only on mouse click Wys eie kaarte net met muiskliek - + Reverse order of F-Keys (F1 - F4) Keer F-sleutels (F1-F4) se volgorde om - - + + Network / Internet Game Netwerk-/internetspel - - + + Switch keyboard focus to bet-input-field if it's your turn Skakel sleutelbordfokus oor na wed-intikveld as dit jou beurt is - + Sound Klank - + Factory Settings Fabrieksinstellings - - + + + Common + + + + + Disable splashscreen on startup Deaktiveer splatskerm aan begin - - + + Show country flag in the corner of avatar Wys landsvlag in hoek van avatar - - + + Activate the "accidentally call after big raise" blocker Aktiveer die blokker vir "per abuis roep ná groot verhoging" - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table Speltafel - - - - + + + + Description Beskrywing - - - - + + + + Maintainer Onderhouer - - - + + + State Staat - - + + Card Deck Kaartpak - - + + Card Back Kaartagterkant - - + + Use card back from card style Gebruik kaartagterkant van kaartstyl - - + + Use custom card back picture: Gebruik eie kaartagterkant-prent: @@ -4460,197 +4546,203 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Let wel: Beste avatargehalte met prentratio soos </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">width=48, height=76.</span></p></td></tr></table></body></html> - - + + Play sound effects Speel klankeffekte - - + + Sound Volume: Klankvolume: - - + + 10 10 - - + + Sound Categories Klankkategorieë - - + + Play game actions sounds like "check", "call", "raise" Speel spelaksieklanke soos "inhou", "roep", "verhoog" - - + + Play lobby chat notifications Speel voorkamerklets-berigte - - + + Play network/internet game notifications like "player joined the game" Speel netwerk/internetspel-berigte soos "speler het by spel aangesluit" - + Local Game Settings Plaaslikespel-instellings - - + + Number of players: Getal spelers: - - - - + + + + Start Cash: Begingeld: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Eerste klein blinde: - - - - + + + + Raise blinds: Verhoog blindes: - - - - - - - - + + + + + + + + Every: Elke: - - - - + + + + hands hande - - - - + + + + minutes minute - - - - + + + + Raise mode: Verhoogmodus: - - - - + + + + Always double blinds Blindes altyd verdubbel - - - - + + + + Manual blinds order: Handmatige blindesvolgorde: - - - - + + + + Edit ... Redigeer... - - + + Game Speed: Spelspoed: - - + + Pause between hands (press "start" button to go on) Wag tussen hande (druk "begin"-knop om voort te gaan) - - + + Show game settings dialog on every new game Wys spelinstellings-dialoog by elke nuwe spel - - + + Server Password: - + + + Allow spectators to watch the game + + + + OK - + Network Game Settings Netwerkspel-instellings - - + + Maximum number of players: Maksimum getal spelers: - - + + Timeout for player action: Uittelling vir speleraksie: @@ -4687,14 +4779,14 @@ p, li { white-space: pre-wrap; } Voer uit as HTML - - + + Reset all settings to default ... Stel alle instellings terug na verstek... - - + + Note: You can not reset all settings to default during a running game! Let wel: Jy kan nie tydens 'n aktiewe spel alle instellings terugstel na verstek nie! @@ -4719,66 +4811,66 @@ p, li { white-space: pre-wrap; } Loglêer - - - - + + + + s s - - + + Network Server Settings Netwerkbediener-instellings - - - - + + + + Server Port: Bedienerpoort: - - - - + + + + Use SCTP Gebruik SCTP - - - - + + + + Use IPv6 Gebruik IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Wat is dit?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Wat is dit?</a> - + Internet Game Settings Internetspel-instellings - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4789,61 +4881,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Let wel: verstek-</span><span style=" font-weight:600; font-style:italic;">spelinstellings</span><span style=" font-style:italic;"> soos "Maksimum getal spelers", "Begingeld" en "Klein blinde" sal gebruik word </span><span style=" font-weight:600; font-style:italic;">uit die netwerkspel-instellings.</span></p></body></html> - - + + Server Address: Bedieneradres: - - + + Use password for private game: Gebruik wagwoord vir private spel: - - + + Computer Engine Rekenaarenjin - - + + Opponent 6: Opponent 6: - - + + Opponent 5: Opponent 5: - - + + Opponent 4: Opponent 4: - - + + Opponent 3: Opponent 3: - - + + Opponent 2: Opponent 2: - - + + Opponent 1: Opponent 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4854,8 +4946,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Let wel: Beste avatargehalte met prentratio soos </span><span style=" font-weight:600; font-style:italic;">width=50, height=50.</span></p></body></html> - - + + Enable/Disable Logging Aktiveer/deaktiveer logskryf @@ -4864,105 +4956,105 @@ p, li { white-space: pre-wrap; } Stoor loglêers vir - - + + Log File Directory: Loglêer-gids: - - + + Write log after every: Skryf loglêer na elke: - - + + action (high frequent disc access) aksie (baie gereelde skyftoegang) - - + + hand (medium disc access) hand (medium skyftoegang) - - + + game (low disc access) spel (min skyftoegang) - + Log Messages Logboodskappe - + Player Nicks/Avatars Speler-kenname/avatars - + Show right toolbox Wys regter nutskas - + Show left toolbox Wys linker nutskas - - + + Play blind raise notification Berig dat spel se blinde verhoog - - + + Automatic Server Configuration URL URL vir outomatiese bedieneropstelling - - + + Serverlist Address: Bedienerlys-adres: - - + + Manual Server Configuration Handmatige bedieneropstelling - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: Stoor loglêers vir: - - + + Day(s) Dag(e) @@ -4991,62 +5083,62 @@ p, li { white-space: pre-wrap; } Kenname/avatars - - + + Show cards chance monitor Wys kaartkansmonitor - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: Avatarbediener: - + Style Styl - - + + Don't translate poker strings like check, call, raise from game table style Moenie pokerwoorde soos check, call en raise op die speltafelstyl vertaal nie - - - - + + + + Add ... Byvoeg... - - - - + + + + Remove Verwyder - - - - + + + + Preview - Information: Voorskou - inligting: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5059,8 +5151,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Kry nuwe PokerTH-speltafelstyle...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5073,7 +5165,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Kry nuwe PokerTH-kaartpakstyle...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5092,96 +5184,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Let wel: Beste avatargehalte met prentratio soos </span><span style=" font-weight:600; font-style:italic;">width=48, height=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Wagtyd tussen hande: - - + + Server Bediener - - + + Game Spel - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Verstek spelnaam: - - + + Default game type: Verstek speltipe: - - + + Standard Standaard - - + + Registered players only Net geregistreerde spelers - - + + Invited players only Net genooide spelers - - + + Ranking game Gradeerspel - - + + Show lobby chat Wys voorkamerklets - - + + Automatically leave the table after the game finished Verlaat tafel outomaties sodra spel afgehandel is - - + + Ignored Players Geïgnoreerde spelers - - + + Player Speler - - + + Remove Player Verwyder speler - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5194,20 +5286,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Mensspeler:<br /><span style=" font-style:italic;">(Hierdie kennaam sal ook gebruik word vir die aanlynspel-aanmeld)</span></p></body></html> - - + + Opponent 7: Opponent 7: - - + + Opponent 8: Opponent 8: - - + + Opponent 9: Opponent 9: @@ -5285,65 +5377,65 @@ p, li { white-space: pre-wrap; } Turks - - - - - + + + + + Settings Error Instellingsfout - + The entered flipside picture doesn't exist. Please enter an valid picture! Die ingetikte omkeerkantprent bestaan nie. Tik asseblief 'n geldige prent in! - - + + The log file directory doesn't exist. Please select an valid directory! Die loglêer-gids bestaan nie. Kies asseblief 'n geldige gids! - + Language Changed Taal verander - + You have changed application language to %1. Please restart PokerTH to load new language! Jy het die program se taal na %1 verander. Herbegin asseblief PokerTH om nuwe taal te laai. - + Select your flipside picture Kies jou omkeerkantprent - + Images (*.png *.jpg *.gif) Prente (*.png *.jpg *.gif) - + Open Directory Maak gids oop - - + + Blinds Error Blindes-fout - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5377,7 +5469,7 @@ Hierdie eerste-klein-blinde-waarde sal na die maksimum toegelate waarde gestel w Sweeds - + The entered server list address is not a valid URL. Please enter a valid server list address! Die ingetikte bedienerlysadres is nie 'n geldige URL nie. @@ -5434,140 +5526,140 @@ Tik asseblief 'n geldige bedienerlysadres in. - + The opponent names are not unique. Please choose different names for each Opponent! Die opponentname is nie uniek nie. Kies asseblief verskillende name vir die opponente! - + Settings Information Instellingsinligting - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Jy het die loglêer-gids verander. Herbegin asseblief PokerTH om die nuwe gids vir loglêers te laai! - - + + Maintainer Name Onderhouer se naam - - + + Maintainer EMail Onderhouer se posadres - - + + Create Date Skep datum - + Windows Behaviour Venstergedrag - + scaleable vergroot/kleinbaar - + fixed vasgestel - + Minimum Size Minimumgrootte - + Maximum Size Maksimumgrootte - + Fixed Size Vaste grootte - + State Staat - + Please select your game table style Kies asseblief jou speltafelstyl - + PokerTH game table styles (*.xml) PokerTH-speltafelstyle (*.xml) - + Game Table Style Error Speltafelstyl-fout - + Selected game table style file is already in the list. Please select another one to add! Gekose speltafelstyl-lêer is reeds in die lys. Kies asseblief 'n ander om by te voeg. - + Game Table Style File Error Speltafelstyl-lêerfout - + Could not load game table style file correctly. Style will not be placed into list! Kon nie speltafelstyl-lêer korrek laai nie. Styl sal nie by lys gevoeg word nie. - + Please select your card deck style Kies asseblief jou kaartpakstyl. - + PokerTH card deck styles (*.xml) PokerTH-kaartpakstyle (*.xml) - + Card Deck Style Error Kaartpakstyl-fout - + Selected card deck style file is already in the list. Please select another one to add! Gekose kaartpakstyl-lêer is reeds in die lys. Kies asseblief 'n ander om by te voeg. - + Card Deck Style File Error Kaartpakstyl-lêerfout - + Could not load card deck style file correctly. Style will not be placed into list! Kon nie kaartpakstyl-lêer korrek laai nie. @@ -5606,12 +5698,12 @@ Styl sal nie by lys gevoeg word nie. PokerTH se skoonteks-log (*.txt) - + PokerTH - Settings PokerTH - Instellings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Let op! Dit sal al jou persoonlike instellings skrap en PokerTH verlaat! @@ -5697,12 +5789,12 @@ Wil jy regtig terugstel na die fabrieksinstellings? startNetworkGameDialogImpl - + Server Error Bedienerfout - + You should not kick yourself from this game! Jy moenie jouself uit hierdie spel skop nie! @@ -5869,106 +5961,106 @@ Wil jy regtig terugstel na die fabrieksinstellings? startWindowImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Netwerkfout - + Server address was not set. Bedieneradres is nie gestel nie. - + An invalid port was set (ports 0-1023 are not allowed). 'n Ongeldige poort is gestel (poorte 0-1023 word nie toegelaat nie). - + Could not create a socket for TCP communication. Kon nie 'n sok vir TCP-kommunikasie skep nie. - + Could not set the IP address. Kon nie die IP-adres stel nie. - + Could not set the port for this type of address. Kon nie die poort vir hierdie tipe adres stel nie. - + The server name could not be resolved. Kon nie die bedienernaam oplos nie. - + Bind failed - please choose a different port. Kon nie bind nie - kies asseblief 'n ander poort. - + Internal network error: "listen" failed. Interne netwerkfout: kom nie "luister" nie. - + Server execution was terminated. Bedienerlopie is beëindig. - + Could not connect to the server. Kon nie aan die bediener koppel nie. - + Connection timed out. Please check the server address. @@ -5979,12 +6071,12 @@ Kontroleer asseblief die bedieneradres. As die bediener agter 'n NAT-roeteerder is, maak seker poortaanstuur is aan die bedienerkant opgestel. - + Internal network error: "select" failed. Interne netwerkfout: kon nie "kies" nie. - + Internal network error: "send" failed. Interne netwerkfout: kom nie "stuur" nie. @@ -5993,26 +6085,26 @@ As die bediener agter 'n NAT-roeteerder is, maak seker poortaanstuur is aan Die verbinding is deur die bediener toegemaak. - + Internal network error: Duplicate TCP connection. Interne netwerkfout: Duplikaat-TCP-verbinding. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. 'n Ongeldige netwerkpakkie is ontvang. Maak asseblief dat alle spelers dieselfde weergawe van PokerTH gebruik. - + Internal state error. Please make sure that all players use the same version of PokerTH. Interne staatfout. Maak asseblief dat alle spelers dieselfde weergawe van PokerTH gebruik. - + Invalid server list URL. Please correct the address in the settings. Ongeldige bedienerlys-URL. @@ -6031,314 +6123,314 @@ Please make sure that the server list URL is correct. Maak asseblief seker dat die bedienerlys-URL reg is. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. Die PokerTH-internetbedienerlys bevat ongeldige data. As jy 'n doelgemaakte bedienerlys gebruik, maak asseblief seker dat dit in die regte formaat is. - + Could not unzip the PokerTH internet server list. Kon nie die PokerTH-internetbedienerlys uitpak nie. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Kon nie die PokerTH-internetbedienerlys aflaai nie. Maak asseblief seker adt jy direk aan die internet gekoppel is. - + Could not open the target file when downloading the server list. Kon nie die teikenlêer oopmaak toe die bedienerlys afgelaai is nie. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Die PokerTH-bediener werk nie met hierdie weergawe van die spel nie.<br>Besoek asseblief <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> en laai die jongste weergawe af. - + Sorry, this server is already full. Jammer, hierdie bediener is reeds vol. - + Invalid login. Please check your username and password. Ongeldige aanmeld. Kontroleer asseblief jou gebruikernaam en wagwoord. - + Your account is blocked indefinitely. Jou rekening is onbepaald geblokeer. - + You cannot login at this time. Please try again in a few seconds. Jy kan nie nou aanmeld nie. Probeer asseblief weer oor 'n paar sekondes. - + You cannot join this game, because another player in that game has your network address. Jy kan nie by hierdie spel aansluit nie omdat 'n ander speler in daardie spel dieselfde netwerkadres as jy het. - + Your connection to the server is very slow, the game had to start without you. Jou verbinding met die bediener is baie stadig, en daarom het die spel sonder jou begin. - + This game is of type invite-only. You cannot join this game without being invited. Hierdie spel is van die tipe nooi-alleen. Jy kan nie by hierdie spel aansluit as jy nie genooi is nie. - + Invalid password when joining the game. Please reenter the password and try again. Ongeldige wagwoord toe by die spel aansluit. Tik asseblief weer die wagwoord in, en probeer weer. - + The avatar report was accepted by the server. Thank you. Die avatarrapport is deur die bediener aanvaar. Dankie. - + This avatar was already reported by another player. Hierdie avatar is reeds deur 'n ander speler gerapporteer. - + An error occurred while reporting the avatar. 'n Interne fout het voorgekom toe avatar gerapporteer is. - + The password is too long. Please choose another one. Die wagwoord is te lank. Kies asseblief 'n ander naam. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Begin netwerkspel - + The connection to the server was lost. Die verbinding met die bediener is laat val. - + The game name is either too short or too long. Please choose another one. Die spelnaam is óf te kort óf te lank. Kies asseblief 'n ander naam. - + The game could not be found. Kon nie die spel vind nie. - + The chat text is invalid. Die kletsteks is ongeldig. - + The server referred to an unknown player. Aborting. Die bediener verwys na 'n onbekende speler. Ons staak dus. - + Internal error: The current player could not be found. Interne fout: Kon nie die huidige speler vind nie. - + Internal error: The current player is not active. Interne fout: Die huidige speler is nie aktief nie. - + You were kicked from the server. Jy is van die bediener af geskop. - + You were temporarily banned from the server. Jy is tydelik van die bediener af verban. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Jou bedienerverbinding het uitgetel vanweë geen aktiwiteit. Jy is welkom om weer te koppel! - + The client player count is invalid. Die kliëntspelertelling is ongeldig. - + Too many manual blinds were set. Please reconfigure the manual blinds. Te veel handmatige blindes is gestel. Stel asseblief weer die handmatige blindes op. - + An invalid avatar file was configured. Please choose a different avatar. 'n Ongeldige avatarlêer is opgestel. Kies asseblief 'n ander avatar. - + The selected avatar file is too large. Please choose a different avatar. Die gekose avatarlêer is te groot. Kies asseblief 'n ander avatar. - + An internal avatar error occured. Please report this to an admin in the lobby chat. 'n Interne avatarfout het voorgekom. Rapporteer dit asseblief aan 'n admin in die voorkamerklets. - + Could not start game: Synchronization failed. Kon nie spel begin nie: sinchronisering het misluk. - + The server is down for maintenance. Please try again later. Die bediener is af vir onderhoud. Probeer asseblief later weer. - + An internal error occured. 'n Interne fout het voorgekom. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Netwerkberigte - + You were kicked from the game. Jy is uit die spel geskop. - + Sorry, this game is already full. Jammer, hierdie spel is reeds vol. - + Unable to join - the server has already started the game. Kan nie aansluit nie - die bediener het reeds met die spel begin. - + Your admin state timed out due to inactivity. Feel free to create a new game! Jou adminstaat het uitgestel vanweë geen aktiwiteit. Skep gerus 'n nuwe spel. - + You cannot join this type of game as guest. Jy kan nie by hierdie tipe spel as 'n gas aansluit nie. - + The settings are invalid for this type of game. Die instellings is ongeldig vir hierdie tipe spel. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. 'n Nuwe weergawe van PokerTH is beskikbaar.<br>Besoek asseblief <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> en laai die jongste weergawe af. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Hierdie betaweergawe van PokerTH is verouderd.<br>Besoek asseblief <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> en laai die jongste weergawe af. - - + + Server Message Bedienerboodskap - + The game name report was accepted by the server. Thank you. Die spelnaamrapport is deur die bediener aanvaar. Dankie. - + This game name was already reported by another player. Hierdie spelnaam is reeds deur 'n ander speler gerapporteer. - + An error occurred while reporting the game name. 'n Fout het voorgekom toe die spelnaam gerapporteer is. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. diff --git a/ts/pokerth_bg.ts b/ts/pokerth_bg.ts index df09d566..c6b3c93e 100644 --- a/ts/pokerth_bg.ts +++ b/ts/pokerth_bg.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -168,22 +167,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -309,52 +308,52 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) @@ -401,13 +400,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -436,18 +435,18 @@ Please verify that you are uploading a valid PokerTH log file. - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + PokerTH - Question - + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -476,8 +475,8 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About Относно @@ -498,37 +497,37 @@ Please verify that you are uploading a valid PokerTH log file. © 2006-2007, FHammer, FThauer, LMay - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project Проект - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> @@ -555,8 +554,8 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Страница на проекта : </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> <a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">IRC: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> #pokerth (irc.freenode.net)</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Автори: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Felix Hammer (<a href="mailto:doitux@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - първоначална идея, архитектура, интерфейс дизайн, Линукс пакет</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Florian Thauer (<a href="mailto:floty@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - първоначална идея, архитектура, разработка на мотора</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Lothar May (<a href="mailto:lotodore@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - архитектура, мрежово разработване, Уиндоус пакет</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Oskar Lindqvist (<a href="mailto:tranberry@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - интерфейс дизайн, уебсайт</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Erhard List (<a href="mailto:dunkanx@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">dunkanx@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - MacOS пакет</p></body></html> - - + + Translation Превод @@ -568,8 +567,8 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">dankh - Bulgarian(Български)</p></body></html> - - + + Thanks to Благодарим на @@ -594,13 +593,19 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"> - <span style=" font-weight:400;">for different popular avatar picture resources</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Viktoria, Benedikt, Erhard, Felix, Florian, Linus, Lothar, Mark, Steffi, Caro</span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - for people avatar pictures</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">ZeiZei</span> </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - for "misc" avatar pictures</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - for different gpl lizensed sounds</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">doc_dos</span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - for self recorded chip sounds</p></body></html> - - + + License Лиценз - + + + Third party libs + + + + Close Затвори @@ -622,8 +627,8 @@ p, li { white-space: pre-wrap; } ?} {2006-2008,?} - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -632,7 +637,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -884,12 +889,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Персонализиран ред за входа - + You cannot set more than 30 manual blinds. Не можете да сложите повече от 30 персонализирани входа. @@ -1041,7 +1046,7 @@ Please choose another one! - + Default game name: @@ -1076,37 +1081,37 @@ Please choose another one! - - + + Maximum number of players: Максимален брой играчи: - - + + Start Cash: Първоначални пари: - - + + $ $ - + Blinds Вход - + Use saved blinds settings Използвай запазените настройки за входа - + Change blinds settings ... Промени настройките за входа... @@ -1116,39 +1121,45 @@ Please choose another one! Скорост на игра на компютърните играчи: - + Timeout for player action: Време за действие на играча: - - + + s сек - - + + Password: Парола: - + Delay between hands: - - + + + Allow spectators to watch the game + + + + + Create Game Създай игра - + Cancel Отказ @@ -1273,8 +1284,10 @@ Please choose another one! Игра + + Players - Играчи + Играчи State @@ -1285,44 +1298,50 @@ Please choose another one! Частен - - + + 5 - Show open & non-full & ranking games - - + + Game Info Информация за играта - - + + Connected Players Свързани играчи - - + + + Spectators + + + + + Start Cash: Първоначални пари: - - + + First small blind: - - + + Blinds raise interval: - - + + Blinds raise mode: @@ -1332,7 +1351,7 @@ Please choose another one! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1341,26 +1360,26 @@ p, li { white-space: pre-wrap; } - - + + Fill up with computer opponents Попълни играта с компютърни играчи - - + + Sort alphabetically - - + + Sort by country - - + + Display idle players @@ -1373,14 +1392,14 @@ p, li { white-space: pre-wrap; } Изгони играч - - + + &Start Game - - + + &Kick Player @@ -1405,8 +1424,8 @@ p, li { white-space: pre-wrap; } Метод на увеличаване на входа: - - + + Manual blinds list: Персонализиран лист за входа: @@ -1415,74 +1434,68 @@ p, li { white-space: pre-wrap; } Време за действие на играча (сек): - - + + Game type: - - + + Timing: - - + + &Leave Game - - - Join &any game - - - - - + + &Create Game - - + + &Join Game - - + + 0 - No game list filter - - + + search for player ... - - + + 1 - Show open games - - + + 2 - Show open & non-full games - - + + 3 - Show open & non-full & non-private games - - + + 4 - Show open & non-full & private games @@ -1503,8 +1516,8 @@ p, li { white-space: pre-wrap; } Присъедини се към игра - - + + Lobby-Chat Лоби-чат @@ -1521,46 +1534,46 @@ p, li { white-space: pre-wrap; } Играта на %1 - + Joining a private Game Присъединяване към частна игра - + You are about to join a private game. Please enter the password! Присъединявате се към частна игра. Моля вкарайте паролата! - + open отвори - - - - + + + + Game Info Информация за играта - - - + + + Game Игра - - - + + + Players Играчи - - - + + + State Статус @@ -1569,76 +1582,71 @@ p, li { white-space: pre-wrap; } Частен - - - + + + P - - - + + + Available Players Свободни играчи - + Invite player - + Ignore player - + Player infos ... - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - Connected players - max. %1 - - - - - - + + + T @@ -1653,115 +1661,127 @@ p, li { white-space: pre-wrap; } - - - + + Spectate + + + + + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game - - - Connected players - Max. %1 - - - - + running работи - - + + running games: %1 течящи игри: %1 - - + + open games: %1 отворени игри: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -1770,1320 +1790,1314 @@ Feel free to invite other players by right-clicking on their nick in the availab играчи в чата: %1 - - + + connected players: %1 свързани играчи: %1 - - - Connected players - - - - + hands ръце - + minutes минути - + double blinds удвои входа - + manual blinds order персонализиран ред за входа - + Server Error Грешка със сървъра - + You should not kick yourself from this game! Не би трябвало да игонвате себе си от тази игра! - + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3096,47 +3110,47 @@ Feel free to invite other players by right-clicking on their nick in the availab PokerTH 0.6-beta - Тексас Холдем покер мотора с отворен код - + Hands Ръце - + Chat Чат - + Save Запази - + Log Отчитане - + Away Заминал - + Manual Action (default) Ръчно действие (по подразбиране) - + Auto-Check / Auto-Fold Автоматично-Приемай / Автоматично-Оттегляй - + Auto-Check / Auto-Call-Any Автоматично-Приемай / Автоматично-Отговаряй на всичко - + Speed: Скорост: @@ -3153,228 +3167,228 @@ Feel free to invite other players by right-clicking on their nick in the availab Игра в мрежата - - + + Start Local Game ... Започни локална игра... - - + + Ctrl+N Ctrl+N - - + + Quit Изход - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... Относно PokerTH... - - + + Settings ... Настройки ... - - + + Create Network Game ... Създай игра в мрежата ... - - + + Ctrl+O Ctrl+O - - + + Join Network Game ... Присъедини се към игра в мрежа ... - - + + Ctrl+J Ctrl+J - - - + + + Fullscreen Пълен екран - - + + Ctrl+F Ctrl+F - - + + Show/Hide Chat Window Покажи/Скрий чат прозорец - - + + Ctrl+T Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window Покажи/Скрий прозореца с ръцете - - + + Ctrl+H Ctrl+H - - + + Show/Hide Log Window Покажи/Скрий прозореца с регистъра - - + + Ctrl+L Ctrl+L - - + + Internet Game ... Интернет игра ... - - + + Ctrl+I Ctrl+I - - + + Show/Hide Away Window Покажи/Скрий "Заминал" прозореца - - + + Ctrl+A Ctrl+A - + Kick - + Vote Timeout: - + Yes - + No - + Player info - + Chance - + Settings Настройки - + Configure PokerTH - + Configure PokerTH ... - - + + Close Затвори - - + + Ctrl+X - + Vote started by: - - + + Show/Hide Chance Window - - + + Ctrl+C - + &View - + &Settings - + Shortcut: <Shift> @@ -3382,19 +3396,19 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Спри @@ -3407,7 +3421,7 @@ Feel free to invite other players by right-clicking on their nick in the availab Ctrl+N за да започнете нова игра - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Тексас Холдем покер мотора с отворен код @@ -3426,23 +3440,23 @@ Please choose another one. F1 - Всичко вътре | F2 - Заложи/Наддай | F3 - Приеми/Орговори | F4 - Оттегли се - - - - - - - - + + + + + + + + Start Започни - - - - - + + + + + Lobby Лоби @@ -3649,102 +3663,107 @@ Please choose a different name. Автоматичен метод е настроен: Приемай или се оттегляй. - - + + Chat Чат - + Closing PokerTH during network game Затваряне на PokerTH по време на игра в мрежа - + You are the hosting server. Do you want to close PokerTH anyway? Вие сте сървъра домакин. Искате ли да затворите PokerTH все пак ? - + PokerTH - Internet Game Message PokerTH - Съобщение от интернет игра - + Attention! Do you really want to leave the current game and go back to the lobby? Внимание! Наистина ли искате да напуснете играта и да се върнете в лобите ? - - + + Chance - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. + + + Spectators + + internetGameLoginDialog @@ -3938,57 +3957,67 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Грешка при зареждането на профила на сървъра - - - - Could not load server-profiles-file: - Проблем в зареждането на файла с прфилa за сървърa: + Проблем в зареждането на файла с прфилa за сървърa: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error Грешка при запазването на сървър профила - + A profile with the name: %1 already exists. Would you like to overwrite ? Профил с името: %1 вече съществува. Искате ли да запишете новия върху вече съществуващия ? - + Read Server-Profile List Error Грешка при четенето на листата с прфилите на сървърите - + Could not read server-profiles list Четенето на файла с листата с прфилите на сървърите е невъзможно - - + + Save Server-Profile-File Error Грешка при запазването на листата с прфилите на сървърите - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Запазването на файла с листата с прфилите на сървърите е невъзможно: + Запазването на файла с листата с прфилите на сървърите е невъзможно: @@ -4461,12 +4490,12 @@ and go back to the lobby? manualBlindsOrderDialogImpl - + Manual Blinds Order Персонализиран ред на входа - + You cannot set more than 30 manual blinds. Не можете да сложите повече от 30 персонализирани входа. @@ -4535,7 +4564,7 @@ and go back to the lobby? - + Use saved blinds settings Използвай запазените настройки за вход @@ -4546,13 +4575,13 @@ and go back to the lobby? - + Change blinds settings ... Промени настройките за Входа... - + Game Speed: Скорост на играта: @@ -4593,38 +4622,38 @@ and go back to the lobby? selectAvatarDialogImpl - - - + + + Avatar File Error Грешка във файла на аватара - + Please select an avatar from the list! Моля изберете аватар от листата! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Размера на файла с избраната картинка е много голям (максимално 30кб) Моля изберете по-малка картинка! - + The entered avatar picture doesn't exist. Please enter an valid picture! Въведената картинка за аватар не съществува Моля изберете валидна картинка за аватар! - + Select external avatar picture Изберете външна картинка за аватар - + Images (*.png *.jpg *.gif) Картинки (*.png *.jpg *.gif) @@ -4649,8 +4678,8 @@ Please enter an valid picture! Интерфейс - - + + Language: Език: @@ -4671,49 +4700,49 @@ Please enter an valid picture! Показвай съобщения в лентата за състоянието - - + + Show fade-out animation for non-winning cards Показвай залязващата анимация за непечелившите карти - - + + Show flip-card animation Показвай анимацията при обръщането на карта - - + + Show buttons for small blind and big blind Показвай бутони за малкия и големия вход - - + + Show own cards only on mouse click Показвай собствените ми карти само при щракване на мишката - + Reverse order of F-Keys (F1 - F4) Обърни реда на F клавишите (F1 - F4) - - + + Play blind raise notification - - + + Network / Internet Game Игра в Мрежа/Интернет - - + + Switch keyboard focus to bet-input-field if it's your turn Ако ви е реда автоматично превключвай фокуса на клавиатурата върху полето за залагане @@ -4739,268 +4768,292 @@ p, li { white-space: pre-wrap; } - + Sound Звук - + Factory Settings - - + + + Common + + + + + Disable splashscreen on startup - - + + Show country flag in the corner of avatar - - + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State Статус - - + + Card Deck - - + + Card Back - - + + Use card back from card style - - + + Use custom card back picture: - - + + Play sound effects Пусни звуковите ефекти - - + + Sound Volume: Сила на звука: - - + + 10 10 - - + + Sound Categories Категории на звука - - + + Play game actions sounds like "check", "call", "raise" Свири действията в играта като на преимер "приемане", "отговаряне", "наддаване" - - + + Play lobby chat notifications Свири съобщенията от лоби чата - - + + Play network/internet game notifications like "player joined the game" Свири съобщенията в интернет/мрежова игра като например "играч се присъедини към играта" - + + + Allow spectators to watch the game + + + + OK - + Local Game Settings Настройки за локална игра - - + + Number of players: Брой играчи: - - - - + + + + Start Cash: Първоначални пари: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Първи малък Вход: - - - - + + + + Raise blinds: Увеличи входа: - - - - - - - - + + + + + + + + Every: Всеки: - - - - + + + + hands ръце - - - - + + + + minutes минути - - - - + + + + Raise mode: Метод на Качване: - - - - + + + + Always double blinds Винаги удвоявай Входа - - - - + + + + Manual blinds order: Персонализиран ред на Входа: - - - - + + + + Edit ... Промени ... - - + + Game Speed: Скорост на играта: - - + + Pause between hands (press "start" button to go on) Пауза между ръцете (натисни "старт" бутона за да започне) - - + + Show game settings dialog on every new game Покажи прозореца с настрийките на играта при започването на всяка нова игра - + Network Game Settings Настройки за игра в мрежа - - + + Maximum number of players: Максимален брой играчи: @@ -5009,14 +5062,14 @@ p, li { white-space: pre-wrap; } Изтрйи - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5025,78 +5078,78 @@ p, li { white-space: pre-wrap; } Скорост на игра на компютърните играчи: - - + + Timeout for player action: Време за действие на играча: - - - - + + + + s сек - - + + Network Server Settings Настройки на сървъра за игра в мрежа - - + + Server Password: Парола за сървъра: - - - - + + + + Server Port: Порт за сървъра: - - - - + + + + Use SCTP Използвай SCTP - - - - + + + + Use IPv6 Използвай IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Какво е това?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Какво е това?</a> - + Internet Game Settings Настройки за игра в мрежата - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5111,14 +5164,14 @@ p, li { white-space: pre-wrap; } Настройки на сървъра за игра в Интернет (Посветен сървър) - - + + Server Address: Адрес на сървъра: - - + + Use password for private game: Парола за лична игра: @@ -5147,49 +5200,49 @@ p, li { white-space: pre-wrap; } Псевдоними на играчите - - + + Computer Engine Компютърен мотор - - + + Opponent 6: Съперник 6: - - + + Opponent 5: Съперник 5: - - + + Opponent 4: Съперник 4: - - + + Opponent 3: Съперник 3: - - + + Opponent 2: Съперник 2: - - + + Opponent 1: Съперник 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5197,13 +5250,13 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Забележка: най-доброто качество за картинката на аватара е с пропорция около </span><span style=" font-weight:600; font-style:italic;">широчина=50, височина=50.</span></p></body></html> - + Human Player: Жив играч: - - + + Enable/Disable Logging Пусни/Спри регистрирането @@ -5216,99 +5269,99 @@ p, li { white-space: pre-wrap; } Ден(дни) - - + + Log File Directory: Папка за регистър файловете: - - + + Write log after every: Записвай в регисъра всеки: - + Note: Best quality with image ratio like width=48, height=76. - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + action (high frequent disc access) действие (високо ниво на ползване на твърдия диск) - - + + hand (medium disc access) ръка (средно ниво на ползване на твърдия диск) - - + + game (low disc access) игра (слабо ниво на ползване на твърдия диск) - + Log Messages Регистър съобщения - + Player Nicks/Avatars Псевдоними/Аватари на играчите - + Show left toolbox - + Show right toolbox - - + + Automatic Server Configuration URL - - + + Serverlist Address: - - + + Manual Server Configuration - - + + Store log files for: - - + + Day(s) @@ -5337,8 +5390,8 @@ p, li { white-space: pre-wrap; } - - + + Show cards chance monitor @@ -5347,51 +5400,51 @@ p, li { white-space: pre-wrap; } Парола: - - + + Avatar Server: - + Style - - + + Don't translate poker strings like check, call, raise from game table style - - - - + + + + Add ... - - - - + + + + Remove - - - - + + + + Preview - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5400,8 +5453,8 @@ p, li { white-space: pre-wrap; } - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5410,7 +5463,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5422,96 +5475,96 @@ p, li { white-space: pre-wrap; } - - + + Delay between hands: - - + + Server - - + + Game Игра - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5520,14 +5573,14 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Съперник 1: {7:?} - - + + Opponent 8: Съперник 1: {8:?} @@ -5536,8 +5589,8 @@ p, li { white-space: pre-wrap; } Съперник 1: {10:?} - - + + Opponent 9: Съперник 1: {10:?} {9:?} @@ -5604,65 +5657,65 @@ p, li { white-space: pre-wrap; } Турски - - - - - + + + + + Settings Error Грешка в настройките - + The entered flipside picture doesn't exist. Please enter an valid picture! Въведената картинка за гръб на тестето не съществува Моля въведете валидна картинка! - - + + The log file directory doesn't exist. Please select an valid directory! Папката за регистър файла не съществува. Моля изберете валидна папка! - + Language Changed Езикъте е променен - + You have changed application language to %1. Please restart PokerTH to load new language! Сменихте езика за апликацията с %1. Моля рестартирайте PokerTH за да заредите новия език! - + Select your flipside picture Изберете картинка за тестето - + Images (*.png *.jpg *.gif) Картинки (*.png *.jpg *.gif) - + Open Directory Отвори папка - - + + Blinds Error Грешка с Входа - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5671,7 +5724,7 @@ This first-small-blind-value will be set to maximum allowed value. Този пръв малък вход ще бъде променен с максималната позволена стойност. - + The entered server list address is not a valid URL. Please enter a valid server list address! @@ -5767,146 +5820,146 @@ Please enter a valid server list address! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State Статус - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5971,12 +6024,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Грешка със сървъра - + You should not kick yourself from this game! Не се самоизгонвайте от играта! @@ -6153,106 +6206,106 @@ Please choose another one. Моля изберете друг псевдоним. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Грешка във връзката - + Server address was not set. Не сте задали адреса на сървъра. - + An invalid port was set (ports 0-1023 are not allowed). Задали сте грешен порт (портове 0-1023 не са разрешени). - + Could not create a socket for TCP communication. Създаването на сокет за TCP комуникация невъзможно. - + Could not set the IP address. Не може да бъде зададен IP адреса. - + Could not set the port for this type of address. Не може да бъде зададен порта за този тип адрес. - + The server name could not be resolved. Името на сървъра не може да бъде превърнато. - + Bind failed - please choose a different port. Връзката се провали - моля изберете друг порт. - + Internal network error: "listen" failed. Вътрешна мержова грешка: "слушането" се провали. - + Server execution was terminated. Паботата на сървъра бе прекратена. - + Could not connect to the server. Връзката със сървъра не може да бъде осъществена. - + Connection timed out. Please check the server address. @@ -6263,12 +6316,12 @@ If the server is behind a NAT-Router, make sure port forwarding has been set up Ако сървъра е зад NAT-рутър, моля бъдете сигурни че порта е правилно препратен от страна на сървъра. - + Internal network error: "select" failed. Вътрешна мержова грешка: "отбелязването" се провали. - + Internal network error: "send" failed. Вътрешна мержова грешка: "изпращането" се провали. @@ -6277,117 +6330,117 @@ If the server is behind a NAT-Router, make sure port forwarding has been set up Връзката бе прекъсната от сървъра. - + Internal network error: Duplicate TCP connection. Вътрешна грешка в мрежата: Двойна TCP връзка. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Инвалиден мрежов пакет бе получен. Моля бъдете сигурни че всички играчи ползват една и съща версия на PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Вътрешна сървър грешка. Моля бъдете сигурни че всички играчи ползват една и съща версия на PokerTH. - + Invalid server list URL. Please correct the address in the settings. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. - + Could not unzip the PokerTH internet server list. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. - + Could not open the target file when downloading the server list. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. PokerTH сървъра не поддържа тази версия на играта.<br>Моля отидете на <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> и свалете последната версия. - + Sorry, this server is already full. Съжалаваме, но този сървър е вече пълен. - + Invalid login. Please check your username and password. - + Your account is blocked indefinitely. - + You cannot login at this time. Please try again in a few seconds. - + You cannot join this game, because another player in that game has your network address. - + Your connection to the server is very slow, the game had to start without you. - + This game is of type invite-only. You cannot join this game without being invited. - + Invalid password when joining the game. Please reenter the password and try again. Грешна парола за присъединяване към играта. Моля вкарайте наново паролата. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. - + The password is too long. Please choose another one. Паролата е много дълга. Моля изберете друга. @@ -6402,221 +6455,221 @@ Please choose a different name. Името ви на играч е много късо, много дълго или невалидно. Моля изберете друго. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Започни игра в мрежата - + The connection to the server was lost. - + The game name is either too short or too long. Please choose another one. Името на играта е много късо или много дълго. Моля изберете друго. - + The game could not be found. Играта не може да бъде намерена. - + The chat text is invalid. Чат текста не е валиден. - + The server referred to an unknown player. Aborting. Сървъра се отправи към незнаен играч. Спира операцията. - + Internal error: The current player could not be found. Вътрешна грешка. Играча не може да бъде намерен. - + Internal error: The current player is not active. Вътрешна грешка: Играча не е активен. - + You were kicked from the server. - + You were temporarily banned from the server. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! - + The client player count is invalid. Броят на играчите не е валиден. - + Too many manual blinds were set. Please reconfigure the manual blinds. Много персонализирани входа са зададени. Моля настройте наново персонализираните входове. - + An invalid avatar file was configured. Please choose a different avatar. Невалиден аватар е зададен. Моля изберете друг аватар. - + The selected avatar file is too large. Please choose a different avatar. Избрания файл за аватар е много широк. Моля изберете друг. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Вътрешна грешка. Моля съобщете на администратор в лоби чата. - + Could not start game: Synchronization failed. Не може да бъде започната играта: синхронизацията се провали. - + The server is down for maintenance. Please try again later. Сървъра е изключен за профилактика. Моля опитайте пак по-късно. - + An internal error occured. Вътрешна грешка. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Мрежово съобщение - + You were kicked from the game. Бяхте изгонен от играта. - + Sorry, this game is already full. Съжалаваме, но тази игра е вече пълна. - + Unable to join - the server has already started the game. Не може да се присъедините - сървъра е започнал играта вече. - + Your admin state timed out due to inactivity. Feel free to create a new game! - + You cannot join this type of game as guest. - + The settings are invalid for this type of game. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Нова версия на PokerTH е излязла.<br>Моля отидете на <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> за да изтеглите последната версия. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Бета версията на PokerTH не е годна.<br>Моля отидете на <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> за да изтеглите последната версия. - - + + Server Message - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. diff --git a/ts/pokerth_ca.ts b/ts/pokerth_ca.ts index 7d54ae1b..6a5f0c1d 100644 --- a/ts/pokerth_ca.ts +++ b/ts/pokerth_ca.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -210,22 +209,22 @@ Si us plau, contacteu l'autor de l'estil de taula via "%4".< Error d'estil de taula - Obsolet - + Everything OK! Tot està bé! - + Some pictures are missing, please contact style maintainer for this issue. Manquen algunes fotos, si us plau contacteu l'autor de l'estil per resoldre això. - + Some style fields are missing, please contact style maintainer for this issue. Manquen alguns camps d'estil, si us plau contacteu l'autor de l'estil per resoldre això. - + This style is outdated, please contact style maintainer for this issue. Aquest estil és obsolet, si us plau contacteu l'autor de l'estil per resoldre això. @@ -336,52 +335,52 @@ Si us plau, contacteu l'autor de l'estil %3. - + PokerTH - Delete log files PokerTH - Esborreu els fitxers de registre - + Do you really want to delete the selected log files? Realment voleu esborrar els fitxers de registre seleccionats? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML Exporta l'arxiu de registre de PokerTH a HTML - + PokerTH HTML log (*.html) Registre PokerTH HTML (*.html) - + Export PokerTH log file to plain text Exporta l'arxiu de registre de PokerTH a text - + PokerTH plain text log (*.txt) Registre PokerTH texte (*.txt) - + Save PokerTH log file Desa l'arxiu de registre PokerTH - + PokerTH SQL log (*.pdb) Registre PokerTH SQL (*.pdb) @@ -428,13 +427,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -463,22 +462,18 @@ Please verify that you are uploading a valid PokerTH log file. Denuncieu un avatar offensiu - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? No rebreu més missatges del xat o invitacions de partides d'aquest usuari.<br>Realment voleu posar el jugador <b>%1</b> a la llista per ignorar? - + Are you sure you want to report the avatar of "%1" as inappropriate? Esteu segur que voleu denunciar l'avatar de "%1" com a offensiu? - You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - No rebreu més missatges del xat o invitacions de partides d'aquest usuari.<br>Realment voleu posar el jugador <b>%1</b> a la llista per ignorar? - - - - + + PokerTH - Question PokerTH - Pregunta @@ -507,8 +502,8 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About Quant a @@ -543,17 +538,39 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project Projecte + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -601,7 +618,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - disseny inicial de les gràfiques del GUI</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -610,7 +626,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -620,14 +636,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">traductor d'anglès a català: cookehs address</span></p></td></tr></table></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -730,8 +744,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - Disseny de gràfics del GUI inicial</span></p></body></html> - - + + Translation Traducció @@ -748,8 +762,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" ">nom del traductor - adreça de correu</span></p></body></html> - - + + Thanks to Gràcies a @@ -800,13 +814,19 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - per moderar els fòrums, per registrar els errors de programació, i per organitzar les peticions per noves funcions</span></p></body></html> - - + + License Llicència - + + + Third party libs + + + + Close Surt @@ -979,8 +999,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - per nous sons de taula</span></p></td></tr></table></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -989,7 +1009,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1241,12 +1261,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Ordre de cegues manuals - + You cannot set more than 30 manual blinds. No podeu definir més de 30 cegues manuals. @@ -1400,7 +1420,7 @@ Si us plau, trieu-ne un altre! - + Default game name: Nom de partida predeterminat: @@ -1435,75 +1455,81 @@ Si us plau, trieu-ne un altre! Partida de rànquing - - + + Maximum number of players: Nombre màxim de jugadors: - - + + Start Cash: Diners inicials: - - + + $ $ - + Blinds Cegues - + Use saved blinds settings Utilitza la configuració desada de cegues - + Change blinds settings ... Canvia configuració de les cegues... - + Timeout for player action: Temps permès per acció del jugador: - - + + s s - - + + Password: Contrasenya: - + Delay between hands: Retard entre mans: - - + + + Allow spectators to watch the game + + + + + Create Game Crea una partida - + Cancel Cancel·la @@ -1628,56 +1654,68 @@ Si us plau, trieu-ne un altre! Jugadors disponibles - - + + Game Info Informació de la partida - - + + Game type: Tipus de partida: - - + + Connected Players Jugadors conectats - - + + search for player ... Cerqueu jugadors ... - - + + 5 - Show open & non-full & ranking games 5 - Mostra partides obertes, no plenes, i de rànquing - - + + + Players + Jugadors + + + + + Spectators + + + + + Start Cash: Diners inicials: - - + + First small blind: Primera cega petita: - - + + Blinds raise interval: Interval de pujada de cegues: - - + + Blinds raise mode: Mode de pujada de cegues: @@ -1687,7 +1725,7 @@ Si us plau, trieu-ne un altre! Partides - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1700,38 +1738,38 @@ p, li { white-space: pre-wrap; } Temps permès per acció del jugador (segons): - - + + Fill up with computer opponents Omple amb oponents virtuals - - + + &Start Game &Comença la partida - - + + &Kick Player &Expulsa jugador - - + + Sort alphabetically Ordena alfabèticament - - + + Sort by country Ordena per païs - - + + Display idle players Mostra els jugadors desocupats @@ -1752,8 +1790,8 @@ p, li { white-space: pre-wrap; } Mode de pujada de cegues: - - + + Manual blinds list: Llista de cegues manuals: @@ -1762,26 +1800,24 @@ p, li { white-space: pre-wrap; } Temps permès per acció del jugador (segons): - - + + &Leave Game &Surt de la partida - - Join &any game - Entra a &qualsevol partida + Entra a &qualsevol partida - - + + &Create Game &Crea una partida - - + + &Join Game &Entra a la partida @@ -1804,44 +1840,44 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Cliqueu aquí per veure els rànquings en línia</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - Cap filtre de partides a la llista - - + + 1 - Show open games 1 - Mostra partides obertes - - + + 2 - Show open & non-full games 2 - Mostra partides & obertes & no plenes - - + + 3 - Show open & non-full & non-private games 3 - Mostra partides obertes, no plenes, & no privades - - + + 4 - Show open & non-full & private games 4 - Mostra partides obertes, no plenes, & privades - - + + Timing: Temps: - - + + Lobby-Chat Xat de la sala @@ -1866,60 +1902,60 @@ p, li { white-space: pre-wrap; } S'està començant la partida. Si us plau, espereu... - - - + + + sec (action) segons (acció) - - - + + + sec (hand delay) segons (retard entre mans) - + Joining a private Game S'està unint a una partida privada - + You are about to join a private game. Please enter the password! Esteu a punt d'unir-vos a una partida privada. Si us plau, introduiu la contrasenya! - + open obert - - - - + + + + Game Info Informació de la partida - - - + + + Game Partida - - - + + + Players Jugadors - - - + + + State Estat @@ -1928,76 +1964,75 @@ p, li { white-space: pre-wrap; } R - - - + + + P P - - - + + + Available Players Jugadors disponibles - + Invite player Invita el jugador - + Ignore player Ignora el jugador - + Player infos ... Informació dels jugadors ... - + Report inappropriate game name Reporteu un nom de joc no apropiat - - - + + + Standard Estàndard - - - + + + Registered players only Només es permeten jugadors registrats - - - + + + Invited players only Només es permeten jugadors invitats - - - + + + Ranking game Partida de rànquing - Connected players - max. %1 - Jugadors conectats - màxim %1 + Jugadors conectats - màxim %1 - - - + + + T T @@ -2012,1345 +2047,1361 @@ p, li { white-space: pre-wrap; } - - - + + Spectate + + + + + + Time - - + + Show player stats Mostra les estadístiques dels jugadors - - + + Admin action ... - + Total kickban - + Close game - - Connected players - Max. %1 - Jugadors conectats - Màxim %1 + Jugadors conectats - Màxim %1 - + running a marxa - - + + running games: %1 partides a marxa:%1 - - + + open games: %1 partides obertes: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 Invita a en %1 - + Ignore %1 Ignora a en %1 - + %1 is playing in "%2". %1 està jugant a "%2". - + %1 is not playing at the moment. %1 no està jugant al moment. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 ha estat invitat a %2 per %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 ha rebutjat l'invitació a %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 no pot unir-se a %2 perquè està ocupat.</span> - - + + The game will start in<br><b>%1</b> seconds. La partida començarà en<br><b>%1</b> segons. - + Afghanistan Afghanistan - + ALand Islands Illes Åland - + Albania Albània - + Algeria Algèria - + American Samoa Samoa nord-americana - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antàrtida - + Antigua And Barbuda Antigua i Barbuda - + Argentina Argentina - + Armenia Armènia - + Aruba Aruba - + Australia Austràlia - + Austria Àustria - + Azerbaijan Azerbaidjan - + Bahamas Bahames - + Bahrain Bahrain - + Bangladesh Bangla Desh - + Barbados Barbados - + Belarus Bielorússia - + Belgium Bèlgica - + Belize Belize - + Benin Benin - + Bermuda Bermudes - + Bhutan Bhutan - + Bolivia Bolívia - + Bosnia And Herzegovina Bòsnia i Hercegovina - + Botswana Botswana - + Bouvet Island Illa Bouvet - + Brazil Brasil - + British Indian Ocean Territory Territori Britànic de l'Oceà Índic - + Brunei Darussalam Brunei - + Bulgaria Bulgària - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Cambodja - + Cameroon Camerun - + Canada Canadà - + Cape Verde Cap Verd - + Cayman Islands Illes Cayman - + Central African Republic República Centreafricana - + Chad Txad - + Chile Xile - + China Xina - + Christmas Island Illa Christmas - + Cocos (Keeling) Islands Illes Cocos (Keeling) - + Colombia Colòmbia - + Comoros Comores - + Congo Congo - + Congo, The Democratic Republic Of The Congo, República Democràtica del - + Cook Islands Illes Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Costa d'Ivori - + Croatia Croàcia - + Cuba Cuba - + Cyprus Xipre - + Czech Republic República Txeca - + Denmark Dinamarca - + Djibouti Djibouti - + Dominica Dominica - + Dominican Republic República Dominicana - + Ecuador Equador - + Egypt Egipte - + El Salvador El Salvador - + Equatorial Guinea Guinea Equatorial - + Eritrea Eritrea - + Estonia Estònia - + Ethiopia Etiòpia - + Falkland Islands (Malvinas) Illes Malvines (Falkland) - + Faroe Islands Illes Fèroe - + Fiji Fiji - + Finland Finlàndia - + France Frància - + French Guiana Guaiana Francesa - + French Polynesia Polinèsia Francesa - + French Southern Territories Territoris Francesos del Sud - + Gabon Gabon - + Gambia Gàmbia - + Georgia Geòrgia - + Germany Alemanya - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grècia - + Greenland Grenlàndia - + Grenada Grenada - + Guadeloupe Guadalupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea Bissau - + Guyana Guyana - + Haiti Haití - + Heard Island And Mcdonald Islands Illes Heard i McDonald - + Holy See (Vatican City State) Santa Seu (Estat de la Ciutat del Vaticà) - + Honduras Hondures - + Hong Kong Hong Kong - + Hungary Hongria - + Iceland Islàndia - + India Índia - + Indonesia Indonèsia - + Iran, Islamic Republic Of Iran, República Islàmica de l' - + Iraq Iraq - + Ireland Irlanda - + Isle Of Man Illa de Man - + Israel Israel - + Italy Itàlia - + Jamaica Jamaica - + Japan Japó - + Jersey Jersey - + Jordan Jordània - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Corea, República Popular Democràtica de - + Korea, Republic Of Corea, República de - + Kuwait Kuwait - + Kyrgyzstan Kirguizistan - + Lao People'S Democratic Republic Laos, República Popular Democràtica de - + Latvia Letònia - + Lebanon Líban - + Lesotho Lesotho - + Liberia Libèria - + Libyan Arab Jamahiriya Líbia - + Liechtenstein Liechtenstein - + Lithuania Lituània - + Luxembourg Luxemburg - + Macao Macau - + Macedonia, The Former Yugoslav Republic Of Macedònia, Exrepública Iugoslava de - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malàisia - + Maldives Maldives - + Mali Mali - + Malta Malta - + Marshall Islands Illes Marshall - + Martinique Martinica - + Mauritania Mauritània - + Mauritius Maurici - + Mayotte Mayotte - + Mexico Mèxic - + Micronesia, Federated States Of Micronèsia, Estats Federats de - + Moldova, Republic Of Moldàvia, Principat de - + Monaco Mònaco - + Mongolia Mongòlia - + Montserrat Montserrat - + Morocco Marroc - + Mozambique Moçambic - + Myanmar Myanmar - + Namibia Namíbia - + Nauru Nauru - + Nepal Nepal - + Netherlands Països Baixos - + Netherlands Antilles Antilles Neerlandeses - + New Caledonia Nova Caledònia - + New Zealand Nova Zelanda - + Nicaragua Nicaragua - + Niger Níger - + Nigeria Nigèria - + Niue Niue - + Norfolk Island Illa Norfolk - + Northern Mariana Islands Illes Mariannes Septentrionals - + Norway Noruega - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Territoris Palestins Ocupats - + Panama Panamà - + Papua New Guinea Papua Nova Guinea - + Paraguay Paraguai - + Peru Perú - + Philippines Filipines - + Pitcairn Illes Pitcairn - + Poland Polònia - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Qatar - + Reunion Illa de la Reunió - + Romania Romania - + Russian Federation Federació Russa - + Rwanda Rwanda - + Saint Helena Santa Helena - + Saint Kitts And Nevis Saint Christopher i Nevis - + Saint Lucia Saint Lucia - + Saint Pierre And Miquelon Saint-Pierre i Miquelon - + Saint Vincent And The Grenadines Saint Vincent i les Grenadines - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe São Tomé i Príncipe - + Saudi Arabia Aràbia Saudita - + Senegal Senegal - + Serbia And Montenegro Sèrbia i Montenegro - + Seychelles Seychelles - + Sierra Leone Sierra Leone - + Singapore Singapur - + Slovakia Eslovàquia - + Slovenia Eslovènia - + Solomon Islands Illes Salomó - + Somalia Somàlia - + South Africa Sud-àfrica - + South Georgia And The South Sandwich Islands Illes Geòrgia del Sud i Sandwich del Sud - + Spain Espanya - + Sri Lanka Sri Lanka - + Sudan Sudan - + Suriname Surinam - + Svalbard And Jan Mayen Svalbard i Jan Mayen - + Swaziland Swazilàndia - + Sweden Suècia - + Switzerland Suïssa - + Syrian Arab Republic República Àrab Siriana - + Taiwan, Province Of China Taiwan (República de la Xina) - + Tajikistan Tadjikistan - + Tanzania, United Republic Of Tanzània, República Unida de - + Thailand Tailàndia - + Timor-Leste Timor Oriental - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinidad i Tobago - + Tunisia Tunísia - + Turkey Turquia - + Turkmenistan Turkmenistan - + Turks And Caicos Islands Illes Turks i Caicos - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ucraïna - + United Arab Emirates Emirats Àrabs Units - + United Kingdom Regne Unit - + United States Estats Units d'Amèrica - + United States Minor Outlying Islands Illes Perifèriques Menors dels Estats Units d'Amèrica - + Uruguay Uruguai - + Uzbekistan Uzbekistan - + Vanuatu Vanuatu - + Venezuela Veneçuela - + Viet Nam Vietnam - + Virgin Islands, British Illes Verges Britàniques - + Virgin Islands, U.S. Illes Verges Nord-americanes - + Wallis And Futuna Wallis i Futuna - + Western Sahara Sàhara Occidental - + Yemen Iemen - + Zambia Zàmbia - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Esteu segur que voleu reportar el nom de joc: "%1" com a no apropriat? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Heu entrat a una partida on s'uneix només per invitació. Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llista de jugadors disponibles. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Heu estat invitat a la partida <b>%1</b> per <b>%2</b>.<br>Voleu unir-vos a la partida? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? No rebreu més missatges del xat o invitacions de partides d'aquest usuari.<br>Realment voleu posar el jugador <b>%1</b> a la llista per ignorar? @@ -3359,54 +3410,52 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist jugadors al xat: %1 - - + + connected players: %1 jugadors conectats: %1 - - Connected players - Jugadors conectats + Jugadors conectats - + hands mans - + minutes minuts - + double blinds duplicar cegues - + manual blinds order ordre de cegues manuals - + Server Error Error del servidor - + You should not kick yourself from this game! No es pot expulsar-vos a vos mateix de la partida! - + search for player ... Cerqueu jugadors ... - + Chat is only available to registered players. El xat només està disponible per a jugadors registrats. @@ -3415,7 +3464,7 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist Invita el jugador %1 - + Invite player ... Invita el jugador... @@ -3424,7 +3473,7 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist Ignora el jugador %1 - + Ignore player ... Ignora el jugador... @@ -3435,8 +3484,8 @@ You can invite other players with right-click on their nick in the left availabl Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llista de jugadors disponibles que es troba a l'esquerra. - - + + PokerTH - Info Message PokerTH - Missatge d'informació @@ -3461,10 +3510,10 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist No rebreu més missatges del xat o invitacions de partides d'aquest usuari.<br>Realment voleu posar el jugador <b>%1</b> a la llista per ignorar? - - - - + + + + PokerTH - Question PokerTH - Pregunta @@ -3493,273 +3542,273 @@ p, li { white-space: pre-wrap; } <a>&#9734;</a> - + Hands Mans - + Chat Xat - + Save Desa - + Log Registre - + Away Absent - + Manual Action (default) Acció manual (predeterminat) - + Auto-Check / Auto-Fold Igualar / abandonar automàticament - + Auto-Check / Auto-Call-Any Passar / igualar automàticament - + Speed: Velocitat: - - + + Start Local Game ... Comença una partida local... - - + + Ctrl+N Ctrl+N - - + + Quit Surt - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... Quant a PokerTH... - - + + Settings ... Configuració... - - + + Create Network Game ... Crea una partida de xarxa... - - + + Ctrl+O Ctrl+O - - + + Join Network Game ... Entra a una partida de xarxa... - - + + Ctrl+J Ctrl+J - - - + + + Fullscreen Pantalla completa - - + + Ctrl+F Ctrl+F - - + + Show/Hide Chat Window Mostra/oculta finestra de xat - - + + Ctrl+T Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window Mostra/oculta finestra de mans - - + + Ctrl+H Ctrl+H - - + + Show/Hide Log Window Mostra/oculta finestra de registre - - + + Ctrl+L Ctrl+L - - + + Internet Game ... Partida d'internet... - - + + Ctrl+I Ctrl+I - - + + Show/Hide Away Window Mostra/oculta finestra d'absència - - + + Ctrl+A Ctrl+A - + Kick Expulsar - + Vote Timeout: Temps permès per a la votació: - + Yes - + No No - + Player info Informació dels jugadors - + Chance Probabilitat - + Configure PokerTH ... Configura el PokerTH... - - + + Close Tanca - - + + Ctrl+X Ctrl+X - + Vote started by: Votació començada per: - - + + Show/Hide Chance Window Mostra/oculta finestra de probabilitats - - + + Ctrl+C Ctrl+C - + &View &Visualitza - + &Settings &Configuració - + Shortcut: <Shift> Drecera: <Shift> - + Settings Configuració - + Configure PokerTH @@ -3767,142 +3816,147 @@ p, li { white-space: pre-wrap; } gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Atura - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 -El motor de Texas Hold'em de codi font obert - - - - - - - - + + + + + + + + Start Comença - - - - - + + + + + Lobby Sala - - + + Chat Xat - + Closing PokerTH during network game S'està tancant el PokerTH durant la partida de xarxa - + You are the hosting server. Do you want to close PokerTH anyway? Sou l'ordinador central. Voleu sortir del PokerTH de totes maneres? - + Really want to exit? Realment voleu sortir? - + PokerTH - Close Table? PokerTH - Voleu tancar la taula? - + PokerTH - Internet Game Message PokerTH - Missatge de partida d'internet - + Attention! Do you really want to leave the current game and go back to the lobby? Atenció! Realment voleu abandonar la pardia actual i tornar a la sala? - - + + Chat is only available to registered players. El xat només està disponible per a jugadors registrats. - - + + Spectators + + + + + Chance Probabilitat - - + + Kick Expulsa - - + + Do you want to kick <b>%1</b><br>from this game? Voleu expulsar a <b>%1</b><br>de la partida? - - - - + + + + <b>%1</b> secs left Queden<b>%1</b> segons - + vote vot - + votes vots - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. El jugador <b>%1</b> té <b>%2</b> %3<br>contra ell. Manquen<b>%4</b> vot(s) per expulsar-lo. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Teniu <b>%1</b> %2 en contra.<br>Manquen<b>%3</b> vot(s) per expulsar-vos. @@ -4131,57 +4185,67 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Error en carregar l'arxiu de perfils de servidors - - - - Could not load server-profiles-file: - No s'ha pogut carregar l'arxiu de perfils de servidor: + No s'ha pogut carregar l'arxiu de perfils de servidor: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error Error en desar el perfil del servidor - + A profile with the name: %1 already exists. Would you like to overwrite ? Un perfil amb el nom: %1 ja existeix. Voleu sobreescriure'l? - + Read Server-Profile List Error Error en llegir la llista de perfils de servidors - + Could not read server-profiles list No s'ha pogut llegis la llista de perfils de servidors - - + + Save Server-Profile-File Error Error en desar l'arxiu de perfils de servidors - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - No s'ha pogut desar l'arxiu de perfils de servidors: + No s'ha pogut desar l'arxiu de perfils de servidors: @@ -4246,12 +4310,12 @@ Voleu sobreescriure'l? manualBlindsOrderDialogImpl - + Manual Blinds Order Ordre de cegues manuals - + You cannot set more than 30 manual blinds. No podeu definir més de 30 cegues manuals. @@ -4320,7 +4384,7 @@ Voleu sobreescriure'l? - + Use saved blinds settings Utilitza la configuració desada de les cegues @@ -4331,13 +4395,13 @@ Voleu sobreescriure'l? - + Change blinds settings ... Canvia la configuració de les cegues... - + Game Speed: Velocitat del joc: @@ -4378,38 +4442,38 @@ Voleu sobreescriure'l? selectAvatarDialogImpl - - - + + + Avatar File Error Error d'arxiu d'avatar - + Please select an avatar from the list! Si us plau, seleccioneu un avatar de la llista! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! La mida de l'arxiu seleccionat és massa gran (màxim 30KB) Si us plau, seleccioneu-ne una més petita! - + The entered avatar picture doesn't exist. Please enter an valid picture! L'imatge d'avatar introduït no existeix. Si us plau, introduiu un imatge vàlid! - + Select external avatar picture Seleccioneu un imatge d'avatar extern - + Images (*.png *.jpg *.gif) Imatges (*.png *.jpg *.gif) @@ -4430,134 +4494,152 @@ Si us plau, introduiu un imatge vàlid! Interfície - - + + Language: Llengua: - - + + Show fade-out animation for non-winning cards Mostra animació d'esvaïment per cartes no guanyadores - - + + Show flip-card animation Mostra animació de cartes - - + + Show buttons for small blind and big blind Mostra botons per a la cega petita i la cega gran - - + + Show own cards only on mouse click Mostra les cartes propies només al fer clic al ratolí - + Reverse order of F-Keys (F1 - F4) Ordre contrari de tecles F (F1-F4) - - + + Network / Internet Game Partida de xarxa / internet - - + + Switch keyboard focus to bet-input-field if it's your turn Selecciona camp d'entrada d'apostes durant el vostre torn - + Sound So - + Factory Settings Valors per defecte - - + + + Common + + + + + Disable splashscreen on startup Desactiva la pantalla de presentació al començar - - + + Show country flag in the corner of avatar Mostra la bandera del país al cantó del avatar - - + + Activate the "accidentally call after big raise" blocker Activa el "evita-accidents" per no igualar automàticament després d'una gran pujada - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table Taula de joc - - - - + + + + Description Descripció - - - - + + + + Maintainer Mantenidor - - - + + + State Estat - - + + Card Deck Baralla - - + + Card Back Revés - - + + Use card back from card style Utilitza el revés de la carta de l'estil de baralla - - + + Use custom card back picture: Utilitza imatge de revés de cartes personalitzada: @@ -4580,197 +4662,203 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Teniu en compte que la millor qualitat es troba am un coeficient d'imatge com </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">amplada=48, alçada=76.</span></p></td></tr></table></body></html> - - + + Play sound effects Reprodueix efectes de so - - + + Sound Volume: Volum de so: - - + + 10 10 - - + + Sound Categories Categories de so - - + + Play game actions sounds like "check", "call", "raise" Reprodueix sons d'accions com "passar", "igualar", "pujar" - - + + Play lobby chat notifications Reprodueix notificacions de xat - - + + Play network/internet game notifications like "player joined the game" Reprodueix notificacions de partida de xarxa / internet com "un jugador s'ha unit" - + Local Game Settings Configuració de partida local - - + + Number of players: Nombre de jugadors: - - - - + + + + Start Cash: Diners inicials: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Primera cega petita: - - - - + + + + Raise blinds: Puja les cegues: - - - - - - - - + + + + + + + + Every: Cada: - - - - + + + + hands mans - - - - + + + + minutes minuts - - - - + + + + Raise mode: Mode de pujar: - - - - + + + + Always double blinds Sempre duplica les cegues - - - - + + + + Manual blinds order: Ordre manual de cegues: - - - - + + + + Edit ... Editar... - - + + Game Speed: Velocitat del joc: - - + + Pause between hands (press "start" button to go on) Fes pausa entre mans (oprimiu el botó "començar" per a continuar) - - + + Show game settings dialog on every new game Mostra diàleg de configuració d'opcions en cada partida nova - - + + Server Password: - + + + Allow spectators to watch the game + + + + OK - + Network Game Settings Configuració de partida de xarxa - - + + Maximum number of players: Nombre màxim de jugadors: - - + + Timeout for player action: Temps permès per acció del jugador: @@ -4819,14 +4907,14 @@ p, li { white-space: pre-wrap; } Suprimeix - - + + Reset all settings to default ... Reinicialitzar tots els paràmetres als valors per defecte ... - - + + Note: You can not reset all settings to default during a running game! Teniu en compte que no podeu reinicialitzar tots els paràmetres als valors per defecte quan s'està executant una partida. @@ -4835,66 +4923,66 @@ p, li { white-space: pre-wrap; } Arxiu del registre - - - - + + + + s s - - + + Network Server Settings Configuració de servidor de xarxa - - - - + + + + Server Port: Port de servidor: - - - - + + + + Use SCTP Utilitza SCTP - - - - + + + + Use IPv6 Utilitza IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Què és això?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Què és això?</a> - + Internet Game Settings Configuració de partida d'internet - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4905,61 +4993,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Atenció: </span><span style=" font-weight:600; font-style:italic;">Opcions de partida </span><span style=" font-style:italic;">predeterminats, com "Nombre màxim de jugadors", "Diners inicials", i "Cega petita" s'utilitzaràn </span><span style=" font-weight:600; font-style:italic;">de les Opcions de partida a la xarxa.</span></p></body></html> - - + + Server Address: Adreça de servidor: - - + + Use password for private game: Utilitza contrasenya per a partida privada: - - + + Computer Engine Motor d'ordenador - - + + Opponent 6: Adversari 6: - - + + Opponent 5: Adversari 5: - - + + Opponent 4: Adversari 4: - - + + Opponent 3: Adversari 3: - - + + Opponent 2: Adversari 2: - - + + Opponent 1: Adversari 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4970,8 +5058,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Atenció: Millor qualitat d'avatar amb proporció d'imatge com aquest: </span><span style=" font-weight:600; font-style:italic;">amplada=50, alçada=50.</span></p></body></html> - - + + Enable/Disable Logging Activa/Desactiva registre @@ -4980,105 +5068,105 @@ p, li { white-space: pre-wrap; } Emmagatzemar arxius de registre per - - + + Log File Directory: Carpeta del arxiu de registre: - - + + Write log after every: Escriu registre després de cada: - - + + action (high frequent disc access) acció (accès a disc molt frequent) - - + + hand (medium disc access) mà (accès al disc mitjà) - - + + game (low disc access) partida (accès al disc baix) - + Log Messages Registra els missatges - + Player Nicks/Avatars Noms d'usuari/Avatars de jugador - + Show right toolbox Mostra barra d'eines de la dreta - + Show left toolbox Mostra barra d'eines de l'esquerra - - + + Play blind raise notification Reprodueix la notificació de pujades cegues - - + + Automatic Server Configuration URL URL de configuració automàtic de servidors - - + + Serverlist Address: Adreça de lista de servidors: - - + + Manual Server Configuration Configuració manual del servidor - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: Emmagatzemar arxius de registre per: - - + + Day(s) Dia/Dies @@ -5107,62 +5195,62 @@ p, li { white-space: pre-wrap; } Noms d'usuari/Avatars - - + + Show cards chance monitor Mostra el visor de probabilitats - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: Servidor d'avatars: - + Style Estil - - + + Don't translate poker strings like check, call, raise from game table style No tradueixis termes de pòquer com "passar", "igualar", o "pujar" de l'estil de taula - - - - + + + + Add ... Afegir... - - - - + + + + Remove Eliminar - - - - + + + + Preview - Information: Previsualització - Informació: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5175,8 +5263,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Obteniu nous estils de taula de PokerTH ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5189,7 +5277,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Obteniu nous estils de baralla de PokerTH ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5208,96 +5296,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Atenció: Millor qualitat amb una proporció d'imatge com aquest: </span><span style=" font-weight:600; font-style:italic;">amplada=48, alçada=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Retard entre mans: - - + + Server Servidor - - + + Game Partida - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Nom predeterminat de partida: - - + + Default game type: Tipus predeterminat de partida: - - + + Standard Estàndard - - + + Registered players only Només jugadors registrats - - + + Invited players only Només jugadors invitats - - + + Ranking game Partida de rànquing - - + + Show lobby chat Mostra el xat - - + + Automatically leave the table after the game finished Sortir automaticament de la taula després que s'hagi acabat la partida - - + + Ignored Players Jugadors ignorats - - + + Player Jugador - - + + Remove Player Eliminar jugador - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5310,20 +5398,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Jugador humà:<br /><span style=" font-style:italic;">(Aquest nom d'usuari també s'utilitzarà per a l'entrada al joc en línia)</span></p></body></html> - - + + Opponent 7: Adversari 7: - - + + Opponent 8: Adversari 8: - - + + Opponent 9: Adversari 9: @@ -5406,65 +5494,65 @@ p, li { white-space: pre-wrap; } turc - - - - - + + + + + Settings Error Error de configuració - + The entered flipside picture doesn't exist. Please enter an valid picture! L'imatge de revés introduït no existeix. Si us plau, introdueu-ne una vàlida! - - + + The log file directory doesn't exist. Please select an valid directory! El directori d'arxiu de registre no existeix. Si us plau, seleccioneu un directori vàlid! - + Language Changed llengua canviada - + You have changed application language to %1. Please restart PokerTH to load new language! Heu canviat la llengua de l'aplicació a %1. Si us plau, reiniceu el PokerTH per carregar la nova llengua! - + Select your flipside picture Seleccioneu el vostre imatge del revés de la baralla - + Images (*.png *.jpg *.gif) imatges (*.png *.jpg *.gif) - + Open Directory diccionari obert - - + + Blinds Error Error de cegues - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5508,7 +5596,7 @@ Aquest valor per a la primera cega petita s'utilizarà com al valor màxim suec - + The entered server list address is not a valid URL. Please enter a valid server list address! L'adreça de llista de servidors introduït no és un URL vàlid. @@ -5550,140 +5638,140 @@ Si us plau, introdueu una adreça de llista de servidor vàlida! - + The opponent names are not unique. Please choose different names for each Opponent! Els noms d'oponents no són úniques. Si us plau, escolliu altres noms per cada oponent. - + Settings Information Informació sobre els paràmetres - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Heu canviat el directori de fitxers de registre. Si us plau, reinicialitzeu el PokerTH per utilitzar el nou directori pels fitxers de registre. - - + + Maintainer Name nom del mantenidor - - + + Maintainer EMail correu electrònic del mantenidor - - + + Create Date Data de creació - + Windows Behaviour Comportament de les finestres - + scaleable escalable - + fixed fix - + Minimum Size mida mínima - + Maximum Size mida màxima - + Fixed Size mida fixa - + State Estat - + Please select your game table style Si us plau, seleccioneu el vostre estil de taula - + PokerTH game table styles (*.xml) Estils de taula PokerTH (*.xml) - + Game Table Style Error Error d'estil de taula - + Selected game table style file is already in the list. Please select another one to add! L'arxiu d'estil de taula seleccionat ja existeix a la llista. Si us plau, seleccioneu-ne un altre per afegir! - + Game Table Style File Error Error d'arxiu d'estil de taula - + Could not load game table style file correctly. Style will not be placed into list! No s'ha pogut carregar l'arxiu de l'estil de taula correctament. L'estil no es posarà a la llista! - + Please select your card deck style Si us plau, seleccioneu el vostre estil de baralla - + PokerTH card deck styles (*.xml) Estils de baralla PokerTH (*.xml) - + Card Deck Style Error Error d'estil de baralla - + Selected card deck style file is already in the list. Please select another one to add! L'arxiu d'estil de baralla seleccionat ja existeix a la llista. Si us plau, seleccioneu-ne un altre per afegir! - + Card Deck Style File Error Error d'arxiu d'estil de baralla - + Could not load card deck style file correctly. Style will not be placed into list! No s'ha pogut carregar l'arxiu d'estil de baralla correctament. @@ -5730,12 +5818,12 @@ L'estil no es posarà a la llista! Registre PokerTH SQL (*.pdb) - + PokerTH - Settings PokerTH - Paràmetres - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Atenció: Això esborrarà tots els vostres paràmetres i tancarà el PokerTH. @@ -5809,12 +5897,12 @@ Realment voleu reinicialitzar als valors per defecte? startNetworkGameDialogImpl - + Server Error Error de servidor - + You should not kick yourself from this game! No es pot expulsar-vos a vos mateix de la partida! @@ -5987,106 +6075,106 @@ Please choose another one. Si us plau, trieu-ne un altre. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Error de xarxa - + Server address was not set. L'adreça de servidor no s'ha establert. - + An invalid port was set (ports 0-1023 are not allowed). Un port no vàlid s'ha establert (ports 0-1023 no es permeten). - + Could not create a socket for TCP communication. No s'ha pogut fer un sòcol per a la comunicació TCP. - + Could not set the IP address. No s'ha pogut establir l'adreça IP. - + Could not set the port for this type of address. No s'ha pogut establir el port per a aquest tipus d'adreça. - + The server name could not be resolved. El nom del servidor no s'ha pogut resoldre. - + Bind failed - please choose a different port. Comunicació ha fallat. Seleccioneu un altre port. - + Internal network error: "listen" failed. Error intern de xarxa: ha fallat en "escoltar". - + Server execution was terminated. L'execució del servidor s'ha interromput. - + Could not connect to the server. No s'ha pogut connectar al servidor. - + Connection timed out. Please check the server address. @@ -6097,12 +6185,12 @@ Si us plau, comproveu l'adreça del servidor. Si el servidor és darrere un encaminador NAT, comproveu que el port de reeinviament està configurat en el servidor. - + Internal network error: "select" failed. Error intern de xarxa: ha fallat en "seleccionar". - + Internal network error: "send" failed. Error intern de xarxa: ha fallat en "enviar". @@ -6111,26 +6199,26 @@ Si el servidor és darrere un encaminador NAT, comproveu que el port de reeinvia La connexió ha estat tancat pel servidor. - + Internal network error: Duplicate TCP connection. Error intern de xarxa: Hi ha una connexió duplicada de TCP. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. S'ha rebut un paquet de xarxa no vàlid. Si us plau, tingueu en compte que tots els jugadors han d'utilitzar la mateixa versió de PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Error intern d'estat. Si us plau, comproveu que tots els jugadors utilitzin la mateixa versió de PokerTH. - + Invalid server list URL. Please correct the address in the settings. URL de llista de servidors no vàlid. @@ -6149,95 +6237,95 @@ Please make sure that the server list URL is correct. Si us plau, comproveu que l'URL de la llista de servidors és correcte. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. La llista de servidors d'internet de PokerTH conté dades no vàlides. Si utilitzeu una llista personalitzada de servidors, si us plau, comproveu que el format és correcte. - + Could not unzip the PokerTH internet server list. No s'ha pogut descomprimir la llista de servidors de PokerTH. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. No s'ha pogut descarregar la llista de servidors d'internet de PokerTH. Si us plau, comproveu que esteu directament conectat a l'internet. - + Could not open the target file when downloading the server list. No s'ha pogut obrir l'arxiu de destí al descarregar la llista de servidors. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. El servidor de PokerTH no és compatible amb aquesta versió del joc.<br>Si us plau, aneu a <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> i descarregueu la versió més actualitzada. - + Sorry, this server is already full. Aquest servidor ja és ple. - + Invalid login. Please check your username and password. Entrada no vàlida. Si us plau, comproveu el vostre nom d'usuari i la constrasenya. - + Your account is blocked indefinitely. El vostre compte s'ha bloquejat per temps indefinit. - + You cannot login at this time. Please try again in a few seconds. No podeu entrar ara. Si us plau, torneu-ho a provar en uns segons. - + You cannot join this game, because another player in that game has your network address. No podeu unir-vos a aquesta partida, perquè un altre jugador a la partida té la vostra adreça de xarxa. - + Your connection to the server is very slow, the game had to start without you. La vostra conexió al servidor és molt lent. La partida s'havia de començar sense vos. - + This game is of type invite-only. You cannot join this game without being invited. Aquest tipus de partida es només d'invitació. No podeu unir-vos a la partida sense estar invitat. - + Invalid password when joining the game. Please reenter the password and try again. Contrasenya no vàlida al unir-se a la partida. Si us plau, torneu a introduir la contrasenya i torneu-ho a provar una altra vegada. - + The avatar report was accepted by the server. Thank you. El servidor ha rebut el denunci d'avatar. Gràcies. - + This avatar was already reported by another player. Aquest avatar ja s'ha denunciat per un altre jugador. - + An error occurred while reporting the avatar. Un error s'ha produït mentre s'estava denunciant l'avatar. - + The password is too long. Please choose another one. La contrasenya és massa llarga. Si us plau, trieu-ne una altra. @@ -6252,221 +6340,221 @@ Si us plau, trieu-ne un altre. El nom de jugador és massa curt, massa llarg, o no és vàlid. Si us plau, trieu-ne un altre. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Comença una partida de xarxa - + The connection to the server was lost. La conexió al servidor s'ha perdut. - + The game name is either too short or too long. Please choose another one. El nom de la partida és massa curt o massa llarg. Si us plau, trieu-ne un altre. - + The game could not be found. La partida no s'ha pogut trobar. - + The chat text is invalid. El text de xat no és vàlid. - + The server referred to an unknown player. Aborting. El servidor s'ha referit a un jugador desconegut. Ara s'està tancant. - + Internal error: The current player could not be found. Error intern: El jugador actual no s'ha pogut trobar. - + Internal error: The current player is not active. Error intern: El jugador actual no està actiu. - + You were kicked from the server. Heu estat expulsat del servidor. - + You were temporarily banned from the server. Heu estat temporalment prohibit d'accedir el servidor. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! La vostra connexió al servidor ha fallat a causa d'inactivitat. Podeu tornar a conectar-vos! - + The client player count is invalid. El nombre de jugadors clients no és vàlid. - + Too many manual blinds were set. Please reconfigure the manual blinds. S'han configurat masses cegues manuals. Si us plau, torneu a configurar les cegues manuals. - + An invalid avatar file was configured. Please choose a different avatar. Un arxiu d'avatar no vàlid s'ha configurat. Si us plau, trieu un altre avatar. - + The selected avatar file is too large. Please choose a different avatar. L'arxiu d'avatar seleccionat és massa gran. Si us plau, trieu un altre avatar. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Un error intern d'avatar s'ha produït. Si us plau, informa d'això amb un administrador al xat. - + Could not start game: Synchronization failed. No s'ha pogut començar la partida: La sincronització ha fallat. - + The server is down for maintenance. Please try again later. Aquest servidor està desconectat per manteniment. Si us plau, torneu-ho a provar més tard. - + An internal error occured. Un error intern s'ha produït. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Notificació de xarxa - + You were kicked from the game. Heu estat expulsat de la partida. - + Sorry, this game is already full. Aquesta partida ja és plena. - + Unable to join - the server has already started the game. No s'ha pogut unir-se a la partida - el servidor ja l'ha començat. - + Your admin state timed out due to inactivity. Feel free to create a new game! El vostre estat com a administrador s'ha perdut a causa d'inactivitat. Podeu crear una partida nova! - + You cannot join this type of game as guest. No podeu unir-vos a aquest tipus de partida com a visitant. - + The settings are invalid for this type of game. Les opcions són invàlides per aquest tipus de partida. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Una nova versió de PokerTH és disponible.<br>Si us plau, aneu a <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> i descarregueu la versió més actualitzada. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Aquesta versió beta de PokerTH és obsoleta.<br>Si us plau, aneu a <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> i descarregueu la versió més actualitzada. - - + + Server Message Missatge de servidor - + The game name report was accepted by the server. Thank you. L'informe del nom de joc ha sigut acceptat pel servidor. Gràcies. - + This game name was already reported by another player. Aquest informe de nom de joc ja ha estat reportat per un altre jugador. - + An error occurred while reporting the game name. S'ha produït un error quan s'estava reportant el nom de joc. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. diff --git a/ts/pokerth_cz.ts b/ts/pokerth_cz.ts index 0c260dbc..983edc46 100644 --- a/ts/pokerth_cz.ts +++ b/ts/pokerth_cz.ts @@ -1,7 +1,6 @@ -UTF-8 CardDeckStyleReader @@ -466,16 +465,12 @@ Zkontrolujte, že jste nahrávali platný PokerTH soubor záznamů. You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - Od toho hráče již nebudete dostávat zprávy, ani pozvánky do hry.<br>Opravdu chcete přidat hráče <b>%1</b> do ignore listu? + Od toho hráče již nebudete dostávat zprávy, ani pozvánky do hry.<br>Opravdu chcete přidat hráče <b>%1</b> do ignore listu? PokerTH - Question PokerTH - Dotaz - - You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - Od tohoto uživatele již nebudete přijímat žádné zprávy, ani pozvánky do her.<br>Opravdu chcete přidat hráče <b>%1</b> na seznam ignorovaných? - Report inappropriate avatar Nahlásit nevhodný avatar @@ -1388,11 +1383,11 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:18px; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> {3C?} {4.0/?} {3.?} {40/?} {1"?} {26p?} {400;?} {0p?} {0p?} {0p?} {0p?} {0;?} {0p?} +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -1403,7 +1398,48 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">Martin Lukeš - martin.meridius@gmail.com</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">Martin Lukeš - martin.meridius@gmail.com</span></p></td></tr></table></body></html> + + + Third party libs + Knihovny jiných projektů @@ -1797,6 +1833,10 @@ Vyberte, prosím, jiný! Delay between hands: Pauza mezi rozdáními: + + Allow spectators to watch the game + Povolit přihlíženícím sledovat hru + createInternetGameDialogImpl @@ -2072,6 +2112,14 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:18px; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + Players + Hráči + + + Spectators + Přihlížející + gameLobbyDialogImpl @@ -3335,24 +3383,37 @@ Další hráče můžete pozvat pravým kliknutím na jejich přezdívku v sezna Admin action ... - + Správcovské akce ... Total kickban - + Vyhodit a zabanovat Close game - + Ukončit hru Are you sure you want to close the game: "%1"? - + Opravdu chcete ukončit hru: +"%1"? Are you sure you want to total kickban the player: "%1"? - + Opravdu chcete vyhodit a zabanovat hráče: "%1"? + + + Spectate + Přihlížet + + + Players (%1) + Hráči (%1) + + + Spectators (%1) + Přihlížející (%1) @@ -3672,6 +3733,10 @@ Pokud chcete ve hře zůstat, ale potřebujete si odskočit, využijte funkci &q PokerTH %1 PokerTH %1 + + Spectators + Přihlížející + internetGameLoginDialog @@ -3884,6 +3949,18 @@ Chcete jej přepsat? Nelze uložit soubor nastavení serveru: + + Could not load server-profiles-file: +%1 + Nelze načíst soubor nastavení serveru: +%1 + + + Could not save server-profiles-file: +%1 + Nelze uložit soubor nastavení serveru: +%1 + manualBlindsOrderDialog @@ -4251,7 +4328,7 @@ p, li { white-space: pre-wrap; } Server Password: - Heslo serveru: + Heslo serveru: Server Port: @@ -4729,6 +4806,22 @@ p, li { white-space: pre-wrap; } OK OK + + Common + Obecné + + + Do not hide avatars of players which are on the ignore list + Neskrývat avatary hráčů, kteří jsou na seznamu ignorovaných + + + Disable emoticons in the chat + Zakázat v chatu emotikony + + + Allow spectators to watch the game + Povolit přihlíženícím sledovat hru + settingsDialogImpl @@ -5067,15 +5160,15 @@ Opravdu se chcete vrátit do továrního nastavení? Scottish Gaelic - + Gàidhlig Galician - + Galego Vietnamese - + Tiếng Việt @@ -5591,28 +5684,29 @@ Prosím, zkontrolujte své uživatelské jméno a heslo. The game was closed. - + Hra byla ukončena. The game could not be closed. - + Hra nemohla být ukončena. The player was kicked and banned permanently. - + Hráč byl vyhozen a natrvalo zabanován. The player was kicked, but could not be banned because it was a guest player. - + Hráč byl vyhozen, ale nemohl být zabanován protože byl pouze host. The player was kicked, but could not be banned, because the nick could not be found in the database - + Hráč byl vyhozen, ale nemohl být zabanován +protože přezdívku v databázi nelze nalézt The player could not be found. - + Hráče nelze nalézt. diff --git a/ts/pokerth_de.ts b/ts/pokerth_de.ts index 8ec8d1ed..fbe03396 100644 --- a/ts/pokerth_de.ts +++ b/ts/pokerth_de.ts @@ -1,7 +1,6 @@ -UTF-8 CardDeckStyleReader @@ -262,22 +261,22 @@ Bitte kontaktieren Sie den Ersteller des Spieltisch-Stils "%4". - + Everything OK! Alles okay! - + Some pictures are missing, please contact style maintainer for this issue. Einige Bilder fehlen, bitte kontaktieren Sie den Stil-Betreuer über diesen Vorfall. - + Some style fields are missing, please contact style maintainer for this issue. Einige Stilfelder fehlen, bitte kontaktieren Sie den Stil-Betreuer über diesen Vorfall. - + This style is outdated, please contact style maintainer for this issue. Dieser Stil ist veraltet, bitte kontaktieren Sie den Stil-Betreuer über diesen Vorfall. @@ -440,52 +439,52 @@ Bitte kontaktieren Sie den Ersteller des Spieltisch-Stils %3. Analysiere Logdatei ... - + PokerTH - Delete log files PokerTH - Lösche Logdateien - + Do you really want to delete the selected log files? Möchten Sie die ausgewählten Logdateien wirklich löschen? - + Remove log file Logdatei löschen - + PokerTH cannot remove this log file, please verify that you have write access to this file! PokerTH kann diese Logdatei nicht löschen. Bitte stellen Sie sicher, dass Sie Schreibberechtigung auf diese Datei haben! - + Export PokerTH log file to HTML Exportiere PokerTH-Logdatei als HTML - + PokerTH HTML log (*.html) PokerTH-HTML-Log (*.html) - + Export PokerTH log file to plain text Exportiere PokerTH-Logdatei als reinen Text - + PokerTH plain text log (*.txt) PokerTH-Reintext-Log (*.txt) - + Save PokerTH log file PokerTH-Logdatei speichern - + PokerTH SQL log (*.pdb) PokerTH-SQL-Log (*.pdb) @@ -537,14 +536,14 @@ Uploading log files may fail if you are using an http proxy. Das Hochladen kann fehlschlagen, falls Sie einen HTTP-Proxy verwenden. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Verarbeiten der Logdatei aufdem Webserver fehlgeschlagen. Bitte überprüfen Sie, ob Sie eine gültige PokerTH-Logdatei hochladen. - + Failure reason: Fehlerursache: @@ -581,18 +580,18 @@ Bitte überprüfen Sie, ob Sie eine gültige PokerTH-Logdatei hochladen.Unpassenden Avatar melden - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Sie werden keine Chat-Nachrichten oder Spieleinladungen mehr von diesem Spieler erhalten.<br>Möchten Sie den Spieler <b>%1</b> wirklich auf die Ignorier-Liste setzen? - - + + PokerTH - Question PokerTH - Frage - + Are you sure you want to report the avatar of "%1" as inappropriate? Sind Sie sicher, dass Sie den Avatar von "%1" als unpassend melden möchten? @@ -621,8 +620,8 @@ Bitte überprüfen Sie, ob Sie eine gültige PokerTH-Logdatei hochladen. aboutPokerth - - + + About Über @@ -657,8 +656,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">© 2006-2010, FHammer, FThauer, LMay</p></td></tr></table></body></html> - - + + Project Projekt @@ -1111,7 +1110,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - erstes GUI-Grafikdesign</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1129,16 +1127,6 @@ p, li { white-space: pre-wrap; } <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Mirko Albrecht - deutsch<br />Felix Hammer - deutsch<br />Bernd Arnold - deutsch</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -1196,19 +1184,58 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - für die neuen Tisch-Sounds</span></p></td></tr></table></body></html> - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">Mirko Albrecht - deutsch<br />Felix Hammer - deutsch<br />Bernd Arnold - deutsch</span></p></td></tr></table></body></html> + + + + License Lizenz - + + + Third party libs + Drittanbieter-Bibliotheken + + + Close Schließen - - + + Thanks to Dank an @@ -1245,8 +1272,8 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + Translation Übersetzung @@ -1324,8 +1351,8 @@ p, li { white-space: pre-wrap; } © 2006-2007, FHammer, FThauer, LMay - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> @@ -2134,21 +2161,21 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"><br /></span></p></td></tr></table></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Liberation Sans'; font-size:18px; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> {3C?} {4.0/?} {3.?} {40/?} {1"?} {26p?} {400;?} {0p?} {0p?} {0p?} {0p?} {0;?} {0p?} +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2157,7 +2184,14 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">Mirko Albrecht - deutsch<br />Felix Hammer - deutsch<br />Bernd Arnold - deutsch</span></p></td></tr></table></body></html> @@ -2412,12 +2446,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Eigene Blinds-Reihenfolge - + You cannot set more than 30 manual blinds. Sie können nicht mehr als 30 manuelle Blinds setzen. @@ -2583,37 +2617,43 @@ Bitte wählen Sie einen anderen! Zeit für Spieleraktion (Sek.): - - + + Maximum number of players: Maximale Anzahl der Spieler: - - + + Start Cash: Startgeld: - - + + Password: Kennwort: - + Delay between hands: Verzögerung zwischen Runden: - - + + + Allow spectators to watch the game + Zuschauern das Ansehen des Spiels erlauben + + + + Create Game Spiel erstellen - + Cancel Abbrechen @@ -2638,7 +2678,7 @@ Bitte wählen Sie einen anderen! - + Default game name: Standard-Spielname: @@ -2673,38 +2713,38 @@ Bitte wählen Sie einen anderen! Ranking-Spiel - + Blinds Blinds - + Use saved blinds settings Gespeicherte Blinds-Einstellungen benutzen - + Change blinds settings ... Blinds-Einstellungen ändern... - - + + $ $ - + Timeout for player action: Zeit für Spieleraktion: - - + + s @@ -2853,20 +2893,20 @@ Bitte wählen Sie einen anderen! Spiel beitreten - - + + Game Info Spieldaten - - + + Connected Players Verbundene Spieler - - + + Start Cash: Startgeld: @@ -2880,7 +2920,7 @@ Bitte wählen Sie einen anderen! Spiele - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2897,8 +2937,8 @@ p, li { white-space: pre-wrap; } Zeit für Spieleraktion (Sek.): - - + + Fill up with computer opponents Mit Computergegnern auffüllen @@ -2911,8 +2951,8 @@ p, li { white-space: pre-wrap; } Entfernen - - + + Lobby-Chat Lobby-Chat @@ -2933,8 +2973,10 @@ p, li { white-space: pre-wrap; } Verfügbare Spieler + + Players - Spieler + Spieler Kick Player @@ -2961,8 +3003,8 @@ p, li { white-space: pre-wrap; } Blindserhöhungs-Modus: - - + + Manual blinds list: Eigene Blinds-Liste: @@ -2971,32 +3013,30 @@ p, li { white-space: pre-wrap; } Zeit für Spieleraktion (Sek.): - - + + Game type: Spieltyp: - - + + &Leave Game Spiel &verlassen - - Join &any game &Irgendeinem Spiel beitreten - - + + &Create Game Spiel &erstellen - - + + &Join Game Spiel &beitreten @@ -3019,32 +3059,32 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Hier klicken, um Online-Ranking anzuzeigen</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - Kein Spiellisten-Filter - - + + 1 - Show open games 1 - Zeige offene Spiele - - + + 2 - Show open & non-full games 2 - Zeige offene & nicht volle Spiele - - + + 3 - Show open & non-full & non-private games 3 - Zeige offene & nicht volle & öffentliche Spiele - - + + 4 - Show open & non-full & private games 4 - Zeige offene & nicht volle & private Spiele @@ -3055,68 +3095,74 @@ p, li { white-space: pre-wrap; } Internetspiel-Lobby - - + + search for player ... nach Spieler suchen... - - + + 5 - Show open & non-full & ranking games 5 - Zeige offene & nicht volle & Ranking-Spiele - - + + + Spectators + Zuschauer + + + + First small blind: Erster Small Blind: - - + + Blinds raise interval: Blindserhöhungs-Intervall: - - + + Blinds raise mode: Blindserhöhungs-Modus: - - + + Timing: Zeitwahl: - - + + &Start Game Spiel &starten - - + + &Kick Player Spieler ent&fernen - - + + Sort alphabetically Alphabetisch sortieren - - + + Sort by country Nach Land sortieren - - + + Display idle players Inaktive Spieler anzeigen @@ -3148,62 +3194,60 @@ p, li { white-space: pre-wrap; } Spiel - + Joining a private Game Einem privaten Spiel beitreten - + You are about to join a private game. Please enter the password! Dies ist ein privates Spiel. Bitte Kennwort eingeben! - - - - + + + + Game Info Spieldaten - - Connected players Verbundene Spieler - + Server Error Serverfehler - + You should not kick yourself from this game! Sie sollten sich nicht selbst des Spiels verweisen! - + running läuft - - - + + + Game Spiel - - - + + + Players Spieler - - - + + + State Status @@ -3212,27 +3256,27 @@ p, li { white-space: pre-wrap; } Privat - + open offen - + hands Runden - + minutes Minuten - + double blinds Blinds verdoppeln - + manual blinds order Eigene Blinds-Reihenfolge @@ -3246,76 +3290,75 @@ p, li { white-space: pre-wrap; } R - - - + + + P Prv (Privat) passt in die Spalte rein Prv - - - + + + Available Players Verfügbare Spieler - + Invite player Spieler einladen - + Ignore player Spieler ignorieren - + Player infos ... Spielerinfos... - - + + Show player stats Zeige Spielerstatistiken - + Report inappropriate game name Unpassenden Spielnamen melden - - - + + + Standard Standard - - - + + + Registered players only Nur registrierte Spieler - - - + + + Invited players only Nur eingeladene Spieler - - - + + + Ranking game Ranking-Spiel - Connected players - max. %1 Verbundene Spieler - max. %1 @@ -3328,1241 +3371,1242 @@ p, li { white-space: pre-wrap; } Sek. (Hand-Verzögerung) - + Afghanistan Afghanistan - + ALand Islands Åland - + Albania Albanien - + Algeria Algerien - + American Samoa Amerikanisch-Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarktika - + Antigua And Barbuda Antigua und Barbuda - + Argentina Argentinien - + Armenia Armenien - + Aruba Aruba - + Australia Australien - + Austria Österreich - + Azerbaijan Aserbaidschan - + Bahamas Bahamas - + Bahrain Bahrain - + Bangladesh Bangladesch - + Barbados Barbados - + Belarus Weißrussland - + Belgium Belgien - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivien - + Bosnia And Herzegovina Bosnien und Herzegowina - + Botswana Botsuana - + Bouvet Island Bouvetinsel - + Brazil Brasilien - + British Indian Ocean Territory Britisches Territorium im Indischen Ozean - + Brunei Darussalam Brunei - + Bulgaria Bulgarien - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodscha - + Cameroon Kamerun - + Canada Kanada - + Cape Verde Kap Verde - + Cayman Islands Kaimaninseln - + Central African Republic Zentralafrikanische Republik - + Chad Tschad - + Chile Chile - + China China - + Christmas Island Weihnachtsinsel - + Cocos (Keeling) Islands Kokosinseln - + Colombia Kolumbien - + Comoros Komoren - + Congo Kongo - + Congo, The Democratic Republic Of The Demokratische Republik Kongo - + Cook Islands Cookinseln - + Costa Rica Costa Rica - + Cote D'Ivoire Elfenbeinküste - + Croatia Kroatien - + Cuba Kuba - + Cyprus Zypern - + Czech Republic Tschechien - + Denmark Dänemark - + Djibouti Dschibuti - + Dominica Dominica - + Dominican Republic Dominikanische Republik - + Ecuador Ecuador - + Egypt Ägypten - + El Salvador El Salvador - + Equatorial Guinea Äquatorialguinea - + Eritrea Eritrea - + Estonia Estland - + Ethiopia Äthiopien - + Falkland Islands (Malvinas) Falklandinseln - + Faroe Islands Färöer - + Fiji Fidschi - + Finland Finnland - + France Frankreich - + French Guiana Französisch-Guayana - + French Polynesia Französisch-Polynesien - + French Southern Territories Französische Süd- und Antarktisgebiete - + Gabon Gabun - + Gambia Gambia - + Georgia Georgien - + Germany Deutschland - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Griechenland - + Greenland Grönland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bissau - + Guyana Guyana - + Haiti Haiti - + Heard Island And Mcdonald Islands Heard und McDonaldinseln - + Holy See (Vatican City State) Heiliger Stuhl (Staat Vatikanstadt) - + Honduras Honduras - + Hong Kong Hongkong - + Hungary Ungarn - + Iceland Island - + India Indien - + Indonesia Indonesien - + Iran, Islamic Republic Of Iran - + Iraq Irak - + Ireland Irland - + Isle Of Man Isle of Man - + Israel Israel - + Italy Italien - + Jamaica Jamaika - + Japan Japan - + Jersey Jersey - + Jordan Jordanien - + Kazakhstan Kasachstan - + Kenya Kenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Nordkorea - + Korea, Republic Of Südkorea - + Kuwait Kuwait - + Kyrgyzstan Kirgisistan - + Lao People'S Democratic Republic Laos - + Latvia Lettland - + Lebanon Libanon - + Lesotho Lesotho - + Liberia Liberia - + Libyan Arab Jamahiriya Libyen - + Liechtenstein Liechtenstein - + Lithuania Litauen - + Luxembourg Luxemburg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Mazedonien - + Madagascar Madagaskar - + Malawi Malawi - + Malaysia Malaysia - + Maldives Malediven - + Mali Mali - + Malta Malta - + Marshall Islands Marshallinseln - + Martinique Martinique - + Mauritania Mauretanien - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Mexiko - + Micronesia, Federated States Of Föderierte_Staaten_von_Mikronesien - + Moldova, Republic Of Moldawien - + Monaco Monaco - + Mongolia Mongolei - + Montserrat Montserrat - + Morocco Marokko - + Mozambique Mosambik - + Myanmar Myanmar - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Niederlande - + Netherlands Antilles Niederländische Antillen - + New Caledonia Neukaledonien - + New Zealand Neuseeland - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Norfolkinsel - + Northern Mariana Islands Nördliche Marianen - + Norway Norwegen - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Palästina - + Panama Panama - + Papua New Guinea Papua-Neuguinea - + Paraguay Paraguay - + Peru Peru - + Philippines Philippinen - + Pitcairn Pitcairninseln - + Poland Polen - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Katar - + Reunion Reunion - + Romania Rumänien - + Russian Federation Russland - + Rwanda Ruanda - + Saint Helena St. Helena - + Saint Kitts And Nevis St._Kitts_und_Nevis - + Saint Lucia St. Lucia - + Saint Pierre And Miquelon Saint-Pierre und Miquelon - + Saint Vincent And The Grenadines St. Vincent und die Grenadinen - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe São Tomé und Príncipe - + Saudi Arabia Saudi-Arabien - + Senegal Senegal - + Serbia And Montenegro Serbien und Montenegro - + Seychelles Seychellen - + Sierra Leone Sierra Leone - + Singapore Singapur - + Slovakia Slowakei - + Slovenia Slowenien - + Solomon Islands Salomonen - + Somalia Somalia - + South Africa Südafrika - + South Georgia And The South Sandwich Islands Südgeorgien und die Südlichen Sandwichinseln - + Spain Spanien - + Sri Lanka Sri Lanka - + Sudan Sudan - + Suriname Suriname - + Svalbard And Jan Mayen Spitzbergen und Jan Mayen - + Swaziland Swasiland - + Sweden Schweden - + Switzerland Schweiz - + Syrian Arab Republic Syrien - + Taiwan, Province Of China Taiwan - + Tajikistan Tadschikistan - + Tanzania, United Republic Of Tansania - + Thailand Thailand - + Timor-Leste Osttimor - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinidad und Tobago - + Tunisia Tunesien - + Turkey Türkei - + Turkmenistan Turkmenistan - + Turks And Caicos Islands Turks- und Caicosinseln - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ukraine - + United Arab Emirates Vereinigte Arabische Emirate - + United Kingdom Vereinigtes Königreich - + United States Vereinigte Staaten - + United States Minor Outlying Islands United States Minor Outlying Islands - + Uruguay Uruguay - + Uzbekistan Usbekistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Vietnam - + Virgin Islands, British Britische Jungferninseln - + Virgin Islands, U.S. Amerikanische Jungferninseln - + Wallis And Futuna Wallis und Futuna - + Western Sahara Westsahara - + Yemen Jemen - + Zambia Sambia - + Zimbabwe Simbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Sind Sie sicher, dass Sie den Spielnamen "%1" als unpassend melden möchten? - + Are you sure you want to close the game: "%1"? - + Sind Sie sicher, dass Sie das Spiel schließen möchten: +"%1"? - + Are you sure you want to total kickban the player: "%1"? - + Sind Sie sicher, dass Sie den Spieler "%1" endgültig verbannen möchten? - - - + + + T Typ passt in die Spalte rein Typ @@ -4578,105 +4622,108 @@ p, li { white-space: pre-wrap; } Klicken Sie hier für das Online-Ranking - - - + + Spectate + Zuschauen + + + + + Time Zeit - - + + Admin action ... - + Administrator-Aktion ... - + Total kickban - + Gesamte Verbannungen - + Close game - + Spiel schließen - - - + + + sec (action) Sek. (Aktion) - - - + + + sec (hand delay) Sek. (Hand-Verzögerung) - - Connected players - Max. %1 Verbundene Spieler - max. %1 - - + + running games: %1 Laufende Spiele: %1 - - + + open games: %1 Offene Spiele: %1 - + Invite %1 %1 einladen - + Ignore %1 %1 ignorieren - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 wurde zu %2 von %3 eingeladen.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 hat die Einladung zu %2 abgelehnt.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 kann %2 nicht beitreten, da er beschäftigt ist.</span> - - + + The game will start in<br><b>%1</b> seconds. Das Spiel startet in<br><b>%1</b> Sekunden. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Sie sind einem Spiel mit dem Typ "nur Einladungen" beigetreten. Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerliste mit der rechten Maustaste klicken. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Sie wurden von <b>%2</b> zu dem Spiel <b>%1</b> eingeladen.<br>Möchten Sie diesem Spiel beitreten? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Sie werden keine Chat-Nachrichten oder Spieleinladungen mehr von diesem Spieler erhalten.<br>Möchten Sie den Spieler <b>%1</b> wirklich auf Ihre Ignorier-Liste setzen? @@ -4685,52 +4732,65 @@ Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerli Spieler im Chat: %1 - - + + connected players: %1 Verbundene Spieler: %1 - + + + Players (%1) + Spieler (%1) + + + + + + Spectators (%1) + Zuschauer (%1) + + + search for player ... nach Spieler suchen... - + Chat is only available to registered players. Der Chat steht nur registrierten Spielern zur Verfügung. - + Invite player ... Spieler einladen... - + Ignore player ... Spieler ignorieren... - + %1 is playing in "%2". %1 spielt in "%2". - + %1 is not playing at the moment. %1 spielt derzeit nicht. - - + + PokerTH - Info Message PokerTH - Infomeldung - - - - + + + + PokerTH - Question PokerTH - Frage @@ -4742,7 +4802,7 @@ Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerli gameTable - + Speed: Tempo: @@ -4759,66 +4819,66 @@ Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerli Spiel - - + + Ctrl+N Strg+N - - + + Quit Schließen - - + + About PokerTH ... Über PokerTH... - - + + Settings ... Einstellungen... - - + + Create Network Game ... Netzwerkspiel erstellen... - - + + Join Network Game ... Netzwerkspiel beitreten... - - - + + + Fullscreen Vollbild - + Hands Blätter - + Chat Chat - + Log Log - - + + Start Local Game ... Lokales Spiel starten... @@ -4827,77 +4887,77 @@ Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerli Netzwerkspiel - - + + Internet Game ... Internetspiel... - - + + Ctrl+Q Strg+Q - - + + Show/Hide Chat Window Chatfenster zeigen/verstecken - - + + Show/Hide Log Window Logfenster zeigen/verstecken - - - - - - + + + + + + Show/Hide Hands Window Blätterfenster zeigen/verstecken - + Save Speichern - - + + Ctrl+O Strg+O - - + + Ctrl+J Strg+J - - + + Ctrl+F Strg+F - - + + Ctrl+T Strg+T - - + + Ctrl+H Strg+H - - + + Ctrl+L Strg+L @@ -4906,8 +4966,8 @@ Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerli PokerTH 0.6 - Die Open-Source Texas Holdem Engine - - + + Ctrl+I Strg+I @@ -4916,22 +4976,22 @@ Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerli All In - + Away Abwesend - + Manual Action (default) Manuelle Eingabe (Standard) - + Auto-Check / Auto-Fold Auto-Check und Auto-Fold - + Auto-Check / Auto-Call-Any Auto-Check und Auto-Call-any @@ -4941,103 +5001,103 @@ Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerli PokerTH 0.6-beta - Die Open-Source Texas Holdem Engine - - + + Show/Hide Away Window Abwesend-Fenster zeigen/verstecken - - + + Ctrl+A Strg+A - + Kick Rauswerfen - + Vote Timeout: Zeitlimit: - + Yes Ja - + No Nein - + Player info Spieler Information - + Chance Chance - + Settings Einstellungen - + Configure PokerTH Konfiguriere PokerTH - + Configure PokerTH ... Konfiguriere PokerTH... - - + + Close Schließen - - + + Ctrl+X Strg+X - + Vote started by: Abstimmung gestartet von: - - + + Show/Hide Chance Window Chancenfenster zeigen/verstecken - - + + Ctrl+C Strg+C - + &View &Ansicht - + &Settings &Einstellungen - + Shortcut: <Shift> Kurzbefehl: <Umschalt> @@ -5159,31 +5219,31 @@ Bitte wählen Sie einen anderen Namen. ⌘N zum Start eines neuen Spiels - - - - - - - - + + + + + + + + Start Start - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop @@ -5245,8 +5305,8 @@ Wenn der Server hinter einem NAT-Router betrieben wird, stellen Sie sicher, dass F1 - Bet/Raise | F2 - Check/Call | F3 - Fold/All-In - - + + Chat Chat @@ -5331,12 +5391,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Bitte gehen Sie auf <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> und laden Sie die aktuelle Version herunter. - + Closing PokerTH during network game PokerTH während eines Netzwerkspiels beenden - + You are the hosting server. Do you want to close PokerTH anyway? Sie sind der Gastgeber dieses Spiels. Möchten Sie PokerTH trotzdem beenden? @@ -5353,16 +5413,16 @@ Bitte gehen Sie auf <a href="http://www.pokerth.net/" target=" Diese Beta-Version von PokerTH ist veraltet.<br>Bitte gehen Sie auf <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> und laden Sie die aktuelle Version herunter. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Die Open-Source Texas Holdem Engine - - - - - + + + + + Lobby Lobby @@ -5371,12 +5431,12 @@ Bitte gehen Sie auf <a href="http://www.pokerth.net/" target=" Ein interner Avatarfehler ist aufgetreten. Bitte informieren Sie hierüber einen Admin im Lobbychat. - + PokerTH - Internet Game Message PokerTH - Internetspiel-Meldung - + Attention! Do you really want to leave the current game and go back to the lobby? Vorsicht! Möchten Sie das aktuelle Spiel wirklich verlassen @@ -5437,63 +5497,68 @@ Bitte stellen Sie sicher, dass Sie mit dem Internet direkt verbunden sind.Beim Herunterladen der Serverliste konnte die Zieldatei nicht geöffnet werden. - + PokerTH %1 PokerTH %1 - - + + Chance Chance - + Really want to exit? Wirklich verlassen? - + PokerTH - Close Table? PokerTH - Tisch beenden? - - + + Kick Rauswurf - - + + Do you want to kick <b>%1</b><br>from this game? Möchten Sie <b>%1</b><br>aus diesem Spiel entfernen? - - - - + + + + <b>%1</b> secs left <b>%1</b> Sekunde(n) verbleiben - + vote Stimme - + votes Stimmen - - + + Chat is only available to registered players. Mehr Text passte nicht rein. Chat nur für registrierte Spieler. + + + Spectators + Zuschauer + PokerTH - Warning PokerTH - Warnung @@ -5517,14 +5582,14 @@ Wenn Sie temporär abwesend sind, können Sie die Abwesend-Funktionen in der rec Sie haben <b>%1</b> %2 gegen sich.<br>Noch <b>%3</b> Stimmen bis zum Rauswurf. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Spieler <b>%1</b> hat <b>%2</b> %3 gegen<br>sich. Noch <b>%4</b> Stimme(n), um ihn rauszuwerfen. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Sie haben <b>%1</b> %2 gegen sich.<br>Noch <b>%3</b> Stimme(n) bis zum Rauswurf. @@ -5765,25 +5830,21 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Dateifehler beim Laden des Serverprofils - - - - Could not load server-profiles-file: Kann Serverprofil-Datei nicht laden: - + Save Server Profile Error Fehler beim Speichern des Serverprofils @@ -5792,31 +5853,47 @@ p, li { white-space: pre-wrap; } Ein Profil mit dem Namen:" - + + + + + Could not load server-profiles-file: +%1 + Kann die Serverprofil-Datei nicht laden: +%1 + + + Read Server-Profile List Error Fehler beim Lesen der Serverprofil-Liste - + Could not read server-profiles list Kann die Serverprofil-Liste nicht lesen - - + + Save Server-Profile-File Error Speichere Server-Profile-Datei Fehler - - + + + Could not save server-profiles-file: +%1 + Kann Serverprofil-Datei nicht speichern: +%1 + + Could not save server-profiles-file: Kann Serverprofil-Datei nicht speichern: - + A profile with the name: %1 already exists. Would you like to overwrite ? Ein Profil mit dem Namen "%1" existiert bereits. @@ -5896,12 +5973,12 @@ Möchten Sie es überschreiben? manualBlindsOrderDialogImpl - + Manual Blinds Order Eigene Blinds-Reihenfolge - + You cannot set more than 30 manual blinds. Sie können nicht mehr als 30 manuelle Blinds setzen. @@ -5946,7 +6023,7 @@ Möchten Sie es überschreiben? - + Game Speed: Spielgeschwindigkeit: @@ -5978,7 +6055,7 @@ Möchten Sie es überschreiben? - + Use saved blinds settings Gespeicherte Blinds-Einstellungen benutzen @@ -5989,7 +6066,7 @@ Möchten Sie es überschreiben? - + Change blinds settings ... Blinds-Einstellungen ändern... @@ -6036,14 +6113,14 @@ Möchten Sie es überschreiben? selectAvatarDialogImpl - - - + + + Avatar File Error Avatardatei-Fehler - + Please select an avatar from the list! Bitte wähle einen Avatar aus der Liste! @@ -6054,7 +6131,7 @@ Please enter an valid picture! Bitte wähle ein gültiges Avatar-Bild! - + Select external avatar picture Wähle ein externes Avatar-Bild aus @@ -6063,19 +6140,19 @@ Bitte wähle ein gültiges Avatar-Bild! Bilder (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Die Datei des gewählten Bildes ist zu groß (maximal 30 kB). Bitte ein kleineres Bild auswählen! - + Images (*.png *.jpg *.gif) Bilder (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! Das gewählte Avatar-Bild existiert nicht. @@ -6111,10 +6188,10 @@ p, li { white-space: pre-wrap; } Small Blind: - - - - + + + + Start Cash: Startgeld: @@ -6123,81 +6200,87 @@ p, li { white-space: pre-wrap; } Engine Version: - - + + Network Server Settings Einstellungen für Netzwerkspiel - - - - + + + + Server Port: Serverport: - - - - + + + + Use IPv6 IPv6 benutzen - - + + Server Password: - Serverkennwort: + Serverkennwort: - - + + + Allow spectators to watch the game + Zuschauern das Ansehen des Spiels erlauben + + + + Computer Engine Computer-Engine - - + + Opponent 5: Gegner 5: - - + + Opponent 3: Gegner 3: - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Hinweis: Standard-Spieleinstellungen, wie "Maximale Anzahl Spieler", "Startgeld" und "Small Blind", werden von den Netzwerkspiel-Einstellungen übernommen. - + (This nick will also be used for the online game login) (Dieser Nickname wird auch für die Anmeldung zum Onlinespiel verwendet) - - + + Opponent 2: Gegner 2: - - + + Opponent 1: Gegner 1: - - + + Opponent 4: Gegner 4: - + Human Player: Menschlicher Spieler: @@ -6210,42 +6293,42 @@ p, li { white-space: pre-wrap; } Tag(e) - - + + Log File Directory: Verzeichnis der Logdatei: - + Log Messages Log-Nachrichten - + Local Game Settings Einstellungen für lokales Spiel - + Network Game Settings Einstellungen für Netzwerkspiel - - + + Delay between hands: Verzögerung zwischen Runden: - + Internet Game Settings Einstellungen für Internetspiel - - + + Show flip-card animation Animierte Karten @@ -6254,8 +6337,8 @@ p, li { white-space: pre-wrap; } Eigenes Rückseiten-Bild: - - + + Show fade-out animation for non-winning cards Ausblend-Animation für Verliererkarten @@ -6264,24 +6347,24 @@ p, li { white-space: pre-wrap; } Intro während des Starts anzeigen - - + + Show own cards only on mouse click Eigene Karten nur bei Mausklick anzeigen - + Show right toolbox Rechte Toolbox anzeigen - + Show left toolbox Linke Toolbox anzeigen - - + + Play blind raise notification Blinderhöhungs-Hinweismeldung abspielen @@ -6290,31 +6373,31 @@ p, li { white-space: pre-wrap; } Statusleisten-Nachrichten anzeigen - - + + Show game settings dialog on every new game Den Dialog Spieleinstellungen bei jedem neuen Spiel anzeigen - - + + Number of players: Anzahl der Spieler: - + Note: Best quality with image ratio like width=48, height=76. Hinweis: Beste Bildqualität bei einem Verhältnis wie Höhe=48 und Breite=76. - - + + Game Speed: Spielgeschwindigkeit: - - + + Pause between hands (press "start" button to go on) Pause zwischen den Runden ("Start"-Knopf zum Weiterspielen) @@ -6327,8 +6410,8 @@ p, li { white-space: pre-wrap; } Engine-Version für Computergegener: - - + + Enable/Disable Logging Loggen an/aus @@ -6337,20 +6420,20 @@ p, li { white-space: pre-wrap; } Speichere Logdateien für - - + + Write log after every: Schreibe Logdateien nach jeder/jedem: - - + + Show buttons for small blind and big blind Symbole für Small Blind und Big Blind anzeigen - - + + Play sound effects Spiele Klangeffekte @@ -6359,26 +6442,26 @@ p, li { white-space: pre-wrap; } 0.4 (aktuell) - - - - + + + + Use SCTP SCTP benutzen - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://de.wikipedia.org/wiki/IPv6">Was ist das?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://de.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Was ist das?</a> @@ -6399,20 +6482,20 @@ p, li { white-space: pre-wrap; } Einstellungen - - + + Maximum number of players: Maximale Anzahl der Spieler: - - + + Sound Volume: Lautstärke: - - + + 10 10 @@ -6421,38 +6504,38 @@ p, li { white-space: pre-wrap; } Zeit für Spieleraktion (Sek.): - - + + Opponent 6: Gegner 6: - + Note: Best avatar quality with image ratio like width=50, height=50. Hinweis: Beste Avatar-Qualität bei einem Seitenverhältnis wie Breite=50 und Höhe=50. - - + + action (high frequent disc access) Aktion (häufiger Festplattenzugriff) - - + + hand (medium disc access) Runde (mittlerer Festplattenzugriff) - - + + game (low disc access) Spiel (geringer Festplattenzugriff) - + Sound Sound @@ -6475,14 +6558,14 @@ p, li { white-space: pre-wrap; } Internetserver-Einstellungen (dedizierter Server) - - + + Server Address: Serveradresse: - - + + Use password for private game: Benutze Kennwort für private Spiele: @@ -6507,89 +6590,89 @@ p, li { white-space: pre-wrap; } F-Tasten-Reihenfolge umkehren (F1 - F3) - - - - + + + + First small blind: Erster Small Blind: - - - - + + + + Raise blinds: Erhöhe Blinds: - - - - - - - - + + + + + + + + Every: Alle: - - - - + + + + hands Runden - - - - + + + + minutes Minuten - - - - + + + + Raise mode: Erhöhungs-Modus: - - - - + + + + Always double blinds Blinds immer verdoppeln - - - - + + + + Manual blinds order: Eigene Blinds-Reihenfolge: - - - - + + + + Edit ... Bearbeiten... - - + + Language: Sprache: - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6608,26 +6691,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Hinweis: Beste Bildqualität mit einem Seitenverhältnis von </span><span style=" font-weight:600; font-style:italic;">Breite=48, Höhe=76.</span></p></td></tr></table></body></html> - - + + Sound Categories Klangkategorie - - + + Play game actions sounds like "check", "call", "raise" Spielaktionen wie Check, Call und Raise akustisch wiedergeben - - + + Play lobby chat notifications Lobbychat-Hinweismeldungen abspielen - - + + Play network/internet game notifications like "player joined the game" Mehrspieler-Hinweise wiedergeben (z. B. "Spieler trat Spiel bei") @@ -6636,7 +6719,7 @@ p, li { white-space: pre-wrap; } Lobbychat (IRC-Server) aktivieren/deaktivieren - + Player Nicks/Avatars Spielernicknamen/-avatare @@ -6651,19 +6734,19 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><span style=" font-style:italic;">Hinweis: Standard-</span><span style=" font-weight:600; font-style:italic;">Spieleinstellungen</span><span style=" font-style:italic;"> - wie "Maximale Spieleranzahl", "Startgeld" oder "Small Blind" - werden aus den </span><span style=" font-weight:600; font-style:italic;">Einstellungen für Netzwerkspiele</span> übernommen.</p></body></html> - + Reverse order of F-Keys (F1 - F4) F-Tasten-Reihenfolge umkehren (F1 - F4) - - + + Network / Internet Game Netzwerk-/Internetspiel - - + + Switch keyboard focus to bet-input-field if it's your turn Cursor ins "Biete"-Eingabefeld setzen, wenn Sie an der Reihe sind @@ -6682,33 +6765,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Hinweis: beste Qualität mit Verhältnis </span><span style=" font-weight:600; font-style:italic;">Breite=100, Höhe=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Zeit für Spieleraktion: - - - - + + + + s Sek. - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -6719,7 +6802,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Hinweis: Standard-</span><span style=" font-weight:600; font-style:italic;">Spieleinstellungen</span><span style=" font-style:italic;"> - wie "Maximale Anzahl Spieler", "Startgeld" und "Small Blind" - werden von den </span><span style=" font-weight:600; font-style:italic;">Einstellungen für Netzwerkspiel</span><span style=" font-style:italic;"> übernommen.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -6730,50 +6813,50 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Hinweis: beste Bildqualität mit einem Seitenverhältnis von </span><span style=" font-weight:600; font-style:italic;">Breite=50, Höhe=50.</span></p></body></html> - - + + Automatic Server Configuration URL URL für Server-Autokonfiguration - + Factory Settings Standardeinstellung - - + + Show country flag in the corner of avatar Landesflagge in der Ecke des Avatars anzeigen - - + + Activate the "accidentally call after big raise" blocker Versehentliches Call nach einem großen Raise verhindern - - - - + + + + Description Beschreibung - - - - + + + + Maintainer Betreuer - - - + + + State Status @@ -6796,26 +6879,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Hinweis: Beste Bildqualität mit einem Seitenverhältnis von </span><span style=" font-weight:600; font-style:italic;">Breite=48, Höhe=76.</span></p></td></tr></table></body></html> - - + + Server Server - - + + Serverlist Address: Serverlisten-Adresse: - - + + Manual Server Configuration Manuelle Serverkonfiguration - - + + Game Spiel @@ -6832,78 +6915,78 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Hinweis: Standard-</span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Spieleinstellungen</span><span style=" font-size:12pt; font-style:italic;"> - wie &quot;Maximale Spieleranzahl&quot;, &quot;Startgeld&quot; und &quot;Small Blind&quot; werden aus den </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Einstellungen für Netzwerkspiele</span> übernommen.</p></body></html> - - + + Default game name: Standard-Spielname: - - + + Default game type: Standard-Spieltyp: - - + + Standard Standard - - + + Registered players only Nur registrierte Spieler - - + + Invited players only Nur eingeladene Spieler - - + + Ranking game Ranking-Spiel - - + + Show lobby chat Lobby-Chat anzeigen - - + + Automatically leave the table after the game finished Automatisch den Tisch verlassen wenn das Spiel endet - - + + Ignored Players Ignorierte Spieler - - + + Player Spieler - - + + Remove Player Spieler entfernen - + OK OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6916,14 +6999,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Menschlicher Spieler:<br /><span style=" font-style:italic;">(Dieser Nickname wird auch für die Anmeldung zum Onlinespiel verwendet)</span></p></body></html> - - + + Store log files for: Speichere Logdateien für: - - + + Day(s) Tag(e) @@ -6948,14 +7031,14 @@ p, li { white-space: pre-wrap; } Exportieren als HTML - - + + Reset all settings to default ... Alle Einstellungen zurücksetzen - - + + Note: You can not reset all settings to default during a running game! Hinweis: Sie können während eines laufenden Spieles die Einstellungen nicht zurücksetzen @@ -7004,44 +7087,62 @@ p, li { white-space: pre-wrap; } Nicknamen/Avatare - - + + + Common + Gemeinsam + + + + Show cards chance monitor Kartenchancenmonitor anzeigen - - + + Disable splashscreen on startup - Deaktiviere Startbildschirm beim Startvorgang + Startbildschirm beim Startvorgang deaktivieren - - + + + Do not hide avatars of players which are on the ignore list + Avatare von ignorierten Spielern nicht verbergen + + + + + Disable emoticons in the chat + Emoticons im Chat deaktivieren + + + + Game Table Spieltisch - - + + Card Deck Kartenstapel - - + + Card Back Kartenrückseite - - + + Use card back from card style Benutze Kartenrückseite vom Kartenstil - - + + Use custom card back picture: Benutze eigenes Bild für Kartenrückseite: @@ -7070,21 +7171,21 @@ p, li { white-space: pre-wrap; } Kennwort: - - + + Avatar Server: Avatarserver: - + Style Stil - - + + Don't translate poker strings like check, call, raise from game table style Pokerausdrücke - wie Check, Call und Raise - beim Spieltisch-Stil nicht übersetzen @@ -7097,32 +7198,32 @@ p, li { white-space: pre-wrap; } Aktivieren - - - - + + + + Add ... Hinzufügen... - - - - + + + + Remove Entfernen - - - - + + + + Preview - Information: Vorschau-Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7139,8 +7240,8 @@ p, li { white-space: pre-wrap; } Kartendeck-Stile - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7165,14 +7266,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Menschlicher Spieler:<br /><span style=" font-size:11pt; font-style:italic;">(Dieser Nickname wird auch für die Anmeldung zum Onlinespiel verwendet)</span></p></body></html> - - + + Opponent 7: Gegner 7: - - + + Opponent 8: Gegner 8: @@ -7181,8 +7282,8 @@ p, li { white-space: pre-wrap; } Gegner 6: {10:?} - - + + Opponent 9: Gegner 9: @@ -7190,11 +7291,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Einstellungsfehler @@ -7211,7 +7312,7 @@ Please select an valid directory! Bitte wählen Sie ein gültiges Verzeichnis! - + Select your flipside picture Wähle das Rückseitenbild @@ -7220,12 +7321,12 @@ Bitte wählen Sie ein gültiges Verzeichnis! Bilder (*.png) - + Open Directory Öffne Verzeichnis - + Images (*.png *.jpg *.gif) Bilder (*.png *.jpg *.gif) @@ -7238,14 +7339,14 @@ Bitte wählen Sie ein gültiges Verzeichnis! Español (Spanisch) - - + + Blinds Error Blinds-Fehler - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7299,21 +7400,21 @@ Der erste Small Blind wird auf den größten erlaubten Wert gesetzt. Vietnamese - + Vietnamesisch - + The opponent names are not unique. Please choose different names for each Opponent! Die Namen der Gegner müssen verschieden sein. Bitte wähen Sie unterschiedliche Namen für jeden Gegner! - + Language Changed Sprache geändert - + You have changed application language to %1. Please restart PokerTH to load new language! Sie haben die Sprache auf %1 geändert. @@ -7330,15 +7431,15 @@ Bitte starten Sie PokerTH neu um die neue Sprache zu laden! Slowakisch - + The entered flipside picture doesn't exist. Please enter an valid picture! Das Rückseitenbild existiert nicht. Bitte geben Sie ein gültiges Bild an! - - + + The log file directory doesn't exist. Please select an valid directory! Das Logdateien-Verzeichnis existiert nicht. @@ -7380,7 +7481,7 @@ Bitte wählen Sie ein gültiges Verzeichnis! Schwedisch - + The entered server list address is not a valid URL. Please enter a valid server list address! Die eingegebene Adresse ist keine gültige URL. @@ -7414,7 +7515,7 @@ Bitte geben Sie eine gültige Serverlisten-Adresse ein! Galician - + Galicisch @@ -7439,7 +7540,7 @@ Bitte geben Sie eine gültige Serverlisten-Adresse ein! Scottish Gaelic - + Schottisch-gälisch @@ -7455,133 +7556,133 @@ Bitte geben Sie eine gültige Serverlisten-Adresse ein! Französisch (français) - + Settings Information Einstellungsinformation - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Sie haben das Verzeichnish für die Log-Dateien geändert. Bitte starten Sie PokerTH neu, so dass das neue Verzeichnis für die Log-Dateien benutzt wird. - - + + Maintainer Name Name des Betreuers - - + + Maintainer EMail E-Mail-Adr. des Betreuers - - + + Create Date Erstellt am - + Windows Behaviour Fensterverhalten - + scaleable skalierbar - + fixed fixiert - + Minimum Size Mindestgröße - + Maximum Size Maximale Größe - + Fixed Size Feste Größe - + State Status - + Please select your game table style Bitte wählen Sie Ihren Spieltisch-Stil - + PokerTH game table styles (*.xml) PokerTH-Spieltisch-Stile (*.xml) - + Game Table Style Error Spieltisch-Stilfehler - + Selected game table style file is already in the list. Please select another one to add! Die gewählte Spieltisch-Stildatei ist bereits in der Liste enthalten. Bitte wählen Sie eine andere, um sie hinzuzufügen! - + Game Table Style File Error Spieltisch-Stildatei-Fehler - + Could not load game table style file correctly. Style will not be placed into list! Die Spieltisch-Stildatei konnte nicht korrekt geladen werden. Der Stil wird nicht zur Liste hinzugefügt! - + Please select your card deck style Bitte wählen Sie Ihren Kartendeck-Stil - + PokerTH card deck styles (*.xml) PokerTH-Kartendeck-Stil (*.xml) - + Card Deck Style Error Kartendeck-Stilfehler - + Selected card deck style file is already in the list. Please select another one to add! Die gewählte Kartendeck-Stildatei ist bereits in der Liste enthalten. Bitte wählen Sie eine andere, um sie hinzuzufügen! - + Card Deck Style File Error Kartendeck-Stildatei-Fehler - + Could not load card deck style file correctly. Style will not be placed into list! Die Kartendeck-Stildatei konnte nicht korrekt geladen werden. @@ -7620,12 +7721,12 @@ Der Stil wird nicht zur Liste hinzugefügt! PokerTH-Reintext-Log (*.txt) - + PokerTH - Settings PokerTH - Einstellungen - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Achtung: alle persönlichen Einstellungen werden gelöscht und PokerTH wird beendet! @@ -7719,12 +7820,12 @@ Möchten Sie wirklich alle Einstellungen zurücksetzen? startNetworkGameDialogImpl - + Server Error Serverfehler - + You should not kick yourself from this game! Sie sollten sich nicht selbst des Spieles verweisen! @@ -7913,106 +8014,106 @@ Please choose another one. Bitte wählen Sie einen anderen Nicknamen. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Netzwerkfehler - + Server address was not set. Serveradresse wurde nicht angegeben. - + An invalid port was set (ports 0-1023 are not allowed). Ein ungültiger Port wurde angegeben (die Ports 0-1023 sind nicht erlaubt). - + Could not create a socket for TCP communication. Socket für TCP-Übertragung kann nicht erstellt werden. - + Could not set the IP address. IP-Adresse kann nicht gesetzt werden. - + Could not set the port for this type of address. Der Port für diesen Adresstyp kann nicht gesetzt werden. - + The server name could not be resolved. Der Servername kann nicht aufgelöst werden. - + Bind failed - please choose a different port. Verbindung fehlgeschlagen - bitte einen anderen Port wählen. - + Internal network error: "listen" failed. Interner Netzwerkfehler: "Lauschen" fehlgeschlagen. - + Server execution was terminated. Serverbetrieb wurde beendet. - + Could not connect to the server. Keine Verbindung zum Server. - + Connection timed out. Please check the server address. @@ -8022,12 +8123,12 @@ Bitte überprüfen Sie die Serveradresse. Wenn der Server hinter einem NAT-Router betrieben wird, stellen Sie sicher, dass serverseitig die Portweiterleitung aktiviert wurde. - + Internal network error: "select" failed. Interner Netzwerkfehler: "Auswahl" fehlgeschlagen. - + Internal network error: "send" failed. Interner Netzwerkfehler: "Senden" fehlgeschlagen. @@ -8036,31 +8137,31 @@ Wenn der Server hinter einem NAT-Router betrieben wird, stellen Sie sicher, dass Der Server hat die Verbindung beendet. - + The connection to the server was lost. Die Verbindung zum Server ging verloren. - + Internal network error: Duplicate TCP connection. Interner Netzwerkfehler: Doppelte TCP-Verbindung. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Ein ungültiges Netzwerkpaket wurde empfangen. Bitte stellen Sie sicher, dass alle Spieler die gleiche Version von PokerTH benutzen. - + Internal state error. Please make sure that all players use the same version of PokerTH. Interner Statusfehler. Bitte stellen Sie sicher, dass alle Spieler die gleiche Version von PokerTH benutzen. - + Invalid server list URL. Please correct the address in the settings. Ungültige URL für die Serverliste. @@ -8079,162 +8180,162 @@ Please make sure that the server list URL is correct. Bitte stellen Sie sicher, dass die URL zu den Serverlisten korrekt ist. - + Rejoin possible! Erneuter Beitritt möglich! - + There is an existing session with a previous game. Es gibt eine existierende Verbindung mit einem früheren Spiel. - + Do you want to rejoin this game? Wollen Sie dem Spiel erneut beitreten? - - + + Start Network Game Starte Netzwerkspiel - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. Die Liste mit den PokerTH-Internetservern enthält ungültige Daten. Sollten Sie eine eigene Serverliste benutzen, stellen Sie bitte sicher, dass ihr Format korrekt ist. - + Could not unzip the PokerTH internet server list. Die Liste mit den PokerTH-Internetservern konnte nicht entpackt werden. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Die Liste mit den PokerTH-Internetservern konnte nicht heruntergeladen werden. Bitte stellen Sie sicher, dass Sie mit dem Internet direkt verbunden sind. - + Could not open the target file when downloading the server list. Beim Herunterladen der Serverliste konnte die Zieldatei nicht geöffnet werden. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Der PokerTH-Server unterstützt diese Programmversion nicht. Bitte gehen Sie auf <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> und laden Sie die aktuelle Version herunter. - + Sorry, this server is already full. Schade, der Server ist bereits voll. - + Invalid login. Please check your username and password. Ungültige Anmeldung. Bitte prüfen Sie Ihren Benutzernamen und Ihr Kennwort. - + Your account is blocked indefinitely. Ihr Konto wurde unbefristet gesperrt. - + You cannot login at this time. Please try again in a few seconds. Im Moment können Sie sich nicht anmelden. Bitte versuchen Sie es in wenigen Sekunden erneut. - + You cannot join this game, because another player in that game has your network address. Sie können diesem Spiel nicht beitreten, da dort bereits ein anderer Spieler Ihre Netzwerkadresse hat. - + Your connection to the server is very slow, the game had to start without you. Ihre Verbindung zum Server ist sehr langsam, das Spiel musste ohne Sie gestartet werden. - + This game is of type invite-only. You cannot join this game without being invited. Dieses Spiel ist vom Typ "Nur Einladungen". Sie können diesem Spiel nicht beitreten ohne eingeladen zu werden. - + Invalid password when joining the game. Please reenter the password and try again. Ungültiges Kennwort beim Betreten des Spieltisches. Bitte geben Sie das Kennwort erneut ein und versuchen Sie es nochmal. - + The avatar report was accepted by the server. Thank you. Die Meldung zum Avatar wurde vom Server akzeptiert. Vielen Dank. - + This avatar was already reported by another player. Dieser Avatar wurde bereits von einem anderen Spieler gemeldet. - + An error occurred while reporting the avatar. Es trat ein Fehler beim Melden des Avatars auf. - + The game name report was accepted by the server. Thank you. Die Meldung über den Spielnamen wurde vom Server akzeptiert. Vielen Dank. - + This game name was already reported by another player. Dieser Spielname wurde schon durch einen anderen Spieler gemeldet. - + An error occurred while reporting the game name. Es trat ein Fehler beim Melden des Spielnamens auf. - - - The game was closed. - - - The game could not be closed. - + The game was closed. + Das Spiel wurde geschlossen. - The player was kicked and banned permanently. - + The game could not be closed. + Das Spiel konnte nicht geschlossen werden. - The player was kicked, but could not be banned because it was a guest player. - + The player was kicked and banned permanently. + Der Spieler wurde herausgeworfen und dauerhaft verbannt. - The player was kicked, but could not be banned, -because the nick could not be found in the database - + The player was kicked, but could not be banned because it was a guest player. + Der Spieler wurde herausgeworfen, konnte aber nicht verbannt werden, da er ein Gastspieler war. - The player could not be found. - + The player was kicked, but could not be banned, +because the nick could not be found in the database + Der Spieler wurde herausgeworfen, konnte aber nicht verbannt werden, da der Nickname nicht in der Datenbank gefunden werden konnte - + + The player could not be found. + Der Spieler konnte nicht gefunden werden. + + + The password is too long. Please choose another one. Das Kennwort ist zu lang. Bitte wählen Sie ein kürzeres. @@ -8249,67 +8350,67 @@ Bitte wählen Sie einen anderen Namen. Der Spielername ist zu kurz, zu lang oder ungültig. Bitte wählen Sie einen anderen Namen. - + The game name is either too short or too long. Please choose another one. Der Spielname ist entweder zu kurz oder zu lang. Bitte wählen Sie einen anderen. - + The game could not be found. Das Spiel konnte nicht gefunden werden. - + The chat text is invalid. Der Chattext ist ungültig. - + The server referred to an unknown player. Aborting. Der Server verweist auf einen unbekannten Spieler. Abbruch. - + Internal error: The current player could not be found. Interner Fehler: Der aktuelle Spieler kann nicht gefunden werden. - + Internal error: The current player is not active. Interner Fehler: Der aktuelle Spieler ist nicht aktiv. - + You were kicked from the server. Sie wurden des Servers verwiesen. - + You were temporarily banned from the server. Sie wurden temporär vom Server ausgeschlossen. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Ihre Serververbindung wurde aufgrund zu langer Inaktivität unterbrochen. Sie sind willkommen sich wieder zu verbinden! - + The client player count is invalid. Die Anzahl der Mitspieler ist ungültig. - + Too many manual blinds were set. Please reconfigure the manual blinds. Es wurden zu viele manuelle Blinds gesetzt. Bitte die manuellen Blinds entsprechend ändern. - + An invalid avatar file was configured. Please choose a different avatar. Es wurde eine ungültige Avatardatei konfiguriert. Bitte einen anderen Avatar auswählen. - + The selected avatar file is too large. Please choose a different avatar. Die ausgewählte Avatardatei ist zu groß. Bitte einen anderen Avatar auswählen. @@ -8318,84 +8419,84 @@ Bitte wählen Sie einen anderen Namen. Derzeit können Sie kein neues Avatar hochladen. Bitte versuchen Sie es in ein paar Sekunden erneut. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Ein interner Avatarfehler ist aufgetreten. Bitte informieren Sie hierüber einen Admin im Lobbychat. - + Could not start game: Synchronization failed. Das Spiel konnte nicht gestartet werden: die Synchronisierung ist fehlgeschlagen. - + The server is down for maintenance. Please try again later. Der Server wurde für Wartungsarbeiten heruntergefahren. Bitte versuchen Sie es später wieder. - + An internal error occured. Ein interner Fehler ist aufgetreten. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Netzwerkbenachrichtigung - + You were kicked from the game. Sie wurden des Spiels verwiesen. - + Sorry, this game is already full. Sorry, dieses Spiel ist bereits voll. - + Unable to join - the server has already started the game. Betreten nicht möglich - der Server hat das Spiel bereits gestartet. - + Your admin state timed out due to inactivity. Feel free to create a new game! Das Zeitlimit Ihres Administratorstatus ist aufgrund Inaktivität abgelaufen. Erstellen Sie doch ein neues Spiel! - + You cannot join this type of game as guest. Sie können diesem Spieltyp als Gast nicht beitreten. - + The settings are invalid for this type of game. Die Einstellungen sind für diesen Spieltyp ungültig. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Eine neue Version von PokerTH ist verfügbar.<br>Bitte gehen Sie auf <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> und laden Sie die aktuelle Version herunter. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Diese Beta-Version von PokerTH ist veraltet.<br>Bitte gehen Sie auf <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> und laden Sie die aktuelle Version herunter. - - + + Server Message Servermeldung diff --git a/ts/pokerth_dk.ts b/ts/pokerth_dk.ts index 3c5e2a00..106a548f 100644 --- a/ts/pokerth_dk.ts +++ b/ts/pokerth_dk.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -228,22 +227,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -416,52 +415,52 @@ Kontakt venligst fremstilleren af pokerbord-skin'et %3. - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) @@ -508,13 +507,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -551,18 +550,18 @@ Please verify that you are uploading a valid PokerTH log file. - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + PokerTH - Question - + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -595,65 +594,71 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About Om - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project Projekt - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - + + Translation Oversættelse - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + Thanks to Tak til - - + + License Licens - + + + Third party libs + + + + Close Luk @@ -950,8 +955,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"> - Startende gui-grafik design</span></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -960,7 +965,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1212,12 +1217,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Manuel blinds-orden - + You cannot set more than 30 manual blinds. Du kan ikke indstille mere end 30 manuelle blinds. @@ -1369,7 +1374,7 @@ Please choose another one! - + Default game name: @@ -1404,37 +1409,37 @@ Please choose another one! - - + + Maximum number of players: Maksimum antal spillere: - - + + Start Cash: Start beløb: - - + + $ kr - + Blinds Blinds - + Use saved blinds settings Brug gemte blind-indstillinger - + Change blinds settings ... Skift blinds-indstillinger ... @@ -1444,39 +1449,45 @@ Please choose another one! Spilhastighed for computermodstandere: - + Timeout for player action: Tidsudløb for spillerhandling: - - + + s s - - + + Password: Adgangskode: - + Delay between hands: - - + + + Allow spectators to watch the game + + + + + Create Game Opret spil - + Cancel Annuller @@ -1601,8 +1612,10 @@ Please choose another one! Spil + + Players - Spillere + Spillere State @@ -1613,44 +1626,50 @@ Please choose another one! Privat - - + + 5 - Show open & non-full & ranking games - - + + Game Info Spilinformation - - + + Connected Players Tilsluttede spillere - - + + + Spectators + + + + + Start Cash: Start beløb: - - + + First small blind: Første small blind: - - + + Blinds raise interval: - - + + Blinds raise mode: @@ -1660,7 +1679,7 @@ Please choose another one! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1669,26 +1688,26 @@ p, li { white-space: pre-wrap; } - - + + Fill up with computer opponents Fyld op med computermodstandere - - + + Sort alphabetically - - + + Sort by country - - + + Display idle players @@ -1701,14 +1720,14 @@ p, li { white-space: pre-wrap; } Smid spiller ud - - + + &Start Game &Start spil - - + + &Kick Player &Smid spiller ud @@ -1733,8 +1752,8 @@ p, li { white-space: pre-wrap; } Blinds forøg-måde: - - + + Manual blinds list: Manuel blinds-liste: @@ -1743,74 +1762,72 @@ p, li { white-space: pre-wrap; } Tidsudløb for spillerhandling (sec): - - + + Game type: - - + + Timing: - - + + &Leave Game &Forlad spillet - - Join &any game - Deltag i &hvilket som helst spil + Deltag i &hvilket som helst spil - - + + &Create Game &Opret spil - - + + &Join Game &Deltag i spil - - + + 0 - No game list filter 0 - Intet spillelist-filter - - + + search for player ... - - + + 1 - Show open games 1 - Vis åbne spil - - + + 2 - Show open & non-full games 2 - Vis åbne & ledige spil - - + + 3 - Show open & non-full & non-private games 3 -Vis åbne, ledige og ikke-private spil - - + + 4 - Show open & non-full & private games 4 - Vis åbne, ledige og private spil @@ -1831,8 +1848,8 @@ p, li { white-space: pre-wrap; } Tilslut spil - - + + Lobby-Chat Lobby-chat @@ -1861,46 +1878,46 @@ p, li { white-space: pre-wrap; } %1's spil - + Joining a private Game Tilslut et privat spil - + You are about to join a private game. Please enter the password! Du er ved at tilslutte et privat spil. Indtast venligst adgangskode! - + open åben - - - - + + + + Game Info Spilinformation - - - + + + Game Spil - - - + + + Players Spillere - - - + + + State Tilstand @@ -1909,76 +1926,71 @@ p, li { white-space: pre-wrap; } Privat - - - + + + P - - - + + + Available Players Tilgængelige spillere - + Invite player - + Ignore player - + Player infos ... - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - Connected players - max. %1 - - - - - - + + + T @@ -1993,115 +2005,127 @@ p, li { white-space: pre-wrap; } - - - + + Spectate + + + + + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game - - - Connected players - Max. %1 - - - - + running igangværende - - + + running games: %1 igangværende spil: %1 - - + + open games: %1 åbne spil: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -2110,1320 +2134,1314 @@ Feel free to invite other players by right-clicking on their nick in the availab spillere i chat: %1 - - + + connected players: %1 tilsluttede spillere: %1 - - - Connected players - - - - + hands hænder - + minutes minutter - + double blinds dobbelt blinds - + manual blinds order manuel blinds-orden - + Server Error Server fejl - + You should not kick yourself from this game! Du skal ikke smide dig selv ud af dette spil! - + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3436,47 +3454,47 @@ Feel free to invite other players by right-clicking on their nick in the availab PokerTH 0.6-beta - The Open-Source Texas Holdem Engine - + Hands Hænder - + Chat Chat - + Save Gem - + Log Log - + Away Væk - + Manual Action (default) Manuel handling (standart) - + Auto-Check / Auto-Fold Auto-check / Auto-fold - + Auto-Check / Auto-Call-Any Auto-check / Auto-call-alle - + Speed: Hastighed: @@ -3485,228 +3503,228 @@ Feel free to invite other players by right-clicking on their nick in the availab Se - - + + Start Local Game ... Start lokalt spil ... - - + + Ctrl+N Ctrl+N - - + + Quit Afslut - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... Om PokerTH ... - - + + Settings ... Indstillinger ... - - + + Create Network Game ... Opret netværksspil ... - - + + Ctrl+O Ctrl+O - - + + Join Network Game ... Tilslut netværksspil ... - - + + Ctrl+J Ctrl+J - - - + + + Fullscreen Fuldskærm - - + + Ctrl+F Ctrl+F - - + + Show/Hide Chat Window Vis/skjul chatvindue - - + + Ctrl+T Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window Vis/skjul hænder-vindue - - + + Ctrl+H Ctrl+H - - + + Show/Hide Log Window Vis/skjul logvindue - - + + Ctrl+L Ctrl+L - - + + Internet Game ... Internetspil ... - - + + Ctrl+I Ctrl+I - - + + Show/Hide Away Window Vis/skjul væk-vindue - - + + Ctrl+A Ctrl+A - + Kick Smid ud - + Vote Timeout: Stem tidsudløb: - + Yes Ja - + No Nej - + Player info - + Chance Skift - + Settings Indstillinger - + Configure PokerTH - + Configure PokerTH ... Konfigurér PokerTH ... - - + + Close Luk - - + + Ctrl+X Ctrl+X - + Vote started by: Afstemning startet af: - - + + Show/Hide Chance Window Vis/skjul chance-vindue - - + + Ctrl+C Ctrl+C - + &View &Vis - + &Settings &Indstillinger - + Shortcut: <Shift> Genvejstast: <Shift> @@ -3714,19 +3732,19 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop @@ -3739,7 +3757,7 @@ Feel free to invite other players by right-clicking on their nick in the availab Ctrl+N for at starte et nyt spil - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - The Open-Source Texas Holdem Engine @@ -3752,23 +3770,23 @@ Feel free to invite other players by right-clicking on their nick in the availab F1 - All-In | F2 - Bet/Raise | F3 - Check/Call | F4 - Fold - - - - - - - - + + + + + + + + Start Start - - - - - + + + + + Lobby Lobby @@ -3785,63 +3803,68 @@ Feel free to invite other players by right-clicking on their nick in the availab Auto måde sat: Check eller fold. - - + + Chat Chat - + Closing PokerTH during network game Lukker PokerTH under et netværksspil - + You are the hosting server. Do you want to close PokerTH anyway? Du er vært for serveren. Ønsker du stadig at afslutte PokerTH? - + Really want to exit? - + PokerTH - Close Table? - + PokerTH - Internet Game Message PokerTH - Internet-spil besked - + Attention! Do you really want to leave the current game and go back to the lobby? Advarsel! Ønsker du virkelig at forlade spillet og gå tilbage til lobby'en? - - + + Chat is only available to registered players. - - + + Spectators + + + + + Chance Chance - + PokerTH %1 PokerTH %1 - - + + Kick Smid ud @@ -3860,26 +3883,26 @@ ud fra dette spil? Spiller <b>%1</b> har %2 stemmer imod ham. - - + + Do you want to kick <b>%1</b><br>from this game? Ønsker du at smide <b>%1</b><br>ud fra dette spil? - - - - + + + + <b>%1</b> secs left <b>%1</b> sekunder tilbage - + vote Stem - + votes Stemmer @@ -3892,14 +3915,14 @@ ud fra dette spil? Du har <b>%1</b> %2 imod dig.<br><b>%3</b> stemmer nødvendige for udsmidning. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Spiller <b>%1</b> er <b>%2</b> %3<br>imod ham. <b>%4</b> stemme(r) nødvendige for udsmidning. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Du har <b>%1</b> %2 imod dig.<br><b>%3</b> stemme(r) nødvendige for udsmid. @@ -4102,57 +4125,67 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error fejl under indlæsning af serverprofil-fil - - - - Could not load server-profiles-file: - Kunne ikke indlæse serverprofil-fil: + Kunne ikke indlæse serverprofil-fil: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error Fejl unde lagring af serverprofil - + A profile with the name: %1 already exists. Would you like to overwrite ? En profil med navnet: %1 eksisterer allerede. Ønsker du at overskrive den? - + Read Server-Profile List Error Fejl under læsning af serverprofil-liste - + Could not read server-profiles list Kunne ikke læse serverprofilers liste - - + + Save Server-Profile-File Error Fejl under lagring af serverprofil-fil - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Kunne ikke gemme serverprofilers-fil: + Kunne ikke gemme serverprofilers-fil: @@ -4217,12 +4250,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order Manuel blinds-orden - + You cannot set more than 30 manual blinds. Du kan ikke indstille mere end 30 manuelle blinds. @@ -4291,7 +4324,7 @@ Would you like to overwrite ? - + Use saved blinds settings Brug gemte blind-indstillinger @@ -4302,13 +4335,13 @@ Would you like to overwrite ? - + Change blinds settings ... Skift blinds-indstillinger ... - + Game Speed: Spilhastighed: @@ -4349,38 +4382,38 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Avatar-fil fejl - + Please select an avatar from the list! Vælg venligst en avatar fra listen! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Filstørrelsen af det valgte billede er for stort. (max 30KB) Vælg venligst et mindre billede! - + The entered avatar picture doesn't exist. Please enter an valid picture! Det indtastede avatar-billede eksisterer ikke. Vælg venligst et gyldigt billede! - + Select external avatar picture Vælg et eksternt avatar-billede - + Images (*.png *.jpg *.gif) Billeder (*.png *.jpg *.gif) @@ -4401,8 +4434,8 @@ Vælg venligst et gyldigt billede! Grænseflade - - + + Language: Sprog: @@ -4415,49 +4448,49 @@ Vælg venligst et gyldigt billede! Vis statusbar-beskeder - - + + Show fade-out animation for non-winning cards Vis fade-ud animation for ikke-vindende kort - - + + Show flip-card animation Vis flip-kort animation - - + + Show buttons for small blind and big blind Vis knapper for small blind og big blind - - + + Show own cards only on mouse click Vis kun egne kort ved museklik - + Reverse order of F-Keys (F1 - F4) Byt rundt på rækkefølgen på F-knapper(F1 - F4) - - + + Play blind raise notification - - + + Network / Internet Game Netværk / Internet-spil - - + + Switch keyboard focus to bet-input-field if it's your turn Skift tastatur-fokus til bet-inputfelt hvis det er din tur @@ -4486,49 +4519,67 @@ p, li { white-space: pre-wrap; } - + Sound Lyd - - + + + Common + + + + + Disable splashscreen on startup Deaktiver splashscreen under opstart - - + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table Spil-bord - - + + Card Deck Spillekort - - + + Card Back Kortbagside - - + + Use card back from card style Benyt kort-bagside fra kort-stil - - + + Use custom card back picture: Benyt brugerdefineret bagside billede: @@ -4545,180 +4596,180 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Bemærk: Den bedste kvalitet med billede-størrelse omkring </span><span style=" font-weight:600; font-style:italic;">bredde=76, højde=48.</span></p></body></html> - - + + Play sound effects Afspil lydeffekter - - + + Sound Volume: Lydstyrke: - - + + 10 10 - - + + Sound Categories Lydkatagorier - - + + Play game actions sounds like "check", "call", "raise" Afspil spil-handlingslyde som "check", "call", "raise" - - + + Play lobby chat notifications Afspil lobby-chat notifikationer - - + + Play network/internet game notifications like "player joined the game" Afspil netværk/internet-spil notifikationer som "player joined the game" - + Local Game Settings Lokale spilindstillinger - - + + Number of players: Antal deltagere: - - - - + + + + Start Cash: Start beløb: - - - - - - - - + + + + + + + + $ kr - - - - + + + + First small blind: Første small blind: - - - - + + + + Raise blinds: Forhøj blinds: - - - - - - - - + + + + + + + + Every: Hvert: - - - - + + + + hands hænder - - - - + + + + minutes minutter - - - - + + + + Raise mode: Raise-måde: - - - - + + + + Always double blinds Altid dobbelt-blinds - - - - + + + + Manual blinds order: Manuel blinds-orden: - - - - + + + + Edit ... Rediger ... - - + + Game Speed: Spilhastighed: - - + + Pause between hands (press "start" button to go on) Pause mellem hænder (tryk "start"-knappen for at fortsætte) - - + + Show game settings dialog on every new game Vis spilindstillings-dialog under hvert nyt spil - + Network Game Settings Netværk-spil indstillinger - - + + Maximum number of players: Maksimum antal deltagere: @@ -4731,78 +4782,78 @@ p, li { white-space: pre-wrap; } Spilhastighed for computermodstandere: - - + + Timeout for player action: Tidsudløb for spillerhandling: - - - - + + + + s s - - + + Network Server Settings Netværks-server indstillinger - - + + Server Password: Server adgangskode: - - - - + + + + Server Port: Server port: - - - - + + + + Use SCTP Benyt SCTP - - - - + + + + Use IPv6 Benyt IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Hvad er dette?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Hvad er dette?</a> - + Internet Game Settings Internet-spil indstillinger - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4813,14 +4864,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note: Standard </span><span style=" font-weight:600; font-style:italic;">Spilindstillinger</span><span style=" font-style:italic;"> som "maksimalt antal spillere", "Start beløb" og "Small blind" vil blive brugt </span><span style=" font-weight:600; font-style:italic;">fra netværk-spil indstillinger.</span></p></body></html> - - + + Server Address: Server adresse: - - + + Use password for private game: Benyt adgangskode for privat spil: @@ -4837,49 +4888,49 @@ p, li { white-space: pre-wrap; } #pokerth - - + + Computer Engine Computer motor - - + + Opponent 6: Modstander 6: - - + + Opponent 5: Modstander 5: - - + + Opponent 4: Modstander 4: - - + + Opponent 3: Modstander 3: - - + + Opponent 2: Modstander 2: - - + + Opponent 1: Modstander 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4890,13 +4941,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note: Bedste avatar-kvalitet ved billed-størrelse omkring </span><span style=" font-weight:600; font-style:italic;">bredde=50, højde=50.</span></p></body></html> - + Human Player: Menneskespiller: - - + + Enable/Disable Logging Slå til/fra logning @@ -4905,110 +4956,116 @@ p, li { white-space: pre-wrap; } Gem filer for - - + + Log File Directory: Logfil sti: - - + + Write log after every: Skriv log efter hvert: - + Note: Best quality with image ratio like width=48, height=76. - + + + Allow spectators to watch the game + + + + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + action (high frequent disc access) handling (højt-forekommende disk-adgang) - - + + hand (medium disc access) hånd (mellem-forekommende disk-adgang) - - + + game (low disc access) spil (lavt-forekommende disk-adgang) - + Log Messages log beskeder - + Player Nicks/Avatars Spiller navn/avatars - + Show right toolbox Vis højre værktøjskasse - + Factory Settings - + Show left toolbox Vis venstre værktøjskasse - - + + Show country flag in the corner of avatar - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State Tilstand - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5020,119 +5077,119 @@ p, li { white-space: pre-wrap; } - - + + Delay between hands: - - + + Server - - + + Automatic Server Configuration URL Automatisk server konfiguration URL - - + + Serverlist Address: Serverliste adresse: - - + + Manual Server Configuration Manuel serverkonfiguration - - + + Game Spil - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5141,26 +5198,26 @@ p, li { white-space: pre-wrap; } - - + + Store log files for: - - + + Day(s) Dag(e) - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5189,8 +5246,8 @@ p, li { white-space: pre-wrap; } Navn/avatars - - + + Show cards chance monitor Vis kort-chance @@ -5207,21 +5264,21 @@ p, li { white-space: pre-wrap; } Adgangskode: - - + + Avatar Server: Avatar-server: - + Style Stil - - + + Don't translate poker strings like check, call, raise from game table style @@ -5234,32 +5291,32 @@ p, li { white-space: pre-wrap; } Aktiver - - - - + + + + Add ... Tilføj ... - - - - + + + + Remove Fjern - - - - + + + + Preview - Information: Forhåndsvisning - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5276,8 +5333,8 @@ p, li { white-space: pre-wrap; } Kortbagsider - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5290,14 +5347,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Få nye PokerTH kortbagsider ...</span></a></p></body></html> - - + + Opponent 7: Modstander 7: - - + + Opponent 8: Modstander 8: @@ -5306,8 +5363,8 @@ p, li { white-space: pre-wrap; } Modstander 10: - - + + Opponent 9: Modstander 9: @@ -5379,65 +5436,65 @@ p, li { white-space: pre-wrap; } Tyrkisk - - - - - + + + + + Settings Error Indstillingsfejl - + The entered flipside picture doesn't exist. Please enter an valid picture! Det indtastede bagside-billede eksiterer ikke. Indtast venligts et brugbart billede! - - + + The log file directory doesn't exist. Please select an valid directory! Log-filens sti eksisterer ikke. Vælge venligst en brugbar sti! - + Language Changed Sprog ændret - + You have changed application language to %1. Please restart PokerTH to load new language! Du har ændret programmets sprog til %1. Genstart venligst PokerTH for at indlæse det nye sprog! - + Select your flipside picture Vælg dit bagside-billede - + Images (*.png *.jpg *.gif) Billeder (*.png *.jpg *.gif) - + Open Directory Åben sti - - + + Blinds Error Blinds-fejl - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5501,7 +5558,7 @@ Dene første-small-blind-værdi vil blive sat to den maksimale tiladte værdi.Svensk - + The entered server list address is not a valid URL. Please enter a valid server list address! Den indtastede serverlise adresse er ikke en brugbar URL. @@ -5538,150 +5595,150 @@ Indtast venligst en brugbar serverliste adresse! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Vedligeholders navn - - + + Maintainer EMail Vedligeholders email - - + + Create Date Oprettelsesdato - + Windows Behaviour Vinduernes adfærd - + scaleable Skalérbar - + fixed fast - + Minimum Size Mindste størrelse - + Maximum Size Største størrelse - + Fixed Size Fast størrelse - + State Tilstand - + Please select your game table style Vælg venligst din pokerbord-skin - + PokerTH game table styles (*.xml) PokerTH pokerbord-skins(*.xml) - + Game Table Style Error Pokerbord-skin fejl - + Selected game table style file is already in the list. Please select another one to add! Det valgte pokerbord-skin er allerede på listen. Vælg venligst et andet at tilføje! - + Game Table Style File Error Pokerbord-skin fil-fejl - + Could not load game table style file correctly. Style will not be placed into list! Kunne ikke indlæse pokerbord-skin filen korrekt. Skin'et vil ikke blive tilføjet til listen! - + Please select your card deck style Vælg venligst din kort-bagside - + PokerTH card deck styles (*.xml) PokerTH kort-bagsider(*.xml) - + Card Deck Style Error Kort-bagside fejl - + Selected card deck style file is already in the list. Please select another one to add! Den valgte kort-bagsidefil er allerede på listen. Vælg venligst en anden for at tilføje! - + Card Deck Style File Error Kort-bagside-filfejl - + Could not load card deck style file correctly. Style will not be placed into list! Kunne ikke indlæse kort-bagsidefilen korrekt. Kortbagsiden vil ikke blive tilføjet til listen! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5754,12 +5811,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Serverfejl - + You should not kick yourself from this game! Du skal ikke smide dig selv ud af dette spil! @@ -5944,106 +6001,106 @@ Please choose another one. Vælg venligst et andet. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Netværksfejl - + Server address was not set. Server adressen er ikke blevet sat. - + An invalid port was set (ports 0-1023 are not allowed). En invalid port var sat (port 0-1023 er ikke tilladt). - + Could not create a socket for TCP communication. Kunne ikke oprette en adgang til TCP kommunikation. - + Could not set the IP address. Kunne ikke sætte IP adressen. - + Could not set the port for this type of address. Kunne ikke sætte porten for denne type adresse. - + The server name could not be resolved. Servernavnet kunne ikke blive besluttet. - + Bind failed - please choose a different port. Blind fejlet - vælg venligst en andet port. - + Internal network error: "listen" failed. En netværksfejl: "listen" fejlede. - + Server execution was terminated. Server-lukning blev afsluttet. - + Could not connect to the server. Kunne ikke tilslutte serveren. - + Connection timed out. Please check the server address. @@ -6054,12 +6111,12 @@ Undersøg venligst serveradressen. Hvis serveren er under en NAT-router, skal du være sikker på, at forward-porten er blevet sat op på serversiden. - + Internal network error: "select" failed. Netværksfejl: "select" fejlet. - + Internal network error: "send" failed. Netværksfejl: "send" fejlede. @@ -6068,31 +6125,31 @@ Hvis serveren er under en NAT-router, skal du være sikker på, at forward-porte Tilslutning blev lukket af serveren. - + The connection to the server was lost. - + Internal network error: Duplicate TCP connection. Netværksfejl: Dobbelt TCP-tilslutning. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. En invalid netværkspakke blev modtaget. Undersøg venligst, at alle spillere benytter den samme version af PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Tilstandsfejl. Undersøg venligst, at alle spillere benytter den samme version af PokerTH. - + Invalid server list URL. Please correct the address in the settings. Invalid serverliste URL. @@ -6111,161 +6168,161 @@ Please make sure that the server list URL is correct. Undersøg venligst, at serverliste URL'en er korrekt. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Start netværksspil - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. PokerTH internet serverlisten indeholder invalide data. Hvis du benytter en brugerdefineret serverliste bedes du venligst undersøge, om formatet er korrekt. - + Could not unzip the PokerTH internet server list. Kunne ikke udpakke PokerTH internet serverliste. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Kunne ikke downloade PokerTH serverlisten. Undersøg venligst, at du er direkte tilsluttet til internettet. - + Could not open the target file when downloading the server list. Kunne ikke åbne målfilen under download af serverliste. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. PokerTH-server understøtter ikke denne version af spillet.<br>Gå venligst ind på <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> og download den seneste version. - + Sorry, this server is already full. Undskyld, denne server er allerede fyldt op. - + Invalid login. Please check your username and password. - + Your account is blocked indefinitely. - + You cannot login at this time. Please try again in a few seconds. - + You cannot join this game, because another player in that game has your network address. - + Your connection to the server is very slow, the game had to start without you. - + This game is of type invite-only. You cannot join this game without being invited. - + Invalid password when joining the game. Please reenter the password and try again. Invalid adgangskode under tilslutning til spil. Indtast venligst adgangskoden igen. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. - + The password is too long. Please choose another one. Adgangskoden er for lang. Vælg venligst en anden. @@ -6280,67 +6337,67 @@ Vælg venligst et andet navn. Spillernavnet er for kort, for langt eller ugyldigt. Vælg venligst et andet. - + The game name is either too short or too long. Please choose another one. Spil-navnet er enten for kort eller for langt. Vælg venligst et andet. - + The game could not be found. Spillet kunne ikke findes. - + The chat text is invalid. Chat-teksten er ugyldig. - + The server referred to an unknown player. Aborting. Serveren henviser til en ukendt spiller. Afbryder. - + Internal error: The current player could not be found. Fejl: Den nuværende spiller kunne ikke findes. - + Internal error: The current player is not active. Fejl: Den nuværende spiller er ikke aktiv. - + You were kicked from the server. Du er blevet smidt ud fra serveren. - + You were temporarily banned from the server. Du var midlertidigt blokeret fra serveren. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Din servertilslutning udløb pga. interaktivitet. Du er meget velkommen til at tilslutte igen! - + The client player count is invalid. Klient spillerantallet er ugyldigt. - + Too many manual blinds were set. Please reconfigure the manual blinds. For mange manuelle blinds var indstillet. Konfigurér venligst de manuelle blinds igen. - + An invalid avatar file was configured. Please choose a different avatar. En invalid avatarfil var konfigureret. Vælge venligst en anden avatar. - + The selected avatar file is too large. Please choose a different avatar. Den valgte avatarfil er for stor. Vælg venligst en anden avatar. @@ -6349,84 +6406,84 @@ Vælg venligst et andet navn. Du kan ikke uploade en ny avatarfil på nuværende tidspunkt. Prøv venligst igen om få sekunder. - + An internal avatar error occured. Please report this to an admin in the lobby chat. En avatarfejl opstod. Rapportér venligst dette til en admin i lobby-chatten. - + Could not start game: Synchronization failed. Kunne ikke starte spil: Synkronisering fejlede. - + The server is down for maintenance. Please try again later. Serveren er nede pga. vedligeholdelse. Prøv venligst igen senere. - + An internal error occured. En fejl opstod. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Netværksnotifikation - + You were kicked from the game. Du er blevet smidt ud af spillet. - + Sorry, this game is already full. Undskyld, dette spil er allerede fyldt. - + Unable to join - the server has already started the game. Ikke muligt at tilslutte - serveren har allerede startet spillet. - + Your admin state timed out due to inactivity. Feel free to create a new game! Din admintilstand er udløbet pga interaktivitet. Du er velkommen til at starte et nyt spil! - + You cannot join this type of game as guest. - + The settings are invalid for this type of game. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. En ny udgave af PokerTH er tilgængelig.<br>Gå venligst til <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> og download den nyeste version. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Denne beta-udgave af PokerTH er udløbet.<br>Gå venligst til <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> og download den nyeste version. - - + + Server Message Server-besked diff --git a/ts/pokerth_es.ts b/ts/pokerth_es.ts index e6bfcde3..0a0d6fc9 100644 --- a/ts/pokerth_es.ts +++ b/ts/pokerth_es.ts @@ -1,7 +1,6 @@ -UTF-8 CardDeckStyleReader @@ -259,22 +258,22 @@ Póngase en contacto con el autor del estilo a través de "%4".Error en el estilo de mesa - Obsoleto - + Everything OK! Todo correcto. - + Some pictures are missing, please contact style maintainer for this issue. Faltan algunas imágenes. Por favor, informe al autor del estilo sobre este problema. - + Some style fields are missing, please contact style maintainer for this issue. Faltan algunos campos del estilo. Por favor, informe al autor del estilo sobre este problema. - + This style is outdated, please contact style maintainer for this issue. Este estilo es obsoleto. Por favor, informe al autor del estilo sobre este problema. @@ -437,52 +436,52 @@ Póngase en contacto con el autor del estilo %3. Analizar archivo de registro... - + PokerTH - Delete log files PokerTH - Eliminar archivos de registro - + Do you really want to delete the selected log files? ¿Seguro que desea eliminar los archivos de registro seleccionados? - + Remove log file Eliminar archivo de registro - + PokerTH cannot remove this log file, please verify that you have write access to this file! PokerTH no puede eliminar este archivo de registro. Compruebe que tiene permisos de escritura. - + Export PokerTH log file to HTML Exportar registro de PokerTH a HTML - + PokerTH HTML log (*.html) Registro HTML de PokerTH (*.html) - + Export PokerTH log file to plain text Exportar registro de PokerTH a texto plano - + PokerTH plain text log (*.txt) Registro de texto plano de PokerTH (*.txt) - + Save PokerTH log file Guardar archivo de registro de PokerTH - + PokerTH SQL log (*.pdb) Registro SQL de PokerTH (*.pdb) @@ -534,14 +533,14 @@ Uploading log files may fail if you are using an http proxy. La subida de archivos de registro puede fallar si utiliza un proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Error al procesar el archivo de registro en el servidor web. Compruebe que está subiendo un archivo de registro válido. - + Failure reason: Motivo del fallo: @@ -578,18 +577,18 @@ Compruebe que está subiendo un archivo de registro válido. Informar de avatar no apropiado - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Ya no recibirá más mensajes de charla o invitaciones de este usuario.<br>¿Seguro que desea añadir al usuario <b>%1</b>a la lista de ignorados? - - + + PokerTH - Question PokerTH - Pregunta - + Are you sure you want to report the avatar of "%1" as inappropriate? ¿Seguro que desea informar del avatar de "%1" como inapropiado? @@ -618,11 +617,50 @@ Compruebe que está subiendo un archivo de registro válido. aboutPokerth - - + + About Acerca de + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">Miguel Revilla Rodríguez - yo@miguelrevilla.com</span></p></td></tr></table></body></html> + + + + + Third party libs + Bibliotecas externas + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -700,7 +738,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - diseño gráfico inicial</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -719,8 +756,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Miguel Revilla Rodríguez - yo@miguelrevilla.com</span></p></td></tr></table></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -819,8 +854,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">© 2006-2010, FHammer, FThauer, LMay</p></td></tr></table></body></html> - - + + Project Proyecto @@ -1197,8 +1232,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - empaquetado para MacOS</p></body></html> - - + + License Licencia @@ -1895,13 +1930,13 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - + Close Cerrar - - + + Thanks to Agradecimientos @@ -1938,8 +1973,8 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + Translation Traducción @@ -1990,8 +2025,8 @@ p, li { white-space: pre-wrap; } Acerca de PokerTH 0.6 - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> @@ -2574,21 +2609,21 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"><br /></span></p></td></tr></table></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Liberation Sans'; font-size:18px; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> {3C?} {4.0/?} {3.?} {40/?} {1"?} {26p?} {400;?} {0p?} {0p?} {0p?} {0p?} {0;?} {0p?} +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2597,7 +2632,14 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">Miguel Revilla Rodríguez - yo@miguelrevilla.com</span></p></td></tr></table></body></html> @@ -2840,12 +2882,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Orden manual de ciegas - + You cannot set more than 30 manual blinds. No puede fijar más de 30 ciegas manuales. @@ -2999,8 +3041,8 @@ Elija otro nombre. createInternetGameDialog - - + + Create Game Crear partida @@ -3013,14 +3055,14 @@ Elija otro nombre. Tiempo de acción del jugador (seg): - - + + Maximum number of players: Número máximo de jugadores: - - + + Start Cash: Dinero inicial: @@ -3029,19 +3071,25 @@ Elija otro nombre. Postura mínima: - - + + Password: Contraseña: - + Delay between hands: Espera entre manos: - + + + Allow spectators to watch the game + Permitir espectadores en la partida + + + Cancel Cancelar @@ -3058,7 +3106,7 @@ Elija otro nombre. - + Default game name: Nombre de partida: @@ -3093,38 +3141,38 @@ Elija otro nombre. Clasificatoria - + Blinds Ciegas - + Use saved blinds settings Utilizar configuración guardada de ciegas - + Change blinds settings ... Cambiar configuración de ciegas... - - + + $ $ - + Timeout for player action: Límite de tiempo por mano: - - + + s @@ -3249,8 +3297,8 @@ Elija otro nombre. gameLobbyDialog - - + + Lobby-Chat Charla principal @@ -3263,62 +3311,68 @@ Elija otro nombre. Privado - - + + Game Info Información de la partida - - + + Connected Players Jugadores conectados - - + + + Spectators + Espectadores + + + + First small blind: Ciega pequeña: - - + + Blinds raise interval: Subir ciegas cada: - - + + Blinds raise mode: Modo de ciegas: - - + + Timing: Tiempo: - - + + Fill up with computer opponents Completar con oponentes virtuales - - + + Sort alphabetically Ordenar alfabéticamente - - + + Sort by country Ordenar por país - - + + Display idle players Mostrar jugadores libres @@ -3339,8 +3393,8 @@ Elija otro nombre. Postura mínima: - - + + Start Cash: Dinero inicial: @@ -3350,7 +3404,7 @@ Elija otro nombre. Partidas - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -3383,8 +3437,10 @@ p, li { white-space: pre-wrap; } Jugadores disponibles + + Players - Jugadores + Jugadores Kick Player @@ -3411,8 +3467,8 @@ p, li { white-space: pre-wrap; } Modo de subida de ciegas: - - + + Manual blinds list: Lista manual de ciegas: @@ -3421,32 +3477,30 @@ p, li { white-space: pre-wrap; } Tiempo de acción del jugador (seg): - - + + Game type: Tipo de partida: - - + + &Leave Game &Abandonar partida - - Join &any game Unirse a &cualquier partida - - + + &Create Game &Crear partida - - + + &Join Game &Unirse a partida @@ -3469,38 +3523,38 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Pulse aquí para ver la clasificación en línea</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - Ningún filtro en la lista - - + + search for player ... buscar jugador ... - - + + 1 - Show open games 1 - Mostrar partidas abiertas - - + + 2 - Show open & non-full games 2 - Mostrar partidas abiertas y no llenas - - + + 3 - Show open & non-full & non-private games 3 - Mostrar partidas abiertas, no llenas y no privadas - - + + 4 - Show open & non-full & private games 4 - Mostrar partidas abiertas, no llenas y privadas @@ -3511,20 +3565,20 @@ p, li { white-space: pre-wrap; } Sala de partidas en Internet - - + + 5 - Show open & non-full & ranking games 5 - Mostrar partidas abiertas, no llenas y clasificatorias - - + + &Start Game &Iniciar partida - - + + &Kick Player &Expulsar jugador @@ -3552,46 +3606,46 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info Información de la partida - + Server Error Error en el servidor - + You should not kick yourself from this game! No puede expulsarse a usted mismo. - + Joining a private Game Accediendo a una partida privada - - - + + + Game Partida - - - + + + Players Jugadores - - - + + + State Estado @@ -3600,43 +3654,41 @@ p, li { white-space: pre-wrap; } Privado - + You are about to join a private game. Please enter the password! Va a unirse a una partida privada. Introduzca la contraseña. - + running en marcha - + open abierta - - Connected players Jugadores conectados - + hands manos - + minutes minutos - + double blinds duplicar ciegas - + manual blinds order orden manual de ciegas @@ -3650,75 +3702,74 @@ p, li { white-space: pre-wrap; } R - - - + + + P P - - - + + + Available Players Jugadores disponibles - + Invite player Invitar jugador - + Ignore player Ignorar jugador - + Player infos ... Información del jugador ... - - + + Show player stats Mostrar estadísticas del jugador - + Report inappropriate game name Informar de nombre de partida inapropiado - - - + + + Standard Normal - - - + + + Registered players only Sólo registrados - - - + + + Invited players only Sólo invitados - - - + + + Ranking game Clasificatoria - Connected players - max. %1 Jugadores conectados - máx. %1 @@ -3731,1242 +3782,1243 @@ p, li { white-space: pre-wrap; } seg (por mano) - + Afghanistan Afganistán - + ALand Islands Alandia - + Albania Albania - + Algeria Argelia - + American Samoa Samoa Americana - + Andorra Andorra - + Angola Angola - + Anguilla Anguila - + Antarctica Antártica - + Antigua And Barbuda Antigua y Barbuda - + Argentina Argentina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Azerbaiyán - + Bahamas Bahamas - + Bahrain Baréin - + Bangladesh Bangladés - + Barbados Barbados - + Belarus Bielorrusia - + Belgium Bélgica - + Belize Belice - + Benin Benín - + Bermuda Bermudas - + Bhutan Bután - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia y Herzegovina - + Botswana Botsuana - + Bouvet Island Isla Bouvet - + Brazil Brasil - + British Indian Ocean Territory Territorio británico del Océano Índico - + Brunei Darussalam Brunéi - + Bulgaria Bulgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Camboya - + Cameroon Camerún - + Canada Canadá - + Cape Verde Cabo Verde - + Cayman Islands Islas Caimán - + Central African Republic República Centroafricana - + Chad Chad - + Chile Chile - + China China - + Christmas Island Isla de Navidad - + Cocos (Keeling) Islands Islas Cocos - + Colombia Colombia - + Comoros Comoras - + Congo Congo - + Congo, The Democratic Republic Of The Congo, República Democrática del - + Cook Islands Islas Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Costa de Marfil - + Croatia Croacia - + Cuba Cuba - + Cyprus Chripe - + Czech Republic República Checa - + Denmark Dinamarca - + Djibouti Yibuti - + Dominica Dominica - + Dominican Republic República Dominicana - + Ecuador Ecuador - + Egypt Egipto - + El Salvador El Salvador - + Equatorial Guinea Guinea Ecuatorial - + Eritrea Eritrea - + Estonia Estonia - + Ethiopia Etiopía - + Falkland Islands (Malvinas) Islas Malvinas - + Faroe Islands Islas Feroe - + Fiji Fiji - + Finland Finlandia - + France Francia - + French Guiana Guayana Francesa - + French Polynesia Polinesia Francesa - + French Southern Territories Territorios Franceses del Sur - + Gabon Gabón - + Gambia Gambia - + Georgia Georgia - + Germany Alemania - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grecia - + Greenland Groenlandia - + Grenada Granada - + Guadeloupe Guadalupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bissau - + Guyana Guayana - + Haiti Haití - + Heard Island And Mcdonald Islands Islas Heard y McDonald - + Holy See (Vatican City State) Santa Sede (Ciudad Estado del Vaticano) - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Hungría - + Iceland Islandia - + India India - + Indonesia Indonesia - + Iran, Islamic Republic Of Irán, República Islámica de - + Iraq Irak - + Ireland Irlanda - + Isle Of Man Islan de Man - + Israel Israel - + Italy Italia - + Jamaica Jamaica - + Japan Japón - + Jersey Jersey - + Jordan Jordania - + Kazakhstan Kazajistán - + Kenya Kenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Corea, República Popular Democrática de - + Korea, Republic Of Corea, República de - + Kuwait Kuwait - + Kyrgyzstan Kirguistán - + Lao People'S Democratic Republic Lao, República Democrática Popular - + Latvia Letonia - + Lebanon Líbano - + Lesotho Lesoto - + Liberia Liberia - + Libyan Arab Jamahiriya Libia - + Liechtenstein Liechtenstein - + Lithuania Lituania - + Luxembourg Luxemburgo - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia, Antigua República Yugoslava de - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malasia - + Maldives Maldivas - + Mali Mali - + Malta Malta - + Marshall Islands Islas Marshall - + Martinique Martinica - + Mauritania Mauritania - + Mauritius Mauricio - + Mayotte Mayotte - + Mexico México - + Micronesia, Federated States Of Micronesia, Estados Federados de - + Moldova, Republic Of Moldavia, República de - + Monaco Mónaco - + Mongolia Mongolia - + Montserrat Montserrat - + Morocco Marruecos - + Mozambique Mozambique - + Myanmar Myanmar - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Holanda - + Netherlands Antilles Antillas Holandesas - + New Caledonia Nueva Caledonia - + New Zealand Nueva Zelanda - + Nicaragua Nicaragua - + Niger Níger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Isla Norfolk - + Northern Mariana Islands Islas Marianas del Norte - + Norway Noruega - + Oman Omán - + Pakistan Pakistán - + Palau Palaos - + Palestinian Territory, Occupied Palestina, Territorio Ocupado de - + Panama Panamá - + Papua New Guinea Papua Nueva Guinea - + Paraguay Paraguay - + Peru Perú - + Philippines Filipinas - + Pitcairn Pitcairn - + Poland Polonia - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Catar - + Reunion Reunión - + Romania Rumanía - + Russian Federation Federacíon Rusa - + Rwanda Ruanda - + Saint Helena Santa Helena - + Saint Kitts And Nevis San Cristóbal y Nieves - + Saint Lucia Santa Lucía - + Saint Pierre And Miquelon San Pedro y Miquelón - + Saint Vincent And The Grenadines San Vicente y las Granadinas - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe Santo Tomé y Príncipe - + Saudi Arabia Arabia Saudí - + Senegal Senegal - + Serbia And Montenegro Serbia y Montenegro - + Seychelles Seychelles - + Sierra Leone Sierra Leona - + Singapore Singapur - + Slovakia Eslovaquia - + Slovenia Eslovenia - + Solomon Islands Islas Salomón - + Somalia Somalia - + South Africa Sudáfrica - + South Georgia And The South Sandwich Islands Islas Georgias del Sur y Sandwich del Sur - + Spain España - + Sri Lanka Sri Lanka - + Sudan Sudán - + Suriname Surinam - + Svalbard And Jan Mayen Svalbard y Jan Mayen - + Swaziland Suazilandia - + Sweden Suecia - + Switzerland Suiza - + Syrian Arab Republic Siria, República Árabe - + Taiwan, Province Of China Taiwan, Provincia de China - + Tajikistan Tayikistán - + Tanzania, United Republic Of Tanzania, República Unida de - + Thailand Tailandia - + Timor-Leste Timor Oriental - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinidad y Tobago - + Tunisia Túnez - + Turkey Turquía - + Turkmenistan Turkmenistán - + Turks And Caicos Islands Islas Turcas y Caicos - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ucrania - + United Arab Emirates Emiratos Árabes Unidos - + United Kingdom Reino Unido - + United States Estados Unidos - + United States Minor Outlying Islands Islas Ultramarinas de Estados Unidos - + Uruguay Uruguay - + Uzbekistan Uzbekistán - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Vietnam - + Virgin Islands, British Islas Vírgenes Británicas - + Virgin Islands, U.S. Islas Vírgenes de los Estados Unidos - + Wallis And Futuna Wallis y Futuna - + Western Sahara Sáhara Occidental - + Yemen Yemen - + Zambia Zambia - + Zimbabwe Zimbabue - + Are you sure you want to report the game name: "%1" as inappropriate? ¿Está seguro de que desea informar de que el nombre "%1" es inapropiado? - + Are you sure you want to close the game: "%1"? - + ¿Seguro que desea cerrar la partida: +"%1"? - + Are you sure you want to total kickban the player: "%1"? - + ¿Seguro que desea expulsar y bloquear al jugador: "%1"? - - - + + + T T @@ -4981,105 +5033,108 @@ p, li { white-space: pre-wrap; } Pulse aquí para ver la clasificación en línea - - - + + Spectate + Espectador + + + + + Time Tiempo - - + + Admin action ... - + Administración... - + Total kickban - + Expulsar y bloquear - + Close game - + Cerrar partida - - - + + + sec (action) seg (acción) - - - + + + sec (hand delay) seg (por mano) - - Connected players - Max. %1 Jugadores conectados - máx. %1 - - + + running games: %1 partidas en marcha: %1 - - + + open games: %1 partidas abiertas: %1 - + Invite %1 Invitar a %1 - + Ignore %1 Ignorar a %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 ha sido invitado a %2 por %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 ha rechazado la invitación a %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 no se puede unir a %2 porque está ocupado.</span> - - + + The game will start in<br><b>%1</b> seconds. La partida comenzará en<br><b>%1</b> segundos. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Ha entrado en una partida sólo para invitados. Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en la lista de jugadores. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Ha sido invitado a la partida <b>%1</b> por <b>%2</b>.<br>¿Quiere unirse a esa partida? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Ya no recibirá más mensajes de charla o invitaciones de este usuario.<br>¿Seguro que desea añadir al usuario <b>%1</b>a la lista de ignorados? @@ -5088,52 +5143,65 @@ Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en jugadores en charla: %1 - - + + connected players: %1 jugadores conectados: %1 - + + + Players (%1) + Jugadores (%1) + + + + + + Spectators (%1) + Espectadores (%1) + + + search for player ... buscar jugador ... - + Chat is only available to registered players. La charla sólo está disponible para usuarios registrados. - + Invite player ... Invitar jugador ... - + Ignore player ... Ignorar jugador ... - + %1 is playing in "%2". %1 está jugando en "%2". - + %1 is not playing at the moment. %1 no está jugando en este momento. - - + + PokerTH - Info Message PokerTH - Mensaje de información - - - - + + + + PokerTH - Question PokerTH - Pregunta @@ -5153,7 +5221,7 @@ Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en QGroupBox { background-image: url(:/graphics/resources/graphics/toolboxFrameBG.png) } - + Speed: Velocidad: @@ -5170,77 +5238,77 @@ Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en Partida - - + + Ctrl+N Ctrl+N - - + + Quit Salir - - + + About PokerTH ... Acerca de PokerTH... - - + + Settings ... Preferencias... - - + + Create Network Game ... Crear partida en red... - - + + Join Network Game ... Unirse a partida en red... - - - + + + Fullscreen Pantalla completa - + Hands Manos - + Chat Charla - + Player info Información del jugador - + Log Registro - - + + Start Local Game ... Iniciar partida local... - - + + Ctrl+Q Ctrl+Q @@ -5253,8 +5321,8 @@ Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en ⌘F - - + + Show/Hide Chat Window Mostrar/Ocultar ventana de charla @@ -5267,8 +5335,8 @@ Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en ⌘H - - + + Show/Hide Log Window Mostrar/Ocultar ventana de registro @@ -5277,18 +5345,18 @@ Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en ⌘L - - - - - - + + + + + + Show/Hide Hands Window Mostrar/Ocultar ventana de manos - - + + Ctrl+O Ctrl+O @@ -5309,37 +5377,37 @@ p, li { white-space: pre-wrap; } <a>&#9734;</a> - + Save Guardar - - + + Ctrl+J Ctrl+J - - + + Ctrl+F Ctrl+F - - + + Ctrl+T Ctrl+T - - + + Ctrl+H Ctrl+H - - + + Ctrl+L Ctrl+L @@ -5352,34 +5420,34 @@ p, li { white-space: pre-wrap; } Partida de red - - + + Internet Game ... Partida en Internet... - - + + Ctrl+I Ctrl+I - + Away Ausente - + Manual Action (default) Acción manual (predeterminado) - + Auto-Check / Auto-Fold Check / Fold automático - + Auto-Check / Auto-Call-Any Check / Call automático @@ -5389,98 +5457,98 @@ p, li { white-space: pre-wrap; } PokerTH 0.6-beta - El motor de Texas Holdem de código abierto - - + + Show/Hide Away Window Mostrar/Ocultar ventana - - + + Ctrl+A Ctrl+A - + Kick Expulsar - + Vote Timeout: Tiempo de votación: - + Yes - + No No - + Chance Probabilidad - + Settings Preferencias - + Configure PokerTH Configurar PokerTH - + Configure PokerTH ... Configurar PokerTH... - - + + Close Cerrar - - + + Ctrl+X Ctrl+X - + Vote started by: Votación iniciada por: - - + + Show/Hide Chance Window Mostrar/Ocultar ventana de probabilidad - - + + Ctrl+C Ctrl+C - + &View &Ver - + &Settings &Preferencias - + Shortcut: <Shift> Acceso directo: <Shift> @@ -5606,31 +5674,31 @@ Elija un nombre diferente. Cmd+N para iniciar una nueva partida - - - - - - - - + + + + + + + + Start Iniciar - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Detener @@ -5685,8 +5753,8 @@ Si el servidor está detrás de un enrutador NAT, asegúrese de que el puerto de Esta partida está llena. - - + + Chat Charla @@ -5749,12 +5817,12 @@ Seleccione otro. El servidor está desconectado por mantenimiento. Inténtelo de nuevo más tarde. - + Closing PokerTH during network game Cerrando PokerTH durante una partida en red - + You are the hosting server. Do you want to close PokerTH anyway? Usted está alojando la partida. ¿Seguro que desea cerrar PokerTH? @@ -5771,16 +5839,16 @@ Seleccione otro. El versión beta de PokerTH es obsoleta.<br>Visite <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> para descargar la última versión. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - El motor de Texas Holdem de código abierto - - - - - + + + + + Lobby Sala @@ -5789,12 +5857,12 @@ Seleccione otro. Ha ocurrido un error interno. Informe al administrador en la sala de charla. - + PokerTH - Internet Game Message PokerTH - Mensaje de partida en Internet - + Attention! Do you really want to leave the current game and go back to the lobby? ¿Seguro que desea abandonar la partida actual @@ -5855,62 +5923,67 @@ Asegúrese de que está conectado a Internet. No se puede abrir el archivo de destino al descargar la lista de servidores. - + PokerTH %1 PokerTH %1 - - + + Chance Probabilidad - + Really want to exit? ¿Seguro que desea salir? - + PokerTH - Close Table? PokerTH - ¿Cerrar mesa? - - + + Kick Expulsar - - + + Do you want to kick <b>%1</b><br>from this game? ¿Desea expulsar a <b>%1</b><br>de esta partida? - - - - + + + + <b>%1</b> secs left quedan <b>%1</b> segundos - + vote voto - + votes votos - - + + Chat is only available to registered players. La charla sólo está disponible para usuarios registrados. + + + Spectators + Espectadores + PokerTH - Warning PokerTH - Advertencia @@ -5934,14 +6007,14 @@ Si está ausente temporalmente, puede utilizar el modo "ausente" en el Usted tiene <b>%1</b> %2 en contra.<br>Son necesarios <b>%3</b> para expulsarle. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. El jugador <b>%1</b> tiene <b>%2</b> %3<br>en contra. Son necesarios <b>%4</b> votos para la expulsión. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Tiene <b>%1</b> %2 en contra.<br>Son necesarios <b>%3</b> votos para la expulsión. @@ -6182,25 +6255,21 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Error al cargar el perfil del servidor - - - - Could not load server-profiles-file: No se puede cargar el archivo de perfil: - + Save Server Profile Error Error al guardar el perfil @@ -6209,31 +6278,47 @@ p, li { white-space: pre-wrap; } Un perfil con el nombre: " - + + + + + Could not load server-profiles-file: +%1 + No se puede cargar el archivo de perfiles de servidores: +%1 + + + Read Server-Profile List Error Error al leer la lista de perfiles - + Could not read server-profiles list No se puede leer la lista de perfiles - - + + Save Server-Profile-File Error Error al guardar la lista de perfiles - - + + + Could not save server-profiles-file: +%1 + No se puede guardar el archivo de perfiles de servidores: +%1 + + Could not save server-profiles-file: No se puede guardar el archivo de perfil: - + A profile with the name: %1 already exists. Would you like to overwrite ? Ya existe un perfil con el nombre %1. @@ -6301,12 +6386,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order Orden manual de ciegas - + You cannot set more than 30 manual blinds. No puede fijar más de 30 ciegas manuales. @@ -6351,7 +6436,7 @@ Would you like to overwrite ? - + Game Speed: Velocidad del juego: @@ -6383,7 +6468,7 @@ Would you like to overwrite ? - + Use saved blinds settings Utilizar configuración guardada de ciegas @@ -6394,7 +6479,7 @@ Would you like to overwrite ? - + Change blinds settings ... Cambiar configuración de ciegas... @@ -6441,14 +6526,14 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Error en el archivo del avatar - + Please select an avatar from the list! Seleccione un avatar de la lista. @@ -6459,7 +6544,7 @@ Please enter an valid picture! Introduzca una imagen válida. - + Select external avatar picture Seleccione una imagen de avatar externa @@ -6468,19 +6553,19 @@ Introduzca una imagen válida. Imágenes (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! El archivo de la imagen seleccionada en demasiado grande. (máx. 30KB) Seleccione otro más pequeño. - + Images (*.png *.jpg *.gif) Imágenes (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! La imagen de avatar introducida no existe. @@ -6523,10 +6608,10 @@ p, li { white-space: pre-wrap; } Postura mínima: - - - - + + + + Start Cash: Dinero inicial: @@ -6539,46 +6624,46 @@ p, li { white-space: pre-wrap; } Opciones del servidor - - - - + + + + Server Port: Puerto del servidor: - - - - + + + + Use IPv6 Usar IPv6 - - + + Server Password: - Contraseña del servidor: + Contraseña del servidor: Network Game Default Settings Opciones predeterminadas de la partida en red - - + + Computer Engine Jugador virtual - - + + Opponent 5: Oponente 5: - - + + Opponent 3: Oponente 3: @@ -6595,31 +6680,31 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Jugador humano:<br /><span style=" font-size:11pt; font-style:italic;">(Este apodo se utilizará también para acceder a las partidas en Internet)</span></p></body></html> - - + + Opponent 2: Oponente 2: - - + + Opponent 6: Oponente 6: - - + + Opponent 1: Oponente 1: - - + + Opponent 4: Oponente 4: - + Human Player: Jugador humano: @@ -6632,31 +6717,31 @@ p, li { white-space: pre-wrap; } Día(s) - - + + Log File Directory: Directorio del archivo de registro: - + Log Messages Mensajes de registro - + Local Game Settings Opciones de la partida local - + Network Game Settings Opciones de la partida en red - - + + Show flip-card animation Mostrar animación de las cartas @@ -6665,8 +6750,8 @@ p, li { white-space: pre-wrap; } Imagen propia del respaldo: - - + + Show fade-out animation for non-winning cards Mostrar animación difuminada para las cartas no ganadoras @@ -6675,18 +6760,18 @@ p, li { white-space: pre-wrap; } Mostrar introducción al empezar - + Show right toolbox Mostrar herramientas a la derecha - + Show left toolbox Mostrar herramientas a la izquierda - - + + Play blind raise notification Notificar incremento de ciegas @@ -6695,8 +6780,8 @@ p, li { white-space: pre-wrap; } Mostrar mensaje de la barra de estado - - + + Show game settings dialog on every new game Mostrar diálogo de opciones en cada nueva partida @@ -6705,20 +6790,20 @@ p, li { white-space: pre-wrap; } Manos antes de subir la postura mínima: - - + + Number of players: Número de jugadores: - - + + Game Speed: Velocidad del juego: - - + + Pause between hands (press "start" button to go on) Pausa entre manos (pulsar botón "Iniciar" para seguir) @@ -6731,8 +6816,8 @@ p, li { white-space: pre-wrap; } Versión del motor para los ordenadores oponentes: - - + + Enable/Disable Logging Activar/Desactivar registro @@ -6741,20 +6826,20 @@ p, li { white-space: pre-wrap; } Guardar los archivos de registro durante - - + + Write log after every: Escribir el registro cada: - - + + Show buttons for small blind and big blind Mostrar botones para las ciegas - - + + Play sound effects Reproducir efectos de sonido @@ -6763,26 +6848,26 @@ p, li { white-space: pre-wrap; } 0.4 (actual) - - - - + + + + Use SCTP Utilizar SCTP - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">¿Qué es esto?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">¿Qué es esto?</a> @@ -6803,20 +6888,20 @@ p, li { white-space: pre-wrap; } Preferencias - - + + Maximum number of players: Número máximo de jugadores: - - + + Sound Volume: Volumen del sonido: - - + + 10 10 @@ -6825,26 +6910,26 @@ p, li { white-space: pre-wrap; } Tiempo de acción del jugador (seg): - - + + action (high frequent disc access) acción (acceso a disco muy frecuente) - - + + hand (medium disc access) mano (acceso a disco medio) - - + + game (low disc access) partida (acceso a disco bajo) - - + + Show own cards only on mouse click Mostar las cartas propias sólo al pulsar el ratón @@ -6855,18 +6940,18 @@ p, li { white-space: pre-wrap; } - + Sound Sonido - - + + Network Server Settings Opciones de partida en red - + Internet Game Settings Opciones de partida en Internet @@ -6875,14 +6960,14 @@ p, li { white-space: pre-wrap; } Opciones del servidor de Internet (dedicado) - - + + Server Address: Dirección del servidor: - - + + Use password for private game: Utilizar contraseña para partida privada: @@ -6899,46 +6984,46 @@ p, li { white-space: pre-wrap; } #pokerth - - - - + + + + First small blind: Primera ciega pequeña: - - + + Disable splashscreen on startup Desactivar pantalla de bienvenida - - + + Game Table Mesa de juego - - + + Card Deck Baraja - - + + Card Back Respaldo - - + + Use card back from card style Utilizar respaldo del estilo de la carta - - + + Use custom card back picture: Utilizar respaldo personalizado: @@ -6955,81 +7040,81 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: La mejor calidad se obtiene con un tamaño de </span><span style=" font-weight:600; font-style:italic;">ancho=76, alto=48.</span></p></body></html> - - - - + + + + Raise blinds: Subir ciegas: - - - - - - - - + + + + + + + + Every: Cada: - - - - + + + + hands manos - - - - + + + + minutes minutos - - - - + + + + Raise mode: Modo de subida: - - - - + + + + Always double blinds Duplicar ciegas siempre - - - - + + + + Manual blinds order: Orden manual de ciegas: - - - - + + + + Edit ... Editar... - - + + Language: Idioma: - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7048,26 +7133,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: La mejor calidad se obtiene con un tamaño de </span><span style=" font-weight:600; font-style:italic;">ancho=48, alto=76.</span></p></td></tr></table></body></html> - - + + Sound Categories Categorías de sonidos - - + + Play game actions sounds like "check", "call", "raise" Reproducir sonidos de acciones como "check", "call", "raise" - - + + Play lobby chat notifications Reproducir notificaciones de la charla - - + + Play network/internet game notifications like "player joined the game" Reproducir notificaciones de partida en red como "un jugador se ha unido" @@ -7076,24 +7161,24 @@ p, li { white-space: pre-wrap; } Activar/Desactivar la sala de charla (servidor IRC) - + Player Nicks/Avatars Apodos/Avatares de los jugadores - + Reverse order of F-Keys (F1 - F4) Orden inverso de las teclas F (F1-F4) - - + + Network / Internet Game Partida en red / Internet - - + + Switch keyboard focus to bet-input-field if it's your turn Seleccionar el campo de entrada de apuestas en su turno @@ -7112,33 +7197,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: la mejor calidad se obtiene con las dimesiones</span><span style=" font-weight:600; font-style:italic;">ancho=100, alto=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Límite de tiempo por mano: - - - - + + + + s s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -7149,7 +7234,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: Las </span><span style=" font-weight:600; font-style:italic;">opciones de la partida</span><span style=" font-style:italic;"> predeterminadas, como "Número máximo de jugadores", "Dinero inicial" y "Ciega pequeña" se leerán </span><span style=" font-weight:600; font-style:italic;">de las opciones de partida en red.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -7160,50 +7245,50 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: la mejor calidad de imagen se obtiene con las dimensiones </span><span style=" font-weight:600; font-style:italic;">ancho=50, alto=50.</span></p></body></html> - - + + Automatic Server Configuration URL URL de configuración automática de servidores - + Factory Settings Configuración original - - + + Show country flag in the corner of avatar Mostrar bandera del país en la esquina del avatar - - + + Activate the "accidentally call after big raise" blocker Activar el bloqueo de "call accidental después de una subida grande" - - - - + + + + Description Descripción - - - - + + + + Maintainer Mantenedor - - - + + + State Estado @@ -7226,32 +7311,32 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Nota: La mejor calidad se obtiene con un tamaño de </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">ancho=48, alto=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Espera entre manos: - - + + Server Servidor - - + + Serverlist Address: Dirección de la lista de servidores: - - + + Manual Server Configuration Configuración manual del servidor - - + + Game Partida @@ -7268,83 +7353,107 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Nota: Se utilizarán </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">opciones de partida</span><span style=" font-size:12pt; font-style:italic;"> predeterminadas como &quot;Número máximo de jugadores&quot;, &quot;Dinero inicial&quot; y &quot;Ciega pequeña&quot; </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">de la configuración de partidas en red.</span></p></body></html> - - + + Default game name: Nombre de partida: - - + + Default game type: Tipo de partida: - - + + Standard Normal - - + + Registered players only Sólo registrados - - + + Invited players only Sólo invitados - - + + Ranking game Clasificatoria - - + + Show lobby chat Mostrar charla principal - - + + + Common + Común + + + + + Do not hide avatars of players which are on the ignore list + No ocultar los avatares de los jugadores en la lista de ignorados + + + + + Disable emoticons in the chat + Desactivar emoticonos en la charla + + + + Automatically leave the table after the game finished Abandonar la mesa automáticamente al terminar la partida - - + + + Allow spectators to watch the game + Permitir espectadores en la partida + + + + Ignored Players Jugadores ignorados - - + + Player Jugador - - + + Remove Player Eliminar jugador - + Note: Best avatar quality with image ratio like width=50, height=50. Nota: la mejor calidad de avatar se obtiene con una imagen con ancho=alto=50. - + OK Aceptar - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7357,14 +7466,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-style:italic;">(Este apodo también se utilizará para el acceso a partidas en Internet)</span></p></body></html> - - + + Store log files for: Guardar registros durante: - - + + Day(s) Día(s) @@ -7389,14 +7498,14 @@ p, li { white-space: pre-wrap; } Exportar como HTML - - + + Reset all settings to default ... Reiniciar todos los parámetros... - - + + Note: You can not reset all settings to default during a running game! Nota: no es posible reiniciar los parámetros durante una partida. @@ -7445,8 +7554,8 @@ p, li { white-space: pre-wrap; } Apodos/Avatares - - + + Show cards chance monitor Mostrar visor de probabilidad @@ -7463,21 +7572,21 @@ p, li { white-space: pre-wrap; } Contraseña: - - + + Avatar Server: Servidor de avatares: - + Style Estilo - - + + Don't translate poker strings like check, call, raise from game table style No traducir los mensajes del juego como check, call o raise en el estilo de mesa @@ -7490,32 +7599,32 @@ p, li { white-space: pre-wrap; } Activar - - - - + + + + Add ... Añadir... - - - - + + + + Remove Eliminar - - - - + + + + Preview - Information: Previsualización - Información: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7532,8 +7641,8 @@ p, li { white-space: pre-wrap; } Estilos de baraja - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7546,29 +7655,29 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Obtener nuevos estilos de baraja de PokerTH...</span></a></p></body></html> - + Note: Best quality with image ratio like width=48, height=76. Nota: la mejor calidad se obtiene con una imagen de ancho=48 y alto=76. - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Nota: las preferencias predeterminadas, como el número máximo de jugadores, el dinero inicial y la ciega pequeña se obtendrá de la configuración de partidas en red. - + (This nick will also be used for the online game login) (Este apodo también se utilizará en las partidas de Internet) - - + + Opponent 7: Oponente 7: - - + + Opponent 8: Oponente 8: @@ -7577,8 +7686,8 @@ p, li { white-space: pre-wrap; } Oponente 4: {10:?} - - + + Opponent 9: Oponente 9: @@ -7586,11 +7695,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Error en las preferencias @@ -7607,7 +7716,7 @@ Please select an valid directory! Introduzca un directorio válido. - + Select your flipside picture Seleccione la imagen del respaldo @@ -7616,24 +7725,24 @@ Introduzca un directorio válido. Imágenes (*.png) - + Open Directory Abrir directorio - + Images (*.png *.jpg *.gif) Imágenes (*.png *.jpg *.gif) - - + + Blinds Error Error en las ciegas - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7681,12 +7790,12 @@ El valor de la primera ciega pequeña será el máximo permitido. Turco - + Language Changed El idioma ha cambiado - + You have changed application language to %1. Please restart PokerTH to load new language! Ha cambiado el idioma de la aplicación a %1. @@ -7703,15 +7812,15 @@ Reinicie PokerTH para cargar el nuevo idioma. Eslovaco - + The entered flipside picture doesn't exist. Please enter an valid picture! La imagen del respaldo introducida no existe. Seleccione una imagen válida. - - + + The log file directory doesn't exist. Please select an valid directory! El directorio del archivo de registro no existe. @@ -7753,7 +7862,7 @@ Seleccione un directorio válido. Sueco - + The entered server list address is not a valid URL. Please enter a valid server list address! La dirección de la lista de servidores introducida no es una URL válida. @@ -7787,7 +7896,7 @@ Introduzca una dirección válida. Galician - + Gallego @@ -7812,7 +7921,7 @@ Introduzca una dirección válida. Scottish Gaelic - + Gaélico escocés @@ -7822,143 +7931,143 @@ Introduzca una dirección válida. Vietnamese - + Vietnamita - + The opponent names are not unique. Please choose different names for each Opponent! Los nombres de los oponentes no son únicos. Introduzca un nombre distinto para cada oponente. - + Settings Information Información de configuración - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Ha cambiado el directorio del archivo de registro. Reinicie PokerTH para comenzar a utilizar el nuevo directorio. - - + + Maintainer Name Nombre del mantenedor - - + + Maintainer EMail eMail del mantenedor - - + + Create Date Fecha de creación - + Windows Behaviour Comportamiento de las ventanas - + scaleable escalable - + fixed fijo - + Minimum Size Tamaño mínimo - + Maximum Size Tamaño máximo - + Fixed Size Tamaño fijo - + State Estado - + Please select your game table style Seleccione su estilo de mesa - + PokerTH game table styles (*.xml) Estilos de mesa de PokerTH (*.xml) - + Game Table Style Error Error en el estilo de mesa - + Selected game table style file is already in the list. Please select another one to add! El estilo de mesa seleccionado ya está en la lista. Seleccione otro para añadirlo. - + Game Table Style File Error Error en el archivo del estilo de mesa - + Could not load game table style file correctly. Style will not be placed into list! No se puede cargar el archivo de estilo de mesa. El estilo no aparecerá en la lista. - + Please select your card deck style Seleccione su estilo de baraja - + PokerTH card deck styles (*.xml) Estilos de baraja de PokerTH (*.xml) - + Card Deck Style Error Error en el estilo de baraja - + Selected card deck style file is already in the list. Please select another one to add! El estilo de baraja seleccionado ya está en la lista. Seleccione otro para añadirlo. - + Card Deck Style File Error Error en el archivo del estilo de baraja - + Could not load card deck style file correctly. Style will not be placed into list! No se puede cargar el archivo de estilo de baraja. @@ -7997,12 +8106,12 @@ El estilo no aparecerá en la lista. Registro de texto plano de PokerTH (*.txt) - + PokerTH - Settings PokerTH - Configuración - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Atención: esto eliminará todos sus cambios en la configuración y cerrará PokerTH. @@ -8092,12 +8201,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Error en el servidor - + You should not kick yourself from this game! No puede expulsarse a usted mismo. @@ -8286,106 +8395,106 @@ Please choose another one. Seleccione otro. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Error en la red - + Server address was not set. La dirección del servidor no está establecida. - + An invalid port was set (ports 0-1023 are not allowed). Se ha establecido un puerto no válido (no se permiten los puertos 0-1023). - + Could not create a socket for TCP communication. No se puede crear un socket de comunicaciones TCP. - + Could not set the IP address. No se puede establecer la dirección IP. - + Could not set the port for this type of address. No se puede establecer el puerto para este tipo de dirección. - + The server name could not be resolved. No se puede resolver el nombre del servidor. - + Bind failed - please choose a different port. Fallo en la comunicación. Seleccione otro puerto. - + Internal network error: "listen" failed. Error interno en la red: fallo en "listen". - + Server execution was terminated. Finalizada la ejecución del servidor. - + Could not connect to the server. No se puede conectar al servidor. - + Connection timed out. Please check the server address. @@ -8396,12 +8505,12 @@ Por favor, compruebe la dirección del servidor. Si el servidor está detrás de un enrutador NAT, asegúrese de que el puerto de reenvío está configurado en el servidor. - + Internal network error: "select" failed. Error interno en la red: fallo en "select". - + Internal network error: "send" failed. Error interno en la red: fallo en "send". @@ -8410,31 +8519,31 @@ Si el servidor está detrás de un enrutador NAT, asegúrese de que el puerto de Conexión cerrada por el servidor. - + The connection to the server was lost. Se ha perdido la conexión con el servidor. - + Internal network error: Duplicate TCP connection. Error interno en la red: conexión TCP duplicada. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Se ha recibido un paquete de red no válido. Asegúrese que todos los jugadores utilizan la misma versión de PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Error interno de estado. Asegúrese que todos los jugadores utilizan la misma versión de PokerTH. - + Invalid server list URL. Please correct the address in the settings. URL de lista de servidores no válida. @@ -8453,162 +8562,163 @@ Please make sure that the server list URL is correct. Asegúrese de que la URL de la lista es correcta. - + Rejoin possible! Es posible volver a conectarse. - + There is an existing session with a previous game. Hay una sesión existente con una partida anterior. - + Do you want to rejoin this game? ¿Desea volver a conectarse a esta partida? - - + + Start Network Game Iniciar partida en red - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. La lista de servidores de PokerTH contiene información no válida. Si ha utilizado una lista de servidores personalizada, asegúrese de que el formato es correcto. - + Could not unzip the PokerTH internet server list. No se puede descomprimir la lista de servidores de PokerTH. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. No se puede descargar la lista de servidores de PokerTH. Asegúrese de que está conectado a Internet. - + Could not open the target file when downloading the server list. No se puede abrir el archivo de destino al descargar la lista de servidores. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. El servidor de PokerTH no soporta esta versión del juego.<br>Por favor, visite <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> y descargue la última versión. - + Sorry, this server is already full. Lo sentimos, este servidor está lleno. - + Invalid login. Please check your username and password. Acceso no válido. Compruebe el nombre de usuario y contraseña. - + Your account is blocked indefinitely. Su cuenta ha sido bloqueada indefinidamente. - + You cannot login at this time. Please try again in a few seconds. No puede acceder en este momento. Inténtelo pasados unos segundos. - + You cannot join this game, because another player in that game has your network address. No puede unirse a esta partida porque otro jugador de la misma accede desde su dirección de red. - + Your connection to the server is very slow, the game had to start without you. Su conexión al servidor es muy lenta, la partida ha comenzado sin usted. - + This game is of type invite-only. You cannot join this game without being invited. Esta partida es sólo para invitados. No puede unirse a ella sin una invitación. - + Invalid password when joining the game. Please reenter the password and try again. Contraseña incorrecta al unirse a la partida. Vuelva a introducir la contraseña e inténtelo de nuevo. - + The avatar report was accepted by the server. Thank you. El informe sobre el avatar ha sido aceptado por el servidor. Gracias. - + This avatar was already reported by another player. Otro jugador ya ha informado sobre este avatar. - + An error occurred while reporting the avatar. Ha ocurrido un error al informar sobre el avatar. - + The game name report was accepted by the server. Thank you. El informe sobre el nombre ha sido aceptado. Gracias. - + This game name was already reported by another player. Otro jugador ya ha informado sobre el nombre de esta partida. - + An error occurred while reporting the game name. Ha ocurrido un error al informar sobre el nombre. - - - The game was closed. - - - The game could not be closed. - + The game was closed. + Se ha cerrado la partida. - The player was kicked and banned permanently. - + The game could not be closed. + No se puede cerrar la partida. - The player was kicked, but could not be banned because it was a guest player. - + The player was kicked and banned permanently. + Es jugador ha sido expulsado y bloqueado permanentemente. - The player was kicked, but could not be banned, -because the nick could not be found in the database - + The player was kicked, but could not be banned because it was a guest player. + El jugador ha sido expulsado pero no bloqueado al ser un jugador anónimo. - The player could not be found. - + The player was kicked, but could not be banned, +because the nick could not be found in the database + El jugador ha sido expulsado pero no bloqueado debido +a que su apodo no aparece en la base de datos. - + + The player could not be found. + No se encuentra al jugador. + + + The password is too long. Please choose another one. La contraseña es demasiado larga. Elija otra. @@ -8623,67 +8733,67 @@ Por favor, elija un nombre diferente. El nombre del jugador es muy corto, muy largo o no es válido. Seleccione otro. - + The game name is either too short or too long. Please choose another one. El nombre de la partida es muy largo o muy corto. Seleccione otro. - + The game could not be found. No se encuentra la partida. - + The chat text is invalid. El texto de charla no es válido. - + The server referred to an unknown player. Aborting. El servidor se ha referido a un jugador desconocido. Abortando. - + Internal error: The current player could not be found. Error interno: no se encuentra al jugador actual. - + Internal error: The current player is not active. Error interno: el jugador actual no está activo. - + You were kicked from the server. Ha sido expulsado del servidor. - + You were temporarily banned from the server. Se le ha prohibido temporalmente el acceso al servidor. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! La conexión se ha cerrado por inactividad. Le invitamos a volver a conectarse. - + The client player count is invalid. El número de jugadores no es válido. - + Too many manual blinds were set. Please reconfigure the manual blinds. Hay demasiadas ciegas manuales. Reconfigure las ciegas manuales. - + An invalid avatar file was configured. Please choose a different avatar. Se ha configurado un archivo de avatar no válido. Seleccione otro. - + The selected avatar file is too large. Please choose a different avatar. El avatar seleccionado es demasiado grande. Seleccione otro. @@ -8692,84 +8802,84 @@ Por favor, elija un nombre diferente. No se puede subir un nuevo avatar en este momento. Inténtelo dentro de unos segundos. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Ha ocurrido un error interno. Informe al administrador en la charla principal. - + Could not start game: Synchronization failed. No se puede iniciar la partida: fallo en la sincronización. - + The server is down for maintenance. Please try again later. El servidor está desconectado por mantenimiento. Inténtelo más tarde. - + An internal error occured. Ha ocurrido un error interno. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Notificación de red - + You were kicked from the game. Ha sido expulsado de la partida. - + Sorry, this game is already full. Disculpe, esta partida está llena. - + Unable to join - the server has already started the game. Imposible unirse - el servidor ya ha comenzado la partida. - + Your admin state timed out due to inactivity. Feel free to create a new game! Ha perdido su estado de administrador por inactividad. Puede crear una nueva partida. - + You cannot join this type of game as guest. No puede unirse a esta partida como anónimo. - + The settings are invalid for this type of game. Las opciones no son válidas para este tipo de partida. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Hay una nueva versión de PokerTH disponible.<br>Por favor, visite <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> para descargarla. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Esta versión beta de PokerTH es obsoleta.<br>Por favor, visite <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> para descargar la última versión. - - + + Server Message Mensaje del servidor diff --git a/ts/pokerth_fi.ts b/ts/pokerth_fi.ts index 992cace6..a66a7948 100644 --- a/ts/pokerth_fi.ts +++ b/ts/pokerth_fi.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -245,22 +244,22 @@ Ota yhteyttä pelipöydän tyylin tekijään osoitteella "%4".Pelipöydän tyylivirhe - Vanhentunut - + Everything OK! Kaikki on OK! - + Some pictures are missing, please contact style maintainer for this issue. Joitakin kuvia puuttuu. Ota yhteyttä tyylin tekijään ilmoittaaksesi ongelmasta. - + Some style fields are missing, please contact style maintainer for this issue. Joitakin tyylikenttiä puuttuu. Ota yhteyttä tyylin tekijään ilmoittaaksesi ongelmasta. - + This style is outdated, please contact style maintainer for this issue. Tämä tyyli on vanhentunut. Ota yhteyttä tyylin tekijään ilmoittaaksesi ongelmasta. @@ -415,52 +414,52 @@ Ota yhteyttä pelipöytätyylin tekijään %3. - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML Vie PokerTH:n lokitiedosto HTML-tiedostoon - + PokerTH HTML log (*.html) PokerTH HTML loki (*.html) - + Export PokerTH log file to plain text Vie PokerTH:n lokitiedosto tekstitiedostoon - + PokerTH plain text log (*.txt) PokerTH tekstitiedostoloki (*.txt) - + Save PokerTH log file Tallenna PokerTH:n lokitiedosto - + PokerTH SQL log (*.pdb) PokerTH SQL loki (*.pdb) @@ -507,13 +506,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -550,18 +549,18 @@ Please verify that you are uploading a valid PokerTH log file. Ilmoita sopimaton avatar - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Et saa enää chat-viestejä tai pelikutsuja tältä käyttäjältä.<br>Haluatko varmasti olla huomioimatta pelaajaa <b>%1</b>? - - + + PokerTH - Question PokerTH - Kysymys - + Are you sure you want to report the avatar of "%1" as inappropriate? Haluatko varmasti ilmoittaa pelaajan "%1" avatarin sopimattomaksi? @@ -590,8 +589,8 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About Tietoa @@ -626,17 +625,27 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project Projekti + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -684,7 +693,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - alkuperäisen graafisen käyttöliittymän grafiikkamalli</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -693,7 +701,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -703,24 +711,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Rami Selin - rami.selin@gmail.com</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - + + Translation Käännös - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + Thanks to Kiitokset @@ -781,13 +791,19 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - uusista pöytien äänistä</span></p></td></tr></table></body></html> - - + + License Lisenssi - + + + Third party libs + + + + Close Sulje @@ -1062,8 +1078,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"> - alkuperäinen graafinen käyttöliittymä</span></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1072,7 +1088,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1324,12 +1340,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Manuaalinen sokkopanosjärjestys - + You cannot set more than 30 manual blinds. Voit asettaa enintään 30 manuaalista sokkopanosta. @@ -1483,7 +1499,7 @@ Valitse toinen nimi! - + Default game name: Oletuspelinimi: @@ -1518,37 +1534,37 @@ Valitse toinen nimi! Sijoituspeli - - + + Maximum number of players: Pelaajien maksimimäärä: - - + + Start Cash: Aloitusraha: - - + + $ - + Blinds Sokkopanokset - + Use saved blinds settings Käytä tallennettuja sokkopanosasetuksia - + Change blinds settings ... Muuta sokkopanosasetuksia ... @@ -1558,39 +1574,45 @@ Valitse toinen nimi! Pelinopeus tietokonevastuksille: - + Timeout for player action: Aikaraja pelaajan toiminnalle: - - + + s s - - + + Password: Salasana: - + Delay between hands: Viive käsien välillä: - - + + + Allow spectators to watch the game + + + + + Create Game Luo peli - + Cancel Peruuta @@ -1715,8 +1737,10 @@ Valitse toinen nimi! Peli + + Players - Pelaajat + Pelaajat State @@ -1727,44 +1751,50 @@ Valitse toinen nimi! Yksityinen - - + + 5 - Show open & non-full & ranking games 5 - Näytä avoimet & vapaat & sijoituspelit - - + + Game Info Peli-info - - + + Connected Players Yhdistetyt pelaajat - - + + + Spectators + + + + + Start Cash: Aloitusraha: - - + + First small blind: Ensimmäinen pieni sokko: - - + + Blinds raise interval: Sokkojen korotuksen väli: - - + + Blinds raise mode: Sokkojen korotuksen tapa: @@ -1774,7 +1804,7 @@ Valitse toinen nimi! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1787,26 +1817,26 @@ p, li { white-space: pre-wrap; } Aikakatkaisu pelaajan toiminnalle (sek): - - + + Fill up with computer opponents Täytä tietokonevastuksilla - - + + Sort alphabetically Järjestä aakkosellisesti - - + + Sort by country Järjestä maittain - - + + Display idle players Näytä joutilaat pelaajat @@ -1819,14 +1849,14 @@ p, li { white-space: pre-wrap; } Potkaise pelaaja - - + + &Start Game &Aloita peli - - + + &Kick Player Pot&kaise pelaaja @@ -1851,8 +1881,8 @@ p, li { white-space: pre-wrap; } Sokkojen korotustila: - - + + Manual blinds list: Manuaalisten sokkopanosten lista: @@ -1861,38 +1891,36 @@ p, li { white-space: pre-wrap; } Aikaraja pelaajan toiminnalle (sek): - - + + Game type: Pelityyppi: - - + + Timing: - - + + &Leave Game &Poistu pelistä - - Join &any game - &Liity johonkin peliin + &Liity johonkin peliin - - + + &Create Game L&uo peli - - + + &Join Game Liity pelii&n @@ -1915,38 +1943,38 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Klikkaa tästä nähdäksesi online-sijoitukset</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - Ei pelilistan suodatusta - - + + search for player ... hae pelaajaa ... - - + + 1 - Show open games 1 - Näytä avoimet pelit - - + + 2 - Show open & non-full games 2 - Näytä avoimet & ei-täydet pelit - - + + 3 - Show open & non-full & non-private games 2 - Näytä avoimet & ei-täydet & ei-yksityiset pelit - - + + 4 - Show open & non-full & private games 2 - Näytä avoimet & ei-täydet & yksityiset pelit @@ -1967,8 +1995,8 @@ p, li { white-space: pre-wrap; } Liity peliin - - + + Lobby-Chat Chattiaula @@ -1997,46 +2025,46 @@ p, li { white-space: pre-wrap; } %1'n peli - + Joining a private Game Liitytään yksityiseen peliin - + You are about to join a private game. Please enter the password! Olet liittymässä yksityiseen peliin. Anna salasana! - + open avoin - - - - + + + + Game Info Peli-info - - - + + + Game Peli - - - + + + Players Pelaajat - - - + + + State Tila @@ -2045,76 +2073,75 @@ p, li { white-space: pre-wrap; } Yksityinen - - - + + + P P - - - + + + Available Players Vapaat pelaajat - + Invite player Kutsu pelaaja - + Ignore player Jätä pelaaja huomiotta - + Player infos ... Pelaajan tiedot ... - + Report inappropriate game name - - - + + + Standard Tavallinen - - - + + + Registered players only Vain rekistöröityneet pelaajat - - - + + + Invited players only Vain kutsutut pelaajat - - - + + + Ranking game Sijoituspeli - Connected players - max. %1 - Yhdistettyjä pelaajia - maks. %1 + Yhdistettyjä pelaajia - maks. %1 - - - + + + T T @@ -2129,116 +2156,132 @@ p, li { white-space: pre-wrap; } - - - + + Spectate + + + + + + Time - - + + Show player stats Näytä pelaajatilastot - - + + Admin action ... - + Total kickban - + Close game - - Connected players - Max. %1 - Yhdistettyjä pelaajia - Maks. %1 + Yhdistettyjä pelaajia - Maks. %1 - + running käynnissä - - + + running games: %1 pelejä käynnissä: %1 - - + + open games: %1 avoimia pelejä: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 Kutsu %1 - + Ignore %1 Jätä %1 huomiotta - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 on kutsu peliin%2 pelaajan %3 toimesta.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 on hylännyt kutsun peliin %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 ei voi liittyä peliin %2, koska hän on kiireinen.</span> - - + + The game will start in<br><b>%1</b> seconds. Peli alkaa <br><b>%1</b> sekunnin kuluttua. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Olet liittynyt vain kutsutuille tarkoitettuun peliin. Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaiden pelaajien listasta. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Sinut on kutsuttu peliin<b>%1</b> pelaajan <b>%2</b> toimesta.<br>Haluatko liittyä tähän peliin? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Et saa enää chat-viestejä tai pelikutsuja tältä käyttäjältä.<br>Haluatko varmasti jättää pelaajan<b>%1</b> huomiotta? @@ -2247,1320 +2290,1318 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid Pelaajia chatissa: %1 - - + + connected players: %1 yhdistettyjä pelaajia: %1 - - Connected players - Yhdistetyt pelaajat + Yhdistetyt pelaajat - + hands kädet - + minutes minuutit - + double blinds tupla sokkopanokset - + manual blinds order manuaalinen sokkopanosjärjestys - + Server Error Palvelinvirhe - + You should not kick yourself from this game! Sinun ei tule potkaista itseäsi tästä pelistä! - + search for player ... hae pelaajaa ... - + Chat is only available to registered players. Chat on vain rekistöröityneille pelaajille. - + Invite player ... Kutsu pelaaja ... - + Ignore player ... Jätä pelaaja huomiotta ... - + %1 is playing in "%2". %1 on pelissä "%2". - + %1 is not playing at the moment. %1 ei pelaa tällä hetkellä. - - + + PokerTH - Info Message PokerTH - Infoviesti - - - - + + + + PokerTH - Question PokerTH - Kysymys - + Afghanistan Afganistan - + ALand Islands Ahvenanmaa - + Albania Albania - + Algeria Algeria - + American Samoa Amerikan Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Etelämanner - + Antigua And Barbuda Antigua ja Barbuda - + Argentina Argentiina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Itävalta - + Azerbaijan Azerbaidžan - + Bahamas Bahama - + Bahrain Bahrain - + Bangladesh Bangladesh - + Barbados Barbados - + Belarus Valko-Venäjä - + Belgium Belgia - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia ja Hertsegovina - + Botswana Botswana - + Bouvet Island Bouvet'nsaari - + Brazil Brasilia - + British Indian Ocean Territory Brittiläinen Intian valtameren alue - + Brunei Darussalam Brunei - + Bulgaria Bulgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodža - + Cameroon Kamerun - + Canada Kanada - + Cape Verde Kap Verde - + Cayman Islands Caymansaaret - + Central African Republic Keski-Afrikan tasavalta - + Chad - + Chile - + China Kiina - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba Kuuba - + Cyprus - + Czech Republic - + Denmark Tanska - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt Egypti - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia Viro - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland Suomi - + France Ranska - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany Saksa - + Ghana - + Gibraltar - + Greece Kreikka - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary Unkari - + Iceland Islanti - + India Intia - + Indonesia - + Iran, Islamic Republic Of - + Iraq Irak - + Ireland Irlanti - + Isle Of Man - + Israel Israeli - + Italy Italia - + Jamaica Jamaika - + Japan Japani - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania liettua - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico Meksiko - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway Norja - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru Peru - + Philippines Filippiinit - + Pitcairn - + Poland Puola - + Portugal Portugali - + Puerto Rico - + Qatar - + Reunion - + Romania Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia Slovakia - + Slovenia Slovenia - + Solomon Islands - + Somalia Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain Espanja - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden Ruotsi - + Switzerland Sveitsi - + Syrian Arab Republic - + Taiwan, Province Of China Taiwan, Kiinan maakunta - + Tajikistan - + Tanzania, United Republic Of - + Thailand Thaimaa - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey Turkki - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States Yhdysvallat - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3573,47 +3614,47 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid PokerTH 0.6-beta - Avoimen lähdekoodin Texas Holdem -alusta - + Hands Kädet - + Chat Chat - + Save Tallenna - + Log Loki - + Away Poissa - + Manual Action (default) Manuaalinen toiminto (oletus) - + Auto-Check / Auto-Fold Auto-Passaus / Auto-Luovutus - + Auto-Check / Auto-Call-Any Auto-Passaus / Auto-Katso-Kaikki - + Speed: Nopeus: @@ -3630,228 +3671,228 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid Verkkopeli - - + + Start Local Game ... Aloita paikallispeli ... - - + + Ctrl+N Ctrl+N - - + + Quit Lopeta - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... Tietoa PokerTH:sta... - - + + Settings ... Asetukset ... - - + + Create Network Game ... Luo verkkopeli ... - - + + Ctrl+O Ctrl+O - - + + Join Network Game ... Liity verkkopeliin ... - - + + Ctrl+J Ctrl+J - - - + + + Fullscreen Kokonäyttö - - + + Ctrl+F Ctrl+F - - + + Show/Hide Chat Window Näytä/piilota chatti-ikkuna - - + + Ctrl+T Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window Näytä/piilota kädet-ikkuna - - + + Ctrl+H Ctrl+H - - + + Show/Hide Log Window Näytä/piilota Loki-ikkuna - - + + Ctrl+L Ctrl+L - - + + Internet Game ... Internet-peli ... - - + + Ctrl+I Ctrl+I - - + + Show/Hide Away Window Näytä/piilota poissa-ikkuna - - + + Ctrl+A Ctrl+A - + Kick Potkaise - + Vote Timeout: Äänestyjen aikaraja: - + Yes Kyllä - + No Ei - + Player info Pelaajan tiedot - + Chance Todennäköisyys - + Settings Asetukset - + Configure PokerTH - + Configure PokerTH ... Säädä PokerTH:ä ... - - + + Close Sulje - - + + Ctrl+X Crtl+X - + Vote started by: Äänestyksen aloitti: - - + + Show/Hide Chance Window Näytä/Piilota todennäköisyysikkuna - - + + Ctrl+C Crtl+C - + &View &Näytä - + &Settings &Asetukset - + Shortcut: <Shift> Pikanäppäin: <Shift> @@ -3859,19 +3900,19 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Pysäytä @@ -3884,7 +3925,7 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid Ctrl+N aloittaaksesi uusi peli - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Avoimen lähdekoodin Texas Holdem -alusta @@ -3903,23 +3944,23 @@ Valitse toinen nimi. F1 - All-In | F2 - Panosta/Korota | F3 - Passaa/Katso | F4 - Luovuta - - - - - - - - + + + + + + + + Start Aloita - - - - - + + + + + Lobby Aula @@ -4130,28 +4171,28 @@ Valitse toinen nimi. Auto-tila asetettu: Passaa tai luovuta. - - + + Chat Chat - + Closing PokerTH during network game Suljetaan PokerTH verkkopelin aikana - + You are the hosting server. Do you want to close PokerTH anyway? Ylläpidät palvelinta. Haluatko silti sulkea PokerTH:n? - + PokerTH - Internet Game Message PokerTH - Internet-peliviesti - + Attention! Do you really want to leave the current game and go back to the lobby? Huomio! Haluatko todella jättää nykyisen pelin @@ -4212,62 +4253,67 @@ Varmista, että olet yhdistetty suoraan internetiin. Ei voitu avata kohdetiedostoa ladattaessa palvelinlistaa. - + PokerTH %1 PokerTH %1 - - + + Chance Todennäköisyys - + Really want to exit? Haluatko varmasti poistua? - + PokerTH - Close Table? PokerTH - Sulje pöytä? - - + + Kick Potkaise - - + + Do you want to kick <b>%1</b><br>from this game? Haluatko potkaista <b>%1</b><br>tästä pelistä? - - - - + + + + <b>%1</b> secs left <b>%1</b> sekunttia jäljellä - + vote ääni - + votes ääntä - - + + Chat is only available to registered players. Chat on saatavilla vain rekistöröityneille pelaajille. + + + Spectators + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> votes needed to kick. Pelaajalla <b>%1</b> on <b>%2</b> %3<br>itseänsä vastaan. <b>%4</b> ääntä tarvitaan potkaisuun. @@ -4277,14 +4323,14 @@ Varmista, että olet yhdistetty suoraan internetiin. Sinulla on <b>%1</b> %2 itseäsi vastaan. <br><b>%3</b> ääntä tarvitaan potkaisuun. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Pelaajalla <b>%1</b> on <b>%2</b> %3<br>häntä vastaan. <b>%4</b> ääntä tarvitaan potkaisuun. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Sinulla on <b>%1</b> %2 itseäsi vastaan.<br><b>%3</b> ääntä tarvitaan potkaisuun. @@ -4505,57 +4551,67 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Lataa Palvelinprofiilitiedostovirhe - - - - Could not load server-profiles-file: - Ei voitu ladata palvelinprofiilitiedostoa: + Ei voitu ladata palvelinprofiilitiedostoa: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error Tallenna palvelinprofiilivirhe - + A profile with the name: %1 already exists. Would you like to overwrite ? Profiili nimellä: %1 on jo olemassa. Korvataanko vanha? - + Read Server-Profile List Error Lue Palvelintiedostolistavirhe - + Could not read server-profiles list Ei voitu lukea palvelinprofiililistaa - - + + Save Server-Profile-File Error Tallenna palvelinprofiilitiedostovirhe - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Ei voitu tallentaa palvelinprofiilitiedostoa: + Ei voitu tallentaa palvelinprofiilitiedostoa: @@ -4620,12 +4676,12 @@ Korvataanko vanha? manualBlindsOrderDialogImpl - + Manual Blinds Order Manuaalinen sokkopanosjärjestys - + You cannot set more than 30 manual blinds. Voit asettaa enintään 30 manuaalista sokkopanosta. @@ -4694,7 +4750,7 @@ Korvataanko vanha? - + Use saved blinds settings Käytä tallennettuja sokkopanosasetuksia @@ -4705,13 +4761,13 @@ Korvataanko vanha? - + Change blinds settings ... Muuta sokkopanosasetuksia ... - + Game Speed: Pelin nopeus: @@ -4752,38 +4808,38 @@ Korvataanko vanha? selectAvatarDialogImpl - - - + + + Avatar File Error Avatarissa tiedostovirhe - + Please select an avatar from the list! Valitse avatari listasta! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Valitun kuvan koko on liian suuri. (max. 30Kb) Valitse pienempi kuva! - + The entered avatar picture doesn't exist. Please enter an valid picture! Haettua avataria ei ole olemassa. Valitse olemassa oleva kuva! - + Select external avatar picture Valitse ulkoinen avatarikuva - + Images (*.png *.jpg *.gif) Kuvat (*.png *.jpg *.gif) @@ -4804,8 +4860,8 @@ Valitse olemassa oleva kuva! Käyttöliittymä - - + + Language: Kieli: @@ -4818,49 +4874,49 @@ Valitse olemassa oleva kuva! Näytä statuspalkin viestit - - + + Show fade-out animation for non-winning cards Näytä häivytysanimaatio ei-voittokorteille - - + + Show flip-card animation Näytä kortinkääntöanimaatio - - + + Show buttons for small blind and big blind Näytä napit pienelle ja isolle sokkopanokselle - - + + Show own cards only on mouse click Näytä omat kortit vain hiirtä klikattaessa - + Reverse order of F-Keys (F1 - F4) Käännä F-näppäimien järjestys (F1 - F4) - - + + Play blind raise notification - - + + Network / Internet Game Verkko- / Internet-peli - - + + Switch keyboard focus to bet-input-field if it's your turn Vaihda näppäimistöasettelu panostussyöttökentäksi omalla vuorollasi @@ -4889,49 +4945,67 @@ p, li { white-space: pre-wrap; } - + Sound Ääni - - + + + Common + + + + + Disable splashscreen on startup Älä näytä roiskeruutua käynnistettäessä - - + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table Pelipöytä - - + + Card Deck Korttipakka - - + + Card Back Korttien selkämys - - + + Use card back from card style Käytä korttipakkatyylin selkämystä - - + + Use custom card back picture: Käytä kustomoitua korttien selkämyskuvaa: @@ -4948,180 +5022,180 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Huomio: Paras laatu kuvilla, joiden suhde on </span><span style=" font-weight:600; font-style:italic;">leveys=76, korkeus=48.</span></p></body></html> - - + + Play sound effects Toista ääniefektit - - + + Sound Volume: Äänenvoimakkuus: - - + + 10 10 - - + + Sound Categories Äänikategoriat - - + + Play game actions sounds like "check", "call", "raise" Toista toimintoäänet, kuten "passaa", "katso, "korota" - - + + Play lobby chat notifications Toista chattiaulahuomautukset - - + + Play network/internet game notifications like "player joined the game" Toista verkko-/internet-pelissä huomautukset, kuten "pelaaja liittyi peliin" - + Local Game Settings Paikallispelin asetukset - - + + Number of players: Pelaajien määrä: - - - - + + + + Start Cash: Aloitusraha: - - - - - - - - + + + + + + + + $ - - - - + + + + First small blind: Esimmäinen pieni sokkopanos: - - - - + + + + Raise blinds: Korota sokkopanoksia: - - - - - - - - + + + + + + + + Every: Jokaisen: - - - - + + + + hands käden jälkeen - - - - + + + + minutes minuutin jälkeen - - - - + + + + Raise mode: Korotustila: - - - - + + + + Always double blinds Tuplaa aina sokkopanokset - - - - + + + + Manual blinds order: Manuaalinen sokkopanosjärjestys: - - - - + + + + Edit ... Muokkaa ... - - + + Game Speed: Pelin nopeus: - - + + Pause between hands (press "start" button to go on) Pidä taukoa käsien välillä (paina "aloita" jatkaaksesi) - - + + Show game settings dialog on every new game Näytä pelin asetukset jokaisessa uudessa pelissä - + Network Game Settings Verkkopelin asetukset - - + + Maximum number of players: Pelaajien maksimimäärä: @@ -5146,78 +5220,78 @@ p, li { white-space: pre-wrap; } Pelinopeus tietokonevastuksille: - - + + Timeout for player action: Aikaraja pelaajan toiminnalle: - - - - + + + + s s - - + + Network Server Settings Verkkopelin asetukset - - + + Server Password: Palvelimen salasana: - - - - + + + + Server Port: Palvelinportti: - - - - + + + + Use SCTP Käytä SCTP - - - - + + + + Use IPv6 Käytä IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://fi.wikipedia.org/wiki/Ipv6">Mikä tämä on?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Mikä tämä on?</a> - + Internet Game Settings Internet-pelin asetukset - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5232,14 +5306,14 @@ p, li { white-space: pre-wrap; } Internet-peliasetukset (pysyvä palvelin) - - + + Server Address: Palvelinosoite: - - + + Use password for private game: Käytä salasanaa yksityiseen peliin: @@ -5268,49 +5342,49 @@ p, li { white-space: pre-wrap; } Pelaajien nimimerkit - - + + Computer Engine Tietokonealusta - - + + Opponent 6: Vastustaja 6: - - + + Opponent 5: Vastustaja 5: - - + + Opponent 4: Vastustaja 4: - - + + Opponent 3: Vastustaja 3: - - + + Opponent 2: Vastustaja 2: - - + + Opponent 1: Vastustaja 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5321,13 +5395,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Huom: Paras laatu kuvilla, joiden suhteet vastaavat </span><span style=" font-weight:600; font-style:italic;">leveys=50, korkeus=50.</span></p></body></html> - + Human Player: Ihmispelaaja: - - + + Enable/Disable Logging Salli/estä kirjautuminen @@ -5336,110 +5410,116 @@ p, li { white-space: pre-wrap; } Tallenna logit kohteeseen - - + + Log File Directory: Lokikansio: - - + + Write log after every: Kirjoita loki jokaisen: - + Note: Best quality with image ratio like width=48, height=76. - + + + Allow spectators to watch the game + + + + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + action (high frequent disc access) toiminnon jälkeen (korkea levynkäyttö) - - + + hand (medium disc access) Käden jälkeen (keskiverto levynkäyttö) - - + + game (low disc access) pelin jälkeen (alhainen levynkäyttö) - + Log Messages Lokiviestit - + Player Nicks/Avatars Pelaajien nimimerkit/avatarit - + Show right toolbox Näytä oikea työkalulaatikko - + Factory Settings - + Show left toolbox Näytä vasen työkalulaatikko - - + + Show country flag in the corner of avatar Näytä maan lippu avatarin kulmassa - - - - + + + + Description Kuvaus - - - - + + + + Maintainer Ylläpitäjä - - - + + + State Tila - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5458,119 +5538,119 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Huom: Paras laatu kuvasuhteella </span><span style=" font-weight:600; font-style:italic;">leveys=48, korkeus=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Viive käsien välillä: - - + + Server Palvelin - - + + Automatic Server Configuration URL Automaattinen palvelin muotoilu URL - - + + Serverlist Address: Palvelinlistaosoite: - - + + Manual Server Configuration Manuaalinen palvelinmuotoilu - - + + Game Peli - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Oletus pelinimi: - - + + Default game type: Oletuspelityyppi: - - + + Standard Tavallinen - - + + Registered players only Vain rekistöröityneet pelaajat - - + + Invited players only Vain kutsutut pelaajat - - + + Ranking game Sijoituspeli - - + + Show lobby chat Näytä aulan chat - - + + Automatically leave the table after the game finished Poistu pöydästä automaattisesti pelin päätyttyä - - + + Ignored Players Jätä pelaaja huomiotta - - + + Player Pelaaja - - + + Remove Player Poista pelaaja - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5583,14 +5663,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ihmispelaaja:<br /><span style=" font-style:italic;">(Tätä nimimerkkiä käytetään myös online-peliin kirjautumisessa)</span></p></body></html> - - + + Store log files for: Säilö lokitiedostot sijaintiin: - - + + Day(s) Päivä(ä) @@ -5603,14 +5683,14 @@ p, li { white-space: pre-wrap; } Vie HTML-tiedostoon - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5639,8 +5719,8 @@ p, li { white-space: pre-wrap; } Nimimerkki/Avatarit - - + + Show cards chance monitor Näytä korttien todennäköisyysikkuna @@ -5657,21 +5737,21 @@ p, li { white-space: pre-wrap; } Salasana: - - + + Avatar Server: Avataripalvelin: - + Style Tyyli - - + + Don't translate poker strings like check, call, raise from game table style Älä käännä pokeritermejä kuten check,call ja raise pelipöytätyylistä @@ -5684,32 +5764,32 @@ p, li { white-space: pre-wrap; } Aktivoi - - - - + + + + Add ... Lisää ... - - - - + + + + Remove Poista - - - - + + + + Preview - Information: Esikatselu - Tiedot: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5726,8 +5806,8 @@ p, li { white-space: pre-wrap; } Korttipakkatyylit - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5740,14 +5820,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Hanki uusia PokerTH-korttipakkatyylejä ...</span></a></p></body></html> - - + + Opponent 7: Vastustaja 7: - - + + Opponent 8: Vastustaja 8: @@ -5756,8 +5836,8 @@ p, li { white-space: pre-wrap; } Vastustaja 1: {10:?} - - + + Opponent 9: Vastustaja 9: @@ -5829,65 +5909,65 @@ p, li { white-space: pre-wrap; } turkki - - - - - + + + + + Settings Error Asetusvirhe - + The entered flipside picture doesn't exist. Please enter an valid picture! Valittua kääntöpuolikuvaa ei ole olemassa. Valitse olemassa oleva kuva! - - + + The log file directory doesn't exist. Please select an valid directory! Lokikansiota ei ole olemassa. Valitse olemassa oleva kansio! - + Language Changed Kieli vaihdettu - + You have changed application language to %1. Please restart PokerTH to load new language! Olet vaihtanut ohjelman kieleen %1. Käynnistä PokerTH ladataksesi uusi kieli! - + Select your flipside picture Valitse kääntöpuolikuvasi - + Images (*.png *.jpg *.gif) Kuvat (*.png *.jpg *.gif) - + Open Directory Avaa kansio - - + + Blinds Error Sokkopanosvirhe - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5951,7 +6031,7 @@ Tämä "ensimmäinen pieni sokkopanosarvo" asetetaan suurimmaksi salli ruotsi - + The entered server list address is not a valid URL. Please enter a valid server list address! Valittu palvelinlistaosoite ei ole kelvollinen URL. @@ -5988,138 +6068,138 @@ Valitse kelvollinen palvelinlistaosoite! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Ylläpitäjän nimi - - + + Maintainer EMail Ylläpitäjän Email - - + + Create Date Luontipäivämäärä - + Windows Behaviour Ikkunan käyttäyminen - + scaleable Skaalattava - + fixed määritelty - + Minimum Size Minimi koko - + Maximum Size Maksimi koko - + Fixed Size Määritelty koko - + State Tila - + Please select your game table style Valitse pelipöytätyylisi - + PokerTH game table styles (*.xml) PokerTH-pelipöytätyyli (*.xml) - + Game Table Style Error Pelipöytätyylin virhe - + Selected game table style file is already in the list. Please select another one to add! Valittu pelipöytätyyli on jo listassa. Valitse toinen lisätäksesi se! - + Game Table Style File Error Pelipöytätyylin virhe - + Could not load game table style file correctly. Style will not be placed into list! Pelipöytätyylin lataaminen ei onnistunut ongelmitta. Tyyliä ei aseteta listaan! - + Please select your card deck style Valitse korttipakkatyylisi - + PokerTH card deck styles (*.xml) PokerTH-korttipakkatyylit /*.xml) - + Card Deck Style Error Korttipakkatyylin virhe - + Selected card deck style file is already in the list. Please select another one to add! Valittu korttipakkatyyli on jo listassa. Valitse toinen lisätäksesi se! - + Card Deck Style File Error Korttipakkatyylin virhe - + Could not load card deck style file correctly. Style will not be placed into list! Korttipakkatyylin lataaminen ei onnistunut ongelmitta. @@ -6158,12 +6238,12 @@ Tyyliä ei aseteta listaan! PokerTH SQL loki (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6236,12 +6316,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Palvelinvirhe - + You should not kick yourself from this game! Sinun ei tule potkaista itseäsi tästä pelistä! @@ -6430,106 +6510,106 @@ Please choose another one. Valitse toinen nimi. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Verkkovirhe - + Server address was not set. Palvelinosoitetta ei ole asetettu. - + An invalid port was set (ports 0-1023 are not allowed). Portti määritetty väärin (portit 0-1023 eivät kelpaa). - + Could not create a socket for TCP communication. Ei voitu luoda sockettia TCP-yhteydelle. - + Could not set the IP address. Ei voitu asettaa IP-osoitetta. - + Could not set the port for this type of address. Ei voitu asettaa porttia tämän kaltaiselle osoitteelle. - + The server name could not be resolved. Palvelimen nimeä ei voitu selvittää. - + Bind failed - please choose a different port. Sokkopanos epäonnistui - valitse toinen portti. - + Internal network error: "listen" failed. Sisäinen verkkovirhe: "kuuntelu" epäonnistui. - + Server execution was terminated. Palvelimen ajo keskeytettiin. - + Could not connect to the server. Ei voitu yhdistää palvelimeen. - + Connection timed out. Please check the server address. @@ -6540,12 +6620,12 @@ Tarkista palvelinosoite. Jos palvelin on NAT-reitittimen takana, varmista, että porttiohjaus on asetettu palvelimen puolella. - + Internal network error: "select" failed. Sisäinen verkkovirhe: "valitse" epäonnistui. - + Internal network error: "send" failed. Sisäinen verkkovirhe: "lähetä" epäonnistui. @@ -6554,31 +6634,31 @@ Jos palvelin on NAT-reitittimen takana, varmista, että porttiohjaus on asetettu Palvelin katkaisi yhteyden. - + The connection to the server was lost. Yhteys palvelimeen menetettiin. - + Internal network error: Duplicate TCP connection. Sisäinen verkkovirhe: Kaksinkertainen TCP-yhteys. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Epäkelpo verkkopaketti vastaanotettiin. Varmista, että kaikilla pelaajilla on sama versio PokerTH:sta. - + Internal state error. Please make sure that all players use the same version of PokerTH. Sisäinen tilavirhe. Varmista, että kaikilla pelaajilla on sama versio PokerTH:sta. - + Invalid server list URL. Please correct the address in the settings. Epäkelpo palvelinlistan URL. @@ -6597,162 +6677,162 @@ Please make sure that the server list URL is correct. Varmista, että palvelinlistan URL on oikein. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Aloita verkkopeli - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. PokerTH:n internetpalvelinlista sisältää kelvotonta dataa. Jos käytät kustomoitua palvelinlistaa, varmita sen muodon oikeellisuus. - + Could not unzip the PokerTH internet server list. PokerTH:n internetpalvelinlistaa ei voitu purkaa. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. PokerTH: internetpalvelinlistaa ei voitu ladata. Varmista, että olet yhdistetty suoraan internetiin. - + Could not open the target file when downloading the server list. Ei voitu avata kohdetiedostoa ladattaessa palvelinlistaa. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. PokerTH-palvelin ei tue tätä peliversiota.<br>Lataa osoittesta<a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> uusin versio pelistä. - + Sorry, this server is already full. Palvelin on jo täynnä. - + Invalid login. Please check your username and password. Kirjautuminen epäonnistui. Tarkista käyttäjänimesi ja salasanasi. - + Your account is blocked indefinitely. Tilisi on estetty toistaiseksi. - + You cannot login at this time. Please try again in a few seconds. Et voi nyt kirjautua. Yritä hetken kuluttua uudestaan. - + You cannot join this game, because another player in that game has your network address. Et voi liittyä tähän peliin, koska toinen pelaaja tässä pelissä omaa saman verkko-osoitteen. - + Your connection to the server is very slow, the game had to start without you. Yhteytesi palvelimeen on hyvin hidas. Pelin täytyi alkaa ilman sinua. - + This game is of type invite-only. You cannot join this game without being invited. Tähän peli on vain kutsutuille. Et voi liittyä tähän peliin kutsutta. - + Invalid password when joining the game. Please reenter the password and try again. Epäkelpo salasana liityttävään peliin. Kirjoita salasana uudestaan ja yritä uudestaan. - + The avatar report was accepted by the server. Thank you. Palvelin hyväksyi ilmoituksen avatarista. Kiitoksia. - + This avatar was already reported by another player. Toinen pelaaja oli jo ilmoittanut tästä avatarista. - + An error occurred while reporting the avatar. Virhe tapahtui avatarin ilmoittamisessa. - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. - + The password is too long. Please choose another one. Salasana on liian pitkä. Valitse toinen. @@ -6767,67 +6847,67 @@ Valitse toinen nimi. Nimesi on liian lyhyt, pitkä ja epäkelpo. Valitse toinen nimi. - + The game name is either too short or too long. Please choose another one. Pelin nimi on joko liian lyhyt ja tai pitkä. Valitse toinen nimi. - + The game could not be found. Peliä ei löydetty. - + The chat text is invalid. Chattiteksti on epäkelpo. - + The server referred to an unknown player. Aborting. Palvelin viittasi tuntemattomaan pelaajaan. Hylätään. - + Internal error: The current player could not be found. Sisäinen virhe: Nykyistä pelaaja ei löydetä. - + Internal error: The current player is not active. Sisäinen virhe: Nykyinen pelaaja on toimeton. - + You were kicked from the server. Sinut potkaistiin palvelimelta. - + You were temporarily banned from the server. Sinut pannattiin väliaikaisesti palvelimelta. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Yhteytesi palvelimeen katkaistiin toimettomuun vuoksi. Olet tervetullut palaamaan takaisin! - + The client player count is invalid. Asiakaspelaajamäärä on epäkelpo. - + Too many manual blinds were set. Please reconfigure the manual blinds. Liian monta manuaalista sokkopanosta asetettiin. Määrittele manuaaliset sokkopanokset uudestaan. - + An invalid avatar file was configured. Please choose a different avatar. Epäkelpo avataritiedosto on määritelty. Valitse toinen avatari. - + The selected avatar file is too large. Please choose a different avatar. Valittu avataritiedosto on liian iso. Valitse toinen avatari. @@ -6836,84 +6916,84 @@ Valitse toinen nimi. Et voi ladata uutta avataritiedosto juuri nyt. Yritä muutaman sekunnin kuluttua uudestaan. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Tapahtui sisäinen avatarivirhe. Ilmoita asiasta ylläpitäjälle chattiaulassa. - + Could not start game: Synchronization failed. Ei voitu käynnistää peliä: Synkronointi epäonnistui. - + The server is down for maintenance. Please try again later. Palvelin on poissa käytössä huollon vuoksi. Yritä myöhemmin uudestaan. - + An internal error occured. Tapahtui sisäinen virhe. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Verkkohuomautus - + You were kicked from the game. Sinut potkaistiin pelistä. - + Sorry, this game is already full. Tämä peli on jo täynnä. - + Unable to join - the server has already started the game. Kykenemätön liittymään - palvelin on jo aloittanut pelin. - + Your admin state timed out due to inactivity. Feel free to create a new game! Ylläpitotilasi katkaistiin toimettomuuden vuoksi. Ole vapaa ja luo uusi peli! - + You cannot join this type of game as guest. Et voi liittyä tämän tyyppiseen peliin vieraana. - + The settings are invalid for this type of game. Asetukset eivät kelpaa tämän tyyppiseen peliin. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. PokerTH:sta on julkaistu uusi versio. <br>Lataa osoitteesta <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> uusin versio. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Tämä PokerTH:n beta on vanhentunut. <br>Lataa osoitteesta <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> uusin versio. - - + + Server Message Palvelinviesti diff --git a/ts/pokerth_fr.ts b/ts/pokerth_fr.ts index a2b2b0ae..adb84644 100644 --- a/ts/pokerth_fr.ts +++ b/ts/pokerth_fr.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -258,22 +257,22 @@ Veuillez contacter l'auteur de ce style de table de jeu via "%4". Erreur de style de table de jeu - Obsolète - + Everything OK! Tout fonctionne ! - + Some pictures are missing, please contact style maintainer for this issue. Certaines images sont manquantes, veuillez contacter l'auteur pour lui demander de corriger ce problème. - + Some style fields are missing, please contact style maintainer for this issue. Certains champs sont manquants, veuillez contacter l'auteur pour lui demander de corriger ce problème. - + This style is outdated, please contact style maintainer for this issue. Ce style est obsolète, veuillez contacter l'auteur pour lui demander de le mettre à jour. @@ -436,52 +435,52 @@ Veuillez contacter le mainteneur du style de table de jeu %3. Analyse le fichier de log... - + PokerTH - Delete log files PokerTH - Supprimer les fichiers de log - + Do you really want to delete the selected log files? Voulez-vous vraiment supprimer les fichiers de log sélectionnés ? - + Remove log file Supprimer ce fichier de log - + PokerTH cannot remove this log file, please verify that you have write access to this file! PokerTH ne peut supprimer ce fichier de log, vérifiez si vous avez les droits d'écriture sur ce fichier ! - + Export PokerTH log file to HTML Exporter le fichier log de PokerTH vers HTML - + PokerTH HTML log (*.html) Fichier de log PokerTH en HTML (*.html) - + Export PokerTH log file to plain text Exporter le fichier Log de PokerTH vers un fichier texte - + PokerTH plain text log (*.txt) Fichier de log PokerTH texte (*.txt) - + Save PokerTH log file Enregistrer le fichier de log - + PokerTH SQL log (*.pdb) Fichier de log PokerTH SQL (*.pdb) @@ -533,14 +532,14 @@ Uploading log files may fail if you are using an http proxy. Le chargement des fichiers de log peuvent échouer si vous utilisez un proxy http. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Le traitement du fichier de log sur le serveur a échoué. Veuillez vérifier que vous chargez un fichier de log valide. - + Failure reason: Raison de l'échec : @@ -577,19 +576,19 @@ Veuillez vérifier que vous chargez un fichier de log valide. Avertir que l'avatar est inapproprié - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Vous êtes sur le point de mettre le joueur <b>%1</b> dans la liste des joueurs ignorés.<br> Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joueur, continuer ? - - + + PokerTH - Question PokerTH - Question - + Are you sure you want to report the avatar of "%1" as inappropriate? Etes-vous sûr de vouloir avertir les développeurs concernant l'avatar de "%1" ? @@ -618,11 +617,39 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue aboutPokerth - - + + About A propos de + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + + Third party libs + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -695,7 +722,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"> - design initial du graphisme de l'interface graphique</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -704,7 +730,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-weight:400; font-style:normal;"> @@ -717,14 +743,12 @@ Guillaume Delacour - <a href="mailto: gui@iroqwa.org"><span s </body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -814,8 +838,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">© 2006-2010, FHammer, FThauer, LMay</p></td></tr></table></body></html> - - + + Project Projet @@ -1194,8 +1218,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - Plate-forme MacOS</p></body></html> - - + + License Licence @@ -1892,13 +1916,13 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - + Close Fermer - - + + Thanks to Remerciements à @@ -1935,8 +1959,8 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + Translation Traduction @@ -1987,8 +2011,8 @@ p, li { white-space: pre-wrap; } À propos de PokerTH 0.6 - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> @@ -2518,8 +2542,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"><br /></span></p></td></tr></table></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2532,7 +2556,7 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> {3C?} {4.0/?} {3.?} {40/?} {1"?} {26p?} {400;?} {0p?} {0p?} {0p?} {0p?} {0;?} {0p?} - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2784,12 +2808,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Ordre manuel des blinds - + You cannot set more than 30 manual blinds. Vous ne pouvez pas configurer plus de 30 blinds manuelles. @@ -2947,8 +2971,8 @@ Merci de renomer cette partie. createInternetGameDialog - - + + Create Game Créer une partie @@ -2961,14 +2985,14 @@ Merci de renomer cette partie. Temps alloué pour l'action du joueur (en secondes): - - + + Maximum number of players: Nombre maximal de joueurs : - - + + Start Cash: Bourse initiale : @@ -2977,19 +3001,25 @@ Merci de renomer cette partie. Petite Blind initiale : - - + + Password: Mot de passe : - + Delay between hands: Délai entre chaque main : - + + + Allow spectators to watch the game + + + + Cancel Annuler @@ -3006,7 +3036,7 @@ Merci de renomer cette partie. - + Default game name: Nom de partie par défault : @@ -3041,38 +3071,38 @@ Merci de renomer cette partie. Classement - + Blinds Blinds - + Use saved blinds settings Utiliser les préférences pour les blinds - + Change blinds settings ... Modifier les paramètres des blinds ... - - + + $ $ - + Timeout for player action: Temps de réponse du joueur : - - + + s @@ -3197,8 +3227,8 @@ Merci de renomer cette partie. gameLobbyDialog - - + + Lobby-Chat Discussion @@ -3211,62 +3241,68 @@ Merci de renomer cette partie. Privé - - + + Game Info Infos sur la partie - - + + Connected Players Joueurs connectés - - + + + Spectators + + + + + First small blind: 1ère petite blind : - - + + Blinds raise interval: Nouvelles blinds toutes les : - - + + Blinds raise mode: Surenchère des blinds : - - + + Timing: Délais : - - + + Fill up with computer opponents Compléter avec des adversaires IA - - + + Sort alphabetically Trier alphabétiquement - - + + Sort by country Trier par pays - - + + Display idle players Joueurs inactifs @@ -3287,8 +3323,8 @@ Merci de renomer cette partie. Petite Blind initiale: - - + + Start Cash: Bourse initiale : @@ -3298,7 +3334,7 @@ Merci de renomer cette partie. Jeux - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -3331,8 +3367,10 @@ p, li { white-space: pre-wrap; } Joueurs disponibles + + Players - Joueurs + Joueurs Kick Player @@ -3359,8 +3397,8 @@ p, li { white-space: pre-wrap; } Mode de surenchère des blinds : - - + + Manual blinds list: Liste de blinds manuelles : @@ -3369,32 +3407,30 @@ p, li { white-space: pre-wrap; } Temps de réponse du joueur (sec) : - - + + Game type: Type : - - + + &Leave Game Quitter la partie - - Join &any game - Joindre &aléatoirement + Joindre &aléatoirement - - + + &Create Game &Créer une partie - - + + &Join Game &Joindre la partie @@ -3417,38 +3453,38 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Cliquez ici pour voir le classement</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - Pas de filtrage des parties - - + + search for player ... Rechercher un joueur ... - - + + 1 - Show open games 1 - Montrer les parties ouvertes - - + + 2 - Show open & non-full games 2 - Montrer les parties ouvertes & non-pleines - - + + 3 - Show open & non-full & non-private games 3 - Montrer les parties ouvertes & non-pleines & non-privées - - + + 4 - Show open & non-full & private games 4 - Montrer les parties ouvertes & non-pleines & privées @@ -3459,20 +3495,20 @@ p, li { white-space: pre-wrap; } Accueil des parties Internet - - + + 5 - Show open & non-full & ranking games 5 - Montrer les parties ouvertes & non-pleines & avec classement - - + + &Start Game C&ommencer - - + + &Kick Player &Expulser le joueur @@ -3496,46 +3532,46 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info Infos sur la partie - + Server Error Erreur du serveur - + You should not kick yourself from this game! Vous ne pouvez pas vous expulser vous-même de la partie ! - + Joining a private Game Rejoindre une partie privée - - - + + + Game Partie - - - + + + Players Joueurs - - - + + + State Statut @@ -3544,43 +3580,41 @@ p, li { white-space: pre-wrap; } Privé - + You are about to join a private game. Please enter the password! Vous êtes sur le point de rejoindre une partie privée. Veuillez entrer le mot de passe. - + running en cours - + open ouvert - - Connected players - Joueurs connectés + Joueurs connectés - + hands mains - + minutes minutes - + double blinds blinds doublées - + manual blinds order ordre manuel des blinds @@ -3594,77 +3628,76 @@ p, li { white-space: pre-wrap; } R - - - + + + P Privée - - - + + + Available Players Joueurs connectés - + Invite player Inviter le joueur - + Ignore player Ignorer le joueur - + Player infos ... Informations sur le joueur ... - - + + Show player stats Montrer les statistiques du joueur - + Report inappropriate game name Signaler un nom de partie inapproprié - - - + + + Standard Standard - - - + + + Registered players only Que les joueurs enregistrés - - - + + + Invited players only Que les joueurs invités - - - + + + Ranking game Classement - Connected players - max. %1 - Joueurs dans la partie - Max : %1 + Joueurs dans la partie - Max : %1 sec (action) @@ -3675,1242 +3708,1242 @@ p, li { white-space: pre-wrap; } sec (durée de la main) - + Afghanistan Afghanistan - + ALand Islands Iles d'Aland - + Albania Albanie - + Algeria Algérie - + American Samoa Samoa Américaines - + Andorra Andorre - + Angola Angola - + Anguilla Anguilla - + Antarctica Antartique - + Antigua And Barbuda Antigua et Barduda - + Argentina Argentine - + Armenia Arménie - + Aruba Aruba - + Australia Australie - + Austria Autriche - + Azerbaijan Azerbaïdjan - + Bahamas Bahamas - + Bahrain Bahreïn - + Bangladesh Bangladesh - + Barbados Barbade - + Belarus Biélorussie - + Belgium Belgique - + Belize Belize - + Benin Bénin - + Bermuda Bermudes - + Bhutan Bhoutan - + Bolivia Bolivie - + Bosnia And Herzegovina Bosnie-Herzégovine - + Botswana Botswana - + Bouvet Island Ile Bouvet - + Brazil Brésil - + British Indian Ocean Territory Territoire britannique de l'océan indien - + Brunei Darussalam Brunei Darussalam - + Bulgaria Bulgarie - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Cambodge - + Cameroon Cameroun - + Canada Canada - + Cape Verde Cap Vert - + Cayman Islands Iles Caïmans - + Central African Republic République Centrale d'Afrique - + Chad Tchad - + Chile Chili - + China Chine - + Christmas Island Ile Christmas - + Cocos (Keeling) Islands Iles Cocos - + Colombia Colombie - + Comoros Comores - + Congo Congo - + Congo, The Democratic Republic Of The République Démocratique du Congo - + Cook Islands Iles Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Côte d'Ivoire - + Croatia Croatie - + Cuba Cuba - + Cyprus Chypre - + Czech Republic République Tchèque - + Denmark Danemark - + Djibouti Djibouti - + Dominica Dominique - + Dominican Republic République Dominicaine - + Ecuador Equateur - + Egypt Egypte - + El Salvador El Salvador - + Equatorial Guinea Guinée Equatoriale - + Eritrea Erythrée - + Estonia Estonie - + Ethiopia Ethiopie - + Falkland Islands (Malvinas) Iles Malouines - + Faroe Islands Iles Féroé - + Fiji Fidji - + Finland Finlande - + France France - + French Guiana Guinée Française - + French Polynesia Polynésie Française - + French Southern Territories Territoire Français du Sud - + Gabon Gabon - + Gambia Gambie - + Georgia Géorgie - + Germany Allemagne - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grèce - + Greenland Groenland - + Grenada Grenade - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernesey - + Guinea Guinée - + Guinea-Bissau Guinée-Bissau - + Guyana Guyane - + Haiti Haïti - + Heard Island And Mcdonald Islands Iles Heard et MacDonald - + Holy See (Vatican City State) Saint-Siège (Etat du Vatican) - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Hongrie - + Iceland Islande - + India Inde - + Indonesia Indonésie - + Iran, Islamic Republic Of République Islamique d'Iran - + Iraq Irak - + Ireland Irelande - + Isle Of Man Ile de Man - + Israel Israël - + Italy Italie - + Jamaica Jamaïque - + Japan Japon - + Jersey Jersey - + Jordan Jordanie - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of République Démocratique Populaire de Corée - + Korea, Republic Of République de Corée - + Kuwait Koweït - + Kyrgyzstan Kirghizistan - + Lao People'S Democratic Republic République Démocratique Populaire du Laos - + Latvia Lettonie - + Lebanon Liban - + Lesotho Lesotho - + Liberia Libéria - + Libyan Arab Jamahiriya Jamahiriya Arabe Libyenne - + Liechtenstein Liechtenstein - + Lithuania Lituanien - + Luxembourg Luxembourg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Ex-République Yougoslave de Macédoine - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malaysie - + Maldives Maldives - + Mali Mali - + Malta Malte - + Marshall Islands Iles Marshall - + Martinique Martinique - + Mauritania Mauritanie - + Mauritius Ile Maurice - + Mayotte Mayotte - + Mexico Mexique - + Micronesia, Federated States Of Etats Fédérés de Micronésie - + Moldova, Republic Of République de Moldavie - + Monaco Monaco - + Mongolia Mongolie - + Montserrat Montserrat - + Morocco Maroc - + Mozambique Mozambique - + Myanmar Birmanie - + Namibia Namibie - + Nauru Nauru - + Nepal Népal - + Netherlands Pays Bas - + Netherlands Antilles Antilles néerlandaises - + New Caledonia Nouvelle Calédonie - + New Zealand Nouvelle Zélande - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Ile Norfolk - + Northern Mariana Islands Iles Mariannes du Nord - + Norway Norvège - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Territoire Palestinien Occupé - + Panama Panama - + Papua New Guinea Papouasie-Nouvelle-Guinée - + Paraguay Paraguay - + Peru Pérou - + Philippines Philippines - + Pitcairn Iles Pitcairn - + Poland Pologne - + Portugal Portugal - + Puerto Rico Porto Rico - + Qatar Qatar - + Reunion Réunion - + Romania Roumanie - + Russian Federation Fédération de Russie - + Rwanda Rwanda - + Saint Helena Saint-Hélène - + Saint Kitts And Nevis Saint-Christophe-et-Niévès - + Saint Lucia Sainte-Lucie - + Saint Pierre And Miquelon Saint-Pierre-et-Miquelon - + Saint Vincent And The Grenadines Saint-Vincent-et-les-Grenadines - + Samoa Samoa - + San Marino Saint-Marin - + Sao Tome And Principe Sao Tome et Principe - + Saudi Arabia Arabie Saoudite - + Senegal Sénégal - + Serbia And Montenegro Serbie-et-Monténégro - + Seychelles Seychelles - + Sierra Leone Sierra Leone - + Singapore Singapour - + Slovakia Slovaquie - + Slovenia Slovénie - + Solomon Islands Iles Solomon - + Somalia Somalie - + South Africa Afrique du Sud - + South Georgia And The South Sandwich Islands Iles de la Géorgie du Sud et Sandwich du Sud - + Spain Espagne - + Sri Lanka Sri Lanka - + Sudan Soudan - + Suriname Suriname - + Svalbard And Jan Mayen Svalbard et Jan Mayen - + Swaziland Swaziland - + Sweden Suède - + Switzerland Suisse - + Syrian Arab Republic République Arabe Syrienne - + Taiwan, Province Of China Taïwan, Province de Chine - + Tajikistan Tadjikistan - + Tanzania, United Republic Of République Unie de Tanzanie - + Thailand Thaïlande - + Timor-Leste Timor-Leste - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinité et Tobago - + Tunisia Tunisie - + Turkey Turquie - + Turkmenistan Turkménistan - + Turks And Caicos Islands Iles Turques-et-Caïques - + Tuvalu Tuvalu - + Uganda Ouganda - + Ukraine Ukraine - + United Arab Emirates Emirats Arabes Unis - + United Kingdom Royaume Uni - + United States Etats-Unis - + United States Minor Outlying Islands Iles Mineures Eloignées des Etats-Unis - + Uruguay Uruguay - + Uzbekistan Ouzbékistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Viêt Nam - + Virgin Islands, British Iles Vierges Britanniques - + Virgin Islands, U.S. Iles Vierges des Etats-Unis - + Wallis And Futuna Wallis et Futuna - + Western Sahara Sahara Occidental - + Yemen Yémen - + Zambia Zambie - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Etes-vous sûr de vouloir signaler le nom de partie : "%1" comme inapproprié ? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - - - + + + T Type @@ -4925,88 +4958,104 @@ p, li { white-space: pre-wrap; } Cliquez ici pour voir le classement en ligne - - - + + Spectate + + + + + + Time Durée - - + + Admin action ... - + Total kickban - + Close game - - - + + + sec (action) sec (action) - - - + + + sec (hand delay) sec (durée de la main) - - Connected players - Max. %1 - Joueurs dans la partie - Max : %1 + Joueurs dans la partie - Max : %1 - - + + running games: %1 Parties en cours : %1 - - + + open games: %1 Parties ouvertes : %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 Inviter %1 - + Ignore %1 Ignorer %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 a été invité dans la partie %2 par %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 a décliné l'invitation de %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 ne peut pas joindre la partie de %2 car il est occupé.</span> - - + + The game will start in<br><b>%1</b> seconds. La partie va démarrer dans <br><b>%1</b> seconde(s). @@ -5019,14 +5068,14 @@ p, li { white-space: pre-wrap; } %1 ne joue pas actuellement. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Vous êtes entré dans une partie où seuls les joueurs invités sont admis. Invitez d'autres joueurs en faisant un clic droit sur leurs pseudos dans la liste des Joueurs disponibles - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Vous avez été invité dans la partie <b>%1</b> par <b>%2</b>.<br>Voulez-vous joindre cette partie? @@ -5039,7 +5088,7 @@ Invitez d'autres joueurs en faisant un clic droit sur leurs pseudos dans la <span style='color:red;'>%1 ne peut pas joindre la partie de %2 car il est occupé.</span> - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Vous êtes sur le point de mettre le joueur <b>%1</b> dans la liste de joueurs ignorés. Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joueur, continuer ? @@ -5049,18 +5098,18 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue joueurs sur le tchat : %1 - - + + connected players: %1 Joueurs connectés : %1 - + search for player ... Rechercher un joueur ... - + Chat is only available to registered players. Le tchat n'est accessible qu'aux joueurs enregistrés. @@ -5069,7 +5118,7 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue Inviter le joueur %1 - + Invite player ... Inviter le joueur ... @@ -5078,23 +5127,23 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue Ignorer le joueur %1 - + Ignore player ... Ignorer le joueur ... - + %1 is playing in "%2". %1 joue actuellement dans la partie "%2" - + %1 is not playing at the moment. %1 ne joue pas actuellement - - + + PokerTH - Info Message PokerTH - Message d'information @@ -5103,10 +5152,10 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue <span style='color:blue;'>%1 a été invité dans la partie %2 par %3.</span> - - - - + + + + PokerTH - Question PokerTH - Question @@ -5126,7 +5175,7 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue QGroupBox { background-image: url(:/graphics/resources/graphics/toolboxFrameBG.png) } - + Speed: Vitesse : @@ -5143,77 +5192,77 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue Partie - - + + Ctrl+N Ctrl+N - - + + Quit Quitter - - + + About PokerTH ... A propos de PokerTH ... - - + + Settings ... Paramètres ... - - + + Create Network Game ... Créer une partie en réseau - - + + Join Network Game ... Rejoindre une partie en réseau - - - + + + Fullscreen Plein écran - + Hands Mains - + Chat Tchat - + Player info Infos sur le joueur - + Log Journal - - + + Start Local Game ... Démarrer une partie solo - - + + Ctrl+Q Ctrl+Q @@ -5226,8 +5275,8 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue ⌘F - - + + Show/Hide Chat Window Montrer/Cacher l'onglet de tchat @@ -5240,8 +5289,8 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue ⌘H - - + + Show/Hide Log Window Montrer/Cacher l'onglet de log @@ -5250,18 +5299,18 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue ⌘L - - - - - - + + + + + + Show/Hide Hands Window Montrer/Cacher l'onglet des mains - - + + Ctrl+O Ctrl+O @@ -5270,37 +5319,37 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue <a>&#9734;</a> - + Save Sauvegarder - - + + Ctrl+J Ctrl+J - - + + Ctrl+F Ctrl+F - - + + Ctrl+T Ctrl+T - - + + Ctrl+H Ctrl+H - - + + Ctrl+L Ctrl+L @@ -5313,34 +5362,34 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue Partie en réseau - - + + Internet Game ... Partie sur Internet - - + + Ctrl+I Ctrl+l - + Away Absence - + Manual Action (default) Action manuelle (défaut) - + Auto-Check / Auto-Fold Parole auto / Passer auto - + Auto-Check / Auto-Call-Any Parole auto / Payer auto @@ -5350,98 +5399,98 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue PokerTH 0.6-beta - Le moteur Open Source de Texas Hold'em - - + + Show/Hide Away Window Montrer/Cacher l'onglet d'absence - - + + Ctrl+A Ctrl+A - + Kick Expulser - + Vote Timeout: Expiration du vote : - + Yes Oui - + No Non - + Chance Chance - + Settings Paramètres - + Configure PokerTH Configurer PokerTH - + Configure PokerTH ... Configurer PokerTH - - + + Close Fermer - - + + Ctrl+X Ctrl+X - + Vote started by: Vote initié par : - - + + Show/Hide Chance Window Montrer/Cacher l'onglet de chance - - + + Ctrl+C Ctrl+C - + &View &Vue - + &Settings P&aramètres - + Shortcut: <Shift> Raccourci : <Shift> @@ -5567,31 +5616,31 @@ Veuillez choisir un nom différent. ⌘N pour démarrer une nouvelle partie - - - - - - - - + + + + + + + + Start Démarrer - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Pause @@ -5646,8 +5695,8 @@ Si le serveur est derrière un pare-feu, vérifiez que le port a été ouvert et Désolé, la partie est déjà complète. - - + + Chat Tchat @@ -5710,12 +5759,12 @@ Veuillez choisir un autre pseudonyme. Le serveur est arrêté pour maintenance. Veuillez réessayer plus tard. - + Closing PokerTH during network game Fermer PokerTH durant la partie en réseau - + You are the hosting server. Do you want to close PokerTH anyway? Vous hébergez le serveur. Voulez-vous quand même fermer PokerTH ? @@ -5732,16 +5781,16 @@ Veuillez choisir un autre pseudonyme. Cettet version béta de PokerTH est obsolète. <br>Merci d'aller sur <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> et de télécharger la dernière version. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Le moteur de Texas Holdem Open-Source - - - - - + + + + + Lobby Fermer @@ -5750,12 +5799,12 @@ Veuillez choisir un autre pseudonyme. Une erreur interne est survenue. Merci de la signaler à un administrateur sur le chat. - + PokerTH - Internet Game Message PokerTH - Message Partie sur Internet - + Attention! Do you really want to leave the current game and go back to the lobby? Attention ! Voulez-vous vraiment quitter la partie en cours @@ -5816,62 +5865,67 @@ Veuillez vérifier que vous êtes directement connectés à internet.Impossible d'ouvrir le fichier cible lors du téléchargement de la liste de serveurs. - + PokerTH %1 PokerTH %1 - - + + Chance Chance - + Really want to exit? Voulez-vous vraiment quitter ? - + PokerTH - Close Table? PokerTH - Fermer la table ? - - + + Kick Expulser - - + + Do you want to kick <b>%1</b><br>from this game? Voulez-vous expulser <b>%1</b><br>de cette partie ? - - - - + + + + <b>%1</b> secs left <b>%1</b> secondes restantes - + vote vote - + votes votes - - + + Chat is only available to registered players. Le tchat n'est accessible qu'aux joueurs enregistrés. + + + Spectators + + PokerTH - Warning PokerTH - Warning @@ -5895,14 +5949,14 @@ Si vous êtes temporairement occupé, vous pouvez utiliser les options d'ab Vous avez <b>%1</b> %2 contre vous.<br><b>%3</b> votes requis pour l'expulser. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Le joueur <b>%1</b> a <b>%2</b> %3<br> contre lui. <b>%4</b> vote(s) requis pour l'expulsion. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Vous avez <b>%1</b> %2 contre vous.<br><b>%3</b> vote(s) requis pour l'expulsion. @@ -6143,25 +6197,21 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Erreur de chargement du fichier de profil serveur - - - - Could not load server-profiles-file: - Impossible de charger le fichier de profil serveur : + Impossible de charger le fichier de profil serveur : - + Save Server Profile Error Erreur de sauvegarde du profil serveur @@ -6170,31 +6220,45 @@ p, li { white-space: pre-wrap; } Un profil avec le nom : " - + + + + + Could not load server-profiles-file: +%1 + + + + Read Server-Profile List Error Erreur de lecture de la liste des profils serveur - + Could not read server-profiles list Impossible de lire la liste des profils serveur - - + + Save Server-Profile-File Error Erreur de sauvegarde du fichier de profil serveur - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Impossible de sauvegarder le fichier de profil serveur : + Impossible de sauvegarder le fichier de profil serveur : - + A profile with the name: %1 already exists. Would you like to overwrite ? Un profil avec le nom : %1 existe déjà. @@ -6262,12 +6326,12 @@ Voulez-vous l'écraser ? manualBlindsOrderDialogImpl - + Manual Blinds Order Ordre des blinds manuelles - + You cannot set more than 30 manual blinds. Vous ne pouvez pas configurer plus de 30 blinds manuelles. @@ -6312,7 +6376,7 @@ Voulez-vous l'écraser ? - + Game Speed: Vitesse : @@ -6344,7 +6408,7 @@ Voulez-vous l'écraser ? - + Use saved blinds settings Utiliser les préférences pour les blinds @@ -6355,7 +6419,7 @@ Voulez-vous l'écraser ? - + Change blinds settings ... Modifier les paramètres de blinds ... @@ -6402,14 +6466,14 @@ Voulez-vous l'écraser ? selectAvatarDialogImpl - - - + + + Avatar File Error Erreur de fichier pour l'avatar - + Please select an avatar from the list! Veuillez choisir un avatar à partir de la liste ! @@ -6420,7 +6484,7 @@ Please enter an valid picture! Veuillez entrer une image valide! - + Select external avatar picture Choisissez un avatar @@ -6429,19 +6493,19 @@ Veuillez entrer une image valide! Images (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! L'image sélectionnée est trop volumineuse. (max. 30 Ko) Veuillez sélectionner une image plus petite ! - + Images (*.png *.jpg *.gif) Images (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! L'image de l'avatar sélectionné n'existe pas. @@ -6484,10 +6548,10 @@ p, li { white-space: pre-wrap; } Petite Blind initiale: - - - - + + + + Start Cash: Bourse initiale : @@ -6500,24 +6564,24 @@ p, li { white-space: pre-wrap; } Paramètres server - - - - + + + + Server Port: Port du serveur : - - - - + + + + Use IPv6 Utiliser IPv6 - - + + Server Password: Mot de passe serveur : @@ -6526,20 +6590,20 @@ p, li { white-space: pre-wrap; } Paramètres réseau par défaut - - + + Computer Engine Moteur IA - - + + Opponent 5: Adversaire 5 : - - + + Opponent 3: Adversaire 3 : @@ -6556,31 +6620,31 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(This nick will also be used for the online game login)</span></p></body></html> - - + + Opponent 2: Adversaire 2 : - - + + Opponent 6: Adversaire 6 : - - + + Opponent 1: Adversaire 1 : - - + + Opponent 4: Adversaire 4 : - + Human Player: Joueur humain : @@ -6593,31 +6657,31 @@ p, li { white-space: pre-wrap; } Jour(s) - - + + Log File Directory: Chemin des fichiers log : - + Log Messages Journalisation (log) - + Local Game Settings Paramètres partie solo - + Network Game Settings Paramètres partie en réseau - - + + Show flip-card animation Afficher l'animation lorsque les cartes sont retournées @@ -6626,8 +6690,8 @@ p, li { white-space: pre-wrap; } L'image au dos de mes cartes: - - + + Show fade-out animation for non-winning cards Afficher l'animation "effet de fondu" lors les mains perdantes @@ -6636,18 +6700,18 @@ p, li { white-space: pre-wrap; } Afficher l'intro au démarrage - + Show right toolbox Afficher les fenêtres d'info (onglets) en bas à droite - + Show left toolbox Afficher les fenêtres d'info (onglets) en bas à gauche - - + + Play blind raise notification Lire le son de notification d'augmentation de blind @@ -6656,8 +6720,8 @@ p, li { white-space: pre-wrap; } Afficher les messages dans la barre de status - - + + Show game settings dialog on every new game Afficher les paramètres à chaque nouvelle partie @@ -6666,20 +6730,20 @@ p, li { white-space: pre-wrap; } Nb de mains avant l'augmentation de la petite blind: - - + + Number of players: Nombre de joueurs : - - + + Game Speed: Vitesse du jeu : - - + + Pause between hands (press "start" button to go on) Faire une pause entre les mains (Appuyez sur "Démarrer" pour continuer) @@ -6692,8 +6756,8 @@ p, li { white-space: pre-wrap; } Version du moteur pour les adversaires IA : - - + + Enable/Disable Logging Activer/Désactiver la journalisation @@ -6702,20 +6766,20 @@ p, li { white-space: pre-wrap; } Activer la journalisation pour - - + + Write log after every: Écrire dans le log après chaque : - - + + Show buttons for small blind and big blind Afficher les boutons pour la petite et la grande blind - - + + Play sound effects Utiliser les effets sonores @@ -6724,26 +6788,26 @@ p, li { white-space: pre-wrap; } 0.4 (courante) - - - - + + + + Use SCTP Utiliser SCTP - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://fr.wikipedia.org/wiki/Ipv6">Qu'est-ce que c'est ?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://fr.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Qu'est-ce que c'est ?</a> @@ -6764,20 +6828,20 @@ p, li { white-space: pre-wrap; } Paramètres - - + + Maximum number of players: Nombre maximal de joueurs : - - + + Sound Volume: Volume des effets sonores : - - + + 10 10 @@ -6786,26 +6850,26 @@ p, li { white-space: pre-wrap; } Temps alloué pour l'action du joueur (en secondes): - - + + action (high frequent disc access) Evènement (élevé - accès disque fréquent) - - + + hand (medium disc access) Main (moyenne - accès disque normal) - - + + game (low disc access) Partie (bas - accès disque réduit) - - + + Show own cards only on mouse click Montrer uniquement mes propres cartes avec un clic de souris @@ -6816,18 +6880,18 @@ p, li { white-space: pre-wrap; } - + Sound Son - - + + Network Server Settings Paramètres de serveur réseau - + Internet Game Settings Paramètres partie sur Internet @@ -6836,14 +6900,14 @@ p, li { white-space: pre-wrap; } Paramètres serveur Internet (serveur dédié) - - + + Server Address: Adresse serveur : - - + + Use password for private game: Utiliser un mot de passe pour la partie privée : @@ -6860,46 +6924,46 @@ p, li { white-space: pre-wrap; } #pokerth - - - - + + + + First small blind: Première petite blind : - - + + Disable splashscreen on startup Désactiver l'écran de démarrage - - + + Game Table Table de jeu - - + + Card Deck Style de carte - - + + Card Back Dos des cartes - - + + Use card back from card style Utiliser l'image de dos de cartes du style - - + + Use custom card back picture: Utiliser une image de dos de carte personnalisée : @@ -6912,81 +6976,81 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Nimbus Sans L'; font-size:8pt; font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : pour une meilleure qualité, utilisez un ratio d'image comme </span><span style=" font-weight:600; font-style:italic;">width=76, height=48.</span></p></body></html> - - - - + + + + Raise blinds: Surenchère des blinds : - - - - - - - - + + + + + + + + Every: Fréquence : - - - - + + + + hands mains - - - - + + + + minutes minutes - - - - + + + + Raise mode: Mode de surenchère : - - - - + + + + Always double blinds Toujours doubler les blinds - - - - + + + + Manual blinds order: Ordre des blinds manuelles : - - - - + + + + Edit ... Editer ... - - + + Language: Langue : - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7005,26 +7069,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : Pour une meilleure qualité, utilisez une image avec </span><span style=" font-weight:600; font-style:italic;">largeur=48, hauteur=76.</span></p></body></html> - - + + Sound Categories Catégories de son - - + + Play game actions sounds like "check", "call", "raise" Jouer un son comme "parole", "payer", "surenchérir" - - + + Play lobby chat notifications Jouer un son lors des notifications du tchat - - + + Play network/internet game notifications like "player joined the game" Jouer un son lors des notifications des parties réseau/Internet comme "un joueur a rejoint la partie" @@ -7033,24 +7097,24 @@ p, li { white-space: pre-wrap; } Activer/Désactiver le chat (Serveur IRC) - + Player Nicks/Avatars Pseudos/Avatars joueur - + Reverse order of F-Keys (F1 - F4) Ordre inversé des touches (F1 - F4) - - + + Network / Internet Game Partie en réseau/Internet - - + + Switch keyboard focus to bet-input-field if it's your turn Aller dans la case pour taper la mise dès que c'est mon tour @@ -7069,33 +7133,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note: Le meilleur ratio pour la qualité sera avec </span><span style=" font-weight:600; font-style:italic;">largeur=100, hauteur=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Temps de réponse du joueur : - - - - + + + + s s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -7106,7 +7170,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : </span><span style=" font-weight:600; font-style:italic;">Les paramètres de partie solo</span><span style=" font-style:italic;"> comme "Nombre maximal de joueurs", "Bourse initiale" et "Petite Blind" seront utilisés </span>par défaut <span style=" font-weight:600; font-style:italic;">pour les paramètres de jeu réseau.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -7117,50 +7181,50 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : Pour une meilleure qualité, utilisez une image avec </span><span style=" font-weight:600; font-style:italic;">largeur=50, hauteur=50.</span></p></body></html> - - + + Automatic Server Configuration URL URL pour la configuration automatique du serveur - + Factory Settings Paramètres par défaut - - + + Show country flag in the corner of avatar Montrer le drapeau dans un coin de l'avatar. - - + + Activate the "accidentally call after big raise" blocker Empêcher un call accidentel après un gros raise d'un autre joueur - - - - + + + + Description Description - - - - + + + + Maintainer Auteur - - - + + + State Statut @@ -7183,32 +7247,32 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : Pour une meilleure qualité, utilisez une image avec </span><span style=" font-weight:600; font-style:italic;">largeur=48, hauteur=76.</span></p></body></html> - - + + Delay between hands: Délai entre chaque main : - - + + Server Serveur - - + + Serverlist Address: Adresse de la liste de serveurs : - - + + Manual Server Configuration Configuration manuelle du serveur - - + + Game Partie @@ -7224,84 +7288,108 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : </span><span style=" font-weight:600; font-style:italic;">Les paramètres de partie solo</span><span style=" font-style:italic;"> comme "Nombre maximal de joueurs", "Bourse initiale" et "Petite Blind" seront utilisés </span>par défaut <span style=" font-weight:600; font-style:italic;">pour les paramètres de jeu réseau.</span></p></body></html> - - + + Default game name: Nom de la partie par défaut : - - + + Default game type: Type de jeu par défaut : - - + + Standard Standard - - + + Registered players only Que les joueurs enregistrés - - + + Invited players only Que les joueurs invités - - + + Ranking game Classement - - + + Show lobby chat Afficher l'onglet de tchat (en bas à gauche) Montrer le tchat - - + + + Common + + + + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Automatically leave the table after the game finished Quitter automatiquement la table à la fin de la partie - - + + + Allow spectators to watch the game + + + + + Ignored Players Joueurs ignorés - - + + Player Joueur - - + + Remove Player Enlever ce joueur - + Note: Best avatar quality with image ratio like width=50, height=50. Note : Pour une meilleure qualité, utilisez une image avec largeur=50, hauteur=50. - + OK OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7314,14 +7402,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Mon pseudo :<br /><span style=" font-style:italic;">(Ce pseudo sera également utilisé pour le "nom d'utilisateur" des parties internet)</span></p></body></html> - - + + Store log files for: Garder les logs pendant : - - + + Day(s) Jour(s) @@ -7346,14 +7434,14 @@ p, li { white-space: pre-wrap; } Exporter en HTML - - + + Reset all settings to default ... Réinitialiser les paramètres à leurs valeurs d'origine - - + + Note: You can not reset all settings to default during a running game! Note : Vous ne pouvez pas réinitialiser les paramètres pendant une partie en cours ! @@ -7402,8 +7490,8 @@ p, li { white-space: pre-wrap; } Pseudos/Avatars - - + + Show cards chance monitor Montrer l'onglet de chance @@ -7420,21 +7508,21 @@ p, li { white-space: pre-wrap; } Mot de passe : - - + + Avatar Server: Serveur d'avatars : - + Style Style - - + + Don't translate poker strings like check, call, raise from game table style Ne pas traduire les mots-clés de poker (par ex. « call ») du style de table de jeu @@ -7447,32 +7535,32 @@ p, li { white-space: pre-wrap; } Activer - - - - + + + + Add ... Ajouter ... - - - - + + + + Remove Supprimer - - - - + + + + Preview - Information: Prévisualisation - Information : - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7485,8 +7573,8 @@ p, li { white-space: pre-wrap; } Styles de dos de cartes - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7495,29 +7583,29 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Obtenir de nouveaux styles de carte PokerTH</span></a></p></body></html> - + Note: Best quality with image ratio like width=48, height=76. Note : Pour une meilleure qualité, utilisez une image avec largeur=48, hauteur=76. - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Les paramètres de partie solo comme "Nombre maximal de joueurs", "Bourse initiale" et "Petite Blind" seront utilisés par défaut pour les paramètres de jeu réseau. - + (This nick will also be used for the online game login) (ce pseudo sera aussi utilisé pour vos jeux en ligne PokerTH) - - + + Opponent 7: Adversaire 7 : - - + + Opponent 8: Adversaire 8 : @@ -7526,8 +7614,8 @@ p, li { white-space: pre-wrap; } Adversaire 4 : {10:?} - - + + Opponent 9: Adversaire 9 : @@ -7535,11 +7623,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Erreur de paramètres @@ -7556,7 +7644,7 @@ Please select an valid directory! Veuillez sélectionner un répertoire valide! - + Select your flipside picture Sélectionnez une image pour le dos des cartes @@ -7565,24 +7653,24 @@ Veuillez sélectionner un répertoire valide! Images (*.png) - + Open Directory Parcourir - + Images (*.png *.jpg *.gif) Images (*.png *.jpg *.gif) - - + + Blinds Error Erreur de blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7630,12 +7718,12 @@ La première blind sera fixée à la valeur maximum possible. Turque - + Language Changed Langue changée - + You have changed application language to %1. Please restart PokerTH to load new language! Vous avez changé la langue de l'application pour %1. @@ -7652,15 +7740,15 @@ Veuillez redémarrer PokerTH pour charger cette langue ! Slovaque - + The entered flipside picture doesn't exist. Please enter an valid picture! L'image pour le dos de carte n'existe pas. Veuillez entrer une image valide ! - - + + The log file directory doesn't exist. Please select an valid directory! Le répertoire des fichiers log n'existe pas. @@ -7702,7 +7790,7 @@ Veuillez sélectionner un répertoire valide ! Suédois - + The entered server list address is not a valid URL. Please enter a valid server list address! L'adresse de la liste de serveurs n'est pas une URL valide. @@ -7774,140 +7862,140 @@ Veuillez entrer une adresse de liste de serveurs valide ! - + The opponent names are not unique. Please choose different names for each Opponent! Les noms d'adversaires sont indentiques. Choisissez des noms différents pour chaque adversaire ! - + Settings Information Information sur les paramètres - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Vous avez changé le répertoire pour les fichiers de journalisation (logs). Relancez PokerTH pour prendre en compte ce changement. - - + + Maintainer Name Nom de l'auteur - - + + Maintainer EMail Email de l'auteur - - + + Create Date Date de création - + Windows Behaviour Comportement de la fenêtre - + scaleable étirable - + fixed fixe - + Minimum Size Taille minimum - + Maximum Size Taille maximum - + Fixed Size Taille fixe - + State Statut - + Please select your game table style Veuillez sélectionner votre style de table de jeu - + PokerTH game table styles (*.xml) Styles de table de jeu PokerTH (*.xml) - + Game Table Style Error Erreur de style de table de jeu - + Selected game table style file is already in the list. Please select another one to add! Le fichier de style de table de jeu sélectionné est déjà dans la liste. Veuillez en sélectionner un autre à ajouter ! - + Game Table Style File Error Erreur sur le fichier style de table de jeu - + Could not load game table style file correctly. Style will not be placed into list! Impossible de charger correctement le fichier de style de table de jeu. Le style ne sera pas placé dans la liste ! - + Please select your card deck style Veuillez choisir votre style de carte - + PokerTH card deck styles (*.xml) Styles de carte PokerTH (*.xml) - + Card Deck Style Error Erreur de style de carte - + Selected card deck style file is already in the list. Please select another one to add! Le fichier de style de carte sélectionné est déjà dans la liste. Veuillez en sélectionner un autre à ajouter ! - + Card Deck Style File Error Erreur sur le fichier de carte - + Could not load card deck style file correctly. Style will not be placed into list! Impossible de charger correctement le fichier de carte. @@ -7946,12 +8034,12 @@ Le style ne sera pas placé dans la liste ! PokerTH plain text log (*.txt) - + PokerTH - Settings PokerTH - Paramètres - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Attention : ceci va supprimer tous vos paramètres personnels et fermer PokerTH ! @@ -8045,12 +8133,12 @@ Voulez-vous vraiment réinitialiser les paramètres à leurs valeurs d'orig startNetworkGameDialogImpl - + Server Error Erreur du serveur - + You should not kick yourself from this game! Vous ne pouvez pas vous expulser vous-même de la partie ! @@ -8239,106 +8327,106 @@ Please choose another one. Veuillez choisir un autre pseudo. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Erreur réseau - + Server address was not set. L'adresse du serveur n'a pas été spécifiée. - + An invalid port was set (ports 0-1023 are not allowed). Un port invalide a été spécifié (les ports 0-1023 ne sont pas permis). - + Could not create a socket for TCP communication. Impossible d'ouvrir un interface de connexion TCP. - + Could not set the IP address. Impossible d'initialiser l'adresse IP. - + Could not set the port for this type of address. Impossible de définir le port pour ce type d'adresse. - + The server name could not be resolved. Impossible de résoudre le nom du serveur. - + Bind failed - please choose a different port. L'opération 'Bind' a échoué - veuillez sélectionner un autre port. - + Internal network error: "listen" failed. Erreur interne réseau : l'opération "listen" a échoué. - + Server execution was terminated. L'exécution du serveur s'est terminée. - + Could not connect to the server. Connexion au serveur impossible. - + Connection timed out. Please check the server address. @@ -8349,12 +8437,12 @@ SVP vérifiez l'adresse du serveur. Si le serveur est derrière un pare-feu, vérifiez que le port a été ouvert et configuré sur le serveur. - + Internal network error: "select" failed. Erreur interne réseau : l'opération "select" a échouée. - + Internal network error: "send" failed. Erreur interne réseau : l'opération "send" a échouée. @@ -8363,31 +8451,31 @@ Si le serveur est derrière un pare-feu, vérifiez que le port a été ouvert et La connexion a été intérrompue par le serveur. - + The connection to the server was lost. La connexion au serveur a été perdue. - + Internal network error: Duplicate TCP connection. Erreur interne du réseau : connexion TCP dupliquée. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Un paquet de données invalide a été reçu. Veuillez vous assurer que tous les joueurs utilisent la même version de PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Erreur de statut interne. Veuillez vous assurer que tous les joueurs utilisent la même version de PokerTH. - + Invalid server list URL. Please correct the address in the settings. L'adresse de la liste des serveurs est invalide. @@ -8406,162 +8494,162 @@ Please make sure that the server list URL is correct. Veuillez vérifier que l'URL de la liste de serveurs est correcte. - + Rejoin possible! Vous pouvez rejoindre la partie ! - + There is an existing session with a previous game. Une session d'une ancienne partie existe déjà. - + Do you want to rejoin this game? Voulez-vous rejoindre cette partie ? - - + + Start Network Game Démarrer une partie en réseau - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. La liste de serveurs internet PokerTH contient des données invalides. Si vous utilisez une liste spécifique, vérifiez que son format est correct. - + Could not unzip the PokerTH internet server list. Impossible de décompresser la liste de serveurs internet PokerTH. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Impossible de téléchager la liste de serveurs internet PokerTH. Veuillez vérifier que vous êtes directement connectés à internet. - + Could not open the target file when downloading the server list. Impossible d'ouvrir le fichier cible lors du téléchargement de la liste de serveurs. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Le serveur PokerTH ne supporte pas cette version du jeu.<br> Merci d'aller sur <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> et de télécharger la dernière version. - + Sorry, this server is already full. Désolé, ce serveur a déjà atteint sa limite de joueurs. - + Invalid login. Please check your username and password. Nom d'utilisateur invalide. Veuillez vérifier votre nom d'utilisateur et mot de passe. - + Your account is blocked indefinitely. Votre compte a été bloqué indéfiniment. - + You cannot login at this time. Please try again in a few seconds. Vous ne pouvez pas vous connecter pour l'instant. Veuillez réessayer dans quelques secondes. - + You cannot join this game, because another player in that game has your network address. Vous ne pouvez rejoindre cette partie, parce qu'il y a déjà un autre joueur avec votre adresse IP. - + Your connection to the server is very slow, the game had to start without you. Votre connexion au serveur est très lente, la partie va devoir démarrer sans vous. - + This game is of type invite-only. You cannot join this game without being invited. Cette partie est réservée aux joueurs invités. Vous ne pouvez donc pas la rejoindre sans être invité. - + Invalid password when joining the game. Please reenter the password and try again. Mot de passe invalide pour la partie sélectionnée. Veuillez entrer le mot de passe à nouveau et réessayez. - + The avatar report was accepted by the server. Thank you. Le rapport d'avatar inapproprié a été accepté par le serveur. Merci. - + This avatar was already reported by another player. Cet avatar a déjà été rapporté comme inapproprié par un autre joueur. - + An error occurred while reporting the avatar. Une erreur s'est produite lors du rapport d'avatar. - + The game name report was accepted by the server. Thank you. Le signalement du nom de partie a été accepté par le serveur. Merci. - + This game name was already reported by another player. Ce nom de partie a déjà été signalé par un autre joueur. - + An error occurred while reporting the game name. Une erreur est survenue lors du signalement du nom de partie. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. - + The password is too long. Please choose another one. Ce mot de passe est trop long. Veuillez en choisir un autre. @@ -8576,67 +8664,67 @@ Veuillez choisir un nom différent. Le nom de joueur est trop court, trop long ou invalide. Veuillez en choisir un autre. - + The game name is either too short or too long. Please choose another one. Le nom de partie est soit trop long soit trop court. Veuillez en choisir un autre. - + The game could not be found. La partie est introuvable. - + The chat text is invalid. Le message de tchat est invalide. - + The server referred to an unknown player. Aborting. Le serveur fait référence à un joueur inconnu. Arrêt de la procédure. - + Internal error: The current player could not be found. Erreur interne : le joueur courant n'a pas été trouvé. - + Internal error: The current player is not active. Erreur interne : le joueur courant n'est pas actif. - + You were kicked from the server. Vous avez été expulsé du serveur. - + You were temporarily banned from the server. Vous avez été temporairement bannis du serveur. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Votre connexion au serveur a expirée pour cause d'inactivité. Vous êtes invités à vous reconnecter ! - + The client player count is invalid. Le compte du nombre de joueur est invalide. - + Too many manual blinds were set. Please reconfigure the manual blinds. Trop de blinds manuelles configurés. Veuillez reconfigurer les blinds manuelles. - + An invalid avatar file was configured. Please choose a different avatar. Un avatar invalide a été choisi. Veuillez en choisir un autre. - + The selected avatar file is too large. Please choose a different avatar. Le fichier d'avatar sélectionné est trop volumineux. Veuillez en choisir un autre. @@ -8645,84 +8733,84 @@ Veuillez choisir un nom différent. Vous ne pouvez pas envoyer un fichier d'avatar maintenant. Veuillez réessayer dans quelques secondes. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Une erreur d'avatar interne est survenue. Merci de la signaler à un administrateur sur le tchat. - + Could not start game: Synchronization failed. Impossible de démarrer la partie : échec de la synchronisation. - + The server is down for maintenance. Please try again later. Le serveur est arrêté pour maintenance. Veuillez réessayer plus tard. - + An internal error occured. Une erreur interne est survenue. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Notification réseau - + You were kicked from the game. Vous avez été expulsé de la partie. - + Sorry, this game is already full. Désolé, la partie est déjà complète. - + Unable to join - the server has already started the game. Impossible de joindre - la partie a déjà commencé. - + Your admin state timed out due to inactivity. Feel free to create a new game! Votre status d'administrateur a expiré pour cause d'inactivité. Recréez une partie ! - + You cannot join this type of game as guest. Vous ne pouvez pas joindre ce type de partie en tant qu'invité. - + The settings are invalid for this type of game. Les paramètres ne sont pas valables pour ce type de jeu. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Une nouvelle version de PokerTH est disponible. <br>Merci d'aller sur <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> et de télécharger la dernière version. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Cette version bêta de PokerTH est obsolète. <br>Merci d'aller sur <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> et de télécharger la dernière version. - - + + Server Message Message du serveur diff --git a/ts/pokerth_gd.ts b/ts/pokerth_gd.ts index d5aaea86..915961a3 100644 --- a/ts/pokerth_gd.ts +++ b/ts/pokerth_gd.ts @@ -1,7 +1,6 @@ - -UTF-8 + @@ -593,22 +592,22 @@ Feuch an cuir thu fios dha neach-togail an stoidhle bùird tro %4. Mearachd le stoidhle airson bòrd a' gheama - ro shean - + Everything OK! A h-uile rud mar bu chòir! - + Some pictures are missing, please contact style maintainer for this issue. Tha dealbh no dhà a dhìth, feuch an cuir thu fios gu neach-glèidhidh an stoidhle mun duilgheas seo. - + Some style fields are missing, please contact style maintainer for this issue. Tha raon stoidhle no dhà a dhìth, feuch an cuir thu fios gu neach-glèidhidh an stoidhle mun duilgheas seo. - + This style is outdated, please contact style maintainer for this issue. Tha an stoidhle seo ro shean, feuch an cuir thu fios gu neach-glèidhidh an stoidhle mun duilgheas seo. @@ -686,64 +685,64 @@ Tagh stoidhle airson bòrd geama is feuch ris a-rithist! Sgrùdaich am faidhle loga ... - + PokerTH - Delete log files PokerTH - Sguab às dha dh'fhaidhlichean loga - + Do you really want to delete the selected log files? A bheil thu cinnteach gu bheil thu airson na faidhlichean loga a thagh thu a sguabadh às? - + Remove log file Thoir am faidhle loga air falbh - + PokerTH cannot remove this log file, please verify that you have write access to this file! Chan urrainn dha PokerTH am faidhle loga seo a thoirt air falbh. Feuch an dearbhaich thu gu bheil cead sgrìobhaidh agad airson an fhaidhle seo! - + Export PokerTH log file to HTML Às-phortaich faidhle loga PokerTH gu HTML - + PokerTH HTML log (*.html) Loga HTML aig PokerTH (*.html) - + Export PokerTH log file to plain text Às-phortaich faidhle loga PokerTH gu teacsa lom - + PokerTH plain text log (*.txt) Loga teacsa lom aig PokerTH (*.txt) - + Save PokerTH log file Sàbhail faidhle loga PokerTH - + PokerTH SQL log (*.pdb) Loga SQL aig PokerTH (*.pdb) - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Dh'fhàillig le giullachd an fhaidhle loga air an fhrithealaiche-lìn. Feuch an dearbhaich thu gu bheil thu a' luchdadh suas faidhle loga aig PokerTH a tha dligheach. - + Failure reason: Adhbhar an fhàilligidh: @@ -815,18 +814,18 @@ Dh'fhaoidte gum fàillig le luchdadh suas aig faidhlichean loga ma tha thu Aithris avatar mì-iomchaidh - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Chan fhaigh thu teachdaireachdan cabadaich no cuiridhean bhon chleachdaiche seo tuilleadh.<br>A bheil thu cinnteach gu bheil thu airson an cluicheadair <b>%1</b> a chur air an liosta neo-shuime? - - + + PokerTH - Question PokerTH - Ceist - + Are you sure you want to report the avatar of "%1" as inappropriate? A bheil thu cinnteach gu bheil thu airson an avatar aig "%1" aithris mar mhì-iomchaidh? @@ -855,25 +854,24 @@ Dh'fhaoidte gum fàillig le luchdadh suas aig faidhlichean loga ma tha thu aboutPokerth - - + + About Mu dheidhinn - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project Pròiseact - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -882,7 +880,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -892,45 +890,71 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">GunChleoc - fios@foramnagaidhlig.net</span></p></td></tr></table></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + Translation Eadar-theangachadh - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + Thanks to Taing do - - + + License Ceadachas - + + + Third party libs + + + + Close Dùin - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -943,7 +967,7 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1202,12 +1226,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Òrdugh nam blinds a làimh - + You cannot set more than 30 manual blinds. Chan urrainn dhut barrachd air 30 blinds a làimh a shuidheachadh. @@ -1350,7 +1374,7 @@ Feuch an tagh thu fear eile! - + Default game name: Ainm bunaiteach a' gheama: @@ -1385,75 +1409,81 @@ Feuch an tagh thu fear eile! Geama rangachaidh - - + + Maximum number of players: An àireamh as motha dhe chluicheadairean: - - + + Start Cash: Airgead tòiseachaidh: - - + + $ £ - + Blinds Blinds - + Use saved blinds settings Cleachd roghainnean nam blinds air an sàbhaladh - + Change blinds settings ... Atharraich roghainnean nam blinds ... - + Timeout for player action: Crìochan ùine airson gnìomhachd a' chluicheadair: - - + + s diog - - + + Password: Facal-faire: - + Delay between hands: Dàil eadar làmhan: - - + + + Allow spectators to watch the game + + + + + Create Game Cruthaich geama - + Cancel Sguir dheth @@ -1566,56 +1596,68 @@ Feuch an tagh thu fear eile! Lobaidh nan geama eadar-lìn - - + + Game Info Fiosrachadh a' gheama - - + + Game type: Seòrsa a' gheama: - - + + Connected Players Cluicheadairean ceangailte - - + + search for player ... lorg cluicheadair ... - - + + 5 - Show open & non-full & ranking games 5 - Seall geamannan fosgailte & nach eil làn & le rangachadh - - + + + Players + Cluicheadairean + + + + + Spectators + + + + + Start Cash: Airgead tòiseachaidh: - - + + First small blind: A' chiad small blind: - - + + Blinds raise interval: Tricead aig togail ("raise") nam blinds: - - + + Blinds raise mode: Dòigh togail ("raise") nam blinds: @@ -1625,7 +1667,7 @@ Feuch an tagh thu fear eile! Geamannan - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1638,110 +1680,108 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - + + Fill up with computer opponents Lìon le co-fharpaisichean coimpiutair - - + + &Start Game &Tòisich air a' gheama - - + + &Kick Player Thoir a' &bhrog dha chluicheadair - - + + Sort alphabetically Seòrsaich a rèir na h-aibidil - - + + Sort by country Seòrsaich a rèir dùthcha - - + + Display idle players Seall cluicheadairean air tàmh - - + + Manual blinds list: Òrdugh nam blinds a làimh: - - + + &Leave Game &Fàg an geama - - Join &any game - Gabh an ge&ama s bith + Gabh an ge&ama s bith - - + + &Create Game &Cruthaich geama - - + + &Join Game &Gabh sa gheama - - + + 0 - No game list filter 0 - Liosta nan geama gun chriathradh - - + + 1 - Show open games 1 - Seall geamannan fosgailte - - + + 2 - Show open & non-full games 2 - Seall geamannan fosgailte & nach eil làn - - + + 3 - Show open & non-full & non-private games 3 - Seall geamannan fosgailte & nach eil làn & nach eil prìobhaideach - - + + 4 - Show open & non-full & private games 4 - Seall geamannan fosgailte & nach eil làn & prìobhaideach - - + + Timing: Tìmeachadh: - - + + Lobby-Chat Cabadaich an lobaidh @@ -1754,211 +1794,226 @@ p, li { white-space: pre-wrap; } A' tòiseachadh air geama. Fuirich greis ... - + Joining a private Game A' gabhail ann an geama prìobhaideach - + You are about to join a private game. Please enter the password! Tha thu an impis gabhail ann an geama prìobhaideach. An cuir thu a-steach am facal-faire? - + open fosgailte - - - - + + + + Game Info Fiosrachadh a' gheama - - - + + Spectate + + + + + + Game Geama - - - + + + Players Cluicheadairean - - - + + + State Staid - - - + + + P P - - - + + + Available Players Cluicheadairean ri làimh - + Invite player Thoir cuireadh dha chluicheadair - + Ignore player Leig seachad cluicheadair - + Player infos ... Fiosrachadh a' chluicheadair ... - + Report inappropriate game name Aithris ainm cluicheadair mì-iomchaidh - - - + + + Standard Àbhaisteach - - - + + + Registered players only Cluicheadairean a chlàraich a-mhàin - - - + + + Invited players only Cluicheadairean a fhuair cuireadh a-mhàin - - - + + + Ranking game Geama rangachaidh - Connected players - max. %1 - Cluicheadairean ceangailte - %1 air a char as motha + Cluicheadairean ceangailte - %1 air a char as motha - - - + + + T S - - - + + + sec (action) diog (gnìomhachd) - - - + + + sec (hand delay) diog (dàil na làimhe) - - Connected players - Max. %1 - Cluicheadairean ceangailte - %1 air a char as motha + Cluicheadairean ceangailte - %1 air a char as motha - + running ga ruith - - + + running games: %1 geamannan gan ruith: %1 - - + + open games: %1 geamannan fosgailte: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 Thoir cuireadh dha %1 - + Ignore %1 Leig seachad %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>Thug %3 cuireadh dha %1 airson %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>dhiùlt %1 an cuireadh airson %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>Chan urrainn dha %1 gabhail ann an %2 oir tha e trang.</span> - - + + The game will start in<br><b>%1</b> seconds. Tòisichidh a' gheama ann an<br><b>%1</b> diog. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Ghabh thu ann an geama dhen t-seòrsa "le cuireadh a-mhàin". Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-ainm air liosta nan cluicheadairean ri làimh. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Fhuair thu cuireadh dhan gheama <b>%1</b> le <b>%2</b>.<br>A bheil thu airson gabhail sa gheama seo? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Chan fhaigh thu teachdaireachdan cabadaich no cuiridhean bhon chleachdaiche seo tuilleadh.<br>A bheil thu cinnteach gu bheil thu airson an cluicheadair <b>%1</b> a chur air an liosta neo-shuime agad? - - + + connected players: %1 cluicheadairean ceangailte: %1 @@ -1973,1344 +2028,1342 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a Seall an rangachadh air loidhne - - - + + + Time Ùine - - + + Show player stats Seall stadastaireachd a' chluicheadair - - + + Admin action ... - + Total kickban - + Close game - - Connected players - Cluicheadairean ceangailte + Cluicheadairean ceangailte - + hands làmhan - + minutes mionaidean - + double blinds blinds dùbailte - + manual blinds order òrdugh nam blinds a làimh - + Server Error Mearachd an fhrithealaiche - + You should not kick yourself from this game! Cha bu chòir dhut a' bhròg a thoirt dhut fhèin! - + search for player ... a' lorg cluicheadair ... - + Chat is only available to registered players. Chan eil a' chabadaich ri làimh ach airson chluicheadairean a' chlàraich. - + Invite player ... Thoir cuireadh dha chluicheadair ... - + Ignore player ... Leig seachad an cluicheadair ... - + %1 is playing in "%2". Tha %1 a' cluiche ann an "%2". - + %1 is not playing at the moment. Chan eil %1 a' cluiche an-dràsta. - - + + PokerTH - Info Message PokerTH - Brath fiosrachaidh - - - - + + + + PokerTH - Question PokerTH - Ceist - + Afghanistan Afghanastàn - + ALand Islands Na h-Eileanan Àland - + Albania Albàinia - + Algeria Aildiria - + American Samoa Samotha na h-Aimeireaga - + Andorra Andorra - + Angola Angòla - + Anguilla Anguilia - + Antarctica An Antartaig - + Antigua And Barbuda Aintìoga agus Barbuda - + Argentina An Argantain - + Armenia Airmeinia - + Aruba Arùba - + Australia Astràilia - + Austria An Ostair - + Azerbaijan Asarbaideàn - + Bahamas Na h-Eileanan Bhathama - + Bahrain Bachrain - + Bangladesh Bangladais - + Barbados Barbados - + Belarus A' Bhealaruis - + Belgium A' Bheilg - + Belize A' Bheilìs - + Benin Beinin - + Bermuda Bearmùda - + Bhutan Butàn - + Bolivia Boilibhia - + Bosnia And Herzegovina Bosna is Hearsagobhana - + Botswana Botsuana - + Bouvet Island Eilean Bouvet - + Brazil Braisil - + British Indian Ocean Territory Ranntair Breatannach Cuan nan Innseachan - + Brunei Darussalam Brùnaigh Dàr as-Salàm - + Bulgaria A' Bhulgair - + Burkina Faso Buirciona Faso - + Burundi Burundaidh - + Cambodia Cambuidea - + Cameroon Camarun - + Canada Canada - + Cape Verde An Ceap Uaine - + Cayman Islands Na h-Eileanan Caimean - + Central African Republic Poblachd Meadhan Afraga - + Chad An t-Seàd - + Chile An t-Sile - + China An t-Sìn - + Christmas Island Eilean na Nollaig - + Cocos (Keeling) Islands Na h-Eileanan Cocos (Keeling) - + Colombia Coloimbia - + Comoros Comoros - + Congo Congo - + Congo, The Democratic Republic Of The Congo, Poblachd Dheamocratach - + Cook Islands Eileanan Cook - + Costa Rica Costa Rìcea - + Cote D'Ivoire Côte d'Ivoire - + Croatia A' Chròthais - + Cuba Cùba - + Cyprus Cìopras - + Czech Republic Poblachd na Seice - + Denmark An Danmhairg - + Djibouti Diobùtaidh - + Dominica Doiminicea - + Dominican Republic A' Phoblachd Dhoiminiceach - + Ecuador Eacuador - + Egypt An Èiphit - + El Salvador An Salbhador - + Equatorial Guinea Gini Mheadhan-Chriosach - + Eritrea Eartra - + Estonia An Eastoin - + Ethiopia An Itiop - + Falkland Islands (Malvinas) Na h-Eileanan Fàclannach (Malvinas) - + Faroe Islands Na h-Eileanan Fàro - + Fiji Fìdi - + Finland An Fhionnlann - + France An Fhraing - + French Guiana Guidheàna na Frainge - + French Polynesia Poilinèis na Frainge - + French Southern Territories Ranntairean a Deas na Frainge - + Gabon Gabon - + Gambia A' Ghaimbia - + Georgia A' Chairtbheil - + Germany A' Ghearmailt - + Ghana Gàna - + Gibraltar Diobraltar - + Greece A' Ghreug - + Greenland A' Ghraonlann - + Grenada Greanàda - + Guadeloupe Guadalup - + Guam Guam - + Guatemala Guatamala - + Guernsey Geàrnsaidh - + Guinea Gini - + Guinea-Bissau Gini-Bioso - + Guyana Guidheàna - + Haiti Haidhti - + Heard Island And Mcdonald Islands Eilean Heard is MhicDhòmhnaill - + Holy See (Vatican City State) A' Chathair Naomh (Stàit Cathair na Bhatacain) - + Honduras Hondùras - + Hong Kong Hong Kong - + Hungary An Ungair - + Iceland Innis Tìle - + India Na h-Innseachan - + Indonesia Na h-Innd Innse - + Iran, Islamic Republic Of Ioràn, Poblachd Ioslamach - + Iraq Ioràc - + Ireland Èirinn - + Isle Of Man Eilean Mhanainn - + Israel Iosrael - + Italy An Eadailt - + Jamaica Diameuga - + Japan An t-Seapan - + Jersey Deàrsaidh - + Jordan Iòrdan - + Kazakhstan Casachstàn - + Kenya Ceinia - + Kiribati Ciribeas - + Korea, Democratic People'S Republic Of Coirèa, Sluagh-phoblachd Dheamocratach - + Korea, Republic Of Choirèa, Poblachd - + Kuwait Cuibhèit - + Kyrgyzstan Cìorgastan - + Lao People'S Democratic Republic Làtho, Sluagh-phoblachd Dheamocratach - + Latvia An Laitbhe - + Lebanon Leabanon - + Lesotho Leasoto - + Liberia Libèir - + Libyan Arab Jamahiriya Libia, Sluagh-phoblachd Mhòr Shòisealach Arabach - + Liechtenstein Lichtenstein - + Lithuania An Liotuain - + Luxembourg Lugsamburg - + Macao Macàthu - + Macedonia, The Former Yugoslav Republic Of A' Mhasadon, Seann-Phoblachd Iùgoslabhach - + Madagascar Madagasgar - + Malawi Malabhaidh - + Malaysia Malaidhsea - + Maldives Na h-Eileanan Maladaibh - + Mali Màili - + Malta Malta - + Marshall Islands Eileanan Mharshall - + Martinique Mairtinic - + Mauritania Moratàinea - + Mauritius Na h-Eileanan Mhoiriseas - + Mayotte Mayotte - + Mexico Meagsago - + Micronesia, Federated States Of Na Meanbh-Eileanan, Stàitean Feadarail - + Moldova, Republic Of A' Mholdobha, Poblachd - + Monaco Monaco - + Mongolia Dùthaich nam Mongol - + Montserrat Montsarat - + Morocco Moroco - + Mozambique Mòsaimbic - + Myanmar Miànmar - + Namibia An Namaib - + Nauru Nauru - + Nepal Neapàl - + Netherlands Na Tìrean Ìsle - + Netherlands Antilles Eileanan Aintilia nan Tìrean Ìsle - + New Caledonia Cailleann Nuadh - + New Zealand Sealainn Nuadh - + Nicaragua Niocaragua - + Niger Nìgeir - + Nigeria Nigèiria - + Niue Niue - + Norfolk Island Eilean Norfolk - + Northern Mariana Islands Na h-Eileanan Mairianach a Tuath - + Norway An Nirribhidh - + Oman Omàn - + Pakistan Pagastàn - + Palau Palabh - + Palestinian Territory, Occupied A' phalastain, Ranntair fo fhor-ghlacadh - + Panama Panama - + Papua New Guinea Gini Nuadh Phaputhach - + Paraguay Paraguaidh - + Peru Pearù - + Philippines Na h-Eileanan Filipineach - + Pitcairn Peit a' Chàirn - + Poland A' Phòlainn - + Portugal A' Phortagail - + Puerto Rico Porto Rìceo - + Qatar Catar - + Reunion Réunion - + Romania Romàinia - + Russian Federation An Co-nasgadh Ruiseach - + Rwanda Rubhanda - + Saint Helena Eilean Naomh Eilidh - + Saint Kitts And Nevis Naomh Crìstean is Nibheis - + Saint Lucia Naomh Lùisea - + Saint Pierre And Miquelon Saint Pierre is Miquelon - + Saint Vincent And The Grenadines Naomh Bhionsant agus Eileanan Greanadach - + Samoa Samotha - + San Marino San Marino - + Sao Tome And Principe São Tomé is Príncipe - + Saudi Arabia Aràibia nan Sabhd - + Senegal Seanagal - + Serbia And Montenegro An t-Sèirb is am Monadh Negrach - + Seychelles Na h-Eileanan Sheiseall - + Sierra Leone Siarra Leòmhann - + Singapore Singeapòr - + Slovakia An t-Slòbhac - + Slovenia An t-Slòbhain - + Solomon Islands Eileanan Sholaimh - + Somalia Somàilia - + South Africa Afraga a Deas - + South Georgia And The South Sandwich Islands Seòrsea a Deas is na h-Eileanan Sandwich a Deas - + Spain An Spàinn - + Sri Lanka Sri Lanca - + Sudan Sudàn - + Suriname Suranam - + Svalbard And Jan Mayen Svalbard is Jan Mayen - + Swaziland Dùthaich nan Suasaidh - + Sweden An t-Suain - + Switzerland An Eilbheis - + Syrian Arab Republic Siridhea, Poblachd Arabach - + Taiwan, Province Of China Taidh-Bhàn, Mòr-roinn na Sìne - + Tajikistan Taidigeastàn - + Tanzania, United Republic Of An Tansan, Poblachd Aonaichte - + Thailand Dùthaich nan Tàidh - + Timor-Leste Tìomor an Ear - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trianaid is Tobago - + Tunisia Tuinisea - + Turkey An Tuirc - + Turkmenistan Turcmanastàn - + Turks And Caicos Islands Na h-Eileanan Turcach is Caiceo - + Tuvalu Tubhalu - + Uganda Uganda - + Ukraine An Ucràin - + United Arab Emirates Na h-Iomaratan Arabach Aonaichte - + United Kingdom An Rìoghachd Aonaichte - + United States Na Stàitean Aonaichte - + United States Minor Outlying Islands Meanbh-Eileanan Iomallach nan Stàitean Aonaichte - + Uruguay Uruguaidh - + Uzbekistan Usbagastan - + Vanuatu Vanuatu - + Venezuela A' Bheiniseala - + Viet Nam Bhiet-Nam - + Virgin Islands, British Eileanan Breatannach na Maighdinn - + Virgin Islands, U.S. Eileanan na Maighdinn aig na Stàitean Aonaichte - + Wallis And Futuna Uallas agus Futuna - + Western Sahara Sathara an Iar - + Yemen An Eaman - + Zambia Sàimbia - + Zimbabwe An t-Sìombab - + Are you sure you want to report the game name: "%1" as inappropriate? A bheil thu cinnteach gu bheil thu airson ainm a' gheama: "%1" aithris mar mhì-iomchaidh? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3323,273 +3376,273 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a PokerTH 0.6-beta - An t-einnsean Open-Source Texas Holdem - + Hands Làmhan - + Chat Cabadaich - + Save Sàbhail - + Log Loga - + Away Air falbh - + Manual Action (default) Gnìomhachd a làimh (bun-roghainn) - + Auto-Check / Auto-Fold Fèin-"check" / Fèin-phaisg ("fold") - + Auto-Check / Auto-Call-Any Fèin-"check" / Fèin-"call" fear sam bith - + Speed: Astar: - - + + Start Local Game ... Tòisich air geama ionadail ... - - + + Ctrl+N Ctrl+N - - + + Quit Fàg an-seo - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... Mu dheidhinn PokerTH ... - - + + Settings ... Roghainnean ... - - + + Create Network Game ... Cruthaich geama lìonraidh ... - - + + Ctrl+O Ctrl+R - - + + Join Network Game ... Gabh ann an geama lìonraidh ... - - + + Ctrl+J Ctrl+G - - - + + + Fullscreen Làn-sgrìn - - + + Ctrl+F Ctrl+S - - + + Show/Hide Chat Window Seall/falaich uinneag na cabadaich - - + + Ctrl+T Ctrl+C - - - - - - + + + + + + Show/Hide Hands Window Seall/falaich uinneag nan làmhan - - + + Ctrl+H Ctrl+L - - + + Show/Hide Log Window Seall/falaich uinneag an loga - - + + Ctrl+L Ctrl+O - - + + Internet Game ... Geama eadar-lìn ... - - + + Ctrl+I Ctrl+E - - + + Show/Hide Away Window Seall/falaich uinneag air falbh - - + + Ctrl+A Ctrl+A - + Kick Thoir a' bhròg - + Vote Timeout: Falbhaidh an ùine air a' bhòtadh: - + Yes Tha - + No Chan eil - + Player info Fiosrachadh a' chluicheadair - + Chance Seans - + Configure PokerTH ... Rèitich PokerTH ... - - + + Close Dùin - - + + Ctrl+X Ctrl+X - + Vote started by: Bhòt air a thòiseachadh le: - - + + Show/Hide Chance Window Seall/falaich uinneag an t-seans - - + + Ctrl+C Ctrl+U - + &View &Sealladh - + &Settings &Roghainnean - + Shortcut: <Shift> Ath-ghoirid: <Shift> - + Settings Roghainnean - + Configure PokerTH Rèitich PokerTH @@ -3597,142 +3650,147 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stad - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1- An t-einnsean Open-Source Texas Holdem - - - - - - - - + + + + + + + + Start Tòisich - - - - - + + + + + Lobby Lobaidh - - + + Chat Cabadaich - + Closing PokerTH during network game A' dùnadh PokerTH rè geama lìonraidh - + You are the hosting server. Do you want to close PokerTH anyway? 'S e an t-òstair a th' annad. A bheil thu airson PokerTH a dhùnadh co-dhiù? - + Really want to exit? A bheil thu cinnteach gu bheil thu airson fàgail? - + PokerTH - Close Table? PokerTH - A bheil thu airson am bòrd a dhùnadh? - + PokerTH - Internet Game Message PokerTH - Brath a' gheama eadar-lìn - + Attention! Do you really want to leave the current game and go back to the lobby? An aire! A bheil thu cinnteach gu bheil thu airson an geama seo fhàgail is tilleadh dhan lobaidh? - - + + Chat is only available to registered players. Chan eil a' chabadaich ri làimh ach airson chluicheadairean a' chlàraich. - - + + Spectators + + + + + Chance Seans - - + + Kick Thoir a' bhròg - - + + Do you want to kick <b>%1</b><br>from this game? A bheil thu airson a' bhròg a thoirt dha <b>%1</b><br>on gheama seo? - - - - + + + + <b>%1</b> secs left <b>%1</b> diog air fhàgail - + vote bhòta - + votes bhòtaichean - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Tha <b>%2</b> %3 an aghaidh cluicheadair <b>%1</b>.<br>Tha <b>%4</b> bhòta(ichean) a dhìth gus a' bhròg a thoirt dha. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Tha <b>%1</b> %2 nad aghaidh.<br>Tha <b>%3</b> bhòta(ichean) a dhìth gus am faigh thu a' bhròg. @@ -3931,56 +3989,66 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error A' luchdadh pròifil an fhrithealaiche-Mearachd fhaidhle - - - - Could not load server-profiles-file: - Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a luchdadh: + Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a luchdadh: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error Sàbhail a' mhearachd aig pròifil an fhrithealaiche - + A profile with the name: %1 already exists. Would you like to overwrite ? Tha pròifil ann air a bheil: %1 mu thràth. A bheil thu airson sgrìobhadh thairis air? - + Read Server-Profile List Error A' leughadh liosta pròifil nam frithealaiche-Mearachd fhaidhle - + Could not read server-profiles list Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a leughadh - - + + Save Server-Profile-File Error A' sàbhaladh pròifil an fhrithealaiche-Mearachd fhaidhle - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a shàbhaladh: + Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a shàbhaladh: @@ -4044,12 +4112,12 @@ A bheil thu airson sgrìobhadh thairis air? manualBlindsOrderDialogImpl - + Manual Blinds Order Òrdugh nam blinds a làimh - + You cannot set more than 30 manual blinds. Chan urrainn dhut barrachd air 30 blinds a làimh a shuidheachadh. @@ -4114,7 +4182,7 @@ A bheil thu airson sgrìobhadh thairis air? - + Use saved blinds settings Cleachd roghainnean nam blinds air an sàbhaladh @@ -4125,13 +4193,13 @@ A bheil thu airson sgrìobhadh thairis air? - + Change blinds settings ... Atharraich roghainnean nam blinds ... - + Game Speed: Astar a' gheama: @@ -4172,38 +4240,38 @@ A bheil thu airson sgrìobhadh thairis air? selectAvatarDialogImpl - - - + + + Avatar File Error Mearachd le faidhle an avatar - + Please select an avatar from the list! Feuch an tagh thu avatar on liosta! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Tha meud an fhaidhle aig an dealbh a thagh thu ro mhòr. (30KB air a char as motha) Feuch an tagh thu dealbh nas lugha! - + The entered avatar picture doesn't exist. Please enter an valid picture! Chan eil dealbh an avatar a chuir thu a-steach ann. Feuch an cuir thu a-steach dealbh dligheach! - + Select external avatar picture Tagh dealbh avatar bho thaobh a-muigh - + Images (*.png *.jpg *.gif) Dealbhan (*.png *.jpg *.gif) @@ -4224,405 +4292,429 @@ Feuch an cuir thu a-steach dealbh dligheach! Eadar-aghaidh - - + + Language: Cànan: - - + + Show fade-out animation for non-winning cards Seall beòthachadh crìonaidh airson cairtean nach do bhuannaich - - + + Show flip-card animation Seall beòthachadh air tionndadh nan cairtean - - + + Show buttons for small blind and big blind Seall putanan airson small blind is big blind - - + + Show own cards only on mouse click Na seall na cairtean agam ach le briogadh na luchaige - + Reverse order of F-Keys (F1 - F4) Òrdugh contrarra nan iuchraichean F (F1 - F4) - - + + Network / Internet Game Geama lìonraidh / eadar-lìn - - + + Switch keyboard focus to bet-input-field if it's your turn Cuir fòcas a' mheur-chlàir air raon cur a-steach "geall" mas e an turas agadsa a th' ann - + Sound Fuaim - + Factory Settings Roghainnean an fhactaraidh - - + + + Common + + + + + Disable splashscreen on startup Cuir sgrìn-aithneachaidh aig toiseach a' gheama à comas - - + + Show country flag in the corner of avatar Seal bratach na dùthcha air oisean an avatar - - + + Activate the "accidentally call after big raise" blocker Gnìomhaich am bacadair "'call' le mearachd an dèidh togail ('raise') mhòir" - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table Bòrd a' gheama - - - - + + + + Description Tuairisgeul - - - - + + + + Maintainer Neach-glèidhidh - - - + + + State Staid - - + + Card Deck Paca chairt - - + + Card Back Cùlaibh nan cairtean - - + + Use card back from card style Cleachd cùlaibh nan cairtean aig stoidhle nan cairtean - - + + Use custom card back picture: Cleachd dealbh gnàthaichte mar chùlaibh nan cairtean: - - + + Play sound effects Cluich èifeachdan fuaime - - + + Sound Volume: Àirde fuaime: - - + + 10 10 - - + + Sound Categories Roinnean-seòrsa nam fuaimean - - + + Play game actions sounds like "check", "call", "raise" Cluich fuaimean airson gnìomhan a' gheama mar "check", "call", "raise" - - + + Play lobby chat notifications Cluich brathan aig cabadaich an lobaidh - - + + Play network/internet game notifications like "player joined the game" Cluich brathan aig geama lìonraidh/eadar-lìn mar "ghabh cluicheadair sa gheama" - + Local Game Settings Roghainnean a' gheama ionadail - - + + Number of players: Àireamh dhe chluicheadairean: - - - - + + + + Start Cash: Airgead tòiseachaidh: - - - - - - - - + + + + + + + + $ £ - - - - + + + + First small blind: A' chiad small blind: - - - - + + + + Raise blinds: Tog ("raise") blinds: - - - - - - - - + + + + + + + + Every: Gach: - - - - + + + + hands làmh - - - - + + + + minutes mionaid - - - - + + + + Raise mode: Dòigh na togail ("raise"): - - - - + + + + Always double blinds Blinds dùbailte an-còmhnaidh - - - - + + + + Manual blinds order: Òrdugh nam blinds a làimh: - - - - + + + + Edit ... Deasaich ... - - + + Game Speed: Astar a' gheama: - - + + Pause between hands (press "start" button to go on) Stad eadar làmhan (briog air "tòisich" gus leantainn air adhart) - - + + Show game settings dialog on every new game Seall còmhradh airson roghainnean a' gheama le toiseach gach geama ùir - - + + Server Password: - + + + Allow spectators to watch the game + + + + OK Ceart ma-thà - + Network Game Settings Roghainnean a' gheama lìonraidh - - + + Maximum number of players: An àireamh as motha dhe chluicheadairean: - - + + Timeout for player action: Crìochan ùine airson gnìomhachd a' chluicheadair: - - + + Reset all settings to default ... Ath-shuidhich na h-uile roghainn dhan bhun-roghainn ... - - + + Note: You can not reset all settings to default during a running game! An aire: chan urrainn dhut na h-uile roghainn ath-shuidheachadh dhan bhun-roghainn nuair a bhios geama a' ruith! - - - - + + + + s diog - - + + Network Server Settings Roghainnean an fhrithealaiche lìonraidh - - - - + + + + Server Port: Port an fhrithealaiche: - - - - + + + + Use SCTP Cleachd SCTP - - - - + + + + Use IPv6 Cleachd IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Dè th' ann?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Dè th' ann?</a> - + Internet Game Settings Roghainnean a' gheama eadar-lìn - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4633,61 +4725,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: thèid </span><span style=" font-weight:600; font-style:italic;">Roghainnean a' gheama</span><span style=" font-style:italic;"> bunaiteach mar "An àireamh as motha dhe chluicheadairean", "Airgead tòiseachaidh" is "Small Blind" a chleachdadh </span><span style=" font-weight:600; font-style:italic;">bho Roghainnean a' gheama lìonraidh.</span></p></body></html> - - + + Server Address: Seòladh an fhrithealaiche: - - + + Use password for private game: Cleachd facal-faire airson geama phrìobhaideach: - - + + Computer Engine Einnsean coimpiutair - - + + Opponent 6: Co-fharpaisiche 6: - - + + Opponent 5: Co-fharpaisiche 5: - - + + Opponent 4: Co-fharpaisiche 4: - - + + Opponent 3: Co-fharpaisiche 3: - - + + Opponent 2: Co-fharpaisiche 2: - - + + Opponent 1: Co-fharpaisiche 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4698,111 +4790,111 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: gheibh thu an càileachd as fhearr aig an avatar le co-mheas deilbh mar </span><span style=" font-weight:600; font-style:italic;">leud=50, àirde=50.</span></p></body></html> - - + + Enable/Disable Logging Cuir logadh an comas/à comas - - + + Log File Directory: Pasgan aig an fhaidhle logaidh: - - + + Write log after every: Sgrìobh loga an dèidh gach: - - + + action (high frequent disc access) gnìomhachd (inntrigeadh dhan diosga gu tric) - - + + hand (medium disc access) làmh (inntrigeadh dhan diosga meadhanach) - - + + game (low disc access) geama (inntrigeadh dhan diosga ainneamh) - + Log Messages Logaich teachdaireachdan - + Player Nicks/Avatars Far-ainmean/avataran nan cluicheadairean - + Show right toolbox Seall am bogsa-inneal taobh deas - + Show left toolbox Seall am bogsa-inneal taobh clì - - + + Play blind raise notification Cluich brath air togail ("raise") a' blind - - + + Automatic Server Configuration URL URL fèin-rèiteachaidh an fhrithealaiche - - + + Serverlist Address: Seòladh aig liosta nam frithealaichean: - - + + Manual Server Configuration Rèiteachaidh an fhrithealaiche a làimh - + Human Player: Cluicheadair daonna: - + (This nick will also be used for the online game login) (Logaidh tu a-steach leis an fhar-ainm seo dha gheamannan air loidhne cuideachd) - + Note: Best avatar quality with image ratio like width=50, height=50. An aire: gheibh thu an càileachd as fhearr aig an avatar le co-mheas deilbh mar leud=50, àirde=50. - - + + Store log files for: Sàbhail faidhlichean logaidh fad: - - + + Day(s) Là(ithean) @@ -4831,62 +4923,62 @@ p, li { white-space: pre-wrap; } Far-ainmean/avataran - - + + Show cards chance monitor Seall monatair air seans nan cairtean - + Note: Best quality with image ratio like width=48, height=76. An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar leud=48, àirde=76. - - + + Avatar Server: Frithealaiche an avatar: - + Style Stoidhle - - + + Don't translate poker strings like check, call, raise from game table style Na eadar-theangaich sreangan poker mar "check", "call", "raise" o stoidhle aig bòrd a' gheama - - - - + + + + Add ... Cuir ris ... - - - - + + + + Remove Thoir air falbh - - - - + + + + Preview - Information: Ro-shealladh - Fiosrachadh: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4899,8 +4991,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Faigh stoidhlichean ùra a' bhùird gheama aig PokerTH ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4913,7 +5005,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Faigh stoidhlichean ùra airson pacannan chairt aig PokerTH ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4932,96 +5024,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar </span><span style=" font-weight:600; font-style:italic;">leud=48, àirde=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Dàil eadar làmhan: - - + + Server Frithealaiche - - + + Game Geama - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. An aire: Thèid roghainnean bunaiteach a' gheama mar "An àireamh as motha dhe chluicheadairean", "Airgead tòiseachaidh" is "Small Blind" a chleachdadh bho "Roghainnean a' gheama lìonraidh". - - + + Default game name: Ainm bunaiteach a' gheama: - - + + Default game type: Seòrsa bunaiteach a' gheama: - - + + Standard Àbhaisteach - - + + Registered players only Cluicheadairean a chlàraich a-mhàin - - + + Invited players only Cluicheadairean a fhuair cuireadh a-mhàin - - + + Ranking game Geama rangachaidh - - + + Show lobby chat Seall cabadaich an lobaidh - - + + Automatically leave the table after the game finished Fàg am bòrd gu fèin-obrachail nuair a thig crìoch air a' gheama - - + + Ignored Players Cluicheadairean air an liosta neo-shuime - - + + Player Cluicheadair - - + + Remove Player Thoir an cluicheadair air falbh - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5034,20 +5126,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cluicheadair daonna:<br /><span style=" font-style:italic;">(Logaidh tu a-steach leis an fhar-ainm seo dha gheamannan air loidhne cuideachd)</span></p></body></html> - - + + Opponent 7: Co-fharpaisiche 7: - - + + Opponent 8: Co-fharpaisiche 8: - - + + Opponent 9: Co-fharpaisiche 9: @@ -5055,65 +5147,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Mearachd leis na roghainnean - + The entered flipside picture doesn't exist. Please enter an valid picture! Chan eil an dealbh cùlaibh a chuir thu a-steach ann. Feuch an cuir thu a-steach dealbh dligheach! - - + + The log file directory doesn't exist. Please select an valid directory! Chan eil am pasgan airson an fhaidhle loga ann. Feuch an tagh thu pasgan dligheach! - + Language Changed Cànan air atharrachadh - + You have changed application language to %1. Please restart PokerTH to load new language! Dh'atharraich thu cànan an aplacaid gu %1. Feuch an ath-thòisich thu PokerTH gus an cànan ùr a luchdadh! - + Select your flipside picture Tagh an dealbh cùlaibh agad - + Images (*.png *.jpg *.gif) Dealbhan (*.png *.jpg *.gif) - + Open Directory Fosgail pasgan - - + + Blinds Error Mearachd le blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5122,7 +5214,7 @@ nas lugha na a' chiad small blind! Thèid luach a' chiad small blind seo a shuidheachadh air an luach ceadaichte as motha. - + The entered server list address is not a valid URL. Please enter a valid server list address! Chan eil an seòladh aig liosta nam frithealaichean a chuir thu a-steach na URL dligheach. @@ -5274,152 +5366,152 @@ Feuch an cuir thu a-steach seòladh aig liosta nam frithealaichean dligheach! - + The opponent names are not unique. Please choose different names for each Opponent! Chan eil ainm fa leth aig gach co-fharpaisiche. Feuch an tagh thu ainm eadar-dhealaichte airson gach co-fharpaisiche! - + Settings Information Fiosrachadh nan roghainnean - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Ah'dhatharraich thu pasgan am faidhle loga. Feuch an ath-thòisich thu PokerTH gus am pasgan ùr airson nam faidhlichean loga a chleachdadh! - - + + Maintainer Name Ainm an neach-glèidhidh - - + + Maintainer EMail Post-d an neach-glèidhidh - - + + Create Date Ceann-latha a' chruthachaidh - + Windows Behaviour Giùlan Windows - + scaleable gabhaidh e sgèileadh - + fixed suidhichte - + Minimum Size Meud as lugha - + Maximum Size Meud as motha - + Fixed Size Meud suidhichte - + State Staid - + Please select your game table style Tagh stoidhle aig bòrd a' gheama - + PokerTH game table styles (*.xml) Stoidhlean bòrd a' gheama aig PokerTH (*.xml) - + Game Table Style Error Mearachd le stoidhle bòrd a' gheama - + Selected game table style file is already in the list. Please select another one to add! Tha an stoidhle bùird a thagh thu air an liosta mu thràth. Feuch an tagh thu tè eile airson cur ris! - + Game Table Style File Error Mearachd le faidhle airson stoidhle bòrd a' gheama - + Could not load game table style file correctly. Style will not be placed into list! Cha b' urrainn dhuinn am faidhle airson stoidhle bòrd a' gheama a luchdadh mar bu chòir. Cha tèid an stoidhle a cur ris an liosta! - + Please select your card deck style Tagh an stoidhle airson a' phaca cairt agad - + PokerTH card deck styles (*.xml) Stoidhle paca chairt aig PokerTH (*.xml) - + Card Deck Style Error Mearachd le stoidhle airson paca chairt - + Selected card deck style file is already in the list. Please select another one to add! Tha am faidhle airson stoidhle paca chairt air an liosta mu thràth. Feuch an tagh thu fear eile airson cur ris! - + Card Deck Style File Error Mearachd le faidhle airson stoidhle paca chairt - + Could not load card deck style file correctly. Style will not be placed into list! Cha b' urrainn dhuinn am faidhle airson stoidhle paca chairt a luchdadh mar bu chòir. Cha tèid an stoidhle a chur ris an liosta! - + PokerTH - Settings PokerTH - Roghainnean - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? An aire: sguabaidh seo às dha na roghainnean pearsanta agad uile is dùinidh e PokerTH! @@ -5485,12 +5577,12 @@ A bheil thu cinnteach gu bheil thu airson roghainnean an fhactaraidh ath-shuidhe startNetworkGameDialogImpl - + Server Error Mearachd an fhrithealaiche - + You should not kick yourself from this game! Cha bu chòir dhut a' bhròg a thoirt dhut fhèin! @@ -5649,106 +5741,106 @@ A bheil thu cinnteach gu bheil thu airson roghainnean an fhactaraidh ath-shuidhe startWindowImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Mearachd lìonraidh - + Server address was not set. Cha deach seòladh an fhrithealaiche a shuidheachadh. - + An invalid port was set (ports 0-1023 are not allowed). Chaidh post mì-dhligheach a shuidheachadh (chan eil na puirt 0-1023 ceadaichte). - + Could not create a socket for TCP communication. Cha b' urrainn dhuinn socaid airson conaltradh TCP a chruthachadh. - + Could not set the IP address. Cha b' urrainn dhuinn an seòladh IP a shuidheachadh. - + Could not set the port for this type of address. Cha b' urrainn dhuinn am port airson an t-seòrsa seo dhe sheòladh a shuidheachadh. - + The server name could not be resolved. Cha b' urrainn dhuinn ainm an fhrithealaiche fhuasgladh. - + Bind failed - please choose a different port. Dh'fhàillig leis a' cheangal - feuch an tagh thu port eile. - + Internal network error: "listen" failed. Mearachd lìonraidh taobh a-staigh: dh'fhàillig leis an "listen". - + Server execution was terminated. Chaidh giullachd an fhrithealaiche a chrìochnachadh. - + Could not connect to the server. Cha b' urrainn dhuinn ceangal a dhèanamh ris an fhrithealaiche. - + Connection timed out. Please check the server address. @@ -5759,350 +5851,350 @@ Feuch an dearbhaich thu seòladh an fhrithealaiche. Ma tha am frithealaiche taobh thall rùtair NAT, dèan cinnteach gu bheil port forwarding air a chur air taobh an fhrithealaiche. - + Internal network error: "select" failed. Mearachd lìonraidh taobh a-staigh: dh'fhàillig leis an "select". - + Internal network error: "send" failed. Mearachd lìonraidh taobh a-staigh: dh'fhàillig leis an "send". - + Internal network error: Duplicate TCP connection. Mearachd lìonraidh taobh a-staigh: Ceangal TCP dùblaichte. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Fhuaras pacaid lìonraidh mì-dhligheach. Dèan cinnteach gun cleachd na h-uile cluicheadair an aon tionndadh aig PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Mearachd staide taobh a-staigh. Dèan cinnteach gun cleachd na h-uile cluicheadair an aon tionndadh aig PokerTH. - + Invalid server list URL. Please correct the address in the settings. URL liosta nam frithealaichean mì-dhligheach. Feuch an ceartaich thu an seòladh sna roghainnean. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. Tha dàta mì-dhligheach air liosta nam frithealaichean eadar-lìn aig PokerTH. Ma chleachdas tu liosta nam frithealaichean gnàthaichte, dèan cinnteach gu bheil a fòrmat mar bu chòir. - + Could not unzip the PokerTH internet server list. Cha b' urrainn dhuinn liosta nam frithealaichean eadar-lìn aig PokerTH dì-dhùmhlachadh. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Cha b' urrainn dhuinn liosta nam frithealaichean eadar-lìn aig PokerTH a luchdadh a-nuas. Dèan cinnteach gu bheil thu ceangailte ris an eadar-lìn gu dìreach. - + Could not open the target file when downloading the server list. Cha b' urrainn dhuinn am faidhle-uidhe fhosgladh nuair a luchdaich sinn a-nuas liosta nam frithealaichean. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Cha chuir am frithealaiche PokerTH taic dhan tionndadh seo dhen gheama.<br>Feuch an tadhail thu air <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> is an luchdaich thu an tionndadh as ùire a-nuas. - + Sorry, this server is already full. Tha sinn duilich, ach tha am frithealaiche seo làn mar-thà. - + Invalid login. Please check your username and password. Logadh a-steach mì-dhligheach. Feuch an dearbhaich thu an t-ainm cleachdaiche is am facal-faire agad. - + Your account is blocked indefinitely. Chaidh an cunntas agad a bhacadh gun chrìch. - + You cannot login at this time. Please try again in a few seconds. Chan urrainn dhut logadh a-steach an-dràsta. am feuch thu ris a-rithist an ceann greis? - + You cannot join this game, because another player in that game has your network address. Chan urrainn dhut gabhail sa gheama seo oir tha an seòladh lìonraidh agad aig cluicheadair eile sa gheama seo. - + Your connection to the server is very slow, the game had to start without you. Cha an ceangal agad dhan fhrithealaiche glè shlaodach, bha aig a' gheama tòiseachadh às d' aonais. - + This game is of type invite-only. You cannot join this game without being invited. Tha an geama seo dhen t-seòrsa le cuireadh a-mhàin. Chan urrainn dhut gabhail sa gheama seo gun chuireadh fhaighinn. - + Invalid password when joining the game. Please reenter the password and try again. Facal-faire mì-dhligheach le gabhail sa gheama. Cuir am facal-faire a-steach turas eile is feuch ris a-rithist. - + The avatar report was accepted by the server. Thank you. Ghabh am frithealaiche ris an aithris air avatar. Mòran taing. - + This avatar was already reported by another player. Chaidh an t-avatar seo aithris le cluicheadair eile mu thràth. - + An error occurred while reporting the avatar. Thachair mearachd le aithris air an avatar. - + The game name report was accepted by the server. Thank you. Ghabh am frithealaiche ris an aithris air ainm a' gheama. Mòran taing. - + This game name was already reported by another player. Chaidh ainm a' gheama seo aithris le cluicheadair eile mu thràth. - + An error occurred while reporting the game name. Thachair mearachd le aithris air ainm a' gheama. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. - + The password is too long. Please choose another one. Tha am facal-faire ro fhada. Feuch an tagh thu fear eile. - + Rejoin possible! Faodaidh tu gabhail ann a-rithist! - + There is an existing session with a previous game. Tha seisean ann le geama a chluich thu roimhe. - + Do you want to rejoin this game? A bheil thu airson gabhail sa gheama seo a-rithist? - - + + Start Network Game Tòisich air geama lìonraidh - + The connection to the server was lost. Chaidh an ceangal dhan fhrithealaiche air chall. - + The game name is either too short or too long. Please choose another one. Tha ainm a' gheama ro ghoirid no ro fhada. Feuch an tagh thu fear eile. - + The game could not be found. Cha deach an geama a lorg. - + The chat text is invalid. Tha teacsa na cabadaich mì-dhligheach. - + The server referred to an unknown player. Aborting. Rinn am frithealaiche iomradh air cluicheadair neo-aithnichte. A' sgur dheth. - + Internal error: The current player could not be found. Mearachd taobh a-staigh: Cha deach an cluicheadair làithreach a lorg. - + Internal error: The current player is not active. Mearachd taobh a-staigh: Chan eil an cluicheadair làithreach gnìomhach. - + You were kicked from the server. Fhuair thu a' bhròg on fhrithealaiche. - + You were temporarily banned from the server. Chaidh do thoirmeasg on fhrithealaiche gu sealach. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Dh'fhalbh an ùine air a' cheangal agad dhan fhrithealaiche le dìth gnìomhachd. Tha thu làn di-beathte ceangal ris a-rithist! - + The client player count is invalid. Tha àireamh nan cluicheadairean cliaint mì-dhligheach. - + Too many manual blinds were set. Please reconfigure the manual blinds. Chaidh cus blinds a shuidheachadh. Feuch an ath-rèitich thu na blinds a làimh. - + An invalid avatar file was configured. Please choose a different avatar. Chaidh faidhle avatar mì-dhligheach a shuidheachadh. Feuch an tagh thu avatar eile. - + The selected avatar file is too large. Please choose a different avatar. Chaidh faidhle avatar a tha ro mhòr a thaghadh. Feuch an tagh thu avatar eile. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Thachair mearachd avatar taobh a-staigh. An aithris thu seo dha rianaire ann an cabadaich an lobaidh? - + Could not start game: Synchronization failed. Cha b' urrainn dhuinn an geama a thòiseachadh: Dh'fhàillig leis an t-sioncronachadh. - + The server is down for maintenance. Please try again later. Tha am frithealaiche far loidhne airson obrach-glèidhidh. Am feuch thu ris a-rithist an ceann greis? - + An internal error occured. Thachair mearachd taobh a-staigh. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Brath lìonraidh - + You were kicked from the game. Fhuair thu a' bhròg on gheama. - + Sorry, this game is already full. Tha sinn duilich, ach tha an geama seo làn mar-thà. - + Unable to join - the server has already started the game. Chan urrainn dhut gabhail ann - tha am frithealaiche air an geama a thòiseachadh. - + Your admin state timed out due to inactivity. Feel free to create a new game! Dh'fhalbh an ùine air an staid rianaire agad le dìth gnìomhachd. Tha thu làn di-beathte geama ùr a chruthachadh! - + You cannot join this type of game as guest. Chan urrainn dhut gabhail san seòrsa dhe gheama seo mar aoigh. - + The settings are invalid for this type of game. Tha na roghainnean mì-dhligheach airson an seòrsa dhe gheama seo. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Tha foillseachadh ùr aig PokerTH ri làimh.<br>Feuch an tadhail thu air <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> is an luchdaich thu an tionndadh as ùire a-nuas. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Tha am foillseachadh beta seo aig PokerTH ro shean.<br>Feuch an tadhail thu air <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> is an luchdaich thu an tionndadh as ùire a-nuas. - - + + Server Message Brath an fhrithealaiche diff --git a/ts/pokerth_gl.ts b/ts/pokerth_gl.ts index 4b37fbe5..ce992580 100644 --- a/ts/pokerth_gl.ts +++ b/ts/pokerth_gl.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -194,22 +193,22 @@ Considere poñerse en contacto co autor do estilo de taboleiro a través do ende Erro do estilo de taboleiro — O estilo está obsoleto - + Everything OK! Está todo correcto. - + Some pictures are missing, please contact style maintainer for this issue. Faltan algunhas imaxes. Considere poñerse en contacto co mantedor do estilo para informalo do problema. - + Some style fields are missing, please contact style maintainer for this issue. Faltan algúns campos do estilo. Considere poñerse en contacto co mantedor do estilo para informalo do problema. - + This style is outdated, please contact style maintainer for this issue. O estilo está obsoleto. Considere poñerse en contacto co mantedor do estilo para informalo do problema. @@ -287,52 +286,52 @@ Volva probar, desta vez cun estilo de taboleiro. Analizar o ficheiro de historial… - + PokerTH - Delete log files PokerTH — Eliminar os ficheiros de historial - + Do you really want to delete the selected log files? Está seguro de que quere eliminar os ficheiros de historial seleccionados? - + Remove log file Eliminar o ficheiro de historial - + PokerTH cannot remove this log file, please verify that you have write access to this file! Non é posíbel eliminar o ficheiro de historial seleccionado. Comprobe que ten permisos de escritura no ficheiro. - + Export PokerTH log file to HTML Exportar o ficheiro de historial de PokerTH como HTML - + PokerTH HTML log (*.html) Historial de PokerTH en HTML (*.html) - + Export PokerTH log file to plain text Exportar o historial de PokerTH como texto simple - + PokerTH plain text log (*.txt) Historial de PokerTH en texto simple (*.txt) - + Save PokerTH log file Gardar o ficheiro de historial de PokerTH - + PokerTH SQL log (*.pdb) Historial de PokerTH en SQL (*.pdb) @@ -380,14 +379,14 @@ Uploading log files may fail if you are using an http proxy. O envío de ficheiros de historial pode non funcionar se está a empregar un proxy HTTP. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. O servidor web non puido procesar o ficheiro de historial. Asegúrese de que está a enviar un ficheiro de historial de PokerTH válido. - + Failure reason: Causa do problema: @@ -416,18 +415,18 @@ Asegúrese de que está a enviar un ficheiro de historial de PokerTH válido.Informar de que a imaxe non é axeitada - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Non volverá recibir mensaxes de conversa ou invitacións a partidas deste xogador.<br>Está seguro de que quere poñer o xogador <b>%1</b> na súa lista de xogadores ignorados? - - + + PokerTH - Question PokerTH — Pregunta - + Are you sure you want to report the avatar of "%1" as inappropriate? Está seguro de que quere informar de que a imaxe do usuario «%1» non é axeitada? @@ -456,25 +455,24 @@ Asegúrese de que está a enviar un ficheiro de historial de PokerTH válido. aboutPokerth - - + + About Información - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project Proxecto - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -483,7 +481,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -493,45 +491,71 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Adrián Chaves Fernández (Gallaecio) &lt;adriyetichaves@gmail.com&gt;</span></p></td></tr></table></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + Translation Tradución - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + Thanks to Agradecementos - - + + License Licenza - + + + Third party libs + + + + Close Pechar - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -544,7 +568,7 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -803,12 +827,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Orde manual das apostas obrigatorias - + You cannot set more than 30 manual blinds. Non pode definir máis de 30 apostas obrigatorias de xeito manual. @@ -947,7 +971,7 @@ Please choose another one! - + Default game name: Nome: @@ -982,75 +1006,81 @@ Please choose another one! Partida de puntuación - - + + Maximum number of players: Límite de xogadores: - - + + Start Cash: Cartos iniciais: - - + + $ - + Blinds Apostas obrigatorias - + Use saved blinds settings Empregar a configuración local. - + Change blinds settings ... Cambiar a configuración… - + Timeout for player action: Límite de tempo para cada xogador: - - + + s s - - + + Password: Contrasinal: - + Delay between hands: Descanso entre mans: - - + + + Allow spectators to watch the game + + + + + Create Game Crear a partida - + Cancel Cancelar @@ -1163,56 +1193,68 @@ Please choose another one! Sala de espera para partidas en internet - - + + Game Info Información da partida - - + + Game type: Tipo: - - + + Connected Players Xogadores conectados - - + + search for player ... Buscar un xogador… - - + + 5 - Show open & non-full & ranking games 5. Partidas abertas de puntiación que acepten máis xogadores - - + + + Players + Xogadores + + + + + Spectators + + + + + Start Cash: Cartos iniciais: - - + + First small blind: Aposta obrigatoria inicial pequena: - - + + Blinds raise interval: Intervalo de aumento das apostas obrigatorias: - - + + Blinds raise mode: Tipo de aumento: @@ -1222,7 +1264,7 @@ Please choose another one! Partidas - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1235,110 +1277,108 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - + + Fill up with computer opponents Completar con rivais artificiais. - - + + &Start Game &Comezar - - + + &Kick Player &Expulsar un xogador - - + + Sort alphabetically Orde alfabética - - + + Sort by country Ordear por país - - + + Display idle players Xogadores inactivos - - + + Manual blinds list: Lista manual de apostas obrigatorias: - - + + &Leave Game &Saír da partida - - Join &any game - Unirse a unha partida cal&quera + Unirse a unha partida cal&quera - - + + &Create Game Crear unha &partida - - + + &Join Game &Unirse á partida - - + + 0 - No game list filter 0. Todas as partidas - - + + 1 - Show open games 1. Partidas abertas - - + + 2 - Show open & non-full games 2. Partidas abertas que acepten máis xogadores - - + + 3 - Show open & non-full & non-private games 3. Partidas abertas e públicas que acepten máis xogadores - - + + 4 - Show open & non-full & private games 4. Partidas abertas e privadas que acepten máis xogadores - - + + Timing: Tempos: - - + + Lobby-Chat Conversa @@ -1351,213 +1391,228 @@ p, li { white-space: pre-wrap; } Comezando a partida… - + Joining a private Game Uníndose a unha partida privada… - + You are about to join a private game. Please enter the password! Esta partida é privada, polo que debe introducir o contrasinal. - + open Aberta - - - - + + + + Game Info Información da partida - - - + + Spectate + + + + + + Game Partida - - - + + + Players Xogadores - - - + + + State Estado - - - + + + P Privada. P - - - + + + Available Players Xogadores dispoñíbeis - + Invite player Convidar - + Ignore player Ignorar - + Player infos ... Información… - + Report inappropriate game name Informar de que o nome non é axeitado - - - + + + Standard Estándar - - - + + + Registered players only Para xogadores rexistrados - - - + + + Invited players only Acceso só con invitación - - - + + + Ranking game Partida de puntuación - Connected players - max. %1 - Xogadores conectados (límite: %1) + Xogadores conectados (límite: %1) - - - + + + T Tipo T - - - + + + sec (action) segundos por quenda - - - + + + sec (hand delay) segundos entre mans - - Connected players - Max. %1 - Xogadores conectados (límite: %1) + Xogadores conectados (límite: %1) - + running En marcha - - + + running games: %1 Partidas en marcha: %1 - - + + open games: %1 Partidas abertas: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 Convidar a %1 - + Ignore %1 Ignorar a %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 convidou a %1 a unirse a %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 rexeitou a invitación para %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 non pode unirse a %2 porque está ocupado.</span> - - + + The game will start in<br><b>%1</b> seconds. A partida comeza en <br><b>%1</b> segundos. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Uniuse a unha partida privada, á que só se pode acceder previa invitación. Para convidar a outros xogadores, prema co botón secundario a súa entrada na lista de xogadores dispoñíbeis, e use o menú de contexto. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? <b>%2</b> convidouno á partida <b>%1</b>.<br>Quere unirse? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Non volverá recibir mensaxes de conversa ou invitacións a partidas deste usuario.<br>Está seguro de que quere poñer a <b>%1</b> na súa lista de xogadores ignorados? - - + + connected players: %1 Xogadores conectados: %1 @@ -1572,1344 +1627,1342 @@ Para convidar a outros xogadores, prema co botón secundario a súa entrada na l Ver as puntuacións en internet - - - + + + Time Tempos - - + + Show player stats Estatísticas - - + + Admin action ... Acción de administrador… - + Total kickban Expulsión total - + Close game Pechar a partida - - Connected players - Xogadores conectados + Xogadores conectados - + hands mans - + minutes minutos - + double blinds dobre - + manual blinds order serie predefinida - + Server Error Erro do servidor - + You should not kick yourself from this game! Non debería expulsarse a si mesmo da partida! - + search for player ... Buscar un xogador… - + Chat is only available to registered players. Só os xogadores rexistrados poden participar a conversa. - + Invite player ... Convidar… - + Ignore player ... Ignorar… - + %1 is playing in "%2". %1 está a xogar en «%2». - + %1 is not playing at the moment. %1 non está a xogar. - - + + PokerTH - Info Message PokerTH — Mensaxe de información - - - - + + + + PokerTH - Question PokerTH — Pregunta - + Afghanistan Afganistán - + ALand Islands Åland - + Albania Albania - + Algeria Alxeria - + American Samoa Samoa Americana - + Andorra Andorra - + Angola Angola - + Anguilla Anguila - + Antarctica Antártida - + Antigua And Barbuda Antiga e Barbuda - + Argentina Arxentina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Acerbaixán - + Bahamas Bahamas - + Bahrain Bahrein - + Bangladesh Bangladesh - + Barbados Barbados - + Belarus Bielorrusia - + Belgium Bélxica - + Belize Belice - + Benin Benín - + Bermuda Bermuda - + Bhutan Bután - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia e Hercegovina - + Botswana Botsuana - + Bouvet Island Illa Bouvet - + Brazil Brasil - + British Indian Ocean Territory Territorio Británico do Océano Índico - + Brunei Darussalam Brunei - + Bulgaria Bulgaria - + Burkina Faso Burquina Faso - + Burundi Burundi - + Cambodia Camboxa - + Cameroon Camerún - + Canada Canadá - + Cape Verde Cabo Verde - + Cayman Islands Illas Caimán - + Central African Republic República Centroafricana - + Chad Chad - + Chile Chile - + China China - + Christmas Island Illa de Nadal - + Cocos (Keeling) Islands Illas Cocos (Keeling) - + Colombia Colombia - + Comoros Comores - + Congo Congo - + Congo, The Democratic Republic Of The República democrática do Congo - + Cook Islands Illas Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Costa do Marfil - + Croatia Croacia - + Cuba Cuba - + Cyprus Chipre - + Czech Republic República Checa - + Denmark Dinamarca - + Djibouti Xibutí - + Dominica Dominica - + Dominican Republic República Dominicana - + Ecuador Ecuador - + Egypt Exipto - + El Salvador O Salvador - + Equatorial Guinea Guinea Ecuatorial - + Eritrea Eritrea - + Estonia Estonia - + Ethiopia Etiopía - + Falkland Islands (Malvinas) Illas Malvinas (Falkland) - + Faroe Islands Illas Feroe - + Fiji Fidxi - + Finland Finlandia - + France Francia - + French Guiana Güiana Francesa - + French Polynesia Polinesia Francesa - + French Southern Territories Terras Austrais e Antárticas Francesas - + Gabon Gabón - + Gambia Gambia - + Georgia Xeorxia - + Germany Alemaña - + Ghana Gana - + Gibraltar Xibraltar - + Greece Grecia - + Greenland Grenlandia - + Grenada Granada - + Guadeloupe Guadalupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bisau - + Guyana Güiana - + Haiti Haití - + Heard Island And Mcdonald Islands Illa Heard e Illas McDonald - + Holy See (Vatican City State) Cidade do Vaticano - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Hungría - + Iceland Islandia - + India India - + Indonesia Indonesia - + Iran, Islamic Republic Of Irán - + Iraq Iraq - + Ireland Irlanda - + Isle Of Man Illa de Man - + Israel Israel - + Italy Italia - + Jamaica Xamaica - + Japan Xapón - + Jersey Xersei - + Jordan Xordania - + Kazakhstan Casaquistán - + Kenya Quenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Corea do Norte - + Korea, Republic Of Corea do Sur - + Kuwait Kuwait - + Kyrgyzstan Quirguicistán - + Lao People'S Democratic Republic Laos - + Latvia Letonia - + Lebanon Líbano - + Lesotho Lesoto - + Liberia Liberia - + Libyan Arab Jamahiriya Libia - + Liechtenstein Liechtenstein - + Lithuania Lituania - + Luxembourg Luxemburgo - + Macao Macau - + Macedonia, The Former Yugoslav Republic Of Macedonia - + Madagascar Madagascar - + Malawi Malaui - + Malaysia Malaisia - + Maldives Maldivas - + Mali Malí - + Malta Malta - + Marshall Islands Illas Marshall - + Martinique Martinica - + Mauritania Mauritania - + Mauritius Mauricio - + Mayotte Mayotte - + Mexico México - + Micronesia, Federated States Of Micronesia - + Moldova, Republic Of Moldavia - + Monaco Mónaco - + Mongolia Mongolia - + Montserrat Montserrat - + Morocco Marrocos - + Mozambique Mozambique - + Myanmar Birmania - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Países Baixos - + Netherlands Antilles Antillas Neerlandesas - + New Caledonia Nova Caledonia - + New Zealand Nova Zelandia - + Nicaragua Nicaragua - + Niger Níxer - + Nigeria Nixeria - + Niue Niue - + Norfolk Island Illa Norfolk - + Northern Mariana Islands Marianas do Norte - + Norway Noruega - + Oman Omán - + Pakistan Paquistán - + Palau Palau - + Palestinian Territory, Occupied Territorios palestinos ocupados - + Panama Panamá - + Papua New Guinea Papúa Nova Guinea - + Paraguay Paraguai - + Peru Perú - + Philippines Filipinas - + Pitcairn Pitcairn - + Poland Polonia - + Portugal Portugal - + Puerto Rico Porto Rico - + Qatar Qatar - + Reunion Reunión - + Romania Romanía - + Russian Federation Rusia - + Rwanda Ruanda - + Saint Helena Santa Helena - + Saint Kitts And Nevis Saint Kitts e Nevis - + Saint Lucia Santa Lucía - + Saint Pierre And Miquelon San Pedro e Miguelón - + Saint Vincent And The Grenadines San Vicente e Granadinas - + Samoa Samoa - + San Marino San Mariño - + Sao Tome And Principe San Tomé e Príncipe - + Saudi Arabia Arabia Saudí - + Senegal Senegal - + Serbia And Montenegro Serbia e Montenegro - + Seychelles Seixeles - + Sierra Leone Serra Leoa - + Singapore Singapur - + Slovakia Eslovaquia - + Slovenia Eslovenia - + Solomon Islands Illas Salomón - + Somalia Somalia - + South Africa Sudáfrica - + South Georgia And The South Sandwich Islands Illas Xeorxias do Sur e Sandwich do Sur - + Spain España - + Sri Lanka Sri Lanka - + Sudan Sudán - + Suriname Suriname - + Svalbard And Jan Mayen Svalbard e Jan Mayen - + Swaziland Suacilandia - + Sweden Suecia - + Switzerland Suíza - + Syrian Arab Republic Siria - + Taiwan, Province Of China Taiwán - + Tajikistan Taxiquistán - + Tanzania, United Republic Of Tanzania - + Thailand Tailandia - + Timor-Leste Timor-Leste - + Togo Togo - + Tokelau Toquelau - + Tonga Tonga - + Trinidad And Tobago Trindade e Tobago - + Tunisia Tunisia - + Turkey Turquía - + Turkmenistan Turcomenistán - + Turks And Caicos Islands Turks e Caicos - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ucraína - + United Arab Emirates Emiratos Árabes Unidos - + United Kingdom Reino Unido - + United States Estados Unidos de América - + United States Minor Outlying Islands Illas ultramariñas dos Estados Unidos de América - + Uruguay Uruguai - + Uzbekistan Usbequistán - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Vietnam - + Virgin Islands, British Illas Virxes Británicas - + Virgin Islands, U.S. Illas Virxes Estadounidenses - + Wallis And Futuna Wallis-e-Futuna - + Western Sahara Sáhara Occidental - + Yemen Iemen - + Zambia Zambia - + Zimbabwe Cimbabue - + Are you sure you want to report the game name: "%1" as inappropriate? Está seguro de que quere informar de que o nome da partida «%1» non é axeitado? - + Are you sure you want to close the game: "%1"? Estás seguro de que queres pechar a partida: «%1»? - + Are you sure you want to total kickban the player: "%1"? Estás seguro de que queres expulsar completamente o xogador «%1»? @@ -2922,273 +2975,273 @@ Para convidar a outros xogadores, prema co botón secundario a súa entrada na l PokerTH 0.6 (beta) — O motor libre de Texas Hold’em - + Hands Mans - + Chat Conversa - + Save Gardar - + Log Historial - + Away Ausencia - + Manual Action (default) Acción manual (predeterminado) - + Auto-Check / Auto-Fold Ver ou retirarse - + Auto-Check / Auto-Call-Any Ver ou ir - + Speed: Velocidade: - - + + Start Local Game ... Iniciar unha partida local… - - + + Ctrl+N Ctrl+N - - + + Quit Saír - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... Sobre PokerTH… - - + + Settings ... Configuración… - - + + Create Network Game ... Crear unha partida de rede… - - + + Ctrl+O Ctrl+O - - + + Join Network Game ... Unirse a unha partida de rede… - - + + Ctrl+J Ctrl+J - - - + + + Fullscreen Pantalla completa - - + + Ctrl+F Ctrl+F - - + + Show/Hide Chat Window Xanela de conversa - - + + Ctrl+T Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window Xanela das mans - - + + Ctrl+H Ctrl+H - - + + Show/Hide Log Window Xanela do historial - - + + Ctrl+L Ctrl+L - - + + Internet Game ... Partida por internet… - - + + Ctrl+I Ctrl+I - - + + Show/Hide Away Window Xanela de ausencia - - + + Ctrl+A Ctrl+A - + Kick Expulsar - + Vote Timeout: Tempo límite da votación: - + Yes Si - + No Non - + Player info Información do xogador - + Chance Probabilidades - + Configure PokerTH ... Configurar PokerTH… - - + + Close Pechar - - + + Ctrl+X Ctrl+X - + Vote started by: Iniciador da votación: - - + + Show/Hide Chance Window Xanela de probabilidades - - + + Ctrl+C Ctrl+C - + &View &Vista - + &Settings &Configuración - + Shortcut: <Shift> Atallo: <Shift> - + Settings Configuración - + Configure PokerTH Configurar PokerTH @@ -3196,141 +3249,146 @@ Para convidar a outros xogadores, prema co botón secundario a súa entrada na l gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Deter - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 — O motor libre de Texas Hold’em - - - - - - - - + + + + + + + + Start Comezar - - - - - + + + + + Lobby Sala de espera - - + + Chat Conversa - + Closing PokerTH during network game Pechar PokerTH durante unha partida de rede - + You are the hosting server. Do you want to close PokerTH anyway? A súa máquina está a aloxar a partida de rede. Está seguro de que quere pechar PokerTH? - + Really want to exit? Está seguro de que quere saír? - + PokerTH - Close Table? PokerTH — Pechar o taboleiro - + PokerTH - Internet Game Message PokerTH — Mensaxe dunha partida por internet - + Attention! Do you really want to leave the current game and go back to the lobby? Atención: está seguro de que quere saír da partida actual e volver á sala de espera? - - + + Chat is only available to registered players. Só os xogadores rexistrados poden participar na conversa. - - + + Spectators + + + + + Chance Probabilidade - - + + Kick Expulsar - - + + Do you want to kick <b>%1</b><br>from this game? Está seguro de que quere expulsar<br>a<b>%1</b>da partida? - - - - + + + + <b>%1</b> secs left Restan <b>%1</b> segundos. - + vote voto - + votes votos - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Hai <b>%2</b> %3 contra o xogador <b>%1</b>.<br>Necesítanse <b>%4</b> votos para expulsalo. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Hai <b>%1</b> %2 contra vostede.<br>Faltan <b>%3</b> votos para que o expulsen. @@ -3529,56 +3587,66 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Erro ao cargar o ficheiro do perfil de servidor - - - - Could not load server-profiles-file: - Non foi posíbel cargar o ficheiro do perfil de servidor: + Non foi posíbel cargar o ficheiro do perfil de servidor: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error Erro ao gardar o perfil de servidor - + A profile with the name: %1 already exists. Would you like to overwrite ? Xa hai un perfil chamado «%1». Quere substituílo? - + Read Server-Profile List Error Erro ao lero ficheiro do perfil de servidor - + Could not read server-profiles list Non foi posíbel ler a lista de perfís de servidor. - - + + Save Server-Profile-File Error Erro ao gardar o ficheiro do perfil de servidor - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Non foi posíbel gardar o ficheiro do perfil de servidor: + Non foi posíbel gardar o ficheiro do perfil de servidor: @@ -3643,12 +3711,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order Orde manual das apostas obrigatorias - + You cannot set more than 30 manual blinds. Non pode definir máis de 30 apostas obrigatorias de xeito manual. @@ -3713,7 +3781,7 @@ Would you like to overwrite ? - + Use saved blinds settings Empregar a configuración local. @@ -3724,13 +3792,13 @@ Would you like to overwrite ? - + Change blinds settings ... Cambiar a configuración… - + Game Speed: Velocidade da partida: @@ -3771,36 +3839,36 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Erro co ficheiro de imaxe de usuario - + Please select an avatar from the list! Escolla unha imaxe da lista. - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! O tamaño do ficheiro seleccionado é demasiado grande; non pode superar os 30 kiB. Escolla un ficheiro máis pequeno. - + The entered avatar picture doesn't exist. Please enter an valid picture! A imaxe seleccionada non existe. Escolla unha existente. - + Select external avatar picture Escoller un ficheiro de imaxe - + Images (*.png *.jpg *.gif) Imaxes (*.png *.jpg *.gif) @@ -3821,405 +3889,429 @@ Please enter an valid picture! Interface - - + + Language: Idioma: - - + + Show fade-out animation for non-winning cards Amosar unha animación de fundido para os naipes perdedores. - - + + Show flip-card animation Amosar unha animación de darlle a volta aos naipes. - - + + Show buttons for small blind and big blind Amosar fichas para as apostas obrigatorias (grande e pequena). - - + + Show own cards only on mouse click Amosar os naipes propios só ao premelos co botón principal. - + Reverse order of F-Keys (F1 - F4) Inverter a orde das teclas de función (F1-F4). - - + + Network / Internet Game Partida de rede ou por internet - - + + Switch keyboard focus to bet-input-field if it's your turn Enfocar o campo da cantidade para apostar na súa quenda. - + Sound Son - + Factory Settings Configuración predeterminada - - + + + Common + + + + + Disable splashscreen on startup Desactivar a imaxe de inicio. - - + + Show country flag in the corner of avatar Amosar a bandeira do país ou rexión na esquina da imaxe de usuario. - - + + Activate the "accidentally call after big raise" blocker Activar a protección para evitar «ir» tras unha gran suba. - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table Taboleiro - - - - + + + + Description Descrición - - - - + + + + Maintainer Mantedor - - - + + + State Estado - - + + Card Deck Baralla - - + + Card Back Reverso - - + + Use card back from card style Usar o reverso do estilo de baralla. - - + + Use custom card back picture: Usar unha imaxe personalizada para o reverso: - - + + Play sound effects Reproducir efectos de son. - - + + Sound Volume: Volume do son: - - + + 10 10 - - + + Sound Categories Categorías de son - - + + Play game actions sounds like "check", "call", "raise" Sons para accións, como «ver», «ir» ou «subir». - - + + Play lobby chat notifications Sons para notificacións da conversa da sala de espera. - - + + Play network/internet game notifications like "player joined the game" Sons para notificacións de rede. Por exemplo: «uniuse un xogador». - - + + Server Password: Contrasinal do servidor: - + + + Allow spectators to watch the game + + + + OK Aceptar - + Local Game Settings Configuración das partidas locais - - + + Number of players: Límite de xogadores: - - - - + + + + Start Cash: Cartos iniciais: - - - - - - - - + + + + + + + + $ - - - - + + + + First small blind: Aposta obrigatoria inicial pequena: - - - - + + + + Raise blinds: Aumento das apostas obrigatorias - - - - - - - - + + + + + + + + Every: Cada: - - - - + + + + hands mans. - - - - + + + + minutes minutos. - - - - + + + + Raise mode: Tipo de aumento - - - - + + + + Always double blinds Duplicar. - - - - + + + + Manual blinds order: Empregar unha serie: - - - - + + + + Edit ... Editar… - - + + Game Speed: Velocidade da partida: - - + + Pause between hands (press "start" button to go on) Pausa entre mans (premer «Comezar» para continuar). - - + + Show game settings dialog on every new game Amosar o diálogo de configuración para todas as partidas novas. - + Network Game Settings Configuración das partidas de rede - - + + Maximum number of players: Límite de xogadores: - - + + Timeout for player action: Límite de tempo para cada xogador: - - + + Reset all settings to default ... Restaurar a configuración predeterminada - - + + Note: You can not reset all settings to default during a running game! Nota: non pode restaurar a configuración predeterminada durante unha partida. - - - - + + + + s s - - + + Network Server Settings Configuración do servidor - - - - + + + + Server Port: Porto: - - - - + + + + Use SCTP Usar SCTP. - - - - + + + + Use IPv6 Usar IPv6. - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://gl.wikipedia.org/wiki/Protocolo_IPv6">Que é?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Que é?</a> - + Internet Game Settings Configuración das partidas por internet - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4230,61 +4322,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: para algunhas </span><span style=" font-weight:600; font-style:italic;">opcións predeterminadas das partidas</span><span style=" font-style:italic;">, coma o «límite de xogadores», os «cartos iniciais» ou a «aposta obrigatoria inicial pequena», úsanse os valores </span><span style=" font-weight:600; font-style:italic;">da configuración das partidas de rede.</span></p></body></html> - - + + Server Address: Enderezo: - - + + Use password for private game: Contrasinal para as partidas privadas: - - + + Computer Engine Motor da intelixencia artificial - - + + Opponent 6: Rival 6 - - + + Opponent 5: Rival 5 - - + + Opponent 4: Rival 4 - - + + Opponent 3: Rival 3 - - + + Opponent 2: Rival 2 - - + + Opponent 1: Rival 1 - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4295,111 +4387,111 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: as dimensións coas que conseguirá unha maior calidade de imaxe son </span><span style=" font-weight:600; font-style:italic;">50×50</span>.</p></body></html> - - + + Enable/Disable Logging Levar un historial. - - + + Log File Directory: Cartafol do historial: - - + + Write log after every: Actualizar despois de cada: - - + + action (high frequent disc access) acción (uso frecuente do disco) - - + + hand (medium disc access) man (uso medio do disco) - - + + game (low disc access) partida (uso raro do disco) - + Log Messages Historial - + Player Nicks/Avatars Nomes e imaxes de usuario - + Show right toolbox Amosar a caixa de ferramentas da dereita. - + Show left toolbox Amosar a caixa de ferramentas da esquerda. - - + + Play blind raise notification Sons para notificar subas obrigatorias. - - + + Automatic Server Configuration URL Usar un enderezo URL de configuración automática do servidor: - - + + Serverlist Address: Enderezo da lista de servidores: - - + + Manual Server Configuration Configurar manualmente o servidor: - + Human Player: Xogador: - + (This nick will also be used for the online game login) Nota: este nome usarase tamén ao xogar por internet. - + Note: Best avatar quality with image ratio like width=50, height=50. Nota: as dimensións coas que conseguirá unha maior calidade de imaxe son 50×50. - - + + Store log files for: Eliminar o historial pasados: - - + + Day(s) días @@ -4428,62 +4520,62 @@ p, li { white-space: pre-wrap; } Nomes e imaxes - - + + Show cards chance monitor Amosar o monitor de probabilidades. - + Note: Best quality with image ratio like width=48, height=76. Nota: as dimensións coas que conseguirá unha maior calidade de imaxe son 48×76. - - + + Avatar Server: Servidor de imaxes: - + Style Estilo - - + + Don't translate poker strings like check, call, raise from game table style Non traducir palabras como «check», «call» e «raise» no taboleiro. - - - - + + + + Add ... Engadir… - - - - + + + + Remove Eliminar - - - - + + + + Preview - Information: Vista previa — Información: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4496,8 +4588,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Descargar novos estilos de taboleiro…</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4510,7 +4602,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Descargar novos estilos de baralla…</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4529,96 +4621,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: as dimensións coas que conseguirá unha maior calidade de imaxe son </span><span style=" font-weight:600; font-style:italic;">48×76</span>.</p></td></tr></table></body></html> - - + + Delay between hands: Descanso entre mans: - - + + Server Servidor - - + + Game Partida - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Nota: para algunhas opcións predeterminadas das partidas, coma o «límite de xogadores», os «cartos iniciais» ou a «aposta obrigatoria inicial pequena», úsanse os valores da configuración das partidas de rede. - - + + Default game name: Nome predeterminado: - - + + Default game type: Tipo predeterminado: - - + + Standard Estándar - - + + Registered players only Para xogadores rexistrados - - + + Invited players only Acceso só con invitación - - + + Ranking game Partida de puntuación - - + + Show lobby chat Amosar a conversa da sala de espera. - - + + Automatically leave the table after the game finished Saír da partida automaticamente cando remate. - - + + Ignored Players Xogadores ignorados - - + + Player Xogador - - + + Remove Player Eliminar o xogador - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4631,20 +4723,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Xogador<br /><span style=" font-style:italic;">Nota: este nome usarase tamén ao xogar por internet como usuario rexistrado.</span></p></body></html> - - + + Opponent 7: Rival 7 - - + + Opponent 8: Rival 8 - - + + Opponent 9: Rival 9 @@ -4652,69 +4744,69 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Erro de configuración - + The entered flipside picture doesn't exist. Please enter an valid picture! A imaxe de usuario indicada non existe. Escolla unha existente. - - + + The log file directory doesn't exist. Please select an valid directory! O cartafol do historial non existe. Escolla un directorio existente. - + Language Changed Cambio de idioma - + You have changed application language to %1. Please restart PokerTH to load new language! Cambiou o idioma do aplicativo a %1. Os cambios xurdirán efecto en canto reinicie PokerTH. - + Select your flipside picture Escolla unha imaxe de usuario - + Images (*.png *.jpg *.gif) Imaxes (*.png *.jpg *.gif) - + Open Directory Abrir o cartafol - - + + Blinds Error Erro das apostas obrigatorias - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. O primeiro elemento da lista de apostas obrigatorias predefinidas é menor que a aposta obrigatoria inicial pequena actual. O valor da aposta obrigatoria pasará a ser o valor mínimo permitido. - + The entered server list address is not a valid URL. Please enter a valid server list address! O enderezo da lista de servidores non é un enderezo URL correcto. Escriba un enderezo correcto para a lista de servidores. @@ -4865,148 +4957,148 @@ Please enter a valid server list address! Vietnamita - + The opponent names are not unique. Please choose different names for each Opponent! Non pode usar nomes repetidos para os rivais. - + Settings Information Información da configuración - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Cambiou o cartafol do historial. Os cambios xurdirán efecto en canto reinicie PokerTH. - - + + Maintainer Name Nome do mantedor - - + + Maintainer EMail Enderezo do mantedor - - + + Create Date Data de creación - + Windows Behaviour Comportamento das xanelas - + scaleable flexíbel - + fixed fixo - + Minimum Size Tamaño mínimo - + Maximum Size Tamaño máximo - + Fixed Size Tamaño fixo - + State Estado - + Please select your game table style Escolla un estilo para o taboleiro - + PokerTH game table styles (*.xml) Estilos de taboleiro de PokerTH (*.xml) - + Game Table Style Error Erro do estilo de taboleiro - + Selected game table style file is already in the list. Please select another one to add! O ficheiro de estilo de taboleiro seleccionado xa está na lista. - + Game Table Style File Error Erro do ficheiro de estilo de taboleiro - + Could not load game table style file correctly. Style will not be placed into list! Non foi posíbel cargar o ficheiro de estilo de taboleiro. O estilo non aparecerá na lista. - + Please select your card deck style Escolla un estilo para a baralla - + PokerTH card deck styles (*.xml) Estilos de baralla de PokerTH (*.xml) - + Card Deck Style Error Erro do estilo de baralla - + Selected card deck style file is already in the list. Please select another one to add! O ficheiro de estilo de baralla seleccionado xa está na lista. - + Card Deck Style File Error Erro do ficheiro de estilo de baralla - + Could not load card deck style file correctly. Style will not be placed into list! Non foi posíbel cargar o ficheiro de estilo de baralla. O estilo non aparecerá na lista. - + PokerTH - Settings PokerTH — Configuración - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Atención: isto eliminará toda a configuración persoal, e pechará PokerTH. Está seguro de que quere restaurar a configuración predeterminada? @@ -5071,12 +5163,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Erro do servidor - + You should not kick yourself from this game! Non debería expulsarse a si mesmo da partida! @@ -5235,106 +5327,106 @@ Do you really want to reset factory settings? startWindowImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Erro de rede - + Server address was not set. Non se definiu o enderezo do servidor. - + An invalid port was set (ports 0-1023 are not allowed). Definiuse un porto incorrecto (non se permiten os portos do 0 ao 1023). - + Could not create a socket for TCP communication. Non foi posíbel crear un sócket de comunicación TCP. - + Could not set the IP address. Non foi posíbel estabelecer o enderezo IP. - + Could not set the port for this type of address. Non foi posíbel estabelecer o porto para este tipo de enderezo. - + The server name could not be resolved. Non puido determinarse o enderezo IP para o nome de dominio definido. - + Bind failed - please choose a different port. Non puido asociarse o porto. Escolla un porto distinto. - + Internal network error: "listen" failed. Erro interno de rede: non foi posíbel «escoitar». - + Server execution was terminated. Interrompeuse a execución do servidor. - + Could not connect to the server. Non foi posíbel conectarse ao servidor. - + Connection timed out. Please check the server address. @@ -5345,348 +5437,348 @@ Comprobe que escribir o enderezo do servidor correctamente. Se o servidor está detrás dun encamiñador NAT, asegúrese de que activou a redirección de portos no servidor. - + Internal network error: "select" failed. Erro interno de rede: non foi posíbel «seleccionar». - + Internal network error: "send" failed. Erro interno de rede: non foi posíbel «enviar». - + Internal network error: Duplicate TCP connection. Erro interno de rede: a conexión TCP está duplicada. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Recibiuse un paquete de rede incorrecto. Asegúrese de que todos os xogadores están a empregar a mesma versión de PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Erro interno de estado. Asegúrese de que todos os xogadores están a empregar a mesma versión de PokerTH. - + Invalid server list URL. Please correct the address in the settings. O enderezo URL da lista de servidores é incorrecto. Corrixa o enderezo desde a páxina de configuración. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. A lista de servidores de internet de PokerTH contén datos con formato incorrecto. Se está a empregar unha lista de servidores personalizada, asegúrese de que o formato é correcto. - + Could not unzip the PokerTH internet server list. Non foi posíbel extraer a lista de servidores de internet de PokerTH. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Non foi posíbel descargar a lista de servidores de internet de PokerTH. Asegúrese de que ten conexión directa a internet. - + Could not open the target file when downloading the server list. Non foi posíbel abrir o ficheiro de destino ao descargar a lista de servidores. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. O servidor de PokerTH non é compatíbel con esta versión do xogo.<br>Pode descargar a última versión de <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a>. - + Sorry, this server is already full. O servidor está completo. - + Invalid login. Please check your username and password. Os datos de acceso non son correctos. Asegúrese de introducir a combinación correcta de nome de usuario e contrasinal. - + Your account is blocked indefinitely. A súa conta está bloqueada por tempo indefinido. - + You cannot login at this time. Please try again in a few seconds. Non pode acceder nestes momentos. Inténteo máis tarde. - + You cannot join this game, because another player in that game has your network address. Non pode unirse a esta partida, dado que outro xogador da partida ten o mesmo enderezo de rede que vostede. - + Your connection to the server is very slow, the game had to start without you. A súa conexión ao servidor é moi lenta, a partida tivo que comezar sen vostede. - + This game is of type invite-only. You cannot join this game without being invited. A partida é privada, e só pode acceder se o convidan. - + Invalid password when joining the game. Please reenter the password and try again. O contrasinal para unirse á partida non é correcto. Escriba de novo o contrasinal e vólvao intentar. - + The avatar report was accepted by the server. Thank you. O servidor aceptou o informe sobre a imaxe do usuario. Grazas por colaborar. - + This avatar was already reported by another player. Xa outro usuario informara sobre esta imaxe de usuario. - + An error occurred while reporting the avatar. Produciuse un erro ao informar sobre a imaxe do usuario. - + The game name report was accepted by the server. Thank you. O servidor aceptou o informe sobre o nome da partida. Grazas por colaborar. - + This game name was already reported by another player. Xa outro usuario informara sobre o nome desta partida. - + An error occurred while reporting the game name. Produciuse un erro ao informar sobre o nome da partida. - + The game was closed. Pechouse a partida. - + The game could not be closed. Non foi posíbel pechar a partida. - + The player was kicked and banned permanently. O xogador foi expulsado de maneira permanente. - + The player was kicked, but could not be banned because it was a guest player. Botouse fóra ao xogador, pero ao seren un invitado non foi posíbel expulsalo permanentemente. - + The player was kicked, but could not be banned, because the nick could not be found in the database Botouse fóra ao xogador, pero non foi posíbel expulsalo permanentemente porque non se atopou o seu alcume na base de datos. - + The player could not be found. Non foi posíbel atopar ao xogador. - + The password is too long. Please choose another one. O contrasinal é longo de máis. Escolla un máis curto. - + Rejoin possible! Pode volver á partida! - + There is an existing session with a previous game. Hai unha sesión cunha partida previa. - + Do you want to rejoin this game? Quere volver á partida? - - + + Start Network Game Iniciar unha partida de rede - + The connection to the server was lost. Perdeuse a conexión co servidor. - + The game name is either too short or too long. Please choose another one. O nome da partida é ou curto de máis ou longo de máis. Escolla un distinto. - + The game could not be found. Non foi posíbel atopar a partida. - + The chat text is invalid. O texto da conversa é incorrecto. - + The server referred to an unknown player. Aborting. O servidor fixo referencia a un xogador descoñecido. Interompeuse o proceso. - + Internal error: The current player could not be found. Erro interno: non foi posíbel atopar o xogador actual. - + Internal error: The current player is not active. Erro interno: o xogador actual non está activo. - + You were kicked from the server. Expulsárono do servidor. - + You were temporarily banned from the server. Prohibíronlle o acceso ao servidor de maneira temporal. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! A conexión co servidor caducou por inactividade. Pode volverse conectar se quere. - + The client player count is invalid. O número de xogadores do lado do cliente é incorrecto. - + Too many manual blinds were set. Please reconfigure the manual blinds. Definiuse unha serie de apostas obrigatorias demasiado longa. Volva configurar as apostas obrigatorias. - + An invalid avatar file was configured. Please choose a different avatar. Configurouse un ficheiro de imaxe de usuario incorrecto. Escolla unha imaxe distinta. - + The selected avatar file is too large. Please choose a different avatar. O ficheiro de imaxe seleccionado é demasiado grande. Escolla un máis pequeno. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Produciuse un erro interno coa imaxe de usuario. Informe do problema a un dos administradores mediante a conversa da sala de espera (en inglés). - + Could not start game: Synchronization failed. Non foi posíbel iniciar a partida: non foi posíbel sincronizarse. - + The server is down for maintenance. Please try again later. O servidor está desconectado por motivos de mantemento. Volva intentar conectarse máis tarde. - + An internal error occured. Produciuse un erro interno. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Notificación de rede - + You were kicked from the game. Expulsárono da partida. - + Sorry, this game is already full. A partida está completa. - + Unable to join - the server has already started the game. Non foi posíbel unirse, a partida xa comezou. - + Your admin state timed out due to inactivity. Feel free to create a new game! O seu status de administrador caducou por inactividade. Se quere, pode crear outra partida. - + You cannot join this type of game as guest. Non pode unirse a esta partida sen unha conta de usuario rexistrado. - + The settings are invalid for this type of game. A configuración non é compatíbel con este tipo de partida. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Hai unha nova versión de PokerTH dispoñíbel.<br>Pode descargala en <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a>. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Esta versión de probas de PokerTH está obsoleta.<br>Pode descargar a última en <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a>. - - + + Server Message Mensaxe do servidor diff --git a/ts/pokerth_gr.ts b/ts/pokerth_gr.ts index 4ebdbb4e..3a3b96f4 100644 --- a/ts/pokerth_gr.ts +++ b/ts/pokerth_gr.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -168,22 +167,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -301,52 +300,52 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) @@ -393,13 +392,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -428,18 +427,18 @@ Please verify that you are uploading a valid PokerTH log file. - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + PokerTH - Question - + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -468,8 +467,8 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About About @@ -489,59 +488,65 @@ Please verify that you are uploading a valid PokerTH log file. © 2006-2007, FHammer, FThauer, LMay - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project Project - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - + + Translation Translation - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + Thanks to Thanks to - - + + License License - + + + Third party libs + + + + Close Κλείσιμο @@ -650,8 +655,8 @@ p, li { white-space: pre-wrap; } ?} {2006-2008,?} - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -660,7 +665,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -912,12 +917,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Χειροκίνητη σειρά blinds - + You cannot set more than 30 manual blinds. Δεν μπορείς να ορίσεις πάνω απο 30 χειροκίνητα blinds. @@ -1069,7 +1074,7 @@ Please choose another one! - + Default game name: @@ -1104,37 +1109,37 @@ Please choose another one! - - + + Maximum number of players: Μέγιστος αριθμός παιχτών: - - + + Start Cash: Αρχικό Ποσό: - - + + $ $ - + Blinds Blinds - + Use saved blinds settings Αποθηκευμένες επιλογές για τα blinds - + Change blinds settings ... Αλλαγή επιλογών για τα blinds ... @@ -1144,39 +1149,45 @@ Please choose another one! Ταχύτητα Παιχνιδιού για τους παίχτες του υπολογιστή: - + Timeout for player action: Χρόνος αναμονής για τον παίχτη: - - + + s s - - + + Password: Κωδικός: - + Delay between hands: - - + + + Allow spectators to watch the game + + + + + Create Game Δημιουργία Παιχνιδιού - + Cancel Ακύρωση @@ -1301,8 +1312,10 @@ Please choose another one! Παιχνίδι + + Players - Παίχτες + Παίχτες State @@ -1313,44 +1326,50 @@ Please choose another one! Πριβέ - - + + 5 - Show open & non-full & ranking games - - + + Game Info Πληροφορίες Παιχνιδιού - - + + Connected Players Συνδεδεμένοι Παίχτες - - + + + Spectators + + + + + Start Cash: Αρχικό Ποσό: - - + + First small blind: Αρχικό blind: - - + + Blinds raise interval: - - + + Blinds raise mode: @@ -1360,7 +1379,7 @@ Please choose another one! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1369,26 +1388,26 @@ p, li { white-space: pre-wrap; } - - + + Fill up with computer opponents Συμπλήρωση με παίχτες-υπολογιστή - - + + Sort alphabetically - - + + Sort by country - - + + Display idle players @@ -1401,14 +1420,14 @@ p, li { white-space: pre-wrap; } "Διώξε" τον Παίχτη - - + + &Start Game - - + + &Kick Player @@ -1433,8 +1452,8 @@ p, li { white-space: pre-wrap; } Τύπος Αύξησης blind: - - + + Manual blinds list: Λίστα Χειροκίνητων Blinds: @@ -1443,74 +1462,68 @@ p, li { white-space: pre-wrap; } Χρόνος αναμονής για τον παίχτη(sec): - - + + Game type: - - + + Timing: - - + + &Leave Game - - - Join &any game - - - - - + + &Create Game - - + + &Join Game - - + + 0 - No game list filter - - + + search for player ... - - + + 1 - Show open games - - + + 2 - Show open & non-full games - - + + 3 - Show open & non-full & non-private games - - + + 4 - Show open & non-full & private games @@ -1531,8 +1544,8 @@ p, li { white-space: pre-wrap; } Είσοδος στο Παιχνίδι - - + + Lobby-Chat Lobby-Chat @@ -1549,46 +1562,46 @@ p, li { white-space: pre-wrap; } %1's game - + Joining a private Game Είσοδος σε πριβέ Παιχνίδι - + You are about to join a private game. Please enter the password! Επιχειρείτε να εισέλθετε σε ένα πριβέ παιχνίδι. Παρακαλώ δώστε τον κωδικό! - + open ανοιχτό - - - - + + + + Game Info Πληροφορίες Παιχνιδιού - - - + + + Game Παιχνίδι - - - + + + Players Παίχτες - - - + + + State Κατάσταση @@ -1597,76 +1610,71 @@ p, li { white-space: pre-wrap; } Πριβέ - - - + + + P - - - + + + Available Players Διαθέσιμοι Παίχτες - + Invite player - + Ignore player - + Player infos ... - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - Connected players - max. %1 - - - - - - + + + T @@ -1681,115 +1689,127 @@ p, li { white-space: pre-wrap; } - - - + + Spectate + + + + + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game - - - Connected players - Max. %1 - - - - + running σε εξέλιξη - - + + running games: %1 παιχνίδια σε εξέλιξη: %1 - - + + open games: %1 Ανοιχτά παιχνίδια: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -1798,1320 +1818,1314 @@ Feel free to invite other players by right-clicking on their nick in the availab Παίχτες στο chat: %1 - - + + connected players: %1 Συνδεδεμένοι παίχτες: %1 - - - Connected players - - - - + hands μοιρασιές - + minutes λεπτά - + double blinds διπλά blinds - + manual blinds order Σειρά χειροκίνητων blinds - + Server Error Πρόβλημα στον Server - + You should not kick yourself from this game! Δεν χρειάζεται να διώξεις τον εαυτό σου απ' το παιχνίδι! - + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3124,47 +3138,47 @@ Feel free to invite other players by right-clicking on their nick in the availab PokerTH 0.6-beta - The Open-Source Texas Holdem Engine - + Hands Αξία Φύλλων - + Chat Chat - + Save Αποθήκευση - + Log Log - + Away Away - + Manual Action (default) Χειροκίνητο (πρεπιλογή) - + Auto-Check / Auto-Fold Αυτόματο: Ντούκου / Πάσο - + Auto-Check / Auto-Call-Any Αυτόματο: Ντούκου / Μέσα-σε-όλα - + Speed: Ταχύτητα: @@ -3181,228 +3195,228 @@ Feel free to invite other players by right-clicking on their nick in the availab Παιχνίδι Δικτύου - - + + Start Local Game ... Τοπικό Παιχνίδι ... - - + + Ctrl+N Ctrl+N - - + + Quit Κλείσιμο - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... About PokerTH ... - - + + Settings ... Επιλογές ... - - + + Create Network Game ... Δημιουργία Παιχνιδιού Δικτύου ... - - + + Ctrl+O Ctrl+O - - + + Join Network Game ... Είσοδος σε Παιχνίδι Δικτύου ... - - + + Ctrl+J Ctrl+J - - - + + + Fullscreen Πλήρης Οθόνη - - + + Ctrl+F Ctrl+F - - + + Show/Hide Chat Window Εμφάνιση/Απόκρυψη Παραθύρου Chat - - + + Ctrl+T Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window Εμφάνιση/Απόκρυψη Παραθύρου Αξίας Φύλλων - - + + Ctrl+H Ctrl+H - - + + Show/Hide Log Window Εμφάνιση/Απόκρυψη Παραθύρου Log - - + + Ctrl+L Ctrl+L - - + + Internet Game ... Παιχνίδι στο Internet ... - - + + Ctrl+I Ctrl+I - - + + Show/Hide Away Window Εμφάνιση/Απόκρυψη Παραθύρου - - + + Ctrl+A Ctrl+A - + Kick - + Vote Timeout: - + Yes - + No - + Player info - + Chance - + Settings Επιλογές - + Configure PokerTH - + Configure PokerTH ... - - + + Close Κλείσιμο - - + + Ctrl+X - + Vote started by: - - + + Show/Hide Chance Window - - + + Ctrl+C - + &View - + &Settings - + Shortcut: <Shift> @@ -3410,19 +3424,19 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Παύση @@ -3435,7 +3449,7 @@ Feel free to invite other players by right-clicking on their nick in the availab Ctrl+N - Νέο Παιχνίδι - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - The Open-Source Texas Holdem Engine @@ -3454,23 +3468,23 @@ Please choose another one. F1 - Όλα Μέσα | F2 - Ποντάρω/Ρελάνς | F3 - Ντούκου/Μέσα | F4 - Πάσο - - - - - - - - + + + + + + + + Start Έναρξη - - - - - + + + + + Lobby Lobby @@ -3681,102 +3695,107 @@ Please choose a different name. Αυτόματο: Ντούκου ή Πάσο. - - + + Chat Chat - + Closing PokerTH during network game Κλείσιμο PokerTH κατα τη διάρκεια παιχνιδιού σε δίκτυο - + You are the hosting server. Do you want to close PokerTH anyway? Φιλοξενείτε τον server. Θέλετε να κλείσετε το PokerTH? - + PokerTH - Internet Game Message PokerTH - Μήνυμα Παιχνιδιού Internet - + Attention! Do you really want to leave the current game and go back to the lobby? Προσοχή! Θέλετε σίγουρα να φύγετε απ' το παιχνίδι και να επιστρέψετε στο lobby? - - + + Chance - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. + + + Spectators + + internetGameLoginDialog @@ -3976,57 +3995,67 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Load Server-Profile-File Error - - - - Could not load server-profiles-file: - Could not load server-profiles-file: + Could not load server-profiles-file: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error Save Server Profile Error - + A profile with the name: %1 already exists. Would you like to overwrite ? Ένα προφίλ με το όνομα: %1 υπάρχει ήδη. Θέλετε να το αντικαταστήσετε ? - + Read Server-Profile List Error Read Server-Profile List Error - + Could not read server-profiles list Could not read server-profiles list - - + + Save Server-Profile-File Error Save Server-Profile-File Error - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Could not save server-profiles-file: + Could not save server-profiles-file: @@ -4499,12 +4528,12 @@ and go back to the lobby? manualBlindsOrderDialogImpl - + Manual Blinds Order Χειροκίνητη σειρά blinds - + You cannot set more than 30 manual blinds. Δεν μπορείς να ορίσεις πάνω απο 30 χειροκίνητα blinds. @@ -4573,7 +4602,7 @@ and go back to the lobby? - + Use saved blinds settings Αποθηκευμένες επιλογές για τα blinds @@ -4584,13 +4613,13 @@ and go back to the lobby? - + Change blinds settings ... Αλλαγή επιλογών για τα blinds ... - + Game Speed: Ταχύτητα: @@ -4631,38 +4660,38 @@ and go back to the lobby? selectAvatarDialogImpl - - - + + + Avatar File Error Λάθος Αρχείου Εικόνας - + Please select an avatar from the list! Παρακαλώ επιλέξτε μια εικόνα απ' τη λίστα! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Το μέγεθος του αρχείου της εικόνας είναι πολύ μεγάλο. (μέγιστο 30KB) Παρακαλώ επιλέξτε μια μικρότερη εικόνα! - + The entered avatar picture doesn't exist. Please enter an valid picture! Η εικόνα που επιλέξατε δεν υπάρχει. Παρακαλώ επιλέξτε μια σωστή εικόνα! - + Select external avatar picture Επιλέξτε την εικόνα - + Images (*.png *.jpg *.gif) Εικόνες (*.png *.jpg *.gif) @@ -4687,8 +4716,8 @@ Please enter an valid picture! Εμφάνιση - - + + Language: Γλώσσα: @@ -4701,43 +4730,43 @@ Please enter an valid picture! Εμφάνιση μηνυμάτων στο statusbar - - + + Show fade-out animation for non-winning cards Εμφάνιση animation για τις κάρτες που χάνουν - - + + Show flip-card animation Εμφάνιση animation όταν γυρίζουν τα φύλλα - - + + Show buttons for small blind and big blind Εμφάνιση δεικτών για το μικρό και το μεγάλο blind - - + + Show own cards only on mouse click Εμφάνιση των φύλλων μου μόνο με το πάτημα του ποντικιού - + Reverse order of F-Keys (F1 - F4) Αντιστροφή σειράς των κουμπιών F (F1 - F4) - - + + Network / Internet Game Παιχνίδι Δικτύου / Internet - - + + Switch keyboard focus to bet-input-field if it's your turn Απευθείας ενεργοποίηση του πεδίου πονταρίσματος όταν έρχεται η σειρά μου @@ -4766,268 +4795,292 @@ p, li { white-space: pre-wrap; } - + Sound Ήχος - + Factory Settings - - + + + Common + + + + + Disable splashscreen on startup - - + + Show country flag in the corner of avatar - - + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State Κατάσταση - - + + Card Deck - - + + Card Back - - + + Use card back from card style - - + + Use custom card back picture: - - + + Play sound effects Ηχητικά Εφέ - - + + Sound Volume: Ένταση ήχου: - - + + 10 10 - - + + Sound Categories Κατηγορίες Ήχου - - + + Play game actions sounds like "check", "call", "raise" Αναπαραγωγή ήχων σε ενέργειες όπως "ντούκου", "μέσα", "ρελάνς" - - + + Play lobby chat notifications Αναπαραγωγή ειδοποιήσεων στο lobby chat - - + + Play network/internet game notifications like "player joined the game" Αναπαραγωγή ειδοποιήσεων σε παιχνίδι δικτύου/internet, όπως "παίχτης εισήλθε στο παιχνίδι" - + + + Allow spectators to watch the game + + + + OK - + Local Game Settings Επιλογές Τοπικού Παιχνιδιού - - + + Number of players: Αριθμός παιχτών: - - - - + + + + Start Cash: Αρχικό Ποσό: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Αρχικό blind: - - - - + + + + Raise blinds: Αύξηση blind: - - - - - - - - + + + + + + + + Every: Κάθε: - - - - + + + + hands μοιρασιές - - - - + + + + minutes λεπτά - - - - + + + + Raise mode: Τύπος αύξησης: - - - - + + + + Always double blinds Πάντα διπλό blind - - - - + + + + Manual blinds order: Χειροκίνητη σειρά blinds: - - - - + + + + Edit ... Επεξεργασία... - - + + Game Speed: Ταχύτητα Παιχνιδιού: - - + + Pause between hands (press "start" button to go on) Παύση μεταξύ ανοίγματος φύλλων (επιλογή κουμπιού "έναρξη" για να συνεχίσεις) - - + + Show game settings dialog on every new game Εμφάνιση μενού επιλογών παιχνιδιού σε κάθε καινούργιο παιχνίδι - + Network Game Settings Επιλογές Παιχνιδιού Δικτύου - - + + Maximum number of players: Μέγιστος αριθμός παιχτών: @@ -5036,14 +5089,14 @@ p, li { white-space: pre-wrap; } Διαγραφή - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5052,78 +5105,78 @@ p, li { white-space: pre-wrap; } Ταχύτητα Παιχνιδιού για τους παίχτες του υπολογιστή: - - + + Timeout for player action: Χρόνος αναμονής για τον παίχτη: - - - - + + + + s s - - + + Network Server Settings Επιλογές Server Δικτύου - - + + Server Password: Server Password: - - - - + + + + Server Port: Server Port: - - - - + + + + Use SCTP Use SCTP - - - - + + + + Use IPv6 Use IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Τί είναι αυτό;</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Τί είναι αυτό;</a> - + Internet Game Settings Επιλογές Παιχνιδιού στο Internet - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5138,14 +5191,14 @@ p, li { white-space: pre-wrap; } Επιλογές Internet Server (Dedicated Server) - - + + Server Address: Server Address: - - + + Use password for private game: Κωδικός για πριβέ παιχνίδι: @@ -5174,49 +5227,49 @@ p, li { white-space: pre-wrap; } Ψευδώνυμο Παιχτών - - + + Computer Engine Computer Engine - - + + Opponent 6: Αντίπαλος 6: - - + + Opponent 5: Αντίπαλος 5: - - + + Opponent 4: Αντίπαλος 4: - - + + Opponent 3: Αντίπαλος 3: - - + + Opponent 2: Αντίπαλος 2: - - + + Opponent 1: Αντίπαλος 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5227,13 +5280,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Σημείωση: Η καλύτερη ποιότητα εικόνας είναι αυτή με ratio: </span><span style=" font-weight:600; font-style:italic;">width=50, height=50.</span></p></body></html> - + Human Player: Παίκτης: - - + + Enable/Disable Logging Ενεργοποίηση/Απενεργοποίηση Logging @@ -5246,49 +5299,49 @@ p, li { white-space: pre-wrap; } Μέρα(Μέρες) - - + + Log File Directory: Διεύθυνση Αρχείου Log: - - + + Write log after every: Κράτα log σε κάθε: - + Note: Best quality with image ratio like width=48, height=76. - - + + action (high frequent disc access) ενέργεια (πολύ συχνή πρόσβαση στο δίσκο) - - + + hand (medium disc access) μοίρασμα (μέτρια πρόσβαση στο δίσκο) - - + + game (low disc access) παιχνίδι (χαμηλή πρόσβαση στο δίσκο) - + Log Messages Μηνύματα Log - + Player Nicks/Avatars Ψευδώνυμα/Εικόνα Παίχτη @@ -5297,58 +5350,58 @@ p, li { white-space: pre-wrap; } Εμφάνιση αριστερού toolbox - + Show right toolbox Εμφάνιση δεξιού toolbox - + Show left toolbox - - + + Play blind raise notification - - + + Automatic Server Configuration URL - - + + Serverlist Address: - - + + Manual Server Configuration - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -5377,8 +5430,8 @@ p, li { white-space: pre-wrap; } - - + + Show cards chance monitor @@ -5387,51 +5440,51 @@ p, li { white-space: pre-wrap; } Κωδικός: - - + + Avatar Server: - + Style - - + + Don't translate poker strings like check, call, raise from game table style - - - - + + + + Add ... - - - - + + + + Remove - - - - + + + + Preview - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5440,8 +5493,8 @@ p, li { white-space: pre-wrap; } - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5450,7 +5503,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5462,96 +5515,96 @@ p, li { white-space: pre-wrap; } - - + + Delay between hands: - - + + Server - - + + Game Παιχνίδι - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5560,14 +5613,14 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Αντίπαλος 1: {7:?} - - + + Opponent 8: Αντίπαλος 1: {8:?} @@ -5576,8 +5629,8 @@ p, li { white-space: pre-wrap; } Αντίπαλος 1: {10:?} - - + + Opponent 9: Αντίπαλος 1: {10:?} {9:?} @@ -5644,65 +5697,65 @@ p, li { white-space: pre-wrap; } Turkish - - - - - + + + + + Settings Error Λάθος Επιλογές - + The entered flipside picture doesn't exist. Please enter an valid picture! Η επιλεγμένη εικόνα για την τράπουλα δεν υπάρχει. Παρακαλώ επιλέξτε μια σωστή εικόνα! - - + + The log file directory doesn't exist. Please select an valid directory! Η διεύθυνση του αρχείου log δεν υπάρχει. Παρακαλώ επιλέξτε μια σωστή διεύθυνση! - + Language Changed Η γλώσσα άλλαξε - + You have changed application language to %1. Please restart PokerTH to load new language! Έχετε επιλέξει την γλώσσα %1. Παρακαλώ επανεκκινήστε το PokerTH για να "φορτωθεί" η νέα γλώσσα! - + Select your flipside picture Επιλέξτε την εικόνα της τράπουλας - + Images (*.png *.jpg *.gif) Εικόνες (*.png *.jpg *.gif) - + Open Directory Άνοιγμα φακέλου - - + + Blinds Error Λάθος Blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5801,152 +5854,152 @@ This first-small-blind-value will be set to maximum allowed value. - + The opponent names are not unique. Please choose different names for each Opponent! - + The entered server list address is not a valid URL. Please enter a valid server list address! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State Κατάσταση - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6011,12 +6064,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Πρόβλημα στον Server - + You should not kick yourself from this game! Δεν χρειάζεται να διώξεις τον εαυτό σου απ' το παιχνίδι! @@ -6193,106 +6246,106 @@ Please choose another one. Παρακαλώ επιλέξτε άλλο nickname. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Λάθος Δικτύου - + Server address was not set. Η Server address δεν είχε ορισθεί. - + An invalid port was set (ports 0-1023 are not allowed). Έχει ορισθεί λάθος port (δεν επιτρέπονται ports από 0 εως 1023). - + Could not create a socket for TCP communication. Could not create a socket for TCP communication. - + Could not set the IP address. Could not set the IP address. - + Could not set the port for this type of address. Could not set the port for this type of address. - + The server name could not be resolved. Το όνομα του server δεν μπορεί να βρεθεί. - + Bind failed - please choose a different port. Bind failed - Παρακαλώ διαλέξτε διαφορετικό port. - + Internal network error: "listen" failed. Εσωτερικό λάθος δικτύου: "listen" failed. - + Server execution was terminated. Η λειτουργία του server τερματίστηκε. - + Could not connect to the server. Αδυναμία σύνδεσης με το server. - + Connection timed out. Please check the server address. @@ -6303,12 +6356,12 @@ If the server is behind a NAT-Router, make sure port forwarding has been set up Αν ο server βρίσκεται σε NAT-Router, βεβαιωθείτε ότι το port forwarding λειτουργεί. - + Internal network error: "select" failed. Εσωτερικό λάθος δικτύου: "select" failed. - + Internal network error: "send" failed. Εσωτερικό λάθος δικτύου: "send" failed. @@ -6317,117 +6370,117 @@ If the server is behind a NAT-Router, make sure port forwarding has been set up Η σύνδεση τερματίστηκε απ' τον server. - + Internal network error: Duplicate TCP connection. Εσωτερικό λάθος δικτύου: Duplicate TCP connection. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Λήψη λανθασμένου πακέτου δικτύου. Παρακαλώ βεβαιωθείτε ότι όλοι οι παίχτες χρησιμοποιούν την ίδια έκδοση του PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Εσωτερικό λάθος. Παρακαλώ βεβαιωθείτε ότι όλοι οι παίχτες χρησιμοποιούν την ίδια έκδοση του PokerTH. - + Invalid server list URL. Please correct the address in the settings. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. - + Could not unzip the PokerTH internet server list. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. - + Could not open the target file when downloading the server list. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Ο server του PokerTH δεν υποστηρίζει αυτή την έκδοση του παιχνιδιού.<br>Παρακαλώ επισκεφθείτε την διεύθυνση <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> και "κατεβάστε" την τελευταία έκδοση. - + Sorry, this server is already full. Συγνώμη, αυτός ο server είναι γεμάτος. - + Invalid login. Please check your username and password. - + Your account is blocked indefinitely. - + You cannot login at this time. Please try again in a few seconds. - + You cannot join this game, because another player in that game has your network address. - + Your connection to the server is very slow, the game had to start without you. - + This game is of type invite-only. You cannot join this game without being invited. - + Invalid password when joining the game. Please reenter the password and try again. Λανθασμένος κωδικός κατά την είσοδο στο παιχνίδι. Παρακαλώ δώστε τον κωδικό και ξαναπροσπαθήστε. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. - + The password is too long. Please choose another one. Ο κωδικός είναι πολύ μεγάλος. Παρακαλώ επιλέξτε κάποιον άλλο. @@ -6442,221 +6495,221 @@ Please choose a different name. Το όνομα σας είναι πολύ μικρό, ή λανθασμένο. Παρακαλώ επιλέξτε ένα διαφορετικό όνομα. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Έναρξη Παιχνιδιού Δικτύου - + The connection to the server was lost. - + The game name is either too short or too long. Please choose another one. Το όνομα του παιχνιδιού είναι πολύ μικρό ή πολύ μεγάλο. Παρακαλώ επιλέξτε ένα διαφορετικό όνομα. - + The game could not be found. Το παιχνίδι δεν βρέθηκε. - + The chat text is invalid. Το κείμενο του chat δεν είναι έγκυρο. - + The server referred to an unknown player. Aborting. Ο server αναφέρεται σε έναν άγνωστο παίχτη. Ακύρωση. - + Internal error: The current player could not be found. Εσωτερικό λάθος: Ο παίχτης δεν μπορεί να βρεθεί. - + Internal error: The current player is not active. Εσωτερικό λάθος: Ο παίχτης δεν είναι ενεργός. - + You were kicked from the server. "Διώχθηκες" απ' τον server. - + You were temporarily banned from the server. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! - + The client player count is invalid. Η μέτρηση των παιχτών είναι λανθασμένη. - + Too many manual blinds were set. Please reconfigure the manual blinds. Πολλά χειροκίνητα blinds. Παρακαλώ επανακαθορίστε τα χειροκίνητα blinds. - + An invalid avatar file was configured. Please choose a different avatar. Η εικόνα δεν είναι σωστή. Παρακαλώ επιλέξτε μια διαφορετική εικόνα. - + The selected avatar file is too large. Please choose a different avatar. Η επιλεγμένη εικόνα είναι πολύ μεγάλη. Παρακαλώ επιλέξτε μια διαφορετική εικόνα. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Εσωτερικό λάθος στην εικόνα. Παρακαλώ αναφέρετε το λάθος σε κάποιον admin στο lobby chat. - + Could not start game: Synchronization failed. Αδύνατον να ξεκινήσει το παιχνίδι: Αποτυχία συγχρονισμού. - + The server is down for maintenance. Please try again later. Ο server δεν λειτουργεί λόγω συντήρησης. Παρακαλώ ξαναπροσπαθήστε αργότερα. - + An internal error occured. Εσωτερικό λάθος. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Network Notification - + You were kicked from the game. Σας "έδιωξαν" απ' το παιχνίδι. - + Sorry, this game is already full. Συγνώμη, αυτό το παιχνίδι είναι γεμάτο. - + Unable to join - the server has already started the game. Δεν μπορείτε να εισέλθετε - το παιχνίδι έχει ήδη ξεκινήσει. - + Your admin state timed out due to inactivity. Feel free to create a new game! - + You cannot join this type of game as guest. - + The settings are invalid for this type of game. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Μια νέα έκδοση του PokerTH είναι διαθέσιμη.<br>Παρακαλώ επισκεφθείτε την διεύθυνση <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> και "κατεβάστε" την τελευταία έκδοση. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Αυτή η δοκιμαστική έκδοση του PokerTH έχει ξεπερασθεί.<br>Παρακαλώ επισκεφθείτε την διεύθυνση <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> και "κατεβάστε" την τελευταία έκδοση. - - + + Server Message - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. diff --git a/ts/pokerth_hu.ts b/ts/pokerth_hu.ts index bb71e201..dd661305 100644 --- a/ts/pokerth_hu.ts +++ b/ts/pokerth_hu.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -242,22 +241,22 @@ Kérlek vedd fel a kapcsolatot a készítővel: „%4”. Pókerasztal stílus hiba – Elavult - + Everything OK! Minden rendben! - + Some pictures are missing, please contact style maintainer for this issue. Néhány kép hiányzik, vedd fel a kapcsolatot a stílus készítőjével. - + Some style fields are missing, please contact style maintainer for this issue. Néhány mezőadat hiányzik, vedd fel a kapcsolatot a stílus készítőjével. - + This style is outdated, please contact style maintainer for this issue. Ez a stílus elavult, vedd fel a kapcsolatot a stílus készítőjével. @@ -416,52 +415,52 @@ Vedd fel a kapcsolatot a készítőjével: %3. - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file PokerTH naplófájl mentése - + PokerTH SQL log (*.pdb) PokerTH SQL napló (*.pdb) @@ -508,13 +507,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -547,18 +546,18 @@ Please verify that you are uploading a valid PokerTH log file. - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Többé nem fogod megkapni az üzeneteket és a játék meghívásokat ettől a felhasználótól. <br> Biztosan tiltani szeretnéd <b>%1</b> nevű felhasználót? - - + + PokerTH - Question PokerTH – Kérdés - + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -587,8 +586,8 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About Infó @@ -624,8 +623,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">© 2006-2010, FHammer, FThauer, LMay</p></td></tr></table></body></html> - - + + Project Projekt @@ -791,41 +790,47 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> – MacOSX csomag></body></html> - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - + + License Licenc - + + + Third party libs + + + + Close Bezárás - - + + Thanks to Köszönet @@ -862,8 +867,8 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + Translation Fordítás @@ -898,8 +903,8 @@ p, li { white-space: pre-wrap; } A PokerTH 0.6-ről - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> @@ -1121,8 +1126,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"> - kezdeti grafika, dizájn</span></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1131,7 +1136,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1383,12 +1388,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Vaktétek megadása - + You cannot set more than 30 manual blinds. Nem állíthatsz be 30-nál nagyobb vaktétet. @@ -1540,8 +1545,8 @@ Kérlek válassz másikat! createInternetGameDialog - - + + Create Game Játék létrehozása @@ -1550,14 +1555,14 @@ Kérlek válassz másikat! Számítógépes ellenfelek sebessége: - - + + Maximum number of players: Játékosok maximális száma: - - + + Start Cash: Kezdő zseton: @@ -1566,19 +1571,25 @@ Kérlek válassz másikat! Kis vak: - - + + Password: Jelszó: - + Delay between hands: Osztások közti szünet: - + + + Allow spectators to watch the game + + + + Cancel Mégsem @@ -1595,7 +1606,7 @@ Kérlek válassz másikat! - + Default game name: Alapértelmezett játéknév: @@ -1630,38 +1641,38 @@ Kérlek válassz másikat! Ranglistás játék - + Blinds Vaktétek - + Use saved blinds settings Elmentett vakbeállítások használata - + Change blinds settings ... Vaktétek beállítása… - - + + $ $ - + Timeout for player action: Játékos rendelkezésére álló idő: - - + + s @@ -1786,8 +1797,8 @@ Kérlek válassz másikat! gameLobbyDialog - - + + Lobby-Chat Társalgó @@ -1800,38 +1811,44 @@ Kérlek válassz másikat! Privát - - + + Game Info Játék infó - - + + Connected Players Csatlakozott játékosok - - + + + Spectators + + + + + Start Cash: Kezdő zseton: - - + + First small blind: Első kis vak: - - + + Blinds raise interval: Vakemelés gyakorisága: - - + + Blinds raise mode: Vakemelés módja: @@ -1841,7 +1858,7 @@ Kérlek válassz másikat! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1854,26 +1871,26 @@ p, li { white-space: pre-wrap; } Játékosok reakció ideje (mp): - - + + Fill up with computer opponents Feltöltés számítógépes ellenfelekkel - - + + Sort alphabetically Rendezés betűrendben - - + + Sort by country Rendezés ország szerint - - + + Display idle players Tétlen játékosok megjelenítése @@ -1910,8 +1927,10 @@ p, li { white-space: pre-wrap; } Rendelkezésre álló játékosok + + Players - Játékosok + Játékosok Kick Player @@ -1938,8 +1957,8 @@ p, li { white-space: pre-wrap; } Vak tétek emelése: - - + + Manual blinds list: Vaktétek listája: @@ -1948,38 +1967,36 @@ p, li { white-space: pre-wrap; } Játékos rendelkezésére álló idő (mp.): - - + + Game type: Játéktípus: - - + + Timing: - - + + &Leave Game Játék &elhagyása - - Join &any game - Belépés &bárhova + Belépés &bárhova - - + + &Create Game Játék &létrehozása - - + + &Join Game Belépés a &játékba @@ -2002,38 +2019,38 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Az internetes ranglista megtekintéséhez kattints ide</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 – Minden játék megjelenítése - - + + search for player ... játékos keresése … - - + + 1 - Show open games 1 – Nyitott játékok megjelenítése - - + + 2 - Show open & non-full games 2 – Nyitott & nem teli játékok megjelenítése - - + + 3 - Show open & non-full & non-private games 3 – Nyitott & nem teli & nem privát játékok megjelenítése - - + + 4 - Show open & non-full & private games 4 – Nyitott & nem teli & privát játékok megjelenítése @@ -2044,20 +2061,20 @@ p, li { white-space: pre-wrap; } Belépés internetes játékba - - + + 5 - Show open & non-full & ranking games - - + + &Start Game Játék &indítása - - + + &Kick Player Játékos &kidobása @@ -2085,47 +2102,47 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info Játék infó - + Server Error Kiszolgáló hiba - + You should not kick yourself from this game! Nem tudod saját magadat kirúgni a játékból! - + Joining a private Game Csatlakozás privát játékhoz - - - + + + Game Játék - - - + + + Players Játékosok - - - + + + State Állapot @@ -2134,43 +2151,41 @@ p, li { white-space: pre-wrap; } Privát - + You are about to join a private game. Please enter the password! Egy privát játékot választottál. A csatlakozáshoz add meg a jelszót! - + running fut - + open nyitott - - Connected players - Csatlakozott játékosok + Csatlakozott játékosok - + hands osztás - + minutes perc - + double blinds vakok duplázása - + manual blinds order egyéni vaksorrend @@ -2184,1337 +2199,1336 @@ p, li { white-space: pre-wrap; } R - - - + + + P P - - - + + + Time - - - + + + Available Players Elérhető játékosok - + Invite player Játékos meghívás - + Ignore player Játékos tiltása - + Player infos ... Játékos információk … - - + + Show player stats - - + + Admin action ... - + Total kickban - + Report inappropriate game name - + Close game - - - + + + Standard Normál - - - + + + Registered players only Csak regisztrált játékosok - - - + + + Invited players only Csak meghívott játékosok - - - + + + Ranking game Ranglistás játék - Connected players - max. %1 - Csatlakozott játékosok – max. %1 + Csatlakozott játékosok – max. %1 - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania litván - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - - - + + + T T @@ -3529,82 +3543,85 @@ p, li { white-space: pre-wrap; } - - - + + Spectate + + + + + + sec (action) - - - + + + sec (hand delay) - - Connected players - Max. %1 - Csatlakozott játékosok – Max. %1 + Csatlakozott játékosok – Max. %1 - - + + running games: %1 futó játékok: %1 - - + + open games: %1 nyitott játékok: %1 - + Invite %1 %1 meghívása - + Ignore %1 %1 tiltása - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 meghívta %1 nevű játékost a(z) %2 játékba.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 elutasította a meghívást a(z) %2 játékba.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 nem tud csatlakozni a(z) %2 játékba, mert elfoglalt.</span> - - + + The game will start in<br><b>%1</b> seconds. A játék <br><b>%1</b> másodperc múlva indul. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Csatlakoztál egy „csak meghívásos” játékhoz. Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gombbal és meghívás. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? <b>%1</b> meghívott a(z) <b>%2</b> nevű játékba.<br>Szeretnél csatlakozni? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Többé nem fogod megkapni az üzeneteket és a játék meghívásokat ettől a felhasználótól. <br> Biztosan tiltani szeretnéd <b>%1</b> nevű felhasználót? @@ -3613,52 +3630,65 @@ Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gomb csevegő játékosok: %1 - - + + connected players: %1 csatlakozott játékosok: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + search for player ... játékos keresése … - + Chat is only available to registered players. A csevegés csak regisztrált játékosoknak érhető el. - + Invite player ... Játékos meghívása … - + Ignore player ... Játékos tiltása … - + %1 is playing in "%2". %1 a következő szobában játszik: %2. - + %1 is not playing at the moment. %1 jelenleg nem játszik. - - + + PokerTH - Info Message PokerTH – Információk - - - - + + + + PokerTH - Question PokerTH – Kérdés @@ -3678,7 +3708,7 @@ Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gomb QGroupBox { background-image: url(:/graphics/resources/graphics/toolboxFrameBG.png) } - + Speed: Sebesség: @@ -3695,77 +3725,77 @@ Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gomb Játék - - + + Ctrl+N Ctrl+N - - + + Quit Kilépés - - + + About PokerTH ... A PokerTH -ról … - - + + Settings ... Beállítások … - - + + Create Network Game ... Hálózati játék létrehozása … - - + + Join Network Game ... Belépés hálózati játékba … - - - + + + Fullscreen Teljes képernyő - + Hands Sorrend - + Chat Társalgó - + Player info - + Log Napló - - + + Start Local Game ... Helyi játék indítása… - - + + Ctrl+Q Ctrl+Q @@ -3778,8 +3808,8 @@ Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gomb ⌘F - - + + Show/Hide Chat Window Társalgó mutatása/elrejtése @@ -3792,8 +3822,8 @@ Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gomb ⌘H - - + + Show/Hide Log Window Napló mutatása/elrejtése @@ -3802,53 +3832,53 @@ Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gomb ⌘L - - - - - - + + + + + + Show/Hide Hands Window Sorrend mutatása/elrejtése - - + + Ctrl+O Ctrl+O - + Save Mentés - - + + Ctrl+J Ctrl+J - - + + Ctrl+F Ctrl+F - - + + Ctrl+T Ctrl+T - - + + Ctrl+H Ctrl+H - - + + Ctrl+L Ctrl+L @@ -3857,34 +3887,34 @@ Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gomb PokerTH 0.5 - A nyílt forráskódú Texas Holdem játék {0.6 ?} - - + + Internet Game ... Internetes játék … - - + + Ctrl+I Ctrl+I - + Away Távollét - + Manual Action (default) Egyéni akció (alapértelmezés) - + Auto-Check / Auto-Fold Auto-Passz / Auto-Eldobás - + Auto-Check / Auto-Call-Any Auto-Passz / Auto-Bármi-tartás @@ -3894,98 +3924,98 @@ Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gomb PokerTH 0.6-beta - A nyílt forráskódú Texas Holdem játék - - + + Show/Hide Away Window Távollét mutatása/elrejtése - - + + Ctrl+A Ctrl+A - + Kick Kidobás - + Vote Timeout: Szavazás időkorlátja: - + Yes igen - + No nem - + Chance Esélyek - + Settings Beállítások - + Configure PokerTH - + Configure PokerTH ... PokerTH beállítása … - - + + Close Bezárás - - + + Ctrl+X Ctrl-X - + Vote started by: A szavazást kezdeményezte: - - + + Show/Hide Chance Window Esélyek mutatása/elrejtése - - + + Ctrl+C Ctrl+C - + &View &Nézet - + &Settings &Beállítások - + Shortcut: <Shift> Billentyűparancs: <Shift> @@ -4111,31 +4141,31 @@ Kérlek válassz egy másik nevet. Cmd+N – új játék indítása - - - - - - - - + + + + + + + + Start Indítás - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Leállítás @@ -4165,8 +4195,8 @@ Ha a szerver NAT router mögött van, akkor bizonyosodj meg róla hogy a port to A kliens játékos száma érvénytelen. - - + + Chat Csevegés @@ -4191,98 +4221,103 @@ Ha a szerver NAT router mögött van, akkor bizonyosodj meg róla hogy a port to F1 - All-In | F2 -Emel/Ráemel | F3 - Passz/Tart | F4 - Eldob - + Closing PokerTH during network game PokerTH bezárása hálózati játék alatt - + You are the hosting server. Do you want to close PokerTH anyway? Te vagy a hálózati kiszolgáló. Biztosan bezárod az alkalmazást? - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - A nyílt forrású Texas Holdem motor - - - - - + + + + + Lobby Társalgó - + PokerTH - Internet Game Message PokerTH – Internetes játék üzenetei - + Attention! Do you really want to leave the current game and go back to the lobby? Figyelem! Biztosan elhagyod az aktuális játékot, és kilépsz a társalgóba? - - + + Chance Esélyek - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Kidobás - - + + Do you want to kick <b>%1</b><br>from this game? Ki akarod dobni <b>%1</b>-t<br>a játékból? - - - - + + + + <b>%1</b> secs left <b>%1</b> mp. maradt - + vote szavazat - + votes szavazat - - + + Chat is only available to registered players. A csevegés csak regisztrált játékosok számára érhető el. + + + Spectators + + PokerTH - Warning PokerTH – Felhívás @@ -4306,14 +4341,14 @@ Ha hosszabbtávon nem vagy gépközelben használd a „távol” kapcsolót.<b>%1</b> %2 gyűlt össze ellened.<br><b>%3</b> szavazat kell a kidobáshoz. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. <b>%1</b> játékos elllen <b>%2</b> %3<br>gyűlt össze. <b>%4</b> szavat kell a kidobáshoz. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. <b>%1</b> %2 gyűlt össze ellened.<br><b>%3</b> szavazat kell a kidobáshoz. @@ -4549,24 +4584,20 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Hiba a kiszolgáló profil-fájl betöltésekor - - - - Could not load server-profiles-file: - Nem lehet betölteni a kiszolgáló profil-fájlt: + Nem lehet betölteni a kiszolgáló profil-fájlt: - + Save Server Profile Error Hiba a kiszolgáló profil mentése közben @@ -4575,30 +4606,44 @@ p, li { white-space: pre-wrap; } Profil a következő névvel:" - + + + + + Could not load server-profiles-file: +%1 + + + + Read Server-Profile List Error Hiba a kiszolgáló profil olvasása közben - + Could not read server-profiles list Nem sikerült beolvasni a kiszolgáló profil listát - - + + Save Server-Profile-File Error Hiba a kiszolgáló profil-fájl mentése közben - - + + Could not save server-profiles-file: - - Nem sikerült elmenteni a kiszolgáló profil-fájlt: +%1 + - + Could not save server-profiles-file: + + Nem sikerült elmenteni a kiszolgáló profil-fájlt: + + + A profile with the name: %1 already exists. Would you like to overwrite ? %1 nevű profil már létezik. @@ -4666,12 +4711,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order Vaktétek megadása - + You cannot set more than 30 manual blinds. Nem állíthatsz be 30-nál több vaktétet. @@ -4716,7 +4761,7 @@ Would you like to overwrite ? - + Game Speed: Játék sebessége: @@ -4748,7 +4793,7 @@ Would you like to overwrite ? - + Use saved blinds settings Elmentett vakbeállítások használata @@ -4759,7 +4804,7 @@ Would you like to overwrite ? - + Change blinds settings ... Vaktétek beállítása… @@ -4806,14 +4851,14 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Avatar-fájl hiba - + Please select an avatar from the list! Kérlek válassz egy avatart a listából! @@ -4824,7 +4869,7 @@ Please enter an valid picture! Kérlek válassz egy valós képet! - + Select external avatar picture Avatar kép választása külső forrásból @@ -4833,19 +4878,19 @@ Kérlek válassz egy valós képet! Képek (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! A kiválasztott fájl mérete túl nagy (max. 30KB) Válassz kisebb képet! - + Images (*.png *.jpg *.gif) Képek (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! A választott avatar kép nem létezik. @@ -4885,10 +4930,10 @@ p, li { white-space: pre-wrap; } Kis vak: - - - - + + + + Start Cash: Kezdő zseton: @@ -4901,24 +4946,24 @@ p, li { white-space: pre-wrap; } Kiszolgáló beállítások - - - - + + + + Server Port: Kiszolgáló port: - - - - + + + + Use IPv6 IPv6 használata - - + + Server Password: Kiszolgáló jelszó: @@ -4927,43 +4972,43 @@ p, li { white-space: pre-wrap; } Hálózati játék alapértelmezett beállításai - - + + Computer Engine Gépi ellenfelek - - + + Opponent 5: Ellenfél 5: - - + + Opponent 3: Ellenfél 3: - - + + Opponent 2: Ellenfél 2: - - + + Opponent 1: Ellenfél 1: - - + + Opponent 4: Ellenfél 4: - + Human Player: Emberi játékos: @@ -4976,31 +5021,31 @@ p, li { white-space: pre-wrap; } napig - - + + Log File Directory: Naplófájl: - + Log Messages Naplózott üzenetek - + Local Game Settings Helyi játék beállításai - + Network Game Settings Hálózati játék beállításai - - + + Show flip-card animation Kártya animáció mutatása @@ -5009,8 +5054,8 @@ p, li { white-space: pre-wrap; } Saját kártya hátoldal: - - + + Show fade-out animation for non-winning cards A nem nyertes kártyák animált eltűnése @@ -5019,18 +5064,18 @@ p, li { white-space: pre-wrap; } Nyitókép mutatása játék indításakor - + Show right toolbox Jobboldali panel mutatása - + Show left toolbox Baloldali panel mutatása - - + + Play blind raise notification @@ -5039,8 +5084,8 @@ p, li { white-space: pre-wrap; } Információs sáv üzeneteinek megjelenítése - - + + Show game settings dialog on every new game Játékbeállítások mutatása minden új játék indításánál @@ -5049,20 +5094,20 @@ p, li { white-space: pre-wrap; } Kis vak emelése előtti körök: - - + + Number of players: Játékosok száma: - - + + Game Speed: Játék sebessége: - - + + Pause between hands (press "start" button to go on) Szünet az osztások között („Indítás” gomb lenyomására megy tovább) @@ -5075,8 +5120,8 @@ p, li { white-space: pre-wrap; } Program verzió (gépi ellenfeleké): - - + + Enable/Disable Logging Naplózás engedélyezése/tiltása @@ -5085,20 +5130,20 @@ p, li { white-space: pre-wrap; } Naplófájl tárolása - - + + Write log after every: Naplózás minden esemény után: - - + + Show buttons for small blind and big blind Kis vak és Nagy vak gombok mutatása - - + + Play sound effects Hangok lejátszása @@ -5107,26 +5152,26 @@ p, li { white-space: pre-wrap; } 0.4 (aktuális) - - - - + + + + Use SCTP SCTP használata - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Mi ez?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Mi ez?</a> @@ -5148,20 +5193,20 @@ Szélesség = 50 kpt, magasság = 50 kpt.</span></p></body>< Beállítások - - + + Maximum number of players: Játékosok maximális száma: - - + + Sound Volume: Hangerő: - - + + 10 10 @@ -5171,85 +5216,85 @@ Szélesség = 50 kpt, magasság = 50 kpt.</span></p></body>< idő (mp.): - - + + Opponent 6: Ellenfél 6: - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + action (high frequent disc access) Akció (magas lemezhasználat) - - + + hand (medium disc access) Kör (közepes lemezhasználat) - - + + game (low disc access) Játék (alacsony lemezhasználat) - - + + Show own cards only on mouse click Saját kártyákat csak egér kattintásra mutat - + Sound Hang - + Factory Settings - - + + Show country flag in the corner of avatar - - - - + + + + Description Leírás - - - - + + + + Maintainer Készítő - - - + + + State Állapot - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5268,42 +5313,42 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Tipp: a legjobb minőség a következő arányokkal érhető el: </span><span style=" font-weight:600; font-style:italic;">szélesség=48, magasság=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Szünet az osztások között: - - + + Network Server Settings Hálózati kiszolgáló beállításai - + Internet Game Settings Internetes játék beállításai - - + + Server Kiszolgáló - - + + Server Address: Kiszolgáló címe: - - + + Game Játék - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5311,56 +5356,56 @@ p, li { white-space: pre-wrap; } - - + + Default game name: Alapértelmezett játéknév: - - + + Default game type: Alapértelmezett játéktípus: - - + + Standard Normál - - + + Registered players only Csak regisztrált játékosok - - + + Invited players only Csak meghívott játékosok - - + + Ranking game Ranglistás játék - - + + Use password for private game: Jelszó privát játékhoz: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5397,46 +5442,46 @@ p, li { white-space: pre-wrap; } #pokerth - - - - + + + + First small blind: Első kis vak: - - + + Disable splashscreen on startup Indítóképernyő elrejtése a játék indításakor - - + + Game Table Pókerasztal - - + + Card Deck Kártyapakli - - + + Card Back Kártya hátlap - - + + Use card back from card style A kártyapakli stílus hátlapjának használata - - + + Use custom card back picture: Saját kártya hátlap használata: @@ -5454,163 +5499,187 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Tipp: a legjobb minőség a következő arányokkal érhető el: </span><span style=" font-weight:600; font-style:italic;">szélesség=76, magasság=48.</span></p></body></html> - - - - + + + + Raise blinds: Vaktétek emelése: - - - - - - - - + + + + + + + + Every: Minden: - - - - + + + + hands osztást követően - - - - + + + + minutes perc után - - - - + + + + Raise mode: Emelés módja: - - - - + + + + Always double blinds Vaktétek duplázása - - - - + + + + Manual blinds order: Vaktétek megadása: - - - - + + + + Edit ... Szerkesztés… - - + + Language: Nyelv: - - + + + Common + + + + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Sound Categories Hang típusok - - + + Play game actions sounds like "check", "call", "raise" Hangok lejátszása minden lépésnél (pl. „passz”, „tartás”, „emelés”) - - + + Play lobby chat notifications Figyelmeztető hangok a társalgóba - - + + Play network/internet game notifications like "player joined the game" Figyelmeztető hangok hálózati/internetes játék alatt (pl. „játékos csatlakozott”) - - + + Show lobby chat Társalgó csevegés megjelenítése - - + + Automatically leave the table after the game finished - - + + + Allow spectators to watch the game + + + + + Ignored Players Tiltott játékosok - - + + Player Játékos - - + + Remove Player Eltávolított játékos - + OK - + Player Nicks/Avatars Játékos becenév/avatar - + Reverse order of F-Keys (F1 - F4) F-gombok fordított sorrendje (F1 - F4) - - + + Network / Internet Game Hálózati / Internetes játék - - + + Switch keyboard focus to bet-input-field if it's your turn Ha te vagy soron, a billentyűzet fókusza az emelés beviteli mezőre áll @@ -5622,28 +5691,28 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Tipp: a legjobb minőség a következő arányokkal érhető el: </span><span style=" font-weight:600; font-style:italic;">szélesség=100, magasság=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Játékos rendelkezésére álló idő: - - - - + + + + s mp @@ -5656,7 +5725,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Figyelem: A <span style=" font-weight:600; font-style:italic;">Hálózati játék</span> alapértelmezett beállításai kerülnek kiválasztásra </span><span style=" font-style:italic;">(pl. "Játékosok maximális száma", "Kezdő zseton", "Kis vak")</span>.</p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5664,25 +5733,25 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Tipp: a legjobb avatar minőség a következő arányokkal érhető el: </span><span style=" font-weight:600; font-style:italic;">szélesség=50, magasság=50.</span></p></body></html> - - + + Automatic Server Configuration URL Automatikus kiszolgáló beállítások URL címe - - + + Serverlist Address: Kiszolgálólista címe: - - + + Manual Server Configuration Kézi kiszolgáló beállítás - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5695,14 +5764,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Játékos neve:<br /><span style=" font-style:italic;">(Ez a becenév fog mejelenni az internetes játéknál is)</span></p></body></html> - - + + Store log files for: - - + + Day(s) napig @@ -5731,8 +5800,8 @@ p, li { white-space: pre-wrap; } Becenév/Avatar - - + + Show cards chance monitor Kártyakombináció esélyek megjelenítése @@ -5749,21 +5818,21 @@ p, li { white-space: pre-wrap; } Jelszó: - - + + Avatar Server: Avatar kiszolgáló: - + Style Stílus - - + + Don't translate poker strings like check, call, raise from game table style Játék lehetőségek (check – passz, call – hívás, raise – emelés) fordításának mellőzése @@ -5776,32 +5845,32 @@ p, li { white-space: pre-wrap; } Aktiválás - - - - + + + + Add ... Hozzáadás … - - - - + + + + Remove Eltávolítás - - - - + + + + Preview - Information: Előnézet – Információ: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5819,8 +5888,8 @@ p, li { white-space: pre-wrap; } Kártyapakli stílus - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5833,29 +5902,29 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Még több kártyapakli stílus letöltése ...</span></a></p></body></html> - + Note: Best quality with image ratio like width=48, height=76. - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 7: Ellenfél 7: - - + + Opponent 8: Ellenfél 8: @@ -5864,8 +5933,8 @@ p, li { white-space: pre-wrap; } Ellenfél 6: {10:?} - - + + Opponent 9: Ellenfél 9: @@ -5873,11 +5942,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Beállítási hiba @@ -5894,7 +5963,7 @@ Please select an valid directory! Kérlek válassz egy valós mappát! - + Select your flipside picture Válaszd ki a kártya hátoldalának képét @@ -5903,24 +5972,24 @@ Kérlek válassz egy valós mappát! Képek (*.png) - + Open Directory Mappa megnyitása - + Images (*.png *.jpg *.gif) Képek (*.png *.jpg *.gif) - - + + Blinds Error Hiba a vaktétekben - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5982,12 +6051,12 @@ Az első kis vak a legnagyobb megengedett értékre módosul. török - + Language Changed Nyelv módosítva - + You have changed application language to %1. Please restart PokerTH to load new language! Az alkalmazás új nyelve: %1. @@ -6024,15 +6093,15 @@ A beállítás a PokerTH újraindítása után jut érvényre! tamil - + The entered flipside picture doesn't exist. Please enter an valid picture! A kért kártya hátoldal kép nem létezik. Kérlek válassz egy valós képet! - - + + The log file directory doesn't exist. Please select an valid directory! A naplófájl mappája nem elérhető. @@ -6074,7 +6143,7 @@ Kérlek válassz egy valós mappát! svéd - + The entered server list address is not a valid URL. Please enter a valid server list address! A megadott kiszolgálólista URL-je érvénytelen. @@ -6111,138 +6180,138 @@ Kérlek adj meg egy valós kiszolgálólista címet! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Készítette - - + + Maintainer EMail E-mail cím - - + + Create Date Dátum - + Windows Behaviour Ablak viselkedése - + scaleable alkalmazkodó - + fixed rögzített - + Minimum Size Legkisebb méret - + Maximum Size Legnagyobb méret - + Fixed Size Rögzített méret - + State Állapot - + Please select your game table style Válaszd ki a pókerasztal stílusát - + PokerTH game table styles (*.xml) PokerTH pókerasztal stílus (*.xml) - + Game Table Style Error Pókerasztal stílus hiba - + Selected game table style file is already in the list. Please select another one to add! A kiválasztott asztal stílus már szerepel a listán Válassz másikat! - + Game Table Style File Error Pókerasztal stílus fájl hiba - + Could not load game table style file correctly. Style will not be placed into list! Nem sikerült az asztal stílus betöltése. A stílus nem kerül a listára! - + Please select your card deck style Válaszd ki a kártyapakli stílusát - + PokerTH card deck styles (*.xml) PokerTH kártyapakli stílus (*.xml) - + Card Deck Style Error Kártyapakli stílus hiba - + Selected card deck style file is already in the list. Please select another one to add! A kiválasztott pakli stílus már szerepel a listán Válassz másikat! - + Card Deck Style File Error Kártyapakli stílus fájl hiba - + Could not load card deck style file correctly. Style will not be placed into list! Nem sikerült a pakli stílus betöltése. @@ -6265,12 +6334,12 @@ A stílus nem kerül a listára! PokerTH SQL napló (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6347,12 +6416,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Kiszolgáló hiba - + You should not kick yourself from this game! Nem tudod saját magadat kirúgni a játékból! @@ -6537,127 +6606,127 @@ Please choose another one. Kérlek válassz másik nevet. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Hálózati játék indítása - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Hálózati hiba - + Server address was not set. Kiszolgáló cím nincs beállítva. - + An invalid port was set (ports 0-1023 are not allowed). Hibás port van beállítva (A portok 0-1023-ig nem engedélyezettek). - + Could not create a socket for TCP communication. Nem lehet létrehozni socket-et a TCP kommunikációhoz. - + Could not set the IP address. Nem lehet beállítani az IP címet. - + Could not set the port for this type of address. Nem lehet beállítani a portot ehhez a cím típushoz. - + The server name could not be resolved. A kiszolgáló név feloldása nem lehetséges. - + Bind failed - please choose a different port. Kapcsolódás sikertelen – kérlek válassz másik portot. - + Internal network error: "listen" failed. Belső hálózati hiba: sikertelen "fülelés". - + Server execution was terminated. Kiszolgáló futtatása befejezve. - + Could not connect to the server. Nem lehet kapcsolódni a kiszolgálóhoz. - + Connection timed out. Please check the server address. @@ -6667,58 +6736,58 @@ Kérlek ellenőrizd a kiszolgáló címét. Ha a kiszolgáló NAT router mögött van, akkor bizonyosodj meg róla hogy a porttovábbítás engedélyezett. - + Internal network error: "select" failed. Belső hálózati hiba: sikertelen "kiválasztás". - + Internal network error: "send" failed. Belső hálózati hiba: sikertelen "küldés". - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. @@ -6727,31 +6796,31 @@ because the nick could not be found in the database A kiszolgáló megszakította a kapcsolatot. - + The connection to the server was lost. - + Internal network error: Duplicate TCP connection. Belső hálózati hiba: Duplikált TCP kapcsolat. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Érvénytelen hálózati csomag került fogadásra. Kérlek bizonyosodj meg róla, hogy az összes játékos ugyanazt a verziót használja. - + Internal state error. Please make sure that all players use the same version of PokerTH. Belső hiba. Kérlek bizonyosodj meg róla, hogy az összes játékos ugyanazt a verziót használja. - + Invalid server list URL. Please correct the address in the settings. Érvénytelen kiszolgálólista URL. @@ -6770,63 +6839,63 @@ Please make sure that the server list URL is correct. Kérlek győződj meg a lista címének érvényességéről. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. A PokerTH internetes kiszolgálólistája hibás adatot tartalmaz. Ha egyéni listát használsz, kérlek győződj meg a formátum érvényességéről. - + Could not unzip the PokerTH internet server list. Nem sikerült a PokerTH internetes kiszolgálólista kicsomagolása. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Nem sikerült a PokerTH internetes kiszolgálólista letöltése. Kérlek ellenőrizd az internetes kapcsolatodat. - + Could not open the target file when downloading the server list. A kiszolgálólista letöltése közben a cél fájlt nem sikerült megnyitni. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. A PokerTH kiszolgáló nem támogatja ezt a verziót.<br>Kérlek látogass el a következő címre <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> és töltsd le a legfrissebb verziót. - + Sorry, this server is already full. Sajnáljuk, de ez a kiszolgáló jelenleg tele van. - + Invalid login. Please check your username and password. Hibás bejelentkezés. Ellenőrizd a felhasználónevet és a jelszót. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. @@ -6836,24 +6905,24 @@ Ellenőrizd a felhasználónevet és a jelszót. A fiókod határozatlan időre blokkolva lett. - + You cannot login at this time. Please try again in a few seconds. Most nem jelentkezhetsz be. Próbáld meg kicsit később. - + This game is of type invite-only. You cannot join this game without being invited. A játék meghívásos. Csak akkor tudsz csatlakozni, ha valaki meghívott. - + Invalid password when joining the game. Please reenter the password and try again. Hibás jelszó a játékhoz való csatlakozáskor. Kérlek írd be a jelszót még egyszer és próbáld újra. - + The password is too long. Please choose another one. A jelszó túl hosszú. Kérlek válassz egy rövidebbet. @@ -6869,73 +6938,73 @@ Kérlek válassz egy másik nevet. Kérlek válassz egy másik nevet. - + The game name is either too short or too long. Please choose another one. A játék nevet vagy túl rövid vagy túl hosszú. Kérlek válassz egy másik nevet. - + The game could not be found. A játék nem található. - + The chat text is invalid. A csevegő üzenet érvénytelen. - + The server referred to an unknown player. Aborting. A kiszolgáló egy ismeretlen játékosra hivatkozott. Megszakítás. - + Internal error: The current player could not be found. Belső hiba: az aktuális játékos nem található. - + Internal error: The current player is not active. Belső hiba: az aktuális játékos nem aktív. - + You were kicked from the server. A kiszolgáló kidobott a játékból. - + You were temporarily banned from the server. Ideiglenesen ki vagy tiltva a kiszolgálóról. - + Your account is blocked indefinitely. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! A kiszolgáló kapcsolat inaktivitás miatt megszakadt. Bármikor újra csatlakozhatsz! - + The client player count is invalid. A kliens játékosok száma érvénytelen. - + Too many manual blinds were set. Please reconfigure the manual blinds. Túl sok vaktét van megadva. Kérlek módosítsd a vakbeállításokat. - + An invalid avatar file was configured. Please choose a different avatar. Érvénytelen avatar fájl lett megadva. Kérlek válassz másik avatart. - + The selected avatar file is too large. Please choose a different avatar. A kiválasztott avatar fájl túl nagy. Kérlek válassz másik avatart. @@ -6944,78 +7013,78 @@ Kérlek válassz egy másik nevet. Jelenleg nem tudsz új avatar fájlt feltölteni. Kérlek próbáld újra néhány másodperc múlva. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Belső avatar hiba lépett fel. Kérlek jelezd ezt egy adminnak a társalgóban. - + Could not start game: Synchronization failed. A játék indítása sikertelen: szinkronizációs hiba. - + The server is down for maintenance. Please try again later. A kiszolgáló karbantartás miatt nem üzemel. Kérlek próbáld újra később. - + An internal error occured. Belső hiba lépett fel. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Hálózati figyelmeztetés - + You cannot join this game, because another player in that game has your network address. - + Your connection to the server is very slow, the game had to start without you. - + You were kicked from the game. Kidobtak a játékból. - + Sorry, this game is already full. Elnézést, ez a játék jelenleg tele van. - + Unable to join - the server has already started the game. Csatlakozás sikertelen – a kiszolgáló már elindította a játékot. - + Your admin state timed out due to inactivity. Feel free to create a new game! Inaktivitás miatt nem vagy már admin. Kezdj nyugodtan új játékot! - + You cannot join this type of game as guest. Nem csatlakozhatsz vendégként ehhez a játékhoz. - + The settings are invalid for this type of game. Érvénytelen beállítások ehhez a játékhoz. @@ -7025,13 +7094,13 @@ Kérlek válassz egy másik nevet. Elérhető a PokerTH egy újabb verziója. <br>Kérlek látodass el a <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> oldalra és töltsd le a legfrissebb verziót. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Ez a PokerTH béta verzió már idejétmúlt. <br>Kérlek látodass el a <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> oldalra és töltsd le a legfrissebb verziót. - - + + Server Message Kiszolgáló üzenet diff --git a/ts/pokerth_it.ts b/ts/pokerth_it.ts index 24b5cf1c..349ae391 100644 --- a/ts/pokerth_it.ts +++ b/ts/pokerth_it.ts @@ -1,7 +1,6 @@ -UTF-8 CardDeckStyleReader @@ -260,22 +259,22 @@ Per favore, contatta il responsabile dello stile via "%4".Errore sullo Stile del Tavolo da Gioco - Obsoleto - + Everything OK! Tutto OK! - + Some pictures are missing, please contact style maintainer for this issue. Mancano alcune immagini, per favore contatta il responsabile dello stile. - + Some style fields are missing, please contact style maintainer for this issue. Mancano alcuni campi, per favore contatta il responsabile dello stile. - + This style is outdated, please contact style maintainer for this issue. Questo stile è obsoleto, si prega di contattare il responsabile dello stile. @@ -436,52 +435,52 @@ Contatta il responsabile dello stile, %3. Esamina file di registro ... - + PokerTH - Delete log files PokerTH - Elimina file di registro - + Do you really want to delete the selected log files? Desideri veramente cancellare i file di registro selezionati? - + Remove log file Rimuovi il file di registro - + PokerTH cannot remove this log file, please verify that you have write access to this file! Impossibile rimuovere questo file di registro, controllare di avere i permessi necessari! - + Export PokerTH log file to HTML Esporta il file di registro di PokerTH in HTML - + PokerTH HTML log (*.html) Registro di PokerTH in formato HTML (*.html) - + Export PokerTH log file to plain text Esporta il file di registro di PokerTH in formato testo - + PokerTH plain text log (*.txt) Registro di PokerTH in formato testo (*.html) - + Save PokerTH log file Salva il file di registro di PokerTH - + PokerTH SQL log (*.pdb) Registro PokerTH SQL (*.pdb) @@ -533,14 +532,14 @@ Uploading log files may fail if you are using an http proxy. L'upload dei file di registro potrebbe non funzionare se si sta usando un proxy http. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Elaborazione del file di registro sul server web non riuscita. Controlla di stare caricando un file di registro di PokerTH valido. - + Failure reason: Causa dell'errore: @@ -577,18 +576,18 @@ Controlla di stare caricando un file di registro di PokerTH valido.Segnala avatar non appropriato - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Non riceverai più messaggi di chat o inviti a partite da questo utente.<br>Vuoi veramente inserire l'utente <b>%1</b> nella lista degli utenti ignorati? - - + + PokerTH - Question PokerTH - Domanda - + Are you sure you want to report the avatar of "%1" as inappropriate? Desideri veramente segnalare l'avatar di "%1" come non appropriato? @@ -621,11 +620,50 @@ Controlla di stare caricando un file di registro di PokerTH valido. aboutPokerth - - + + About Informazioni + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">Emiliano Volta - emiliano.volta@gmail.com</span></p></td></tr></table></body></html> + + + + + Third party libs + Librerie di terze parti + About PokerTH 0.5 Informazioni su PokerTH 0.5 @@ -639,8 +677,8 @@ Controlla di stare caricando un file di registro di PokerTH valido.Informazioni su PokerTH 0.6-beta - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> @@ -761,7 +799,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - per il lavoro di moderazione sul forum, l'organizzazione del bugtracker e la gestione delle richieste di nuove feature</p></td></tr></table></body></html> - + Close Chiudi @@ -1774,8 +1812,8 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Pagina progetto: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> <a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">IRC: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> #pokerth (irc.freenode.net)</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Autori: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Felix Hammer (<a href="mailto:doitux@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - idea iniziale, achitettura di base, implementazione gui, pacchetto linux</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Florian Thauer (<a href="mailto:floty@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - idea iniziale, architettura di base, sviluppo motore</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Lothar May (<a href="mailto:lotodore@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - sviluppo di rete, pacchetto windows</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Oskar Lindqvist (<a href="mailto:tranberry@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - grafica gui, webdesign</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Erhard List (<a href="mailto:dunkanx@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">dunkanx@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - pacchetto MacOS</p></body></html> - - + + License Licenza @@ -1872,8 +1910,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - - + + Project Progetto @@ -1924,7 +1962,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - progettazione iniziale elementi GUI</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1943,14 +1980,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Emiliano Volta - emiliano.volta@gmail.com</span></p></td></tr></table></body></html> - - + + Thanks to Ringraziamenti a - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2019,8 +2054,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - per i nuovi suoni del tavolo di gioco</span></p></td></tr></table></body></html> - - + + Translation Traduzione @@ -2564,21 +2599,21 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"><br /></span></p></td></tr></table></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Liberation Sans'; font-size:18px; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> {3C?} {4.0/?} {3.?} {40/?} {1"?} {26p?} {400;?} {0p?} {0p?} {0p?} {0p?} {0;?} {0p?} +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2587,7 +2622,14 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">Emiliano Volta - emiliano.volta@gmail.com</span></p></td></tr></table></body></html> @@ -2842,12 +2884,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Ordine manuale dei blind - + You cannot set more than 30 manual blinds. Non puoi impostare più di 30 blind manuali. @@ -3001,31 +3043,31 @@ Scegli un nome diverso! createInternetGameDialog - - + + $ $ - + Blinds Blind - + Cancel Annulla - + Change blinds settings ... Cambia le impostazioni dei blind... - + Default game name: Nome partita predefinito: @@ -3060,14 +3102,20 @@ Scegli un nome diverso! Valida per la classifica - + Delay between hands: Intervallo una mano e l'altra: - - + + + Allow spectators to watch the game + Consenti agli spettatori di osservare la partita + + + + Create Game Crea Partita @@ -3087,20 +3135,20 @@ Scegli un nome diverso! Impostazioni partita su Internet - - + + Maximum number of players: Numero massimo di giocatori: - - + + Password: Password: - - + + s @@ -3111,13 +3159,13 @@ Scegli un nome diverso! Small Blind: - - + + Start Cash: Contante iniziale: - + Timeout for player action: Tempo limite per l'azione del giocatore: @@ -3127,7 +3175,7 @@ Scegli un nome diverso! Tempo limite per l'azione del giocatore (in secondi): - + Use saved blinds settings Utilizza impostazioni dei blind salvate @@ -3255,68 +3303,74 @@ Scegli un nome diverso! Giocatori Disponibili - - + + 5 - Show open & non-full & ranking games 5 - Visualizza partite aperte, non al complete e valide per la classifica - - + + + Spectators + Spettatori + + + + Game type: Tipo partita: - - + + First small blind: Primo small blind: - - + + Blinds raise interval: Intervallo per l'aumento dei blind: - - + + Blinds raise mode: Modalità di aumento dei blind: - - + + Timing: Tempo: - - + + &Start Game &Inizia partita - - + + &Kick Player &Espelli giocatore - - + + Sort alphabetically Ordina alfabeticamente - - + + Sort by country Ordina per nazionalità - - + + Display idle players Visualizza giocatori liberi @@ -3329,8 +3383,8 @@ Scegli un nome diverso! Modalità di aumento dei blind: - - + + Connected Players Giocatori connessi @@ -3339,8 +3393,8 @@ Scegli un nome diverso! Crea partita - - + + Fill up with computer opponents Completa con avversari gestiti dal computer @@ -3353,8 +3407,8 @@ Scegli un nome diverso! Partita - - + + Game Info Informazioni partita @@ -3393,14 +3447,14 @@ Scegli un nome diverso! Abbandona partita - - + + Lobby-Chat Chat prepartita - - + + Manual blinds list: Lista blind manuali: @@ -3413,8 +3467,10 @@ Scegli un nome diverso! Numero massimo di giocatori: + + Players - Giocatori + Giocatori Private @@ -3425,8 +3481,8 @@ Scegli un nome diverso! Small Blind: - - + + Start Cash: Contante iniziale: @@ -3448,7 +3504,7 @@ Scegli un nome diverso! Partite - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -3469,26 +3525,24 @@ p, li { white-space: pre-wrap; } Tempo limite per l'azione dei giocatori (sec): - - + + &Leave Game &Lascia partita - - Join &any game Entr&a in una partita casuale - - + + &Create Game &Crea partita - - + + &Join Game &Unisciti alla partita @@ -3523,38 +3577,38 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> - - + + 0 - No game list filter 0 - Nessun filtro sulla lista delle partite - - + + search for player ... ricerca giocatore ... - - + + 1 - Show open games 1 - Visualizza partite aperte - - + + 2 - Show open & non-full games 2 - Visualizza partite aperte e non al completo - - + + 3 - Show open & non-full & non-private games 3 - Visualizza partite aperte, non al completo e pubbliche - - + + 4 - Show open & non-full & private games 4 - Visualizza partite aperte, non al completo e private @@ -3566,13 +3620,13 @@ p, li { white-space: pre-wrap; } Partita di %1 - - + + connected players: %1 giocatori connessi: %1 - + double blinds raddoppia blind @@ -3581,51 +3635,51 @@ p, li { white-space: pre-wrap; } partita - - - - + + + + Game Info Informazioni partita - + hands mani - + Joining a private Game Accesso a partita privata in corso - + manual blinds order ordine manuale dei blind - + minutes minuti - - - + + + Game Partita - - - + + + Players Giocatori - - - + + + State Stato @@ -3634,13 +3688,13 @@ p, li { white-space: pre-wrap; } Privato - + open aperta - - + + open games: %1 partite aperte: %1 @@ -3649,7 +3703,7 @@ p, li { white-space: pre-wrap; } giocatori in chat: %1 - + running iniziata @@ -3658,99 +3712,99 @@ p, li { white-space: pre-wrap; } R - - - + + + P P - - - + + + Time Tempo - - - + + + Available Players Giocatori Disponibili - + Invite player Invita giocatore - + Ignore player Ignora giocatore - + Player infos ... Dettagli giocatore ... - - + + Admin action ... - + Azione amministratore ... - + Total kickban - + Lasciato in inglese perchè "espulsione e messa al bando" risultava troppo lungo + Kickban totale - + Report inappropriate game name Segnala nome di partita offensivo - + Close game - + Chiudi partita - - - + + + Standard Standard - - - + + + Registered players only Solo utenti registrati - - - + + + Invited players only Solo utenti invitati - - - + + + Ranking game Valida per la classifica - Connected players - max. %1 Giocatori connessi - max. %1 - - - + + + T T @@ -3760,8 +3814,8 @@ p, li { white-space: pre-wrap; } Attesa dell'inizio della prossima mano per unirsi alla partita... - - + + Show player stats Mostra statistiche giocatore @@ -3774,1314 +3828,1311 @@ p, li { white-space: pre-wrap; } sec (ritardo mano) - - Connected players - Max. %1 Giocatori connessi - Max. %1 - - + + running games: %1 partite in corso: %1 - - Connected players Giocatori connessi - + Server Error Errore del server - + search for player ... Ricerca giocatore ... - + Chat is only available to registered players. La chat è disponibile solamente ai giocatori registrati. - + Invite %1 Invita %1 - + Ignore %1 Ignora %1 - + %1 is playing in "%2". %1 sta giocando in "%2". - + %1 is not playing at the moment. %1 non sta giocando in questo momento. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 è stato invitato a %2 da %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 ha rifiutato l'invito a %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 non può partecipare %2 perchè risulta occupato.</span> - - + + The game will start in<br><b>%1</b> seconds. La partita inizierà tra<br><b>%1</b> secondi. - + Afghanistan - + ALand Islands Isole ALand - + Albania - + Algeria - + American Samoa Samoa Americane - + Andorra - + Angola - + Anguilla - + Antarctica Antartide - + Antigua And Barbuda Antigua e Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus Bielorussia - + Belgium Belgio - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina Bosnia Herzegovina - + Botswana - + Bouvet Island Isola Bouvet - + Brazil Brasile - + British Indian Ocean Territory Territorio britannico dell'oceano Indiano - + Brunei Darussalam Sultanato del Brunei - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia Cambogia - + Cameroon Camerun - + Canada - + Cape Verde Capo Verde - + Cayman Islands Isole Cayman - + Central African Republic Repubblica Centrafricana - + Chad Ciad - + Chile Cile - + China Cina - + Christmas Island Isola di Natale - + Cocos (Keeling) Islands Isole Cocos e Keeling - + Colombia - + Comoros Comore - + Congo - + Congo, The Democratic Republic Of The Repubblica Democratica del Congo - + Cook Islands Isole Cook - + Costa Rica - + Cote D'Ivoire Costa D'Avorio - + Croatia Croazia - + Cuba - + Cyprus Cipro - + Czech Republic Repubblica Ceca - + Denmark Danimarca - + Djibouti Gibuti - + Dominica Dominica - + Dominican Republic Repubblica Dominicana - + Ecuador - + Egypt Egitto - + El Salvador - + Equatorial Guinea Guinea Equatoriale - + Eritrea - + Estonia - + Ethiopia Etiopia - + Falkland Islands (Malvinas) Isole Falkland (Malvine) - + Faroe Islands Isole Faroe - + Fiji - + Finland Finlandia - + France Francia - + French Guiana Guiana Francese - + French Polynesia Polinesia Francese - + French Southern Territories Territori Francesi del Sud - + Gabon - + Gambia - + Georgia - + Germany Germania - + Ghana - + Gibraltar Gibilterra - + Greece Grecia - + Greenland Groenlandia - + Grenada - + Guadeloupe Guadalupa - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands Isole Heard e McDonald - + Holy See (Vatican City State) Santa Sede (Città Del Vaticano) - + Honduras - + Hong Kong - + Hungary Ungheria - + Iceland Islanda - + India - + Indonesia - + Iran, Islamic Republic Of Iran - + Iraq - + Ireland Irlanda - + Isle Of Man Isola di Man - + Israel Israele - + Italy Italia - + Jamaica - + Japan Giappone - + Jersey - + Jordan Giordania - + Kazakhstan Kazakistan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of Corea del Nord - + Korea, Republic Of Corea del Sud - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic Laos - + Latvia Lettonia - + Lebanon Libano - + Lesotho - + Liberia - + Libyan Arab Jamahiriya Libia - + Liechtenstein - + Lithuania Lituania - + Luxembourg Lussemburgo - + Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia - + Madagascar - + Malawi - + Malaysia Malesia - + Maldives Maldive - + Mali - + Malta - + Marshall Islands Isole Marshall - + Martinique Martinica - + Mauritania - + Mauritius - + Mayotte - + Mexico Messico - + Micronesia, Federated States Of Micronesia - + Moldova, Republic Of Moldavia - + Monaco - + Mongolia - + Montserrat - + Morocco Marocco - + Mozambique Mozambico - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands Olanda - + Netherlands Antilles Antille Olandesi - + New Caledonia Nuova Caledonia - + New Zealand Nuova Zelanda - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island Isole Norfolk - + Northern Mariana Islands Isole Marianne Settentrionali - + Norway Norvegia - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied Palestina - + Panama - + Papua New Guinea Papua Nuova Guinea - + Paraguay - + Peru Perù - + Philippines Filippine - + Pitcairn - + Poland Polonia - + Portugal Portogallo - + Puerto Rico Porto Rico - + Qatar - + Reunion Riunione - + Romania - + Russian Federation Federazione Russa - + Rwanda Ruanda - + Saint Helena Sant'Elena - + Saint Kitts And Nevis Saint Kitts e Nevis - + Saint Lucia Santa Lucia - + Saint Pierre And Miquelon Saint-Pierre e Miquelon - + Saint Vincent And The Grenadines Saint Vincent e Grenadine - + Samoa - + San Marino - + Sao Tome And Principe Sao Tome e Principe - + Saudi Arabia Arabia Saudita - + Senegal - + Serbia And Montenegro Serbia E Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia Slovacchia - + Slovenia - + Solomon Islands Isole Salomone - + Somalia - + South Africa Sudafrica - + South Georgia And The South Sandwich Islands Georgia del Sud e isole Sandwich meridionali - + Spain Spagna - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen Svalbard e Jan Mayen - + Swaziland - + Sweden Svezia - + Switzerland Svizzera - + Syrian Arab Republic Siria - + Taiwan, Province Of China Taiwan - + Tajikistan Tagikistan - + Tanzania, United Republic Of Tanzania - + Thailand Thailandia - + Timor-Leste Timor Est - + Togo - + Tokelau Tokelau - + Tonga - + Trinidad And Tobago Trinidad e Tobago - + Tunisia - + Turkey Tuchia - + Turkmenistan - + Turks And Caicos Islands Turks e Caicos - + Tuvalu - + Uganda - + Ukraine Ucraina - + United Arab Emirates Emirati Arabi Uniti - + United Kingdom Regno Unito - + United States Stati Uniti - + United States Minor Outlying Islands Isole minori esterne degli Stati Uniti d'America - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British Isole Vergini britanniche - + Virgin Islands, U.S. Isole Vergini americane - + Wallis And Futuna Wallis e Futuna - + Western Sahara Sahara Occidentale - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Sei sicuro di voler segnalare il nome della partita: "%1" come offensivo? - + Are you sure you want to close the game: "%1"? - + Sei sicuro di voler chiudere la partita: +"%1"? - + Are you sure you want to total kickban the player: "%1"? - + Sei sicuro di voler effettuare un kickban totale del giocatore: "%1"? - + Invite player ... Invita giocatore ... @@ -5091,52 +5142,70 @@ p, li { white-space: pre-wrap; } Clicca qui per visualizzare le statistiche - - - + + Spectate + Osserva + + + + + sec (action) secondi (azione) - - - + + + sec (hand delay) sec (ritardo mani) - + + + Players (%1) + Giocatori (%1) + + + + + + Spectators (%1) + Spettatori (%1) + + + Ignore player ... Ignora giocatore ... - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Sei entrato in una partita "su invito". Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickname nella lista dei giocatori disponibili. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Sei stato invitato alla partita <b>%1</b> da <b>%2</b>.<br>Desideri partecipare alla partita? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Non riceverai più messaggi di chat o inviti a partite da questo utente.<br>Vuoi veramente inserire l'utente <b>%1</b> nella lista degli utenti ignorati? - - + + PokerTH - Info Message PokerTH - Informazione - - - - + + + + PokerTH - Question PokerTH - Domanda @@ -5146,12 +5215,12 @@ Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickna Avvio partita. Attendere prego... - + You are about to join a private game. Please enter the password! Stai per unirti ad una partita privata. Inserisci la password! - + You should not kick yourself from this game! Non puoi auto-espellerti da questa partita! @@ -5159,8 +5228,8 @@ Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickna gameTable - - + + About PokerTH ... Informazioni su PokerTH... @@ -5169,17 +5238,17 @@ Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickna All In - + Auto-Check / Auto-Call-Any Auto-Check / Auto-Call (sempre) - + Auto-Check / Auto-Fold Auto-Check / Auto-Fold - + Away Away @@ -5192,78 +5261,78 @@ Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickna ⌘C - + Chat Chat - - + + Create Network Game ... Crea partita in rete... - - + + Ctrl+A Ctrl+A - - + + Ctrl+F Ctrl+F - + Save Salva - - + + Ctrl+H Ctrl+H - - + + Ctrl+I Ctrl+I - - + + Ctrl+J Ctrl+J - - + + Ctrl+L Ctrl+L - - + + Ctrl+N Ctrl+N - - + + Ctrl+O Ctrl+O - - + + Ctrl+Q Ctrl+Q - - + + Ctrl+T Ctrl+T @@ -5272,9 +5341,9 @@ Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickna ⌘F - - - + + + Fullscreen Tutto schermo @@ -5287,19 +5356,19 @@ Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickna ⌘H - + Hands Mani - - + + Internet Game ... Partita in Internet... - - + + Join Network Game ... Unisciti a una partita in rete... @@ -5308,12 +5377,12 @@ Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickna ⌘L - + Log Registro - + Manual Action (default) Azione manuale (predefinito) @@ -5343,53 +5412,53 @@ Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickna QMainWindow { background-image: url(:/guiv2/resources/guiv2/table.png); background-position: bottom center; background-origin: content; } - - + + Quit Esci - - + + Settings ... Impostazioni... - - + + Show/Hide Away Window Mostra/Nascondi finestra away - - + + Show/Hide Chat Window Mostra/Nascondi finestra di chat - - - - - - + + + + + + Show/Hide Hands Window Mostra/Nascondi finestra mani - - + + Show/Hide Log Window Mostra/Nascondi finestra registro - + Speed: Velocità: - - + + Start Local Game ... Inizia una partita locale... @@ -5402,91 +5471,91 @@ Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickna Visualizza - + Kick Espelli - + Vote Timeout: Timeout voto: - + Yes - + No No - + Player info Info giocatore - + Chance Probabilità - + Settings Impostazioni - + Configure PokerTH Configura PokerTH - + Configure PokerTH ... Configura PokerTH... - - + + Close Chiudi - - + + Ctrl+X Ctrl+X - + Vote started by: Voto iniziato da: - - + + Show/Hide Chance Window Mostra/Nascondi Finestra Probabilità - - + + Ctrl+C Ctrl+C - + &View &Visualizza - + &Settings &Impostazioni - + Shortcut: <Shift> Scorciatoia: <Shift> @@ -5526,7 +5595,7 @@ Assicurarsi che tutti i giocatori abbiano la stessa versione di PokerTH.E' stata specificata una porta non valida (le porte 0-1023 non sono permesse). - + Attention! Do you really want to leave the current game and go back to the lobby? Attenzione! Vuoi veramente abbandonare la partita corrente @@ -5545,13 +5614,13 @@ e tornare al prepartita? Bind fallito - selezionare una porta diversa. - - + + Chat Chat - + Closing PokerTH during network game Si sta chiudendo PokerTH durante una partita in rete @@ -5650,11 +5719,11 @@ Please reenter the password and try again. Reinserire la password e riprovare. - - - - - + + + + + Lobby Prepartita @@ -5671,12 +5740,12 @@ Reinserire la password e riprovare. Notifica in Rete - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Il Motore Texas Holdem Open-Source - + PokerTH - Internet Game Message PokerTH - Messaggio partita su Internet @@ -5697,31 +5766,31 @@ Reinserire la password e riprovare. Spiacente, il server è già al completo. - - - - - - - - + + + + + + + + Start Inizio - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Ferma @@ -5811,7 +5880,7 @@ Visitare l'URL <a href="http://www.pokerth.net/" target=" Impossibile partecipare - la partita è già iniziata. - + You are the hosting server. Do you want to close PokerTH anyway? Stai facendo da server. Vuoi comunque chiudere PokerTH? @@ -5890,62 +5959,67 @@ Assicurarsi di essere connessi direttamente ad internet. Impossibile aprire il file di destinazione durante il download della lista server. - + PokerTH %1 PokerTH %1 - - + + Chance Probabilità - + Really want to exit? Desideri veramente uscire? - + PokerTH - Close Table? PokerTH - Chiudere il tavolo? - - + + Kick Espelli - - + + Do you want to kick <b>%1</b><br>from this game? Vuoi espellere <b>%1</b><br>da questa partita? - - - - + + + + <b>%1</b> secs left <b>%1</b> sec. rimasti - + vote voto - + votes voti - - + + Chat is only available to registered players. La chat è disponibile solamente ai giocatori registrati. + + + Spectators + Spettatori + PokerTH - Warning PokerTH - Attenzione @@ -5969,14 +6043,14 @@ Se sei temporaneamente assente, puoi utilizzare l'apposito strumento " Hai <b>%1</b> %2 contro di te.<br><b>%3</b> voti necessari per essere espulso. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Il giocatore <b>%1</b> ha <b>%2</b> %3<br>contro di lui. <b>%4</b> voto/i necessari all'espulsione. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Hai <b>%1</b> %2 contro di te.<br><b>%3</b> voto/i necessari all'espulsione. @@ -6217,56 +6291,68 @@ p, li { white-space: pre-wrap; } Un profilo chiamato: " - + A profile with the name: %1 already exists. Would you like to overwrite ? Esiste già un profilo chiamato %1. Desideri sovrascriverlo? - - - - Could not load server-profiles-file: Impossibile caricare il file dei profili server: - + Could not read server-profiles list Impossibile leggere la lista dei profili server - - Could not save server-profiles-file: Impossibile salvare il profilo server: - - - - + + + + Load Server-Profile-File Error Errore nel caricamento del profilo server - + + + + + Could not load server-profiles-file: +%1 + Impossibile caricare il file dei profili server: +%1 + + + Read Server-Profile List Error Errore nella lettura della lista dei profili server - + + + Could not save server-profiles-file: +%1 + Impossibile salvare il file dei profili server: +%1 + + + Save Server Profile Error Errore nel salvataggio del profilo server - - + + Save Server-Profile-File Error Errore nel salvataggio del file dei profili server @@ -6344,12 +6430,12 @@ Desideri sovrascriverlo? manualBlindsOrderDialogImpl - + Manual Blinds Order Ordine manuale dei blind - + You cannot set more than 30 manual blinds. Non puoi impostare più di 30 blind manuali. @@ -6395,13 +6481,13 @@ Desideri sovrascriverlo? - + Change blinds settings ... Cambia le impostazioni dei blind... - + Game Speed: Velocità: @@ -6443,7 +6529,7 @@ Desideri sovrascriverlo? - + Use saved blinds settings Utilizza impostazioni dei blind salvate @@ -6484,9 +6570,9 @@ Desideri sovrascriverlo? selectAvatarDialogImpl - - - + + + Avatar File Error Errore nel file dell'avatar @@ -6495,22 +6581,22 @@ Desideri sovrascriverlo? Immagini (*.png) - + Images (*.png *.jpg *.gif) Immagini (*.png *.jpg *.gif) - + Please select an avatar from the list! Scegli un avatar dalla lista! - + Select external avatar picture Scegli l'immagine avatar esterna - + The entered avatar picture doesn't exist. Please enter an valid picture! L'avatar indicato non esiste. @@ -6523,7 +6609,7 @@ Please enter an valid picture! Inserite un'immagine valida! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! La dimensione file dell'immagine selezionata è troppo grande (max. 30KB) @@ -6533,14 +6619,14 @@ Scegli un'immagine più piccola! settingsDialog - - - - - - - - + + + + + + + + $ $ @@ -6549,38 +6635,38 @@ Scegli un'immagine più piccola! 0.4 (corrente) - - + + 10 10 - - + + action (high frequent disc access) azione (elevato - accesso frequente al disco) - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://it.wikipedia.org/wiki/Ipv6">Che cos'è?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://it.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Che cos'è?</a> - - - - + + + + Always double blinds Raddoppia sempre i blind @@ -6597,8 +6683,8 @@ Scegli un'immagine più piccola! chat.freenode.net - - + + Computer Engine Computer @@ -6611,10 +6697,10 @@ Scegli un'immagine più piccola! Defaut - - - - + + + + Edit ... Modifica... @@ -6623,8 +6709,8 @@ Scegli un'immagine più piccola! Abilita Chat prepartita (server IRC) - - + + Enable/Disable Logging Ablita/Disabilita il registro @@ -6637,22 +6723,22 @@ Scegli un'immagine più piccola! Versione del motore per gli avversari AI: - - - - - - - - + + + + + + + + Every: Ogni: - - - - + + + + First small blind: Primo small blind: @@ -6661,14 +6747,14 @@ Scegli un'immagine più piccola! Dorso delle carte - - + + game (low disc access) partita (basso - accesso ridotto al disco) - - + + Game Speed: Velocità: @@ -6677,16 +6763,16 @@ Scegli un'immagine più piccola! Velocità di gioco per il computer: - - + + hand (medium disc access) mano (media - accesso normale al disco) - - - - + + + + hands mani @@ -6732,13 +6818,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><span style=" font-style:italic;">N.b.: Le </span><span style=" font-weight:600; font-style:italic;">Impostazioni di Gioco</span><span style=" font-style:italic;"> predefinite come "Numero Massimo di Giocatori", "Contante Iniziale" e "Small Blind" saranno usate </span><span style=" font-weight:600; font-style:italic;">nelle impostazioni del gioco in rete. </span></p></body></html> - - + + Play blind raise notification Emetti un suono all'aumento dei blind - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -6746,7 +6832,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">N.b.: Le </span><span style=" font-weight:600; font-style:italic;">Impostazioni di gioco</span><span style=" font-style:italic;"> predefinite come "Numero massimo di giocatori", "Contante iniziale" e "Small blind" saranno usate </span><span style=" font-weight:600; font-style:italic;">nelle impostazioni del gioco in rete. </span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -6761,7 +6847,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">N.B.: Migliore qualità con un rapporto di </span><span style=" font-weight:600; font-style:italic;">larghezza=100, altezza=140.</span></p></body></html> - + Human Player: Giocatore umano: @@ -6773,7 +6859,7 @@ p, li { white-space: pre-wrap; } Interfaccia - + Internet Game Settings Impostazioni partita su Internet @@ -6782,8 +6868,8 @@ p, li { white-space: pre-wrap; } Impostazioni server internet (server dedicato) - - + + Language: Lingua: @@ -6796,47 +6882,47 @@ p, li { white-space: pre-wrap; } Parametri locali predefiniti - + Local Game Settings Impostazioni locali - - + + Log File Directory: Percorso file di registro: - + Log Messages Registro messaggi - + Note: Best quality with image ratio like width=48, height=76. N.B.: Migliore qualità con un rapporto di larghezza=48, altezza=76. - - - - + + + + Manual blinds order: Ordine manuale dei blind: - - + + Maximum number of players: Numero massimo di giocatori: - - - - + + + + minutes minuti @@ -6845,66 +6931,66 @@ p, li { white-space: pre-wrap; } Impostazioni rete predefinite - + Network Game Settings Impostazioni di rete - - + + Network / Internet Game Partita in rete/su Internet - - + + Network Server Settings Impostazioni server di rete - - + + Number of players: Numero di giocatori: - + Factory Settings Impostazioni predefinite - - + + Show country flag in the corner of avatar Visualizza la nazione in un angolo dell'avatar - - - - + + + + Description Descrizione - - - - + + + + Maintainer Responsabile - - - + + + State Stato - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6923,20 +7009,20 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">N.B.: Migliore qualità con un rapporto di </span><span style=" font-weight:600; font-style:italic;">larghezza=48, altezza=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Intervallo una mano e l'altra: - - + + Server Server - - + + Game Partita @@ -6953,73 +7039,73 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Note: Le </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Impostazioni</span><span style=" font-size:12pt; font-style:italic;"> predefinite di: &quot;Numero massimo di giocatori&quot;, &quot;Contante Iniziale&quot; e &quot;Small Blind&quot; saranno prese </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">dalle impostazioni delle partite in rete.</span></p></body></html> - - + + Default game name: Nome partita predefinito: - - + + Default game type: Tipo partita predefinito: - - + + Standard Standard - - + + Registered players only Solo utenti registrati - - + + Invited players only Solo utenti invitati - - + + Ranking game Valida per la classifica - - + + Show lobby chat Mostra chat - - + + Automatically leave the table after the game finished Abbandona il tavolo automaticamente non appena la partita termina - - + + Ignored Players Giocatori Ignorati - - + + Player Giocatore - - + + Remove Player Rimuovi Giocatore - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7032,43 +7118,43 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Giocatore umano:<br /><span style=" font-style:italic;">(Questo nickname sarà utilizzato anche per l'accesso alle partite online)</span></p></body></html> - - + + Opponent 1: Giocatore 1: - - + + Opponent 2: Giocatore 2: - - + + Opponent 3: Giocatore 3: - - + + Opponent 4: Giocatore 4: - - + + Opponent 5: Giocatore 5: - - + + Opponent 6: Giocatore 6: - + Note: Best avatar quality with image ratio like width=50, height=50. N.B.: Migliore qualità degli avatar con un rapporto di larghezza=50, altezza=50. @@ -7093,14 +7179,14 @@ p, li { white-space: pre-wrap; } Esporta in HTML - - + + Reset all settings to default ... Ripristina tutte le impostazioni predefinite ... - - + + Note: You can not reset all settings to default during a running game! Nota: non è possibile ripristinare le impostazioni di default durante una partita! @@ -7129,8 +7215,8 @@ p, li { white-space: pre-wrap; } Immagine del dorso delle carte: - - + + Pause between hands (press "start" button to go on) Pausa tra una mano e l'altra (premere start per proseguire) @@ -7139,31 +7225,31 @@ p, li { white-space: pre-wrap; } Nomi dei giocatori - + Player Nicks/Avatars Nick/Avatar dei giocatori - - + + Play game actions sounds like "check", "call", "raise" Suoni per le azioni di gioco ( "check", "call", "raise", ecc.) - - + + Play lobby chat notifications Notifiche chat di gioco - - + + Play network/internet game notifications like "player joined the game" Notifiche partite in rete/Internet (Es. "il giocatore si è unito alla partita") - - + + Play sound effects Abilita gli effetti sonori @@ -7176,18 +7262,18 @@ p, li { white-space: pre-wrap; } QLabel { font-weight: bold; } - - - - + + + + Raise blinds: Aumenta blind: - - - - + + + + Raise mode: Modalità aumento: @@ -7196,35 +7282,35 @@ p, li { white-space: pre-wrap; } Inverti l'ordine dei tasti funzione (F1 - F3) - + Reverse order of F-Keys (F1 - F4) Inverti l'ordine dei tasti funzione (F1 - F4) - - - - + + + + s s - - + + Server Address: Indirizzo del server: - - + + Server Password: - Password del server: + Password del server: - - - - + + + + Server Port: Porta del server: @@ -7239,26 +7325,26 @@ p, li { white-space: pre-wrap; } Impostazioni - - + + Show buttons for small blind and big blind Visualizza i bottoni per small e big blind - - + + Show fade-out animation for non-winning cards Visualizza la dissolvenza per le carte non vincenti - - + + Show flip-card animation Visualizza l'animazione delle carte - - + + Show game settings dialog on every new game Visualizza la finestra delle impostazioni di gioco all'inizio di ogni nuova partita @@ -7268,18 +7354,18 @@ all'inizio di ogni nuova partita Visualizza l'introduzione all'avvio - + Show left toolbox Visualizza il toolbox a sinistra - - + + Show own cards only on mouse click Mostra le proprie carte solo al clic del mouse - + Show right toolbox Visualizza il toolbox a destra @@ -7294,27 +7380,27 @@ all'inizio di ogni nuova partita - + Sound Suono - - + + Sound Categories Categorie suoni - - + + Sound Volume: Volume effetti sonori: - - - - + + + + Start Cash: Contante iniziale: @@ -7323,14 +7409,14 @@ all'inizio di ogni nuova partita Memorizza file di registro per - - + + Switch keyboard focus to bet-input-field if it's your turn Passa il focus della tastiera sull'area di puntata al proprio turno - - + + Timeout for player action: Tempo limite per l'azione del giocatore: @@ -7339,36 +7425,36 @@ all'inizio di ogni nuova partita Tempo limite per l'azione del giocatore (in secondi): - - - - + + + + Use IPv6 Utilizza IPv6 - - + + Use password for private game: Utilizza password per partita privata: - - - - + + + + Use SCTP Utilizza SCTP - - + + Write log after every: Scrivi sul file di registro ogni: - - + + Automatic Server Configuration URL URL configurazione automatica server @@ -7391,14 +7477,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">N.B.: Migliore qualità con un rapporto di </span><span style=" font-weight:600; font-style:italic;">larghezza=48, altezza=76.</span></p></td></tr></table></body></html> - - + + Serverlist Address: Indirizzo lista server: - - + + Manual Server Configuration Configurazione manuale del server @@ -7415,14 +7501,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Giocatore umano:<br /><span style=" font-style:italic;">(Questo nickname sarà utilizzato anche per l'accesso alle partite online)</span></p></body></html> - - + + Store log files for: Memorizza file di registro per: - - + + Day(s) Giorno(i) @@ -7451,55 +7537,79 @@ p, li { white-space: pre-wrap; } Nick/Avatar - - + + + Common + Generale + + + + Show cards chance monitor Mostra finestra probabilità - - + + Disable splashscreen on startup Disabilita la schermata d'avvio - - + + Activate the "accidentally call after big raise" blocker Attivare il blocco del "call involontario dopo un grosso rilancio" - - + + + Do not hide avatars of players which are on the ignore list + Non nascondere gli avatar dei giocatori nella lista ignorati + + + + + Disable emoticons in the chat + Disabilita emoticons nella chat + + + + Game Table Tavolo di gioco - - + + Card Deck Mazzo di carte - - + + Card Back Dorso delle carte - - + + Use card back from card style Prendi il dorso delle carte dallo stile - - + + Use custom card back picture: Utilizza un dorso personalizzato: - + + + Allow spectators to watch the game + Consenti agli spettatori di osservare la partita + + + OK OK @@ -7529,21 +7639,21 @@ p, li { white-space: pre-wrap; } Password: - - + + Avatar Server: Server Avatar: - + Style Stile - - + + Don't translate poker strings like check, call, raise from game table style Non tradurre le stringhe check, call e raise dallo stile del tavolo da gioco @@ -7556,32 +7666,32 @@ p, li { white-space: pre-wrap; } Attiva - - - - + + + + Add ... Aggiungi... - - - - + + + + Remove Rimuovi - - - - + + + + Preview - Information: Anteprima - Informazioni: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7594,8 +7704,8 @@ p, li { white-space: pre-wrap; } Stili mazzo - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7604,24 +7714,24 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Scarica nuovi stili per il mazzo di carte di PokerTH ...</span></a></p></body></html> - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. N.B.: Le Impostazioni Predefinite di Gioco come "Numero Massimo di Giocatori", "Contante Iniziale" e "Small Blind" saranno utilizzate nelle impostazioni del gioco in rete. - + (This nick will also be used for the online game login) (Questo nick sarà utilizzato anche comel login delle partite online) - - + + Opponent 7: Giocatore 7: - - + + Opponent 8: Giocatore 8: @@ -7630,8 +7740,8 @@ p, li { white-space: pre-wrap; } Giocatore 10: - - + + Opponent 9: Giocatore 9: @@ -7639,8 +7749,8 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - + + Blinds Error Errore relativo ai blind @@ -7689,7 +7799,7 @@ p, li { white-space: pre-wrap; } Immmagine (*.png) - + Images (*.png *.jpg *.gif) Immagini (*.png *.jpg *.gif) @@ -7699,7 +7809,7 @@ p, li { white-space: pre-wrap; } Italiano - + Language Changed La lingua è stata cambiata @@ -7713,7 +7823,7 @@ p, li { white-space: pre-wrap; } Norvegese - + Open Directory Apri cartella @@ -7727,16 +7837,16 @@ p, li { white-space: pre-wrap; } Russo - + Select your flipside picture Seleziona un'immagine per il dorso delle carte - - - - - + + + + + Settings Error Errore nelle impostazioni @@ -7771,7 +7881,7 @@ p, li { white-space: pre-wrap; } Tamil - + The entered flipside picture doesn't exist. Please enter an valid picture! L'immagine selezionata per il dorso delle carte non esiste. @@ -7784,8 +7894,8 @@ Please enter an valid picture! Inserite un'immagine valida! - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7794,8 +7904,8 @@ This first-small-blind-value will be set to maximum allowed value. Il valore del primo small blind verrà impostato al massimo consentito. - - + + The log file directory doesn't exist. Please select an valid directory! La cartella per il file di registro non esiste. @@ -7813,7 +7923,7 @@ Inserite una directory valida! Turco - + You have changed application language to %1. Please restart PokerTH to load new language! Hai cambiato la lingua dell'applicazione in %1. @@ -7845,7 +7955,7 @@ Riavvia PokerTH per caricare la nuova lingua! Svedese - + The entered server list address is not a valid URL. Please enter a valid server list address! L'indirizzo della lista server immesso non è un URL valido. @@ -7864,7 +7974,7 @@ Inserisci un indirizzo valido! Galician - + Galiziano @@ -7874,148 +7984,148 @@ Inserisci un indirizzo valido! Scottish Gaelic - + Gaelico Scozzese Vietnamese - + Vietnamita - + The opponent names are not unique. Please choose different names for each Opponent! I nomi degli avversari non sono univoci. Scegli un nome diverso per ogni Avversario! - + Settings Information Informazioni - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Hai modificato la cartella del file di registro. Occorre riavviare PokerTH per utilizzare la nuova cartella! - - + + Maintainer Name Nome responsabile - - + + Maintainer EMail E-mail responsabile - - + + Create Date Data creazione - + Windows Behaviour Comportamento finestra - + scaleable scalabile - + fixed fissa - + Minimum Size Dimensione minima - + Maximum Size Dimensione massima - + Fixed Size Dimensione fissa - + State Stato - + Please select your game table style Seleziona lo stile del tavolo da gioco - + PokerTH game table styles (*.xml) Stili tavolo da gioco di PokerTH (*.xml) - + Game Table Style Error Errore sullo stile del tavolo da gioco - + Selected game table style file is already in the list. Please select another one to add! Lo stile del tavolo da gioco selezionato è già presente nella lista. Selezionane un altro! - + Game Table Style File Error Errore sul file dello stile del tavolo da gioco - + Could not load game table style file correctly. Style will not be placed into list! Impossibile caricare correttamente il file contenente lo stile. Lo stile non verrà aggiunto alla lista! - + Please select your card deck style Seleziona lo stile del mazzo di carte - + PokerTH card deck styles (*.xml) Stili mazzo di carte di PokerTH (*.xml) - + Card Deck Style Error Errore sullo stile del mazzo di carte - + Selected card deck style file is already in the list. Please select another one to add! Lo stile del mazzo di carte selezionato è già presente nella lista. Selezionane un altro! - + Card Deck Style File Error Errore sul file dello stile del mazzo di carte - + Could not load card deck style file correctly. Style will not be placed into list! Impossibile caricare correttamente il file contenente lo stile. @@ -8062,12 +8172,12 @@ Lo stile non verrà aggiunto alla lista! Registro PokerTH SQL (*.pdb) - + PokerTH - Settings PokerTH - Impostazioni - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Attenzione: questa operazione cancellerà tuttie le impostazioni personalizzate e chiuderà PokerTH! @@ -8149,12 +8259,12 @@ Sei sicuro di voler ripristinare le impostazioni predefinite? startNetworkGameDialogImpl - + Server Error Errore server - + You should not kick yourself from this game! Non puoi auto-espellerti da questa partita! @@ -8343,106 +8453,106 @@ Please choose another one. Scegline un altro. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Errore di rete - + Server address was not set. Indirizzo del server mancante. - + An invalid port was set (ports 0-1023 are not allowed). È stata specificata una porta non valida (le porte 0-1023 non sono permesse). - + Could not create a socket for TCP communication. Impossibile creare un socket di comunicazione TCP. - + Could not set the IP address. Impossibile impostare l'indirizzo IP. - + Could not set the port for this type of address. Impossibile impostare la porta per questo tipo di indirizzo. - + The server name could not be resolved. Impossibile risolvere il nome del server. - + Bind failed - please choose a different port. Bind non riuscito - seleziona una porta diversa. - + Internal network error: "listen" failed. Errore di rete interno: "listen" non riuscito. - + Server execution was terminated. L'esecuzione del server è stata interrotta. - + Could not connect to the server. Impossibile connettersi al server. - + Connection timed out. Please check the server address. @@ -8453,12 +8563,12 @@ Controlla l'indirizzo del server. Se il server è alle spalle di un router NAT, assicurati che sia stato abilitato il port forwarding. - + Internal network error: "select" failed. Errore di rete interno: "select" non riuscita. - + Internal network error: "send" failed. Errore di rete interno: "send" non riuscito. @@ -8467,31 +8577,31 @@ Se il server è alle spalle di un router NAT, assicurati che sia stato abilitato Connessione interrotta dal server. - + The connection to the server was lost. La connessione al server è stata interrotta. - + Internal network error: Duplicate TCP connection. Errore di rete interno: connessione TCP duplicata. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. È stato ricevuto un pacchetto non valido. Assicurati che tutti i giocatori abbiano la stessa versione di PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Errore di stato interno. Assicurati che tutti i giocatori abbiano la stessa versione di PokerTH. - + Invalid server list URL. Please correct the address in the settings. URL della lista server non valido. @@ -8510,162 +8620,163 @@ Please make sure that the server list URL is correct. Assicurati che l'URL della lista server sia corretto. - + Rejoin possible! E' possibile ritornare alla partita! - + There is an existing session with a previous game. E' presente una sessione con una precedente partita. - + Do you want to rejoin this game? Desideri ritornare a questa partita? - - + + Start Network Game Inizia una partita in rete - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. La lista server internet di PokerTH contiene dati non validi. Se utilizzi una lista server personalizzata, assicurati che il suo formato sia corretto. - + Could not unzip the PokerTH internet server list. Impossibile decomprimere la lista dei server Internet di PokerTH. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Impossibile scaricare la lista server internet di PokerTH. Assicurati di essere connesso direttamente ad internet. - + Could not open the target file when downloading the server list. Impossibile aprire il file di destinazione durante il download della lista server. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Il server di PokerTH non supporta questa versione del gioco. <br>Visita l'URL <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> e scarica l'ultima versione. - + Sorry, this server is already full. Spiacente, il server è già al completo. - + Invalid login. Please check your username and password. Accesso negato. Controlla username e password. - + Your account is blocked indefinitely. Il tuo account è bloccato a tempo indeterminato. - + You cannot login at this time. Please try again in a few seconds. Impossibile effettuare l'accesso. Riprova fra qualche istante. - + You cannot join this game, because another player in that game has your network address. Non puoi unirti alla partita, è presente un altro giocatore che ha il tuo stesso indirizzo di rete. - + Your connection to the server is very slow, the game had to start without you. La connessione al server è molto lenta, la partita deve cominciare senza di te. - + This game is of type invite-only. You cannot join this game without being invited. L'accesso a questa partita è concesso solo su invito. Non puoi partecipare senza essere stato invitato. - + Invalid password when joining the game. Please reenter the password and try again. Password sbagliata per la partita selezionata. Reinserisci la password e riprova. - + The avatar report was accepted by the server. Thank you. La segnalazione dell'avatar è stata accettata dal server. Grazie mille. - + This avatar was already reported by another player. Questo avatar è già stato segnalato da un altro giocatore. - + An error occurred while reporting the avatar. Si è verificato un errore durante la segnalazione dell'avatar. - + The game name report was accepted by the server. Thank you. La segnalazione sul nome della partita è stata accettata dal server. Grazie. - + This game name was already reported by another player. Questo nome di partita è già stato segnalato da un altro giocatore. - + An error occurred while reporting the game name. Si è verificato un errore durante la segnalazione del nome di partita. - - - The game was closed. - - - The game could not be closed. - + The game was closed. + La partita è stata chiusa. - The player was kicked and banned permanently. - + The game could not be closed. + Impossibile chiudere la partita. - The player was kicked, but could not be banned because it was a guest player. - + The player was kicked and banned permanently. + Il giocatore è stato espulso e bandito permanentemente. - The player was kicked, but could not be banned, -because the nick could not be found in the database - + The player was kicked, but could not be banned because it was a guest player. + Il giocatore è stato espulso ma non è stato bandito perchè era un ospite. - The player could not be found. - + The player was kicked, but could not be banned, +because the nick could not be found in the database + Il giocatore è stato espulso ma non bandito +perchè il suo nickname non è stato trovato sul database - + + The player could not be found. + Impossibile trovare il giocatore. + + + The password is too long. Please choose another one. Questa password è troppo lunga. Scegline una diversa. @@ -8680,67 +8791,67 @@ Scegli un nome diverso. Il nome del giocatore è troppo corto, troppo lungo o non valido. Scegline un altro. - + The game name is either too short or too long. Please choose another one. Il nome della partita è troppo corto o troppo lungo. Scegline un altro. - + The game could not be found. Impossibile trovare la partita. - + The chat text is invalid. Il testo nella chat non è valido. - + The server referred to an unknown player. Aborting. Il server ha contattato un giocatore sconosciuto. Operazione annullata. - + Internal error: The current player could not be found. Errore interno: Impossibile trovare il giocatore corrente. - + Internal error: The current player is not active. Errore interno: Il giocatore corrente non è attivo. - + You were kicked from the server. Sei stato espulso dal server. - + You were temporarily banned from the server. Sei stato temporaneamente bandito dal server. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! La connessione al server è andata in timeout per inattività. Riconnettiti, sei il benvenuto! - + The client player count is invalid. Il numero di giocatori non è valido. - + Too many manual blinds were set. Please reconfigure the manual blinds. Sono stati impostati troppi blind manuali. Devi riconfigurare i blind. - + An invalid avatar file was configured. Please choose a different avatar. È stato impostato un file di avatar non valido. Scegli un avatar diverso. - + The selected avatar file is too large. Please choose a different avatar. Il file di avatar selezionato è troppo grande. Scegli un avatar diverso. @@ -8749,84 +8860,84 @@ Scegli un nome diverso. Non puoi caricare un nuovo avatar in questo momento. Per favore, riprova tra qualche secondo. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Si è verificato un errore interno sugli avatar. Per favore, riferisci l'accaduto ad un admin nella chat prepartita. - + Could not start game: Synchronization failed. Impossibile avviare la partita: sincronizzazione non riuscita. - + The server is down for maintenance. Please try again later. Il server è down per manutenzione. Riprova più tardi. - + An internal error occured. Errore interno. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Notifica di rete - + You were kicked from the game. Sei stato espulso dalla partita. - + Sorry, this game is already full. Spiacente, la partita è già al completo. - + Unable to join - the server has already started the game. Impossibile partecipare - la partita è già iniziata. - + Your admin state timed out due to inactivity. Feel free to create a new game! Il tuo status di admin è andato in timeout per inattività. Sentiti libero di creare una nuova partita! - + You cannot join this type of game as guest. Non puoi accedere a questa partita come ospite. - + The settings are invalid for this type of game. Impostazioni non valide per questo tipo di partita. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. È disponibile una nuova release di PokerTH.<br>Visita l'URL <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> e scarica l'ultima versione. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Questa versione beta di PokerTH è obsoleta.<br>Visitare l'URL <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> e scaricare l'ultima versione. - - + + Server Message Messaggio del server diff --git a/ts/pokerth_jp.ts b/ts/pokerth_jp.ts index a42be859..d4a2bfa8 100644 --- a/ts/pokerth_jp.ts +++ b/ts/pokerth_jp.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -209,22 +208,22 @@ Please contact the game table style builder via "%4". ゲームテーブルスタイルエラー - 対応外 - + Everything OK! 全てOK! - + Some pictures are missing, please contact style maintainer for this issue. いくつかの画像が見つかりません、ゲームテーブルスタイルの作者にこの問題を報告してください。 - + Some style fields are missing, please contact style maintainer for this issue. いくつかのフィールド見つかりません、ゲームテーブルスタイルの作者にこの問題を報告してください。 - + This style is outdated, please contact style maintainer for this issue. このスタイルは対応外です。ゲームテーブルスタイルの作者にこの問題を報告してください。 @@ -302,52 +301,52 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file PokerTH ログファイルを保存 - + PokerTH SQL log (*.pdb) @@ -394,13 +393,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -429,18 +428,18 @@ Please verify that you are uploading a valid PokerTH log file. 不適切なアバターを報告 - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? 以後、このプレイヤーからのチャットメッセージとゲームの招待を受けることができなくなります <br> 本当にプレイヤー %1 を無視リストに入れますか? - - + + PokerTH - Question PokerTH - 質問 - + Are you sure you want to report the avatar of "%1" as inappropriate? 本当に %1 のアバターが不適切であることを報告しますか? @@ -469,8 +468,8 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About 説明 @@ -505,39 +504,17 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">© 2006-2010, FHammer, FThauer, LMay</p></td></tr></table></body></html> - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project プロジェクト - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -585,8 +562,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - initial gui graphics design</p></td></tr></table></body></html> - - + + Translation 翻訳 @@ -609,25 +586,53 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Akicks - akicks@gmail.com</p></td></tr></table></body></html> - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + Thanks to 謝辞 - - + + License ライセンス - + + + Third party libs + + + + Close 閉じる - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -636,7 +641,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -888,12 +893,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order 手動ブラインド設定 - + You cannot set more than 30 manual blinds. 30 以上のブラインドは設定できません。 @@ -1036,7 +1041,7 @@ Please choose another one! - + Default game name: 初期ゲーム名: @@ -1071,75 +1076,81 @@ Please choose another one! ランキングゲーム - - + + Maximum number of players: プレイヤー人数の上限: - - + + Start Cash: 開始金額: - - + + $ - + Blinds ブラインド - + Use saved blinds settings 保存されたブラインド設定を使用 - + Change blinds settings ... ブラインド設定を変更... - + Timeout for player action: プレイヤーアクションのタイムアウト: - - + + s - - + + Password: パスワード: - + Delay between hands: ハンド毎のディレイ: - - + + + Allow spectators to watch the game + + + + + Create Game ゲーム作成 - + Cancel キャンセル @@ -1252,56 +1263,68 @@ Please choose another one! インターネットゲームロビー - - + + Game Info ゲーム情報 - - + + Game type: ゲームタイプ: - - + + Connected Players 接続中のプレイヤー - - + + search for player ... プレイヤーを検索... - - + + 5 - Show open & non-full & ranking games - - + + + Players + プレイヤー + + + + + Spectators + + + + + Start Cash: 開始金額: - - + + First small blind: 初期スモールブラインド: - - + + Blinds raise interval: ブラインド上昇の間隔: - - + + Blinds raise mode: ブラインド上昇設定: @@ -1311,7 +1334,7 @@ Please choose another one! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1324,68 +1347,66 @@ p, li { white-space: pre-wrap; } プレイヤーアクションのタイムアウト(秒): - - + + Fill up with computer opponents 空席をコンピューターで埋める - - + + &Start Game ゲーム開始(&S) - - + + &Kick Player プレイヤーを kick(&K) - - + + Sort alphabetically アルファベット順に並び替え - - + + Sort by country 国で並び替え - - + + Display idle players 待機中のプレイヤーを表示 - - + + Manual blinds list: 手動ブラインド設定リスト: - - + + &Leave Game ゲームを離れる(&L) - - Join &any game - どこかのゲームに参加(&A) + どこかのゲームに参加(&A) - - + + &Create Game ゲームを作成(&C) - - + + &Join Game ゲームに参加(&J) @@ -1408,44 +1429,44 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">オンラインランキングを表示</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - フィルターなし - - + + 1 - Show open games 1 - オープンゲームを表示 - - + + 2 - Show open & non-full games 2 - オープン & 埋まってない ゲームを表示 - - + + 3 - Show open & non-full & non-private games 3 - オープン & 埋まってない & プライベートではない ゲームを表示 - - + + 4 - Show open & non-full & private games 3 - オープン & 埋まってない & プライベートの ゲームを表示 - - + + Timing: - - + + Lobby-Chat ロビーチャット @@ -1458,212 +1479,227 @@ p, li { white-space: pre-wrap; } ゲームを開始中。お待ち下さい... - + Joining a private Game プラベートゲームに参加しています - + You are about to join a private game. Please enter the password! プライベートゲームに参加しようとしています。パスワードを入力してください。 - + open オープン - - - - + + + + Game Info ゲーム情報 - - - + + Spectate + + + + + + Game ゲーム - - - + + + Players プレイヤー - - - + + + State 状態 - - - + + + P - - - + + + Available Players 有効なプレイヤー - + Invite player プレイヤーを招待 - + Ignore player プレイヤーを無視 - + Player infos ... プレイヤー情報... - + Report inappropriate game name - - - + + + Standard スタンダード - - - + + + Registered players only 登録されたプレイヤーのみ - - - + + + Invited players only 招待されたプレイヤーのみ - - - + + + Ranking game ランキングゲーム - Connected players - max. %1 - 接続中プレイヤー - 最大 %1 人 + 接続中プレイヤー - 最大 %1 人 - - - + + + T - - - + + + sec (action) - - - + + + sec (hand delay) - - Connected players - Max. %1 - 接続中プレイヤー - 最大 %1 人 + 接続中プレイヤー - 最大 %1 人 - + running 進行中 - - + + running games: %1 進行中のゲーム:%1 - - + + open games: %1 オープンゲーム:%1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 招待 %1 - + Ignore %1 無視 %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 は %2 に %3 によって招待されています。</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 は %2 への招待を拒否しました。</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 は busy のため %2 に参加できません。</span> - - + + The game will start in<br><b>%1</b> seconds. <br><b>%1</b> 秒後にゲームが開始されます。 - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. 招待専用のゲームに参加しています。 右クリックでプレイヤーリストからニックネームを選択して他のプレイヤーを招待しましょう。 - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? ゲーム "<b>%1</b>" に "<b>%2</b>"より招待されています。<br> このゲームに参加しますか? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? 以後、このプレイヤーからのチャットメッセージとゲームの招待を受けることができなくなります <br> 本当にプレイヤー %1 を無視リストに入れますか? - - + + connected players: %1 接続中プレイヤー: %1 @@ -1678,1343 +1714,1341 @@ Feel free to invite other players by right-clicking on their nick in the availab - - - + + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game - - Connected players - 接続中プレイヤー + 接続中プレイヤー - + hands ハンド - + minutes - + double blinds ブラインド倍増 - + manual blinds order 手動ブラインド設定 - + Server Error サーバーエラー - + You should not kick yourself from this game! 自分自身をゲームから kick することはできません。 - + search for player ... プレイヤー検索... - + Chat is only available to registered players. チャットは登録したプレイヤーのみ使用することができます。 - + Invite player ... プレイヤーを招待... - + Ignore player ... プレイヤーを無視... - + %1 is playing in "%2". %1 は "%2" でゲームしています。 - + %1 is not playing at the moment. %1 は現在プレイ中ではありません。 - - + + PokerTH - Info Message PokerTH - 情報メッセージ - - - - + + + + PokerTH - Question PokerTH - 質問 - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3027,273 +3061,273 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Hands ハンド - + Chat チャット - + Save 保存 - + Log ログ - + Away 一時退席 - + Manual Action (default) 手動での行動(デフォルト) - + Auto-Check / Auto-Fold 自動で Check / 自動で Fold - + Auto-Check / Auto-Call-Any 自動で Check / 自動で Call もする - + Speed: スピード: - - + + Start Local Game ... ローカルゲームを開始... - - + + Ctrl+N - - + + Quit 終了 - - + + Ctrl+Q - - + + About PokerTH ... PokerTH について... - - + + Settings ... 設定... - - + + Create Network Game ... ネットワークゲームを作成... - - + + Ctrl+O - - + + Join Network Game ... ネットワークゲームに参加... - - + + Ctrl+J - - - + + + Fullscreen フルスクリーン - - + + Ctrl+F - - + + Show/Hide Chat Window チャットウインドウを表示 / 隠す - - + + Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window ハンドウインドウを表示 / 隠す - - + + Ctrl+H - - + + Show/Hide Log Window ログウインドウを表示 / 隠す - - + + Ctrl+L - - + + Internet Game ... インターネットゲーム... - - + + Ctrl+I - - + + Show/Hide Away Window 一時退席ウインドウを表示 / 隠す - - + + Ctrl+A - + Kick - + Vote Timeout: 投票タイムアウト: - + Yes - + No - + Player info - + Chance チャンス - + Configure PokerTH ... PokerTH 設定... - - + + Close 閉じる - - + + Ctrl+X - + Vote started by: 投票開始者: - - + + Show/Hide Chance Window チャンスウインドウを表示 / 隠す - - + + Ctrl+C - + &View 表示(&V) - + &Settings 設定(&S) - + Shortcut: <Shift> - + Settings 設定 - + Configure PokerTH @@ -3301,97 +3335,102 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop 停止 - + PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - - - - + + + + + + + + Start 開始 - - - - - + + + + + Lobby ロビー - - + + Chat チャット - + Closing PokerTH during network game ネットワークゲーム中に PokerTH を閉じる - + You are the hosting server. Do you want to close PokerTH anyway? あなたはサーバーをホストしています。本当に PokerTH を閉じますか? - + Really want to exit? 本当に退出しますか? - + PokerTH - Close Table? PokerTH - テーブルを閉じますか? - + PokerTH - Internet Game Message PokerTH - インターネットゲームメッセージ - + Attention! Do you really want to leave the current game and go back to the lobby? 注意! 本当にこのゲームを離れ、ロビーに戻ってもよろしいですか? - - + + Chat is only available to registered players. チャットは登録したプレイヤーのみ使用することができます。 + + + Spectators + + PokerTH - Warning PokerTH - 警告 @@ -3407,51 +3446,51 @@ If you are temporarily away, you can use the "away" tools in the tool 一時的な離席の場合、右ツールボックスの一時退席ツールを使用できます。 - - + + Chance チャンス - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? <b>%1</b><br>をこのゲームから kick しますか? - - - - + + + + <b>%1</b> secs left 残り <b>%1</b> 秒 - + vote 投票 - + votes 投票 - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. I dont know what %1-%4 will display... - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. I dont know what %1-%4 will display... @@ -3669,56 +3708,66 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error サーバープロファイルの読み込みエラー - - - - Could not load server-profiles-file: - サーバープロファイルファイルが読み込めませんでした: + サーバープロファイルファイルが読み込めませんでした: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error サーバープロファイルの保存エラー - + A profile with the name: %1 already exists. Would you like to overwrite ? "%1"という名前のプロファイルが既に存在します。 上書きしますか? - + Read Server-Profile List Error サーバープロファイルリストの読み込みエラー - + Could not read server-profiles list サーバープロファイルリストを読み込めませんでした - - + + Save Server-Profile-File Error サーバープロファイルファイルの保存エラー - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - サーバープロファイルファイルを保存できませんでした: + サーバープロファイルファイルを保存できませんでした: @@ -3782,12 +3831,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order 手動ブラインド設定 - + You cannot set more than 30 manual blinds. 30 以上のブラインドは設定できません。 @@ -3852,7 +3901,7 @@ Would you like to overwrite ? - + Use saved blinds settings 保存されたブラインド設定を使用 @@ -3863,13 +3912,13 @@ Would you like to overwrite ? - + Change blinds settings ... ブラインド設定を変更... - + Game Speed: ゲームスピード: @@ -3910,38 +3959,38 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error アバターファイルエラー - + Please select an avatar from the list! アバターをリストから選択して下さい。 - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! 選択された画像のファイルサイズが大きすぎます (最大 30KB) 小さい画像を選択してください。 - + The entered avatar picture doesn't exist. Please enter an valid picture! 入力されたアバター画像が存在しません。 正しい画像を入力してください。 - + Select external avatar picture 外部アバター画像を選択 - + Images (*.png *.jpg *.gif) 画像 (*.png *.jpg *.gif) @@ -3962,341 +4011,365 @@ Please enter an valid picture! インターフェイス - - + + Language: 言語: - - + + Show fade-out animation for non-winning cards 負けたカードにフェードアウト効果を適用する - - + + Show flip-card animation カードめくり効果を適用する - - + + Show buttons for small blind and big blind スモールブラインドとビッグブラインドのボタンを表示 - - + + Show own cards only on mouse click マウスクリックした時のみ自分のカードを表示 - + Reverse order of F-Keys (F1 - F4) ファンクションキー (F1 - F4) の順序を入れ替える - - + + Network / Internet Game ネットワーク / インターネットゲーム - - + + Switch keyboard focus to bet-input-field if it's your turn 自分のターンの際、bet 入力フィールドにフォーカスを合わせる - + Sound サウンド - + Factory Settings - - + + + Common + + + + + Disable splashscreen on startup スプラッシュスクリーンを表示しない - - + + Show country flag in the corner of avatar アバターの端に国旗を表示する - - + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table ゲームテーブル - - - - + + + + Description 説明 - - - - + + + + Maintainer 作者 - - - + + + State 状態 - - + + Card Deck カードデッキ - - + + Card Back カード裏面 - - + + Use card back from card style カードスタイルのカード裏面デザインを使用する - - + + Use custom card back picture: カスタムカード裏面画像を使用: - - + + Play sound effects サウンドエフェクトを使用 - - + + Sound Volume: サウンドボリューム: - - + + 10 - - + + Sound Categories サウンドカテゴリ - - + + Play game actions sounds like "check", "call", "raise" "check", "call", "raise" のようなゲームアクションサウンドを鳴らす - - + + Play lobby chat notifications ロビーチャットの通知音を鳴らす - - + + Play network/internet game notifications like "player joined the game" "プレイヤーが参加した"のようなネットワークゲーム / インターネットゲーム通知音を鳴らす - - + + Server Password: - + + + Allow spectators to watch the game + + + + OK - + Local Game Settings ローカルゲーム設定 - - + + Number of players: プレイヤー数: - - - - + + + + Start Cash: 開始金額: - - - - - - - - + + + + + + + + $ - - - - + + + + First small blind: 初期スモールブラインド: - - - - + + + + Raise blinds: ブラインドの上昇: - - - - - - - - + + + + + + + + Every: 毎: - - - - + + + + hands ハンド - - - - + + + + minutes - - - - + + + + Raise mode: 上昇設定: - - - - + + + + Always double blinds 常にブラインドが倍増 - - - - + + + + Manual blinds order: 手動ブラインド設定: - - - - + + + + Edit ... 設定... - - + + Game Speed: ゲームスピード: - - + + Pause between hands (press "start" button to go on) ハンド毎のポーズを有効化("start"ボタンで続行) - - + + Show game settings dialog on every new game ゲーム設定ダイアログを新規ゲーム毎に表示 - + Network Game Settings ネットワークゲーム設定 - - + + Maximum number of players: プレイヤー人数の上限: - - + + Timeout for player action: プレイヤーアクションのタイムアウト: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4321,66 +4394,66 @@ Please enter an valid picture! ログファイル - - - - + + + + s - - + + Network Server Settings ネットワークサーバー設定 - - - - + + + + Server Port: サーバーポート: - - - - + + + + Use SCTP SCTP を使用 - - - - + + + + Use IPv6 IPv6 を使用 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://ja.wikipedia.org/wiki/IPv6">IPv6とは?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://ja.wikipedia.org/wiki/SCTP">SCTPとは?</a> - + Internet Game Settings インターネットゲーム設定 - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4391,61 +4464,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">注意:"プレイヤー人数の上限", "開始金額","スモールブラインド"のようなデフォルトの</span><span style=" font-weight:600; font-style:italic;">ゲーム設定</span><span style=" font-style:italic;">は</span><span style=" font-weight:600; font-style:italic;">ネットワークゲーム設定から適用</span><span style=" font-style:italic;">されます。</span></p></body></html> - - + + Server Address: サーバーアドレス: - - + + Use password for private game: プライベートゲーム用のパスワード: - - + + Computer Engine コンピューターエンジン - - + + Opponent 6: 対戦相手 6: - - + + Opponent 5: 対戦相手 5: - - + + Opponent 4: 対戦相手 4: - - + + Opponent 3: 対戦相手 3: - - + + Opponent 2: 対戦相手 2: - - + + Opponent 1: 対戦相手 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4456,8 +4529,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">注意: 最高品質のための推奨アバター画像サイズは </span><span style=" font-weight:600; font-style:italic;">width=50, height=50</span><span style=" font-style:italic;"> です。</span></p></body></html> - - + + Enable/Disable Logging ログを 有効化 / 無効化 @@ -4466,105 +4539,105 @@ p, li { white-space: pre-wrap; } ログファイルの保存期間 - - + + Log File Directory: ログファイルのディレクトリ - - + + Write log after every: ログファイルの書込タイミング - - + + action (high frequent disc access) アクション (ディスクアクセス頻度 - 高) - - + + hand (medium disc access) ハンド (ディスクアクセス頻度 - 中) - - + + game (low disc access) ゲーム (ディスクアクセス頻度 - 低) - + Log Messages ログメッセージ - + Player Nicks/Avatars プレイヤーニックネーム / アバター - + Show right toolbox 右ツールボックスを表示 - + Show left toolbox 左ツールボックスを表示 - - + + Play blind raise notification - - + + Automatic Server Configuration URL 自動サーバー設定 URL - - + + Serverlist Address: サーバーリストアドレス: - - + + Manual Server Configuration 手動サーバー設定 - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -4593,62 +4666,62 @@ p, li { white-space: pre-wrap; } ニックネーム / アバター - - + + Show cards chance monitor チャンスカードモニターを表示 - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: アバターサーバー: - + Style スタイル - - + + Don't translate poker strings like check, call, raise from game table style ゲームテーブルスタイルによる check, call, raise などを翻訳しない - - - - + + + + Add ... 追加... - - - - + + + + Remove 削除 - - - - + + + + Preview - Information: プレビュー - 情報 - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4661,8 +4734,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">新しい PokerTH ゲームテーブルスタイルを入手...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4675,7 +4748,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">新しい PokerTH カードデッキスタイルを入手...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4694,96 +4767,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">注意: 最高品質のための推奨画像サイズは </span><span style=" font-weight:600; font-style:italic;">width=48, height=76</span><span style=" font-style:italic;"> です。</span></p></body></html> - - + + Delay between hands: ハンド毎のディレイ: - - + + Server サーバー - - + + Game ゲーム - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: 初期ゲーム名: - - + + Default game type: 初期ゲームタイプ: - - + + Standard スタンダード - - + + Registered players only 登録プレイヤーのみ - - + + Invited players only 招待されたプレイヤーのみ - - + + Ranking game ランキングゲーム - - + + Show lobby chat ロビーチャットを表示 - - + + Automatically leave the table after the game finished - - + + Ignored Players 無視プレイヤーリスト - - + + Player プレイヤー - - + + Remove Player プレイヤーをリストから削除 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4796,20 +4869,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">自分のプレイヤー:<br /><span style=" font-style:italic;">(このニックネームはオンラインゲームでも使用されます)</span></p></body></html> - - + + Opponent 7: 対戦相手 7: - - + + Opponent 8: 対戦相手 8: - - + + Opponent 9: 対戦相手 9: @@ -4817,65 +4890,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error 設定エラー - + The entered flipside picture doesn't exist. Please enter an valid picture! 入力されたカード裏面画像が存在しません。 正しい画像を入力してください。 - - + + The log file directory doesn't exist. Please select an valid directory! ログファイルのディレクトリが存在しません。 正しいディレクトリを設定して下さい。 - + Language Changed 言語が設定されました。 - + You have changed application language to %1. Please restart PokerTH to load new language! アプリケーションの言語が %1 に変更されました。 PokerTH を再起動して設定を適応して下さい。 - + Select your flipside picture カード裏面画像を選択 - + Images (*.png *.jpg *.gif) 画像 (*.png *.jpg *.gif) - + Open Directory ディレクトリを開く - - + + Blinds Error ブラインドエラー - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -4884,7 +4957,7 @@ This first-small-blind-value will be set to maximum allowed value. この最初のブラインドの値は最大値になります。 - + The entered server list address is not a valid URL. Please enter a valid server list address! 入力されたサーバーリストアドレスは不正な URL です。 @@ -5036,138 +5109,138 @@ Please enter a valid server list address! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name 作者名 - - + + Maintainer EMail 作者のE-mail - - + + Create Date 作成日 - + Windows Behaviour ウインドウの性質 - + scaleable 可変 - + fixed 固定 - + Minimum Size 最小サイズ - + Maximum Size 最大サイズ - + Fixed Size 固定サイズ - + State 状態 - + Please select your game table style ゲームテーブルスタイルを選択して下さい - + PokerTH game table styles (*.xml) PokerTH ゲームテーブルスタイル (*.xml) - + Game Table Style Error ゲームテーブルスタイルエラー - + Selected game table style file is already in the list. Please select another one to add! 選択されたゲームテーブルスタイルは既にリストに追加されています。 追加するには別のゲームテーブルスタイルを選択して下さい。 - + Game Table Style File Error ゲームテーブルスタイルファイルエラー - + Could not load game table style file correctly. Style will not be placed into list! ゲームテーブルスタイルファイルが正しく読み込めません。 スタイルはリストに追加されませんでした。 - + Please select your card deck style カードデッキスタイルを選択して下さい。 - + PokerTH card deck styles (*.xml) PokerTH カードデッキスタイル (*.xml) - + Card Deck Style Error カードデッキスタイルエラー - + Selected card deck style file is already in the list. Please select another one to add! 選択されたカードデッキスタイルは既にリストに追加されています。 追加するには別のカードデッキスタイルを選択して下さい。 - + Card Deck Style File Error カードデッキスタイルファイルエラー - + Could not load card deck style file correctly. Style will not be placed into list! カードデッキスタイルファイルが正しく読み込めません。 @@ -5186,12 +5259,12 @@ Style will not be placed into list! PokerTH ログファイルを保存 - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5256,12 +5329,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error サーバーエラー - + You should not kick yourself from this game! 自分自身をゲームから kick することはできません。 @@ -5420,107 +5493,107 @@ Do you really want to reset factory settings? startWindowImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error ネットワークエラー - + Server address was not set. サーバーアドレスが設定されていません。 - + An invalid port was set (ports 0-1023 are not allowed). 不正なポートが設定されています(0-1023番ポートは使用できません)。 - + Could not create a socket for TCP communication. TCP 接続のための socket が作成できません。 - + Could not set the IP address. IP アドレスが設定されていません。 - + Could not set the port for this type of address. このタイプのアドレスのためのポートが設定できません。 - + The server name could not be resolved. サーバー名が解決されませんでした。 - + Bind failed - please choose a different port. Bind 失敗 - 別のポートを選択してください。 - + Internal network error: "listen" failed. 内部ネットワークエラー: "listen" 失敗 - + Server execution was terminated. I dont have this kind of knowledge to translate... - + Could not connect to the server. サーバーに接続できませんでした。 - + Connection timed out. Please check the server address. @@ -5531,12 +5604,12 @@ If the server is behind a NAT-Router, make sure port forwarding has been set up NAT ルーターを介して接続している場合、サーバー用にポート開放設定がされていることを確認してください。 - + Internal network error: "select" failed. 内部ネットワークエラー: "select" 失敗 - + Internal network error: "send" failed. 内部ネットワークエラー: "send" 失敗 @@ -5545,26 +5618,26 @@ NAT ルーターを介して接続している場合、サーバー用にポー サーバーにより接続が切断されました。 - + Internal network error: Duplicate TCP connection. 内部ネットワークエラー:TCP 接続の重複 - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. 不正なパケットを受信しました。 全てのプレイヤーが同一バージョンの PokerTH を使用していることを確認して下さい。 - + Internal state error. Please make sure that all players use the same version of PokerTH. 内部状態エラー。 全てのプレイヤーが同一バージョンの PokerTH を使用していることを確認して下さい。 - + Invalid server list URL. Please correct the address in the settings. 不正なサーバーリスト URL を検出しました。 @@ -5583,315 +5656,315 @@ Please make sure that the server list URL is correct. サーバーリストの URL が正しいか確認して下さい。 - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. PokerTH インターネットサーバーリストに含まれるデータが不正です。 カスタムサーバーリストを使用している場合、そのフォーマットが正しいか確認して下さい。 - + Could not unzip the PokerTH internet server list. PokerTH インターネットサーバーリストが展開できませんでした。 - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. PokerTH インターネットサーバーリストがダウンロードできませんでした。 直接インターネットに接続されているか確認して下さい。 - + Could not open the target file when downloading the server list. サーバーリストをダウンロードする際にファイルを開くことができませんでした。 - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. PokerTH サーバーはお使いのバージョンをサポートしていません。<br><a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> より最新版をダウンロードして下さい。 - + Sorry, this server is already full. このサーバーは既に満員です。 - + Invalid login. Please check your username and password. 不正なログインです。 ユーザー名とパスワードを確認して下さい。 - + Your account is blocked indefinitely. I can't imagine the meaning of indefinitely in this situation. あなたのアカウントはおそらくブロックされています。 - + You cannot login at this time. Please try again in a few seconds. 今回ログインできません。数秒後、再度お試し下さい。 - + You cannot join this game, because another player in that game has your network address. 別のプレイヤーが同一のネットワークアドレスを持っているため、このゲームに参加できません。 - + Your connection to the server is very slow, the game had to start without you. サーバーへの接続が遅すぎるため、ゲームに参加できない可能性があります。 - + This game is of type invite-only. You cannot join this game without being invited. このゲームは招待専用のため、招待無しで参加することはできません。 - + Invalid password when joining the game. Please reenter the password and try again. ゲームに参加するパスワードが不正です。 パスワードを再度入力してもう一度お試し下さい。 - + The avatar report was accepted by the server. Thank you. アバターの報告は受け付けられました。ありがとうございます。 - + This avatar was already reported by another player. このアバターは既に他のプレイヤーに報告されています。 - + An error occurred while reporting the avatar. アバターの報告の際、エラーが発生しました。 - + The password is too long. Please choose another one. パスワードが長すぎます。別のパスワードを設定して下さい。 - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game ネットワークゲームを開始 - + The connection to the server was lost. - + The game name is either too short or too long. Please choose another one. ゲーム名が短すぎるか長すぎます。別のゲーム名を設定して下さい。 - + The game could not be found. ゲームが見つかりませんでした。 - + The chat text is invalid. チャット文章が不正です。 - + The server referred to an unknown player. Aborting. サーバーが不明なプレイヤーを参照しました。終了します。 - + Internal error: The current player could not be found. 内部エラー:現在のプレイヤーが見つかりませんでした。 - + Internal error: The current player is not active. 内部エラー:現在のプレイヤーはアクティブではありません。 - + You were kicked from the server. サーバーから kick されました。 - + You were temporarily banned from the server. サーバーから一時的に BAN されました。 - + Your server connection timed out due to inactivity. You are very welcome to reconnect! あなたの接続は静止状態が続くとタイムアウトします。再接続お待ちしております。 - + The client player count is invalid. クライアントプレイヤー計算が不正です。 - + Too many manual blinds were set. Please reconfigure the manual blinds. 手動ブラインド設定が多すぎます。手動ブラインド設定を再設定して下さい。 - + An invalid avatar file was configured. Please choose a different avatar. 不正なアバターが設定されています。別のアバターを選択して下さい。 - + The selected avatar file is too large. Please choose a different avatar. 選択されたアバターファイルが大きすぎます。別のアバターを選択して下さい。 - + An internal avatar error occured. Please report this to an admin in the lobby chat. 内部アバターエラーが発生しました。ロビーチャット内の管理者に報告して下さい。 - + Could not start game: Synchronization failed. ゲームが開始できません: 同期失敗。 - + The server is down for maintenance. Please try again later. メンテナンスのためサーバーがダウンしています。後ほどお試し下さい。 - + An internal error occured. 内部エラーが発生しました。 - - - - - - - - - - - - + + + + + + + + + + + + Network Notification ネットワーク通知 - + You were kicked from the game. ゲームから kick されました。 - + Sorry, this game is already full. このゲームは既に満員です。 - + Unable to join - the server has already started the game. 参加できません - サーバーが既にゲームを開始しています。 - + Your admin state timed out due to inactivity. Feel free to create a new game! 静止状態で管理者状態はタイムアウトしました。新規ゲームを作成して下さい。 - + You cannot join this type of game as guest. このゲームタイプにはゲストとして参加することが出来ません。 - + The settings are invalid for this type of game. このゲームタイプの設定は不正です。 - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. 新しいバージョンの PokerTH がリリースされました。<a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> より最新版をダウンロードして下さい。 - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. このベータリリースの PokerTH は期限切れです。<a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> より最新版をダウンロードして下さい。 - - + + Server Message サーバーメッセージ - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. diff --git a/ts/pokerth_lt.ts b/ts/pokerth_lt.ts index 72a6591e..05db5091 100644 --- a/ts/pokerth_lt.ts +++ b/ts/pokerth_lt.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -211,22 +210,22 @@ Prašome susisiekti su žaidimo stalo stiliaus kūrėju, kaip "%4".Žaidimo stalo stiliaus klaida - pasenęs - + Everything OK! Viskas GERAI! - + Some pictures are missing, please contact style maintainer for this issue. Trūksta kai kurių paveikslėlių, prašome susisiekti su stiliaus prižiūrėtoju dėl šios laidos. - + Some style fields are missing, please contact style maintainer for this issue. Trūksta kai kurių stiliaus laukų, prašome susisiekti su stiliaus prižiūrėtoju dėl šios laidos. - + This style is outdated, please contact style maintainer for this issue. Šis stilius yra pasenęs, prašome susisiekti su stiliaus prižiūrėtoju dėl šios laidos. @@ -304,52 +303,52 @@ Prašome pasirinkti žaidimo stalo stilių ir bandyti dar kartą! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file Išsaugoti PokerTH žurnalo failą - + PokerTH SQL log (*.pdb) PokerTH SQL žurnalas (*.pdb) @@ -396,13 +395,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -431,18 +430,18 @@ Please verify that you are uploading a valid PokerTH log file. Pranešti apie netinkamą avataro paveikslėlį - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Jūs daugiau nebegausite pokalbio žinučių ar kvietimų žaisti iš šio naudotojo.<br>Ar tikrai norite patalpinti žaidėją <b>%1</b> į ignoravimo sąrašą? - - + + PokerTH - Question PokerTH - klausimas - + Are you sure you want to report the avatar of "%1" as inappropriate? Ar tikrai norite pranešti apie „%1“ paveikslėlį, kaip netinkamą? @@ -471,8 +470,8 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About Apie @@ -507,37 +506,37 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">© 2006-2010, FHammer, FThauer, LMay</p></td></tr></table></body></html> - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project Projektas - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> @@ -813,8 +812,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - grafinės sąsajoskompozicijos iniciatorius</span></p></body></html> - - + + Translation Vertimas @@ -831,8 +830,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" ">Lulilo - dalelemanes@gmail.com</span></p></body></html> - - + + Thanks to Ačiū @@ -883,13 +882,19 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - už forumo prižiūrėjimą ir organizuotą klaidų sekimą ir funkcijų aprašymus</span></p></body></html> - - + + License Licenzija - + + + Third party libs + + + + Close Uždaryti @@ -918,8 +923,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">© 2006-2009, FHammer, FThauer, LMay</p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -928,7 +933,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1180,12 +1185,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Rankinių statymų tvarka - + You cannot set more than 30 manual blinds. Jūs negalite nustatyti daugiau nei 30 rankinių statymų. @@ -1340,7 +1345,7 @@ Prašome pasirinkti kitą! - + Default game name: Numatytas žaidimo pavadinimas: @@ -1375,75 +1380,81 @@ Prašome pasirinkti kitą! Žaidimas dėl reitingų - - + + Maximum number of players: Didžiausias žaidėjų skaičius: - - + + Start Cash: Pradiniai pinigai: - - + + $ $ - + Blinds Statymai - + Use saved blinds settings Naudoti įrašytas statymų nuostatas - + Change blinds settings ... Keisti statymų nuostatas ... - + Timeout for player action: Pertraukėlė žaidėjo veiksmui atlikti: - - + + s s - - + + Password: Slaptažodis: - + Delay between hands: Delsti tarp rankų: - - + + + Allow spectators to watch the game + + + + + Create Game Sukurti žaidimą - + Cancel Atšaukti @@ -1556,56 +1567,68 @@ Prašome pasirinkti kitą! Žaidimo internetu Fojė - - + + Game Info Žaidimo informacija - - + + Game type: Žaidimo tipas: - - + + Connected Players Prisijungę žaidėjai - - + + search for player ... ieškoti žaidėjo ... - - + + 5 - Show open & non-full & ranking games - - + + + Players + Žaidėjai + + + + + Spectators + + + + + Start Cash: Pradiniai pinigai: - - + + First small blind: Pirmasis mažasis statymas: - - + + Blinds raise interval: Statymų didinimo intervalas: - - + + Blinds raise mode: Statymų didinimo būsena: @@ -1615,7 +1638,7 @@ Prašome pasirinkti kitą! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1628,68 +1651,66 @@ p, li { white-space: pre-wrap; } Pertraukėlė žaidėjo veiksmui atlikti (sek.): - - + + Fill up with computer opponents Užpildyti su kompiuterio varžovais - - + + &Start Game &Pradėti žaidimą - - + + &Kick Player &Pašalinti žaidėją - - + + Sort alphabetically Rikiuoti pagal abėcėlę - - + + Sort by country Rikiuoti pagal šalį - - + + Display idle players Rodyti laisvus žaidėjus - - + + Manual blinds list: Rankinių statymų sąrašas: - - + + &Leave Game &Palikti žaidimą - - Join &any game - Jungtis prie &bet kurio + Jungtis prie &bet kurio - - + + &Create Game &Sukurti žaidimą - - + + &Join Game &Jungtis prie žaidimo @@ -1712,44 +1733,44 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Spragtelėkite čia, kad pamatytumėte reitingus internete</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - Be žaidimo skirstymo į sąrašus - - + + 1 - Show open games 1 - Rodyti atvirus žaidimus - - + + 2 - Show open & non-full games 2 - Rodyti atvirus & neužpildytus žaidimus - - + + 3 - Show open & non-full & non-private games 3 - Rodyti atvirus & neužpildytus & neprivačius žaidimus - - + + 4 - Show open & non-full & private games 4 - Rodyti atvirus & neužpildytus & privačius žaidimus - - + + Timing: - - + + Lobby-Chat Fojė-Pokalbis @@ -1774,46 +1795,46 @@ p, li { white-space: pre-wrap; } Pradedamas žaidimas. Prašome palaukti ... - + Joining a private Game Jungiamasi prie privataus žaidimo - + You are about to join a private game. Please enter the password! Jūs esate čia, kad prisijungtumėte prie privataus žaidimo. Prašome įrašyti slaptažodį! - + open atviras - - - - + + + + Game Info Žaidimo informacija - - - + + + Game Žaidimas - - - + + + Players Žaidėjai - - - + + + State Būsena @@ -1822,167 +1843,177 @@ p, li { white-space: pre-wrap; } R - - - + + + P P - - - + + + Available Players Pasiekiami žaidėjai - + Invite player Pakviesti žaidėją - + Ignore player Ignorouti žaidėją - + Player infos ... Žaidėjo informacija ... - - - + + + Standard Standartinis - - - + + + Registered players only Tik užsiregistravę žaidėjai - - - + + + Invited players only Tik pakviesti žaidėjai - - - + + + Ranking game Žaidimas dėl reitingų - Connected players - max. %1 - Prisijungusių vartotojų - max. %1 + Prisijungusių vartotojų - max. %1 - - - + + + T T - + Report inappropriate game name - - - + + + sec (action) - - - + + + sec (hand delay) - - Connected players - Max. %1 - Prisijungusių vartotojų - Max. %1 + Prisijungusių vartotojų - Max. %1 - + running vykdoma - - + + running games: %1 vyksta žaidimų: %1 - - + + open games: %1 atviri žaidimai: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 Pakviesti %1 - + Ignore %1 Ignoruoti %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 buvo pakviestas į %2 nuo %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 atmetė pakvietimą į %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 negali jungtis %2, nes yra užimta(s).</span> - - + + The game will start in<br><b>%1</b> seconds. Žaidimas prasidės po<br><b>%1</b> sekundžių. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Jūs atsidūrėte žaidimo su "tik su pakvietimais" tipu. Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant jų slapyvardžių prieinamame žaidėjų sąraše. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Jūs buvote pakviestas į žaidimą <b>%1</b> nuo <b>%2</b>.<br>Ar norite jungtis prie žaidimo? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Jūs nebegausite daugiau pokalbio žinučių arba žaidimo pakvietimų iš šio naudotojo.<br>Ar tikrai norite patalpinti žaidėją <b>%1</b> į ignoravimo sąrašą? - - + + connected players: %1 prisijungę žaidėjai: %1 @@ -1997,1343 +2028,1346 @@ Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant j - - - + + Spectate + + + + + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game - - Connected players - Prisijungę žaidėjai + Prisijungę žaidėjai - + hands rankos - + minutes minutės - + double blinds dvigubi statymai - + manual blinds order rankinių statymų tvarka - + Server Error Serverio klaida - + You should not kick yourself from this game! Jūs negalėsite išmesti savęs iš šio žaidimo! - + search for player ... ieškoti žaidėjo ... - + Chat is only available to registered players. Pokalbis yra prieinamas tik užsiregistravusiems žaidėjams. - + Invite player ... Pakviesti žaidėją ... - + Ignore player ... Ignoruoti žaidėją ... - + %1 is playing in "%2". %1 žaidžia "%2". - + %1 is not playing at the moment. %1 šiuo metu nežaidžia. - - + + PokerTH - Info Message PokerTH - Informacinė žinutė - - - - + + + + PokerTH - Question PokerTH - Klausimas - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Lietuvių - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3346,273 +3380,273 @@ Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant j PokerTH 0.6-beta - atviro kodo Texas Holdem varikliukas - + Hands Rankos - + Chat Pokalbis - + Save Įrašyti - + Log Žurnalas - + Away Atsitraukus - + Manual Action (default) Rankinis veiksmas (numatytas) - + Auto-Check / Auto-Fold Automatiškai tikrinti / atsisakyti - + Auto-Check / Auto-Call-Any Automatiškai tikrinti / visuomet sutikti - + Speed: Greitis: - - + + Start Local Game ... Pradėti vietinį žaidimą ... - - + + Ctrl+N Ctrl+N - - + + Quit Išeiti - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... Apie PokerTH ... - - + + Settings ... Nuostatos ... - - + + Create Network Game ... Sukurti tinklo žaidimą ... - - + + Ctrl+O Ctrl+O - - + + Join Network Game ... Jungtis prie tinklo žaidimo ... - - + + Ctrl+J Ctrl+J - - - + + + Fullscreen Visas ekranas - - + + Ctrl+F Ctrl+F - - + + Show/Hide Chat Window Rodyti/Slėpti pokalbio langą - - + + Ctrl+T Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window Rodyti/Slėpti rankų langą - - + + Ctrl+H Ctrl+H - - + + Show/Hide Log Window Rodyti/Slėpti sąrašo langą - - + + Ctrl+L Ctrl+L - - + + Internet Game ... Žaidimas internetu ... - - + + Ctrl+I Ctrl+I - - + + Show/Hide Away Window Rodyti/Slėpti išėjusius langus - - + + Ctrl+A Ctrl+A - + Kick Pašalinti - + Vote Timeout: Balsavimui skirtasis laikas: - + Yes Taip - + No Ne - + Player info - + Chance Galimybės - + Configure PokerTH ... Konfigūruoti PokerTH ... - - + + Close Uždaryti - - + + Ctrl+X Ctrl+X - + Vote started by: Balsavimą pradėjo: - - + + Show/Hide Chance Window Rodyti/Slėpti pakeistą langą - - + + Ctrl+C Ctrl+C - + &View &Rodyti - + &Settings &Nuostatos - + Shortcut: <Shift> Šaukinys: <Shift> - + Settings Nuostatos - + Configure PokerTH @@ -3620,97 +3654,102 @@ Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant j gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stabdyti - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - atviro kodo Texas Holdem varikliukas - - - - - - - - + + + + + + + + Start Pradėti - - - - - + + + + + Lobby Fojė - - + + Chat Pokalbis - + Closing PokerTH during network game Uždaromas PokerTH per tinklo žaidimą - + You are the hosting server. Do you want to close PokerTH anyway? Jūs esate prieglobos serveris. Ar norite vistiek uždaryti PokerTH? - + Really want to exit? Ar tikrai norite išeiti? - + PokerTH - Close Table? PokerTH - užverti lentelę? - + PokerTH - Internet Game Message PokerTH - žaidimo internetu žinutė - + Attention! Do you really want to leave the current game and go back to the lobby? Dėmesio! Ar tikrai norite palikti esamą žaidimą ir grįžti į fojė? - - + + Chat is only available to registered players. Pokalbis yra prieinamas tik užsiregistravusiems žaidėjams. + + + Spectators + + PokerTH - Warning PokerTH - Įspėjimas @@ -3726,50 +3765,50 @@ Po %1 papildomo skirtojo laiko, reikia serveriui pašalinti Jus, kad užtikrint Jei esate laikinai atsitraukęs, galite panaudoti "išėjęs" priemonę, priemonių komplekte, kuris yra dešinėje. - - + + Chance Keisti - - + + Kick Pašalinti - - + + Do you want to kick <b>%1</b><br>from this game? Ar norite pašalinti <b>%1</b><br>iš šio žaidimo? - - - - + + + + <b>%1</b> secs left <b>%1</b> sek. liko - + vote balsavimas - + votes balsai - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Žaidėjas <b>%1</b> yra <b>%2</b> %3<br>prieš jį. <b>%4</b> balso ar balsų reikia pašalinimui. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Jūs turite <b>%1</b> %2 prieš tave.<br><b>%3</b> balso ar balsų reikia pašalinimui. @@ -3986,57 +4025,67 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Serverio įkėlimas-Profilis-Failo klaida - - - - Could not load server-profiles-file: - Nepavyksta įkelti serverio-profilių-failo: + Nepavyksta įkelti serverio-profilių-failo: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error Įrašyto serverio profilio klaida - + A profile with the name: %1 already exists. Would you like to overwrite ? Profilis su tokiu vardu: %1 jau egistuoja. Galbūt norėtumėte pakeisti ? - + Read Server-Profile List Error Skaitomo serverio-Profilio sąrašo klaida - + Could not read server-profiles list Nepavyksta skaityti serverio-profilių sąrašo - - + + Save Server-Profile-File Error Serverio įrašymas-Profilis-Failo klaida - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Nepavyksta įrašyti serverio-profilių-failo: + Nepavyksta įrašyti serverio-profilių-failo: @@ -4101,12 +4150,12 @@ Galbūt norėtumėte pakeisti ? manualBlindsOrderDialogImpl - + Manual Blinds Order Rankinių statymų tvarka - + You cannot set more than 30 manual blinds. Jūs negalite nustatyti daugiau nei 30 rankinių statymų. @@ -4171,7 +4220,7 @@ Galbūt norėtumėte pakeisti ? - + Use saved blinds settings Naudoti įrašytas statymų nuostatas @@ -4182,13 +4231,13 @@ Galbūt norėtumėte pakeisti ? - + Change blinds settings ... Keisti statymų nuostatas ... - + Game Speed: Žaidimo greitis: @@ -4229,38 +4278,38 @@ Galbūt norėtumėte pakeisti ? selectAvatarDialogImpl - - - + + + Avatar File Error Avataro failo klaida - + Please select an avatar from the list! Prašome pasirinkti avatarą iš sąrašo! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Failo dydis pasirinkto paveikslėlio yra per didelis. (max. 30KB) Prašome pasirinkti mažesnį paveikslėlį! - + The entered avatar picture doesn't exist. Please enter an valid picture! Įvestas avataro paveikslėlis neegzistuoja. Prašome įvesti galiojantį paveikslėlį! - + Select external avatar picture Pasirinkti išorinį avataro paveikslėlį - + Images (*.png *.jpg *.gif) Paveikslėliai (*.png *.jpg *.gif) @@ -4281,341 +4330,365 @@ Prašome įvesti galiojantį paveikslėlį! Sąsaja - - + + Language: Kalba: - - + + Show fade-out animation for non-winning cards Rodyti išnykstančią animaciją nelaiminčioms kortoms - - + + Show flip-card animation Rodyti apverstos kortos animaciją - - + + Show buttons for small blind and big blind Rodyti mygtukus mažajam statymui ir didžiajam statymui - - + + Show own cards only on mouse click Rodyti nuosavas kortas tik po pelės spragtelėjimo - + Reverse order of F-Keys (F1 - F4) Atvirkštinė F-klavišų tvarka (F1 - F4) - - + + Network / Internet Game Tinklo / interneto žaidimas - - + + Switch keyboard focus to bet-input-field if it's your turn Perjungti klaviatūros židinį į statymo-įvedimo-lauką, jei yra Jūsų ėjimas - + Sound Garsas - + Factory Settings - - + + + Common + + + + + Disable splashscreen on startup Išjungti ekrano užsklandą sistemos paleidime - - + + Show country flag in the corner of avatar Rodyti šalies vėliavą avataro kampe - - + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table Žaidimo stalas - - - - + + + + Description Aprašymas - - - - + + + + Maintainer Prižiūrėtojas - - - + + + State Būsena - - + + Card Deck Kortų kaladė - - + + Card Back Kortos nugarėlė - - + + Use card back from card style Naudoti kortos nugarėlę iš kortos stiliaus - - + + Use custom card back picture: Naudoti savitą kortos nugarėlės paveikslėlį: - - + + Play sound effects Leisti garso efektus - - + + Sound Volume: Garso lygis: - - + + 10 10 - - + + Sound Categories Garso kategorijos - - + + Play game actions sounds like "check", "call", "raise" Leisti žaidimo veiksmo garsus, panašius į "tikrinti", "atsakyti", "didinti" - - + + Play lobby chat notifications Leistii fojė pokalbio pranešimus - - + + Play network/internet game notifications like "player joined the game" Leisti tinklo/interneto žaidimo pranešimus, panašius į "žaidėjas prisijungęs prie žaidimo" - - + + Server Password: - + + + Allow spectators to watch the game + + + + OK - + Local Game Settings Vietinio žaidimo nuostatos - - + + Number of players: Žaidėjų skaičius: - - - - + + + + Start Cash: Pradinis statymas: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Pirmasis mažasis statymas: - - - - + + + + Raise blinds: Didinti statymus: - - - - - - - - + + + + + + + + Every: Po kiekvienos: - - - - + + + + hands rankos - - - - + + + + minutes minutės - - - - + + + + Raise mode: Didinimo būsena: - - - - + + + + Always double blinds Visuomet dvigubinti statymus - - - - + + + + Manual blinds order: Rankinių statymų tvarka: - - - - + + + + Edit ... Taisyti ... - - + + Game Speed: Žaidimo greitis: - - + + Pause between hands (press "start" button to go on) Pauzė tarp rankų (spauskite "pradėti" mygtuką, kad tęstumėte) - - + + Show game settings dialog on every new game Rodyti žaidimo nuostatų dialogo langą per kiekvieną naują žaidimą - + Network Game Settings Tinklo žaidimo nuostatos - - + + Maximum number of players: Didžiausias žaidėjų skaičius: - - + + Timeout for player action: Pertraukėlė žaidėjo veiksmui atlikti: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4640,66 +4713,66 @@ Prašome įvesti galiojantį paveikslėlį! Žurnalo failas - - - - + + + + s s - - + + Network Server Settings Tinklo serverio nuostatos - - - - + + + + Server Port: Serverio prievadas: - - - - + + + + Use SCTP Naudoti SCTP - - - - + + + + Use IPv6 Naudoti IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Kas tai?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Kas tai?</a> - + Internet Game Settings Žaidimo internetu nuostatos - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4710,61 +4783,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Pastaba: Numatytosios </span><span style=" font-weight:600; font-style:italic;">Žaidimo nuostatos</span><span style=" font-style:italic;">, panašios į "Didžiausias žaidėjų skaičius", "Pradiniai pinigai" ir "Mažasis statymas" bus naudojamos </span><span style=" font-weight:600; font-style:italic;">iš tinklo žaidimo nuostatų.</span></p></body></html> - - + + Server Address: Serverio adresas: - - + + Use password for private game: Naudoti slaptažodį privačiam žaidimui: - - + + Computer Engine Kompiuterio varikliukas - - + + Opponent 6: Priešininkas 6: - - + + Opponent 5: Priešininkas 5: - - + + Opponent 4: Priešininkas 4: - - + + Opponent 3: Priešininkas 3: - - + + Opponent 2: Priešininkas 2: - - + + Opponent 1: Priešininkas 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4775,8 +4848,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Pastaba: Geriausia avataro kokybė su paveikslėlio koeficientu, panašiu į </span><span style=" font-weight:600; font-style:italic;">plotis=50, aukštis=50.</span></p></body></html> - - + + Enable/Disable Logging Įjungti/Išjungti prisijungimą @@ -4785,105 +4858,105 @@ p, li { white-space: pre-wrap; } Žurnalo failo atmintinė - - + + Log File Directory: Žurnalo failo katalogas: - - + + Write log after every: Įrašyti žurnalą po kiekvieno: - - + + action (high frequent disc access) veiksmo (disko prieigos aukštas dažnis) - - + + hand (medium disc access) rankos (vidutinė disko prieiga) - - + + game (low disc access) žaidimo (žema disko prieiga) - + Log Messages Žurnalo žinutės - + Player Nicks/Avatars Žaidėjo slapyvardžiai/avatarai - + Show right toolbox Rodyti dešinįjį priemonių komplektą - + Show left toolbox Rodyti kairįjį priemonių komplektą - - + + Play blind raise notification - - + + Automatic Server Configuration URL Automatinė serverio konfigūracija URL - - + + Serverlist Address: Serverio sąrašo adresas: - - + + Manual Server Configuration Rankinė serverio konfigūracija - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) Diena(os) @@ -4912,62 +4985,62 @@ p, li { white-space: pre-wrap; } Slapyvardžiai/Avatarai - - + + Show cards chance monitor Rodyti kortų parodymo galimybę - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: Avataro serveris: - + Style Stilius - - + + Don't translate poker strings like check, call, raise from game table style Nėra verčiamos pokerio eilutės, panašios į tikrinti, atsakyti, didinti iš žaidimo stalo stiliaus - - - - + + + + Add ... Pridėti ... - - - - + + + + Remove Pašalinti - - - - + + + + Preview - Information: Peržiūra - Informacija: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4980,8 +5053,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Gauti naujus PokerTH žaidimo stalo stilius ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4994,7 +5067,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Gauti naujus PokerTH kortų kaladžių stilius ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5013,96 +5086,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Pastaba: Geriausios kokybės su paveikslėlio koeficientu, panašiu į </span><span style=" font-weight:600; font-style:italic;">plotis=48, aukštis=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Delsti tarp rankų: - - + + Server Serveris - - + + Game Žaidimas - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Numatytas žaidimo pavadinimas: - - + + Default game type: Numatytas žaidimo tipas: - - + + Standard Standartinis - - + + Registered players only Tik užsiregistravę žaidėjai - - + + Invited players only Tik pakviesti žaidėjai - - + + Ranking game Žaidimas dėl reitingų - - + + Show lobby chat Rodyti fojė pokalbius - - + + Automatically leave the table after the game finished - - + + Ignored Players Ignoruojami žaidėjai - - + + Player Žaidėjas - - + + Remove Player Pašalinti žaidėją - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5115,20 +5188,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Žmogus žaidėjas:<br /><span style=" font-style:italic;">(Šis slapyvardis taip pat bus naudojamas internetinio žaidimo prisijungimui)</span></p></body></html> - - + + Opponent 7: Priešininkas 7: - - + + Opponent 8: Priešininkas 8: - - + + Opponent 9: Priešininkas 9: @@ -5206,65 +5279,65 @@ p, li { white-space: pre-wrap; } Turkų - - - - - + + + + + Settings Error Nuostatų klaida - + The entered flipside picture doesn't exist. Please enter an valid picture! Įvesta atvirkštinė paveikslėlio pusė neegzistuoja. Prašome įvesti galiojantį paveikslėlį! - - + + The log file directory doesn't exist. Please select an valid directory! Žurnalo failo katalogas neegzistuoja. Prašome pasirinkti galiojantį katalogą! - + Language Changed Kalba pakeista - + You have changed application language to %1. Please restart PokerTH to load new language! Jūs pakeitėte programos kalbą į %1. Prašome perkrauti PokerTH, kad įkeltumėte naują kalbą! - + Select your flipside picture Pasirinkite paveikslėlio atvirkštinę pusę - + Images (*.png *.jpg *.gif) Paveikslėliai (*.png *.jpg *.gif) - + Open Directory Atverti katalogą - - + + Blinds Error Statymų klaida - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5298,7 +5371,7 @@ yra mažesnis už esamą pirmąjį-mažajį-statymą! Švedų - + The entered server list address is not a valid URL. Please enter a valid server list address! Įvestas serverio sąrašo adresas nėra galiojantis URL. @@ -5355,138 +5428,138 @@ Prašome įvesti galiojantį serverio sąrašo adresą! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Prižiūrėtojo vardas - - + + Maintainer EMail Prižiūrėtojo el.paštas - - + + Create Date Sukūrimo data - + Windows Behaviour Langų elgsena - + scaleable išplečiamas - + fixed fiksuotas - + Minimum Size Mažiausias dydis - + Maximum Size Didžiausias dydis - + Fixed Size Fiksuotas dydis - + State Būsena - + Please select your game table style Prašome pasirinkti savo žaidimo stalo stilių - + PokerTH game table styles (*.xml) PokerTH žaidimo stalo stiliai (*.xml) - + Game Table Style Error Žaidimo stalo stiliaus klaida - + Selected game table style file is already in the list. Please select another one to add! Pasirinktas žaidimo stalo stiliaus failas jau yra sąraše. Prašome pasirinkti kitą! - + Game Table Style File Error Žaidimo stalo stiliaus failo klaida - + Could not load game table style file correctly. Style will not be placed into list! Nepavyko įkelti žaidimo stalo stiliaus failo teisingai. Stilius nebus įkeltas į sąrašą! - + Please select your card deck style Prašome pasirinkti savo kortų kaladės stilių - + PokerTH card deck styles (*.xml) PokerTH kortų kaladės stiliai (*.xml) - + Card Deck Style Error Kortų kaladės stiliaus klaida - + Selected card deck style file is already in the list. Please select another one to add! Pasirinktas kortų kaladės stiliaus failas jau yra sąraše. Prašome pasirinkti kitą! - + Card Deck Style File Error Kortų kaladės stiliaus failo klaida - + Could not load card deck style file correctly. Style will not be placed into list! Nepavyko įkelti kortų kaladės stiliaus failo teisingai. @@ -5509,12 +5582,12 @@ Stilius nebus įkeltas į sąrašą! PokerTH SQL žurnalas (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5587,12 +5660,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Serverio klaida - + You should not kick yourself from this game! Jūs negalėsite išmesti savęs iš šio žaidimo! @@ -5759,106 +5832,106 @@ Do you really want to reset factory settings? startWindowImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Tinklo klaida - + Server address was not set. Serverio adresas nebuvo nustatytas. - + An invalid port was set (ports 0-1023 are not allowed). Vidinis prievadas buvo nustatytas (prievadai 0-1023 yra neleidžiami). - + Could not create a socket for TCP communication. Nepavyko sukurti jungties TCP ryšiui. - + Could not set the IP address. Netinkamas IP adresas. - + Could not set the port for this type of address. Netinkamas prievadas šio tipo adresui. - + The server name could not be resolved. Serverio pavadinimo nepavyksta nustatyti. - + Bind failed - please choose a different port. Surišimas nepavyko - prašome pasirinkti kitą prievadą. - + Internal network error: "listen" failed. Vidinė tinklo klaida: "pasiklausymas" nepavyko. - + Server execution was terminated. Serverio vykdymas buvo nutrauktas. - + Could not connect to the server. Netinkamas prisijungimas prie serverio. - + Connection timed out. Please check the server address. @@ -5869,12 +5942,12 @@ Prašome patikrinti serverio adresą. Jei serveris yra už NAT-maršruto parinktuvo, įsitikinkite ar prievadas persiunčiant buvo nustatytas serverio pusėje. - + Internal network error: "select" failed. Vidinė tinklo klaida: "pasirinkti" nepavyko. - + Internal network error: "send" failed. Vidinė tinklo klaida: "nusiųsti" nepavyko. @@ -5883,26 +5956,26 @@ Jei serveris yra už NAT-maršruto parinktuvo, įsitikinkite ar prievadas persiu Prisijungimas buvo nutrauktas iš serverio. - + Internal network error: Duplicate TCP connection. Vidinė tinklo klaida: Dubliuojasi TCP prisijungimas. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Vidinis tinklo paketas buvo gautas. Prašome įsitikinti, kad visi žaidėjai naudoja tokią pačią PokerTH versiją. - + Internal state error. Please make sure that all players use the same version of PokerTH. Vidinės būsenos klaida. Prašome įsitikinti, kad visil žaidėjai naudoja tokią pačią PokerTH versiją. - + Invalid server list URL. Please correct the address in the settings. Netinkamas serverio sąrašo URL. @@ -5921,314 +5994,314 @@ Please make sure that the server list URL is correct. Prašome įsitikinti, kad serverio sąrašo URL yra teisingas. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. PokerTH interneto serverio sąrašo turinys netinkamų duomenų. Jei naudojate savitą serverio sąrašą, prašome įsitikinti ar šis formatas yra teisingas. - + Could not unzip the PokerTH internet server list. Nepavyko išarchyvuoti PokerTH interneto serverio sąrašo. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Nepavyko atsiųsti PokerTH interneto serverio sąrašo. Prašome įsitikinti ar esate tiesiogiai prisijungęs prie interneto. - + Could not open the target file when downloading the server list. Nepavyko atverti paskirties failo, kuomet buvo atsiunčiamas serverio sąrašas. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. PokerTH serveris nesupranta šios žaidimo versijos.<br>Prašome eiti į <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> ir atsisiųsti naujausią versiją. - + Sorry, this server is already full. Atsiprašome, šis serveris jau yra užpildytas. - + Invalid login. Please check your username and password. Netinkamas prisijungimas. Prašome patikrinti vartotojo vardą ir slaptažodį. - + Your account is blocked indefinitely. Jūsų paskyrą yra užblokuota neribotam laikui. - + You cannot login at this time. Please try again in a few seconds. Jūs negalite šiuo metu prisijungti. Prašome pamėginti vėl po penkių sekundžių. - + You cannot join this game, because another player in that game has your network address. Jūs negalite prisijungti prie žaidimo, nes kitas žaidėjas šiame žaidime turi Jūsų tinklo adresą. - + Your connection to the server is very slow, the game had to start without you. Jūsų ryšys su serveriu yra labai lėtas, žaidimas turėjo prasidėti be Jūsų. - + This game is of type invite-only. You cannot join this game without being invited. Šis žaidimas yra tik su pakvietimais tipo. Jūs negalite jungtis prie šio žaidimo be pakvietimo. - + Invalid password when joining the game. Please reenter the password and try again. Netinkamas slaptažodis jungiantis prie žaidimą. Prašome įvesti slaptažodį ir mėginti dar kartą. - + The avatar report was accepted by the server. Thank you. Pranešimą apie avatarą serveris priėmė. Ačiū Jums. - + This avatar was already reported by another player. Apie šį avatarą jau pranešė kitas žaidėjas. - + An error occurred while reporting the avatar. Pranešimo metu apie avataro paveikslėlį įvyko klaida. - + The password is too long. Please choose another one. Slaptažodis yra per ilgas. Prašome pasirinkti kitą. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Pradėti tinklo žaidimą - + The connection to the server was lost. - + The game name is either too short or too long. Please choose another one. Žaidimo pavadinimas yra per trumpas arba per ilgas. Prašome pasirinkti kitą. - + The game could not be found. Žaidimo nepavyko rasti. - + The chat text is invalid. Pokalbio tekstas yra netinkamas. - + The server referred to an unknown player. Aborting. Serveris kreipėsi į nežinomą žaidėją. Nutraukiama. - + Internal error: The current player could not be found. Vidinė klaida: Esamo žaidėjo nepavyko rasti. - + Internal error: The current player is not active. Vidinė klaida: Esamas žaidėjas nėra aktyvus. - + You were kicked from the server. Jūs buvote pašalintas iš serverio. - + You were temporarily banned from the server. Jūs buvote laikinai pašalintas iš serverio. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Jūsų serverio prisijungimo laikas baigėsi dėl neveiksnumo. Jūs esate labai kviečiamas vėl prisijungti! - + The client player count is invalid. Kliento žaidėjas yra apskaičiuotas netinkamai. - + Too many manual blinds were set. Please reconfigure the manual blinds. Per daug rankinių statymų buvo nustatyta. Prašome perkonfigūruoti rankinius statymus. - + An invalid avatar file was configured. Please choose a different avatar. Vidinis avataro failas buvo sukonfigūruotas. Prašome pasirinkti kitą avatarą. - + The selected avatar file is too large. Please choose a different avatar. Pasirinktas avataro failas yra per didelis. Prašome pasirinkti kitą avatarą. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Įvyko vidinė avataro klaida. Prašome pranešti apie tai administratoriui fojė pokalbio lange. - + Could not start game: Synchronization failed. Nepavyko pradėti žaidimo: Sinchronizavimas nepavyko. - + The server is down for maintenance. Please try again later. Serveris neveikia dėl apžiūros. Prašome pabandyti vėliau. - + An internal error occured. Įvyko vidinė klaida. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Tinklo pranešimas - + You were kicked from the game. Jūs buvote pašalintas iš žaidimo. - + Sorry, this game is already full. Atsiprašome, šis žaidimas jau yra užpildytas. - + Unable to join - the server has already started the game. Negalima prisijungti - serveris jau pradėjęs žaidimą. - + Your admin state timed out due to inactivity. Feel free to create a new game! Jūsų administratoriaus būsenos laikas baigėsi dėl neveiklumo. Nesivaržykite sukurti naujo žaidimo! - + You cannot join this type of game as guest. Jūs negalite jungtis prie šio žaidimo tipo kaip svečias. - + The settings are invalid for this type of game. Nuostatos yra netinkamos šio tipo žaidimui. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Nauja PokerTH laida yra prieinama.<br>Prašome eiti į <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> ir atsisiųsti naujausią versiją. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Ši PokerTH beta laida yra pasenusi.<br>Prašome eiti į <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> ir atsisųsti naujausią versiją. - - + + Server Message Serverio žinutė - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. diff --git a/ts/pokerth_nl.ts b/ts/pokerth_nl.ts index 1aec18c3..6336932f 100644 --- a/ts/pokerth_nl.ts +++ b/ts/pokerth_nl.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -244,22 +243,22 @@ De maker van de speeltafelstijl is te bereiken via %4. Speeltafelstijlfout - te oud - + Everything OK! Alles in orde - + Some pictures are missing, please contact style maintainer for this issue. Er ontbreken afbeeldingen, hier kan contact over worden opgenomen met de maker van de stijl. - + Some style fields are missing, please contact style maintainer for this issue. Er ontbreken stijlvelden, hier kan contact over worden opgenomen met de maker van de stijl. - + This style is outdated, please contact style maintainer for this issue. De stijl is te oud, hier kan contact over worden opgenomen met de maker van de stijl. @@ -422,52 +421,52 @@ De maker van de stijl is te bereiken via %3. - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file PokerTH-logbestand opslaan - + PokerTH SQL log (*.pdb) PokerTH SQL-logbestand (*.pdb) @@ -514,13 +513,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -557,18 +556,18 @@ Please verify that you are uploading a valid PokerTH log file. - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Er zullen geen chatberichten of speluitnodigingen meer worden ontvangen van deze gebruiker. <br>Speler <b>%1</b> werkelijk op de lijst Genegeerde spelers zetten? - - + + PokerTH - Question PokerTH - Vraag - + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -597,31 +596,37 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About Info - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + + Third party libs @@ -655,8 +660,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">© 2006-2010, FHammer, FThauer, LMay</p></td></tr></table></body></html> - - + + Project Project @@ -898,8 +903,8 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Projectpagina: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> <a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">IRC: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> #pokerth (irc.freenode.net)</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Makers: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Felix Hammer (<a href="mailto:doitux@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - idee, basisarchitectuur, implementatie van de grafische interface, Linuxpakket, webmaster@pokerth.net</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Florian Thauer (<a href="mailto:floty@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - idee, basisarchitectuur, ontwikkeling van de simulator</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Lothar May (<a href="mailto:lotodore@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - netwerkprogrammatuur, Windowspakket</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Oskar Lindqvist (<a href="mailto:tranberry@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - ontwerp van de grafische interface, webdesign</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Erhard List (<a href="mailto:dunkanx@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">dunkanx@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - MacOS-pakket</p></body></html> - - + + License Licentie @@ -1596,13 +1601,13 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - + Close Sluiten - - + + Thanks to Met dank aan @@ -1639,8 +1644,8 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + Translation Vertaling @@ -1717,8 +1722,8 @@ p, li { white-space: pre-wrap; } © 2006-2007, FHammer, FThauer, LMay - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> @@ -2437,8 +2442,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"> - oorspronkelijk ontwerp van de grafische interface</span></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2447,7 +2452,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2711,12 +2716,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Eigen lijst met blinds - + You cannot set more than 30 manual blinds. Er kunnen maximaal 30 blinds worden ingevoerd. @@ -2868,8 +2873,8 @@ Kies een andere naam. createInternetGameDialog - - + + Create Game Spel maken @@ -2890,14 +2895,14 @@ Kies een andere naam. Denktijd voor de spelers (sec): - - + + Maximum number of players: Maximale aantal spelers: - - + + Start Cash: Startgeld: @@ -2906,19 +2911,25 @@ Kies een andere naam. Kleine blind: - - + + Password: Wachtwoord: - + Delay between hands: Pauze tussen handen: - + + + Allow spectators to watch the game + + + + Cancel Annuleren @@ -2939,7 +2950,7 @@ Kies een andere naam. - + Default game name: Standaard spelnaam: @@ -2974,38 +2985,38 @@ Kies een andere naam. Spel voor ranking - + Blinds Blinds - + Use saved blinds settings Opgeslagen instellingen gebruiken voor de blinds - + Change blinds settings ... Instellingen van de blinds wijzigen ... - - + + $ $ - + Timeout for player action: Denktijd voor de spelers: - - + + s @@ -3138,8 +3149,8 @@ Kies een andere naam. Spellobby - - + + Lobby-Chat Lobby - Chat @@ -3156,14 +3167,14 @@ Kies een andere naam. Privé - - + + Game Info Info over spel - - + + Connected Players Spelers met verbinding @@ -3230,8 +3241,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Denktijd voor de spelers (sec):</span></p></body></html> - - + + Fill up with computer opponents Tafel vullen met computerspelers @@ -3256,8 +3267,8 @@ p, li { white-space: pre-wrap; } Kleine blind: - - + + Start Cash: Startgeld: @@ -3267,7 +3278,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -3296,8 +3307,10 @@ p, li { white-space: pre-wrap; } Speler verwijderen + + Players - Spelers + Spelers State @@ -3324,8 +3337,8 @@ p, li { white-space: pre-wrap; } Verhoogmodus blinds: - - + + Manual blinds list: Eigen lijst met blinds: @@ -3340,74 +3353,80 @@ p, li { white-space: pre-wrap; } Lobby van internetspel - - + + search for player ... Speler zoeken ... - - + + 5 - Show open & non-full & ranking games - - + + + Spectators + + + + + Game type: Speltype: - - + + First small blind: Eerste kleine blind: - - + + Blinds raise interval: Interval verhoging blinds: - - + + Blinds raise mode: Verhoogmodus blinds: - - + + Timing: - - + + &Start Game &Spel starten - - + + &Kick Player Speler ver&wijderen - - + + Sort alphabetically Sorteren op alfabet - - + + Sort by country Sorteren op land - - + + Display idle players Niet-actieve spelers weergeven @@ -3416,26 +3435,24 @@ p, li { white-space: pre-wrap; } Interval verhoging blinds: - - + + &Leave Game Spel &verlaten - - Join &any game - &Naar willekeurig spel + &Naar willekeurig spel - - + + &Create Game Spel ma&ken - - + + &Join Game &Meedoen met spel @@ -3458,32 +3475,32 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Klik hier om de online ranking te bekijken</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - Lijst met spellen niet filteren - - + + 1 - Show open games 1 - Open spellen weergeven - - + + 2 - Show open & non-full games 2 - Open spellen weergeven die nog niet vol zijn - - + + 3 - Show open & non-full & non-private games 3 - Open niet-privéspellen weergeven die nog niet vol zijn - - + + 4 - Show open & non-full & private games 4 - Open privéspellen weergeven die nog niet vol zijn @@ -3507,20 +3524,20 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info Info over spel - + Server Error Serverfout - + You should not kick yourself from this game! U mag zichzelf niet uit dit spel verwijderen. @@ -3533,100 +3550,99 @@ p, li { white-space: pre-wrap; } R - - - + + + P P - - - + + + Available Players Aanwezige spelers - + Invite player Speler uitnodigen - + Ignore player Speler negeren - + Player infos ... Spelersinfo ... - + Report inappropriate game name - - - + + + Standard Standaard - - - + + + Registered players only Alleen geregistreerde spelers - - - + + + Invited players only Alleen uitgenodigde spelers - - - + + + Ranking game Spel voor ranking - Connected players - max. %1 - Spelers met verbinding - max. %1 + Spelers met verbinding - max. %1 - - - + + + sec (action) - - - + + + sec (hand delay) - + Joining a private Game Meedoen met een privéspel - + You are about to join a private game. Please enter the password! U wilt meedoen met een privéspel. Voer het wachtwoord in. - - - + + + T T @@ -3641,1397 +3657,1411 @@ p, li { white-space: pre-wrap; } - - - + + Spectate + + + + + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game - - Connected players - Max. %1 - Spelers met verbinding - max. %1 + Spelers met verbinding - max. %1 - + running bezig - + open open - - Connected players - Spelers met verbinding + Spelers met verbinding - + hands hand(en) - + minutes min. - + double blinds verdubbelen - + manual blinds order eigen lijst - + search for player ... Speler zoeken ... - + Chat is only available to registered players. Alleen geregistreerde spelers kunnen chatten. - + Invite %1 %1 uitnodigen - + Ignore %1 %1 negeren - + %1 is playing in "%2". %1 speelt in "%2". - + %1 is not playing at the moment. %1 speelt momenteel niet. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 is uitgenodigd voor %2 door %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 heeft de uitnodiging voor %2 afgeslagen.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 is bezig en kan niet meedoen met %2.</span> - - + + The game will start in<br><b>%1</b> seconds. Het spel begint over<br><b>%1</b> seconden. - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Litouws - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - + Invite player ... Speler uitnodigen ... - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Ignore player ... Speler negeren ... - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Er wordt meegedaan aan een spel van het type "alleen op uitnodiging". Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de lijst Aanwezige spelers. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Uitnodiging ontvanger van <b>%2</b> voor spel <b>%1</b>.<br>Meedoen met dit spel? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Er zullen geen chatberichten of speluitnodigingen meer worden ontvangen van deze gebruiker. <br>Speler <b>%1</b> werkelijk op de lijst Genegeerde spelers zetten? - - + + PokerTH - Info Message PokerTH - Infobericht - - - - + + + + PokerTH - Question PokerTH - Vraag @@ -5041,23 +5071,23 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de Spel starten. Een ogenblik geduld ... - - - + + + Game Spel - - - + + + Players Spelers - - - + + + State Status @@ -5066,14 +5096,14 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de Privé - - + + running games: %1 %1 spel(len) bezig - - + + open games: %1 %1 open spel(len) @@ -5082,8 +5112,8 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de %1 speler(s) in de chat - - + + connected players: %1 %1 speler(s) met verbinding @@ -5103,7 +5133,7 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de QGroupBox { background-image: url(:/graphics/resources/graphics/toolboxFrameBG.png) } - + Speed: Snelheid: @@ -5120,77 +5150,77 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de Spel - - + + Ctrl+N Ctrl+N - - + + Quit Afsluiten - - + + About PokerTH ... Info over PokerTH ... - - + + Settings ... Instellingen ... - - + + Create Network Game ... Netwerkspel maken ... - - + + Join Network Game ... Meedoen met netwerkspel ... - - - + + + Fullscreen Volledig scherm - + Hands Handen - + Chat Chat - + Player info - + Log Log - - + + Start Local Game ... Lokaal spel starten ... - - + + Ctrl+Q Ctrl+Q @@ -5203,8 +5233,8 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de ⌘F - - + + Show/Hide Chat Window Chat-venster aan/uit @@ -5217,8 +5247,8 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de ⌘H - - + + Show/Hide Log Window Log-venster aan/uit @@ -5227,58 +5257,58 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de ⌘L - - - - - - + + + + + + Show/Hide Hands Window Handen-venster aan/uit - - + + Ctrl+O Ctrl+O - + Save Opslaan - + Shortcut: <Shift> Sneltoets: <Shift> - - + + Ctrl+J Ctrl+J - - + + Ctrl+F Ctrl+F - - + + Ctrl+T Ctrl+T - - + + Ctrl+H Ctrl+H - - + + Ctrl+L Ctrl+L @@ -5291,14 +5321,14 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de Netwerkspel - - + + Internet Game ... Internetspel ... - - + + Ctrl+I Ctrl+I @@ -5307,22 +5337,22 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de All-in - + Away Afwezig - + Manual Action (default) Handmatige acties (standaard) - + Auto-Check / Auto-Fold Automatisch checken/passen - + Auto-Check / Auto-Call-Any Automatisch checken/meegaan @@ -5336,93 +5366,93 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de Terug naar de lobby - - + + Show/Hide Away Window Afwezig-venster aan/uit - - + + Ctrl+A Ctrl+A - + Kick Verwijderen - + Vote Timeout: Stemmen kan - + Yes Ja - + No Nee - + Chance Kansen - + Settings Instellingen - + Configure PokerTH - + Configure PokerTH ... PokerTH instellen ... - - + + Close Sluiten - - + + Ctrl+X Ctrl+X - + Vote started by: In stemming gebracht door - - + + Show/Hide Chance Window Kansen-venster aan/uit - - + + Ctrl+C Ctrl+C - + &View &Beeld - + &Settings In&stellingen @@ -5548,31 +5578,31 @@ Kies een andere naam. Cmd+N om een nieuw spel te starten - - - - - - - - + + + + + + + + Start Start - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop @@ -5635,8 +5665,8 @@ Als de server zich achter een NAT-router bevindt, controleer dan daar of port fo F1 - Betten/Raisen | F2 - Checken/Callen | F3 - Folden/All-In - - + + Chat Chat @@ -5720,12 +5750,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Deze bètarelease van PokerTH is te oud.Ga naar <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> en download de nieuwste versie. - + Closing PokerTH during network game PokerTH afsluiten tijdens netwerkspel - + You are the hosting server. Do you want to close PokerTH anyway? U bent de server van dit spel. Wilt u PokerTH toch sluiten? @@ -5742,28 +5772,28 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Deze bètarelease van PokerTH is te oud.<br>Ga naar <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/</a> en download de nieuwste versie. - - - - - + + + + + Lobby Lobby - + PokerTH - Internet Game Message PokerTH - Bericht van internetspel - + Attention! Do you really want to leave the current game and go back to the lobby? Opgelet! Wilt u werkelijk het huidige spel verlaten en teruggaan naar de lobby? - + PokerTH %1 - The Open-Source Texas Holdem Engine PokertTH %1 - De Open-Source Texas Hold'em-simulator @@ -5826,62 +5856,67 @@ Zorg ervoor dat u een directe verbinding met internet hebt. Kan het doelbestand niet openen bij het downloaden van de serverlijst. - + PokerTH %1 PokerTH %1 - - + + Chance Kansen - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Verwijderen - - + + Do you want to kick <b>%1</b><br>from this game? Wilt u <b>%1</b><br>uit dit spel verwijderen? - - - - + + + + <b>%1</b> secs left nog <b>%1</b> sec. - + vote stem - + votes stemmen - - + + Chat is only available to registered players. Alleen geregistreerde spelers kunnen chatten. + + + Spectators + + PokerTH - Warning PokerTH - Waarschuwing @@ -5905,14 +5940,14 @@ Als u tijdelijk afwezig bent, kunt u de hulpmiddelen gebruiken in de toolbox Afw U heeft <b>%1</b> %2 tegen zich.<br><b>%3</b> stemmen zijn nodig voor verwijdering. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. <b>%2</b> %3 uitgebracht tegen <b>%1</b>.<br>Nog <b>%4</b> stem(men) nodig voor verwijderen. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. U heeft <b>%1</b> %2 tegen zich.<br> Nog <b>%3</b> stem(men) nodig voor verwijderen. @@ -6153,25 +6188,21 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Fout bij het laden van het serverprofielbestand - - - - Could not load server-profiles-file: - Kan het serverprofielbestand niet laden: + Kan het serverprofielbestand niet laden: - + Save Server Profile Error Fout bij het opslaan van het serverprofiel @@ -6180,31 +6211,45 @@ p, li { white-space: pre-wrap; } Een profiel met de naam: " - + + + + + Could not load server-profiles-file: +%1 + + + + Read Server-Profile List Error Fout bij het lezen van de lijst met serverprofielen - + Could not read server-profiles list Kan de lijst met serverprofielen niet lezen - - + + Save Server-Profile-File Error Fout bij het opslaan van het serverprofielbestand - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Kan het serverprofielbestand niet opslaan: + Kan het serverprofielbestand niet opslaan: - + A profile with the name: %1 already exists. Would you like to overwrite ? Er bestaat al een profiel met de naam %1. @@ -6284,12 +6329,12 @@ Wilt u dat profiel overschrijven? manualBlindsOrderDialogImpl - + Manual Blinds Order Eigen lijst met blinds - + You cannot set more than 30 manual blinds. Er kunnen maximaal 30 eigen blinds worden ingevoerd. @@ -6334,7 +6379,7 @@ Wilt u dat profiel overschrijven? - + Game Speed: Speelsnelheid: @@ -6370,7 +6415,7 @@ Wilt u dat profiel overschrijven? - + Use saved blinds settings Opgeslagen instellingen gebruiken voor de blinds @@ -6381,7 +6426,7 @@ Wilt u dat profiel overschrijven? - + Change blinds settings ... Instellingen van de blinds wijzigen ... @@ -6428,14 +6473,14 @@ Wilt u dat profiel overschrijven? selectAvatarDialogImpl - - - + + + Avatar File Error Bestandsfout bij het openen van de avatar - + Please select an avatar from the list! Selecteer een avatar uit de lijst. @@ -6446,7 +6491,7 @@ Please enter an valid picture! Stel een geldige afbeelding in! - + Select external avatar picture Een externe avatar selecteren @@ -6455,19 +6500,19 @@ Stel een geldige afbeelding in! Afbeeldingen (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Het gekozen afbeeldingsbestand is te groot. (Max. 30 kB) Kies een kleinere afbeelding. - + Images (*.png *.jpg *.gif) Afbeeldingen (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! De ingestelde avatar bestaat niet. @@ -6507,10 +6552,10 @@ p, li { white-space: pre-wrap; } Kleine blind: - - - - + + + + Start Cash: Startgeld: @@ -6523,24 +6568,24 @@ p, li { white-space: pre-wrap; } Server-instellingen - - - - + + + + Server Port: Serverpoort: - - - - + + + + Use IPv6 IPv6 gebruiken - - + + Server Password: Serverwachtwoord: @@ -6549,49 +6594,49 @@ p, li { white-space: pre-wrap; } Standaardinstellingen van netwerkspel - - + + Computer Engine Computertegenstanders - - + + Opponent 5: Tegenstander 5: - - + + Opponent 3: Tegenstander 3: - - + + Opponent 2: Tegenstander 2: - - + + Opponent 6: Tegenstander 6: - - + + Opponent 1: Tegenstander 1: - - + + Opponent 4: Tegenstander 4: - + Human Player: Speler: @@ -6604,31 +6649,31 @@ p, li { white-space: pre-wrap; } dag(en) - - + + Log File Directory: Map voor logbestanden: - + Log Messages Logberichten - + Local Game Settings Instellingen van lokaal spel - + Network Game Settings Instellingen van netwerkspel - - + + Show flip-card animation Animatie van omdraaiende kaarten weergeven @@ -6637,8 +6682,8 @@ p, li { white-space: pre-wrap; } Eigen afbeelding voor de kaartachterkant: - - + + Show fade-out animation for non-winning cards Fade out-animatie van niet-winnende kaarten weergeven @@ -6647,18 +6692,18 @@ p, li { white-space: pre-wrap; } Introductie weergeven bij het starten - + Show right toolbox Rechtertoolbox weergeven - + Show left toolbox Linkertoolbox weergeven - - + + Play blind raise notification @@ -6667,8 +6712,8 @@ p, li { white-space: pre-wrap; } Berichten weergeven in de statusbalk - - + + Show game settings dialog on every new game Instellingenvenster weergeven voor ieder nieuw spel @@ -6677,20 +6722,20 @@ p, li { white-space: pre-wrap; } Rondes voordat blinds omhooggaan: - - + + Number of players: Aantal spelers: - - + + Game Speed: Speelsnelheid: - - + + Pause between hands (press "start" button to go on) Stoppen tussen handen (druk op Start om door te gaan) @@ -6703,8 +6748,8 @@ p, li { white-space: pre-wrap; } Simulatorversie van computertegenstanders: - - + + Enable/Disable Logging Logbestanden schrijven @@ -6713,20 +6758,20 @@ p, li { white-space: pre-wrap; } Bewaar de logbestanden - - + + Write log after every: Logbestand bijwerken na iedere: - - + + Show buttons for small blind and big blind Buttons voor kleine blind en grote blind weergeven - - + + Play sound effects Geluidseffecten afspelen @@ -6735,26 +6780,26 @@ p, li { white-space: pre-wrap; } 0.4 (huidige) - - - - + + + + Use SCTP SCTP gebruiken - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://nl.wikipedia.org/wiki/Ipv6">Wat is dit?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://nl.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Wat is dit?</a> @@ -6775,20 +6820,20 @@ p, li { white-space: pre-wrap; } Instellingen - - + + Maximum number of players: Maximale aantal spelers: - - + + Sound Volume: Volume: - - + + 10 10 @@ -6797,44 +6842,44 @@ p, li { white-space: pre-wrap; } Denktijd voor de spelers (sec): - - + + action (high frequent disc access) handeling (veel schijfactiviteit) - - + + hand (medium disc access) hand (matige schijfactiviteit) - - + + game (low disc access) partij (weinig schijfactiviteit) - - + + Show own cards only on mouse click Eigen kaarten alleen bij muisklik weergeven - + Sound Geluid - + Note: Best quality with image ratio like width=48, height=76. - - + + Network Server Settings Instellingen van netwerkserver @@ -6853,19 +6898,19 @@ p, li { white-space: pre-wrap; } Instellingen van internetserver (pokerserver) - - + + Server Address: Serveradres: - - + + Use password for private game: Wachtwoord gebruiken voor privéspel: - + Internet Game Settings Instellingen van internetspel @@ -6898,89 +6943,89 @@ p, li { white-space: pre-wrap; } Omgekeerde volgorde van F-toetsen (F1 - F3) - - - - + + + + First small blind: Eerste kleine blind: - - - - + + + + Raise blinds: Blinds verhogen: - - - - - - - - + + + + + + + + Every: Na iedere: - - - - + + + + hands hand(en) - - - - + + + + minutes min. - - - - + + + + Raise mode: Verhoogmodus: - - - - + + + + Always double blinds Blinds blijven verdubbelen - - - - + + + + Manual blinds order: Eigen lijst met blinds: - - - - + + + + Edit ... Bewerken ... - - + + Sound Categories Geluidcategorieën - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6999,26 +7044,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Opmerking: de afbeelding ziet er het best uit bij een hoogte-breedteverhouding van </span><span style=" font-weight:600; font-style:italic;">hoogte=76, breedte=48.</span></p></td></tr></table></body></html> - - + + Play game actions sounds like "check", "call", "raise" Geluiden van spelacties, bijv. 'checken', 'callen' en 'raisen' - - + + Play lobby chat notifications Meldingen van het chatten in de lobby - - + + Play network/internet game notifications like "player joined the game" Meldingen van netwerk-/internetspellen, bijv. 'er komt een speler bij' - - + + Language: Taal: @@ -7027,7 +7072,7 @@ p, li { white-space: pre-wrap; } Chatten in de lobby (IRC-server) aan/uit - + Player Nicks/Avatars Spelersnamen/avatars @@ -7042,19 +7087,19 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><span style=" font-style:italic;">Opmerking: standaard </span><span style=" font-weight:600; font-style:italic;">spelinstellingen</span><span style=" font-style:italic;">, bijvoorbeeld "Maximale aantal spelers", "Startgeld" en "Kleine blind" worden overgenomen van </span><span style=" font-weight:600; font-style:italic;">Instellingen van netwerkspel.</span></p></body></html> - + Reverse order of F-Keys (F1 - F4) Omgekeerde volgorde van F-toetsen (F1 - F4) - - + + Network / Internet Game Netwerk-/internetspel - - + + Switch keyboard focus to bet-input-field if it's your turn Cursor naar het inzetveld overzetten zodra het uw beurt is @@ -7073,33 +7118,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Opmerking: de afbeelding ziet er het best uit bij een hoogte-breedteverhouding van </span><span style=" font-weight:600; font-style:italic;">hoogte=140, breedte=100.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Denktijd voor de spelers: - - - - + + + + s s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -7110,7 +7155,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Opmerking: standaard </span><span style=" font-weight:600; font-style:italic;">spelinstellingen</span><span style=" font-style:italic;">, waaronder 'Maximale aantal spelers', 'Startgeld' en 'Kleine blind' worden overgenomen van </span><span style=" font-weight:600; font-style:italic;">Instellingen van netwerkspel.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -7121,156 +7166,174 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Opmerking: avatars zien er het best uit met een hoogte-breedteverhouding van </span><span style=" font-weight:600; font-style:italic;">hoogte=50, breedte=50.</span></p></body></html> - - + + Automatic Server Configuration URL Automatische serverconfiguratie-URL - + Factory Settings - - + + + Common + + + + + Show country flag in the corner of avatar - - + + Activate the "accidentally call after big raise" blocker - - - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + + + Description Beschrijving - - - - + + + + Maintainer Maker - - - + + + State Status - - + + Delay between hands: Pauze tussen handen: - - + + Server Server - - + + Serverlist Address: Adres serverlijst: - - + + Manual Server Configuration Aangepaste serverconfiguratie - - + + Game Spel - - + + Default game name: Standaard spelnaam: - - + + Default game type: Standaard speltype: - - + + Standard Standaard - - + + Registered players only Alleen geregistreerde spelers - - + + Invited players only Alleen uitgenodigde spelers - - + + Ranking game Spel voor ranking - - + + Show lobby chat Lobbychat weergeven - - + + Automatically leave the table after the game finished - - + + Ignored Players Genegeerde spelers - - + + Player Speler - - + + Remove Player Speler verwijderen - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7283,26 +7346,26 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Menselijke speler:<br /><span style=" font-style:italic;">(Deze naam wordt ook gebruikt bij het inloggen voor online spelen)</span></p></body></html> - - + + Store log files for: - - + + Day(s) dag(en) - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -7351,49 +7414,55 @@ p, li { white-space: pre-wrap; } Namen/avatars - - + + Show cards chance monitor Kansen van de kaarten weergeven - - + + Disable splashscreen on startup Introductiescherm niet weergeven bij het starten - - + + Game Table Speeltafel - - + + Card Deck Speelkaarten - - + + Card Back Kaartachterkant - - + + Use card back from card style Kaartachterkant overnemen van de speelkaartenstijl - - + + Use custom card back picture: Een eigen afbeelding gebruiken voor de kaartachterkant: - + + + Allow spectators to watch the game + + + + Note: Best avatar quality with image ratio like width=50, height=50. @@ -7422,21 +7491,21 @@ p, li { white-space: pre-wrap; } Wachtwoord: - - + + Avatar Server: Avatarserver: - + Style Stijl - - + + Don't translate poker strings like check, call, raise from game table style Vertalingen voor pokertermen (bijv. 'call') niet overnemen van de speeltafelstijl @@ -7449,32 +7518,32 @@ p, li { white-space: pre-wrap; } Activeren - - - - + + + + Add ... Toevoegen... - - - - + + + + Remove Verwijderen - - - - + + + + Preview - Information: Voorbeeld en gegevens: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7491,8 +7560,8 @@ p, li { white-space: pre-wrap; } Speelkaartenstijlen - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7505,24 +7574,24 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Nieuwe speelkaartenstijlen voor PokerTH downloaden...</span></a></p></body></html> - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 7: Tegenstander 7: - - + + Opponent 8: Tegenstander 8: @@ -7531,8 +7600,8 @@ p, li { white-space: pre-wrap; } Tegenstander 4: {10:?} - - + + Opponent 9: Tegenstander 9: @@ -7540,11 +7609,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Fout in instellingen @@ -7561,7 +7630,7 @@ Please select an valid directory! Selecteer een geldige map! - + Select your flipside picture Uw afbeelding voor de kaartachterkant selecteren @@ -7570,24 +7639,24 @@ Selecteer een geldige map! Afbeeldingen (*.png) - + Open Directory Open map - + Images (*.png *.jpg *.gif) Afbeeldingen (*.png *.jpg *.gif) - - + + Blinds Error Fout in blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7647,12 +7716,12 @@ De eerste kleine blind wordt ingesteld op de maximale waarde. Turks - + Language Changed Taal is gewijzigd - + You have changed application language to %1. Please restart PokerTH to load new language! De taal van het programma is gewijzigd naar %1. @@ -7699,15 +7768,15 @@ Start PokerTH opnieuw om de nieuwe taal te laden. Slowaaks - + The entered flipside picture doesn't exist. Please enter an valid picture! De ingestelde afbeelding voor de kaartachterkant bestaat niet. Stel een geldige afbeelding in. - - + + The log file directory doesn't exist. Please select an valid directory! De map voor logbestanden bestaat niet. @@ -7749,7 +7818,7 @@ Selecteer een geldige map. Zweeds - + The entered server list address is not a valid URL. Please enter a valid server list address! Het ingevoerde serverlijstadres is geen geldige URL. @@ -7799,138 +7868,138 @@ Voer een geldig serverlijstadres in. - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Maker(s) - - + + Maintainer EMail E-mailadres - - + + Create Date Gemaakt op - + Windows Behaviour Venstergrootte - + scaleable schaalbaar - + fixed gefixeerd - + Minimum Size Minimumgrootte - + Maximum Size Maximumgrootte - + Fixed Size Gefixeerde grootte - + State Status - + Please select your game table style Selecteer een speeltafelstijl - + PokerTH game table styles (*.xml) Speeltafelstijlen voor PokerTH (*.xml) - + Game Table Style Error Speeltafelstijlfout - + Selected game table style file is already in the list. Please select another one to add! De geselecteerde speeltafelstijl staat al in de lijst. Selecteer een andere stijl om die toe te voegen. - + Game Table Style File Error Speeltafelstijlbestandfout - + Could not load game table style file correctly. Style will not be placed into list! Kan het stijlbestand voor de speeltafel niet laden. De stijl wordt niet in de lijst geplaatst. - + Please select your card deck style Selecteer een speelkaartenstijl - + PokerTH card deck styles (*.xml) Speelkaartenstijlen voor PokerTH (*.xml) - + Card Deck Style Error Speelkaartenstijlfout - + Selected card deck style file is already in the list. Please select another one to add! De geselecteerde speelkaartenstijl staat al in de lijst. Selecteer een andere stijl om die toe te voegen. - + Card Deck Style File Error Speelkaartenstijlbestandfout - + Could not load card deck style file correctly. Style will not be placed into list! Kan het stijlbestand voor de speelkaarten niet laden. @@ -7945,12 +8014,12 @@ De stijl wordt niet in de lijst geplaatst. Het geselecteerde logbestand werkelijk verwijderen? - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -8035,12 +8104,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Serverfout - + You should not kick yourself from this game! U mag zichzelf niet uit dit spel verwijderen. @@ -8229,106 +8298,106 @@ Please choose another one. Kies een andere naam. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Netwerkfout - + Server address was not set. Er is geen serveradres ingesteld. - + An invalid port was set (ports 0-1023 are not allowed). Ongeldige poort ingesteld (poorten 0-1023 zijn niet toegestaan). - + Could not create a socket for TCP communication. Kan geen socket maken voor TCP-communicatie. - + Could not set the IP address. Kan het IP-adres niet instellen. - + Could not set the port for this type of address. Kan de poort niet instellen voor dit adrestype. - + The server name could not be resolved. Kan geen server vinden met de opgegeven naam. - + Bind failed - please choose a different port. Kan niet verbinden - kies een andere poort. - + Internal network error: "listen" failed. Interne netwerkfout: "listen" niet uitvoerbaar. - + Server execution was terminated. Het uitvoeren op de server is afgebroken. - + Could not connect to the server. Kan geen verbinding maken met de server. - + Connection timed out. Please check the server address. @@ -8339,12 +8408,12 @@ Controleer het serveradres. Als de server zich achter een NAT-router bevindt, controleer dan daar of port forwarding goed ingesteld is. - + Internal network error: "select" failed. Interne netwerkfout: "select" niet uitvoerbaar. - + Internal network error: "send" failed. Interne netwerkfout: "send" niet uitvoerbaar. @@ -8353,31 +8422,31 @@ Als de server zich achter een NAT-router bevindt, controleer dan daar of port fo De verbinding is verbroken door de server. - + The connection to the server was lost. - + Internal network error: Duplicate TCP connection. Interne netwerkfout: Dubbele TCP-verbinding. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Ongeldig netwerkpakket ontvangen. Zorg ervoor dat alle spelers dezelfde versie van PokerTH gebruiken. - + Internal state error. Please make sure that all players use the same version of PokerTH. Interne statusfout. Zorg ervoor dat alle spelers dezelfde versie van PokerTH gebruiken. - + Invalid server list URL. Please correct the address in the settings. Ongeldige URL van serverlijst. @@ -8396,162 +8465,162 @@ Please make sure that the server list URL is correct. Zorg ervoor dat de serverlijst-URL juist is. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Netwerkspel starten - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. De internetserverlijst van PokerTH bevat ongeldige gegevens. Als u een eigen serverlijst gebruikt, is de indeling ervan mogelijk onjuist. - + Could not unzip the PokerTH internet server list. Kan de internetserverlijst van PokerTH niet decomprimeren. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Kan de internetserverlijst van PokerTH niet downloaden. Zorg ervoor dat u een directe verbinding met internet hebt. - + Could not open the target file when downloading the server list. Kan het doelbestand niet openen bij het downloaden van de serverlijst. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. De PokerTH-server ondersteunt deze versie van het spel niet.<br>Ga naar <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> en download de nieuwste versie. - + Sorry, this server is already full. Deze server is al vol. - + Invalid login. Please check your username and password. Ongeldige login. Controleer de gebruikersnaam en het wachtwoord. - + Your account is blocked indefinitely. Deze account is voor onbepaalde tijd geblokkeerd. - + You cannot login at this time. Please try again in a few seconds. Er kan nu niet worden ingelogd. Wacht enkele momenten en probeer het opnieuw. - + You cannot join this game, because another player in that game has your network address. - + Your connection to the server is very slow, the game had to start without you. - + This game is of type invite-only. You cannot join this game without being invited. Dit spel is van het type "alleen op uitnodiging". Zonder uitnodiging kan niet worden meegedaan. - + Invalid password when joining the game. Please reenter the password and try again. Ongeldig wachtwoord bij het verbinden. Voer het wachtwoord opnieuw in en probeer het opnieuw. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. - + The password is too long. Please choose another one. Het wachtwoord is te lang. Kies een ander wachtwoord. @@ -8566,67 +8635,67 @@ Kies een andere naam. De spelersnaam is te kort, te lang of ongeldig. Kies een andere naam. - + The game name is either too short or too long. Please choose another one. De naam van het spel is te kort of te lang. Kies een andere naam. - + The game could not be found. Kan het spel niet vinden. - + The chat text is invalid. Ongeldige chattekst. - + The server referred to an unknown player. Aborting. De server verwees naar een onbekende speler. Verbinding verbroken. - + Internal error: The current player could not be found. Interne fout: De huidige speler kan niet worden gevonden. - + Internal error: The current player is not active. Interne fout: De huidige speler is niet actief. - + You were kicked from the server. U bent verwijderd van de server. - + You were temporarily banned from the server. U bent tijdelijk verbannen van de server. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! De verbinding met de server is verlopen wegens gebrek aan activiteit, maar er kan gewoon opnieuw verbinding worden gemaakt. - + The client player count is invalid. Het aantal spelers dat meedoet klopt niet. - + Too many manual blinds were set. Please reconfigure the manual blinds. Er zijn te veel blinds ingesteld. Stel de blinds opnieuw in. - + An invalid avatar file was configured. Please choose a different avatar. Er is een ongeldig avatarbestand ingesteld. Kies een andere avatar. - + The selected avatar file is too large. Please choose a different avatar. Het geselecteerde avatarbestand is te groot. Kies een andere avatar. @@ -8635,84 +8704,84 @@ Kies een andere naam. U kunt momenteel geen nieuw avatarbestand uploaden. Wacht enkele seconden en probeer het opnieuw. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Er is een interne avatarfout opgetreden. Meld dit bij het chatten in de lobby aan een administrator. - + Could not start game: Synchronization failed. Kan spel niet starten: synchronisatie mislukt. - + The server is down for maintenance. Please try again later. Wegens onderhoud is de server niet beschikbaar. Probeer het later opnieuw. - + An internal error occured. Interne fout opgetreden. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Netwerkmelding - + You were kicked from the game. U bent uit het spel verwijderd. - + Sorry, this game is already full. Dit spel is al vol. - + Unable to join - the server has already started the game. Kan niet meer meedoen - de server heeft het spel al gestart. - + Your admin state timed out due to inactivity. Feel free to create a new game! Uw status van spelleider is verlopen wegens gebrek aan activiteit, maar u kunt gewoon een nieuw spel maken. - + You cannot join this type of game as guest. Gasten kunnen niet meedoen aan dit type spel. - + The settings are invalid for this type of game. De instellingen zijn ongeldig voor dit speltype. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Er is een nieuwe release van PokerTH beschikbaar.<br>Ga naar <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> en download de nieuwste versie. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Deze bètarelease van PokerTH is te oud.<br>Ga naar <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/</a> en download de nieuwste versie. - - + + Server Message Serverbericht diff --git a/ts/pokerth_no.ts b/ts/pokerth_no.ts index f3fc894f..c1ca8d77 100644 --- a/ts/pokerth_no.ts +++ b/ts/pokerth_no.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -157,22 +156,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -254,52 +253,52 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) @@ -346,13 +345,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -381,18 +380,18 @@ Please verify that you are uploading a valid PokerTH log file. - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + PokerTH - Question - + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -421,36 +420,42 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About Om - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + Third party libs - - + + Project Prosjekt @@ -478,8 +483,8 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Nettside for prosjektet: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> <a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">IRC: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> #pokerth (irc.freenode.net)</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Utviklere: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Felix Hammer (<a href="mailto:doitux@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - opprinnelig idé, grunn-arkitektur, GUI, linux-pakke, webmaster@pokerth.net</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Florian Thauer (<a href="mailto:floty@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - opprinnelig idé, grunn-arkitektur, motor-utvikling</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Lothar May (<a href="mailto:lotodore@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - nettverk, windows-pakke</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Oskar Lindqvist (<a href="mailto:tranberry@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - GUI-grafikk, nett-design</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Erhard List (<a href="mailto:dunkanx@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">dunkanx@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - MacOS-pakke</p></body></html> - - + + License Lisens @@ -832,13 +837,13 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This Software is published under the Terms of GPL v2:</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> GNU GENERAL PUBLIC LICENSE</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Version 2, June 1991</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Copyright (C) 1989, 1991 Free Software Foundation, Inc.,</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Everyone is permitted to copy and distribute verbatim copies</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> of this license document, but changing it is not allowed.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Preamble</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> The licenses for most software are designed to take away your</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">freedom to share and change it. By contrast, the GNU General Public</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">License is intended to guarantee your freedom to share and change free</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">software--to make sure the software is free for all its users. This</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">General Public License applies to most of the Free Software</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Foundation's software and to any other program whose authors commit to</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">using it. (Some other Free Software Foundation software is covered by</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">the GNU Lesser General Public License instead.) You can apply it to</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">your programs, too.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> When we speak of free software, we are referring to freedom, not</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">price. Our General Public Licenses are designed to make sure that you</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">have the freedom to distribute copies of free software (and charge for</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">this service if you wish), that you receive source code or can get it</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">if you want it, that you can change the software or use pieces of it</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">in new free programs; and that you know you can do these things.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> To protect your rights, we need to make restrictions that forbid</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">anyone to deny you these rights or to ask you to surrender the rights.</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These restrictions translate to certain responsibilities for you if you</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">distribute copies of the software, or if you modify it.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> For example, if you distribute copies of such a program, whether</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">gratis or for a fee, you must give the recipients all the rights that</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">you have. You must make sure that they, too, receive or can get the</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">source code. And you must show them these terms so they know their</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">rights.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> We protect your rights with two steps: (1) copyright the software, and</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">(2) offer you this license which gives you legal permission to copy,</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">distribute and/or modify the software.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Also, for each author's protection and ours, we want to make certain</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">that everyone understands that there is no warranty for this free</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">software. If the software is modified by someone else and passed on, we</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">want its recipients to know that what they have is not the original, so</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">that any problems introduced by others will not reflect on the original</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">authors' reputations.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Finally, any free program is threatened constantly by software</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">patents. We wish to avoid the danger that redistributors of a free</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">program will individually obtain patent licenses, in effect making the</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">program proprietary. To prevent this, we have made it clear that any</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">patent must be licensed for everyone's free use or not licensed at all.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> The precise terms and conditions for copying, distribution and</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">modification follow.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> GNU GENERAL PUBLIC LICENSE</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 0. This License applies to any program or other work which contains</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">a notice placed by the copyright holder saying it may be distributed</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">under the terms of this General Public License. The "Program", below,</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">refers to any such program or work, and a "work based on the Program"</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">means either the Program or any derivative work under copyright law:</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">that is to say, a work containing the Program or a portion of it,</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">either verbatim or with modifications and/or translated into another</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">language. (Hereinafter, translation is included without limitation in</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">the term "modification".) Each licensee is addressed as "you".</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Activities other than copying, distribution and modification are not</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">covered by this License; they are outside its scope. The act of</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">running the Program is not restricted, and the output from the Program</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">is covered only if its contents constitute a work based on the</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Program (independent of having been made by running the Program).</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Whether that is true depends on what the Program does.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 1. You may copy and distribute verbatim copies of the Program's</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">source code as you receive it, in any medium, provided that you</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">conspicuously and appropriately publish on each copy an appropriate</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">copyright notice and disclaimer of warranty; keep intact all the</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">notices that refer to this License and to the absence of any warranty;</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">and give any other recipients of the Program a copy of this License</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">along with the Program.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">You may charge a fee for the physical act of transferring a copy, and</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">you may at your option offer warranty protection in exchange for a fee.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 2. You may modify your copy or copies of the Program or any portion</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">of it, thus forming a work based on the Program, and copy and</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">distribute such modifications or work under the terms of Section 1</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">above, provided that you also meet all of these conditions:</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> a) You must cause the modified files to carry prominent notices</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> stating that you changed the files and the date of any change.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> b) You must cause any work that you distribute or publish, that in</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> whole or in part contains or is derived from the Program or any</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> part thereof, to be licensed as a whole at no charge to all third</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> parties under the terms of this License.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> c) If the modified program normally reads commands interactively</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> when run, you must cause it, when started running for such</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> interactive use in the most ordinary way, to print or display an</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> announcement including an appropriate copyright notice and a</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> notice that there is no warranty (or else, saying that you provide</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> a warranty) and that users may redistribute the program under</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> these conditions, and telling the user how to view a copy of this</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> License. (Exception: if the Program itself is interactive but</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> does not normally print such an announcement, your work based on</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> the Program is not required to print an announcement.)</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">These requirements apply to the modified work as a whole. If</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">identifiable sections of that work are not derived from the Program,</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">and can be reasonably considered independent and separate works in</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">themselves, then this License, and its terms, do not apply to those</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">sections when you distribute them as separate works. But when you</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">distribute the same sections as part of a whole which is a work based</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">on the Program, the distribution of the whole must be on the terms of</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">this License, whose permissions for other licensees extend to the</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">entire whole, and thus to each and every part regardless of who wrote it.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Thus, it is not the intent of this section to claim rights or contest</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">your rights to work written entirely by you; rather, the intent is to</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">exercise the right to control the distribution of derivative or</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">collective works based on the Program.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">In addition, mere aggregation of another work not based on the Program</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">with the Program (or with a work based on the Program) on a volume of</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">a storage or distribution medium does not bring the other work under</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">the scope of this License.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 3. You may copy and distribute the Program (or a work based on it,</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">under Section 2) in object code or executable form under the terms of</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Sections 1 and 2 above provided that you also do one of the following:</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> a) Accompany it with the complete corresponding machine-readable</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> source code, which must be distributed under the terms of Sections</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 1 and 2 above on a medium customarily used for software interchange; or,</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> b) Accompany it with a written offer, valid for at least three</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> years, to give any third party, for a charge no more than your</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> cost of physically performing source distribution, a complete</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> machine-readable copy of the corresponding source code, to be</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> distributed under the terms of Sections 1 and 2 above on a medium</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> customarily used for software interchange; or,</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> c) Accompany it with the information you received as to the offer</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> to distribute corresponding source code. (This alternative is</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> allowed only for noncommercial distribution and only if you</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> received the program in object code or executable form with such</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> an offer, in accord with Subsection b above.)</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The source code for a work means the preferred form of the work for</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">making modifications to it. For an executable work, complete source</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">code means all the source code for all modules it contains, plus any</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">associated interface definition files, plus the scripts used to</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">control compilation and installation of the executable. However, as a</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">special exception, the source code distributed need not include</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">anything that is normally distributed (in either source or binary</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">form) with the major components (compiler, kernel, and so on) of the</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">operating system on which the executable runs, unless that component</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">itself accompanies the executable.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If distribution of executable or object code is made by offering</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">access to copy from a designated place, then offering equivalent</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">access to copy the source code from the same place counts as</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">distribution of the source code, even though third parties are not</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">compelled to copy the source along with the object code.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 4. You may not copy, modify, sublicense, or distribute the Program</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">except as expressly provided under this License. Any attempt</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">otherwise to copy, modify, sublicense or distribute the Program is</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">void, and will automatically terminate your rights under this License.</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">However, parties who have received copies, or rights, from you under</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">this License will not have their licenses terminated so long as such</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">parties remain in full compliance.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 5. You are not required to accept this License, since you have not</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">signed it. However, nothing else grants you permission to modify or</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">distribute the Program or its derivative works. These actions are</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">prohibited by law if you do not accept this License. Therefore, by</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">modifying or distributing the Program (or any work based on the</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Program), you indicate your acceptance of this License to do so, and</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">all its terms and conditions for copying, distributing or modifying</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">the Program or works based on it.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 6. Each time you redistribute the Program (or any work based on the</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Program), the recipient automatically receives a license from the</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">original licensor to copy, distribute or modify the Program subject to</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">these terms and conditions. You may not impose any further</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">restrictions on the recipients' exercise of the rights granted herein.</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">You are not responsible for enforcing compliance by third parties to</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">this License.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 7. If, as a consequence of a court judgment or allegation of patent</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">infringement or for any other reason (not limited to patent issues),</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">conditions are imposed on you (whether by court order, agreement or</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">otherwise) that contradict the conditions of this License, they do not</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">excuse you from the conditions of this License. If you cannot</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">distribute so as to satisfy simultaneously your obligations under this</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">License and any other pertinent obligations, then as a consequence you</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">may not distribute the Program at all. For example, if a patent</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">license would not permit royalty-free redistribution of the Program by</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">all those who receive copies directly or indirectly through you, then</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">the only way you could satisfy both it and this License would be to</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">refrain entirely from distribution of the Program.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If any portion of this section is held invalid or unenforceable under</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">any particular circumstance, the balance of the section is intended to</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">apply and the section as a whole is intended to apply in other</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">circumstances.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">It is not the purpose of this section to induce you to infringe any</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">patents or other property right claims or to contest validity of any</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">such claims; this section has the sole purpose of protecting the</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">integrity of the free software distribution system, which is</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">implemented by public license practices. Many people have made</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">generous contributions to the wide range of software distributed</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">through that system in reliance on consistent application of that</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">system; it is up to the author/donor to decide if he or she is willing</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to distribute software through any other system and a licensee cannot</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">impose that choice.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This section is intended to make thoroughly clear what is believed to</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">be a consequence of the rest of this License.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 8. If the distribution and/or use of the Program is restricted in</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">certain countries either by patents or by copyrighted interfaces, the</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">original copyright holder who places the Program under this License</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">may add an explicit geographical distribution limitation excluding</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">those countries, so that distribution is permitted only in or among</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">countries not thus excluded. In such case, this License incorporates</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">the limitation as if written in the body of this License.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 9. The Free Software Foundation may publish revised and/or new versions</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">of the General Public License from time to time. Such new versions will</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">be similar in spirit to the present version, but may differ in detail to</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">address new problems or concerns.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Each version is given a distinguishing version number. If the Program</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">specifies a version number of this License which applies to it and "any</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">later version", you have the option of following the terms and conditions</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">either of that version or of any later version published by the Free</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Software Foundation. If the Program does not specify a version number of</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">this License, you may choose any version ever published by the Free Software</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Foundation.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 10. If you wish to incorporate parts of the Program into other free</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">programs whose distribution conditions are different, write to the author</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to ask for permission. For software which is copyrighted by the Free</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Software Foundation, write to the Free Software Foundation; we sometimes</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">make exceptions for this. Our decision will be guided by the two goals</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">of preserving the free status of all derivatives of our free software and</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">of promoting the sharing and reuse of software generally.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> NO WARRANTY</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">REPAIR OR CORRECTION.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">POSSIBILITY OF SUCH DAMAGES.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> END OF TERMS AND CONDITIONS</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> How to Apply These Terms to Your New Programs</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> If you develop a new program, and you want it to be of the greatest</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">possible use to the public, the best way to achieve this is to make it</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">free software which everyone can redistribute and change under these terms.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> To do so, attach the following notices to the program. It is safest</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to attach them to the start of each source file to most effectively</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">convey the exclusion of warranty; and each file should have at least</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">the "copyright" line and a pointer to where the full notice is found.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> &lt;one line to give the program's name and a brief idea of what it does.&gt;</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Copyright (C) &lt;year&gt; &lt;name of author&gt;</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is free software; you can redistribute it and/or modify</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> it under the terms of the GNU General Public License as published by</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> the Free Software Foundation; either version 2 of the License, or</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> (at your option) any later version.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This program is distributed in the hope that it will be useful,</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> but WITHOUT ANY WARRANTY; without even the implied warranty of</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> GNU General Public License for more details.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> You should have received a copy of the GNU General Public License along</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> with this program; if not, write to the Free Software Foundation, Inc.,</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Also add information on how to contact you by electronic and paper mail.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">If the program is interactive, make it output a short notice like this</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">when it starts in an interactive mode:</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Gnomovision version 69, Copyright (C) year name of author</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> This is free software, and you are welcome to redistribute it</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> under certain conditions; type `show c' for details.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">The hypothetical commands `show w' and `show c' should show the appropriate</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">parts of the General Public License. Of course, the commands you use may</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">be called something other than `show w' and `show c'; they could even be</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">mouse-clicks or menu items--whatever suits your program.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">You should also get your employer (if you work as a programmer) or your</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">school, if any, to sign a "copyright disclaimer" for the program, if</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">necessary. Here is a sample; alter the names:</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Yoyodyne, Inc., hereby disclaims all copyright interest in the program</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> `Gnomovision' (which makes passes at compilers) written by James Hacker.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> &lt;signature of Ty Coon&gt;, 1 April 1989</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Ty Coon, President of Vice</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This General Public License does not permit incorporating your program into</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">proprietary programs. If your program is a subroutine library, you may</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">consider it more useful to permit linking proprietary applications with the</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">library. If this is what you want to do, use the GNU Lesser General</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Public License instead of this License.</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - + Close Lukk - - + + Thanks to Takk til @@ -863,8 +868,8 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">PokerTH 0.5</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Poker-motor for den populære poker-varianten "Texas Holdem"</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Enkeltspiller-spill med opp til 6 datamaskinstyrte motstandere</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Flerspiller-spill over nettverk</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Utviklet i C++ / QT4</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"><span style=" font-weight:400;">© 2006-2007, FHammer &amp; FThauer</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + Translation Oversettelse @@ -884,14 +889,14 @@ p, li { white-space: pre-wrap; } Om PokerTH 0.6 - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -900,7 +905,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1152,12 +1157,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order - + You cannot set more than 30 manual blinds. @@ -1292,8 +1297,8 @@ Please choose another one! createInternetGameDialog - - + + Create Game Opprett spill @@ -1306,14 +1311,14 @@ Please choose another one! Tidsgrense for spillere (sek.): - - + + Maximum number of players: Maks. antall spillere: - - + + Start Cash: Startkapital: @@ -1322,19 +1327,25 @@ Please choose another one! Small Blind: - - + + Password: - + Delay between hands: - + + + Allow spectators to watch the game + + + + Cancel Avbryt @@ -1351,7 +1362,7 @@ Please choose another one! - + Default game name: @@ -1386,38 +1397,38 @@ Please choose another one! - + Blinds - + Use saved blinds settings - + Change blinds settings ... - - + + $ - + Timeout for player action: - - + + s @@ -1542,8 +1553,8 @@ Please choose another one! gameLobbyDialog - - + + Lobby-Chat @@ -1552,38 +1563,50 @@ Please choose another one! Spill - - + + Game Info - - + + + Players + + + + + Connected Players Tilkoblede spillere - - + + + Spectators + + + + + First small blind: - - + + Blinds raise interval: - - + + Blinds raise mode: - - + + Fill up with computer opponents @@ -1604,8 +1627,8 @@ Please choose another one! Small Blind: - - + + Start Cash: Startkapital: @@ -1615,7 +1638,7 @@ Please choose another one! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1632,104 +1655,98 @@ p, li { white-space: pre-wrap; } Opprett spill - - + + Manual blinds list: - - + + search for player ... - - + + 5 - Show open & non-full & ranking games - - + + Game type: - - + + Timing: - - + + &Leave Game - - - Join &any game - - - - - + + &Create Game - - + + &Join Game - - + + Sort alphabetically - - + + Sort by country - - + + Display idle players - - + + 0 - No game list filter - - + + 1 - Show open games - - + + 2 - Show open & non-full games - - + + 3 - Show open & non-full & non-private games - - + + 4 - Show open & non-full & private games @@ -1740,14 +1757,14 @@ p, li { white-space: pre-wrap; } - - + + &Start Game - - + + &Kick Player @@ -1755,25 +1772,25 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info - + Server Error Feil hos tjener - + You should not kick yourself from this game! Du burde ikke kaste deg selv ut fra spillet! - + Joining a private Game @@ -1788,1325 +1805,1324 @@ p, li { white-space: pre-wrap; } - - - + + Spectate + + + + + + Game Spill - - - + + + Players - - - + + + State - - - + + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game - + You are about to join a private game. Please enter the password! - + running - + open - - - Connected players - - - - + hands - + minutes - + double blinds - + manual blinds order - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3116,205 +3132,207 @@ p, li { white-space: pre-wrap; } - - - + + + P - - - + + + Available Players - + Invite player - + Ignore player - + Player infos ... - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - Connected players - max. %1 - - - - - - + + + T - - - + + + sec (action) - - - + + + sec (hand delay) - - - Connected players - Max. %1 - - - - - + + running games: %1 - - + + open games: %1 - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? - - + + connected players: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question @@ -3330,7 +3348,7 @@ Feel free to invite other players by right-clicking on their nick in the availab QGroupBox { background-image: url(:/graphics/resources/graphics/toolboxFrameBG.png) } - + Speed: Hastighet: @@ -3347,77 +3365,77 @@ Feel free to invite other players by right-clicking on their nick in the availab Spill - - + + Ctrl+N Ctrl+N - - + + Quit Avslutt - - + + About PokerTH ... Om PokerTH... - - + + Settings ... Innstillinger... - - + + Create Network Game ... Start nettverks-spill... - - + + Join Network Game ... Bli med i et nettverksspill... - - - + + + Fullscreen Fullskjerm - + Hands Hender - + Chat Prat - + Player info - + Log Logg - - + + Start Local Game ... Start lokalt spill... - - + + Ctrl+Q Ctrl+Q @@ -3430,8 +3448,8 @@ Feel free to invite other players by right-clicking on their nick in the availab ⌘F - - + + Show/Hide Chat Window @@ -3444,8 +3462,8 @@ Feel free to invite other players by right-clicking on their nick in the availab ⌘H - - + + Show/Hide Log Window @@ -3454,53 +3472,53 @@ Feel free to invite other players by right-clicking on their nick in the availab ⌘L - - - - - - + + + + + + Show/Hide Hands Window - - + + Ctrl+O - + Save Lagre - - + + Ctrl+J - - + + Ctrl+F - - + + Ctrl+T - - + + Ctrl+H - - + + Ctrl+L @@ -3509,34 +3527,34 @@ Feel free to invite other players by right-clicking on their nick in the availab PokerTH 0.5 - Åpen kildekode Texas Holdem {0.6 ?} - - + + Internet Game ... - - + + Ctrl+I - + Away - + Manual Action (default) - + Auto-Check / Auto-Fold - + Auto-Check / Auto-Call-Any @@ -3546,98 +3564,98 @@ Feel free to invite other players by right-clicking on their nick in the availab - - + + Show/Hide Away Window - - + + Ctrl+A - + Kick Kast ut - + Vote Timeout: - + Yes - + No - + Chance - + Settings Innstillinger - + Configure PokerTH - + Configure PokerTH ... - - + + Close Lukk - - + + Ctrl+X - + Vote started by: - - + + Show/Hide Chance Window - - + + Ctrl+C - + &View - + &Settings - + Shortcut: <Shift> @@ -3657,31 +3675,31 @@ Feel free to invite other players by right-clicking on their nick in the availab F1 - Kast/Sats allt | F2 - Pass/Syn | F3 - Sats/Høyne - - - - - - - - + + + + + + + + Start Start - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stopp @@ -3818,115 +3836,120 @@ Hvis tjeneren er bak en NAT-ruter, forsikre deg om at videresending er satt opp Ugyldig antall spillere. - - + + Chat Prat - + Closing PokerTH during network game - + You are the hosting server. Do you want to close PokerTH anyway? - + PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - + + + + + Lobby - + PokerTH - Internet Game Message - + Attention! Do you really want to leave the current game and go back to the lobby? - - + + Chance - + PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Kast ut - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. + + + Spectators + + internetGameLoginDialog @@ -4134,25 +4157,21 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Feil under lasting av tjenerprofiler - - - - Could not load server-profiles-file: - Kunne ikke laste fila med tjener-profiler: + Kunne ikke laste fila med tjener-profiler: - + Save Server Profile Error Lagre tjenerprofil-feil @@ -4161,31 +4180,45 @@ p, li { white-space: pre-wrap; } En profil med navnet "" - + + + + + Could not load server-profiles-file: +%1 + + + + Read Server-Profile List Error Les feilbeskrivelse for tjenerprofil-liste - + Could not read server-profiles list Kunne ikke lese lista med tjenerprofiler - - + + Save Server-Profile-File Error Feil under lagring av tjener-profil - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Kunne ikke lagre fil med tjener-profiler: + Kunne ikke lagre fil med tjener-profiler: - + A profile with the name: %1 already exists. Would you like to overwrite ? @@ -4252,12 +4285,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order - + You cannot set more than 30 manual blinds. @@ -4298,7 +4331,7 @@ Would you like to overwrite ? - + Game Speed: Spill-hastighet: @@ -4330,7 +4363,7 @@ Would you like to overwrite ? - + Use saved blinds settings @@ -4341,7 +4374,7 @@ Would you like to overwrite ? - + Change blinds settings ... @@ -4388,14 +4421,14 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Feil i avatar-fil - + Please select an avatar from the list! Vennligst velg en avatar fra listen! @@ -4405,7 +4438,7 @@ Please enter an valid picture! Det angitte bildet finnes ikke.Vennligst vis til et gyldig bilde! - + Select external avatar picture Velg eksternt avatar-bilde @@ -4414,18 +4447,18 @@ Please enter an valid picture! Bilder (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! - + Images (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! @@ -4464,10 +4497,10 @@ p, li { white-space: pre-wrap; } Small Blind: - - - - + + + + Start Cash: Startkapital: @@ -4480,24 +4513,24 @@ p, li { white-space: pre-wrap; } Tjener-instillinger - - - - + + + + Server Port: Tjener-port: - - - - + + + + Use IPv6 Bruk IPv6 - - + + Server Password: Passord for tjener: @@ -4506,43 +4539,43 @@ p, li { white-space: pre-wrap; } Standardinstillinger for nettverksspill - - + + Computer Engine Datamaskin-motor - - + + Opponent 5: Motstander 5: - - + + Opponent 3: Motstander 3: - - + + Opponent 2: Motstander 2: - - + + Opponent 1: Motstander 1: - - + + Opponent 4: Motstander 4: - + Human Player: Mennesklig spiller: @@ -4551,8 +4584,8 @@ p, li { white-space: pre-wrap; } Kallenavn på spillere - - + + Log File Directory: Katalog for loggfiler: @@ -4563,23 +4596,23 @@ p, li { white-space: pre-wrap; } - + Log Messages Logg - + Local Game Settings Innstillinger for lokalt spill - + Network Game Settings Innstillinger for nettverks-spill - - + + Show flip-card animation Vis animasjon når kort vendes @@ -4588,8 +4621,8 @@ p, li { white-space: pre-wrap; } Eget bakside-bilde: - - + + Show fade-out animation for non-winning cards La kort som ikke vinner tones ut @@ -4598,18 +4631,18 @@ p, li { white-space: pre-wrap; } Vis intro ved oppstart - + Show right toolbox Vis verktøykasse på høyre side - + Show left toolbox Vis verktøykasse på venstre side - - + + Play blind raise notification @@ -4618,8 +4651,8 @@ p, li { white-space: pre-wrap; } Vis beskjeder i statuslinja - - + + Show game settings dialog on every new game Vis spill-innstillinger ved hvert nye spill @@ -4628,20 +4661,20 @@ p, li { white-space: pre-wrap; } Antall henter før "Small Blind" økes: - - + + Number of players: Antall spillere: - - + + Game Speed: Spill-hastighet: - - + + Pause between hands (press "start" button to go on) Pause mellom hender (trykk "start"-knappen for å fortsette) @@ -4654,8 +4687,8 @@ p, li { white-space: pre-wrap; } Versjon av spillmotor for datamaskinstyrte motstandere: - - + + Enable/Disable Logging Skru på/av logging @@ -4664,20 +4697,20 @@ p, li { white-space: pre-wrap; } Lagre logg-filer i - - + + Write log after every: Skriv logg etter hver(t): - - + + Show buttons for small blind and big blind Vis knapper for "small blind" og "big blind" - - + + Play sound effects Bruk lydeffekter @@ -4686,26 +4719,26 @@ p, li { white-space: pre-wrap; } 0.4 (nåværende) - - - - + + + + Use SCTP Bruk SCTP - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://no.wikipedia.org/wiki/Ipv6">Hva er dette?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Hva er dette?</a> @@ -4723,36 +4756,36 @@ p, li { white-space: pre-wrap; } Innstillinger - - + + Maximum number of players: Maks. antall spillere: - - + + Sound Volume: Lyd-nivå: - - + + 10 10 - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 6: Motstander 6: @@ -4761,262 +4794,286 @@ p, li { white-space: pre-wrap; } Tidsgrense for spillere (sek.): - - + + action (high frequent disc access) Handling (hyppig disk-bruk) - - + + hand (medium disc access) Hånd (medium disk-bruk) - - + + game (low disc access) Spill (lav disk-bruk) - - + + Show own cards only on mouse click - + Sound - - + + Network Server Settings - + Internet Game Settings - - + + Server Address: - - + + Use password for private game: - - - - + + + + First small blind: - - + + + Common + + + + + Disable splashscreen on startup - - + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table - - + + Card Deck - - + + Card Back - - + + Use card back from card style - - + + Use custom card back picture: - - - - + + + + Raise blinds: - - - - - - - - + + + + + + + + Every: - - - - + + + + hands - - - - + + + + minutes - - - - + + + + Raise mode: - - - - + + + + Always double blinds - - - - + + + + Manual blinds order: - - - - + + + + Edit ... - + + + Allow spectators to watch the game + + + + OK - - + + Language: - - + + Sound Categories - - + + Play game actions sounds like "check", "call", "raise" - - + + Play lobby chat notifications - - + + Play network/internet game notifications like "player joined the game" - + Player Nicks/Avatars - + Reverse order of F-Keys (F1 - F4) - - + + Network / Internet Game - - + + Switch keyboard focus to bet-input-field if it's your turn - - - - - - - - + + + + + + + + $ - - + + Timeout for player action: - - - - + + + + s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5024,7 +5081,7 @@ p, li { white-space: pre-wrap; } - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5032,32 +5089,32 @@ p, li { white-space: pre-wrap; } - - + + Automatic Server Configuration URL - - + + Serverlist Address: - - + + Manual Server Configuration - - + + Store log files for: - - + + Day(s) @@ -5086,75 +5143,75 @@ p, li { white-space: pre-wrap; } - - + + Show cards chance monitor - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: - + Style - + Factory Settings - - + + Don't translate poker strings like check, call, raise from game table style - - + + Show country flag in the corner of avatar - - - - + + + + Add ... - - - - + + + + Remove - - - - + + + + Preview - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5163,31 +5220,31 @@ p, li { white-space: pre-wrap; } - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5196,7 +5253,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5208,91 +5265,91 @@ p, li { white-space: pre-wrap; } - - + + Delay between hands: - - + + Server - - + + Game Spill - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5301,19 +5358,19 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Motstander 6: {7:?} - - + + Opponent 8: Motstander 6: {8:?} - + Note: Best avatar quality with image ratio like width=50, height=50. @@ -5322,14 +5379,14 @@ p, li { white-space: pre-wrap; } Slett - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5338,8 +5395,8 @@ p, li { white-space: pre-wrap; } Motstander 6: {10:?} - - + + Opponent 9: Motstander 6: {10:?} {9:?} @@ -5347,11 +5404,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Feil i instillinger @@ -5368,7 +5425,7 @@ Please select an valid directory! Vennligst velg en gyldig katalog! - + Select your flipside picture Velg bakside-bilde @@ -5377,31 +5434,31 @@ Vennligst velg en gyldig katalog! Bilder (*.png) - + Open Directory Åpne mappe - + Images (*.png *.jpg *.gif) - - + + Blinds Error - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. - + Language Changed @@ -5551,171 +5608,171 @@ This first-small-blind-value will be set to maximum allowed value. - + You have changed application language to %1. Please restart PokerTH to load new language! - + The entered flipside picture doesn't exist. Please enter an valid picture! - - + + The log file directory doesn't exist. Please select an valid directory! - + The entered server list address is not a valid URL. Please enter a valid server list address! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5784,12 +5841,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Feil hos tjener - + You should not kick yourself from this game! Du burde ikke kaste deg selv ut fra spillet! @@ -5960,106 +6017,106 @@ Do you really want to reset factory settings? startWindowImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Nettverksfeil - + Server address was not set. Tjener-adresse var ikke satt. - + An invalid port was set (ports 0-1023 are not allowed). En ugyldig port var satt (porter 0-1023 er ikke tillatt). - + Could not create a socket for TCP communication. Kunne ikke lage en kontakt for TCP-kommunikasjon. - + Could not set the IP address. Kunne ikke sette IP-adressen. - + Could not set the port for this type of address. Kunne ikke sette porten for denne typen adresse. - + The server name could not be resolved. Tjenernavnet kunne ikke konverteres. - + Bind failed - please choose a different port. Kunne ikke binde - vennligst velg en annen port. - + Internal network error: "listen" failed. Intern nettverksfeil - "listen" feilet. - + Server execution was terminated. Tjener-utførelse ble avbrutt. - + Could not connect to the server. Kunne ikke koble til tjeneren. - + Connection timed out. Please check the server address. @@ -6070,12 +6127,12 @@ Vennligst sjekk tjener-adressen. Hvis tjeneren er bak en NAT-ruter, forsikre deg om at videresending er satt opp riktig. - + Internal network error: "select" failed. Intern nettverksfeil - "select" feilet. - + Internal network error: "send" failed. Intern nettverksfeil - "send" feilet. @@ -6084,117 +6141,117 @@ Hvis tjeneren er bak en NAT-ruter, forsikre deg om at videresending er satt opp Tilkoblingen ble stengt av tjeneren. - + Internal network error: Duplicate TCP connection. Intern nettverksfeil - Dobbel TCP-tilkobling. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. En ugyldig TCP-pakke ble mottatt. Vennligst forsikre deg om at alle spillere bruker samme versjon av PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Intern tilstands-feil. Vennligst forsikre deg om at alle spillere bruker samme versjon av PokerTH. - + Invalid server list URL. Please correct the address in the settings. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. - + Could not unzip the PokerTH internet server list. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. - + Could not open the target file when downloading the server list. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. - + Sorry, this server is already full. Beklager, tjeneren har ikke plass til flere spillere. - + Invalid login. Please check your username and password. - + Your account is blocked indefinitely. - + You cannot login at this time. Please try again in a few seconds. - + You cannot join this game, because another player in that game has your network address. - + Your connection to the server is very slow, the game had to start without you. - + This game is of type invite-only. You cannot join this game without being invited. - + Invalid password when joining the game. Please reenter the password and try again. Ugyldig passord. Prøv igjen. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. - + The password is too long. Please choose another one. Passordet er for langt. Vennligst velg et annet. @@ -6205,221 +6262,221 @@ Please choose a different name. Vennligst velg et annet navn. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Start nettverks-spill - + The connection to the server was lost. - + The game name is either too short or too long. Please choose another one. - + The game could not be found. - + The chat text is invalid. - + The server referred to an unknown player. Aborting. Tjeneren referete til en ukjent spiller. Avbryter. - + Internal error: The current player could not be found. - + Internal error: The current player is not active. - + You were kicked from the server. Du ble kastet ut fra tjeneren. - + You were temporarily banned from the server. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! - + The client player count is invalid. Ugyldig antall spillere. - + Too many manual blinds were set. Please reconfigure the manual blinds. - + An invalid avatar file was configured. Please choose a different avatar. - + The selected avatar file is too large. Please choose a different avatar. - + An internal avatar error occured. Please report this to an admin in the lobby chat. - + Could not start game: Synchronization failed. - + The server is down for maintenance. Please try again later. - + An internal error occured. En intern feil oppstod. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification - + You were kicked from the game. - + Sorry, this game is already full. - + Unable to join - the server has already started the game. Kan ikke bli med - tjeneren har allerede startet spillet. - + Your admin state timed out due to inactivity. Feel free to create a new game! - + You cannot join this type of game as guest. - + The settings are invalid for this type of game. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. - - + + Server Message - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. diff --git a/ts/pokerth_pl.ts b/ts/pokerth_pl.ts index 2a39597d..0a68a9ef 100644 --- a/ts/pokerth_pl.ts +++ b/ts/pokerth_pl.ts @@ -1,7 +1,6 @@ -UTF-8 CardDeckStyleReader @@ -237,22 +236,22 @@ Proszę skontaktuj się z autorem skórki pod adresem "%4".Błąd skórki stołu - przestarzała - + Everything OK! Wszystko działa! - + Some pictures are missing, please contact style maintainer for this issue. Brakuje niektórych obrazków, skontaktuj się z autorem skórki w tej sprawie. - + Some style fields are missing, please contact style maintainer for this issue. Skórka nie posiada wszystkich informacji, skontaktuj się z autorem skórki w tej sprawie. - + This style is outdated, please contact style maintainer for this issue. Ta skórka jest przestarzała, skontaktuj się z autorem skórki w tej sprawie. @@ -381,52 +380,52 @@ Proszę wybierz skórkę stołu. Analizuj logi ... - + PokerTH - Delete log files PokerTH - Usuń logi - + Do you really want to delete the selected log files? Czy na pewno chcesz usunąć wybrany plik logu? - + Remove log file Usuń plik logu - + PokerTH cannot remove this log file, please verify that you have write access to this file! Nie udało się usunąć pliku logu, sprawdź czy masz odpowiednie prawa! - + Export PokerTH log file to HTML Eksportuj log do formatu HTML - + PokerTH HTML log (*.html) Plik logu PokerTH w formacie HTML (*.html) - + Export PokerTH log file to plain text Eksportuj log do pliku tekstowego - + PokerTH plain text log (*.txt) Plik logu PokerTH w formacie tekstowym (*.txt) - + Save PokerTH log file Zapisz logi PokerTH - + PokerTH SQL log (*.pdb) Plik logu PokerTH w formacie SQL (*.pdb) @@ -474,14 +473,14 @@ Uploading log files may fail if you are using an http proxy. Jedną z częstych przyczyn problemów jest używania proxy HTTP. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Przetworzenie logów na serwerze nie udało się. Proszę upewnij się, że wysyłasz prawidłowy plik logu PokerTH. - + Failure reason: Przyczyna błędu: @@ -510,18 +509,18 @@ Proszę upewnij się, że wysyłasz prawidłowy plik logu PokerTH. Zgłoś niewłaściwy avatar - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Nie będziesz otrzymywał żadnych informacji ani zaproszeń do gry od tego gracza.<br>Czy na pewno chcesz dodać gracza <b>%1</b> do listy ignorowanych? - - + + PokerTH - Question PokerTH - Pytanie - + Are you sure you want to report the avatar of "%1" as inappropriate? Czy na pewno chcesz zgłosić avatar gracza "%1" jako niewłaściwy? @@ -550,26 +549,48 @@ Proszę upewnij się, że wysyłasz prawidłowy plik logu PokerTH. aboutPokerth - - + + About O grze - - + + Project Projekt - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + Translation Tłumaczenie - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + Thanks to Podziękowania @@ -706,7 +727,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - pierwszy wygląd graficzny</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -727,8 +747,6 @@ p, li { white-space: pre-wrap; } </td></tr></table></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -741,13 +759,19 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + License Licencja - + + + Third party libs + Biblioteki + + + Close Zamknij @@ -782,8 +806,8 @@ p, li { white-space: pre-wrap; } © 2006-2007, FHammer, FThauer, LMay - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> @@ -1025,21 +1049,21 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"><br /></span></p></td></tr></table></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Liberation Sans'; font-size:18px; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> {3C?} {4.0/?} {3.?} {40/?} {1"?} {26p?} {400;?} {0p?} {0p?} {0p?} {0p?} {0;?} {0p?} +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1048,7 +1072,14 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">Władysław Bodzek - wbodzek@o2.pl</span></p></td></tr></table></body></html> @@ -1291,12 +1322,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Własna konfiguracja ciemnych - + You cannot set more than 30 manual blinds. Nie możesz ustawić więcej niż 30 wartości ciemnych. @@ -1438,8 +1469,8 @@ Proszę wybrać inną nazwę! createInternetGameDialog - - + + Create Game Utwórz grę @@ -1452,31 +1483,37 @@ Proszę wybrać inną nazwę! Czas na reakcję graczy (w sekundach): - - + + Maximum number of players: Maksymalna liczba graczy: - - + + Start Cash: Początkowe żetony: - - + + Password: Hasło: - + Delay between hands: Przerwa między rękami: - + + + Allow spectators to watch the game + Pozwól innym oglądać rozgrywkę + + + Cancel Anuluj @@ -1493,7 +1530,7 @@ Proszę wybrać inną nazwę! - + Default game name: Domyślna nazwa gry: @@ -1528,38 +1565,38 @@ Proszę wybrać inną nazwę! Gra rankingowa - + Blinds Ciemne - + Use saved blinds settings Użyj zapisanych ustawień ciemnych - + Change blinds settings ... Zmień ustawienia ciemnych... - - + + $ $ - + Timeout for player action: Czas na ruch: - - + + s @@ -1676,8 +1713,8 @@ Proszę wybrać inną nazwę! gameLobbyDialog - - + + Lobby-Chat Chat @@ -1690,38 +1727,44 @@ Proszę wybrać inną nazwę! Prywatne - - + + Game Info Informacje o grze - - + + Connected Players Połączeni gracze - - + + + Spectators + Oglądający + + + + Start Cash: Początkowe żetony: - - + + First small blind: Pierwsza mała ciemna: - - + + Blinds raise interval: Zwiększanie ciemnych co: - - + + Blinds raise mode: Tryb zwiększania ciemnych: @@ -1731,7 +1774,7 @@ Proszę wybrać inną nazwę! Gry - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1748,26 +1791,26 @@ p, li { white-space: pre-wrap; } Czas na ruch (w sekundach): - - + + Fill up with computer opponents Dopełnij przeciwnikami komputerowymi - - + + Sort alphabetically Sortuj alfabetycznie - - + + Sort by country Sortuj wg państwa - - + + Display idle players Tylko nieaktywni gracze @@ -1792,8 +1835,10 @@ p, li { white-space: pre-wrap; } Dostępni gracze + + Players - Gracze + Gracze Kick Player @@ -1820,8 +1865,8 @@ p, li { white-space: pre-wrap; } Tryb zwiększania ślepych: - - + + Manual blinds list: Własna konfiguracja ciemnych: @@ -1830,38 +1875,36 @@ p, li { white-space: pre-wrap; } Czas na reakcję graczy (w sekundach): - - + + Game type: Typ gry: - - + + Timing: Czas: - - + + &Leave Game &Opuść grę - - Join &any game Dołącz do do&wolnej gry - - + + &Create Game &Utwórz grę - - + + &Join Game &Dołącz do gry @@ -1884,38 +1927,38 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Kliknij tutaj aby zobaczyć ranking online</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - Wszystkie gry - - + + search for player ... szukaj gracza... - - + + 1 - Show open games 1 - Otwarte gry - - + + 2 - Show open & non-full games 2 - Otwarte i niepełne gry - - + + 3 - Show open & non-full & non-private games 3 - Otwarte, niepełne i nie prywatne gry - - + + 4 - Show open & non-full & private games 4 - Otwarte, niepełne i prywatne gry @@ -1926,20 +1969,20 @@ p, li { white-space: pre-wrap; } Lobby - Chat - - + + 5 - Show open & non-full & ranking games 4 - Otwarte, niepełne i rankingowe gry - - + + &Start Game Zacznij &grę - - + + &Kick Player &Wyrzuć gracza @@ -1971,46 +2014,46 @@ p, li { white-space: pre-wrap; } gra - - - - + + + + Game Info Informacje o grze - + Server Error Błąd serwera - + You should not kick yourself from this game! Nie powinieneś wyrzucać sam siebie z tej gry! - + Joining a private Game Dołącz do gry prywatnej - - - + + + Game Gra - - - + + + Players Gracze - - - + + + State Stan @@ -2019,43 +2062,41 @@ p, li { white-space: pre-wrap; } Prywatne - + You are about to join a private game. Please enter the password! Próbujesz wejść do gry prywatnej. Proszę wpisz hasło! - + running w trakcie - + open otwarta - - Connected players Połączeni gracze - + hands rozdania - + minutes minuty - + double blinds podwajane - + manual blinds order własne @@ -2075,1417 +2116,1419 @@ p, li { white-space: pre-wrap; } Kliknij tutaj aby zobaczyć ranking online - - - + + Spectate + Oglądaj + + + + + P P - - - + + + Time Czas - - - + + + Available Players Dostępni gracze - + Invite player Zaproś gracza - + Ignore player Ignoruj gracza - + Player infos ... Informacje o graczu ... - - + + Show player stats Pokaż statystyki gracza - - + + Admin action ... - + Administracja... - + Total kickban - + Zablokuj całkowicie - + Report inappropriate game name Zgłoś nieodpowiednią nazwę gracza - + Close game - + Zamknij grę - - - + + + Standard Standardowa - - - + + + Registered players only Tylko dla zarejestrowanych - - - + + + Invited players only Tylko dla zaproszonych - - - + + + Ranking game Gra rankingowa - Connected players - max. %1 Połączeni gracze - max. %1 - + Afghanistan Afganistan - + ALand Islands Wyspy Alandzkie - + Albania Albania - + Algeria Algieria - + American Samoa Samoa Amerykańskie - + Andorra Andora - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarktyda - + Antigua And Barbuda Antigua i Barbuda - + Argentina Argentyna - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Azerbejdżan - + Bahamas Bahamy - + Bahrain Bahrain - + Bangladesh Bangladesz - + Barbados Barbados - + Belarus Białoruś - + Belgium Belgia - + Belize Belize - + Benin Benin - + Bermuda Bermudy - + Bhutan Bhutan - + Bolivia Boliwia - + Bosnia And Herzegovina Bośnia i Hercegowina - + Botswana Botswana - + Bouvet Island Wyspa Bouveta - + Brazil Brazylia - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria Bułgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodża - + Cameroon Kamerun - + Canada Kanada - + Cape Verde - + Cayman Islands - + Central African Republic Republika Środkowoafrykańska - + Chad Czad - + Chile Chile - + China Chiny - + Christmas Island Wyspy Bożego Narodzenia - + Cocos (Keeling) Islands - + Colombia Kolumbia - + Comoros - + Congo Kongo - + Congo, The Democratic Republic Of The Demokratyczna Republika Konga - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia Chorwacja - + Cuba Kuba - + Cyprus Cypr - + Czech Republic Czechy - + Denmark Dania - + Djibouti - + Dominica - + Dominican Republic - + Ecuador Ekwador - + Egypt Egipt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia Estonia - + Ethiopia Etiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland Finlandia - + France Francja - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia Gruzja - + Germany Niemcy - + Ghana Ghana - + Gibraltar - + Greece Frecja - + Greenland Grenlandia - + Grenada - + Guadeloupe - + Guam - + Guatemala Gwatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Węgry - + Iceland Islandia - + India Indie - + Indonesia Indonezja - + Iran, Islamic Republic Of Iran - + Iraq Irak - + Ireland Irlandia - + Isle Of Man - + Israel Izrael - + Italy Włochy - + Jamaica Jamajka - + Japan Japonia - + Jersey - + Jordan - + Kazakhstan Kazachstan - + Kenya Kenia - + Kiribati - + Korea, Democratic People'S Republic Of Korea Północna - + Korea, Republic Of Korea Południowa - + Kuwait Kuwejt - + Kyrgyzstan Kirgistan - + Lao People'S Democratic Republic - + Latvia Łotwa - + Lebanon Liban - + Lesotho Lesotho - + Liberia Liberia - + Libyan Arab Jamahiriya - + Liechtenstein Liechtenstein - + Lithuania Litwa - + Luxembourg Luksemburg - + Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia - + Madagascar Madagaskar - + Malawi - + Malaysia Malezja - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico Meksyk - + Micronesia, Federated States Of - + Moldova, Republic Of Mołdawia - + Monaco Monaco - + Mongolia Mogolia - + Montserrat - + Morocco Maroko - + Mozambique Mozambik - + Myanmar - + Namibia Namibia - + Nauru - + Nepal Nepal - + Netherlands Holandia - + Netherlands Antilles - + New Caledonia - + New Zealand Nowa Zelandia - + Nicaragua Nikaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island - + Northern Mariana Islands - + Norway Norwegia - + Oman Oman - + Pakistan Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama Panama - + Papua New Guinea Papua Nowa Gwinea - + Paraguay Paragwaj - + Peru Peru - + Philippines Filipiny - + Pitcairn - + Poland Polska - + Portugal Portugalia - + Puerto Rico Puerto Rico - + Qatar Katar - + Reunion - + Romania Rumunia - + Russian Federation Rosja - + Rwanda Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe - + Saudi Arabia Arabia Saudyjska - + Senegal Senegal - + Serbia And Montenegro Serbia i Czarnogóra - + Seychelles - + Sierra Leone - + Singapore Singapur - + Slovakia Słowacja - + Slovenia Słowenia - + Solomon Islands - + Somalia Somalia - + South Africa Republika Południowej Afryki - + South Georgia And The South Sandwich Islands - + Spain Hiszpania - + Sri Lanka Sri Lanka - + Sudan Sudan - + Suriname Surinam - + Svalbard And Jan Mayen - + Swaziland - + Sweden Szwecja - + Switzerland Szwajcaria - + Syrian Arab Republic Syria - + Taiwan, Province Of China Tajwan - + Tajikistan Tadżykistan - + Tanzania, United Republic Of Tanzania - + Thailand Tajlandia - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago Trinidad i Tobago - + Tunisia Tunezja - + Turkey Turcja - + Turkmenistan Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda Uganda - + Ukraine Ukraina - + United Arab Emirates Zjednoczone Emiraty Arabskie - + United Kingdom Wielka Brytania - + United States Stany Zjednoczone - + United States Minor Outlying Islands - + Uruguay Urugwaj - + Uzbekistan Uzbekistan - + Vanuatu - + Venezuela Wenezuela - + Viet Nam Wietnam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara Sahara Zachodnia - + Yemen Jemen - + Zambia Zambia - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Czy na pewno chcesz zgłosić nieodpowiednią nazwę gracza: "%1"? - + Are you sure you want to close the game: "%1"? - + Czy na pewno chcesz zamknąć grę: "%1"? - + Are you sure you want to total kickban the player: "%1"? - + Czy na pewno chcesz całkowicie zablokować gracza: "%1"? - - - + + + T T - - - + + + sec (action) sekund (na akcję) - - - + + + sec (hand delay) sekund (między rękami) - - Connected players - Max. %1 Połączeni gracze - max. %1 - - + + running games: %1 gry w trakcie: %1 - - + + open games: %1 otwarte gry : %1 - + Invite %1 Zaproś %1 - + Ignore %1 Ignoruj %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 został zaproszony do %2 przez %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 odrzucił zaproszenie do %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 nie może dołączyć do %2 ponieważ jest zajęty.</span> - - + + The game will start in<br><b>%1</b> seconds. Gra rozpocznie się za <br><b>%1</b> sekund. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Dołączyłeś do gry "tylko dla zaproszonych". Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście dostepnych graczy. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Zostałeś zaproszony do gry <b>%1</b> przez <b>%2</b>.<br>Chcesz dołączyć do tej gry? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Nie będziesz otrzymywał żadnych informacji ani zaproszeń do gry od tego gracza.<br>Czy na pewno chcesz dodać gracza <b>%1</b> do listy ignorowanych? @@ -3494,52 +3537,65 @@ Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście d osób na chacie: %1 - - + + connected players: %1 podłączonych graczy: %1 - + + + Players (%1) + Gracze (%1) + + + + + + Spectators (%1) + Oglądający (%1) + + + search for player ... szukaj gracza... - + Chat is only available to registered players. Chat jest dostępny tylko dla zarejestrowanych graczy. - + Invite player ... Zaproś gracza... - + Ignore player ... Ignoruj gracza... - + %1 is playing in "%2". %1 gra w "%2". - + %1 is not playing at the moment. %1 nie gra w tej chwili. - - + + PokerTH - Info Message PokerTH - Informacja - - - - + + + + PokerTH - Question PokerTH - Pytanie @@ -3551,27 +3607,27 @@ Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście d gameTable - + Hands Układy pokerowe - + Chat Chat - + Player info Informacja o graczu - + Log Log - + Speed: Szybkość: @@ -3588,115 +3644,115 @@ Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście d Gra - - + + Start Local Game ... Rozpocznij grę lokalną ... - - + + Ctrl+N Ctrl+N - - + + Quit Zakończ - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... O programie PokerTH ... - - + + Settings ... Ustawienia ... - - + + Create Network Game ... Utwórz grę sieciową ... - - + + Ctrl+O Ctrl+O - - + + Join Network Game ... Dołącz do gry sieciowej ... - - + + Ctrl+J Ctrl+J - - - + + + Fullscreen Pełny ekran - - + + Ctrl+F Ctrl+F - - + + Show/Hide Chat Window Pokaż/ukryj okno chatu - - + + Ctrl+T Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window Pokaż/ukryj okno układów pokerowych - - + + Ctrl+H Ctrl+H - - + + Show/Hide Log Window Pokaż/ukryj okno logu - - + + Ctrl+L Ctrl+L @@ -3709,14 +3765,14 @@ Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście d Gra sieciowa - - + + Internet Game ... Połącz z serwerem gier ... - - + + Ctrl+I Ctrl+I @@ -3725,22 +3781,22 @@ Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście d All In - + Away Nieobecność - + Manual Action (default) Czekaj na moją decyzję (domyślnie) - + Auto-Check / Auto-Fold Automatycznie czekaj/pasuj - + Auto-Check / Auto-Call-Any Automatycznie czekaj/sprawdzaj @@ -3750,19 +3806,19 @@ Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście d PokerTH 0.6-beta - Open-Source'owa gra Texas Holdem - - + + Show/Hide Away Window Pokaż/ukryj okno nieobecności - - + + Ctrl+A - + Kick Wyrzuć @@ -3783,86 +3839,86 @@ p, li { white-space: pre-wrap; } <a>&#9734;</a> - + Vote Timeout: Czas głosowania: - + Yes Tak - + No Nie - + Save Zapisz - + Chance Szanse - + Settings Ustawienia - + Configure PokerTH Ustawienia - + Configure PokerTH ... Ustawienia... - - + + Close Zamknij - - + + Ctrl+X Ctrl+X - + Vote started by: Głosowanie rozpoczęte przez: - - + + Show/Hide Chance Window Pokaż/ukryj okno szans układów - - + + Ctrl+C Ctrl+C - + &View &Widok - + &Settings &Opcje - + Shortcut: <Shift> Skrót: <Shift> @@ -3870,19 +3926,19 @@ p, li { white-space: pre-wrap; } gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop @@ -3895,14 +3951,14 @@ p, li { white-space: pre-wrap; } Ctrl+N aby rozpocząć nową grę - - - - - - - - + + + + + + + + Start Start @@ -4053,8 +4109,8 @@ Proszę wybrać inny nick. Niestety ten serwer jest w tej chwili pełny. - - + + Chat Chat @@ -4139,26 +4195,26 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Proszę wejdź na stronę <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> i śćiągnij ostatnią wersję. - + Closing PokerTH during network game Zamknięcie PokerTH podczas gry siecowej - + You are the hosting server. Do you want to close PokerTH anyway? Jesteś gospodarzem. Chcesz naprawdę zamknąć PokerTH? - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Open-Source'owa gra Texas Holdem - - - - - + + + + + Lobby Chat @@ -4179,86 +4235,91 @@ Proszę wejdź na stronę <a href="http://www.pokerth.net/" target= Ta wersja beta PokerTH jest przestarzała.<br>Proszę odwiedzić stronę <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> i zainstalować najnowszą wersję. - + PokerTH - Internet Game Message PokerTH - Komunikat serwera gier online - + Attention! Do you really want to leave the current game and go back to the lobby? Uwaga! Czy na pewno chcesz opuścić tę grę i powrócić do chatu? - - + + Chance Szanse - + PokerTH %1 PokerTH %1 - + Really want to exit? Na pewno wyjść? - + PokerTH - Close Table? PokerTH - Zamknąć stół? - - + + Kick Wyrzuć - - + + Do you want to kick <b>%1</b><br>from this game? Czy chcesz wyrzucić gracza %1 z tej gry? - - - - + + + + <b>%1</b> secs left pozostało <b>%1</b> sekund - + vote głos - + votes głosy(-ów) - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Gracz <b>%1</b> zebrał <b>%2</b> %3<br>przeciwko sobie. <b>%4</b> głosów potrzebnych do wyrzucenia. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Zebrałeś <b>%1</b> %2 przeciwko sobie.<br><b>%3</b> głosów potrzebnych do wyrzucenia. - - + + Chat is only available to registered players. Chat jest dostępny dla zarejestrowanych graczy. + + + Spectators + Oglądający + internetGameLoginDialog @@ -4496,54 +4557,65 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Ładuj Server-Profile-File Error - - - - Could not load server-profiles-file: - Błąd ładowania server-profiles-file: + Błąd ładowania listy serwerów z pliku: - + + + + + Could not load server-profiles-file: +%1 + Błąd ładowania listy serwerów z pliku: %1 + + + + Save Server Profile Error Zapisz Server Profile Error - + Read Server-Profile List Error Wczytaj Server-Profile List Error - + Could not read server-profiles list - Błąd wczytywania server-profil list + Błąd wczytywania listy serwerów z pliku - - + + Save Server-Profile-File Error Zapisz Server-Profile-File Error - - + + Could not save server-profiles-file: - - Błąd zapisu server-profiles-file: - +%1 + Błąd zapisywania listy serwerów do pliku: +%1 - + Could not save server-profiles-file: + + Błąd zapisywania listy serwerów do pliku: + + + A profile with the name: %1 already exists. Would you like to overwrite ? Profil o nazwie %1 już egsystuje. @@ -4611,12 +4683,12 @@ Chzesz go prezepisać ? manualBlindsOrderDialogImpl - + Manual Blinds Order Własna konfiguracja ciemnych - + You cannot set more than 30 manual blinds. Nie możesz ustawić więcej niż 30 wartości ciemnych @@ -4661,7 +4733,7 @@ Chzesz go prezepisać ? - + Game Speed: Szybkość gry: @@ -4685,7 +4757,7 @@ Chzesz go prezepisać ? - + Use saved blinds settings Używaj zapisanych ustawień ciemnych @@ -4696,7 +4768,7 @@ Chzesz go prezepisać ? - + Change blinds settings ... Zmień ustawienia ciemnych ... @@ -4743,36 +4815,36 @@ Chzesz go prezepisać ? selectAvatarDialogImpl - - - + + + Avatar File Error Błędny plik avatara - + Please select an avatar from the list! Proszę wybrać avatar z listy! - + Select external avatar picture Wybierz avatar z pliku - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Avatar jest za duży. (maksymalnie 30 KB) Proszę wybrać mniejsze! - + Images (*.png *.jpg *.gif) Pliki graficzne (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! Wybrany avatar nie istnieje! @@ -4788,26 +4860,26 @@ Proszę wybrać inny! Ustawienia - - + + Play sound effects Włącz efekty dźwiękowe - - + + Sound Volume: Głośność: - - + + 10 10 - - + + Show flip-card animation Pokaż animacje kart @@ -4834,14 +4906,14 @@ p, li { white-space: pre-wrap; } Domyślna - - + + Show buttons for small blind and big blind Pokaż żetony ciemnych - - + + Show fade-out animation for non-winning cards Pokaż przegrywające karty jako przyciemnione @@ -4850,13 +4922,13 @@ p, li { white-space: pre-wrap; } Pokaż wiadomośći w pasku statusu - + Show left toolbox Pokaż lewy zestaw narzędzi - - + + Play blind raise notification przy możliwym przypadkowym sprawdzeniu podbicia @@ -4872,121 +4944,121 @@ p, li { white-space: pre-wrap; } Pokaż okno informacyjne przy starcie - + Show right toolbox Pokaż prawy zestaw narzędzi - - + + Show game settings dialog on every new game Zawsze pytaj o ustawienia przed rozpoczęciem gry - - + + Number of players: Liczba graczy: - - + + Game Speed: Szybkość gry: - - - - + + + + Start Cash: Początkowe żetony: - - + + Disable splashscreen on startup Nie pokazuj ekranu powitalnego przy starcie - - + + Game Table Stół - - + + Card Deck Karty - - + + Card Back Rewers kart - - + + Use card back from card style Użyj domyślnego rewersu talii kart - - + + Use custom card back picture: Użyj innego rewersu kart: - - + + Pause between hands (press "start" button to go on) Przerwa między rozdaniami ("start" rozpoczyna nowe rozdanie) - - + + Server Password: - Hasło serwera: + Hasło serwera: - - - - + + + + Server Port: Port serwera: - - - - + + + + Use SCTP Używaj SCTP - - - - + + + + Use IPv6 Używaj IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://pl.wikipedia.org/wiki/IPv6">Co to jest?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://pl.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Co to jest?</a> @@ -4995,8 +5067,8 @@ p, li { white-space: pre-wrap; } Szybkość przeciwników komputerowych: - - + + Maximum number of players: Maksymalna liczba graczy: @@ -5009,44 +5081,44 @@ p, li { white-space: pre-wrap; } Nicki graczy - - + + Computer Engine Przeciwnicy komputerowi - - + + Opponent 6: Przeciwnik 6: - - + + Opponent 5: Przeciwnik 5: - - + + Opponent 4: Przeciwnik 4: - - + + Opponent 3: Przeciwnik 3: - - + + Opponent 2: Przeciwnik 2: - - + + Opponent 1: Przeciwnik 1: @@ -5061,13 +5133,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Wskazówka: Najlepiej używać obrazka z propocjami </span><br><span style=" font-weight:600; font-style:italic;">szerokość=50, wysokość=50.</span></p></body></html> - + Human Player: Gracz: - - + + Enable/Disable Logging Włącz zapisywanie historii @@ -5080,61 +5152,61 @@ p, li { white-space: pre-wrap; } dzień/dni - - + + Log File Directory: Zapisz pliki w: - - + + Write log after every: Zapisuj po: - - + + Store log files for: Przechowuj pliki przez: - - + + action (high frequent disc access) każdej akcji (bardzo częste odwołania do dysku) - - + + hand (medium disc access) każdym rozdaniu (przeciętne odwołania do dysku) - - + + game (low disc access) każdej grze (rzadkie odwołania do dysku) - + Log Messages Historia rozdań - + Local Game Settings Ustawienia gier lokalnych - + Network Game Settings Ustawienia gier sieciowych - - + + Show own cards only on mouse click Pokaż swoje karty tylko przy kliknięciu myszą @@ -5145,18 +5217,18 @@ p, li { white-space: pre-wrap; } - + Sound Dźwięki - - + + Network Server Settings Ustawienia gier siecowych - + Internet Game Settings Ustawienia gier online @@ -5165,14 +5237,14 @@ p, li { white-space: pre-wrap; } Ustawienia serwera gier internetowych - - + + Server Address: Adres serwera: - - + + Use password for private game: Używaj tego hasła do gier prywatnych: @@ -5193,113 +5265,113 @@ p, li { white-space: pre-wrap; } Odwrotna kolejność klawiszy F (F1-F3) - - - - + + + + First small blind: Pierwsza mała ciemna: - - - - + + + + Raise blinds: Zwiększaj ciemne: - - - - - - - - + + + + + + + + Every: co: - - - - + + + + hands rozdań - - - - + + + + minutes minut - - - - + + + + Raise mode: Sposób zwiększania ciemnych: - - - - + + + + Always double blinds Podwajaj wartość ciemnych - - - - + + + + Manual blinds order: Własna konfiguracja: - - - - + + + + Edit ... Edytuj ... - - + + Language: Język: - + Note: Best quality with image ratio like width=48, height=76. Informacja: najlepsza jakość przy obrazku o wielkości: szerokość = 48, wysokość = 76. - - + + Sound Categories Odtwarzaj dźwięki - - + + Play game actions sounds like "check", "call", "raise" przy akcjach takich jak czekanie, sprawdzanie, podbijanie - - + + Play lobby chat notifications chatu gier online - - + + Play network/internet game notifications like "player joined the game" dotyczące gry sieciowej np. "gracz dołączył do gry" @@ -5308,7 +5380,7 @@ p, li { white-space: pre-wrap; } Włącz chat gier internetowych (serwer IRC) - + Player Nicks/Avatars Nicki graczy/avatary @@ -5323,19 +5395,19 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><span style=" font-style:italic;">Wskazówka: Zostaną użyte domyślne </span><span style=" font-weight:600; font-style:italic;">ustawienia gry </span><span style=" font-style:italic;"> takie jak "Maksymalna liczba graczy", "Gotówka na starcie" i "Małe ślepe" są używane </span><span style=" font-weight:600; font-style:italic;">z Ustawień gier sieciowych.</span></p></body></html> - + Reverse order of F-Keys (F1 - F4) Odwróć kolejność klawiszy F1 - F4 - - + + Network / Internet Game Gra sieciowa - - + + Switch keyboard focus to bet-input-field if it's your turn Przejdź do pola wprowadzania stawki na początku tury @@ -5344,33 +5416,33 @@ p, li { white-space: pre-wrap; } Hasło kanału: - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Czas na ruch: - - - - + + + + s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5381,7 +5453,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Informacja: Domyślne </span><span style=" font-weight:600; font-style:italic;">Ustawienia Gry</span><span style=" font-style:italic;"> takie jak "Maksymalna liczba graczy", "Początkowe żetony" i "Mała ciemna" zostaną wzięte </span><span style=" font-weight:600; font-style:italic;">z Ustawień Gier Sieciowych.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5392,36 +5464,42 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Informacja: Najlepiej wyglądają avatary o proporcjach </span><span style=" font-weight:600; font-style:italic;">szerokość=50, wysokość=50.</span></p></body></html> - - + + Automatic Server Configuration URL Automatyczna lista serwerów - - + + Serverlist Address: Adres listy serwerów: - - + + Manual Server Configuration Ustawienia własne - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Informacja: Domyślne ustawienia gry takie jak "Maksymalna liczba graczy", "Początkowe żetony" oraz "Mała ciemna" zostaną wzięte z ustawień gry sieciowej. - + + + Allow spectators to watch the game + Pozwól innym oglądać rozgrywkę + + + (This nick will also be used for the online game login) (ten nick będzie również użyty w grach online) - - + + Day(s) dni @@ -5450,8 +5528,8 @@ p, li { white-space: pre-wrap; } Nicki/Avatary - - + + Show cards chance monitor Pokaż szanse układów kart @@ -5460,70 +5538,88 @@ p, li { white-space: pre-wrap; } Hasło: - - + + Avatar Server: Serwer avatarów: - + Style Skórka - + Factory Settings Ustawienia domyślne - - + + + Common + Ogólne + + + + Don't translate poker strings like check, call, raise from game table style Nie używaj tłumaczeń wyrażeń pokerowych takich jak check, call, raise zawartych w skórce stołu - - + + Show country flag in the corner of avatar Pokaż flagę narodową w rogu avatara - - + + Activate the "accidentally call after big raise" blocker Włącz blokadę przypadkowego sprawdzenia dużego podbicia - - - - + + + Do not hide avatars of players which are on the ignore list + Pokaż avatary ignorowanych graczy + + + + + Disable emoticons in the chat + Wyłącz emotikony w chacie + + + + + + Add ... Dodaj... - - - - + + + + Remove Usuń - - - - + + + + Preview - Information: Podgląd - informacje: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5536,31 +5632,31 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Pobierz nowe skórki stołu...</span></a></p></body></html> - - - - + + + + Description Opis - - - - + + + + Maintainer Opiekun - - - + + + State Stan - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5573,7 +5669,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Pobierz nowe skórki kart...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5592,96 +5688,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Informacja: Najlepszą jakość dają obrazki o proporcjach </span><span style=" font-weight:600; font-style:italic;">szerokość=48, wysokość=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Przerwa między rękami: - - + + Server Serwer - - + + Game Gra - - + + Default game name: Domyślna nazwa gry: - - + + Default game type: Domyślny typ gry: - - + + Standard Standardowa - - + + Registered players only Tylko dla zarejestrowanych - - + + Invited players only Tylko dla zaproszonych - - + + Ranking game Gra rankingowa - - + + Show lobby chat Pokaż chat - - + + Automatically leave the table after the game finished Opuść stół automatycznie po zakończeniu gry - - + + Ignored Players Ignorowani gracze - - + + Player Gracz - - + + Remove Player Usuń gracza - + OK OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5694,19 +5790,19 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Gracz:<br /><span style=" font-style:italic;">(Ten nick zostanie też użyty jako login dla gier online)</span></p></body></html> - - + + Opponent 7: Przeciwnik 7: - - + + Opponent 8: Przeciwnik 8: - + Note: Best avatar quality with image ratio like width=50, height=50. Informacja: najlepsza jakość przy obrazku o wielkości: szerokość = 50, wysokość = 50. @@ -5731,14 +5827,14 @@ p, li { white-space: pre-wrap; } Usuń - - + + Reset all settings to default ... Przywróć ustawienia domyślne ... - - + + Note: You can not reset all settings to default during a running game! Informacja: nie można przywrócić ustawień fabrycznych podczas rozgrywania gry! @@ -5751,8 +5847,8 @@ p, li { white-space: pre-wrap; } Przeciwnik 1: {10:?} - - + + Opponent 9: Przeciwnik 9: @@ -5760,38 +5856,38 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Błąd w ustawieniach - + Select your flipside picture Wybierz własny obrazek - + Open Directory Otwórz folder - + Images (*.png *.jpg *.gif) Pliki graficzne (*.png *.jpg *.gif)Zjęcia (*.png *.jpg *.gif) - - + + Blinds Error Błąd ustawień ciemnych - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5884,12 +5980,12 @@ możliwą wartość. Turecki - + Language Changed Język został zmieniony - + You have changed application language to %1. Please restart PokerTH to load new language! Zmieniłeś język na %1. @@ -5941,15 +6037,15 @@ Proszę ponownie uruchomić PokerH aby wczytać nowy język! Tamilski - + The entered flipside picture doesn't exist. Please enter an valid picture! Wybrany własny obrazek talii nie istnieje. Proszę wybrać inny obrazek! - - + + The log file directory doesn't exist. Please select an valid directory! Wybrany folder dla plików logu nie istnieje. @@ -5963,7 +6059,7 @@ Proszę wybrać inny folder! Galician - + Galicyjski @@ -5973,155 +6069,155 @@ Proszę wybrać inny folder! Scottish Gaelic - + Szkocki celtycki Vietnamese - + Wietnamski - + The opponent names are not unique. Please choose different names for each Opponent! Nazwy przeciwników nie są unikatowe. Proszę wybrać różne nazwy! - + The entered server list address is not a valid URL. Please enter a valid server list address! Wprowadzono niepoprawny adres URL listy serwerów. Proszę wprowadzić prawidłowy adres URL! - + Settings Information Informacje dotyczące ustawień - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Zmieniłeś katalog z plikami logów. Proszę ponownie uruchomić PokerTH aby użyć nowego katalogu! - - + + Maintainer Name Opiekun - - + + Maintainer EMail E-mail opiekuna - - + + Create Date Data utworzenia - + Windows Behaviour Rozmiar okna - + scaleable dowolny - + fixed stały - + Minimum Size Rozmiar minimalny - + Maximum Size Rozmiar maksymalny - + Fixed Size Stały rozmiar - + State Stan - + Please select your game table style Wybierz skórkę stołu - + PokerTH game table styles (*.xml) Skórka stołu PokerTH (*.xml) - + Game Table Style Error Błąd skórki stołu - + Selected game table style file is already in the list. Please select another one to add! Wybrana skórka stołu jest już na liście. Proszę wybierz inną aby ją dodać! - + Game Table Style File Error Błąd pliku skórki stołu - + Could not load game table style file correctly. Style will not be placed into list! Nie udało się wczytać skórki stołu z tego pliku. Skórka nie zostanie dodana do listy! - + Please select your card deck style Wybierz skórki kart - + PokerTH card deck styles (*.xml) Skórka kart PokerTH (*.xml) - + Card Deck Style Error Błąd skórki kart - + Selected card deck style file is already in the list. Please select another one to add! Wybrana skórka kart jest już na liście. Proszę wybierz inną aby ją dodać! - + Card Deck Style File Error Błąd pliku skórki kart - + Could not load card deck style file correctly. Style will not be placed into list! Nie udało się wczytać skórki kart z tego pliku. @@ -6160,12 +6256,12 @@ Skórka nie zostanie dodana do listy! Plik logu PokerTH w formacie SQL (*.pdb) - + PokerTH - Settings PokerTH - ustawienia - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Uwaga: Zamierzasz usunąc wszystkie ustawienia i zamknąć PokerTH! @@ -6231,12 +6327,12 @@ Czy na pewno chcesz przywrócić ustawienia domyślne? startNetworkGameDialogImpl - + Server Error Błąd serwera - + You should not kick yourself from this game! Nie powinieneś wyrzucać sam siebie z tej gry! @@ -6421,106 +6517,106 @@ Please choose another one. Proszę wybrierz inny nick. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Błąd sieciowy - + Server address was not set. Adres serwera nie został ustawiony. - + An invalid port was set (ports 0-1023 are not allowed). Ustawiony został niepoprawny port (porty 0-1023 nie są dozwolone). - + Could not create a socket for TCP communication. Nie udało się utworzyć gniazda sieciowego TCP. - + Could not set the IP address. Nie udało się ustawić adresu IP. - + Could not set the port for this type of address. Nie udało się ustawić portu dla tego typu adresu. - + The server name could not be resolved. Nie udało się znaleźć nazwy serwera. - + Bind failed - please choose a different port. Błąd - proszę wybrać inny port. - + Internal network error: "listen" failed. Wewnętrzny błąd sieciowy: "listen" nie wykonało się poprawnie. - + Server execution was terminated. Serwer został zatrzymany. - + Could not connect to the server. Nie udało się polączyć z serwerem. - + Connection timed out. Please check the server address. @@ -6531,12 +6627,12 @@ Proszę sprawdź adres serwera. Jeśli serwer jest w sieci z routerem NAT, to upewnij się, że "port forwarding" został poprawnie skonfigurowany. - + Internal network error: "select" failed. Wewnętrzny błąd sieciowy: "select" nie wykonało się poprawnie. - + Internal network error: "send" failed. Wewnętrzny błąd sieciowy: "send" nie wykonało się poprawnie. @@ -6545,26 +6641,26 @@ Jeśli serwer jest w sieci z routerem NAT, to upewnij się, że "port forwa Połączenie zostało zerwane przez serwer. - + Internal network error: Duplicate TCP connection. Wewnętrzny błąd sieciowy: zdublowane połączenie TCP. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Została wyslana niepoprawna informacja sieciowa. Proszę upewnij się, że wszyscy gracze używają tej samej wersji PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Wewnętrzny błąd stanu. Proszę upewnij się, że wszyscy gracze używają tej samej wersji PokerTH. - + Invalid server list URL. Please correct the address in the settings. Niepoprawny adres URL listy serwerów. @@ -6583,95 +6679,95 @@ Please make sure that the server list URL is correct. Proszę upewnij się, że adres URL listy serwerów jest poprawny. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. Zawartość listy serwerów zawiera niepoprawne dane. Jeśli używasz własnej listy serwerów - proszę upewnij się, że jej format jest poprawny. - + Could not unzip the PokerTH internet server list. Nie udało się rozpakować listy serwerów. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Nie udało się pobrać listy serwerów. Proszę upewnij się, że jesteś podłączony do internetu. - + Could not open the target file when downloading the server list. Nie udało się utworzyć pliku docelowego podczas pobierania listy serwerów. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Serwer PokerTH nie obsługuje wersji gry, której używasz.<br>Proszę odwiedzić stronę <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> i zainstalować najnowszą wersję. - + Sorry, this server is already full. Niestety ten serwer jest już pełny. - + Invalid login. Please check your username and password. Logowanie nie powiodło się. Proszę sprawdź nazwę użytkownika i hasło. - + Your account is blocked indefinitely. Twoje konto jest zablokowane. - + You cannot login at this time. Please try again in a few seconds. Nie udało się zalogować. Proszę spróbuj ponownie za chwilę. - + You cannot join this game, because another player in that game has your network address. Nie możesz dołączyć do tej gry, ponieważ inny gracz w tej grze ma ten sam IP. - + Your connection to the server is very slow, the game had to start without you. Twoje połączenie z serwerem jest bardzo wolne, gra wystartowała bez Ciebie. - + This game is of type invite-only. You cannot join this game without being invited. Ta gra jest tylko dla zaproszonych. Nie możesz dołączyć do gry bez zaproszenia. - + Invalid password when joining the game. Please reenter the password and try again. Niepoprawne hasło. Proszę wpisz hasło jeszcze raz. - + The avatar report was accepted by the server. Thank you. Zgłoszenie dotyczące avatara zostało zarejestrowane. Dziękujemy. - + This avatar was already reported by another player. Ten avatar został wcześniej zgłoszony przez innego gracza. - + An error occurred while reporting the avatar. Wystąpił błąd podczas zgłaszania avatara. - + The password is too long. Please choose another one. Hasło jest za długie. Proszę wprowadź inne hasło. @@ -6686,223 +6782,223 @@ Proszę wybrać inny nick. Nick gracza jest za krótki, za długi lub niepoprawny. Proszę wprowadź inny nick. - + Rejoin possible! Można dołączyć ponownie do poprzedniej gry! - + There is an existing session with a previous game. Obecnie rozgrywana jest gra w której brałeś udział przed rozłączeniem. - + Do you want to rejoin this game? Czy chcesz dołączyć do tej gry? - - + + Start Network Game Utwórz grę sieciową - + The connection to the server was lost. Połączenie z serwerem zostało utracone. - + The game name is either too short or too long. Please choose another one. Nazwa gry jest za długa albo za krótka. Proszę wprowadź inną. - + The game could not be found. Gra nie została znaleziona. - + The chat text is invalid. Tekst rozmowy jest niepoprawny. - + The server referred to an unknown player. Aborting. Nieznany gracz na serwerze. Przerwanie gry. - + Internal error: The current player could not be found. Błąd wewnętrzny: Aktualny gracz nie mógł zostać odnależniony. - + Internal error: The current player is not active. Błąd wewnętrzny: Aktualny gracz nie jest aktywny. - + You were kicked from the server. Zostałeś wyrzucony z serwera. - + You were temporarily banned from the server. Zostałeś tymczasowo zbanowany na serwerze. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Połączenie z serwerem zostało przerwane z powodu nieaktywności. Możesz jak najbardziej połączyć się jeszcze raz! - + The client player count is invalid. Niewłaściwa liczba graczy. - + Too many manual blinds were set. Please reconfigure the manual blinds. Za dużo ustawionych własnych ciemnych. Proszę wprowadź poprawne wartości. - + An invalid avatar file was configured. Please choose a different avatar. Został ustawiony nieoprawny plik avataru. Proszę wybrać inny. - + The selected avatar file is too large. Please choose a different avatar. Wybrany avatar jest za duży. Proszę wybrać inny. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Wystąpił błąd z wbudowanym avatarem. Proszę poinformuj o tym administratora na chacie gier online. - + Could not start game: Synchronization failed. Nie udało się rozpoczać gry. Synchronizacja zakończona niepowodzeniem. - + The server is down for maintenance. Please try again later. Serwer jest w tej chwili nieosiągalny ze względu na konserwacje. Proszę spróbować później. - + An internal error occured. Wystąpił błąd wewnętrzny. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Informacja sieciowa - + You were kicked from the game. Zostałeś wyrzucony z serwera. - + Sorry, this game is already full. Niestety ten serwer jest w tej chwili pełny. - + Unable to join - the server has already started the game. Nie możesz dołączyć do tej gry - rozgrywka już się rozpoczęła. - + Your admin state timed out due to inactivity. Feel free to create a new game! Z powodu nieaktywności utraciłeś prawa właściciela. Jeśli chcesz, możesz założyć nową grę! - + You cannot join this type of game as guest. Nie możesz dołączyć do gry tego typu jako gość. - + The settings are invalid for this type of game. Ustawienia są niepoprawne dla tego typu gry. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Nowa wersja PokerTH jest dostępna.<br>Proszę odwiedzić stronę <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> i zainstalować najnowszą wersję. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Ta wersja beta PokerTH jest przestarzała.<br>Proszę odwiedzić stronę <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> i zainstalować najnowszą wersję. - - + + Server Message Komunikat serwera - + The game name report was accepted by the server. Thank you. Zgłoszenie nieodpowiedniej nazwy gry zostało przyjęte. Dziękujemy. - + This game name was already reported by another player. Ta nazwa gra została już uprzednio zgłoszona przez innego gracza. - + An error occurred while reporting the game name. Wystąpił błąd podczas zgłaszania nieodpowiedniej nazwy gry. - - - The game was closed. - - - The game could not be closed. - + The game was closed. + Gra została zakończona. - The player was kicked and banned permanently. - + The game could not be closed. + Gra nie mogła zostać zakończona. - The player was kicked, but could not be banned because it was a guest player. - + The player was kicked and banned permanently. + Gracz został wyrzucony i zbanowany. - The player was kicked, but could not be banned, -because the nick could not be found in the database - + The player was kicked, but could not be banned because it was a guest player. + Gracz został wyrzucony, ale nie mógł zostać zbanowany, ponieważ gra jako gość. + The player was kicked, but could not be banned, +because the nick could not be found in the database + Gracz został wyrzucony, ale nie mógł zostać zbanowany, ponieważ nie znaleziono go w bazie danych graczy + + + The player could not be found. - + Gracz nie został znaleziony. diff --git a/ts/pokerth_ptbr.ts b/ts/pokerth_ptbr.ts index 2067196f..36960197 100644 --- a/ts/pokerth_ptbr.ts +++ b/ts/pokerth_ptbr.ts @@ -1,7 +1,6 @@ -UTF-8 CardDeckStyleReader @@ -2028,7 +2027,7 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:18px; font-weight:400; font-style:normal;"> @@ -2043,7 +2042,41 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">Leandro "maxputo" Fregnani - maxputo@gmail.com</span></p></td></tr></table></body></html> + + + Third party libs + Parte da Livraria de Terceiros @@ -2456,6 +2489,10 @@ Por favor escolha outro! s s + + Allow spectators to watch the game + Permitir espectadores assistirem o jogo + createInternetGameDialogImpl @@ -2631,7 +2668,7 @@ Por favor escolha outro! Players - Jogadores + Jogadores Kick Player @@ -2791,6 +2828,10 @@ p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:18px; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + Spectators + Espectadores + gameLobbyDialogImpl @@ -4023,24 +4064,37 @@ Sinta se avontade para convidar outro jogador clicando no apelido na lista de jo Admin action ... - + Ação de Admin ... Total kickban - + Total de ChutesBan Close game - + Fechar Jogo Are you sure you want to close the game: "%1"? - + Você tem certeza que deseja fechar o jogo: +"%1"? Are you sure you want to total kickban the player: "%1"? - + Você tem certeza que deseja chutarban o total de jogadores: "%1"? + + + Spectate + Assistir + + + Players (%1) + Jogadores (%1) + + + Spectators (%1) + Espectadores (%1) @@ -4734,6 +4788,10 @@ Se você está longe temporariamente, você pode usar o "longe" na cai PokerTH %1 PokerTH %1 + + Spectators + Espectadores + internetGameLoginDialog @@ -4952,6 +5010,18 @@ Would you like to overwrite ? Um perfil com este nome: %1 já existe. Você gostaria de substituir ? + + Could not load server-profiles-file: +%1 + Não foi possivel carregar o arquivo de informações do servidor: +%1 + + + Could not save server-profiles-file: +%1 + Não foi possivel salvar o arquivo de informações: +%1 + manualBlindsOrderDialog @@ -5434,7 +5504,7 @@ p, li { white-space: pre-wrap; }(new line) Server Password: - Senha do Servidor: + Senha do Servidor: Server Port: @@ -5953,6 +6023,22 @@ p, li { white-space: pre-wrap; } OK OK + + Common + Comum + + + Do not hide avatars of players which are on the ignore list + Não esconder avatares de jogadores que estão em sua lista de ingnorados + + + Disable emoticons in the chat + Desativar emoticons no chat + + + Allow spectators to watch the game + Permitir espectadores a assistirem o jogo + settingsDialogImpl @@ -6312,15 +6398,15 @@ Voce tem certeza que deseja resetar para as configurações padrão? Scottish Gaelic - + Escoces Gaelico Galician - + Galego Vietnamese - + Vietnamita @@ -6860,28 +6946,29 @@ Por favor escolha um nome diferente. The game was closed. - + O jogo foi fechado. The game could not be closed. - + O jogo não pode ser fechado. The player was kicked and banned permanently. - + O jogador foi chutado e banido permanentemente. The player was kicked, but could not be banned because it was a guest player. - + O jogador foi chutado, mas não pode ser banido porque é um jogador convidado. The player was kicked, but could not be banned, because the nick could not be found in the database - + O jogador foi chutado, mas não pode ser banido, +porque o apelido não pode ser encontrado na data base The player could not be found. - + O jogador não pode ser encontrado. diff --git a/ts/pokerth_ptpt.ts b/ts/pokerth_ptpt.ts index 853a4fcd..11ee9149 100644 --- a/ts/pokerth_ptpt.ts +++ b/ts/pokerth_ptpt.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -212,22 +211,22 @@ Por favor, contacte o criador do mesa via %4. Erro no estilo da mesa de jogo - desatualizado - + Everything OK! Tudo correto! - + Some pictures are missing, please contact style maintainer for this issue. Faltam algumas imagens, contacte o programador deste estilo e reporte este assunto. - + Some style fields are missing, please contact style maintainer for this issue. Faltam alguns campos do estilo,contacte o programador deste estilo e reporte este assunto. - + This style is outdated, please contact style maintainer for this issue. Este estilo está desatualizado, contacte o programador deste estilo e reporte este assunto. @@ -305,52 +304,52 @@ Por favor, selecione uma mesa e tente novamente! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML Exportar o ficheiro de registo PokerTH para HTML - + PokerTH HTML log (*.html) Registo PokerTH HTML (*.html) - + Export PokerTH log file to plain text Exportar o ficheiro de registo PokerTH para texto - + PokerTH plain text log (*.txt) Registo em texto PokerTH (*.log) - + Save PokerTH log file Gravar ficheiro de registo - + PokerTH SQL log (*.pdb) Registo SQL do Poker Th (*.pdb) @@ -397,13 +396,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -432,18 +431,18 @@ Please verify that you are uploading a valid PokerTH log file. Denunciar "avatar" impróprio - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? A partir de agora, não receberá mais mensagens de "chat" ou convites deste utilizador.<br>Pretende colocar o jogador <b>%1</b> na lista de ignorados? - - + + PokerTH - Question PokerTH - Pergunta - + Are you sure you want to report the avatar of "%1" as inappropriate? Tem a certeza que quer denunciar o "avatar" de "%1" como impróprio? @@ -472,8 +471,8 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About Sobre @@ -538,17 +537,39 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project Projeto + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -596,7 +617,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - desenho inicial dos gráficos da interface</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -605,7 +625,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -614,16 +634,6 @@ p, li { white-space: pre-wrap; } <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Nome do tradutor- endereço de correio</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -843,8 +853,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - pela moderação no fórum e pela organização dos erros e funcionalidades</p></td></tr></table></body></html> - - + + Translation Tradução @@ -867,8 +877,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Sérgio Marques - smarquespt@gmail.com</p></td></tr></table></body></html> - - + + Thanks to Obrigado a @@ -925,19 +935,25 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - pela moderação do fórum e pela organização dos erros e funcionalidades - - + + License Licença - + + + Third party libs + + + + Close Fechar - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -946,7 +962,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1198,12 +1214,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order "Blinds" manuais - + You cannot set more than 30 manual blinds. Não pode definir mais de 30 "blinds" manuais. @@ -1358,7 +1374,7 @@ Por favor, escolha outro! - + Default game name: Nome de jogo padrão: @@ -1393,75 +1409,81 @@ Por favor, escolha outro! Jogo de classificação - - + + Maximum number of players: Número máximo de jogadores: - - + + Start Cash: Dinheiro inicial: - - + + $ $ - + Blinds "Blinds" - + Use saved blinds settings Utilizar definições de "blinds" gravadas - + Change blinds settings ... Alterar definições de "blinds"... - + Timeout for player action: Intervalo para ação do jogador: - - + + s s - - + + Password: Senha: - + Delay between hands: Tempo de espera entre mãos: - - + + + Allow spectators to watch the game + + + + + Create Game Criar jogo - + Cancel Cancelar @@ -1574,56 +1596,68 @@ Por favor, escolha outro! Sala de jogo na internet - - + + Game Info Info sobre o jogo - - + + Game type: Tipo de jogo: - - + + Connected Players Jogadores ligados - - + + search for player ... pesquisar pelo jogador... - - + + 5 - Show open & non-full & ranking games 5 Mostrar abertos & não cheios & jogos com classificação - - + + + Players + Jogadores + + + + + Spectators + + + + + Start Cash: Dinheiro inicial: - - + + First small blind: Primeira "small blind": - - + + Blinds raise interval: Intervalo para aumento de "blinds": - - + + Blinds raise mode: Modo de aumento de "blinds": @@ -1633,7 +1667,7 @@ Por favor, escolha outro! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1646,68 +1680,66 @@ p, li { white-space: pre-wrap; } Intervalo para ação do jogador (seg): - - + + Fill up with computer opponents Preencher com computadores como adversários - - + + &Start Game &Iniciar jogo - - + + &Kick Player &Expulsar jogador - - + + Sort alphabetically Ordenar alfabeticamente - - + + Sort by country Ordenar por país - - + + Display idle players Exibir jogadores inativos - - + + Manual blinds list: Lista de "blind" manuais: - - + + &Leave Game &Sair do jogo - - Join &any game - Entr&ar em qualquer jogo + Entr&ar em qualquer jogo - - + + &Create Game &Criar jogo - - + + &Join Game E&ntrar no jogo @@ -1730,44 +1762,44 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Clique aqui para ver as classificações "on-line"</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - sem filtro de jogos - - + + 1 - Show open games 1 - Exibir jogos abertos - - + + 2 - Show open & non-full games 2 - Exibir jogos abertos & não completos - - + + 3 - Show open & non-full & non-private games 3 - Exibir jogos abertos & não completos & públicos - - + + 4 - Show open & non-full & private games 3 - Exibir jogos abertos & não completos & privados - - + + Timing: - - + + Lobby-Chat Sala de "chat" @@ -1792,46 +1824,46 @@ p, li { white-space: pre-wrap; } Iniciando jogo. Por favor, aguarde... - + Joining a private Game Entrar num jogo privado - + You are about to join a private game. Please enter the password! Está prestes a entrar num jogo privado. Indique a sua senha! - + open aberto - - - - + + + + Game Info Info sobre o jogo - - - + + + Game Jogo - - - + + + Players Jogadores - - - + + + State Estado @@ -1840,167 +1872,177 @@ p, li { white-space: pre-wrap; } R - - - + + + P P - - - + + + Available Players Jogadores disponíveis - + Invite player Convidar jogador - + Ignore player Ignorar jogador - + Player infos ... Informações do jogador... - - - + + + Standard Padrão - - - + + + Registered players only Só para jogadores registados - - - + + + Invited players only Só para jogadores convidados - - - + + + Ranking game Jogo de classificação - Connected players - max. %1 - Jogadores ligados - máx. %1 + Jogadores ligados - máx. %1 - - - + + + T T - + Report inappropriate game name - - - + + + sec (action) - - - + + + sec (hand delay) - - Connected players - Max. %1 - Jogadores ligados - máx. %1 + Jogadores ligados - máx. %1 - + running a decorrer - - + + running games: %1 jogos a decorrer: %1 - - + + open games: %1 jogos abertos: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 Convidar %1 - + Ignore %1 Ignorar %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 foi convidado para %2 por %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 rejeitou o convite para %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 não pode entrar em %2. De momento, está ocupado.</span> - - + + The game will start in<br><b>%1</b> seconds. O jogo vai iniciar dentro de <br><b>%1</b> segundos. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Entrou num jogo disponível por convite. Sinta-se à vontade para convidar outros jogadores através da lista dos "nicks" disponíveis. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Foi convidado por <b>%2</b> para o jogo <b>%1</b>.<br> Pretende entra neste jogo? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? A partir de agora, não receberá mais mensagens de "chat" ou convites deste utilizador.<br>Pretende colocar o jogador <b>%1</b> na lista de ignorados? - - + + connected players: %1 Jogadores ligados: %1 @@ -2015,1343 +2057,1346 @@ Sinta-se à vontade para convidar outros jogadores através da lista dos "n - - - + + Spectate + + + + + + Time - - + + Show player stats Mostrar as estatisticas do jogador - - + + Admin action ... - + Total kickban - + Close game - - Connected players - Jogadores ligados + Jogadores ligados - + hands mãos - + minutes minutos - + double blinds duplicar "blinds" - + manual blinds order "blinds" manuais - + Server Error Erro do servidor - + You should not kick yourself from this game! Você não se pode expulsar deste jogo! - + search for player ... pesquisar pelo jogador... - + Chat is only available to registered players. O "chat" só está disponível para jogadores registados. - + Invite player ... Convidar jogador... - + Ignore player ... Ignorar jogador... - + %1 is playing in "%2". %1 está a jogar em "%2". - + %1 is not playing at the moment. De momento, %1 não está a jogar. - - + + PokerTH - Info Message Poket TH - Informações - - - - + + + + PokerTH - Question PokerTH - Pergunta - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Lituanês - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3364,273 +3409,273 @@ Sinta-se à vontade para convidar outros jogadores através da lista dos "n PokerTH 0.6-beta - The Open-Source Texas Holdem Engine - + Hands Mãos - + Chat "Chat" - + Save Gravar - + Log Registo - + Away Ausente - + Manual Action (default) Ação manual (padrão) - + Auto-Check / Auto-Fold "Auto-Check" / "Auto-Fold" - + Auto-Check / Auto-Call-Any "Auto-Check" / "Auto-Call-Any" - + Speed: Velocidade: - - + + Start Local Game ... Iniciar jogo local... - - + + Ctrl+N Ctrl+N - - + + Quit Sair - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... Sobre PokerTH... - - + + Settings ... Definições... - - + + Create Network Game ... Criar jogo em rede... - - + + Ctrl+O Ctrl+O - - + + Join Network Game ... Entrar no jogo em rede... - - + + Ctrl+J Ctrl+J - - - + + + Fullscreen Ecrã completo - - + + Ctrl+F Ctrl+F - - + + Show/Hide Chat Window Mostrar/ocultar janela do "chat" - - + + Ctrl+T Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window Mostrar/ocultar janela de mãos - - + + Ctrl+H Ctrl+H - - + + Show/Hide Log Window Mostrar/ocultar janela de registos - - + + Ctrl+L Ctrl+L - - + + Internet Game ... Jogo na internet... - - + + Ctrl+I Ctrl+I - - + + Show/Hide Away Window Mostrar/ocultar janela de ausência - - + + Ctrl+A Ctrl+A - + Kick Expulsar - + Vote Timeout: Intervalo de votação: - + Yes Sim - + No Não - + Player info - + Chance Hipóteses - + Configure PokerTH ... Configurar PokerTH... - - + + Close Fechar - - + + Ctrl+X Ctrl+X - + Vote started by: Votação iniciada por: - - + + Show/Hide Chance Window Mostrar/ocultar janela de hipóteses - - + + Ctrl+C Ctrl+C - + &View &Ver - + &Settings &Definições - + Shortcut: <Shift> Atalho <Shift> - + Settings Definições - + Configure PokerTH @@ -3638,97 +3683,102 @@ Sinta-se à vontade para convidar outros jogadores através da lista dos "n gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Parar - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - - - - + + + + + + + + Start Iniciar - - - - - + + + + + Lobby Sala - - + + Chat "Chat" - + Closing PokerTH during network game Fechando Poker TH durante um jogo de rede - + You are the hosting server. Do you want to close PokerTH anyway? Você está a funcionar como servidor. Tem acerteza que quer fechar? - + Really want to exit? Tem a certeza que quer sair? - + PokerTH - Close Table? PokerTH - Fechar mesa? - + PokerTH - Internet Game Message Poket TH - Mensagem do jogo em rede - + Attention! Do you really want to leave the current game and go back to the lobby? Atenção! Pretende sair do jogo atual e voltar para a sala? - - + + Chat is only available to registered players. O "chat" só está disponível para jogadores registados. + + + Spectators + + PokerTH - Warning PokerTH - Aviso @@ -3744,50 +3794,50 @@ Após %1 interrupções o servidor precisa de o expulsar para manter o fluxo de Se vai ficar ausente, utilize o botão "ausente" na caixa de ferramentas à direita. - - + + Chance Hipóteses - - + + Kick Expulsar - - + + Do you want to kick <b>%1</b><br>from this game? Deseja expulsar o jogador <b>%1</b><br> deste jogo? - - - - + + + + <b>%1</b> secs left faltam <b>%1</b> segundos - + vote voto - + votes votos - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. O jogador <b>%1</b> tem <b>%2</b> %3<br>contra ele. <b>%4</b> voto(s) precisos para a expulsão. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Você tem <b>%1</b> %2 contra si.<br><b>%3</b> voto(s) precisos para a expulsão. @@ -4004,56 +4054,66 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Carregar ficheiro de erro do perfil do servidor - - - - Could not load server-profiles-file: - Incapaz de carregar ficheiro de erro do perfil: + Incapaz de carregar ficheiro de erro do perfil: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error Gravar erro do perfil do servidor - + A profile with the name: %1 already exists. Would you like to overwrite ? Já existe um perfil com o nome: %1. Pretende sobrescrevê-lo? - + Read Server-Profile List Error Ler o erro do perfil do servidor - + Could not read server-profiles list Incapaz de ler o erro do perfil do servidor - - + + Save Server-Profile-File Error Gravar erro do perfil do servidor - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Incapaz de gravar erro do perfil do servidor: + Incapaz de gravar erro do perfil do servidor: @@ -4118,12 +4178,12 @@ Pretende sobrescrevê-lo? manualBlindsOrderDialogImpl - + Manual Blinds Order "Blinds" manuais - + You cannot set more than 30 manual blinds. Não pode definir mais de 30 "blinds" manuais. @@ -4188,7 +4248,7 @@ Pretende sobrescrevê-lo? - + Use saved blinds settings Utilizar definições de "blinds" gravadas @@ -4199,13 +4259,13 @@ Pretende sobrescrevê-lo? - + Change blinds settings ... Alterar definições de "blinds"... - + Game Speed: Velocidade do jogo: @@ -4246,38 +4306,38 @@ Pretende sobrescrevê-lo? selectAvatarDialogImpl - - - + + + Avatar File Error Erro no ficheiro "avatar" - + Please select an avatar from the list! Por favor, selecione um "avatar" da lista! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! O tamanho da imagem escolhida é muito grande. (max. 30KB) Por favor, escolha uma imagem mais pequena! - + The entered avatar picture doesn't exist. Please enter an valid picture! A imagem indicada não existe. Por favor, indique uma imagem válida! - + Select external avatar picture Selecionar uma imagem externa - + Images (*.png *.jpg *.gif) Imagens (*.png *.jpg *.gif) @@ -4298,329 +4358,353 @@ Por favor, indique uma imagem válida! Interface - - + + Language: Idioma: - - + + Show fade-out animation for non-winning cards Mostrar animação para as cartas não vencedoras - - + + Show flip-card animation Mostrar animação ao virar as cartas - - + + Show buttons for small blind and big blind Mostrar botões de "small blind" e "big blind" - - + + Show own cards only on mouse click Só mostrar cartas se clicadas com o rato - + Reverse order of F-Keys (F1 - F4) Inverter ordem das teclas F (F1 - F4) - - + + Network / Internet Game Rede / Jogo na internet - - + + Switch keyboard focus to bet-input-field if it's your turn Na sua vez, trocar foco do teclado do campo de aposta - + Sound Som - + Factory Settings - - + + + Common + + + + + Disable splashscreen on startup Desativar ecrã inicial - - + + Show country flag in the corner of avatar Mostrar a bandeira do país no canto do "avatar" - - + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table Mesa de jogo - - - - + + + + Description Descrição - - - - + + + + Maintainer Programador - - - + + + State Estado - - + + Card Deck Baralho - - + + Card Back Verso da cartas - - + + Use card back from card style Utilizar verso do estilo de cartas - - + + Use custom card back picture: Utilizar imagem personalizada: - - + + Play sound effects Reproduzir efeitos sonoros - - + + Sound Volume: Volume: - - + + 10 10 - - + + Sound Categories Categorias de sons - - + + Play game actions sounds like "check", "call", "raise" Reproduzir sons de "check", "call", "raise" - - + + Play lobby chat notifications Reproduzir notificações da sala de "chat" - - + + Play network/internet game notifications like "player joined the game" Reproduzir notificações de jogo na internet (ex: jogador entrou no jogo) - - + + Server Password: - + + + Allow spectators to watch the game + + + + OK - + Local Game Settings Definições do jogo local - - + + Number of players: Número máximo de jogadores: - - - - + + + + Start Cash: Dinheiro inicial: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Primeira "small blind": - - - - + + + + Raise blinds: Aumentar "blinds": - - - - - - - - + + + + + + + + Every: A cada: - - - - + + + + hands mãos - - - - + + + + minutes minutos - - - - + + + + Raise mode: Modo de aumento: - - - - + + + + Always double blinds Duplicar sempre as "blinds" - - - - + + + + Manual blinds order: "Blinds" manuais: - - - - + + + + Edit ... Editar... - - + + Game Speed: Velocidade do jogo: - - + + Pause between hands (press "start" button to go on) Tempo de espera entra mão (prima "iniciar" para prosseguir) - - + + Show game settings dialog on every new game Mostrar as definições de jogo ao iniciar novos jogos - + Network Game Settings Definições do jogo em rede - - + + Maximum number of players: Número máximo de jogadores: - - + + Timeout for player action: Intervalo para ação do jogador: @@ -4633,14 +4717,14 @@ Por favor, indique uma imagem válida! Exportar como HTML - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4665,66 +4749,66 @@ Por favor, indique uma imagem válida! Registo - - - - + + + + s s - - + + Network Server Settings Definições do servidor de rede - - - - + + + + Server Port: Porta do servidor: - - - - + + + + Use SCTP Utilizar SCTP - - - - + + + + Use IPv6 Utilizar IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">O que é isto?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">O que é isto?</a> - + Internet Game Settings Definições do jogo na internet - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4735,61 +4819,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: As definições </span><span style=" font-weight:600; font-style:italic;">de jogo</span><span style=" font-style:italic;"> "Número máximo de jogadores", "Dinheiro inicial" e "Small Blind" serão utilizadas </span><span style=" font-weight:600; font-style:italic;">com base nas definições do jogo em rede.</span></p></body></html> - - + + Server Address: Endereço do servidor: - - + + Use password for private game: Utilizar senha para jogos privados: - - + + Computer Engine Computador - - + + Opponent 6: Adversário 6: - - + + Opponent 5: Adversário 5: - - + + Opponent 4: Adversário 4: - - + + Opponent 3: Adversário 3: - - + + Opponent 2: Adversário 2: - - + + Opponent 1: Adversário 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4800,8 +4884,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: Para uma melhor qualidade do "avatar", escolha uma imagem com </span><span style=" font-weight:600; font-style:italic;">largura=50, altura=50.</span></p></body></html> - - + + Enable/Disable Logging Ativar/desativar registos @@ -4810,105 +4894,105 @@ p, li { white-space: pre-wrap; } Guardar ficheiros para - - + + Log File Directory: Diretório para registos: - - + + Write log after every: Escrever registos a cada: - - + + action (high frequent disc access) ação (acesso frequente ao disco) - - + + hand (medium disc access) mão (acesso normal ao disco) - - + + game (low disc access) jogo (acesso baixo ao disco) - + Log Messages Mensagens de registo - + Player Nicks/Avatars "Nicks/Avatars" do jogaor - + Show right toolbox Mostrar caixa de ferramentas direita - + Show left toolbox Mostrar caixa de ferramentas esquerda - - + + Play blind raise notification - - + + Automatic Server Configuration URL Configuração automática do servidor - - + + Serverlist Address: Endereço da lista de servidor(s): - - + + Manual Server Configuration Configuração manual de servidor - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: Guardar os ficheiros de registo para: - - + + Day(s) Dia(s) @@ -4937,62 +5021,62 @@ p, li { white-space: pre-wrap; } "Nicks/Avatars" - - + + Show cards chance monitor Mostrar ecrã das hipóteses de combinação - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: Servidor do "avatar": - + Style Estilo - - + + Don't translate poker strings like check, call, raise from game table style Não traduzir as palavras "check", "call", "raise" - - - - + + + + Add ... Adicionar... - - - - + + + + Remove Remover - - - - + + + + Preview - Information: Antevisão - Informações: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5005,8 +5089,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Obter mais mesas de jogo para o PokerTH ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5019,7 +5103,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Obter mais baralhos de cartas para o PokerTH ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5038,96 +5122,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: Para uma melhor qualidade, deve escolher imagens com </span><span style=" font-weight:600; font-style:italic;">largura=48, altura=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Tempo de espera entre mãos: - - + + Server Servidor - - + + Game Jogo - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Nome de jogo padrão: - - + + Default game type: Tipo de jogo padrão: - - + + Standard Padrão - - + + Registered players only Só para jogadores registados - - + + Invited players only Só para jogadores convidados - - + + Ranking game Jogo de classificação - - + + Show lobby chat Mostrar sala de "chat" - - + + Automatically leave the table after the game finished Sair da mesa automaticamente depois de o jogo terminar - - + + Ignored Players Jogadores ignorados - - + + Player Jogador - - + + Remove Player Remover jogador - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5140,20 +5224,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Jogador humano:<br /><span style=" font-style:italic;">(este "nick" também será utilizado para os jogos "on-line")</span></p></body></html> - - + + Opponent 7: Adversário 7: - - + + Opponent 8: Adversário 8: - - + + Opponent 9: Adversário 9: @@ -5161,65 +5245,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Erro de definições - + The entered flipside picture doesn't exist. Please enter an valid picture! A imagem indicada não existe. Por favor, indique uma imagem válida! - - + + The log file directory doesn't exist. Please select an valid directory! O diretório não existe. Por favor, indique um diretório válido! - + Language Changed O idioma foi alterado - + You have changed application language to %1. Please restart PokerTH to load new language! Você alterou o idioma da aplicação para %1. Por favor, reinicie a aplicação! - + Select your flipside picture Selecione a sua imagem invertida - + Images (*.png *.jpg *.gif) Imagens (*.png *.jpg *.gif) - + Open Directory Abrir diretório - - + + Blinds Error Erro de "blinds" - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5228,7 +5312,7 @@ This first-small-blind-value will be set to maximum allowed value. Esta 1ª "small blind" ira ser definida com o valor máximo permitido. - + The entered server list address is not a valid URL. Please enter a valid server list address! O endereço indicado não é uma URL válida. @@ -5380,138 +5464,138 @@ Por favor, indique um endereço válido! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Nome do programador - - + + Maintainer EMail E-mail do programador - - + + Create Date Data de criação - + Windows Behaviour Comportamento das janelas - + scaleable à escala - + fixed fixa - + Minimum Size Tamanho mínimo - + Maximum Size Tamanho máximo - + Fixed Size Tamanho fixo - + State Estado - + Please select your game table style Por favor, escolha a mesa - + PokerTH game table styles (*.xml) Mesas do Poker TH (*.xml) - + Game Table Style Error Erro no estilo da mesa de jogo - + Selected game table style file is already in the list. Please select another one to add! O estilo da mesa selecionada já está na lista. Por favor, escolha outro estilo! - + Game Table Style File Error Erro no ficheiro de estilo da mesa de jogo - + Could not load game table style file correctly. Style will not be placed into list! Não foi possível carregar o ficheiro da mesa de jogo. O estilo não será colocado na lista! - + Please select your card deck style Por favor, escolha o baralho de cartas - + PokerTH card deck styles (*.xml) Baralhos de cartas do Poker Th (*.xml) - + Card Deck Style Error Erro no baralho de cartas - + Selected card deck style file is already in the list. Please select another one to add! O baralho de cartas selecionado já está na lista. Por favor, escolha outro estilo! - + Card Deck Style File Error Erro no ficheiro de estilo do baralho de cartas - + Could not load card deck style file correctly. Style will not be placed into list! Não foi possível carregar o ficheiro do baralho de cartas. @@ -5550,12 +5634,12 @@ O estilo não será colocado na lista! Registo SQL do Poker Th (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5620,12 +5704,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Erro do servidor - + You should not kick yourself from this game! Você não se pode expulsar deste jogo! @@ -5792,106 +5876,106 @@ Do you really want to reset factory settings? startWindowImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Erro de rede - + Server address was not set. O endereço do servidor não está definido. - + An invalid port was set (ports 0-1023 are not allowed). Definiu uma porta inválida (não pode usar as portas 0-1023). - + Could not create a socket for TCP communication. Não foi possível criar o "socket" para comunicação TCP. - + Could not set the IP address. Incapaz de definir o endereço IP. - + Could not set the port for this type of address. Incapaz definir esta porta para este tipo de endereço. - + The server name could not be resolved. O nome do servidor não foi processado. - + Bind failed - please choose a different port. Falha ao associar - escolha outra porta. - + Internal network error: "listen" failed. Erro interno de rede: falha ao receber dados. - + Server execution was terminated. A operação do servidor foi terminada. - + Could not connect to the server. Incapaz de ligar ao servidor. - + Connection timed out. Please check the server address. @@ -5902,12 +5986,12 @@ Verifique o endereço do servidor. Se o servidor estiver protegido por um router NAT, certifiqu-se que o reencaminhamento foi definido no servidor. - + Internal network error: "select" failed. Erro interno de rede: falha ao selecionar. - + Internal network error: "send" failed. Erro interno de rede: falha ao enviar dados. @@ -5916,26 +6000,26 @@ Se o servidor estiver protegido por um router NAT, certifiqu-se que o reencaminh A ligação foi encerrada pelo servidor. - + Internal network error: Duplicate TCP connection. Erro interno de rede. Ligação TCP duplicada. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Foi recebido um pacote de rede inválido. Certifique-se que todos os jogadores têm a mesma versão do Poker TH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Erro interno. Certifique-se que todos os jogadores têm a mesma versão do Poker TH. - + Invalid server list URL. Please correct the address in the settings. A URL do servidor é inválida. @@ -5954,314 +6038,314 @@ Please make sure that the server list URL is correct. Certifique-se que a URL do servidor está correta. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. A lista de servidores Poker TH comtém dados inválidos. Se está a utilizar uma lista personalizada, verifique se está no formato correto. - + Could not unzip the PokerTH internet server list. Não foi possível extrair a lista de servidores do Poker TH. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Não foi possível transferirr a lista de servidores do Poker TH. Verifique a sua ligação à internet. - + Could not open the target file when downloading the server list. Não foi possível abrir o ficheiro durante a transferência da lista. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. - + Sorry, this server is already full. Desculpe mas este servidor está cheio. - + Invalid login. Please check your username and password. Autenticação inválida. Verifoque o nome de utilizador e senha. - + Your account is blocked indefinitely. A sua conta foi bloqueada por tempo indeterminado. - + You cannot login at this time. Please try again in a few seconds. Neste momento, não pode iniciar a sessão. Por favor, tente mais tarde. - + You cannot join this game, because another player in that game has your network address. Você não pode entrar neste jogo, pois já existe um jogador que tem o seu endereço de rede. - + Your connection to the server is very slow, the game had to start without you. A sua ligação ao servidor está muito lenta. O jogo começou sem si. - + This game is of type invite-only. You cannot join this game without being invited. Este jogo só está disponível para convidados. Não pode entrar no jogo sem ser convidado. - + Invalid password when joining the game. Please reenter the password and try again. Ao entrar no jogo indicou uma senha inválida. Reintroduza a senha e tente novamente. - + The avatar report was accepted by the server. Thank you. O "avatar" denunciado foi aceite pelo servidor. Obrigado. - + This avatar was already reported by another player. Este "avatar" já foi denunciado por outro jogador. - + An error occurred while reporting the avatar. Ocorreu um erro ao denunciar o "avatar". - + The password is too long. Please choose another one. A senha é muito grande. Por favor, escolha outra. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Iniciar jogo em rede - + The connection to the server was lost. A ligação ao servidor perdeu-se. - + The game name is either too short or too long. Please choose another one. O nome do jogo é muito pequeno, grande ou inválido. Por favor, escolha outro. - + The game could not be found. O jogo não foi encontrado. - + The chat text is invalid. O texto é inválido. - + The server referred to an unknown player. Aborting. O servidor referenciou um jogador desconhecido. Cancelando. - + Internal error: The current player could not be found. Erro interno: o jogador atual não foi encontrado. - + Internal error: The current player is not active. Erro interno: o jogador atual está inativo. - + You were kicked from the server. Você foi expulso deste servidor. - + You were temporarily banned from the server. Você foi banido temporariamente deste servidor. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! A sua ligação ao servidor expirou. Para jogar, tem que se ligar novamente! - + The client player count is invalid. A contagem de jogadores é inválida. - + Too many manual blinds were set. Please reconfigure the manual blinds. Foram definidas muitas "blinds" manuais. Verfifique as suas definições. - + An invalid avatar file was configured. Please choose a different avatar. Configurou como "avatar" um ficheiro inválido. Por favor, escolha outro. - + The selected avatar file is too large. Please choose a different avatar. O ficheiro de"avatar" escolhido é muito grande. Por favor, escolha outro. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Ocorreu um erro interno com o "avatar". Por favor, reporte-o ao administrador na sala de "chat". - + Could not start game: Synchronization failed. Não foi possível iniciar o jogo: falha ao sincronizar. - + The server is down for maintenance. Please try again later. O servidor está em manutenção. Tente mais tarde. - + An internal error occured. Ocorreu um erro interno. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Notificação de rede - + You were kicked from the game. Você foi expulso do jogo. - + Sorry, this game is already full. Desculpe mas este jogo está cheio. - + Unable to join - the server has already started the game. Não é possível entrar num servidor cujo jogo já iniciou. - + Your admin state timed out due to inactivity. Feel free to create a new game! O seu estado como administrador expirou. Sinta-se à vontade para criar um novo jogo! - + You cannot join this type of game as guest. Não pode entrar neste jogo como convidado. - + The settings are invalid for this type of game. As definições são inválidas para este tipo de jogo. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Está disponível uma nova versão do Poker TH.<br>Vá até <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> e transfira a versão mais recente. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Esta versão Beta do Poker Th está desatualizada.<br>Vá até <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> e transfira a versão mais recente. - - + + Server Message Mensagem do servidor - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. diff --git a/ts/pokerth_ru.ts b/ts/pokerth_ru.ts index c979e639..aedc64e5 100644 --- a/ts/pokerth_ru.ts +++ b/ts/pokerth_ru.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -222,22 +221,22 @@ Please contact the game table style builder via "%4". Ошибка стиля игрового стола - Устаревшая версия - + Everything OK! Все в порядке. - + Some pictures are missing, please contact style maintainer for this issue. Некоторые изображения отсутствуют, по этой проблеме свяжитесь c разработчиком. - + Some style fields are missing, please contact style maintainer for this issue. Некоторые поля стиля отсутствуют, по этой проблеме свяжитесь c разработчиком. - + This style is outdated, please contact style maintainer for this issue. Этот стиль устарел, по этой проблеме свяжитесь c разработчиком. @@ -400,52 +399,52 @@ Please contact the game table style builder %3. - + PokerTH - Delete log files PokerTH - Удаление файлов журнала - + Do you really want to delete the selected log files? Вы действительно хотите удалить выбранные файлы журнала? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML Экспорт PokerTH лог-файла в HTML - + PokerTH HTML log (*.html) PokerTH HTML лог-файл (*.html) - + Export PokerTH log file to plain text Экспорт PokerTH лог-файла в обычный текст - + PokerTH plain text log (*.txt) PokerTH текстовый лог-файл (*.txt) - + Save PokerTH log file Сохранить PokerTH лог-файл - + PokerTH SQL log (*.pdb) PokerTH SQL лог-файл (*.pdb) @@ -492,13 +491,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -531,18 +530,18 @@ Please verify that you are uploading a valid PokerTH log file. Сообщить о недопустимом аватаре - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Вы больше не будете получать сообщения из чата или приглашений в игру от данного пользователя. <br> Вы действительно хотите поместить игрока <b>%1</b> в список игнорирования? - - + + PokerTH - Question PokerTH - Вопрос - + Are you sure you want to report the avatar of "%1" as inappropriate? Вы действительно хотите сообщить что аватор игрока "%1" недопустимый? @@ -575,8 +574,8 @@ Please verify that you are uploading a valid PokerTH log file. О программе PokerTH 0.5 - - + + About О программе @@ -609,8 +608,8 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + Project Проект @@ -657,14 +656,36 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - сборка для MacOS</p></body></html> - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + Translation Перевод - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + Thanks to Благодарности @@ -745,7 +766,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -754,7 +774,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -764,14 +784,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Stas Solovey - whats_up@tut.by, 2011-2012.</span></p></td></tr></table></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -834,13 +852,19 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - for new table sounds</span></p></td></tr></table></body></html> - - + + License Лицензия - + + + Third party libs + + + + Close Закрыть @@ -917,8 +941,8 @@ p, li { white-space: pre-wrap; } © 2006-2007, FHammer, FThauer, LMay - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> @@ -1326,8 +1350,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for new table sounds</span></p></td></tr></table></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1336,7 +1360,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1603,12 +1627,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Самостоятельное управление ставками - + You cannot set more than 30 manual blinds. Вы не можете установить более чем 30 самостоятельных ставок. @@ -1750,8 +1774,8 @@ Please choose another one! createInternetGameDialog - - + + Create Game Создать игру @@ -1772,14 +1796,14 @@ Please choose another one! Время ожидания для хода игрока (сек): - - + + Maximum number of players: Максимальное количество игроков: - - + + Start Cash: Начальная сумма: @@ -1788,19 +1812,25 @@ Please choose another one! Малая ставка: - - + + Password: Пароль: - + Delay between hands: Задержка между раздачами: - + + + Allow spectators to watch the game + + + + Cancel Отмена @@ -1817,7 +1847,7 @@ Please choose another one! - + Default game name: Имя игры по умолчанию: @@ -1852,38 +1882,38 @@ Please choose another one! Рейтинговая игра - + Blinds Ставки - + Use saved blinds settings Использовать сохраненные настройки ставок - + Change blinds settings ... Изменить настройки ставок... - - + + $ $ - + Timeout for player action: Время ожидания хода игрока: - - + + s @@ -2016,8 +2046,8 @@ Please choose another one! Общая игровая комната - - + + Lobby-Chat Общий чат @@ -2034,62 +2064,68 @@ Please choose another one! Закрытая - - + + Game Info Информация об игре - - + + Connected Players Подключенные игроки - - + + + Spectators + + + + + First small blind: Начальная ставка: - - + + Blinds raise interval: Интервал повышения ставок: - - + + Blinds raise mode: Режим повышения ставок: - - + + Timing: Время проведения: - - + + Fill up with computer opponents Заполнить компьютерными оппонентами - - + + Sort alphabetically Сортировать по алфавиту - - + + Sort by country Сортировать по стране - - + + Display idle players Показать бездействующих игроков @@ -2114,8 +2150,8 @@ Please choose another one! Малая ставка: - - + + Start Cash: Начальная сумма: @@ -2125,7 +2161,7 @@ Please choose another one! Игры - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2154,8 +2190,10 @@ p, li { white-space: pre-wrap; } Доступные игроки + + Players - Игроки + Игроки Kick Player @@ -2182,8 +2220,8 @@ p, li { white-space: pre-wrap; } Режим повышения ставок: - - + + Manual blinds list: Список вручную настроенных ставок: @@ -2192,32 +2230,30 @@ p, li { white-space: pre-wrap; } Время ожидания хода игрока (сек): - - + + Game type: Тип игры: - - + + &Leave Game &Покинуть игру - - Join &any game - Присоединится к &любой игре + Присоединится к &любой игре - - + + &Create Game &Создать игру - - + + &Join Game &Присоединится к игре @@ -2240,38 +2276,38 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Нажмите здесь для просмотра интернет-рейтингов</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - Все игры - - + + search for player ... поиск игрока... - - + + 1 - Show open games 1 - Только открытые игры - - + + 2 - Show open & non-full games 2 - Только открытые и неполные игры - - + + 3 - Show open & non-full & non-private games 3 - Только открытые, неполные и нечастные игры - - + + 4 - Show open & non-full & private games 4 - Только открытые, неполные и частные игры @@ -2282,20 +2318,20 @@ p, li { white-space: pre-wrap; } Общая комната игры через Интернет - - + + 5 - Show open & non-full & ranking games 5 - Только открытые и неполные игры с рейтингом - - + + &Start Game &Начать игру - - + + &Kick Player &Отключить игрока @@ -2335,46 +2371,46 @@ p, li { white-space: pre-wrap; } Вы хотите присоединиться к приватной игре. Пожалуйста, введите пароль! - - - - + + + + Game Info Информация об игре - + Server Error Ошибка сервера - + You should not kick yourself from this game! Вы не можете исключить себя из игры! - + Joining a private Game Присоединиться к закрытой игре - - - + + + Game Игра - - - + + + Players Игроки - - - + + + State Состояние @@ -2383,43 +2419,41 @@ p, li { white-space: pre-wrap; } Закрытая - + You are about to join a private game. Please enter the password! Вы хотите присоединиться к закрытой игре. Пожалуйста, введите пароль! - + running идет игра - + open открыта - - Connected players - Подключенные игроки + Подключенные игроки - + hands партий - + minutes минут - + double blinds удвоение ставок - + manual blinds order самостоятельное управление ставками @@ -2439,100 +2473,104 @@ p, li { white-space: pre-wrap; } - - - + + Spectate + + + + + + P P - - - + + + Time - - - + + + Available Players Доступные игроки - + Invite player Пригласить игрока - + Ignore player Игнорировать игрока - + Player infos ... Информация об игроке... - - + + Show player stats Показать статистику игрока - - + + Admin action ... - + Total kickban - + Report inappropriate game name Сообщить об недопустимом имени игры - + Close game - - - + + + Standard Стандартный - - - + + + Registered players only Только зарегистрированные игроки - - - + + + Invited players only Только приглашенные игроки - - - + + + Ranking game Рейтинговая игра - Connected players - max. %1 - Подключенных игроков - макс. %1 + Подключенных игроков - макс. %1 sec (action) @@ -2543,1321 +2581,1319 @@ p, li { white-space: pre-wrap; } сек (задержка партий) - + Afghanistan Афганистан - + ALand Islands Аландские острова - + Albania Албания - + Algeria Алжир - + American Samoa Американское Самоа - + Andorra Андорра - + Angola Ангола - + Anguilla Ангилья - + Antarctica Антарктида - + Antigua And Barbuda Антигуа и Барбуда - + Argentina Аргентина - + Armenia Армения - + Aruba Аруба - + Australia Австралия - + Austria Австрия - + Azerbaijan Азербайджан - + Bahamas Багамские острова - + Bahrain Бахрейн - + Bangladesh Бангладеш - + Barbados Барбадос - + Belarus Беларусь - + Belgium Бельгия - + Belize Белиз - + Benin Бенин - + Bermuda Бермудские острова - + Bhutan Бутан - + Bolivia Боливия - + Bosnia And Herzegovina Босния и Герцеговина - + Botswana Ботсвана - + Bouvet Island Буве - + Brazil Бразилия - + British Indian Ocean Territory Британская территория Индийского океана - + Brunei Darussalam Бруней-Даруссалам - + Bulgaria Болгария - + Burkina Faso Буркина-Фасо - + Burundi Бурунди - + Cambodia Камбоджа - + Cameroon Камерун - + Canada Канада - + Cape Verde Кабо-Верде - + Cayman Islands Каймановы острова - + Central African Republic Центрально-Африканская Республика - + Chad Чад - + Chile Чили - + China Китай - + Christmas Island Остров Рождества - + Cocos (Keeling) Islands Кокосовые (Килинг) острова - + Colombia Колумбия - + Comoros Коморские острова - + Congo Конго - + Congo, The Democratic Republic Of The Демократическая Республика Конго - + Cook Islands острова Кука - + Costa Rica Коста-Рика - + Cote D'Ivoire Кот-д'Ивуар - + Croatia Хорватия - + Cuba Куба - + Cyprus Кипр - + Czech Republic Чешская Республика - + Denmark Дания - + Djibouti Джибути - + Dominica Доминика - + Dominican Republic Доминиканская Республика - + Ecuador Эквадор - + Egypt Египет - + El Salvador Сальвадор - + Equatorial Guinea Экваториальная Гвинея - + Eritrea Эритрея - + Estonia Эстония - + Ethiopia Эфиопия - + Falkland Islands (Malvinas) Фолклендские (Мальвинские) острова - + Faroe Islands Фарерские острова - + Fiji Фиджи - + Finland Финляндия - + France Франция - + French Guiana Французская Гвиана - + French Polynesia Французская Полинезия - + French Southern Territories Французские Южные территории - + Gabon Габон - + Gambia Гамбия - + Georgia Грузия - + Germany Германия - + Ghana Гана - + Gibraltar Гибралтар - + Greece Греция - + Greenland Гренландия - + Grenada Гренада - + Guadeloupe Гваделупа - + Guam Гуам - + Guatemala Гватемала - + Guernsey Гернси - + Guinea Гвинея - + Guinea-Bissau Гвинея-Бисау - + Guyana Гайана - + Haiti Гаити - + Heard Island And Mcdonald Islands острова Херд и Макдональд - + Holy See (Vatican City State) Святой Престол (Государство-город Ватикан) - + Honduras Гондурас - + Hong Kong Гонконг - + Hungary Венгрия - + Iceland Исландия - + India Индия - + Indonesia Индонезия - + Iran, Islamic Republic Of Исламская Республика Иран - + Iraq Ирак - + Ireland Ирландия - + Isle Of Man Остров Мэн - + Israel Израиль - + Italy Италия - + Jamaica Ямайка - + Japan Япония - + Jersey Джерси - + Jordan Иордания - + Kazakhstan Казахстан - + Kenya Кения - + Kiribati Кирибати - + Korea, Democratic People'S Republic Of Корейская Народно-Демократическая Народная Республика - + Korea, Republic Of Республика Корея - + Kuwait Кувейт - + Kyrgyzstan Киргизия - + Lao People'S Democratic Republic Лаосская Народно-Демократическая Республика - + Latvia Латвия - + Lebanon Ливан - + Lesotho Лесото - + Liberia Либерия - + Libyan Arab Jamahiriya Ливийская Арабская Джамахирия - + Liechtenstein Лихтенштейн - + Lithuania Литва - + Luxembourg Люксембург - + Macao Макао - + Macedonia, The Former Yugoslav Republic Of Македония - + Madagascar Мадагаскар - + Malawi Малави - + Malaysia Малайзия - + Maldives Мальдивы - + Mali Мали - + Malta Мальта - + Marshall Islands Маршалловы острова - + Martinique Мартиника - + Mauritania Мавритания - + Mauritius Маврикий - + Mayotte Майотта - + Mexico Мексика - + Micronesia, Federated States Of Федеративные Штаты Микронезия - + Moldova, Republic Of Молдова - + Monaco Монако - + Mongolia Монголия - + Montserrat Монтсеррат - + Morocco Марокко - + Mozambique Мозамбик - + Myanmar Мьянма - + Namibia Намибия - + Nauru Науру - + Nepal Непал - + Netherlands Нидерланды - + Netherlands Antilles Нидерландские Антильские острова - + New Caledonia Новая Каледония - + New Zealand Новая Зеландия - + Nicaragua Никарагуа - + Niger Нигер - + Nigeria Нигерия - + Niue Ниуэ - + Norfolk Island Остров Норфолк - + Northern Mariana Islands Северные Марианские острова - + Norway Норвегия - + Oman Оман - + Pakistan Пакистан - + Palau Палау - + Palestinian Territory, Occupied Палестина - + Panama Панама - + Papua New Guinea Папуа-Новая Гвинея - + Paraguay Парагвай - + Peru Перу - + Philippines Филиппины - + Pitcairn Питкэрн - + Poland Польша - + Portugal Португалия - + Puerto Rico Пуэрто-Рико - + Qatar Катар - + Reunion Реюньон - + Romania Румыния - + Russian Federation Российская Федерация - + Rwanda Руанда - + Saint Helena Остров Святой Елены - + Saint Kitts And Nevis Сент-Китс и Невис - + Saint Lucia Сент-Люсия - + Saint Pierre And Miquelon Сен-Пьер и Микелон - + Saint Vincent And The Grenadines Сент-Винсент и Гренадины - + Samoa Самоа - + San Marino Сан-Марино - + Sao Tome And Principe Сан-Томе и Принсипи - + Saudi Arabia Саудовская Аравия - + Senegal Сенегал - + Serbia And Montenegro Сербия и Черногория - + Seychelles Сейшельские острова - + Sierra Leone Сьерра-Леоне - + Singapore Сингапур - + Slovakia Словакия - + Slovenia Словения - + Solomon Islands Соломоновы Острова - + Somalia Сомали - + South Africa ЮАР - + South Georgia And The South Sandwich Islands Южная Джорджия и Южные Сандвичевы острова - + Spain Испания - + Sri Lanka Шри Ланка - + Sudan Судан - + Suriname Суринам - + Svalbard And Jan Mayen Шпицберген и Ян-Майен - + Swaziland Свазиленд - + Sweden Швеция - + Switzerland Швейцария - + Syrian Arab Republic Сирийская Арабская Республика - + Taiwan, Province Of China Тайвань - + Tajikistan Таджикистан - + Tanzania, United Republic Of Объединенная Республика Танзания - + Thailand Таиланд - + Timor-Leste Тимор-Лешти - + Togo Того - + Tokelau Токелау - + Tonga Тонга - + Trinidad And Tobago Тринидад и Тобаго - + Tunisia Тунис - + Turkey Турция - + Turkmenistan Туркменистан - + Turks And Caicos Islands Острова Теркс и Кайкос - + Tuvalu Тувалу - + Uganda Уганда - + Ukraine Украина - + United Arab Emirates Объединенные Арабские Эмираты - + United Kingdom Великобритания - + United States Соединенные Штаты Америки - + United States Minor Outlying Islands Соединенные Штаты Америки Внешние малые острова - + Uruguay Уругвай - + Uzbekistan Узбекистан - + Vanuatu Вануату - + Venezuela Венесуэла - + Viet Nam Вьетнам - + Virgin Islands, British Виргинские острова, Британия - + Virgin Islands, U.S. Виргинские острова, США - + Wallis And Futuna Уоллис и Футуна - + Western Sahara Западная Сахара - + Yemen Йемен - + Zambia Замбия - + Zimbabwe Зимбабве - + Are you sure you want to report the game name: "%1" as inappropriate? Вы действительно хотите сообщить что имя игры "%1" недопустимое? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - - - + + + T Тип - - - + + + sec (action) сек (действие) - - - + + + sec (hand delay) сек (задержка партий) - - Connected players - Max. %1 - Подключенных игроков - Макс. %1 + Подключенных игроков - Макс. %1 - - + + running games: %1 Текущих игры: %1 - - + + open games: %1 Открытых игр: %1 - + Invite %1 Пригласить %1 - + Ignore %1 Игнорировать %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 был приглашен %3 в %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 отклонил приглашение в %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 не может присоединиться к %2, потому что он занят.</span> - - + + The game will start in<br><b>%1</b> seconds. Игра начнётся через<br><b>%1</b> секунд. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Вы вошли в игру типа "только приглашенные". Не стесняйтесь приглашать других игроков нажав правой кнопкой мыши на их ​​имя в списке доступных игроков. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Вы были приглашены <b>%2</b> в игру <b>%1</b>.<br>Хотите присоединиться к этой игре? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Вы больше не будете получать сообщения из чата или приглашений в игру от данного пользователя. <br>Вы действительно хотите поместить игрока <b>%1</b> в список игнорирования? @@ -3866,52 +3902,65 @@ Feel free to invite other players by right-clicking on their nick in the availab Игроков в чате: %1 - - + + connected players: %1 Подключенных игроков: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + search for player ... поиск игрока... - + Chat is only available to registered players. Чат доступен только для зарегистрированных игроков. - + Invite player ... Пригласить игрока... - + Ignore player ... Игнорировать игрока... - + %1 is playing in "%2". %1 играет в "%2". - + %1 is not playing at the moment. %1 не играет в данный момент. - - + + PokerTH - Info Message PokerTH - Информационное сообщение - - - - + + + + PokerTH - Question PokerTH - Вопрос @@ -3935,17 +3984,17 @@ Feel free to invite other players by right-clicking on their nick in the availab QGroupBox { background-image: url(:/graphics/resources/graphics/toolboxFrameBG.png) } - + Hands Комбинации - + Chat Чат - + Speed: Скорость: @@ -3954,7 +4003,7 @@ Feel free to invite other players by right-clicking on their nick in the availab Стоп - + Log Журнал @@ -3967,57 +4016,57 @@ Feel free to invite other players by right-clicking on their nick in the availab Игра - - + + Start Local Game ... Начать локальную игру... - - + + Ctrl+N Ctrl+N - - + + Quit Выход - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... О программе PokerTH... - - + + Settings ... Наcтройки... - - + + Create Network Game ... Создать сетевую игру... - - + + Join Network Game ... Присоединиться к сетевой игре... - - - + + + Fullscreen Полноэкранный режим @@ -4026,8 +4075,8 @@ Feel free to invite other players by right-clicking on their nick in the availab ⌘F - - + + Show/Hide Chat Window Показать/Скрыть окно чата @@ -4040,8 +4089,8 @@ Feel free to invite other players by right-clicking on their nick in the availab ⌘H - - + + Show/Hide Log Window Показать/Скрыть окно журнала @@ -4050,53 +4099,53 @@ Feel free to invite other players by right-clicking on their nick in the availab ⌘L - - - - - - + + + + + + Show/Hide Hands Window Показать/Скрыть окно комбинаций - - + + Ctrl+O Ctrl+O - + Save Сохранить - - + + Ctrl+J Ctrl+J - - + + Ctrl+F Ctrl+F - - + + Ctrl+T Ctrl+T - - + + Ctrl+H Ctrl+H - - + + Ctrl+L Ctrl+L @@ -4109,14 +4158,14 @@ Feel free to invite other players by right-clicking on their nick in the availab Сетевая игра - - + + Internet Game ... Игра в Интернете... - - + + Ctrl+I Ctrl+I @@ -4125,22 +4174,22 @@ Feel free to invite other players by right-clicking on their nick in the availab Ва-банк - + Away Режим отсутствия - + Manual Action (default) Самостоятельная игра (по умолчанию) - + Auto-Check / Auto-Fold Автопропуск / Автосброс - + Auto-Check / Auto-Call-Any Автопропуск / Автоответ @@ -4154,103 +4203,103 @@ Feel free to invite other players by right-clicking on their nick in the availab Вернуться в общую комнату - - + + Show/Hide Away Window Показать/Скрыть окно режима отсутствия - - + + Ctrl+A Ctrl+A - + Kick Отключить - + Vote Timeout: Голосование истекает: - + Yes Да - + No Нет - + Player info Информация об игроке - + Chance Шансы - + Settings Наcтройки - + Configure PokerTH - + Configure PokerTH ... Настроить PokerTH... - - + + Close Закрыть - - + + Ctrl+X Ctrl+X - + Vote started by: Голосование начато: - - + + Show/Hide Chance Window Показать/Скрыть окно шансов - - + + Ctrl+C Ctrl+C - + &View &Вид - + &Settings &Настройки - + Shortcut: <Shift> Быстро: <Shift> @@ -4290,19 +4339,19 @@ p, li { white-space: pre-wrap; } gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Стоп @@ -4319,14 +4368,14 @@ p, li { white-space: pre-wrap; } F1 - Сбросить/Ва-банк | F2 - Пропуск/Ответить | F3 - Ставка/Повысить - - - - - - - - + + + + + + + + Start Старт @@ -4495,8 +4544,8 @@ Please choose a different name. F1 - Ставка/Повысить | F2 - Пропуск/Ответить | F3 - Сбросить/Ва-банк - - + + Chat Чат @@ -4581,12 +4630,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Зайдите на <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> и скачайте самую новую версию. - + Closing PokerTH during network game Закрытие PokerTH во время сетевой игры - + You are the hosting server. Do you want to close PokerTH anyway? Вы являетесь сервером игры. Вы точно хотите закрыть PokerTH? @@ -4603,16 +4652,16 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Эта бета-версия PokerTH устарела.<br>Зайдите на <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> и скачайте самую свежую версию. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Покер Texas Holdem c открытым кодом - - - - - + + + + + Lobby Общая комната @@ -4621,86 +4670,91 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Произошла ошибка при обработке аватары. Пожалуйста, сообщите об этом администратору в общей комнате. - + PokerTH - Internet Game Message PokerTH - Сообщение игры в интернете - + Attention! Do you really want to leave the current game and go back to the lobby? Внимание! Вы действительно хотите покинуть текущую игру и вернуться в общую комнату? - - + + Chance Шансы - + PokerTH %1 PokerTH %1 - + Really want to exit? Действительно хотите выйти? - + PokerTH - Close Table? PokerTH - Покинуть стол? - - + + Kick Отключить - - + + Do you want to kick <b>%1</b><br>from this game? Вы действительно хотите исключить <b>%1</b><br>из игры? - - - - + + + + <b>%1</b> secs left <b>%1</b>сек. осталось - + vote голос - + votes голосов - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Игрок <b>%1</b> проголосовал против <b>%2</b> %3<br>. <b>%4</b> голоса(ов) необходимо для отключения. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. У вас <b>%1</b> %2 против вас.<br><b>%3</b> голоса(ов) необходимо для отключения. - - + + Chat is only available to registered players. Чат доступен только для зарегистрированных игроков. + + + Spectators + + internetGameLoginDialog @@ -4938,25 +4992,21 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Ошибка чтения файла профиля сервера - - - - Could not load server-profiles-file: - Не могу загрузить файл профилей сервера: + Не могу загрузить файл профилей сервера: - + Save Server Profile Error Ошибка сохранения профиля сервера @@ -4965,31 +5015,45 @@ p, li { white-space: pre-wrap; } Профиль под названием: " - + + + + + Could not load server-profiles-file: +%1 + + + + Read Server-Profile List Error Ошибка чтения списка профилей сервера - + Could not read server-profiles list Не могу прочитать список профилей сервера - - + + Save Server-Profile-File Error Ошибка сохранения файла профиля сервера - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Не могу сохранить файл с профилями сервера: + Не могу сохранить файл с профилями сервера: - + A profile with the name: %1 already exists. Would you like to overwrite ? Профиль под названием: %1 уже существует. @@ -5069,12 +5133,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order Самостоятельное управление ставками - + You cannot set more than 30 manual blinds. Вы не можете установить более чем 30 самостоятельных ставок. @@ -5119,7 +5183,7 @@ Would you like to overwrite ? - + Game Speed: Скорость игры: @@ -5160,13 +5224,13 @@ Would you like to overwrite ? - + Use saved blinds settings Использовать сохраненные настройки ставок - + Change blinds settings ... Изменить настройки ставок... @@ -5213,14 +5277,14 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Ошибка в файле аватара - + Please select an avatar from the list! Выберите аватар из списка! @@ -5231,7 +5295,7 @@ Please enter an valid picture! Укажите правильную картинку! - + Select external avatar picture Выберите внешнюю картинку аватара @@ -5240,19 +5304,19 @@ Please enter an valid picture! Картинки (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Размер файла выбранной картинки слишком велик. (максимум 30KB) Пожалуйста, выберите картинку поменьше. - + Images (*.png *.jpg *.gif) Картинки (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! Указанная картика аватара не существует. @@ -5290,20 +5354,20 @@ p, li { white-space: pre-wrap; } По умолчанию - - + + Show flip-card animation Показывать анимацию переворота карт - - + + Show buttons for small blind and big blind Показывать кнопки для малой и большой ставок - - + + Show fade-out animation for non-winning cards Показывать постепенное исчезновение невыигрышных карт @@ -5312,13 +5376,13 @@ p, li { white-space: pre-wrap; } Показывать сообщения в строке состояния - + Show left toolbox Показывать левую панель - - + + Play blind raise notification Звуковое уведомление при повышении ставки @@ -5334,19 +5398,19 @@ p, li { white-space: pre-wrap; } Показывать заставку при старте программы - + Show right toolbox Показывать правую панель - - + + Play sound effects Включить звуковые эффекты - - + + Show game settings dialog on every new game Показывать окно настроек перед началом игры @@ -5355,8 +5419,8 @@ p, li { white-space: pre-wrap; } Количество партий для повышения малой ставки: - - + + Number of players: Количество игроков: @@ -5369,22 +5433,22 @@ p, li { white-space: pre-wrap; } Малая ставка: - - + + Game Speed: Скорость игры: - - - - + + + + Start Cash: Начальная сумма: - - + + Pause between hands (press "start" button to go on) Пауза между партиями (для продолжения нужно нажать "Старт") @@ -5401,53 +5465,53 @@ p, li { white-space: pre-wrap; } Настройки сервера - - + + Server Password: Пароль сервера: - - - - + + + + Server Port: Порт сервера: - - - - + + + + Use SCTP Использовать SCTP - - - - + + + + Use IPv6 Использовать IPv6 - + Note: Best quality with image ratio like width=48, height=76. - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://ru.wikipedia.org/wiki/Ipv6">Подробнее...</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://ru.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Подробнее...</a> @@ -5460,8 +5524,8 @@ p, li { white-space: pre-wrap; } Скорость игры компьютерных оппонентов: - - + + Maximum number of players: Максимальное количество игроков: @@ -5480,43 +5544,43 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Замечание: Наилучшее качество аватары при размерах картинки </span><span style=" font-weight:600; font-style:italic;">ширина=50, высота=50.</span></p></body></html> - - + + Computer Engine Компьютерные противники - - + + Opponent 5: Оппонент 5: - - + + Opponent 4: Оппонент 4: - - + + Opponent 3: Оппонент 3: - - + + Opponent 2: Оппонент 2: - - + + Opponent 1: Оппонент 1: - + Human Player: Игрок: @@ -5525,8 +5589,8 @@ p, li { white-space: pre-wrap; } Имена игроков - - + + Enable/Disable Logging Включить запись событий @@ -5539,59 +5603,59 @@ p, li { white-space: pre-wrap; } дней - - + + Log File Directory: Каталог файлов журнала: - - + + Write log after every: Записывать в журнал после каждой: - + Log Messages Журнал - + Local Game Settings Настройки локальной игры - + Network Game Settings Настройки сетевой игры - - + + Sound Volume: Громкость: - - + + 10 10 - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 6: Оппонент 6: @@ -5600,26 +5664,26 @@ p, li { white-space: pre-wrap; } Время ожидания для хода игрока (сек): - - + + action (high frequent disc access) действия (много обращений к диску) - - + + hand (medium disc access) партии (средняя частота обращений к диску) - - + + game (low disc access) игры (малое количество обращения к диску) - - + + Show own cards only on mouse click Показывать свои карты только после клика мышью @@ -5630,7 +5694,7 @@ p, li { white-space: pre-wrap; } - + Sound Звук @@ -5639,13 +5703,13 @@ p, li { white-space: pre-wrap; } Количество партий для повышения ставки: - - + + Network Server Settings Настройки сетевого сервера - + Internet Game Settings Настройки игры в Интернете @@ -5664,14 +5728,14 @@ p, li { white-space: pre-wrap; } Настройки Интернет-сервера (Выделенный сервер) - - + + Server Address: Адрес сервера: - - + + Use password for private game: Использовать пароль для закрытой игры: @@ -5696,84 +5760,84 @@ p, li { white-space: pre-wrap; } Обратный порядок кнопок (F1 - F3) - - - - + + + + First small blind: Начальная ставка: - - - - + + + + Raise blinds: Повышать ставки: - - - - - - - - + + + + + + + + Every: Каждые: - - - - + + + + hands партий - - - - + + + + minutes минут - - - - + + + + Raise mode: Режим повышения: - - - - + + + + Always double blinds Всегда удваивать ставки - - - - + + + + Manual blinds order: Самостоятельное управление ставками: - - - - + + + + Edit ... Редактировать... - - + + Language: Язык: @@ -5796,26 +5860,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Примечание: рекомендуемые размеры картинки </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">ширина=48, высота=76.</span></p></td></tr></table></body></html> - - + + Sound Categories Звуковые уведомления - - + + Play game actions sounds like "check", "call", "raise" Действия "Пропустить", "Ответить", "Повысить" - - + + Play lobby chat notifications События общего чата - - + + Play network/internet game notifications like "player joined the game" События Сетевой / Интернет игр такие как "Игрок присоединился к игре" @@ -5824,7 +5888,7 @@ p, li { white-space: pre-wrap; } Разрешить/Запретить общий чат (IRC сервер) - + Player Nicks/Avatars Имена и аватары игроков @@ -5839,19 +5903,19 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><span style=" font-style:italic;">Замечание: По умолчанию, </span><span style=" font-weight:600; font-style:italic;">Настройки игры</span><span style=" font-style:italic;"> "Максимальное количество игроков", "Начальная сумма" и "Начальная ставка" будут взяты </span><span style=" font-weight:600; font-style:italic;">из Настроек Сетевой игры.</span></p></body></html> - + Reverse order of F-Keys (F1 - F4) Обратный порядок кнопок (F1 - F4) - - + + Network / Internet Game Сетевая / Интернет игра - - + + Switch keyboard focus to bet-input-field if it's your turn При переходе хода к вам перемещать курсор в поле ввода ставки @@ -5870,33 +5934,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Примечание: рекомендуемые размеры картинки </span><span style=" font-weight:600; font-style:italic;">ширина=100, высота=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Время ожидания хода игрока: - - - - + + + + s сек - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5907,7 +5971,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Примечание: по умолчанию, </span><span style=" font-weight:600; font-style:italic;">Настройки Игры,</span><span style=" font-style:italic;"> такие как "Максимальное количество игроков", "Начальная сумма" будут взяты </span><span style=" font-weight:600; font-style:italic;">из Настроек Сетевой Игры.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5918,20 +5982,20 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Примечание: рекомендуемые размеры картинки </span><span style=" font-weight:600; font-style:italic;">ширина=50, высота=50.</span></p></body></html> - - + + Automatic Server Configuration URL Автоматическая настройка сервера - - + + Serverlist Address: Адрес списка серверов: - - + + Manual Server Configuration Ручная настройка сервера @@ -5948,14 +6012,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Имя игрока (Ник):<br /><span style=" font-size:11pt; font-style:italic;">(Этот ник будет также использоваться для входа в онлайн игру)</span></p></body></html> - - + + Store log files for: Хранить файлы журнала: - - + + Day(s) Дня(ей) @@ -5984,44 +6048,44 @@ p, li { white-space: pre-wrap; } Ники и аватары - - + + Show cards chance monitor Показывать монитор шансов - - + + Disable splashscreen on startup Отключить заставку при запуске - - + + Game Table Игровой стол - - + + Card Deck Колода карт - - + + Card Back Рубашка карт - - + + Use card back from card style Использовать рубашку из стиля карт - - + + Use custom card back picture: Использовать собственную рубашку: @@ -6050,71 +6114,89 @@ p, li { white-space: pre-wrap; } Пароль: - - + + Avatar Server: Адрес сервера картинок аватаров: - + Style Стиль - + Factory Settings Сброс настроек - - + + + Common + + + + + Don't translate poker strings like check, call, raise from game table style надо бы уточнить как и на что влияет эта функция Не переводить покерные названия такие как "check", "call", "raise" - - + + Show country flag in the corner of avatar Показывать флаг страны в углу аватара - - + + Activate the "accidentally call after big raise" blocker Блокировка случайного ответа после большого повышения ставки - - - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + + + Add ... Добавить... - - - - + + + + Remove Убрать - - - - + + + + Preview - Information: Предпросмотр и информация: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6127,31 +6209,31 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Получить новые стили игровых столов для PokerTH...</span></a></p></body></html> - - - - + + + + Description Описание - - - - + + + + Maintainer Разработчик - - - + + + State Состояние - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6164,12 +6246,18 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Получить новые стили колод PokerTH...</span></a></p></body></html> - + + + Allow spectators to watch the game + + + + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6188,20 +6276,20 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Примечание: рекомендуемые размеры картинки </span><span style=" font-weight:600; font-style:italic;">ширина=48, высота=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Задержка между раздачами: - - + + Server Сервер - - + + Game Игра @@ -6218,73 +6306,73 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Примечание: по умолчанию </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Настройки игры</span><span style=" font-size:12pt; font-style:italic;"> такие как &quot;Максимальное количество игроков&quot;, &quot;Начальная сумма&quot; и &quot;Начальная ставка&quot; будут взяты </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">из Настроек сетевой игры.</span></p></body></html> - - + + Default game name: Имя игры по умолчанию: - - + + Default game type: Тип игры по умолчанию: - - + + Standard Стандартный - - + + Registered players only Только зарегистрированнные игроки - - + + Invited players only Только приглашенные игроки - - + + Ranking game Рейтинговая игра - - + + Show lobby chat Показывать общий чат - - + + Automatically leave the table after the game finished Автоматически покинуть стол после окончания игры - - + + Ignored Players Игнорируемые игроки - - + + Player Игрок - - + + Remove Player Удалить игрока - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6297,19 +6385,19 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Имя игрока (Ник):<br /><span style=" font-style:italic;">(Этот ник будет также использоваться для входа в онлайн игру)</span></p></body></html> - - + + Opponent 7: Оппонент 7: - - + + Opponent 8: Оппонент 8: - + Note: Best avatar quality with image ratio like width=50, height=50. @@ -6334,14 +6422,14 @@ p, li { white-space: pre-wrap; } Удалить - - + + Reset all settings to default ... Сбросить все настройки на настройки по умолчанию... - - + + Note: You can not reset all settings to default during a running game! Примечание: Вы не можете сбросить все настройки на настройки по умолчанию при запущенной игре. @@ -6354,8 +6442,8 @@ p, li { white-space: pre-wrap; } Оппонент 6: {10:?} - - + + Opponent 9: Оппонент 9: @@ -6363,11 +6451,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Ошибка настроек @@ -6384,7 +6472,7 @@ Please select an valid directory! Укажите правильный каталог! - + Select your flipside picture Выберите свою картинку рубашки карт @@ -6393,24 +6481,24 @@ Please select an valid directory! Картинки (*.png) - + Open Directory Открыть каталог - + Images (*.png *.jpg *.gif) Картинки (*.png *.jpg *.gif) - - + + Blinds Error Ошибка ставок - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -6477,12 +6565,12 @@ This first-small-blind-value will be set to maximum allowed value. Турецкий - + Language Changed Язык изменен - + You have changed application language to %1. Please restart PokerTH to load new language! Вы изменили язык приложения на %1. @@ -6519,15 +6607,15 @@ Please restart PokerTH to load new language! Тамильский - + The entered flipside picture doesn't exist. Please enter an valid picture! Указанная картика рубашки карт не существует. Укажите правильную картинку! - - + + The log file directory doesn't exist. Please select an valid directory! Указанный каталог для лог-файла не существует. @@ -6569,7 +6657,7 @@ Please select an valid directory! Шведский - + The entered server list address is not a valid URL. Please enter a valid server list address! Введенный список серверов не является ссылкой. @@ -6606,140 +6694,140 @@ Please enter a valid server list address! - + The opponent names are not unique. Please choose different names for each Opponent! Имена оппонентов не являются уникальными. Пожалуйста, выберите различные названия для каждого оппонента! - + Settings Information Сведения настроек - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Вы изменили каталог лог-файла. Перезапустите PokerTH, чтобы использовать новый каталог для лог-файлов! - - + + Maintainer Name Имя разработчика - - + + Maintainer EMail E-Mail адрес разработчика - - + + Create Date Дата создания - + Windows Behaviour Оформление окна - + scaleable масштабируемое - + fixed фиксированное - + Minimum Size Минимальный размер - + Maximum Size Максимальный размер - + Fixed Size Фиксированный размер - + State Состояние - + Please select your game table style Пожалуйста, выберите стиль игрового стола - + PokerTH game table styles (*.xml) Стили столов PokerTH (*.xml) - + Game Table Style Error Ошибка стиля игрового стола - + Selected game table style file is already in the list. Please select another one to add! Выбранный стиль игрового стола уже есть в списке. Выберите еще один для добаления! - + Game Table Style File Error Ошибка файла стиля игрового стола - + Could not load game table style file correctly. Style will not be placed into list! Некоректный файл стиля игрового стола. Стиль не будет добавлен в список! - + Please select your card deck style Пожалуйста, выберите ваш стиль колоды - + PokerTH card deck styles (*.xml) Стили колоды PokerTH (*.xml) - + Card Deck Style Error Ошибка стиля колоды карт - + Selected card deck style file is already in the list. Please select another one to add! Выбранный стиль колоды уже в списке. Выберите еще один для добавления! - + Card Deck Style File Error Ошибка файла стиля колоды карт - + Could not load card deck style file correctly. Style will not be placed into list! Некорректный файл стиля колоды карт. @@ -6786,12 +6874,12 @@ Style will not be placed into list! PokerTH SQL лог-файл (*.pdb) - + PokerTH - Settings PokerTH - Настройки - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Внимание: это удалит все ваши личные настройки и закроет PokerTH! @@ -6873,12 +6961,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Ошибка сервера - + You should not kick yourself from this game! Вы не можете исключить себя из игры! @@ -7063,106 +7151,106 @@ Please choose another one. Выберите другое имя. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Ошибка сети - + Server address was not set. Не установлен адрес сервера. - + An invalid port was set (ports 0-1023 are not allowed). Указан неверный порт (диапазон 0-1023 не допускается). - + Could not create a socket for TCP communication. Не могу создать сокет для TCP-соединения. - + Could not set the IP address. Не могу установить IP адрес. - + Could not set the port for this type of address. Не могу установить порт для этого типа адреса. - + The server name could not be resolved. Не могу определить имя сервера. - + Bind failed - please choose a different port. Подключение на порт не удалось - выберите другой порт. - + Internal network error: "listen" failed. Внутренняя сетевая ошибка: неудачная команда "listen". - + Server execution was terminated. Работа сервера была прервана. - + Could not connect to the server. Не могу соединиться с сервером. - + Connection timed out. Please check the server address. @@ -7173,12 +7261,12 @@ If the server is behind a NAT-Router, make sure port forwarding has been set up Если сервер находится за NAT-маршрутизатором, удостоверьтесь, что обращение к порту сервера разрешено. - + Internal network error: "select" failed. Внутренняя сетевая ошибка: неудачная команда "select". - + Internal network error: "send" failed. Внутренняя сетевая ошибка: неудачная команда"send". @@ -7187,31 +7275,31 @@ If the server is behind a NAT-Router, make sure port forwarding has been set up Соединение было закрыто сервером. - + The connection to the server was lost. Соединение с сервером было потеряно. - + Internal network error: Duplicate TCP connection. Внутренняя сетевая ошибка: двойное TCP-соединение. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Принят неверный сетевой пакет. Убедитесь, что все игроки используют одинаковую версию PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Ошибка внутреннего состояния. Убедитесь, что все игроки используют одинаковую версию PokerTH. - + Invalid server list URL. Please correct the address in the settings. Неверная ссылка на список серверов. @@ -7230,162 +7318,162 @@ Please make sure that the server list URL is correct. Убедитесь, что ссылка на список серверов верна. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Начать сетевую игру - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. Список серверов PokerTH содержит неверные сведения. Если вы используете собственный список серверов, убедитесь, что формат корректен. - + Could not unzip the PokerTH internet server list. Невозможно распаковать список серверов PokerTH. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Не возможно скачать список интернет серверов PokerTH. Проверьте правильность подключения к интернет. - + Could not open the target file when downloading the server list. не возможно загрузить указанный файл во время загрузки списка серверов. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Сервер PokerTH не поддерживает эту версию игры.<br>Зайдите на <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> и скачайте самую свежую версию. - + Sorry, this server is already full. Извините, этот сервер уже полон. - + Invalid login. Please check your username and password. Ошибка входа. Пожалуйста, проверьте свои имя пользователя и пароль. - + Your account is blocked indefinitely. Ваша учетная запись заблокирована на неопределенный срок. - + You cannot login at this time. Please try again in a few seconds. Вы не можете войти сейчас. Повторите попытку через несколько секунд. - + You cannot join this game, because another player in that game has your network address. Вы не можете присоединиться к этой игре, потому что другой игрок в этой игре имеет такой же сетевой адрес. - + Your connection to the server is very slow, the game had to start without you. Ваше подключение к серверу происходит очень медленно, игра была начата без вас. - + This game is of type invite-only. You cannot join this game without being invited. Эта игра только для приглашенных игроков. Вы не можете присоединиться к этой игре без приглашения. - + Invalid password when joining the game. Please reenter the password and try again. Неверный пароль при подключении. Введите пароль заново и подключитесь снова. - + The avatar report was accepted by the server. Thank you. Сообщение об аватаре было принято сервером. Спасибо. - + This avatar was already reported by another player. Об этом аватаре уже сообщалось другим игроком. - + An error occurred while reporting the avatar. Произошла ошибка при сообщении об аватаре. - + The game name report was accepted by the server. Thank you. Сообщение об имени игры было принято сервером. Спасибо. - + This game name was already reported by another player. Об этом имени игры сообщалось другим игроком. - + An error occurred while reporting the game name. Произошля ошибка при сообщении об имени игры - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. - + The password is too long. Please choose another one. Слишком длинный пароль. Выберите другой. @@ -7400,67 +7488,67 @@ Please choose a different name. Имя игрока слишком длинное, слишком короткое или неправильное. Выберите другое имя. - + The game name is either too short or too long. Please choose another one. Название игры слишком длинное или слишком короткое. Выберите другое название. - + The game could not be found. Игра не найдена. - + The chat text is invalid. Тескт чата неверный. - + The server referred to an unknown player. Aborting. Сервер обращается к неизвестному игроку. Остановка. - + Internal error: The current player could not be found. Внутренняя ошибка: Текущий игрок не найден. - + Internal error: The current player is not active. Внутренняя ошибка: Текущий игрок не активен. - + You were kicked from the server. Вы были отключены от сервера. - + You were temporarily banned from the server. Вы были временно заблокированы на сервере. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Ваше соединение с сервером более не активно. Перезайдите! - + The client player count is invalid. Неверное количество игроков на сервере. - + Too many manual blinds were set. Please reconfigure the manual blinds. Слишком много самостоятельных ставок. Пересмотрите список ставок. - + An invalid avatar file was configured. Please choose a different avatar. Указан неверный файл аватара. Выберите другой аватар. - + The selected avatar file is too large. Please choose a different avatar. Выбранный файл аватара слишком большой. Выберите другой аватар. @@ -7469,84 +7557,84 @@ Please choose a different name. Вы не можете загрузить файл аватары в данный момент. Попробуйте через пару секунд. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Произошла ошибка при обработке аватары. Пожалуйста, сообщите об этом администратору в общей комнате. - + Could not start game: Synchronization failed. Не могу начать игру: Синхронизация не удалась. - + The server is down for maintenance. Please try again later. Сервер находится на техобслуживании. Попробуйте позже. - + An internal error occured. Произошла внутренняя ошибка. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Сетевое предупреждение - + You were kicked from the game. Вы были отключены от игры. - + Sorry, this game is already full. Извините, все места в игре уже заняты. - + Unable to join - the server has already started the game. Подключение невозможно - игра уже начата. - + Your admin state timed out due to inactivity. Feel free to create a new game! Ваша игра слишком долго была неактивна. Создайте новую игру! - + You cannot join this type of game as guest. Вы не можете присоединиться к этому тип игры в качестве гостя. - + The settings are invalid for this type of game. Настройки недопустимы для этого типа игры. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Вышла новая версия PokerTH.<br>Зайдите на <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> и скачайте последнюю версию. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Эта бета-версия PokerTH устарела.<br>Зайдите на <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> и скачайте последнюю версию. - - + + Server Message Сообщение сервера diff --git a/ts/pokerth_sk.ts b/ts/pokerth_sk.ts index 9b7618c4..7d8a853d 100644 --- a/ts/pokerth_sk.ts +++ b/ts/pokerth_sk.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -244,22 +243,22 @@ Prosím, kontaktujte autora štýlu herného stola na "%4".Chyba štýlu herného stola - Neaktuálny - + Everything OK! Všetko je OK! - + Some pictures are missing, please contact style maintainer for this issue. Nejaké obrázky chýbajú, prosím, kontaktujte správcu štýlu pre vyriešenie tohto problému. - + Some style fields are missing, please contact style maintainer for this issue. Nejaké polia štýlu chýbajú, prosím, kontaktujte správcu štýlu kvôli tomuto problému. - + This style is outdated, please contact style maintainer for this issue. Tento štýl nie je aktuálny, prosím, kontaktujte správcu štýlu. @@ -422,52 +421,52 @@ Prosím, napíšte zostaviteľovi štýlu herného stola %3. - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file Uložiť súbor so záznamom PokerTH - + PokerTH SQL log (*.pdb) PokerTH SQL log (*.pdb) @@ -514,13 +513,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -557,18 +556,18 @@ Please verify that you are uploading a valid PokerTH log file. Nahlásiť nevhodného avatara - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Od tohto hráča už neobdržíte správy v chate alebo pozvánky na hru.<br>Naozaj chcete pridať hráča <b>%1</b> na zoznam ignorovaných? - - + + PokerTH - Question PokerTH - Otázka - + Are you sure you want to report the avatar of "%1" as inappropriate? Určite chcete nahlásiť avatara hráča "%1" ako nevhodného? @@ -601,8 +600,8 @@ Please verify that you are uploading a valid PokerTH log file. O PokerTH 0.5 - - + + About O @@ -635,8 +634,8 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + Project Projekt @@ -681,8 +680,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - úvodný návrh grafiky gui</span></p></body></html> - - + + Translation Preklad @@ -711,8 +710,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> jose1711@gmail.com</p></body></html> - - + + Thanks to Poďakovanie @@ -879,35 +878,41 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - za moderovanie fóra a spravovanie bug trackera a želaní užívateľov</p></td></tr></table></body></html> - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - + + License Licencia - + + + Third party libs + + + + Close Zavrieť @@ -942,8 +947,8 @@ p, li { white-space: pre-wrap; } © 2006-2007, FHammer, FThauer, LMay - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> @@ -1422,8 +1427,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';">Jozef Riha - jose1711 (at) gmail (dot) com</span></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1432,7 +1437,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1684,12 +1689,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Manuálne stanovenie stávky - + You cannot set more than 30 manual blinds. Nemôžete nastaviť viac ako 30 manuálnych stávok. @@ -1843,8 +1848,8 @@ Prosím, vyberte si iné! createInternetGameDialog - - + + Create Game Vytvoriť hru @@ -1857,14 +1862,14 @@ Prosím, vyberte si iné! Časový limit pre hráčovu akciu (sek): - - + + Maximum number of players: Maximálny počet hráčov: - - + + Start Cash: Úvodná hotovosť: @@ -1873,19 +1878,25 @@ Prosím, vyberte si iné! Malá stávka naslepo: - - + + Password: Heslo: - + Delay between hands: Prestávka medzi rozdaniami: - + + + Allow spectators to watch the game + + + + Cancel Zrušiť @@ -1902,7 +1913,7 @@ Prosím, vyberte si iné! - + Default game name: Východzí názov hry: @@ -1937,38 +1948,38 @@ Prosím, vyberte si iné! Vyhodnocovaná hra - + Blinds Stávky - + Use saved blinds settings Použiť uložené nastavenie stávok - + Change blinds settings ... Zmeniť nastavenia stávok... - - + + $ $ - + Timeout for player action: Časový limit pre hráčovu akciu: - - + + s @@ -2093,8 +2104,8 @@ Prosím, vyberte si iné! gameLobbyDialog - - + + Lobby-Chat Lobby-Chat @@ -2107,62 +2118,68 @@ Prosím, vyberte si iné! Súkromný - - + + Game Info Info o hre - - + + Connected Players Pripojení hráči - - + + + Spectators + + + + + First small blind: Prvá malá stávka: - - + + Blinds raise interval: Interval zvyšovania stávok: - - + + Blinds raise mode: Režim zvyšovania stávok: - - + + Timing: - - + + Fill up with computer opponents Vyplniť počitačovými súpermi - - + + Sort alphabetically Zoradiť podľa abecedy - - + + Sort by country Zoradiť podľa krajiny - - + + Display idle players Zobraziť neaktívnych hráčov @@ -2183,8 +2200,8 @@ Prosím, vyberte si iné! Malá stávka naslepo: - - + + Start Cash: Úvodná hotovosť: @@ -2194,7 +2211,7 @@ Prosím, vyberte si iné! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -2223,8 +2240,10 @@ p, li { white-space: pre-wrap; } Dostupní hráči + + Players - Hráči + Hráči Kick Player @@ -2251,8 +2270,8 @@ p, li { white-space: pre-wrap; } Režim zvyšovania stávok: - - + + Manual blinds list: Ručný zoznam stávok: @@ -2261,32 +2280,30 @@ p, li { white-space: pre-wrap; } Čas pre hráčovu akciu (sek): - - + + Game type: Typ hry: - - + + &Leave Game &Opustiť hru - - Join &any game - P&ridať sa k ľubovoľnej hre + P&ridať sa k ľubovoľnej hre - - + + &Create Game &Vytvoriť hru - - + + &Join Game &Pridať sa k hre @@ -2309,38 +2326,38 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Kliknite sem, ak chcete vidieť online rebríček</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - Bez filtrovania zoznamu hier - - + + search for player ... hľadanie hráča... - - + + 1 - Show open games 1 - Zobraziť otvorené hry - - + + 2 - Show open & non-full games 2 - Zobraziť otvorené & voľné hry - - + + 3 - Show open & non-full & non-private games 3 - Zobraziť otvorené & voľné & nesúkromné hry - - + + 4 - Show open & non-full & private games 4 - Zobraziť otvorené & voľné & súkromné hry @@ -2351,20 +2368,20 @@ p, li { white-space: pre-wrap; } Internetové hracie lobby - - + + 5 - Show open & non-full & ranking games - - + + &Start Game &Spustiť hru - - + + &Kick Player &Vyhodiť hráča @@ -2396,46 +2413,46 @@ p, li { white-space: pre-wrap; } hra - - - - + + + + Game Info Info o hre - + Server Error Chyba servera - + You should not kick yourself from this game! Nemali by ste z tejto hry vykopnúť sám seba! - + Joining a private Game Pripájam sa k súkromnej hre - - - + + + Game Hra - - - + + + Players Hráči - - - + + + State Stav @@ -2444,43 +2461,41 @@ p, li { white-space: pre-wrap; } Súkromný - + You are about to join a private game. Please enter the password! Chcete sa pripojiť k súkromnej hre. Prosím zadajte heslo! - + running spúšťam - + open otvorená - - Connected players - Pripojení hráči + Pripojení hráči - + hands rozdania - + minutes minúty - + double blinds dvojité stávky - + manual blinds order ručné stanovenie stávok @@ -2494,1337 +2509,1336 @@ p, li { white-space: pre-wrap; } R - - - + + + P - - - + + + Time - - - + + + Available Players Dostupní hráči - + Invite player Pozvať hráča - + Ignore player Ignorovať hráča - + Player infos ... Informácie o hráčovi ... - - + + Show player stats - - + + Admin action ... - + Total kickban - + Report inappropriate game name - + Close game - - - + + + Standard Štandardná - - - + + + Registered players only Iba registrovaní hráči - - - + + + Invited players only Iba pozvaní hráči - - - + + + Ranking game Vyhodnocovaná hra - Connected players - max. %1 - Pripojení hráči - max. %1 + Pripojení hráči - max. %1 - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Litovština - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - - - + + + T @@ -3839,82 +3853,85 @@ p, li { white-space: pre-wrap; } - - - + + Spectate + + + + + + sec (action) - - - + + + sec (hand delay) - - Connected players - Max. %1 - Pripojení hráči - Max. %1 + Pripojení hráči - Max. %1 - - + + running games: %1 spustené hry: %1 - - + + open games: %1 otvorené hry: %1 - + Invite %1 Pozvať %1 - + Ignore %1 Ignorovať %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 bol(a) pozvaný(á) k %2 užívateľom %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 odmietol pozvanie k %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 sa nemôže pridať k %2, pretože je zaneprázdnený.</span> - - + + The game will start in<br><b>%1</b> seconds. Hra sa začne o <br><b>%1</b> sekúnd. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Pridali ste sa k hre, ktorej typ je "len na pozvánku". Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich priezvisko v zozname dostupných hráčov. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Prišla vám pozvánka ku hre <b>%1</b> od <b>%2</b>.<br>Želáte si pridať sa k tejto hre? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Od tohto užívateľa už neobdržíte správy v chate alebo pozvánky do hry.<br>Naozaj si prajete pridať hráča <b>%1</b> do zoznamu ignorovaných? @@ -3923,52 +3940,65 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie hráči na chate: %1 - - + + connected players: %1 pripojení hráči: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + search for player ... hľadanie hráča... - + Chat is only available to registered players. Chat je dostupný len registrovaným hráčom. - + Invite player ... Pozvať hráča... - + Ignore player ... Ignorovať hráča... - + %1 is playing in "%2". %1 hrá v "%2". - + %1 is not playing at the moment. %1 momentálne nehrá. - - + + PokerTH - Info Message PokerTH - Informačná správa - - - - + + + + PokerTH - Question PokerTH - Otázka @@ -3992,22 +4022,22 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie QGroupBox { background-image: url(:/graphics/resources/graphics/toolboxFrameBG.png) } - + Hands Rozdania - + Chat Chat - + Log Záznam - + Speed: Rýchlosť: @@ -4024,57 +4054,57 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie Hra - - + + Start Local Game ... Spustiť lokálnu hru... - - + + Ctrl+N Ctrl+N - - + + Quit Ukončiť - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... O PokerTH... - - + + Settings ... Nastavenia... - - + + Create Network Game ... Vytvoriť sieťovú hru... - - + + Join Network Game ... Pripojiť sa k sieťovej hre... - - - + + + Fullscreen Celá obrazovka @@ -4083,8 +4113,8 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie ⌘F - - + + Show/Hide Chat Window Zobraziť/skryť okno chatu @@ -4097,8 +4127,8 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie ⌘H - - + + Show/Hide Log Window Zobraziť/skryť okno s logmi @@ -4107,53 +4137,53 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie ⌘L - - - - - - + + + + + + Show/Hide Hands Window Zobraziť/skryť okno rozdaní - - + + Ctrl+O Ctrl+O - + Save Uložiť - - + + Ctrl+J Ctrl+J - - + + Ctrl+F Ctrl+F - - + + Ctrl+T Ctrl+T - - + + Ctrl+H Ctrl+H - - + + Ctrl+L Ctrl+L @@ -4166,14 +4196,14 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie Sieťová hra - - + + Internet Game ... Internetová hra... - - + + Ctrl+I Ctrl+I @@ -4182,22 +4212,22 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie Vsadiť všetko - + Away Preč - + Manual Action (default) Manuálna akcia (východzie) - + Auto-Check / Auto-Fold Auto-Ok / Auto-Zložiť - + Auto-Check / Auto-Call-Any Auto-Ok / Auto-Dorovnať-čokoľvek @@ -4207,103 +4237,103 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie PokerTH 0.6-beta - Open-source Engine pre Texas Holdem - - + + Show/Hide Away Window Zobraziť/skryť okno neprítomnosti - - + + Ctrl+A Ctrl+A - + Kick Vykopnúť - + Vote Timeout: Čas pre hlasovanie: - + Yes Áno - + No Nie - + Player info - + Chance Šanca - + Settings Nastavenia - + Configure PokerTH - + Configure PokerTH ... Nastaviť PokerTH ... - - + + Close Zavrieť - - + + Ctrl+X Ctrl+X - + Vote started by: Hlasovanie navrhol(la): - - + + Show/Hide Chance Window Zobraziť/skryť okno so šancou - - + + Ctrl+C Ctrl+C - + &View &Zobraziť - + &Settings &Nastavenia - + Shortcut: <Shift> Skratka: <Shift> @@ -4311,19 +4341,19 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Zastaviť @@ -4340,14 +4370,14 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie F1 - Zložiť karty/Vsadiť všetko | F2 - Zdržať sa/Dorovnať | F3 - Stávka/Zvýšiť - - - - - - - - + + + + + + + + Start Štart @@ -4508,8 +4538,8 @@ Prosím, vyberte si iné meno. Ľutujem, táto hra je už plná. - - + + Chat Chat @@ -4594,12 +4624,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Prosím navštívte <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> a stiahnite najnovšiu verziu. - + Closing PokerTH during network game Zatváram PokerTH počas sieťovej hry - + You are the hosting server. Do you want to close PokerTH anyway? Vy ste hosťujúci server. Chcete ukončiť PokerTH i napriek tomu? @@ -4616,16 +4646,16 @@ Prosím navštívte <a href="http://www.pokerth.net/" target=" Táto betaverzia PokerTH je zastaralá.<br>Prosím navštívte <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> a stiahnite si najnovšiu verziu. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Open-Source Texas Holdem Engine - - - - - + + + + + Lobby Lobby @@ -4634,12 +4664,12 @@ Prosím navštívte <a href="http://www.pokerth.net/" target=" Došlo k internej chybe avatara. Prosím nahláste ju adminovi v lobby chate. - + PokerTH - Internet Game Message PokerTH - Správa hry na internete - + Attention! Do you really want to leave the current game and go back to the lobby? Upozornenie! Určite chcete opustiť momentálnu hru @@ -4700,62 +4730,67 @@ Uistite sa, prosím, že ste pripojený priamo na internet. Nepodarilo sa otvoriť cieľový súbor pri sťahovaní zoznamu serverov. - + PokerTH %1 PokerTH %1 - - + + Chance Šanca - + Really want to exit? Naozaj chcete ukončiť? - + PokerTH - Close Table? PokerTH - Uzatvoriť stôl? - - + + Kick Vykopnúť - - + + Do you want to kick <b>%1</b><br>from this game? Želáte si vykopnúť <b>%1</b><br>z tejto hry? - - - - + + + + <b>%1</b> secs left zostáva <b>%1</b> sekúnd - + vote hlas - + votes hlasy(ov) - - + + Chat is only available to registered players. Chat je dostupný len registrovaným hráčom. + + + Spectators + + PokerTH - Warning PokerTH - Varovanie @@ -4779,14 +4814,14 @@ Ak ste dočasne mimo, môžete použiť nástroje "preč" v nástrojov Proti vám bol(o) <b>%1</b> %2.<br><b>%3</b> hlasov je treba na vykopnutie. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Hráč <b>%1</b> má <b>%2</b> %3<br>proti. Na vykopnutie je potrebných <b>%4</b> hlasy(ov). - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Je proti vám <b>%1</b> %2. <br><b>Na vykopnutie je potrebných <b>%3</b> hlasy(ov). @@ -5027,25 +5062,21 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Chyba pri načítaní súboru s profilom servera - - - - Could not load server-profiles-file: - Nepodarilo sa prečítať súbor s profilom servera: + Nepodarilo sa prečítať súbor s profilom servera: - + Save Server Profile Error Chyba pri ukladaní súboru s profilom servera @@ -5054,31 +5085,45 @@ p, li { white-space: pre-wrap; } Profil s názvom: " - + + + + + Could not load server-profiles-file: +%1 + + + + Read Server-Profile List Error Chyba pri načítaní zoznamu profilov servera - + Could not read server-profiles list Nepodarilo sa prečítať zoznam s profilmi servera - - + + Save Server-Profile-File Error Chyba pri ukladaní súboru s profilom servera - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Nepodarilo sa uložiť súbor s profilom servera: + Nepodarilo sa uložiť súbor s profilom servera: - + A profile with the name: %1 already exists. Would you like to overwrite ? Profil s názvom: %1 už existuje. @@ -5146,12 +5191,12 @@ Prajete si ho prepísať? manualBlindsOrderDialogImpl - + Manual Blinds Order Manuálne stanovenie stávok - + You cannot set more than 30 manual blinds. Nemôžete nastaviť viac ako 30 manuálnych stávok. @@ -5196,7 +5241,7 @@ Prajete si ho prepísať? - + Game Speed: Rýchlosť hry: @@ -5233,13 +5278,13 @@ Prajete si ho prepísať? - + Use saved blinds settings Použiť uložené nastavenia stávok - + Change blinds settings ... Zmeniť nastavenia stávok... @@ -5286,14 +5331,14 @@ Prajete si ho prepísať? selectAvatarDialogImpl - - - + + + Avatar File Error Chyba súboru s avatarom - + Please select an avatar from the list! Prosím, vyberte si avatara zo zoznamu! @@ -5304,7 +5349,7 @@ Please enter an valid picture! Prosím, zadajte platný obrázok! - + Select external avatar picture Vyberte externý obrázok avatara @@ -5313,19 +5358,19 @@ Prosím, zadajte platný obrázok! Obrázky (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Veľkosť súboru vybraného obrázku je príliš veľká. (max. 30KB) Prosím vyberte menší obrázok! - + Images (*.png *.jpg *.gif) Obrázky (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! Zadaný obrázok s avatarom neexistuje. @@ -5341,31 +5386,31 @@ Prosím zadajte platný obrázok! Nastavenia - + Note: Best quality with image ratio like width=48, height=76. - - + + Play sound effects Prehrávať zvukové efekty - - + + Sound Volume: Hlasitosť zvuku: - - + + 10 10 - - + + Show flip-card animation Ukazovať animáciu otáčania kariet @@ -5392,14 +5437,14 @@ p, li { white-space: pre-wrap; } Implicitný - - + + Show buttons for small blind and big blind Zobrazovať tlačidlá pre malú a veľkú stávku - - + + Show fade-out animation for non-winning cards Animácia stmavenia nevýherných kariet @@ -5408,13 +5453,13 @@ p, li { white-space: pre-wrap; } Zobrazovať správy v stavovom riadku - + Show left toolbox Zobrazovať ľavú nástrojovú lištu - - + + Play blind raise notification @@ -5430,13 +5475,13 @@ p, li { white-space: pre-wrap; } Zobrazovať na začiatku intro - + Show right toolbox Zobrazovať pravú nástrojovú lištu - - + + Show game settings dialog on every new game Zobrazovať dialógové okno s nastaveniami pred každou novou hrou @@ -5445,8 +5490,8 @@ p, li { white-space: pre-wrap; } Počet rozdaní pred zvýšením malej stávky naslepo: - - + + Number of players: Počet hráčov: @@ -5459,22 +5504,22 @@ p, li { white-space: pre-wrap; } Malá stávka naslepo: - - + + Game Speed: Rýchlosť hry: - - - - + + + + Start Cash: Úvodná hotovosť: - - + + Pause between hands (press "start" button to go on) Prestávka medzi rozdaniami (stlačte tlačidlo "start" pre pokračovanie) @@ -5491,48 +5536,48 @@ p, li { white-space: pre-wrap; } Nastavenia servera - - + + Server Password: Heslo servera: - - - - + + + + Server Port: Port servera: - - - - + + + + Use SCTP Používať SCTP - - - - + + + + Use IPv6 Používať IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Čo je to?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Čo je to?</a> @@ -5545,8 +5590,8 @@ p, li { white-space: pre-wrap; } Rýchlosť hry počítačových súperov: - - + + Maximum number of players: Maximálny počet hráčov: @@ -5563,44 +5608,44 @@ p, li { white-space: pre-wrap; } Prezývky hráčov - - + + Computer Engine Počítačový engine - - + + Opponent 6: Súper 6: - - + + Opponent 5: Súper 5: - - + + Opponent 4: Súper 4: - - + + Opponent 3: Súper 3: - - + + Opponent 2: Súper 2: - - + + Opponent 1: Súper 1: @@ -5615,18 +5660,18 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Poznámka: Najlepšiu kvalitu má avatar pri veľkosti obrázka </span><span style=" font-weight:600; font-style:italic;">šírka=50, výška=50.</span></p></body></html> - + Human Player: Ľudský hráč: - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Enable/Disable Logging Zapnúť/vypnúť zaznamenávanie @@ -5639,55 +5684,55 @@ p, li { white-space: pre-wrap; } Deň(dní) - - + + Log File Directory: Adresár s log súborom: - - + + Write log after every: Zapísať log pri každom: - - + + action (high frequent disc access) akcia (častý prístup na disk) - - + + hand (medium disc access) rozdanie (stredný prístup na disk) - - + + game (low disc access) hra (nízky prístup na disk) - + Log Messages Zaznamenávať správy - + Local Game Settings Nastavenia lokálnej hry - + Network Game Settings Nastavenia sieťovej hry - - + + Show own cards only on mouse click Zobraziť vlastné karty iba pri kliknutí myšou @@ -5698,18 +5743,18 @@ p, li { white-space: pre-wrap; } - + Sound Zvuk - - + + Network Server Settings Sieťové nastavenia servera - + Internet Game Settings Nastavenia internetovej hry @@ -5718,14 +5763,14 @@ p, li { white-space: pre-wrap; } Nastavenia internetového servera (Dedikovaný server) - - + + Server Address: Adresa servera: - - + + Use password for private game: Použiť heslo pre súkromnú hru: @@ -5746,89 +5791,89 @@ p, li { white-space: pre-wrap; } Opačné poradie F-klávesov (F1 - F3) - - - - + + + + First small blind: Prvá stávka: - - - - + + + + Raise blinds: Zvyšovať stávky: - - - - - - - - + + + + + + + + Every: Každých: - - - - + + + + hands rozdaní - - - - + + + + minutes minút - - - - + + + + Raise mode: Režim zvyšovania: - - - - + + + + Always double blinds Vždy dvojnásobné stávky - - - - + + + + Manual blinds order: Ručné stanovenie stávok: - - - - + + + + Edit ... Upraviť... - - + + Language: Jazyk: - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5847,26 +5892,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Poznámka: Najlepšiu kvalitu dosiahnete s takýmto pomerom strán obrázka </span><span style=" font-weight:600; font-style:italic;">šírka=48, výška=76.</span></p></td></tr></table></body></html> - - + + Sound Categories Kategórie zvuku - - + + Play game actions sounds like "check", "call", "raise" Prehrávať zvuky pre herné akcie ako "ok", "dorovnať", "zvýšiť" - - + + Play lobby chat notifications Prehrávať notifikácie lobby chatu - - + + Play network/internet game notifications like "player joined the game" Prehrávať notifikácie sieťovej/internetovej hry ako "hráč sa pripojil k hre" @@ -5875,7 +5920,7 @@ p, li { white-space: pre-wrap; } Zapnúť/vypnúť lobby chat (IRC server) - + Player Nicks/Avatars Prezývka/avatar hráča @@ -5890,19 +5935,19 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><span style=" font-style:italic;">Poznámka: Východzie </span><span style=" font-weight:600; font-style:italic;">Nastavenia hry</span><span style=" font-style:italic;"> ako "Maximálny počet hráčov", "Úvodná hotovosť" a "Malá stávka" budú použité </span><span style=" font-weight:600; font-style:italic;">z nastavení sieťovej hry.</span></p></body></html> - + Reverse order of F-Keys (F1 - F4) Opačné poradie F-klávesov (F1 - F4) - - + + Network / Internet Game Sieťová / Internetová hra - - + + Switch keyboard focus to bet-input-field if it's your turn Prepnúť zameranie klávesnice na políčko stávka-vstup, keď ste na ťahu @@ -5921,33 +5966,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Poznámka: Najlepšia kvalita pri pomere strán obrázka </span><span style=" font-weight:600; font-style:italic;">šírka=100, výška=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Časový limit pre hráčovu akciu: - - - - + + + + s s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5958,7 +6003,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Poznámka: Východzie </span><span style=" font-weight:600; font-style:italic;">nastavenie hry</span><span style=" font-style:italic;"> ako "Maximálny počet hráčov", "Úvodná hotovosť" a "Malá stávka" budú použité </span><span style=" font-weight:600; font-style:italic;">z nastavenia sieťovej hry..</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5969,156 +6014,180 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Poznámka: Najlepšia kvalita avatara pri pomere strán obrázka </span><span style=" font-weight:600; font-style:italic;">šírka=50, výška=50.</span></p></body></html> - - + + Automatic Server Configuration URL URL Automatickej konfigurácie servera - + Factory Settings - - + + + Common + + + + + Show country flag in the corner of avatar Zobrazovať vlajku krajiny v rohu avatara - - + + Activate the "accidentally call after big raise" blocker - - - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + + + Description Popis - - - - + + + + Maintainer Správca - - - + + + State Stav - - + + Delay between hands: Prestávka medzi rozdaniami: - - + + Server Server - - + + Serverlist Address: Adresa zoznamu serverov: - - + + Manual Server Configuration Manuálne nastavenie serveru - - + + Game Hra - - + + Default game name: Východzí názov hry: - - + + Default game type: Východzí typ hry: - - + + Standard Štandardná - - + + Registered players only Iba registrovaní hráči - - + + Invited players only Iba pozvaní hráči - - + + Ranking game Vyhodnocovaná hra - - + + Show lobby chat Zobraziť lobby chat - - + + Automatically leave the table after the game finished - - + + + Allow spectators to watch the game + + + + + Ignored Players Ignorovaní hráči - - + + Player Hráč - - + + Remove Player Odstrániť hráča - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6131,26 +6200,26 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ľudský hráč:<br /><span style=" font-style:italic;">(Táto prezývka bude použitá aj ako login pre hru na internete)</span></p></body></html> - - + + Store log files for: - - + + Day(s) Deň(Dní) - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -6199,44 +6268,44 @@ p, li { white-space: pre-wrap; } Prezývky/avatary - - + + Show cards chance monitor Zobraziť monitor šancí kariet - - + + Disable splashscreen on startup Vypnúť úvodnú obrazovku pri štarte - - + + Game Table Herný stôl - - + + Card Deck Štýl kariet - - + + Card Back Rub kariete - - + + Use card back from card style Použiť rub kariet zo štýlu kariet - - + + Use custom card back picture: Použiť na rube kariet vlastný obrázok: @@ -6253,21 +6322,21 @@ p, li { white-space: pre-wrap; } Heslo: - - + + Avatar Server: Server s avatarmi: - + Style Štýl - - + + Don't translate poker strings like check, call, raise from game table style Neprekladajte pokrové reťazce ako check, call, raise zo štýlu herného stola @@ -6280,32 +6349,32 @@ p, li { white-space: pre-wrap; } Aktivovať - - - - + + + + Add ... Pridať... - - - - + + + + Remove Odstrániť - - - - + + + + Preview - Information: Náhľad - Informácie: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6322,8 +6391,8 @@ p, li { white-space: pre-wrap; } Štýly kariet - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6336,24 +6405,24 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Získať nové štýly kariet PokerTH...</span></a></p></body></html> - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 7: Súper 7: - - + + Opponent 8: Súper 8: @@ -6362,8 +6431,8 @@ p, li { white-space: pre-wrap; } Súper 1: {10:?} - - + + Opponent 9: Súper 9: @@ -6371,11 +6440,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Chyba v nastaveniach @@ -6392,7 +6461,7 @@ Please select an valid directory! Prosím, vyberte platný adresár! - + Select your flipside picture Vyberte si obrázok pre rub kariet @@ -6401,24 +6470,24 @@ Prosím, vyberte platný adresár! Obrázky (*.png) - + Open Directory Otvoriť adresár - + Images (*.png *.jpg *.gif) Obrázky (*.png *.jpg *.gif) - - + + Blinds Error Chyba stávok - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -6474,12 +6543,12 @@ Hodnota prvej malej stávky bude nastavená na maximálnu možnú úroveň.Turečtina - + Language Changed Zmenený jazyk - + You have changed application language to %1. Please restart PokerTH to load new language! Zmenili ste jazyk aplikácie na %1. @@ -6496,15 +6565,15 @@ Prosím reštartujte PokerTH pre načítanie nového jazyka! Slovenčina - + The entered flipside picture doesn't exist. Please enter an valid picture! Zadaný obrázok pre rub karty neexistuje. Prosím zadajte platný obrázok! - - + + The log file directory doesn't exist. Please select an valid directory! Adresár pre súbor s logmi neexistuje. @@ -6546,7 +6615,7 @@ Prosím zadajte platný adresár! Švédština - + The entered server list address is not a valid URL. Please enter a valid server list address! Zadaná adresa zoznamu serverov nie je platná URL. @@ -6618,138 +6687,138 @@ Zadajte, prosím, platnú adresu zoznamu serverov! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Meno správcu - - + + Maintainer EMail E-mail správcu - - + + Create Date Dátum vytvorenia - + Windows Behaviour Správanie okien - + scaleable škálovateľný - + fixed fixná veľkosť - + Minimum Size Minimálne rozmery - + Maximum Size Maximálne rozmery - + Fixed Size Fixné rozmery - + State Stav - + Please select your game table style Prosím, vyberte si váš štýl herného stola - + PokerTH game table styles (*.xml) Štýly herných stolov PokerTH (*.xml) - + Game Table Style Error Chyba v štýle herného stola - + Selected game table style file is already in the list. Please select another one to add! Vybraný súbor so štýlom herného stola je už v zozname. Prosím, zvoľte si iný štýl na pridanie! - + Game Table Style File Error Chyba v súbore so štýlom herného stola - + Could not load game table style file correctly. Style will not be placed into list! Nepodarilo sa korektne načítať súbor so štýlom herného stola. Štýl nebude pridaný do zoznamu! - + Please select your card deck style Prosím, vyberte si váš štýl kariet - + PokerTH card deck styles (*.xml) Štýly kariet PokerTH (*.xml) - + Card Deck Style Error Chyba v štýle kariet - + Selected card deck style file is already in the list. Please select another one to add! Vybraný súbor so štýlom kariet je už v zozname. Prosím, zvoľte si iný štýl na pridanie! - + Card Deck Style File Error Chyba v súbore so štýlom kariet - + Could not load card deck style file correctly. Style will not be placed into list! Nepodarilo sa korektne načítať súbor so štýlom kariet. @@ -6760,12 +6829,12 @@ Style will not be placed into list! PokerTH - Súbor so záznamom - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6854,12 +6923,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Chyba servera - + You should not kick yourself from this game! Nemali by ste z hry vykopnúť sám seba! @@ -7048,106 +7117,106 @@ Please choose another one. Prosím vyberte si inú prezývku. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Chyba siete - + Server address was not set. Adresa servera nebola nastavená. - + An invalid port was set (ports 0-1023 are not allowed). Bol nastavený neplatný port (nie sú povolené porty 0-1023). - + Could not create a socket for TCP communication. Nepodarilo sa vytvoriť socket pre komunikáciu TCP. - + Could not set the IP address. Nepodarilo sa nastaviť IP adresu. - + Could not set the port for this type of address. Nepodarilo sa nastaviť port pre tento typ adresy. - + The server name could not be resolved. Meno servera sa nepodarilo resolvnúť. - + Bind failed - please choose a different port. Bind zlyhal - prosím, vyberte iný port. - + Internal network error: "listen" failed. Interná chyba siete: "listen" zlyhalo. - + Server execution was terminated. Spustenie servera bolo zrušené. - + Could not connect to the server. Nepodarilo sa pripojiť k serveru. - + Connection timed out. Please check the server address. @@ -7158,12 +7227,12 @@ Prosím, skontrolujte adresu serveru. Ak je server za NAT routrom, ubezpečte sa, že je na strane servera zapnuté presmerovanie portov (port forwarding). - + Internal network error: "select" failed. Interná chyba siete: "select" zlyhalo. - + Internal network error: "send" failed. Interná chyba siete: "send" zlyhalo. @@ -7172,31 +7241,31 @@ Ak je server za NAT routrom, ubezpečte sa, že je na strane servera zapnuté pr Spojenie bolo uzatvorené serverom. - + The connection to the server was lost. - + Internal network error: Duplicate TCP connection. Interná chyba siete: Duplikované TCP spojenie. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Bol prijatý neplatný sieťový paket. Prosím, uistite sa, že všetci hráči používajú rovnakú verziu PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Chyba interného stavu. Prosím, uistite sa, že všetci hráči používajú rovnakú verziu PokerTH. - + Invalid server list URL. Please correct the address in the settings. Neplatné URL zoznamu serverov. @@ -7215,162 +7284,162 @@ Please make sure that the server list URL is correct. Uistite sa, prosím, že URL zoznamu serverov je správna. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Spustiť sieťovú hru - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. Zoznam internetových serverov PokerTH obsahuje neplatné údaje. Ak používate vlastný zoznam serverov, uistite sa, prosím, že má správny formát. - + Could not unzip the PokerTH internet server list. Nepodarilo sa rozzipovať zoznam internetových serverov PokerTH. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Nepodarilo sa stiahnuť zoznam internetových serverov PokerTH. Uistite sa, prosím, že ste pripojený priamo na internet. - + Could not open the target file when downloading the server list. Nepodarilo sa otvoriť cieľový súbor pri sťahovaní zoznamu serverov. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. PokerTH server nepodporuje túto verziu hry.<br>Prosím navštívte <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> a stiahnite najnovšiu verziu. - + Sorry, this server is already full. Ľutujem, tento server je už plný. - + Invalid login. Please check your username and password. Neplatný login. Prosím, skontrolujte meno užívateľa a heslo. - + Your account is blocked indefinitely. Váš účet je trvalo blokovaný. - + You cannot login at this time. Please try again in a few seconds. Prihlásenie nie je v tejto chvíli možné. Skúste to, prosím, znovu o niekoľko sekúnd. - + You cannot join this game, because another player in that game has your network address. Nemôžete sa pripojiť k tejto hre, pretože iný hráč v tejto hre má vašu sieťovú adresu. - + Your connection to the server is very slow, the game had to start without you. Vaše pripojenie k serveru je veľmi pomalé, hra musela začať bez vás. - + This game is of type invite-only. You cannot join this game without being invited. Tento typ hry je len na pozvánku. Nemôžete sa pridať k tejto hre bez toho, aby vás niekto pozval. - + Invalid password when joining the game. Please reenter the password and try again. Neplatné heslo pri pripájaní sa k hre. Prosím, skúste to znovu. - + The avatar report was accepted by the server. Thank you. Hlásenie o avatarovi bolo prijaté serverom. Ďakujeme. - + This avatar was already reported by another player. Tento avatar už bol nahlásený iným hráčom. - + An error occurred while reporting the avatar. Počas nahlasovania avatara nastala chyba. - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. - + The password is too long. Please choose another one. Heslo je príliš dlhé. Prosím, zvoľte si iné heslo. @@ -7385,67 +7454,67 @@ Prosím, vyberte si iné meno. Meno hráča je príliš krátke, príliš dlhé alebo neplatné. Prosím vyberte iné. - + The game name is either too short or too long. Please choose another one. Názov hry je buď príliš krátky alebo príliš dlhý. Prosím zvoľte iný názov. - + The game could not be found. Hru sa nepodarilo nájsť. - + The chat text is invalid. Text chatu je neplatný. - + The server referred to an unknown player. Aborting. Server sa odvolal na neznámeho hráča. Ukončujem. - + Internal error: The current player could not be found. Interná chyba: Nepodarilo sa nájsť aktuálneho hráča. - + Internal error: The current player is not active. Interná chyba: Aktuálny hráč nie je aktívny. - + You were kicked from the server. Boli ste vykopnutý zo serveru. - + You were temporarily banned from the server. Boli ste dočasne zablokovaný na serveri. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Vaše pripojenie k serveru vypršalo z dôvodu neaaktivity. Stačí sa len znovu pripojiť! - + The client player count is invalid. Počet hráčov klienta je neplatný. - + Too many manual blinds were set. Please reconfigure the manual blinds. Bolo nastavených priliš veľa manuálnych stávok. Prosím upravte nastavenia manuálnych stávok. - + An invalid avatar file was configured. Please choose a different avatar. Bol nastavený neplatný súbor s avatarom. Prosím vyberte iného avatara. - + The selected avatar file is too large. Please choose a different avatar. Vybraný súbor s avatarom je príliš veľký. Prosím vyberte iného avatara. @@ -7454,84 +7523,84 @@ Prosím, vyberte si iné meno. Teraz nemôžete uploadovať nový súbor s avatarom. Skúste to, prosím, o niekoľko sekúnd. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Došlo k internej chybe avatara. Prosím nahláste ju adminovi v lobby chate. - + Could not start game: Synchronization failed. Nepodarilo sa spustiť hru: Zlyhala synchronizácia. - + The server is down for maintenance. Please try again later. Server je mimo prevádzky kvôli údržbe. Prosím skúste to neskôr. - + An internal error occured. Nastala interná chyba. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Sieťová notifikácia - + You were kicked from the game. Boli ste vykopnutý z hry. - + Sorry, this game is already full. Ľutujem, táto hra je už plná. - + Unable to join - the server has already started the game. Nepodarilo sa pripojiť k hre - na serveri už začala hra. - + Your admin state timed out due to inactivity. Feel free to create a new game! Vaše administrátorský stav vypršal z dôvodu neaktivity. Kedykoľvek môžete vytvoriť novú hru! - + You cannot join this type of game as guest. K tejto hre sa nemôžete pripojiť ako hosť. - + The settings are invalid for this type of game. Nastavenia sú neplatné pre tento typ hry. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Je dostupné nové vydanie PokerTH.<br>Prosím navštívte <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> a stiahnite si najnovšiu verziu. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Táto betaverzia PokerTH je zastaralá.<br>Prosím navštívte <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> a stiahnite si najnovšiu verziu. - - + + Server Message Správa serveru diff --git a/ts/pokerth_sv.ts b/ts/pokerth_sv.ts index d44358bd..0f5c2f23 100644 --- a/ts/pokerth_sv.ts +++ b/ts/pokerth_sv.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -168,22 +167,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -301,52 +300,52 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) @@ -393,13 +392,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -428,18 +427,18 @@ Please verify that you are uploading a valid PokerTH log file. - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + PokerTH - Question - + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -468,8 +467,8 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About Om @@ -490,59 +489,65 @@ Please verify that you are uploading a valid PokerTH log file. - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project Projekt - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - + + Translation Översättning - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + Thanks to Tack till - - + + License Licens - + + + Third party libs + + + + Close Stäng @@ -652,8 +657,8 @@ p, li { white-space: pre-wrap; } ?} {2006-2008,?} - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -662,7 +667,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -914,12 +919,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Manuell ordning - + You cannot set more than 30 manual blinds. Du kan inte definiera fler än 30 nivåer. @@ -1071,7 +1076,7 @@ Please choose another one! - + Default game name: @@ -1106,37 +1111,37 @@ Please choose another one! - - + + Maximum number of players: Maximalt antal spelare: - - + + Start Cash: Inköp: - - + + $ SEK - + Blinds Mörkar - + Use saved blinds settings Använd tidigare mörkar - + Change blinds settings ... Ändra mörkar ... @@ -1146,39 +1151,45 @@ Please choose another one! Hastighet för dator-spelare: - + Timeout for player action: Tid att agera på: - - + + s s - - + + Password: Lösenord: - + Delay between hands: - - + + + Allow spectators to watch the game + + + + + Create Game Skapa spel - + Cancel Avbryt @@ -1303,8 +1314,10 @@ Please choose another one! Spel + + Players - Spelare + Spelare State @@ -1315,44 +1328,50 @@ Please choose another one! Privat - - + + 5 - Show open & non-full & ranking games - - + + Game Info Spelinformation - - + + Connected Players Anslutna Spelare - - + + + Spectators + + + + + Start Cash: Inköp: - - + + First small blind: Ursprunglig liten mörk: - - + + Blinds raise interval: - - + + Blinds raise mode: @@ -1362,7 +1381,7 @@ Please choose another one! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1371,26 +1390,26 @@ p, li { white-space: pre-wrap; } - - + + Fill up with computer opponents Fyll ut med dator-spelare - - + + Sort alphabetically - - + + Sort by country - - + + Display idle players @@ -1403,14 +1422,14 @@ p, li { white-space: pre-wrap; } Släng ut spelare - - + + &Start Game - - + + &Kick Player @@ -1435,8 +1454,8 @@ p, li { white-space: pre-wrap; } Mörk-läge: - - + + Manual blinds list: Manuell ordning: @@ -1445,74 +1464,68 @@ p, li { white-space: pre-wrap; } Tid att agera på (i sek): - - + + Game type: - - + + Timing: - - + + &Leave Game - - - Join &any game - - - - - + + &Create Game - - + + &Join Game - - + + 0 - No game list filter - - + + search for player ... - - + + 1 - Show open games - - + + 2 - Show open & non-full games - - + + 3 - Show open & non-full & non-private games - - + + 4 - Show open & non-full & private games @@ -1533,8 +1546,8 @@ p, li { white-space: pre-wrap; } Anslut till spel - - + + Lobby-Chat Lobby-chat @@ -1551,46 +1564,46 @@ p, li { white-space: pre-wrap; } %1s spel - + Joining a private Game Ansluter till privat spel - + You are about to join a private game. Please enter the password! Du ansluter till ett privat parti. Vänligen ange lösenordet. - + open öppet - - - - + + + + Game Info Spelinformation - - - + + + Game - - - + + + Players Spelare - - - + + + State Status @@ -1599,76 +1612,71 @@ p, li { white-space: pre-wrap; } Privat - - - + + + P - - - + + + Available Players Tillgängliga spelare - + Invite player - + Ignore player - + Player infos ... - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - Connected players - max. %1 - - - - - - + + + T @@ -1683,115 +1691,127 @@ p, li { white-space: pre-wrap; } - - - + + Spectate + + + + + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game - - - Connected players - Max. %1 - - - - + running aktivt - - + + running games: %1 aktiva spel: %1 - - + + open games: %1 öppna spel: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -1800,1320 +1820,1314 @@ Feel free to invite other players by right-clicking on their nick in the availab Spelare i chatten: %1 - - + + connected players: %1 Anslutna spelare: %1 - - - Connected players - - - - + hands händer - + minutes minuter - + double blinds Dubbla mörkar vid höjning - + manual blinds order Manuell mörk-ordning - + Server Error Serverfel - + You should not kick yourself from this game! Du borde inte kicka dig själv från spelet! - + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3126,47 +3140,47 @@ Feel free to invite other players by right-clicking on their nick in the availab PokerTH 0.6-beta - Den öppna pokermotorn för Texas Hold'em - + Hands Kombinationer - + Chat Chatt - + Save Spara - + Log Logg - + Away Frånvarande - + Manual Action (default) Manuell handling (förval) - + Auto-Check / Auto-Fold Automatiskt Passa / Lägga sig - + Auto-Check / Auto-Call-Any Automatiskt Passa / Syna Allt - + Speed: Hastighet: @@ -3183,228 +3197,228 @@ Feel free to invite other players by right-clicking on their nick in the availab Nätverksspel - - + + Start Local Game ... Starta lokalt spel - - + + Ctrl+N Ctrl+N - - + + Quit Avsluta - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... Om PokerTH - - + + Settings ... Inställningar - - + + Create Network Game ... Skapa nätverks-spel - - + + Ctrl+O Ctrl+O - - + + Join Network Game ... Anslut till nätverks-spel - - + + Ctrl+J Ctrl+J - - - + + + Fullscreen Helskärm - - + + Ctrl+F Ctrl+F - - + + Show/Hide Chat Window Visa/Göm chatten - - + + Ctrl+T Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window Visa/Göm kombinationer - - + + Ctrl+H Ctrl+H - - + + Show/Hide Log Window Visa/Göm loggen - - + + Ctrl+L Ctrl+L - - + + Internet Game ... Internetspel - - + + Ctrl+I Ctrl+I - - + + Show/Hide Away Window Visa/Göm Frånvaro-fönstret - - + + Ctrl+A Ctrl+A - + Kick - + Vote Timeout: - + Yes - + No - + Player info - + Chance - + Settings Inställningar - + Configure PokerTH - + Configure PokerTH ... - - + + Close Stäng - - + + Ctrl+X - + Vote started by: - - + + Show/Hide Chance Window - - + + Ctrl+C - + &View - + &Settings - + Shortcut: <Shift> @@ -3412,19 +3426,19 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Sluta @@ -3437,7 +3451,7 @@ Feel free to invite other players by right-clicking on their nick in the availab Ctrl+N för att starta ett nytt spel - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Den öppna pokermotorn för Texas Hold'em @@ -3456,23 +3470,23 @@ Välj ett nytt namn. F1 - "All in" (Satsa allt) | F2 - Satsa/Höj | F3 - Pass/Syn | F4 - Lägg - - - - - - - - + + + + + + + + Start Starta - - - - - + + + + + Lobby Lobby @@ -3683,102 +3697,107 @@ Vänligen välj ett nytt namn. Automatiskt läge valt: Pass eller Lägg. - - + + Chat Chatt - + Closing PokerTH during network game Stänger PokerTH under nätverksspel - + You are the hosting server. Do you want to close PokerTH anyway? Du är värdserver för spelet, vill du stänga ner i alla fall? - + PokerTH - Internet Game Message PokerTH - Internetspels-meddelande - + Attention! Do you really want to leave the current game and go back to the lobby? OBS! Vill du verkligen lämna det nuvarande spelet och återvända till lobbyn? - - + + Chance - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. + + + Spectators + + internetGameLoginDialog @@ -3975,57 +3994,67 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Fel vid laddning av profilen - - - - Could not load server-profiles-file: - Kunde inte ladda Server-profilen: + Kunde inte ladda Server-profilen: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error Fel vid sparande av profil - + A profile with the name: %1 already exists. Would you like to overwrite ? En profil med namn: %1 existerar redan. Vill du skriva över den? - + Read Server-Profile List Error Fel vid inläsning av profillista - + Could not read server-profiles list Kunde inte läsa listan med server-profiler - - + + Save Server-Profile-File Error Fel vid sparande av profil - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Kunde inte spara Server-profilen: + Kunde inte spara Server-profilen: @@ -4090,12 +4119,12 @@ Vill du skriva över den? manualBlindsOrderDialogImpl - + Manual Blinds Order Manuell mörk-ordning - + You cannot set more than 30 manual blinds. Du kan inte definiera fler än 30 mörk-nivåer. @@ -4164,7 +4193,7 @@ Vill du skriva över den? - + Use saved blinds settings Använd tidigare mörkar @@ -4175,13 +4204,13 @@ Vill du skriva över den? - + Change blinds settings ... Ändra mörkar ... - + Game Speed: Hastighet: @@ -4222,38 +4251,38 @@ Vill du skriva över den? selectAvatarDialogImpl - - - + + + Avatar File Error Avatar-fil fel - + Please select an avatar from the list! Vänligen välj en avatar från listan! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Filstorleken på den valda bilden är för stor. (max 30KB) Vänligen välj en mindre bild. - + The entered avatar picture doesn't exist. Please enter an valid picture! Den angivna bilden finns inte. Välj en giltig bild. - + Select external avatar picture Välj egen avatarbild. - + Images (*.png *.jpg *.gif) Bilder (*.png *.jpg *.gif) @@ -4278,8 +4307,8 @@ Välj en giltig bild. Gränssnitt - - + + Language: Språk: @@ -4292,43 +4321,43 @@ Välj en giltig bild. Visa statusmeddelanden - - + + Show fade-out animation for non-winning cards Skugga icke-vinnande kort - - + + Show flip-card animation Visa kort-animeringar - - + + Show buttons for small blind and big blind Visa knappar för lilla och stora mörken - - + + Show own cards only on mouse click Visa egna kort enbart vid musklick - + Reverse order of F-Keys (F1 - F4) Vänd på ordningen av F-knapparna (F1 - F4) - - + + Network / Internet Game Nätverk- / Internetspel - - + + Switch keyboard focus to bet-input-field if it's your turn But fokus till satsningsrutan vid din tur @@ -4357,268 +4386,292 @@ p, li { white-space: pre-wrap; } - + Sound Ljud - + Factory Settings - - + + + Common + + + + + Disable splashscreen on startup - - + + Show country flag in the corner of avatar - - + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State Status - - + + Card Deck - - + + Card Back - - + + Use card back from card style - - + + Use custom card back picture: - - + + Play sound effects Spela ljudeffekter - - + + Sound Volume: Volym: - - + + 10 10 - - + + Sound Categories Ljud-kategorier - - + + Play game actions sounds like "check", "call", "raise" Spela ljud under partiet för handlingar som "pass", "syn", "höjning" - - + + Play lobby chat notifications Spela upp ljud i lobby-chatten - - + + Play network/internet game notifications like "player joined the game" Spela upp ljud vid nätverks- och internetspel, t ex "spelare anslöt till spelet" - + + + Allow spectators to watch the game + + + + OK - + Local Game Settings Inställningar för Lokalt Spel - - + + Number of players: Antal spelare: - - - - + + + + Start Cash: Inköp: - - - - - - - - + + + + + + + + $ SEK - - - - + + + + First small blind: Ursprunglig liten mörk: - - - - + + + + Raise blinds: Höj mörkar: - - - - - - - - + + + + + + + + Every: Var: - - - - + + + + hands hand - - - - + + + + minutes minut - - - - + + + + Raise mode: Mörk-läge: - - - - + + + + Always double blinds Dubbla mörkar vid höjning - - - - + + + + Manual blinds order: Manuell ordning: - - - - + + + + Edit ... Redigera ... - - + + Game Speed: Hastighet: - - + + Pause between hands (press "start" button to go on) Pausa mellan händerna (tryck på start-knappen för att fortsätta) - - + + Show game settings dialog on every new game Visa inställningsrutan vid varje nytt spel - + Network Game Settings Inställningar för Nätverks-spel - - + + Maximum number of players: Maximalt antal spelare: @@ -4627,14 +4680,14 @@ p, li { white-space: pre-wrap; } Ta bort - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4643,78 +4696,78 @@ p, li { white-space: pre-wrap; } Hastighet för dator-spelare: - - + + Timeout for player action: Tid att agera på: - - - - + + + + s s - - + + Network Server Settings Inställningar för Nätverks-server - - + + Server Password: Serverlösenord: - - - - + + + + Server Port: Serverport: - - - - + + + + Use SCTP Använd SCTP - - - - + + + + Use IPv6 Använd IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://sv.wikipedia.org/wiki/Ipv6">Vad är det här?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://sv.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Vad är det här?</a> - + Internet Game Settings Inställningar för Internet-spel - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4729,14 +4782,14 @@ p, li { white-space: pre-wrap; } Inställningar för Internetserver (dedikerad server) - - + + Server Address: Serveradress: - - + + Use password for private game: Använd lösenord för privat spel: @@ -4765,49 +4818,49 @@ p, li { white-space: pre-wrap; } Spelarnas namn - - + + Computer Engine Spelmotor - - + + Opponent 6: Motståndare 6: - - + + Opponent 5: Motståndare 5: - - + + Opponent 4: Motståndare 4: - - + + Opponent 3: Motståndare 3: - - + + Opponent 2: Motståndare 2: - - + + Opponent 1: Motståndare 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4818,13 +4871,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">OBS: Bäst avatar-kvalité uppnås med stoleksförhållande </span><span style=" font-weight:600; font-style:italic;">bredd=50, höjd=50.</span></p></body></html> - + Human Player: Mänsklig spelare: - - + + Enable/Disable Logging Aktivera/stäng av logg-funktionen @@ -4837,49 +4890,49 @@ p, li { white-space: pre-wrap; } Dag(ar) - - + + Log File Directory: Katalog för loggar: - - + + Write log after every: Skriv till log efter varje: - + Note: Best quality with image ratio like width=48, height=76. - - + + action (high frequent disc access) handling (många skrivningar till disk) - - + + hand (medium disc access) hand (medelmånga skrivningar till disk) - - + + game (low disc access) parti (få skrivningar till disk) - + Log Messages Loggmeddelanden - + Player Nicks/Avatars Spelarnamn/avatarer @@ -4888,58 +4941,58 @@ p, li { white-space: pre-wrap; } Visa vänster verktygsruta - + Show right toolbox Visa höger verktygsruta - + Show left toolbox - - + + Play blind raise notification - - + + Automatic Server Configuration URL - - + + Serverlist Address: - - + + Manual Server Configuration - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -4968,8 +5021,8 @@ p, li { white-space: pre-wrap; } - - + + Show cards chance monitor @@ -4978,51 +5031,51 @@ p, li { white-space: pre-wrap; } Lösenord: - - + + Avatar Server: - + Style - - + + Don't translate poker strings like check, call, raise from game table style - - - - + + + + Add ... - - - - + + + + Remove - - - - + + + + Preview - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5031,8 +5084,8 @@ p, li { white-space: pre-wrap; } - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5041,7 +5094,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5053,96 +5106,96 @@ p, li { white-space: pre-wrap; } - - + + Delay between hands: - - + + Server - - + + Game - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5151,14 +5204,14 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Motståndare 1: {7:?} - - + + Opponent 8: Motståndare 1: {8:?} @@ -5167,8 +5220,8 @@ p, li { white-space: pre-wrap; } Motståndare 1: {10:?} - - + + Opponent 9: Motståndare 1: {10:?} {9:?} @@ -5235,65 +5288,65 @@ p, li { white-space: pre-wrap; } Turkiska - - - - - + + + + + Settings Error Inställningsfel - + The entered flipside picture doesn't exist. Please enter an valid picture! Den angivna kortbilden finns inte. Välj en giltig bild. - - + + The log file directory doesn't exist. Please select an valid directory! Den angivna mappen finns inte. Välj en giltig mapp för loggfiler. - + Language Changed Nytt språk valt - + You have changed application language to %1. Please restart PokerTH to load new language! Du har bytt språk till %1. Starta om PokerTH för att se förändringen. - + Select your flipside picture Välj bild för kortens baksida - + Images (*.png *.jpg *.gif) Bilder (*.png *.jpg *.gif) - + Open Directory Öppna mapp - - + + Blinds Error Mörk-fel - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5392,152 +5445,152 @@ Det kommer sättas till det maximalt tillåtna värdet. - + The opponent names are not unique. Please choose different names for each Opponent! - + The entered server list address is not a valid URL. Please enter a valid server list address! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State Status - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5602,12 +5655,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Serverfel - + You should not kick yourself from this game! Du borde inte kicka dig själv från spelet! @@ -5784,106 +5837,106 @@ Please choose another one. Välj ett nytt namn. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Nätverksfel - + Server address was not set. Ingen server-adress angiven - + An invalid port was set (ports 0-1023 are not allowed). En ogiltig port var angiven (port 0-1023 är ogiltig). - + Could not create a socket for TCP communication. Kunde inte etablera TCP-kommunikation. - + Could not set the IP address. Kunde inte bestämma IP-adress. - + Could not set the port for this type of address. Kunde inte ställa in porten för den här typen av adress. - + The server name could not be resolved. Kunde inte koppla servernamnet till en IP-adress. - + Bind failed - please choose a different port. Uppkoppling misslyckades, vänligen välj en annan port. - + Internal network error: "listen" failed. Internt nätverksfel: "listen" misslyckades. - + Server execution was terminated. Servern avslutade oväntat. - + Could not connect to the server. Kunde inte ansluta till servern. - + Connection timed out. Please check the server address. @@ -5894,12 +5947,12 @@ Vänligen kontrollera serveradressen. Om servern befinner sig bakom en NAT-router, försäkra dig om att serverns portar har blivit korrekt inställda. - + Internal network error: "select" failed. Internt nätverksfel: "select" misslyckades. - + Internal network error: "send" failed. Internt nätverksfel: "send" misslyckades. @@ -5908,117 +5961,117 @@ Om servern befinner sig bakom en NAT-router, försäkra dig om att serverns port Anslutningen avbröts av servern. - + Internal network error: Duplicate TCP connection. Internt nätverksfel: Duplicerad TCP-anslutning. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Ett ogiltigt nätverkspaket har mottagits. Försäkra dig om att alla spelare använder samma version av PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Internt programfel. Försäkra dig om att alla spelare använder samma version av PokerTH. - + Invalid server list URL. Please correct the address in the settings. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. - + Could not unzip the PokerTH internet server list. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. - + Could not open the target file when downloading the server list. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. PokerTH servern stöder inte den här versionen av spelet.<br>Vänligen gå till <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> och ladda ner den senaste versionen. - + Sorry, this server is already full. Tyvärr, den här servern är fullsatt. - + Invalid login. Please check your username and password. - + Your account is blocked indefinitely. - + You cannot login at this time. Please try again in a few seconds. - + You cannot join this game, because another player in that game has your network address. - + Your connection to the server is very slow, the game had to start without you. - + This game is of type invite-only. You cannot join this game without being invited. - + Invalid password when joining the game. Please reenter the password and try again. Ogiltigt lösenord för det här partiet. Vänligen ange det korrekta lösenordet. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. - + The password is too long. Please choose another one. Lösenordet är för långt. Vänligen välj ett nytt lösenord. @@ -6033,221 +6086,221 @@ Vänligen välj ett nytt namn. Ditt angivna namn är för kort/långt eller ogiltigt. Vänligen välj ett nytt namn. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Starta nätverks-spel - + The connection to the server was lost. - + The game name is either too short or too long. Please choose another one. Namnet på partiet är antingen för kort eller för långt. Vänligen ange ett nytt namn. - + The game could not be found. Partiet kunde inte hittas. - + The chat text is invalid. Chatt-texten är ogiltig. - + The server referred to an unknown player. Aborting. Servern hänvisade till en okänd spelare. Avbryter. - + Internal error: The current player could not be found. Internt fel: Den aktuella spelaren kunde inte hittas. - + Internal error: The current player is not active. Internt fel: Den aktuella spelaren är inte aktiv. - + You were kicked from the server. Du slängdes ut från servern. - + You were temporarily banned from the server. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! - + The client player count is invalid. Antalet klienter är ogiltigt. - + Too many manual blinds were set. Please reconfigure the manual blinds. För många manuella mörkar angivna. Vänligen ställ in mörkarna på nytt. - + An invalid avatar file was configured. Please choose a different avatar. En ogiltig avatar var angiven. Vänligen välj en annan avatar. - + The selected avatar file is too large. Please choose a different avatar. Filstorleken på den valda avataren är för stor. Välj en annan avatar. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Ett internt avatarfel uppstod. Var vänlig och rapportera detta till en admin i lobbyn. - + Could not start game: Synchronization failed. Kunde inte starta spelet: Synkroniseringen misslyckades. - + The server is down for maintenance. Please try again later. Servern är nere för underhåll, vänligen försök senare. - + An internal error occured. Ett internt fel har inträffat. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Nätverksmeddelande - + You were kicked from the game. Du slängdes ut från spelet. - + Sorry, this game is already full. Tyvärr, det här spelet är fullsatt. - + Unable to join - the server has already started the game. Kan inte ansluta - servern har redan påbörjat spelet. - + Your admin state timed out due to inactivity. Feel free to create a new game! - + You cannot join this type of game as guest. - + The settings are invalid for this type of game. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. En ny version av PokerTH är tillgänglig. <br>Vänligen gå till <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> och ladda ner den senaste versionen. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Den här betaversionen av PokerTH är för gammal. <br>Vänligen gå till <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> och ladda ner den senaste versionen. - - + + Server Message - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. diff --git a/ts/pokerth_ta.ts b/ts/pokerth_ta.ts index ff865f1c..6d892d62 100644 --- a/ts/pokerth_ta.ts +++ b/ts/pokerth_ta.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -192,22 +191,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -319,52 +318,52 @@ Please contact the game table style builder %3. - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) @@ -411,13 +410,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -446,22 +445,18 @@ Please verify that you are uploading a valid PokerTH log file. - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - + இந்த நபரிடமிருந்து இனி பேச்சு தகவலோ விளையாடுவதற்கு அழைப்பிதலோ பெற முடியாது.<br>இருந்தும் இந்த விளையாட்டு வீரரை <b>%1</b> புறக்கணிப்பு பட்டியலில் போட விரும்புகிறீர்களா? - + Are you sure you want to report the avatar of "%1" as inappropriate? - You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - இந்த நபரிடமிருந்து இனி பேச்சு தகவலோ விளையாடுவதற்கு அழைப்பிதலோ பெற முடியாது.<br>இருந்தும் இந்த விளையாட்டு வீரரை <b>%1</b> புறக்கணிப்பு பட்டியலில் போட விரும்புகிறீர்களா? - - - - + + PokerTH - Question போகர்டேஹோ - வினா @@ -490,43 +485,43 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About அதைப்பற்றி - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project பணி திட்டம் - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> @@ -570,8 +565,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - ஆரம்ப ஜியுஐ வரைபட வடிவம்</span></p></body></html> - - + + Translation மொழிபெயர்ப்பு @@ -588,8 +583,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" ">மொழிபெயர்ப்பாளரின் பெயர் - மெயில் முகவரி</span></p></body></html> - - + + Thanks to நன்றிகள் @@ -640,13 +635,19 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - பொதுக்குழுவை பராமரிப்பதற்கும் பிழைகளை சீர் செய்வதற்கும் மற்றும் புது அம்சங்களை சேர்க்கவும்</span></p></body></html> - - + + License உரிமம் - + + + Third party libs + + + + Close மூடு @@ -675,8 +676,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">© 2006-2009, ப்ளோ தார், பெ ஹாம்மர், லோ மே</p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -685,7 +686,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -937,12 +938,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order சுய பந்தயத்தொகையின் வரிசை - + You cannot set more than 30 manual blinds. நீங்கள் முற்பதுக்கு மேற்ப்பட்ட சுய பந்தயத்தொகை விதிகளை அமைக்க முடியாது. @@ -1093,7 +1094,7 @@ Please choose another one! - + Default game name: விளையாட்டிற்கு தானாகவே உபயோகிக்க வேண்டிய பெயர் : @@ -1128,75 +1129,81 @@ Please choose another one! தரவரிசை விளையாட்டு - - + + Maximum number of players: விளையாட்டு வீரர்களின் அதிகபட்ச எண்ணிக்கை: - - + + Start Cash: பணம் செலுத்த ஆரம்பி: - - + + $ - + Blinds பந்தயத்தொகை - + Use saved blinds settings முன்பு பயன்படுத்திய பந்தயத்தொகை அமைப்பை உபயோகி - + Change blinds settings ... பந்தயத்தொகையின் அமைப்பை மாற்றுக ... - + Timeout for player action: விளையாட்டு வீரர் ஒரு செயல் செய்ய காலவரம்பு: - - + + s - - + + Password: இரகசிய சொல்: - + Delay between hands: ஒவ்வொரு சுற்றுக்கும் இடையிலான கால வரம்பு: - - + + + Allow spectators to watch the game + + + + + Create Game விளையாட்டை உருவாக்குக - + Cancel நிறுத்திவிடு @@ -1321,56 +1328,68 @@ Please choose another one! விளையாட இருக்கும் வீரர்கள் - - + + Game Info விளையாட்டை பற்றிய செய்தி - - + + Game type: விளையாட்டு முறை: - - + + Connected Players தொடர்பில் இருக்கும் விளையாட்டு வீரர்கள் - - + + search for player ... - - + + 5 - Show open & non-full & ranking games - - + + + Players + விளையாட்டு வீரர்கள் + + + + + Spectators + + + + + Start Cash: பணம் செலுத்த ஆரம்பி: - - + + First small blind: குறைந்தபட்ச ஆரம்ப கட்டாய பந்தயத்தொகை: - - + + Blinds raise interval: - - + + Blinds raise mode: @@ -1380,7 +1399,7 @@ Please choose another one! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1389,38 +1408,38 @@ p, li { white-space: pre-wrap; } - - + + Fill up with computer opponents மீதமுள்ள இடங்களை கணினி விளையாட்டு வீரர்கள் ஆக மாற்றுக - - + + &Start Game &Sவிளையாட்டை தொடங்குக - - + + &Kick Player &Kவிளையாட்டு வீரரை துரத்துக - - + + Sort alphabetically - - + + Sort by country - - + + Display idle players @@ -1441,8 +1460,8 @@ p, li { white-space: pre-wrap; } பந்தயத்தொகையை உயர்த்தும் முறை: - - + + Manual blinds list: சுய பந்தயத்தொகையின் பட்டியல்: @@ -1451,68 +1470,66 @@ p, li { white-space: pre-wrap; } விளையாட்டு வீரர் ஒரு செயல் செய்ய காலவரம்பு(நொடிகள்): - - + + &Leave Game &Lவிளையாட்டை விட்டு வெளியேறு - - Join &any game - &aஎந்த விளையாட்டிலும் சேர்க + &aஎந்த விளையாட்டிலும் சேர்க - - + + &Create Game &Cவிளையாட்டை உருவாக்குக - - + + &Join Game &Jவிளையாட்டில் சேர்க - - + + 0 - No game list filter 0 - விளையாட்டு பட்டியலின் வடிகட்டி இல்லை - - + + 1 - Show open games 1 - ஓடிக்கொண்டிருக்கும் விளையாட்டுகளை காட்டுக - - + + 2 - Show open & non-full games 2 - ஓடிக்கொண்டிருக்கும் & ஆட்டக்காரர்கள் நிரம்பாத விளையாட்டுகளை காட்டுக - - + + 3 - Show open & non-full & non-private games 3 - ஓடிக்கொண்டிருக்கும் & ஆட்டக்காரர்கள் நிரம்பாத & தனியார்-அல்லாத விளையாட்டுகளை காட்டுக - - + + 4 - Show open & non-full & private games 4 - ஓடிக்கொண்டிருக்கும் & ஆட்டக்காரர்கள் நிரம்பாத & தனியார் விளையாட்டுகளை காட்டுக - - + + Timing: - - + + Lobby-Chat வரவேற்பறை-உரையாடல் @@ -1525,134 +1542,138 @@ p, li { white-space: pre-wrap; } விளையாட்டு ஆரம்பமாகிறது. தயவு செய்து காத்திருக்கவும் ... - - - + + + sec (action) - - - + + + sec (hand delay) - + Joining a private Game ஒரு தனியார் விளையாட்டில் இணைந்துகொண்டிருக்கிறது - + You are about to join a private game. Please enter the password! நீங்கள் ஒரு தனியார் விளையாட்டில் இணைய போகிறீர்கள். தயவு செய்து இரகசிய சொல்லை தரவும்! - + open திற - - - - + + + + Game Info விளையாட்டை பற்றிய செய்தி - - - + + Spectate + + + + + + Game விளையாட்டு - - - + + + Players விளையாட்டு வீரர்கள் - - - + + + State வீரரின் தற்போதைய நிலவரம் - - - + + + P - - - + + + Available Players விளையாட இருக்கும் வீரர்கள் - + Invite player விளையாட்டு வீரரை விளையாட அழையுங்கள் - + Ignore player விளையாட்டு வீரரை புறக்கணிக்கவும் - + Player infos ... - + Report inappropriate game name - - - + + + Standard சாதாரண - - - + + + Registered players only பதிவு செய்த விளையாட்டு வீரர்கள் மட்டும் - - - + + + Invited players only அழைக்கப்பட்ட விளையாட்டு வீரர்கள் மட்டும் - - - + + + Ranking game தரவரிசை விளையாட்டு - Connected players - max. %1 - விளையாட்டில் இணைந்துள்ள வீரர்கள் - அதிகபட்சம். %1 + விளையாட்டில் இணைந்துள்ள வீரர்கள் - அதிகபட்சம். %1 - - - + + + T @@ -1667,1343 +1688,1354 @@ p, li { white-space: pre-wrap; } - - - + + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game - - Connected players - Max. %1 - விளையாட்டில் இணைந்துள்ள வீரர்கள் - அதிகபட்சம். %1 + விளையாட்டில் இணைந்துள்ள வீரர்கள் - அதிகபட்சம். %1 - + running நடைபெற்றுகொண்டிருக்கும் - - + + running games: %1 நடைபெற்றுகொண்டிருக்கும் விளையாட்டு: %1 - - + + open games: %1 ஆரம்பித்த விளையாட்டுகள்: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 - + Ignore %1 - + %1 is playing in "%2". - + %1 is not playing at the moment. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -3012,54 +3044,52 @@ Feel free to invite other players by right-clicking on their nick in the availab உரையாடும் இடத்தில் உள்ள வீரர்கள்: %1 - - + + connected players: %1 இணைந்துள்ள விளையாட்டு வீரர்கள்: %1 - - Connected players - இணைந்துள்ள விளையாட்டு வீரர்கள் + இணைந்துள்ள விளையாட்டு வீரர்கள் - + hands சுற்றுகள் - + minutes நொடிகள் - + double blinds இரட்டிப்பு பந்தயத்தொகை - + manual blinds order சுய பந்தயத்தொகை வரிசை - + Server Error விளையாட்டு வழங்கியில் பிழை - + You should not kick yourself from this game! உங்களை நீங்களே விளையாட்டிலிருந்து வெளியே தள்ள கூடாது! - + search for player ... - + Chat is only available to registered players. @@ -3068,7 +3098,7 @@ Feel free to invite other players by right-clicking on their nick in the availab %1 என்ற விளையாட்டு வீரரை அழையுங்கள் - + Invite player ... விளையாட்டு வீரரை அழையுங்கள் ... @@ -3077,7 +3107,7 @@ Feel free to invite other players by right-clicking on their nick in the availab %1 என்ற விளையாட்டு வீரரை புறக்கணிக்கவும் - + Ignore player ... விளையாட்டு வீரரை புறக்கணிக்கவும் ... @@ -3088,8 +3118,8 @@ You can invite other players with right-click on their nick in the left availabl மற்றவர்களை அழைக்க இடது பக்கமுள்ள வீரர்களின் பட்டியலில் மௌசின் வலது பொத்தானை அழுத்தி விளையாட அழையுங்கள். - - + + PokerTH - Info Message போகர்டேஹோ - செய்தி தகவல் @@ -3114,10 +3144,10 @@ You can invite other players with right-click on their nick in the left availabl இனிமேல் இந்த நபரிடமிருந்து உரையாடல் செய்தியோ விளையாட்டு அழைப்பிதலோ பெற முடியாது.<br>நீங்கள் இந்த விளையாட்டு வீரரை <b>%1</b> புறக்கணிப்பு பட்டியலில் போட விரும்புகிறீர்களா? - - - - + + + + PokerTH - Question போகர்டேஹோ - வினா @@ -3130,273 +3160,273 @@ You can invite other players with right-click on their nick in the left availabl போகர்டேஹோ 0.6-பீட்டா - சுதந்திர-மூலநிரல் டெக்சாஸ் ஹோல்தேம் பொறி - + Hands சுற்றுகள் - + Chat உரையாடல் - + Save பாதுகாத்து வை - + Log பதிவு - + Away தற்காலிகம் - + Manual Action (default) சுயமாக விளையாடுதல் (எப்பொழுதும் உபயோகிக்க) - + Auto-Check / Auto-Fold தானாகவே பணயத்தை தள்ளி வை / இச்சுற்றில் சரணடை - + Auto-Check / Auto-Call-Any தானாகவே பணயத்தை தள்ளி வை / எவரேனும் செய்ததை செய் - + Speed: வேகம்: - - + + Start Local Game ... உள்ளக கணினி விளையாட்டை தொடங்குக .... - - + + Ctrl+N - - + + Quit வெளியேறு - - + + Ctrl+Q - - + + About PokerTH ... போகர்டெஹோ பற்றிய செய்தி ... - - + + Settings ... அமைப்பு ... - - + + Create Network Game ... கணினி விளையாட்டு வலை உருவாக்குக ... - - + + Ctrl+O - - + + Join Network Game ... கணினி விளையாட்டு வலையில் சேர்க ... - - + + Ctrl+J - - - + + + Fullscreen முழு திரையில் காட்டு - - + + Ctrl+F - - + + Show/Hide Chat Window உரையாடல் விண்டோவை காண்பி / மறைத்து வை - - + + Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window ஜெயிக்கும் மாதிரியை காண்பி / மறைத்து வை - - + + Ctrl+H - - + + Show/Hide Log Window பதிவு விண்டோவை காண்பி / மறைத்து வை - - + + Ctrl+L - - + + Internet Game ... இணையதள விளையாட்டு ... - - + + Ctrl+I - - + + Show/Hide Away Window தற்காலிகம் விண்டோவை காண்பி / மறைத்து வை - - + + Ctrl+A - + Kick துரத்து - + Vote Timeout: ஒட்டு போடும் காலவரம்பு: - + Yes ஆம் - + No இல்லை - + Player info - + Chance ஜெயிக்கும் வாய்ப்பு - + Configure PokerTH ... போகர்டெஹோ ஐ தேவைக்கேற்ப மாற்றியமைத்து கொள்க ... - - + + Close மூடி விடு - - + + Ctrl+X - + Vote started by: ஒட்டு ஆரம்பித்தவர்: - - + + Show/Hide Chance Window ஜெயிக்கும் வாய்ப்பு விண்டோவை காண்பி / மறைத்து வை - - + + Ctrl+C - + &View &Vதோற்ற்றம் - + &Settings &Sஅமைப்பு - + Shortcut: <Shift> குறுக்கு வழி:<Shift> - + Settings அமைப்பு - + Configure PokerTH @@ -3404,142 +3434,147 @@ You can invite other players with right-click on their nick in the left availabl gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop நிறுத்து - + PokerTH %1 போகர்டேஹோ %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine போகர்டெஹோ %1 - சுதந்திர-மூலநிரல் டெக்சாஸ் ஹோல்தேம் பொறி - - - - - - - - + + + + + + + + Start ஆரம்பி - - - - - + + + + + Lobby வரவேற்ப்பறை - - + + Chat உரையாடல் - + Closing PokerTH during network game விளையாட்டு வலையில் போகர்டேஹோ வை மூடும் பொழுது - + You are the hosting server. Do you want to close PokerTH anyway? நீங்கள்தான் இந்த விளையாட்டை ஆரம்பித்தீர்கள். நீங்கள் போகர்டேஹோ வை நிச்சயம் மூட வேண்டுமா? - + Really want to exit? - + PokerTH - Close Table? - + PokerTH - Internet Game Message போகர்டேஹோ - இணையதள விளையாட்டு செய்தி - + Attention! Do you really want to leave the current game and go back to the lobby? கவனிக்க! தற்சமயம் விளையாடும் விளையாட்டிலிருந்து நிச்சயம் நீங்கள் விலகி வரவேர்ப்பரைக்கு திரும்பி செல்ல விரும்புகிறீர்களா? - - + + Chat is only available to registered players. - - + + Spectators + + + + + Chance ஜெயிக்கும் வாய்ப்பு - - + + Kick துரத்து - - + + Do you want to kick <b>%1</b><br>from this game? நீங்கள் <b>%1</b>என்பவரை <br>விளையாட்டிலிருந்து துரத்த விரும்புகிறீர்களா? - - - - + + + + <b>%1</b> secs left <b>%1</b> நொடிகள் மீதமுள்ளது - + vote ஒட்டு - + votes ஒட்டுகள் - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. விளையாட்டு வீரர் <b>%1</b> என்பவருக்கு எதிராக <b>%2</b> %3<br>உள்ளது. அவரை துரத்த <b>%4</b> ஓட்டுகள் தேவை. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. உங்களுக்கு எதிராக <b>%1</b> %2 உள்ளது.<br>உங்களை வெளியேற்ற <b>%3</b> ஓட்டுகள் தேவை. @@ -3750,56 +3785,66 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error விளையாட்டு வழங்கியின்-சிறு-குறிப்பு-கோப்பையை துவக்கும் பொழுது பிழை - - - - Could not load server-profiles-file: - விளையாட்டு வழங்கியின்-சிறு-குறிப்பு-கோப்பையை துவக்க முடியவில்லை: + விளையாட்டு வழங்கியின்-சிறு-குறிப்பு-கோப்பையை துவக்க முடியவில்லை: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error விளையாட்டு வழங்கியின் சிறு குறிப்பு பிழையை சேர்த்து வைக்கவும் - + A profile with the name: %1 already exists. Would you like to overwrite ? %1: இப்பெயர் கொண்ட சிறு குறிப்பு ஏற்கனவே உபயோகத்தில் உள்ளது. நீங்கள் அதை அழித்து எழுத விரும்புகிறீர்களா? - + Read Server-Profile List Error விளையாட்டு வழங்கியின்-சிறு-குறிப்பு பட்டியலை படிக்கும் பொழுது பிழை - + Could not read server-profiles list விளையாட்டு வழங்கியின்-சிறு குறிப்பு பட்டியலை படிக்க முடியவில்லை - - + + Save Server-Profile-File Error விளையாட்டு வழங்கியின்-சிறு குறிப்பு-கோப்பையின் பிழையை சேர்த்து வை - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - விளையாட்டு வழங்கியின்-சிறு குறிப்பு-கோப்பையை சேர்த்து வைக்க முடியவில்லை: + விளையாட்டு வழங்கியின்-சிறு குறிப்பு-கோப்பையை சேர்த்து வைக்க முடியவில்லை: @@ -3864,12 +3909,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order சுய பந்தயத்தொகை கோரிக்கை - + You cannot set more than 30 manual blinds. நீங்கள் முற்பதுக்கு மேற்ப்பட்ட சுய பந்தயத்தொகை விதிகளை அமைக்க முடியாது. @@ -3938,7 +3983,7 @@ Would you like to overwrite ? - + Use saved blinds settings முன்பு பயன்படுத்திய பந்தயத்தொகை அமைப்பை உபயோகி @@ -3949,13 +3994,13 @@ Would you like to overwrite ? - + Change blinds settings ... பந்தயத்தொகை அமைப்பை மாற்றுக ... - + Game Speed: விளையாட்டின் வேகம்: @@ -3996,38 +4041,38 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error அவதார் கோப்பையின் பிழை - + Please select an avatar from the list! தயவு செய்து ஒரு அவதாரத்தை பட்டியலில் இருந்து தேர்ந்தெடுக்கவும்! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! தேர்ந்தெடுத்த படத்தின் கோப்பையளவு மிகவும் பெரியது. (அட்திகபட்சம். 30KB) தயவு செய்து ஒரு சிறிய படத்தை தேர்ந்தெடுக்கவும்! - + The entered avatar picture doesn't exist. Please enter an valid picture! தேர்ந்தெடுத்த அவதாரத்தின் படம் இல்லை. தயவு செய்து பட்டியலில் இருக்கின்ற ஒரு படத்தை தேர்ந்தெடுக்கவும்! - + Select external avatar picture வெளி அவதாரத்தின் படத்தை தேர்ந்தெடுக்கவும் - + Images (*.png *.jpg *.gif) உருவங்கள் (*.png *.jpg *.gif) @@ -4048,405 +4093,429 @@ Please enter an valid picture! இடைமுகம் - - + + Language: மொழி: - - + + Show fade-out animation for non-winning cards வெற்றி பெறாத சீட்டு அட்டைகளுக்கு மறைந்து போகும் தோற்றம் தருக - - + + Show flip-card animation சீட்டு அட்டை-திருப்பும் தோற்ற்றம் காண்பி - - + + Show buttons for small blind and big blind குறைந்த பந்தயப்பனதிற்கும் பெரிய பந்தயப்பனத்திற்கும் பொத்தானை காண்பி - - + + Show own cards only on mouse click அவரவர் சீட்டு அட்டைகளை மௌசை அழுத்தும் பொழுது மட்டும் காண்பி - + Reverse order of F-Keys (F1 - F4) F-பொத்தான்களின் உபோயாக வரிசையை மாற்றி அமைக்க (F1 - F4) - - + + Network / Internet Game கணினி விளையாட்டு வலை / இணையதள விளையாட்டு - - + + Switch keyboard focus to bet-input-field if it's your turn உங்களுடைய ஆட்டத்தின் பொழுது கீபோர்டின் பார்வையை பந்தயம் கட்டும் கட்டத்துக்கு தானாகவே மாற்றுக - + Sound சப்தம் - + Factory Settings - - + + + Common + + + + + Disable splashscreen on startup விளையாட்டு துவங்கும் பொழுது வரும் ச்ப்லாஸ் திரையை நிறுத்திவிடு - - + + Show country flag in the corner of avatar - - + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table விளையாட்டு மேசை - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State வீரரின் தற்போதைய நிலவரம் - - + + Card Deck சீட்டு அட்டைகளின் கட்டு - - + + Card Back சீட்டு அட்டையின் பின்புறம் - - + + Use card back from card style சீட்டு அட்டையின் பின்புறத்தை அட்டை வடிவத்திலிருந்து உபயோகிக்கவும் - - + + Use custom card back picture: சுயமாக தயாரித்த சீட்டு அட்டை படத்தை உபயோகிக்கவும்: - - + + Play sound effects விளையாட்டு ஓசையுடன் விளையாடவும் - - + + Sound Volume: சப்த அளவு: - - + + 10 - - + + Sound Categories சப்த பிரிவு - - + + Play game actions sounds like "check", "call", "raise" "செக்", "கால்", "ரைஸ்" போன்ற செயல்களுக்கு விளையாட்டு சப்தம் எழுப்பவும் - - + + Play lobby chat notifications வரவேற்ப்பறை உரையாடல் அறிவுப்புக்கு சப்தம் எழுப்பவும் - - + + Play network/internet game notifications like "player joined the game" "விளையாட்டு வீரர் சேர்ந்துள்ளார்" போன்ற கணினி வலை/இணையதள விளையாட்டு அறிவுப்புக்கு சப்தம் எழுப்பவும் - - + + Server Password: - + + + Allow spectators to watch the game + + + + OK - + Local Game Settings உள்விளையாட்டு அமைப்பு - - + + Number of players: விளையாட்டு வீரர்களின் எண்ணிக்கை: - - - - + + + + Start Cash: பணம் செலுத்த ஆரம்பி: - - - - - - - - + + + + + + + + $ - - - - + + + + First small blind: குறைந்தபட்ச ஆரம்ப கட்டாய பந்தயத்தொகை: - - - - + + + + Raise blinds: பந்தயத்தொகையை உயரத்துக: - - - - - - - - + + + + + + + + Every: ஒவ்வொரு: - - - - + + + + hands சுற்றுக்கும் - - - - + + + + minutes நொடிகளுக்கும் - - - - + + + + Raise mode: பந்தயத்தொகை உயர்த்தும் விதி: - - - - + + + + Always double blinds எப்பொழுதும் பந்தயத்தொகையை இரட்டிப்பாக்குக - - - - + + + + Manual blinds order: பந்தயத்தொகையை உயர்த்தும் விதியை சுயமாக நிர்ணயம் செய்க: - - - - + + + + Edit ... திருத்தியமைக்க ... - - + + Game Speed: விளையாட்டின் வேகம்: - - + + Pause between hands (press "start" button to go on) ஒவ்வொரு சுற்றுக்கும் இடைவெளி தருக (தொடர்ந்து விளையாட "ஆரம்பி" பொத்தானை அழுத்தவும்) - - + + Show game settings dialog on every new game ஒவ்வொரு புது விளையாட்டின் பொழுதும் விளையாட்டு அமைப்பை காண்பி - + Network Game Settings கணினி விளையாட்டு வலை அமைப்பு - - + + Maximum number of players: விளையாட்டு வீரர்களின் அதிகபட்ச எண்ணிக்கை: - - + + Timeout for player action: விளையாட்டு வீரர் ஒரு செயல் செய்ய காலவரம்பு: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! - - - - + + + + s - - + + Network Server Settings விளையாட்டு வலையின் விளையாட்டு வழங்கி அமைப்பு - - - - + + + + Server Port: விளையாட்டு வழங்கியின் போர்ட்: - - - - + + + + Use SCTP எஸ்சிதிபி ஐ உபயோகிக்கவும் - - - - + + + + Use IPv6 ஐபிவி6 ஐ உபயோகிக்கவும் - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">என்றால் என்ன?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">என்றால் என்ன?</a> - + Internet Game Settings இணையதள விளையாட்டு அமைப்பு - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4457,61 +4526,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">குறிப்பு: எப்பொழுதும் உபயோகிக்ககூடிய </span><span style=" font-weight:600; font-style:italic;">விளையாட்டு அமைப்பு </span><span style=" font-style:italic;"> உதாரணத்திற்கு "விளையாட்டு வீரர்களின் அதிகபட்ச எண்ணிக்கை", "பணம் செலுத்த ஆரம்பி" மற்றும் "குறைந்த பந்தயத்தொகை" </span><span style=" font-weight:600; font-style:italic;">விளையாட்டு வலை அமைப்பிலிருந்து உபயோகிக்கப்படும்.</span></p></body></html> - - + + Server Address: விளையாட்டு வழங்கியின் முகவரி: - - + + Use password for private game: தனியார் விளையாட்டுக்கு இரகசிய வார்த்தையை உபயோகிக்கவும்: - - + + Computer Engine கணிப்பொறி - - + + Opponent 6: எதிராளி 6: - - + + Opponent 5: எதிராளி 5: - - + + Opponent 4: எதிராளி 4: - - + + Opponent 3: எதிராளி 3: - - + + Opponent 2: எதிராளி 2: - - + + Opponent 1: எதிராளி 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4523,8 +4592,8 @@ p, li { white-space: pre-wrap; } அகலம்=50, உயரம்=50 ஆக இருக்க வேண்டும்.</span></p></body></html> - - + + Enable/Disable Logging பதிவு செய்வதற்கு அனுமதி வழங்கு/வழங்காதே @@ -4533,105 +4602,105 @@ p, li { white-space: pre-wrap; } பதிவு கோப்பையை சேர்த்து வைக்க வேண்டிய நாட்கள் - - + + Log File Directory: பதிவு கோப்பையின் முகவரி: - - + + Write log after every: செயல்களை பதிவு செய்க. ஒவ்வொரு: - - + + action (high frequent disc access) செயல்களுக்கும் (அதிகபட்ச கணினி உபயோகம்) - - + + hand (medium disc access) சுற்றுக்கும் (நடுத்தரமான கணினி உபயோகம்) - - + + game (low disc access) விளையாட்டிற்கும் (குறைந்தபட்ச கணினி உபயோகம்) - + Log Messages தகவல்களை பதிவு செய்க - + Player Nicks/Avatars விளையாட்டு வீரர்களின் புனைப்பெயர்/அவதாரங்கள் - + Show right toolbox வலது பக்கம் உள்ள கருவி பெட்டியை காட்டவும் - + Show left toolbox இடது பக்கம் உள்ள கருவி பெட்டியை காட்டவும் - - + + Play blind raise notification - - + + Automatic Server Configuration URL தானாகவே அமைத்துக்கொள்ளும் விளையாட்டு வழங்கியின் முகவரி - - + + Serverlist Address: விளையாட்டு வழங்கிகளின் பட்டியல் முகவரி: - - + + Manual Server Configuration விளையாட்டு வழங்கியை தேவைக்கேற்ப மாற்றியமைத்து கொள்க - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) நாள்(கள்) @@ -4660,62 +4729,62 @@ p, li { white-space: pre-wrap; } புனைப்பெயர்/அவதாரங்கள் - - + + Show cards chance monitor சீட்டு அட்டை வாய்ப்பு கண்காணிப்பை காட்டவும் - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: அவதாரத்தின் வழங்கி: - + Style வடிவம் - - + + Don't translate poker strings like check, call, raise from game table style விளையாட்டு மேசை அமைப்பில் செக், கால், ரைஸ் போன்ற செயல் வார்த்தைகளை மொழிமாற்றம் செய்யாதே - - - - + + + + Add ... சேர்க்க ... - - - - + + + + Remove நீக்கவும் - - - - + + + + Preview - Information: முன்காட்சி - தகவல்: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4728,8 +4797,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">போகர்டேஹோ வின் புதிய விளையாட்டு மேசை வடிவங்களை பெருக ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4742,7 +4811,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">போகர்டேஹோ வின் புதிய சீட்டு அட்டை கட்டின் வடிவம் பெருக ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4761,96 +4830,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">குறிப்பு: சிறந்த படத்தை பெற அதன் </span><span style=" font-weight:600; font-style:italic;">அகலம்=48, உயரம்=76 ஆக இருக்க வேண்டும்.</span></p></td></tr></table></body></html> - - + + Delay between hands: சுற்றுகளுக்கு இடையிலான காலதாமதம்: - - + + Server விளையாட்டு வழங்கி - - + + Game விளையாட்டு - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: எப்பொழுதும் பயன்படுத்தும் விளையாட்டு பெயர்: - - + + Default game type: எப்பொழுதும் பயன்படுத்தும் விளையாட்டு முறை: - - + + Standard சாதாரண - - + + Registered players only பதிவு செய்யப்பட்ட விளையாட்டு வீரர்கள் மட்டும் - - + + Invited players only அழைக்கப்பட்ட விளையாட்டு வீரர்கள் மட்டும் - - + + Ranking game தரவரிசை விளையாட்டு - - + + Show lobby chat வரவேற்ப்பறை உரையாடலை காட்டவும் - - + + Automatically leave the table after the game finished - - + + Ignored Players புறக்கணிக்கப்பட்ட விளையாட்டு வீரர்கள் - - + + Player விளையாட்டு வீரர் - - + + Remove Player விளையாட்டு வீரரை நீக்கவும் - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4863,20 +4932,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">மனித விளையாட்டு வீரர்:<br /><span style=" font-style:italic;">(இந்த புனைப்பெயர் இணையதள விளையாட்டு நுழைவுக்கும் உபயோக்கியப்படும்)</span></p></body></html> - - + + Opponent 7: எதிராளி 7: - - + + Opponent 8: எதிராளி 8: - - + + Opponent 9: எதிராளி 9: @@ -4959,65 +5028,65 @@ p, li { white-space: pre-wrap; } டர்கிஷ் - - - - - + + + + + Settings Error அமைப்பு பிழை - + The entered flipside picture doesn't exist. Please enter an valid picture! கொடுத்த சீட்டு அட்டையின் பின்புற படத்தை காணவில்லை. தயவு செய்து சரியான படத்தை தரவும்! - - + + The log file directory doesn't exist. Please select an valid directory! பதிவு கோப்பையின் முகவரியை காணவில்லை. தயவு செய்து சரியான முகவரியை தேர்ந்தெடுக்கவும்! - + Language Changed மொழி மாற்றப்பட்டது - + You have changed application language to %1. Please restart PokerTH to load new language! நீங்கள் விளையாட்டை %1 என்ற மொழிக்கு மாற்றிவிட்டீர்கள். புது மொழியின் செயர்ப்பாட்டை காண தயவு செய்து போகர்டேஹோ வை மீண்டும் துவக்கவும்! - + Select your flipside picture சீட்டு அட்டையின் பின்புற படத்தை தேர்ந்தெடுக்கவும் - + Images (*.png *.jpg *.gif) வடிவங்கள் (*.png *.jpg *.gif) - + Open Directory திறந்த முகவரி - - + + Blinds Error பந்தயப்பண பிழை - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5061,7 +5130,7 @@ This first-small-blind-value will be set to maximum allowed value. ஸ்வீடிஷ் - + The entered server list address is not a valid URL. Please enter a valid server list address! கொடுக்கப்பட்ட விளையாட்டு வழங்கி பட்டியலின் முகவரி சரியல்ல. @@ -5103,150 +5172,150 @@ Please enter a valid server list address! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name பராமரிப்பாளரின் பெயர் - - + + Maintainer EMail பராமரிப்பாளரின் இமெயில் - - + + Create Date தயாரிக்கப்பட்ட தேதி - + Windows Behaviour விண்டோவின் குணங்கள் - + scaleable மாற்ற தக்கது - + fixed நிர்ணயிக்கப்பட்டது - + Minimum Size குறைந்தபட்ச அளவு - + Maximum Size அதிகபட்ச அளவு - + Fixed Size நிர்ணயிக்கப்பட்ட அளவு - + State வீரரின் தற்போதைய நிலவரம் - + Please select your game table style தயவு செய்து உங்கள் விளையாட்டு மேசை வடிவத்தை தேர்ந்தெடுக்கவும் - + PokerTH game table styles (*.xml) போகர்டேஹோ வின் விளையாட்டு மேசை வடிவங்கள் (*.xml) - + Game Table Style Error விளையாட்டு மேசை வடிவத்தின் பிழை - + Selected game table style file is already in the list. Please select another one to add! தேர்ந்தெடுத்த விளையாட்டு மேசை வடிவத்தின் கோப்பை ஏற்கனவே பட்டியலில் உள்ளது. தயவு செய்து சேர்க்க வேறொன்றை தேர்ந்தெடுக்கவும்! - + Game Table Style File Error விளையாட்டு மேசை வடிவ கோப்பையின் பிழை - + Could not load game table style file correctly. Style will not be placed into list! விளையாட்டு மேசை வடிவ கோப்பையை சரியாக துவக்க முடியவில்லை. வடிவம் பட்டியலில் சேர்க்கப்படாது! - + Please select your card deck style தயவு செய்து உங்கள் சீட்டு அட்டை வடிவத்தை தேர்ந்தெடுக்கவும் - + PokerTH card deck styles (*.xml) போகர்டேஹோ வின் சீட்டு அட்டை வடிவங்கள் (*.xml) - + Card Deck Style Error சீட்டு அட்டை வடிவம் பிழை - + Selected card deck style file is already in the list. Please select another one to add! தேர்ந்தெடுத்த சீட்டு அட்டை வடிவத்தின் கோப்பை ஏற்கனவே பட்டியலில் உள்ளது. தயவு செய்து சேர்க்க வேறொன்றை தேர்ந்தெடுக்கவும்! - + Card Deck Style File Error சீட்டு அட்டை வடிவ கோப்பை பிழை - + Could not load card deck style file correctly. Style will not be placed into list! சீட்டு அட்டை வடிவ கோப்பையை சரியாக துவக்க முடியவில்லை. வடிவம் பட்டியலில் சேர்க்கப்படாது ! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5319,12 +5388,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error விளையாட்டு வழங்கி பிழை - + You should not kick yourself from this game! உங்களை நீங்களே இந்த விளையாட்டிலிருந்து நீக்க கூடாது! @@ -5493,106 +5562,106 @@ Please choose another one. தயவு செய்து வேறொரு பெயரை தேர்ந்தெடுக்கவும். - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error கணினி விளையாட்டு வலை செயல் இழந்தது - + Server address was not set. விளையாட்டு வழங்கி முகவரி நிர்ணயிக்கப்படவில்லை. - + An invalid port was set (ports 0-1023 are not allowed). ஒரு தவறான போர்ட் நிர்மாணிக்க பட்டுள்ளது (போர்ட் 0-1023 உபயோகிக்க அனுமதி இல்லை). - + Could not create a socket for TCP communication. திசிபி தொடர்புக்கு சாக்கெட் உருவாக்க இயலவில்லை. - + Could not set the IP address. ஐபி முகவரி உருவாக்க இயலவில்லை. - + Could not set the port for this type of address. இந்த வகை முகவரிக்கு போர்ட் உருவாக்க இயலவில்லை. - + The server name could not be resolved. கணினி வழங்கியின் பெயரை புரிந்துகொள்ள இயலவில்லை. - + Bind failed - please choose a different port. நிரல்களை புணைக்கும் செயல் தோற்றது - தயவு செய்து வேறொரு போர்டை தேர்ந்தெடுக்கவும். - + Internal network error: "listen" failed. விளையாட்டு வலையினுள் பிழை: "சாக்கெட் உள்நோக்குதல் " தோற்றது. - + Server execution was terminated. விளையாட்டு வழங்கியின் செயல் முடிவுக்கு கொண்டு வரப்பட்டுள்ளது. - + Could not connect to the server. விளையாட்டு வழங்கியுடன் தொடர்பு கொள்ள இயலவில்லை. - + Connection timed out. Please check the server address. @@ -5603,12 +5672,12 @@ If the server is behind a NAT-Router, make sure port forwarding has been set up விளையாட்டு வழங்கி என்எதி கணினி வழிநடத்திக்கு பின்னால் இருந்தால் அதன் போர்ட் முன்னோக்குதல் திறன் அமைக்கப்பட்டுள்ளதா என சரி பார்க்கவும். - + Internal network error: "select" failed. விளையாட்டு வலையினுள் பிழை: "தேர்ந்தெடுத்தல்" தோற்றது. - + Internal network error: "send" failed. விளையாட்டு வலையினுள் பிழை: "அனுப்புதல்" தோற்றது. @@ -5617,26 +5686,26 @@ If the server is behind a NAT-Router, make sure port forwarding has been set up விளையாட்டு வழங்கியினால் தொடர்பு மூடப்பட்டுள்ளது. - + Internal network error: Duplicate TCP connection. விளையாட்டு வலையினுள் பிழை: நகல் திசிபி இணைப்பு. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. தவறான விளையாட்டு வலை பொட்டலம் வந்துள்ளது. விளையாட்டு வீரர்கள் அனைவரும் சரியான போகர்டேஹோ பிரதியை உபயோகிக்கின்றனரா என தயவு செய்து சரி பார்க்கவும். - + Internal state error. Please make sure that all players use the same version of PokerTH. விளையாட்டின் உள்நிலை பிழை. விளையாட்டு வீரர்கள் அனைவரும் சரியான போகர்டேஹோ பிரதியை உபயோகிக்கின்றனரா என தயவு செய்து சரி பார்க்கவும். - + Invalid server list URL. Please correct the address in the settings. பட்டியலில் உள்ள விளையாட்டு வழங்கியின் முகவரி தவறு. @@ -5655,95 +5724,95 @@ Please make sure that the server list URL is correct. தயவு செய்து விளையாட்டு வழங்கியின் முகவரியை பட்டியலில் சரி பார்க்கவும். - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. போகர்டேஹோ இன் இணையதள விளையாட்டு வழங்கியின் பட்டியலில் தவறான தகவல் உள்ளது. நீங்கள் உங்களுக்கென சிறப்பாக உருவாக்க பட்ட விளையாட்டு வழங்கி பட்டியலை உபயோகித்தால் தயவு செய்து அதன் வடிவமைப்பை சரி பார்க்கவும். - + Could not unzip the PokerTH internet server list. போகர்டேஹோ வின் இணையதள விளையாட்டு வழங்கியின் பட்டியலை அன்சிப் செய்ய முடியவில்லை. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. போகர்டேஹோ இன் இணையதள விளையாட்டு வழங்கியின் பட்டியலை இணையதளத்தில் இருந்து இறக்குமதி செய்ய முடியவில்லை. தயவு செய்து நீங்கள் இணையதளத்துடன் நேரதியாக இணைந்துளீரா என சரி பார்க்கவும். - + Could not open the target file when downloading the server list. இணையதள விளையாட்டு வழங்கியின் பட்டியலை இணையதளத்தில் இருந்து இறக்குமதி செய்யும் பொழுது தேவையான கோப்பையை திறக்க முடியவில்லை. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. விளையாட்டின் இப்பிரதிக்கு போகர்டேஹோ இன் விளையாட்டு வழங்கி ஆதரவு தரவில்லை.<br>தயவு செய்து இந்த <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a>இந்த முகவரிக்கு சென்று புதிய பிரதியை இனையதளத்தில் இருந்து இறக்குமதி செய்யவும். - + Sorry, this server is already full. மன்னிக்கவும் விளையாட்டு வழங்கி முன்னதாகவே நிரம்பி வழிகிறது. - + Invalid login. Please check your username and password. தவறான நுழைவு. தயவு செய்து உங்களின் உபயோகிக்கும் பெயர் மற்றும் இரகசிய வார்த்தையை சரி பார்க்கவும். - + Your account is blocked indefinitely. - + You cannot login at this time. Please try again in a few seconds. தற்சமயம் உங்களால் நுழைய முடியாது. தயவு செய்து சிறிது வினாடிகள் கழித்து முயற்ச்சி செய்து பார்க்கவும். - + You cannot join this game, because another player in that game has your network address. - + Your connection to the server is very slow, the game had to start without you. - + This game is of type invite-only. You cannot join this game without being invited. - + Invalid password when joining the game. Please reenter the password and try again. விளையட்டினுள் நுழையும் பொழுது உபயோகித்த இரகசிய வார்த்தை தவறு. தயவு செய்து சரியான இரகசிய வார்த்தையை உபயோகித்து மீண்டும் முயற்ச்சி செய்யவும். - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. - + The password is too long. Please choose another one. இரகசிய வார்த்தையின் நீளம் அதிகமாக உள்ளது. தயவு செய்து வேறொன்றை தேர்ந்தெடுக்கவும். @@ -5757,221 +5826,221 @@ Please choose a different name. விளையாட்டு வீரர் பெயரின் நீளம் மிகவும் குறைவாக உள்ளது அல்லது மிகவும் நீளமாக உள்ளது அல்லது செல்லாது. தயவு செய்து வேறொன்றை தேர்ந்தெடுக்கவும். - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game கணினி விளையாட்டு வலை துவக்குக - + The connection to the server was lost. - + The game name is either too short or too long. Please choose another one. விளையாட்டின் பெயர் நீளம் மிகவும் குறைவாக உள்ளது அல்லது மிகவும் நீளமாக உள்ளது. தயவு செய்து வேறொன்றை தேர்ந்தெடுக்கவும். - + The game could not be found. விளையாட்டை கண்டுபிடிக்க முடியவில்லை. - + The chat text is invalid. கூறிய வார்த்தை செல்லாது. - + The server referred to an unknown player. Aborting. விளையாட்டு வழங்கி தவறான விளையாட்டு வீரரை குறிப்பிட்டுள்ளது. விளையாட்டு முடிவுக்கு கொண்டுவரபடுகின்றது. - + Internal error: The current player could not be found. உட்பிழை: தற்போதய விளையாட்டு வீரரை கண்டு பிடிக்க முடியவில்லை. - + Internal error: The current player is not active. உட்பிழை: தற்போதய விளையாட்டு வீரர் உபயோகத்தில் இல்லை. - + You were kicked from the server. விளையாட்டு வழங்கியினால் நீங்கள் வெளியேற்றப்பட்டுள்ளீர். - + You were temporarily banned from the server. நீங்கள் தற்சமையம் விளையாட்டு வழங்கியை உபயோகிப்பதிலிருந்து தள்ளிவைக்கப்பட்டுளீர். - + Your server connection timed out due to inactivity. You are very welcome to reconnect! நீண்ட நேரம் விளையாடாமல் இருந்ததால் விளையாட்டு வளங்கியுடனான தொடர்பு துண்டிக்கப்பட்டுள்ளது. விளையட்டினுள் மீண்டும் சேர உங்களை வரவேற்கிறோம்! - + The client player count is invalid. விளையாட்டு வாடிக்கையாளர்களின் எண்ணிக்கை செல்லாது. - + Too many manual blinds were set. Please reconfigure the manual blinds. சுய பந்தயத்தொகைகளின் எண்ணிக்கை அதிகமாக நிர்ணயிக்கப்பட்டுள்ளது. தயவு செய்து அதன் எண்ணிக்கையை மாற்றியமைக்கவும். - + An invalid avatar file was configured. Please choose a different avatar. அவதார் எனப்படும் கோப்பையின் அமைப்பு செல்லாது. தயவு செய்து வேறொரு அவதாரத்தை தேர்ந்தெடுக்கவும். - + The selected avatar file is too large. Please choose a different avatar. தேர்ந்தெடுத்த அவதார் எனப்படும் கோப்பையின் அளவு மிகவும் அதிகமாக உள்ளது. தயவு செய்து வேறொரு அவதார் கோப்பையை தேர்ந்தெடுக்கவும். - + An internal avatar error occured. Please report this to an admin in the lobby chat. அவதார் கொப்பையினுள் பிழை ஏற்ப்பட்டுள்ளது. தயவு செய்து இதை பேசும் வரவேற்ப்பரையில் உள்ள நிர்வாகியிடம் கூறவும். - + Could not start game: Synchronization failed. விளையாட்டை ஆரம்பிக்க முடியவில்லை: பிணைப்பு தோற்றது. - + The server is down for maintenance. Please try again later. விளையாட்டு வழங்கி பழுது பார்க்கப்பட்டுகொண்டிருக்கிறது. தயவு செய்து பின்னர் முயற்சி செய்து பார்க்கவும். - + An internal error occured. ஒரு உட்பிழை ஏற்ப்பட்டுள்ளது. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification விளையாட்டு வலையினுல்லிருந்து அறிவிப்பு - + You were kicked from the game. நீங்கள் விளையாட்டிலிருந்து நீக்கப்பட்டுள்ளீர். - + Sorry, this game is already full. மன்னிக்கவும், இந்த விளையாட்டு ஏற்கனவே நிரம்பிவிட்டது. - + Unable to join - the server has already started the game. விளையாட்டில் சேர முடியாய்வில்லையா - ஏற்கனவே விளையாட்டு வழங்கியில் விளையாட்டு ஆரம்பமாகிவிட்டது. - + Your admin state timed out due to inactivity. Feel free to create a new game! நீண்ட நேரம் விளையாடாமல் இருந்ததால் நீங்கள் ஆரம்பித்த விளையாட்டு நிறைவுக்கு கொண்டுவரப்பட்டுள்ளது. வேண்டுமெனில் மீண்டும் ஒரு விளையாட்டை ஆரம்பிக்கவும்! - + You cannot join this type of game as guest. இவ்வகையான விளையாட்டில் ஒரு விருந்தாளியாக நீங்கள் சேர முடியாது. - + The settings are invalid for this type of game. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. போகர்டேஹோ வின் புதிய பிரதி இணையதளத்தில் உள்ளது.<br>தயவு செய்து இந்த முகவரிக்கு <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> சென்று புதிய பிரதியை இறக்குமதி செய்யவும். - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. இந்த போகர்டேஹோ வின் பீட்டா வெளியீடு காலம் கடந்தது.<br>தயவு செய்து இந்த முகவரிக்கு <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> சென்று புதிய பிரதியை இறக்குமதி செய்யவும். - - + + Server Message விளையாட்டு வழங்கியிடமிருந்து தகவல் - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. diff --git a/ts/pokerth_tr.ts b/ts/pokerth_tr.ts index e9fd2a23..28f7766c 100644 --- a/ts/pokerth_tr.ts +++ b/ts/pokerth_tr.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -168,22 +167,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -309,52 +308,52 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) @@ -401,13 +400,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -440,18 +439,18 @@ Please verify that you are uploading a valid PokerTH log file. - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + PokerTH - Question - + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -480,17 +479,39 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About Hakkında - - + + Project Proje + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -515,41 +536,25 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Proje Sayfası: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> <a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">IRC: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> #pokerth (irc.freenode.net)</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Yazarlar: </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Felix Hammer (<a href="mailto:doitux@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - Başlangıç fikri, basit yapı, gui gerçekleştirimi, linux paketi, webmaster@pokerth.net</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Florian Thauer (<a href="mailto:floty@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - başlangıç fikri, basit yapı, lokomotif geliştirici</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Lothar May (<a href="mailto:lotodore@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> -ağ geliştirimi, windows paketi</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Oskar Lindqvist (<a href="mailto:tranberry@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - gui grafik tasarımı, web tasarım</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Erhard List (<a href="mailto:dunkanx@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">dunkanx@pokerth.net</span></a>)</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - MacOS paketi</p></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - - - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - + + License Lisans - + + + Third party libs + + + + Close Kapat - - + + Thanks to Teşekkürler @@ -574,8 +579,8 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">PokerTH 0.5</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Popüler "Texas Holdem"Pokeri için, poker motoru</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Tek oyunculu oyunlar için, en fazla 6 bilgisayar rakiple oynanabilir</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Çok oyunculu ağ oyunları</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- C++ / QT4 ile kodlanmıştır</p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"><span style=" font-weight:400;">© 2006-2007, FHammer &amp; FThauer</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + Translation Çeviri @@ -649,8 +654,8 @@ p, li { white-space: pre-wrap; } © 2006-2007, FHammer, FThauer, LMay - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> @@ -963,8 +968,8 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Müşterekleri</span></a></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"> - <span style=" font-weight:400;">farklı popüler avatar resim kaynakları için</span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Viktoria, Benedikt, Erhard, Felix, Florian, Linus, Lothar, Mark, Steffi, Caro</span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - İnsan avatar resimleri için</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">ZeiZei</span> </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - Muhtelif avatar resimleri için</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - Farklı GPL lisanslı sesler için</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">doc_dos</span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - Kendi kaydımız chip sesleri için</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">thiger, dunkanx, BerndA </span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - Çeşitli yamalar için</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">kraut</span></p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> - İnternet oyun sunucusu ve yöneticilik için</p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -973,7 +978,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1225,12 +1230,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order El ile teklif istemi - + You cannot set more than 30 manual blinds. 30 dan fazla elle teklif yapamazsınız. @@ -1386,7 +1391,7 @@ Please choose another one! - + Default game name: @@ -1421,31 +1426,31 @@ Please choose another one! - - + + Maximum number of players: En fazla oyuncu sayısı: - - + + Start Cash: Ödemeyi Başlat: - + Blinds Teklifler - + Use saved blinds settings Kayıtlı teklif ayarlarını kullan - + Change blinds settings ... Teklif ayarlarını değiştir ... @@ -1459,43 +1464,49 @@ Please choose another one! Oyuncu hamlesi için zaman bitti (dk): - - + + Password: Parola: - + Delay between hands: - - + + + Allow spectators to watch the game + + + + + Create Game Oyun Yarat - + Cancel İptal - - + + $ $ - + Timeout for player action: Oyuncu hamlesi için zaman bitti: - - + + s @@ -1624,8 +1635,10 @@ Please choose another one! Oyun + + Players - Oyuncular + Oyuncular State @@ -1636,44 +1649,50 @@ Please choose another one! Özel - - + + 5 - Show open & non-full & ranking games - - + + Game Info Oyun Bilgisi - - + + Connected Players Bağlı Oyuncular - - + + + Spectators + + + + + Start Cash: - - + + First small blind: İlk küçük teklif: - - + + Blinds raise interval: - - + + Blinds raise mode: @@ -1683,7 +1702,7 @@ Please choose another one! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1692,26 +1711,26 @@ p, li { white-space: pre-wrap; } - - + + Fill up with computer opponents Bilgisayar rakipleri ile doldur - - + + Sort alphabetically - - + + Sort by country - - + + Display idle players @@ -1744,8 +1763,8 @@ p, li { white-space: pre-wrap; } Oyuna Gir - - + + Lobby-Chat Kulis-Söyleşisi @@ -1754,14 +1773,14 @@ p, li { white-space: pre-wrap; } En fazla oyuncu sayısı: - - + + &Start Game - - + + &Kick Player @@ -1778,8 +1797,8 @@ p, li { white-space: pre-wrap; } Teklif Yükseltme kipi: - - + + Manual blinds list: Elle yapılan teklif listesi: @@ -1788,74 +1807,68 @@ p, li { white-space: pre-wrap; } Oyuncu hamlesi için zaman aşımı (sn): - - + + Game type: - - + + Timing: - - + + &Leave Game - - - Join &any game - - - - - + + &Create Game - - + + &Join Game - - + + 0 - No game list filter - - + + search for player ... - - + + 1 - Show open games - - + + 2 - Show open & non-full games - - + + 3 - Show open & non-full & non-private games - - + + 4 - Show open & non-full & private games @@ -1881,62 +1894,56 @@ p, li { white-space: pre-wrap; } oyun - + Joining a private Game Özel bir oyuna giriliyor - + You are about to join a private game. Please enter the password! Özel bir oyuna girmek üzeresiniz. Lütven parolanızı giriniz! - - - - + + + + Game Info Oyun Bilgisi - - - Connected players - - - - + Server Error Sunucu Hatası - + You should not kick yourself from this game! Bu oyunda kendi kendinizi tekmeleyemezsiniz! - + running çalışıyor - - - + + + Game Oyun - - - + + + Players Oyuncular - - - + + + State Aşama @@ -1945,27 +1952,27 @@ p, li { white-space: pre-wrap; } Özel - + open - + hands eller - + minutes dakika - + double blinds çifte teklif - + manual blinds order el ile teklif istemi @@ -1985,1416 +1992,1410 @@ p, li { white-space: pre-wrap; } - - - + + Spectate + + + + + + P - - - + + + Time - - - + + + Available Players Uygun Oyuncular - + Invite player - + Ignore player - + Player infos ... - - + + Show player stats - - + + Admin action ... - + Total kickban - + Report inappropriate game name - + Close game - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - Connected players - max. %1 - - - - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - - - + + + T - - - + + + sec (action) - - - + + + sec (hand delay) - - - Connected players - Max. %1 - - - - - + + running games: %1 Çalışan oyunlar: %1 - - + + open games: %1 açık oyunlar: %1 - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -3403,52 +3404,65 @@ Feel free to invite other players by right-clicking on their nick in the availab söyleşideki oyuncular: %1 - - + + connected players: %1 bağlı oyuncular: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + search for player ... - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question @@ -3468,7 +3482,7 @@ Feel free to invite other players by right-clicking on their nick in the availab QGroupBox { background-image: url(:/graphics/resources/graphics/toolboxFrameBG.png) } - + Speed: Hız: @@ -3485,45 +3499,45 @@ Feel free to invite other players by right-clicking on their nick in the availab Oyun - - + + Ctrl+N Ctrl+N - - + + Quit Çık - - + + About PokerTH ... PokerTH Hakkında... - - + + Settings ... Ayarlar... - - + + Create Network Game ... Ağ Oyunu Oluştur... - - + + Join Network Game ... Ağ Oyununa Katıl... - - - + + + Fullscreen Tam Ekran @@ -3532,34 +3546,34 @@ Feel free to invite other players by right-clicking on their nick in the availab F - + Hands Eller - + Chat Sohbet - + Player info - + Log Günlük - - + + Start Local Game ... Yerel Oyun Başlat... - - + + Ctrl+Q Ctrl+Q @@ -3576,72 +3590,72 @@ Feel free to invite other players by right-clicking on their nick in the availab Ağ Oyunu - - + + Ctrl+O Ctrl+O - - + + Ctrl+J Ctrl+J - - + + Ctrl+F Ctrl+F - - + + Show/Hide Chat Window Söyleşi Penceresini Göster/Gizle - - + + Ctrl+T Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window El Penceresini Göster/Gizle - - + + Ctrl+H Ctrl+H - - + + Show/Hide Log Window Günlük Penceresini Göster/Gizle - - + + Ctrl+L Ctrl+L - - + + Internet Game ... İnternet Oyunu ... - - + + Ctrl+I Ctrl+I @@ -3650,22 +3664,22 @@ Feel free to invite other players by right-clicking on their nick in the availab Hepsi İçinde - + Away Uzak - + Manual Action (default) El İle Hamle (ön tanımlı) - + Auto-Check / Auto-Fold Oto-Denetim / Oto-Katla - + Auto-Check / Auto-Call-Any Oto-Denetim / Oto-Çağrı-Herhangi bir @@ -3675,103 +3689,103 @@ Feel free to invite other players by right-clicking on their nick in the availab PokerTH 0.6-beta - Açık-Kaynak Texas Holdem Motoru - - + + Show/Hide Away Window Uzakta penceresini Göster/Gizle - - + + Ctrl+A Ctrl+A - + Kick Tekmele - + Vote Timeout: Kalan oylama süresi: - + Yes Evet - + No Hayır - + Save Kaydet - + Chance Şans - + Settings Ayarlar - + Configure PokerTH - + Configure PokerTH ... PokerTH'ı ayarla... - - + + Close Kapat - - + + Ctrl+X Ctrl+X - + Vote started by: Oylamayı başlatan: - - + + Show/Hide Chance Window Şans Penceresini Göster/Gizle - - + + Ctrl+C Ctrl+C - + &View - + &Settings - + Shortcut: <Shift> @@ -3791,31 +3805,31 @@ Feel free to invite other players by right-clicking on their nick in the availab F1 - Katla/Hepsini | F2 - Denetle/Çağır | F3 - Bahis/Yükselt - - - - - - - - + + + + + + + + Start Başlat - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Dur @@ -3988,8 +4002,8 @@ Eğer sunucu bir NAT-Router arkasındaysa, sunucu tarafındaki bağlantı noktas Oto kip ayarlı: denetleyin veya katlayın. - - + + Chat Sohbet @@ -4062,12 +4076,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Lütfen <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> adresinden son sürümü indiriniz. - + Closing PokerTH during network game Ağ oyunu sırasında PokerTH kapatılıyor - + You are the hosting server. Do you want to close PokerTH anyway? Siz ana sunucusunuz. Yinede PokerTH programını kapatmak istiyor musunuz? @@ -4084,16 +4098,16 @@ Lütfen <a href="http://www.pokerth.net/" target="_blank" PokerTH ara sürümü artık geçersiz.<br>Lütfen <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> adresinden son sürümü indiriniz. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Açık-Kaynak Texas Holdem Motoru - - - - - + + + + + Lobby Kulis @@ -4102,86 +4116,91 @@ Lütfen <a href="http://www.pokerth.net/" target="_blank" İçsel bir simge hatası algılandı. Lütfen bunu kulis söyleşisinde yöneticiye iletin. - + PokerTH - Internet Game Message PokerTH - Internet Oyunu Mesajı - + Attention! Do you really want to leave the current game and go back to the lobby? Dikkat! Bu oyunu gerçekten bırakmak ve lobiye dönmek istiyormusunuz? - - + + Chance Şans - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Tekmele - - + + Do you want to kick <b>%1</b><br>from this game? <b>%1</b><br> kişisini oyundan atmak istiyormusunuz? - - - - + + + + <b>%1</b> secs left <b>%1</b> saniye kaldı - + vote oy - + votes oylar - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. + + + Spectators + + internetGameLoginDialog @@ -4401,25 +4420,21 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Sunucu-Profili-Dosya Hatası Yükle - - - - Could not load server-profiles-file: - Sunucu-profilleri-dosyasını yükleyemedi: + Sunucu-profilleri-dosyasını yükleyemedi: - + Save Server Profile Error Sunucu Profil Hatasını Kaydet @@ -4428,31 +4443,45 @@ p, li { white-space: pre-wrap; } İsmi ile beraber bir profil: " - + + + + + Could not load server-profiles-file: +%1 + + + + Read Server-Profile List Error Sunucu-Profil Listesi Hatasını Oku - + Could not read server-profiles list Sunucu-profilleri listesini okuyamadı - - + + Save Server-Profile-File Error Sunucu-Profil-Dosyası Hatsını Kaydet - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Sunucu-profilleri-dosyasını kaydedemedi: + Sunucu-profilleri-dosyasını kaydedemedi: - + A profile with the name: %1 already exists. Would you like to overwrite ? %1 isimli bir profil zaten mevcut. @@ -4520,12 +4549,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order El ile Teklif İstemi - + You cannot set more than 30 manual blinds. 30 dan fazla elle teklif yapamazsınız. @@ -4570,7 +4599,7 @@ Would you like to overwrite ? - + Game Speed: Oyun Hızı: @@ -4602,7 +4631,7 @@ Would you like to overwrite ? - + Use saved blinds settings Kayıtlı teklif ayarlarını kullan @@ -4613,7 +4642,7 @@ Would you like to overwrite ? - + Change blinds settings ... Teklif ayarlarını değiştir ... @@ -4660,14 +4689,14 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Avatar Dosyası Hatası - + Please select an avatar from the list! Lütfen listeden bir avatar seçin! @@ -4678,7 +4707,7 @@ Please enter an valid picture! Lütfen geçerli bir resim girin! - + Select external avatar picture Harici avatar resmi seç @@ -4687,19 +4716,19 @@ Lütfen geçerli bir resim girin! Resimler (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Seçili resmin dosya boyutu çok büyük. (en fazla 30 KB) Lütfen daha küçük bir resim seçiniz! - + Images (*.png *.jpg *.gif) Resimler (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! Girilen avatar resmi mevcut değil. @@ -4739,10 +4768,10 @@ p, li { white-space: pre-wrap; } Small Blind: - - - - + + + + Start Cash: Ödemeyi Başlat: @@ -4755,24 +4784,24 @@ p, li { white-space: pre-wrap; } Sunucu Ayarları - - - - + + + + Server Port: Sunucu Bağlantı Noktası: - - - - + + + + Use IPv6 IPv6 Kullan - - + + Server Password: Sunucu Parolası: @@ -4781,43 +4810,43 @@ p, li { white-space: pre-wrap; } Ön Tanımlı Ağ Oyunu Ayarları - - + + Computer Engine Bilgisayar Motoru - - + + Opponent 5: Rakip 5: - - + + Opponent 3: Rakip 3: - - + + Opponent 2: Rakip 2: - - + + Opponent 1: Rakip 1: - - + + Opponent 4: Rakip 4: - + Human Player: Gerçek Oyuncu: @@ -4826,8 +4855,8 @@ p, li { white-space: pre-wrap; } Ouncu Takma Adları - - + + Log File Directory: Günlük Dosyası Dizini: @@ -4838,23 +4867,23 @@ p, li { white-space: pre-wrap; } - + Log Messages Günlük Mesajları - + Local Game Settings Yerel Oyun Ayarları - + Network Game Settings Ağ Oyunu Ayarları - - + + Show flip-card animation Kart-çevirme canlandırmasını göster @@ -4863,8 +4892,8 @@ p, li { white-space: pre-wrap; } Kendi kıvrık taraf resmi: - - + + Show fade-out animation for non-winning cards Kazanmayan kartlar için kararma canlandırmasını göster @@ -4873,18 +4902,18 @@ p, li { white-space: pre-wrap; } Başlangıçta giriş canlandırmasını göster - + Show right toolbox Sağ araç çubuğunu göster - + Show left toolbox Sol araç çubuğunu göster - - + + Play blind raise notification @@ -4893,8 +4922,8 @@ p, li { white-space: pre-wrap; } Durum çubuğu mesajlarını göster - - + + Show game settings dialog on every new game Her yeni oyunda, oyun ayarları diyaloğunu göster @@ -4903,20 +4932,20 @@ p, li { white-space: pre-wrap; } Antall henter før "Small Blind" økes: - - + + Number of players: Oyuncu sayısı: - - + + Game Speed: Oyun Hızı: - - + + Pause between hands (press "start" button to go on) Eller arasında durakla (devam etmek için başla tuşuna basın) @@ -4929,8 +4958,8 @@ p, li { white-space: pre-wrap; } Bilgisayar rakipleriniz için Motor Sürümü: - - + + Enable/Disable Logging Günlük Tutmayı Etkinleştir/Edilginleştir @@ -4939,8 +4968,8 @@ p, li { white-space: pre-wrap; } Günlük dosyalarını sakla - - + + Write log after every: Herseferinde son olarak günlük yaz: @@ -4957,14 +4986,14 @@ p, li { white-space: pre-wrap; } Hvert spill (lav disk-bruk) - - + + Show buttons for small blind and big blind Vis knapper for "small blind" og "big blind" - - + + Play sound effects Ses etkilerini oynat @@ -4973,26 +5002,26 @@ p, li { white-space: pre-wrap; } 0.4 (şu anki) - - - - + + + + Use SCTP SCTP Kullan - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://no.wikipedia.org/wiki/Ipv6">Bu nedir?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Bu nedir?</a> @@ -5010,36 +5039,36 @@ p, li { white-space: pre-wrap; } Ayarlar - - + + Maximum number of players: En fazla oyuncu sayısı: - - + + Sound Volume: Ses Oranı: - - + + 10 10 - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 6: Rakip 6: @@ -5048,26 +5077,26 @@ p, li { white-space: pre-wrap; } Oyuncu faaliyeti zaman aşımına uğradı (sn): - - + + action (high frequent disc access) Faaliyet (yüksek sıklıkta disk geçişi) - - + + hand (medium disc access) El (orta derecede disk geçişi) - - + + game (low disc access) oyun (düşük disk geçişi) - - + + Show own cards only on mouse click Sadece fare tıklamasıyla kendi karlarımı göster @@ -5082,147 +5111,171 @@ p, li { white-space: pre-wrap; } - + Sound Ses - - + + + Common + + + + + Disable splashscreen on startup - - + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table - - + + Card Deck - - + + Card Back - - + + Use card back from card style - - + + Use custom card back picture: - - - - + + + + First small blind: İlk küçük teklif: - - - - + + + + Raise blinds: Teklifleri yükselt: - - - - - - - - + + + + + + + + Every: Her: - - - - + + + + hands eller - - - - + + + + minutes dakika - - - - + + + + Raise mode: Değer yükselt: - - - - + + + + Always double blinds Daime çifte teklif - - - - + + + + Manual blinds order: El ile teklif istemi: - - - - + + + + Edit ... Düzenle ... - - + + Delay between hands: - - + + Network Server Settings Ağ Sunucusu Ayarları - + + + Allow spectators to watch the game + + + + OK - + Internet Game Settings İnternet Oyun Ayarları @@ -5231,14 +5284,14 @@ p, li { white-space: pre-wrap; } İnternet Oyun Ayarları (Tahsis edilen Sunucu) - - + + Server Address: Sunucu Adresi: - - + + Use password for private game: Özel oyun için parola kullan: @@ -5255,37 +5308,37 @@ p, li { white-space: pre-wrap; } #pokerth - - + + Language: Dil: - + Note: Best quality with image ratio like width=48, height=76. - - + + Sound Categories Ses Kategorileri - - + + Play game actions sounds like "check", "call", "raise" "denetle", "çağır", "yükselt" gibi hamle sesleri olan oyun oyna - - + + Play lobby chat notifications Kulis sohbet bildirimlerini oynat - - + + Play network/internet game notifications like "player joined the game" "Oyuncu oyuna girdi" gibi ağ/internet oyunu bildirimleri ile oyna @@ -5294,7 +5347,7 @@ p, li { white-space: pre-wrap; } Kulis Sohbetini Etkinleştir/Edilgenleştir (IRC Sunucu) - + Player Nicks/Avatars Oyuncu Takma İsimleri/Avatarları @@ -5306,19 +5359,19 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><span style=" font-style:italic;">Not: Ön Tanımlı </span><span style=" font-style:italic;"> "En fazla oyuncu sayısı", "Nakite çevir" ve "Küçük teklif gibi"</span><span style=" font-weight:600; font-style:italic;">Oyun Ayarları</span><span style=" font-weight:600; font-style:italic;">Ağ Oyunu Ayarlarından kullanılacaktır.</span></p></body></html> - + Reverse order of F-Keys (F1 - F4) F-Tuşlarının (F1 - F4) ters işlemleri - - + + Network / Internet Game Ağ / İnternet Oyunu - - + + Switch keyboard focus to bet-input-field if it's your turn Eğer senin sıransa klavyeden bahis giriş alanını değiştirin @@ -5337,33 +5390,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Not: En iyi kalitede resim oranı </span><span style=" font-weight:600; font-style:italic;">genişlik=100, yükseklik=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Oyuncu hamlesi için zaman bitti: - - - - + + + + s s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5374,7 +5427,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Not: Öntanımlı </span><span style=" font-weight:600; font-style:italic;">Oyun Ayarları</span><span style=" font-style:italic;"> örneğin "En fazla oyuncu sayısı", "Başlangıç Parası" ve "En az Teklif" </span><span style=" font-weight:600; font-style:italic;">Ağ Oyunu Ayarlarında kullanılabilir.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5384,32 +5437,32 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Not: En iyi kalitede resim oranı </span><span style=" font-weight:600; font-style:italic;">genişlik=50, yükseklik=50.</span></p></body></html> - - + + Automatic Server Configuration URL Otomatik Sunucu Ayarları Adresi - - + + Serverlist Address: Sunucu Listesi Adresi: - - + + Manual Server Configuration El ile Ayarlanmış Sunucu Ayarları - - + + Store log files for: - - + + Day(s) Gün(ler) @@ -5438,8 +5491,8 @@ p, li { white-space: pre-wrap; } Takma İsimler/Avatarlar - - + + Show cards chance monitor Şans Penceresini Göster @@ -5456,64 +5509,64 @@ p, li { white-space: pre-wrap; } Parola: - - + + Avatar Server: - + Style - + Factory Settings - - + + Don't translate poker strings like check, call, raise from game table style - - + + Show country flag in the corner of avatar - - - - + + + + Add ... - - - - + + + + Remove - - - - + + + + Preview - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5522,31 +5575,31 @@ p, li { white-space: pre-wrap; } - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State Aşama - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5555,7 +5608,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5567,85 +5620,85 @@ p, li { white-space: pre-wrap; } - - + + Server - - + + Game Oyun - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - - + + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5654,19 +5707,19 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Rakip 6: {7:?} - - + + Opponent 8: Rakip 6: {8:?} - + Note: Best avatar quality with image ratio like width=50, height=50. @@ -5675,14 +5728,14 @@ p, li { white-space: pre-wrap; } Sil - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5691,8 +5744,8 @@ p, li { white-space: pre-wrap; } Rakip 6: {10:?} - - + + Opponent 9: Rakip 6: {10:?} {9:?} @@ -5700,11 +5753,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Ayar Hatası @@ -5721,7 +5774,7 @@ Please select an valid directory! Lütfen geçerli bir dizin giriniz! - + Select your flipside picture Kıvrık taraf resminizi seçin @@ -5730,24 +5783,24 @@ Lütfen geçerli bir dizin giriniz! Resimler (*.png) - + Open Directory Dizin Aç - + Images (*.png *.jpg *.gif) Resimler (*.png *.jpg *.gif) - - + + Blinds Error Teklif Hatası - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5814,12 +5867,12 @@ yüksek değer olarak ayarlanacaktır. Türkçe - + Language Changed Dil Değiştirildi - + You have changed application language to %1. Please restart PokerTH to load new language! Uygulama dilini %1 olarak değiştirdiniz. @@ -5856,15 +5909,15 @@ Yeni dilde yüklenmesi için lütfen PokerTH programını yeniden başlatınız! - + The entered flipside picture doesn't exist. Please enter an valid picture! Girilen resmin ters tarafı mevcut değil. Lütfen geçerli bir resim giriniz! - - + + The log file directory doesn't exist. Please select an valid directory! Günlük dosyasının dizini mevcut değil. @@ -5906,7 +5959,7 @@ Lütfen geçerli bir dizin seçiniz! İsveççe - + The entered server list address is not a valid URL. Please enter a valid server list address! Girilen sunucu listesi adresi geçerli değil. @@ -5943,146 +5996,146 @@ Lütfen geçerli bir adres girin! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State Aşama - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6151,12 +6204,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Sunucu Hatası - + You should not kick yourself from this game! Bu oyunda kendi kendinizi tekmeleyemezsiniz! @@ -6341,106 +6394,106 @@ Please choose another one. Lütfen başka bir tane seçiniz. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Ağ Hatası - + Server address was not set. Sunucu adresi belirtilmedi. - + An invalid port was set (ports 0-1023 are not allowed). Geçersiz bağlantı noktası belirtilmiş (0-1023 arasındaki bağlantı noktaları kullanılamaz). - + Could not create a socket for TCP communication. TCP iletişimi için bir yuva oluşturulamadı. - + Could not set the IP address. IP adresi ayarlanamadı. - + Could not set the port for this type of address. Bu çeşit bir adres için bağlantı noktası ayarlanamadı. - + The server name could not be resolved. Sunucu ismi çözümlenemedi. - + Bind failed - please choose a different port. Bağlama başarısız - lütfen farklı bir bağlantı noktası seçin. - + Internal network error: "listen" failed. Dahili ağ hatası - "dinleme" başarısız. - + Server execution was terminated. Sunucu işletimi sonlandırıldı. - + Could not connect to the server. Sunucuya bağlanılamadı. - + Connection timed out. Please check the server address. @@ -6451,12 +6504,12 @@ Lütfen sunucu adresini kontrol ediniz. Eğer sunucu bir NAT-Router arkasındaysa, sunucu tarafındaki bağlantı noktası yönlendirmesinin ayarlandığından emin olunuz. - + Internal network error: "select" failed. Dahili ağ hatası - "seçim" başarısız. - + Internal network error: "send" failed. Dahili ağ hatası - "gönder" başarısız. @@ -6465,31 +6518,31 @@ Eğer sunucu bir NAT-Router arkasındaysa, sunucu tarafındaki bağlantı noktas Bağlantı, sunucu tarafından kapatıldı. - + The connection to the server was lost. - + Internal network error: Duplicate TCP connection. Dahili ağ hatası: TCP bağlantısını çoğaltın. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Geçersiz bir ağ paketi alındı. Lütfen bütün oyuncuların PokerTH ın aynı sürümünü kullandığından emin olun. - + Internal state error. Please make sure that all players use the same version of PokerTH. Dahili durum hatası. Lütfen bütün oyuncuların PokerTH ın aynı sürümünü kullandığından emin olun. - + Invalid server list URL. Please correct the address in the settings. Geçersiz sunucu listesi. @@ -6508,161 +6561,161 @@ Please make sure that the server list URL is correct. Lütfen sunucu listesi adresinin doğru olduğundan emin olun. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Ağ Oyunu Başlat - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. PokerTH İnternet sunucu listesi geçersiz veriler içeriyor. Eğer özel bir sunucu listesi kullanıyorsanız lütfen dosya biçiminin doğru olduğundan emin olun. - + Could not unzip the PokerTH internet server list. Sıkıştırılmış durumdaki PokerTH İnternet sunucu listesi açılamadı. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. PokerTH sunucu listesi indirilemedi. Lütfen doğrudan İnternet'e bağlı olduğunuzdan emin olun. - + Could not open the target file when downloading the server list. Sunucu listesi indirilirken hedef dosya açılamadı. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. PokerTH sunucu, oyunun bu sürümünü desteklemiyor.<br>Lütfen <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> adresinden son sürümü indirin. - + Sorry, this server is already full. Üzgünüm, bu sunucu dolu. - + Invalid login. Please check your username and password. - + Your account is blocked indefinitely. - + You cannot login at this time. Please try again in a few seconds. - + You cannot join this game, because another player in that game has your network address. - + Your connection to the server is very slow, the game had to start without you. - + This game is of type invite-only. You cannot join this game without being invited. - + Invalid password when joining the game. Please reenter the password and try again. Oyuna girişte geçersiz parola. Lütfen parolanızı girin ve yeniden deneyin. - + The avatar report was accepted by the server. Thank you. - + This avatar was already reported by another player. - + An error occurred while reporting the avatar. - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. - + The password is too long. Please choose another one. Parola çok uzun. Lütfen başka bir tane deneyin. @@ -6677,67 +6730,67 @@ Lütfen farklı bir isim seçiniz. Bu oyuncu ismi, çok kısa, çok uzun yahut geçersiz. Lütfen başka bir isim seçiniz. - + The game name is either too short or too long. Please choose another one. Oyun ismi ya çok uzun yada öok kısa. Lütfen başka birini seçiniz. - + The game could not be found. Oyun bulunamadı. - + The chat text is invalid. Söyleşi metni geçersiz. - + The server referred to an unknown player. Aborting. Sunucu, bilinmeyen bir oyuncuya devredildi. Çıkılıyor. - + Internal error: The current player could not be found. Dahili hata: Bu oyuncu bulunamadı. - + Internal error: The current player is not active. Dahili Hata: Bu oyuncu aktif değil. - + You were kicked from the server. Sunucu tarafından tekmelendiniz. - + You were temporarily banned from the server. Sunucuya erişiminz geçici olarak yasaklandı. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Bir etkinlik olmadığından sunucu ile kurduğunuz bağlantı zamanaşımına uğradı. Tabii ki yeniden bağlanabilirsiniz! - + The client player count is invalid. İstemci oyuncu sayısı yanlış. - + Too many manual blinds were set. Please reconfigure the manual blinds. Çok fazla elle teklif ayarlı. Lütfen elle teklifleri eniden yapılandırınız. - + An invalid avatar file was configured. Please choose a different avatar. Geçersiz bir avatar dosyası yapılandırıldı. Lütfen farklı bir avatar seçiniz. - + The selected avatar file is too large. Please choose a different avatar. Seçili avatar dosyası çok büyük. Lütfen farklı bir avatar seçiniz. @@ -6746,84 +6799,84 @@ Lütfen farklı bir isim seçiniz. Şimdi yeni bir avatar dosyası yükleyemezsiniz. Lütfen birkaç saniye sonra yeniden deneyin. - + An internal avatar error occured. Please report this to an admin in the lobby chat. İçsel bir simge hatası algılandı. Lütfen bunu kulis söyleşisinde yöneticiye iletin. - + Could not start game: Synchronization failed. Oyun başlatılamadı: Eş zamalama yapılamadı. - + The server is down for maintenance. Please try again later. Sunucu bakım sebebiyle kapalı. Lütfen sonra tekrar deneyin. - + An internal error occured. Dahili bir hata oluştu. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Ağ Bildirimi - + You were kicked from the game. Oyundan atıldınız. - + Sorry, this game is already full. Üzgünüm, oyun zaten dolu. - + Unable to join - the server has already started the game. Girilemiyor - sunucu zaten oyuna başladı. - + Your admin state timed out due to inactivity. Feel free to create a new game! Bir etkinlik olmadığından yönetici durumunuz zamanaşımına uğradı. Tabii ki yeni bir oyun oluşturabilirsiniz! - + You cannot join this type of game as guest. - + The settings are invalid for this type of game. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. PokerTH ın yeni bir yayını hazır.<br>Lütfen <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> adresinden son sürümü indirin. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. PokerTH ara sürümü artık geçersiz.<br>Lütfen <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> adresinden son sürümü indiriniz. - - + + Server Message diff --git a/ts/pokerth_vi.ts b/ts/pokerth_vi.ts index baf91ab0..397110eb 100644 --- a/ts/pokerth_vi.ts +++ b/ts/pokerth_vi.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -211,22 +210,22 @@ Xin vui lòng liên hệ tác giả đã tạo ra kiểu họa tiết bàn chơi Lỗi về họa tiết bàn chơi bài - Quá cũ so với phiên bản hiện tại - + Everything OK! Tất cả mọi thiết lập đều hợp lệ! - + Some pictures are missing, please contact style maintainer for this issue. Một vài hình ảnh bị thiếu, vui lòng liên hệ tác giả đã thiết kế phần này để hoàn thiện phần thông tin thiếu nói trên. - + Some style fields are missing, please contact style maintainer for this issue. Một vài thông tin về kiểu họa tiết bị thiếu, xin vui lòng liên hệ tác giả của phần họa tiết đó để hoàn thiện thông tin bị thiếu. - + This style is outdated, please contact style maintainer for this issue. Kiểu họa tiết này đã quá cũ, xin vui lòng liên hệ tác giả của kiểu họa tiết này để hoàn thiện phần họa tiết trên. @@ -304,63 +303,63 @@ Xin vui lòng chọn đúng kiểu họa tiết dành cho bàn chơi bài và th - + PokerTH - Delete log files Thông báo - Xóa tập tin Nhật Ký - + Do you really want to delete the selected log files? Bạn có thật sự muốn xóa những tập tin thuộc phần Nhật Ký mà bạn vừa chọn hay không? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML Xuất tập tin nhật ký thành định dạng HTML - + PokerTH HTML log (*.html) Định dạng tập tin Nhật Ký (*html) - + Export PokerTH log file to plain text Xuất định dạng tập tin nhật ký thành file văn bản thông thường - + PokerTH plain text log (*.txt) Định dạng tập tin nhật ký dạng văn bản (*.txt) - + Save PokerTH log file Lưu tập tin Nhật Ký - + PokerTH SQL log (*.pdb) Định dạng nhật ký dạng SQL (*pdb) - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -431,18 +430,18 @@ Uploading log files may fail if you are using an http proxy. Báo cáo trường hợp vi phạm hình đại diện - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Trong tương lai, bạn sẽ không nhận được những tin nhắn hoặc các lời mời từ người này. <br> Bạn có chắc muốn đưa người chơi <b>%1</b> vào danh sách Không Để Ý không? - - + + PokerTH - Question PokerTH - Xác Nhận - + Are you sure you want to report the avatar of "%1" as inappropriate? Bạn có chắc muốn báo cáo về thành viên "%1" với lý do hình ảnh đại diện không hợp lệ hay không? @@ -471,8 +470,8 @@ Uploading log files may fail if you are using an http proxy. aboutPokerth - - + + About Thông tin thêm @@ -507,14 +506,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2013, bản quyền thuộc về Felix Hammer, Florian Thauer, Lothar May và được biên dịch bởi Phồng Tôm. Hãy cùng Tôm Poker theo cách của bạn</span></p></td></tr></table></body></html> - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">Website của chương trình<a> - - + + Project Dự Án @@ -565,7 +564,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - phụ trách thiết kế đồ họa</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -574,7 +572,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -584,39 +582,65 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">tên người dịch - địa chỉ mail</span></p></td></tr></table></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + Translation Ngôn ngữ - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + Thanks to Xin dành lời cảm ơn tới - - + + License Bản quyền - + + + Third party libs + + + + Close Đóng lại @@ -765,8 +789,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - đối với âm thanh khi thay đổi bàn chơi bàn</span></p></td></tr></table></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -775,7 +799,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1027,12 +1051,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Thứ tự tăng tiền cược do người chỉnh - + You cannot set more than 30 manual blinds. Bạn không thể đặt lớn hơn 30. @@ -1175,7 +1199,7 @@ Xin vui lòng đặt lại một tên khác! - + Default game name: Tên mặc định cho màn chơi: @@ -1210,75 +1234,81 @@ Xin vui lòng đặt lại một tên khác! Màn chơi được xếp hạng trên hệ thống máy chủ - - + + Maximum number of players: Số lượng tối đa người tham gia vào màn chơi: - - + + Start Cash: Số tiền cho màn chơi: - - + + $ $ - + Blinds Tỉ lệ cược - + Use saved blinds settings Sử dụng thiết lập tỉ lệ cược được lưu trước đó - + Change blinds settings ... Thay đổi tỉ lệ cược... - + Timeout for player action: Thời gian chờ tối đa với mỗi người chơi: - - + + s giây - - + + Password: Mật khẩu: - + Delay between hands: Thời gian giữa các lượt chơi: - - + + + Allow spectators to watch the game + + + + + Create Game Tạo màn chơi - + Cancel Hủy bỏ @@ -1391,56 +1421,68 @@ Xin vui lòng đặt lại một tên khác! Hệ thống màn chơi online - - + + Game Info Thông tin về màn chơi - - + + Game type: Thể loại màn chơi: - - + + Connected Players Số người chơi kết nối - - + + search for player ... tìm kiếm người chơi... - - + + 5 - Show open & non-full & ranking games 5 - Hiển thị các màn chơi theo dạng mở & không đầy đủ & được xếp hạng trên hệ thống - - + + + Players + Người chơi + + + + + Spectators + + + + + Start Cash: Số tiền ban đầu: - - + + First small blind: Tiền cược nhỏ ban đầu: - - + + Blinds raise interval: Tăng tỉ lệ tiền cược mỗi: - - + + Blinds raise mode: Chế độ tăng tỉ lệ tiền cược: @@ -1450,7 +1492,7 @@ Xin vui lòng đặt lại một tên khác! Màn chơi - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1459,68 +1501,66 @@ p, li { white-space: pre-wrap; } - - + + Fill up with computer opponents Bổ sung các người chơi còn thiếu bằng người chơi do máy tính tạo ra - - + + &Start Game &Bắt đầu màn chơi - - + + &Kick Player &Đuổi người chơi - - + + Sort alphabetically Sắp xếp theo thứ tự chữ cái - - + + Sort by country Sắp xếp theo quốc gia - - + + Display idle players Hiển thị các người chơi ở trạng thái chờ - - + + Manual blinds list: Danh sách tỉ lệ tiền cược tùy chỉnh: - - + + &Leave Game &Rời khỏi màn chơi - - Join &any game - Tham gia &bất kỳ màn chơi nào + Tham gia &bất kỳ màn chơi nào - - + + &Create Game &Tạo màn chơi - - + + &Join Game &Tham gia màn chơi @@ -1543,44 +1583,44 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Bấm vào đây để hiện thị các màn chơi được hệ thống xếp hạng</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - Không dùng bộ lọc với màn chơi - - + + 1 - Show open games 1 - Hiển thị các màn chơi mở - - + + 2 - Show open & non-full games 2 - Hiển thị các màn chơi mở & không đủ người - - + + 3 - Show open & non-full & non-private games 3 - Hiển thị các màn chơi mở & không đủ người & không mật khẩu - - + + 4 - Show open & non-full & private games 4 - Hiển thị các màn chơi mở & không đủ người & cần có mật khẩu - - + + Timing: Thời gian: - - + + Lobby-Chat Khung Chat với mọi người trong hệ thống @@ -1605,211 +1645,226 @@ p, li { white-space: pre-wrap; } Đang bắt đầu màn chơi. Vui lòng đợi đôi lát ... - + Joining a private Game Đang kết nối với màn chơi kín/yêu cầu mật khẩu - + You are about to join a private game. Please enter the password! Bạn đang tham gia vào một màn chơi kín/yêu cầu mật khẩu. Vui lòng điền vào mật khẩu bên dưới! - + open mở - - - - + + + + Game Info Thông tin về màn chơi - - - + + Spectate + + + + + + Game Màn chơi - - - + + + Players Người chơi - - - + + + State Trạng thái - - - + + + P P - - - + + + Available Players Các người chơi đang sẵn sàng - + Invite player Mời người chơi - + Ignore player Bỏ qua người chơi - + Player infos ... Thông tin về người chơi... - + Report inappropriate game name Thông báo cho ban quản trị về tên của màn chơi vi phạm luật - - - + + + Standard Tiêu chuẩn - - - + + + Registered players only Chỉ dành cho người chơi đã đăng ký - - - + + + Invited players only Chỉ dành cho người chơi được mời/mật khẩu - - - + + + Ranking game Màn chơi được xếp hạng trên hệ thống - Connected players - max. %1 - Số lượng người chơi tối đa %1 + Số lượng người chơi tối đa %1 - - - + + + T T - - - + + + sec (action) giây (chơi) - - - + + + sec (hand delay) giây (trong lượt chơi) - - Connected players - Max. %1 - Những người chơi đã kết nối - Tối đa %1 + Những người chơi đã kết nối - Tối đa %1 - + running đang diễn ra - - + + running games: %1 những màn chơi đang diễn ra: %1 - - + + open games: %1 những màn chơi mở: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 Mời %1 - + Ignore %1 Bỏ qua %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 được mời tới %2 bởi %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 đã từ chối lời mời đến %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 không thể tham gia %2 vì đang tham gia vào một màn chơi khác.</span> - - + + The game will start in<br><b>%1</b> seconds. Màn chơi sẽ bắt đầu trong vòng<br><b>%1</b> giây nữa. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Bạn đã tham gia vào màn chơi dạng "chỉ dành cho khách mời/mật khẩu". Hãy mời những người chơi khác bằng cách chọn chuột phải vào tên của các người chơi trong danh sách các người chơi đang kết nối. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Bạn đã được mời tham gia màn chơi <b>%1</b> bởi <b>%2</b>.<br>Bạn có muốn tham gia màn chơi này không? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Trong tương lai bạn sẽ không còn nhận được các tin nhắn tán gẫu hoặc lời mời chơi từ người dùng này.<br>Bạn có chắc rằng sẽ cho người dùng <b>%1</b> vào danh sách bỏ qua hay không? - - + + connected players: %1 những người chơi đã kết nối: %1 @@ -1824,1344 +1879,1342 @@ Hãy mời những người chơi khác bằng cách chọn chuột phải vào - - - + + + Time - - + + Show player stats Hiển thị trạng thái người chơi - - + + Admin action ... - + Total kickban - + Close game - - Connected players - Số người chơi đã kết nối + Số người chơi đã kết nối - + hands lượt - + minutes phút - + double blinds gấp đôi tiền cược - + manual blinds order thứ tự tăng tiền cược tự chỉnh - + Server Error Lỗi hệ thống máy chủ online - + You should not kick yourself from this game! Bạn không nên tự mình đuổi mình ra khỏi trò chơi này! - + search for player ... tìm kiếm người chơi... - + Chat is only available to registered players. Tính năng tán gẫu/chat chỉ được kích hoạt với những người chơi đã đăng ký. - + Invite player ... Mời người chơi... - + Ignore player ... Bỏ qua người chơi... - + %1 is playing in "%2". %1 đang chơi ở "%2". - + %1 is not playing at the moment. %1 không chơi bàn nào ở thời điểm này. - - + + PokerTH - Info Message PokerTH - Thông báo - - - - + + + + PokerTH - Question PokerTH - Xác nhận - + Afghanistan Afghanistan - + ALand Islands ALand Islands - + Albania Albania - + Algeria Algeria - + American Samoa American Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarctica - + Antigua And Barbuda Antigua And Barbuda - + Argentina Argentina - + Armenia Armenia - + Aruba Aruba - + Australia Úc - + Austria Áo - + Azerbaijan Azerbaijan - + Bahamas Bahamas - + Bahrain Bahrain - + Bangladesh Bangladesh - + Barbados Barbados - + Belarus Belarus - + Belgium Bỉ - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia And Herzegovina - + Botswana Botswana - + Bouvet Island Bouvet Island - + Brazil Brazil - + British Indian Ocean Territory British Indian Ocean Territory - + Brunei Darussalam Brunei Darussalam - + Bulgaria Bulgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Cam-pu-chia - + Cameroon Cameroon - + Canada Canada - + Cape Verde Cape Verde - + Cayman Islands Cayman Islands - + Central African Republic Central African Republic - + Chad Chad - + Chile Chile - + China Cẩu Chó - Ba Tàu - Tàu Khựa - + Christmas Island Christmas Island - + Cocos (Keeling) Islands Cocos (Keeling) Islands - + Colombia Colombia - + Comoros Comoros - + Congo Congo - + Congo, The Democratic Republic Of The Congo, The Democratic Republic Of The - + Cook Islands Cook Islands - + Costa Rica Costa Rica - + Cote D'Ivoire Cote D'Ivoire - + Croatia Croatia - + Cuba Cuba - + Cyprus Síp - + Czech Republic Czech Republic - + Denmark Đan Mạch - + Djibouti Djibouti - + Dominica Dominica - + Dominican Republic Dominican Republic - + Ecuador Ecuador - + Egypt Ai Cập - + El Salvador El Salvador - + Equatorial Guinea Equatorial Guinea - + Eritrea Eritrea - + Estonia Estonia - + Ethiopia Ethiopia - + Falkland Islands (Malvinas) Falkland Islands (Malvinas) - + Faroe Islands Faroe Islands - + Fiji Fiji - + Finland Phần Lan - + France Pháp - + French Guiana French Guiana - + French Polynesia French Polynesia - + French Southern Territories French Southern Territories - + Gabon Gabon - + Gambia Gambia - + Georgia Georgia - + Germany Đức - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Hy Lạp - + Greenland Greenland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bissau - + Guyana Guyana - + Haiti Haiti - + Heard Island And Mcdonald Islands Heard Island And Mcdonald Islands - + Holy See (Vatican City State) Holy See (Vatican City State) - + Honduras Honduras - + Hong Kong Hồng Khựa - Ba Tàu - + Hungary Hungary - + Iceland Iceland - + India Ấn Độ - + Indonesia Indonesia - + Iran, Islamic Republic Of Iran - + Iraq Iraq - + Ireland Ireland - + Isle Of Man Isle Of Man - + Israel Israel - + Italy Ý - + Jamaica Jamaica - + Japan Nhật - + Jersey Jersey - + Jordan Jordan - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Triều Tiên Ủn - + Korea, Republic Of Hàn Quốc - + Kuwait Kuwait - + Kyrgyzstan Kyrgyzstan - + Lao People'S Democratic Republic Lào - + Latvia Latvia - + Lebanon - + Lesotho Lesotho - + Liberia Liberia - + Libyan Arab Jamahiriya Libyan Arab Jamahiriya - + Liechtenstein Liechtenstein - + Lithuania Lithuania - + Luxembourg Luxembourg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia, The Former Yugoslav Republic Of - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malaysia - + Maldives Maldives - + Mali Mali - + Malta Malta - + Marshall Islands Marshall Islands - + Martinique Martinique - + Mauritania Mauritania - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Mexico - + Micronesia, Federated States Of Micronesia, Federated States Of - + Moldova, Republic Of Moldova, Republic Of - + Monaco Monaco - + Mongolia Mongolia - + Montserrat Montserrat - + Morocco Morocco - + Mozambique Mozambique - + Myanmar Myanmar - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Netherlands - + Netherlands Antilles Netherlands Antilles - + New Caledonia New Caledonia - + New Zealand New Zealand - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Norfolk Island - + Northern Mariana Islands Northern Mariana Islands - + Norway Na Uy - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Palestinian Territory, Occupied - + Panama Panama - + Papua New Guinea Papua New Guinea - + Paraguay Paraguay - + Peru Peru - + Philippines Philippines - + Pitcairn Pitcairn - + Poland Ba Lan - + Portugal Bồ Đào Nha - + Puerto Rico Puerto Rico - + Qatar Qatar - + Reunion Reunion - + Romania Romania - + Russian Federation Russian Federation - + Rwanda Rwanda - + Saint Helena Saint Helena - + Saint Kitts And Nevis Saint Kitts And Nevis - + Saint Lucia Saint Lucia - + Saint Pierre And Miquelon Saint Pierre And Miquelon - + Saint Vincent And The Grenadines Saint Vincent And The Grenadines - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe Sao Tome And Principe - + Saudi Arabia Saudi Arabia - + Senegal Senegal - + Serbia And Montenegro Serbia And Montenegro - + Seychelles Seychelles - + Sierra Leone Sierra Leone - + Singapore Singapore - + Slovakia Slovakia - + Slovenia Slovenia - + Solomon Islands Solomon Islands - + Somalia Somalia - + South Africa Nam Phi - + South Georgia And The South Sandwich Islands Canada - + Spain Tây Ban Nha - + Sri Lanka Canada - + Sudan Canada - + Suriname Canada - + Svalbard And Jan Mayen Canada - + Swaziland Canada - + Sweden Thụy Điển - + Switzerland Thụy Sĩ - + Syrian Arab Republic Canada - + Taiwan, Province Of China Đài Loan - Tàu Khựa - + Tajikistan Canada - + Tanzania, United Republic Of Canada - + Thailand Thái - + Timor-Leste Canada - + Togo Canada - + Tokelau Canada - + Tonga Canada - + Trinidad And Tobago Canada - + Tunisia Canada - + Turkey Thổ Nhĩ Kỳ - + Turkmenistan Canada - + Turks And Caicos Islands Canada - + Tuvalu Canada - + Uganda Canada - + Ukraine Canada - + United Arab Emirates Liên Đoàn Ả Rập - + United Kingdom Anh Quốc - + United States Hợp Chủng Quốc Hoa Kỳ - + United States Minor Outlying Islands Canada - + Uruguay Canada - + Uzbekistan Canada - + Vanuatu Canada - + Venezuela Canada - + Viet Nam tiếng Việt - Việt Nam - + Virgin Islands, British Canada - + Virgin Islands, U.S. Virgin Islands, U.S. - + Wallis And Futuna Wallis And Futuna - + Western Sahara Western Sahara - + Yemen Yemen - + Zambia Zambia - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Bạn có chắc rằng bạn muốn tố cáo tên màn game : "%1" vì lý do không hợp lệ hay không? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3174,273 +3227,273 @@ Hãy mời những người chơi khác bằng cách chọn chuột phải vào PokerTH 0.6-beta - The Open-Source Texas Holdem Engine - + Hands Lượt Chơi - + Chat Tán gẫu - + Save Lưu - + Log Nhật Ký - + Away Không có tín hiệu - + Manual Action (default) Chế độ do người dùng thiết lập (mặc định) - + Auto-Check / Auto-Fold Tự động cược / Tự động bỏ cược - + Auto-Check / Auto-Call-Any Tự động cược / Tự động chấp nhận tăng mức cược bất kỳ - + Speed: Tốc độ: - - + + Start Local Game ... Bắt đầu màn chơi offline... - - + + Ctrl+N Nhấn phím Ctrl+N - - + + Quit Thoát - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... Thông tin về trò chơi... - - + + Settings ... Thiết lập... - - + + Create Network Game ... Tạo màn chơi mạng offline... - - + + Ctrl+O Ctrol+O - - + + Join Network Game ... Tham gia màn chơi mạng offline... - - + + Ctrl+J Ctrl+J - - - + + + Fullscreen Hiển thị toàn màn hình - - + + Ctrl+F Ctrl+F - - + + Show/Hide Chat Window Hiển thị/Ẩn Cửa Sổ Tán Gẫu - - + + Ctrl+T Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window Hiển thị/Ẩn cửa sổ lượt chơi - - + + Ctrl+H Ctrl+H - - + + Show/Hide Log Window Hiển thị/Ẩn cửa sổ Nhật Ký - - + + Ctrl+L Ctrl+L - - + + Internet Game ... Màn chơi online... - - + + Ctrl+I Ctrl+I - - + + Show/Hide Away Window Hiển thị/Ẩn cửa sổ không tín hiệu - - + + Ctrl+A Ctrl+A - + Kick Đuổi - + Vote Timeout: Thời gian bình chọn: - + Yes Đồng ý - + No Không Đồng Ý - + Player info Thông tin người chơi - + Chance Cơ Hội - + Configure PokerTH ... Tùy chỉnh trò chơi... - - + + Close Đóng lại - - + + Ctrl+X Ctrl+X - + Vote started by: Bình chọn được bắt đầu bởi: - - + + Show/Hide Chance Window Hiển thị/ Ẩn cửa sổ Cơ Hội - - + + Ctrl+C Ctrl+C - + &View &Chế độ hiển thị - + &Settings &Thiết lập - + Shortcut: <Shift> Đường dẫn tắt: <Shift> - + Settings Thiết lập - + Configure PokerTH @@ -3448,142 +3501,147 @@ Hãy mời những người chơi khác bằng cách chọn chuột phải vào gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Dừng lại - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - - - - + + + + + + + + Start Bắt đầu - - - - - + + + + + Lobby Phòng chờ hệ thống - - + + Chat Tán gẫu - + Closing PokerTH during network game Đóng lại chương trình sau khi chơi xong màn chơi online - + You are the hosting server. Do you want to close PokerTH anyway? Bạn đang là người chủ của màn chơi này. Bạn có muốn thoát chương trình không? - + Really want to exit? Bạn có thật sự muốn thoát? - + PokerTH - Close Table? PokerTH - Đóng lại màn chơi này? - + PokerTH - Internet Game Message PokerTH - Thông báo của màn chơi online - + Attention! Do you really want to leave the current game and go back to the lobby? Chú ý! Bạn có thật sự muốn thoát ra khỏi màn chơi này và quay lại phòng chờ của hệ thống không? - - + + Chat is only available to registered players. Phần tán gẫu/chat chỉ dành riêng cho các người chơi đã đăng ký. - - + + Spectators + + + + + Chance Cơ hội - - + + Kick Đuổi - - + + Do you want to kick <b>%1</b><br>from this game? Bạn có thật sự muốn đuổi <b>%1</b><br> khỏi màn chơi này không? - - - - + + + + <b>%1</b> secs left còn lại <b>%1</b> giây nữa - + vote bỏ phiếu - + votes bỏ phiếu - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Người chơi <b>%1</b> đã <b>%2</b> %3<br>muốn đuổi người chơi này. <b>%4</b> bình chọn để đuổi người chơi. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Bạn nhận được <b>%1</b> %2 yêu cầu đuổi bạn.<br><b>%3</b> phiếu cần để đuổi. @@ -3800,56 +3858,66 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Lỗi xảy ra khi tải tập tin hồ sơ về máy chủ - - - - Could not load server-profiles-file: - Không thể tải tập tin về hồ sơ máy chủ: + Không thể tải tập tin về hồ sơ máy chủ: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error Lỗi xảy ra khi lưu hồ sơ về máy chủ - + A profile with the name: %1 already exists. Would you like to overwrite ? Một tên dạng hồ sơ : %1 đã tồn tại Bạn có muốn ghi đè lên hồ sơ này không? - + Read Server-Profile List Error Lỗi xảy ra khi đọc hồ sơ máy chủ - + Could not read server-profiles list Không thể đọc được hồ sơ của máy chủ - - + + Save Server-Profile-File Error Lỗi xảy ra khi lưu tập tin về hồ sơ máy chủ - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Không thể lưu thông tin hồ sơ máy chủ: + Không thể lưu thông tin hồ sơ máy chủ: @@ -3913,12 +3981,12 @@ Bạn có muốn ghi đè lên hồ sơ này không? manualBlindsOrderDialogImpl - + Manual Blinds Order Thứ tự chỉnh tiền cược tự chỉnh - + You cannot set more than 30 manual blinds. Bạn không thể tăng số lượng lên 30. @@ -3983,7 +4051,7 @@ Bạn có muốn ghi đè lên hồ sơ này không? - + Use saved blinds settings Sử dụng thiết lập về tiền cược lần trước @@ -3994,13 +4062,13 @@ Bạn có muốn ghi đè lên hồ sơ này không? - + Change blinds settings ... Thay đổi thiết lập tỉ lệ tiền cược... - + Game Speed: Tốc độ màn chơi: @@ -4041,38 +4109,38 @@ Bạn có muốn ghi đè lên hồ sơ này không? selectAvatarDialogImpl - - - + + + Avatar File Error Lỗi đối với tập tin hình đại diện - + Please select an avatar from the list! Hãy lựa chọn một hình đại diện từ danh sách ! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Kích cỡ của hình đại diện được chọn quá lớn (tối đa là 30KB) Xin vui lòng chọn một hình đại diện có kích thước nhỏ hơn! - + The entered avatar picture doesn't exist. Please enter an valid picture! Hình đại diện tự chọn không tồn tại. Hãy chọn một hình đại diện đúng kiểu với hệ thống! - + Select external avatar picture Lựa chọn hình đại diện tùy thích - + Images (*.png *.jpg *.gif) Hình ảnh (có kiểu tập tin là *png *jpg *gif) @@ -4093,134 +4161,152 @@ Hãy chọn một hình đại diện đúng kiểu với hệ thống!Giao diện - - + + Language: Ngôn ngữ: - - + + Show fade-out animation for non-winning cards Hiển thị hiệu ứng chìm với các lá bài không thắng trong lượt chơi - - + + Show flip-card animation Hiển thị hiệu ứng lật mặt lá bài - - + + Show buttons for small blind and big blind Hiển thị nút dành cho tiền cược lớn và nhỏ - - + + Show own cards only on mouse click Hiển thị các lá bài của bạn bằng chuột - + Reverse order of F-Keys (F1 - F4) Thay đổi trật tự của các phím chức năng ( phím F1- F4) - - + + Network / Internet Game Màn chơi hệ thống offline/online - - + + Switch keyboard focus to bet-input-field if it's your turn Chuyển đổi sang dùng bàn phím để nhận lệnh khi đến lượt - + Sound Âm thanh - + Factory Settings Thiết lập ban đầu - - + + + Common + + + + + Disable splashscreen on startup Tắt logo trò chơi khi khởi động - - + + Show country flag in the corner of avatar Hiển thị quốc kỳ cho mỗi quốc gia bên cạnh hình đại diện - - + + Activate the "accidentally call after big raise" blocker Bật tính năng "vô tình cược sau khi tăng tiền cược" - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table Bàn chơi bài - - - - + + + + Description Mô tả - - - - + + + + Maintainer Người duy trì - - - + + + State Trạng thái - - + + Card Deck Mặt trong lá bài - - + + Card Back Mặt trước lá bài - - + + Use card back from card style Sử dụng mặt sau lá bài từ kiểu lá bài - - + + Use custom card back picture: Sử dụng kiểu lá bài tự chọn cho mặt sau lá bài: @@ -4243,186 +4329,186 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Chú ý: Chất lượng hiển thị hình ảnh tốt nhất với tỉ lệ </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">chiều rộng=48, chiều cao=76.</span></p></td></tr></table></body></html> - - + + Play sound effects Bật hiệu ứng âm thanh - - + + Sound Volume: Âm lượng âm thanh: - - + + 10 10 - - + + Sound Categories Phân loại âm thanh - - + + Play game actions sounds like "check", "call", "raise" Bật âm thanh với các thao tác "giữ nguyên mức cược", "cược", "tăng cược" - - + + Play lobby chat notifications Bật âm thanh thông báo về tin nhắn trong phần tán gẫu - - + + Play network/internet game notifications like "player joined the game" Bật âm thanh thông báo người chơi tham gia vào màn trong trong phần chơi mạng offline/online - + Local Game Settings Thiết lập Màn Chơi Đơn - - + + Number of players: Số lượng người chơi: - - - - + + + + Start Cash: Tiền cược ban đầu: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Tiền cược nhỏ ban đầu: - - - - + + + + Raise blinds: Tăng tiền cược: - - - - - - - - + + + + + + + + Every: Mỗi: - - - - + + + + hands lượt - - - - + + + + minutes phút - - - - + + + + Raise mode: Chế độ tăng: - - - - + + + + Always double blinds Luôn gấp đôi tỉ lệ tiền cược - - - - + + + + Manual blinds order: Thứ tự tự chỉnh tiền cược: - - - - + + + + Edit ... Chỉnh sửa... - - + + Game Speed: Tốc độ màn chơi: - - + + Pause between hands (press "start" button to go on) Tạm dừng sau mỗi lượt (click chuột vào "bắt đầu" để tiếp tục màn chơi) - - + + Show game settings dialog on every new game Hiển thị cửa sổ thông báo mỗi khi tạo một màn chơi mới - + Network Game Settings Thiết lập màn chơi mạng offline - - + + Maximum number of players: Số lượng người chơi tối đa: - - + + Timeout for player action: Thời gian cho mỗi người chơi: @@ -4471,14 +4557,14 @@ p, li { white-space: pre-wrap; } Xóa - - + + Reset all settings to default ... Đưa tất cả thiết lập trở về ban đầu... - - + + Note: You can not reset all settings to default during a running game! Chú ý: Bạn không thể thiết lập toàn bộ các điều chỉnh khi một màn chơi nào đó đang diễn ra! @@ -4487,66 +4573,66 @@ p, li { white-space: pre-wrap; } Tập tin Nhật Ký - - - - + + + + s giây - - + + Network Server Settings Thiết lập máy chủ mạng offline - - - - + + + + Server Port: Cổng Server: - - - - + + + + Use SCTP Sử dụng giao thức SCTP - - - - + + + + Use IPv6 Sử dụng IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Đây là gì?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Đây là gì?</a> - + Internet Game Settings Thiết lập màn chơi online - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4557,61 +4643,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Chú Ý: Mặc định </span><span style=" font-weight:600; font-style:italic;">Thiết lập màn chơi</span><span style=" font-style:italic;"> gồm "Số lượng người chơi tối đa", "Số tiền cược ban đầu" và "tiền cược nhỏ" sẽ được sử dụng </span><span style=" font-weight:600; font-style:italic;">từ phần thiết lập màn chơi mạng offline.</span></p></body></html> - - + + Server Address: Địa chỉ máy chủ: - - + + Use password for private game: Sử dụng mật khẩu đối với màn chơi riêng: - - + + Computer Engine Người chơi ảo/máy tạo ra - - + + Opponent 6: Đối thủ 6: - - + + Opponent 5: Đối thủ 5: - - + + Opponent 4: Đối thủ 4: - - + + Opponent 3: Đối thủ 3: - - + + Opponent 2: Đối thủ 2: - - + + Opponent 1: Đối thủ 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4622,111 +4708,117 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Chú ý: Hình đại diện có độ hiển thị tốt nhất với </span><span style=" font-weight:600; font-style:italic;">chiều rộng=50, chiều cao=50.</span></p></body></html> - - + + Enable/Disable Logging Bật/Tắt chế độ Nhật Ký - - + + Log File Directory: Thư mục lưu tập tin Nhật Ký: - - + + Write log after every: Lưu thông tin Nhật Ký mỗi: - - + + action (high frequent disc access) thao tác chơi (đòi hỏi việc xử lý thông tin trên ổ đĩa thường xuyên) - - + + hand (medium disc access) lượt chơi (truy cập ổ đĩa hệ thống ở mức trung bình) - - + + game (low disc access) màn chơi (thao tác với ổ đĩa hệ thống ở mức thấp) - + Log Messages Nội dung Nhật Ký - + Player Nicks/Avatars Người chơi / Hình đại diện - + Show right toolbox Hiển thị hộp công cụ bên phải - + Show left toolbox Hiển thị hộp công cụ bên trái - - + + Play blind raise notification Bật tính năng thông báo mỗi khi tăng tiền cược - - + + Automatic Server Configuration URL Tự động thiết lập đường dẫn URL tự động - - + + Serverlist Address: Danh sách địa chỉ máy chủ: - - + + Manual Server Configuration Thiết lập máy chủ tùy chỉnh - + + + Allow spectators to watch the game + + + + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: Lưu các tập tin Nhật Ký mỗi: - - + + Day(s) Ngày @@ -4755,62 +4847,62 @@ p, li { white-space: pre-wrap; } Tên người chơi/hình đại diện - - + + Show cards chance monitor Hiển thị cửa sổ tính toán cơ hội - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: Máy chủ hình đại diện: - + Style Kiểu - - + + Don't translate poker strings like check, call, raise from game table style Không dịch các chuỗi như check, call, tăng từ kiểu đồ họa của bàn chơi bài - - - - + + + + Add ... Thêm... - - - - + + + + Remove Loại bỏ - - - - + + + + Preview - Information: Xem trước - thông tin: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4823,8 +4915,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Chọn một kiểu bàn chơi bài mới ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4837,7 +4929,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Chọn kiểu mới cho lá bài ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4856,107 +4948,107 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Chú ý: Chất lượng hình ảnh được hiển thị tốt nhất với </span><span style=" font-weight:600; font-style:italic;">chiều rộng=48, chiều cao=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Thời gian chờ mỗi lượt: - - + + Server Máy chủ - - + + Server Password: - - + + Game Màn chơi - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Tên màn chơi mặc định: - - + + Default game type: Thể loại màn chơi mặc định: - - + + Standard Tiêu chuẩn - - + + Registered players only Chỉ dành cho người dùng đã đăng ký - - + + Invited players only Chỉ dành cho người chơi được mời - - + + Ranking game Màn chơi được xếp hạng trên hệ thống máy chủ - - + + Show lobby chat Hiển thị mục tán gẫu ở phòng chờ - - + + Automatically leave the table after the game finished Tự động rời khỏi bàn khi màn chơi kết thúc - - + + Ignored Players Bỏ qua người chơi - - + + Player Người chơi - - + + Remove Player Loại bỏ người chơi - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4969,20 +5061,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Người chơi:<br /><span style=" font-style:italic;">(Tên đại diện này cũng sẽ được sử dụng khi bắt đầu màn chơi online)</span></p></body></html> - - + + Opponent 7: Đối thủ 7: - - + + Opponent 8: Đối thủ 8: - - + + Opponent 9: Đối thủ 9: @@ -4990,65 +5082,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Lỗi thiết lập - + The entered flipside picture doesn't exist. Please enter an valid picture! Bạn đã chọn một hình ảnh không hề tồn tại. Hãy chọn một hình ảnh đúng với định dạng! - - + + The log file directory doesn't exist. Please select an valid directory! Thư mục chứa tập tin nhật ký không tồn tại. Hãy chọn một thư mục khác! - + Language Changed Ngôn ngữ đã thay đổi - + You have changed application language to %1. Please restart PokerTH to load new language! Bạn vừa thay đổi giao diện ngôn ngữ của chương trình thành tiếng %1. Hãy khởi động lại chương trình để áp dụng sự thay đổi này! - + Select your flipside picture Lựa chọn hình ảnh flipside - + Images (*.png *.jpg *.gif) Định dạng (*.png *.jpg *.gif) - + Open Directory Mở thư mục - - + + Blinds Error Lỗi tăng tiền cược - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5057,7 +5149,7 @@ là nhỏ hơn tỉ lệ cược hiện tại! Tỉ lệ cược nhỏ này sẽ được chỉnh lên mức tối đa cho phép. - + The entered server list address is not a valid URL. Please enter a valid server list address! Bạn vừa nhập vào địa chỉ máy chủ không hợp lệ. @@ -5209,139 +5301,139 @@ Hãy nhập vào một địa chỉ đúng! - + The opponent names are not unique. Please choose different names for each Opponent! Tên của đấu thủ không được phép trùng lặp. Hãy chọn một tên khác! - + Settings Information Thông tin về thiết lập - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Bạn vừa lựa chọn một thư mục cho phần Nhật Ký. Hãy khởi động lại chương trình để có thể áp dụng thay đổi này! - - + + Maintainer Name Tên người duy trì - - + + Maintainer EMail Địa chỉ email người duy trì - - + + Create Date Ngày tạo - + Windows Behaviour Cửa sổ hiển thị - + scaleable theo tỉ lệ - + fixed vừa chỉnh - + Minimum Size Kích thước nhỏ nhất - + Maximum Size Kích thước lớn nhất - + Fixed Size Kích cỡ vừa vặn - + State Trạng thái - + Please select your game table style Hãy chọn một kiểu trang trí cho bàn chơi bài - + PokerTH game table styles (*.xml) Định dạng dành cho kiểu trang trí bàn chơi bài (*.xml) - + Game Table Style Error Lỗi đối với định dạng bàn chơi bài - + Selected game table style file is already in the list. Please select another one to add! Kiểu đồ họa của bàn chơi bài vừa chọn đã có trong danh sách. Hãy lựa chọn một kiểu mới để thêm vào! - + Game Table Style File Error Lỗi với tập tin kiểu đồ họa bàn chơi bài - + Could not load game table style file correctly. Style will not be placed into list! Không thể tải được tập tin kiểu đồ họa bàn chơi bài. Kiểu này sẽ không được thêm vào danh sách! - + Please select your card deck style Hãy lựa chọn kiểu đồ họa dành cho lá bài - + PokerTH card deck styles (*.xml) Định dạng của kiểu đồ họa dành cho lá bài (*.xml) - + Card Deck Style Error Lỗi với kiểu đồ họa dành cho lá bài - + Selected card deck style file is already in the list. Please select another one to add! Tập tin của kiểu đồ họa dành cho lá bài đã có trong danh sách. Hãy lựa chọn một tập tin khác để thêm vào! - + Card Deck Style File Error Lỗi xảy ra với kiểu tập tin đồ họa lá bài - + Could not load card deck style file correctly. Style will not be placed into list! Không thể tải được tập tin với kiểu đồ họa lá bài được chọn. @@ -5380,12 +5472,12 @@ Kiểu này sẽ không được thêm vào danh sách! Định dạng nhật ký dạng SQL (*pdb) - + PokerTH - Settings Thiết lập chương trình - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Chú ý: thao tác này sẽ xóa toàn bộ các thiết lập cá nhân và đóng lại chương trình! @@ -5451,12 +5543,12 @@ Bạn có thật sự muốn áp dụng các thiết lập của chương trình startNetworkGameDialogImpl - + Server Error Lỗi máy chủ - + You should not kick yourself from this game! Bạn không nên tự đuổi mình ra khỏi màn chơi! @@ -5615,106 +5707,106 @@ Bạn có thật sự muốn áp dụng các thiết lập của chương trình startWindowImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Lỗi kết nối mạng - + Server address was not set. Địa chỉ máy chủ chưa được thiết lập. - + An invalid port was set (ports 0-1023 are not allowed). Địa chỉ cổng bị thiết lập sai (con số cổng được cho phép từ 0 đến 1023). - + Could not create a socket for TCP communication. Không thể thiết lập socket cho giao thức TCP. - + Could not set the IP address. Không thể thiết lập địa chỉ IP. - + Could not set the port for this type of address. Không thể thiết lập cổng kết nối này với loại địa chỉ đã lập. - + The server name could not be resolved. Tên máy chủ không thể phân giải. - + Bind failed - please choose a different port. Bind thất bại - vui lòng chọn một cổng kết nối khác. - + Internal network error: "listen" failed. Lỗi hệ thống mạng : "listen" thất bại. - + Server execution was terminated. Thi hành lệnh từ máy chủ bị hủy bỏ. - + Could not connect to the server. Không thể kết nối đến hệ thống máy chủ. - + Connection timed out. Please check the server address. @@ -5725,350 +5817,350 @@ Hãy chọn một địa chỉ máy chủ khác. Nếu máy chủ được thiết lập bao bọc bởi NAT-Router, hãy chắc rằng việc chuyển tiếp cổng kết nối được thiết lập từ phía hệ thống máy chủ. - + Internal network error: "select" failed. Lỗi hệ thống kết nối mạng: "select" thất bại. - + Internal network error: "send" failed. Lỗi hệ thống kết nối mạng: "send" thất bại. - + Internal network error: Duplicate TCP connection. Lỗi kết nối hệ thống mạng: Trùng giao thức TCP. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Một packet/gói tin trong mạng lưới được nhận sai cách thức. Hãy chắc rằng tất cả các người chơi đều cùng sử dụng chung phiên bản trò chơi. - + Internal state error. Please make sure that all players use the same version of PokerTH. Lỗi hệ thống trạng thái. Hãy chắc rằng tất cả các người chơi đều cùng sử dụng chung một phiên bản của chương trình. - + Invalid server list URL. Please correct the address in the settings. Danh sách các đường dẫn URL bị lỗi. Hãy sửa lại các thiết lập về phần địa chỉ. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. Hệ thống mạng máy chủ online chứa danh sách bị lỗi. Nếu bạn đang sử dụng một hệ thống máy chủ do bạn thiết lập, hãy chắc rằng thiết lập này là chuẩn xác. - + Could not unzip the PokerTH internet server list. Không thể bung nén danh sách hệ thống máy chủ online. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Không thể tải danh sách hệ thống máy chủ online. Hãy chắc rằng bạn đã kết nối máy tính của mình vào mạng Internet. - + Could not open the target file when downloading the server list. Không thể mở file đã chọn khi đang tải về danh sách máy chủ. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Hệ thống máy chủ online không hỗ trợ phiên hiện tại. <br>Xin vui lòng truy cập đến <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> và tải về phiên bản mới nhất. - + Sorry, this server is already full. Xin lỗi, hệ thống máy chủ hiện tại đang quá tải. - + Invalid login. Please check your username and password. Đăng nhập thất bại. Vui lòng kiểm tra tên đăng nhập và mật khẩu lần nữa. - + Your account is blocked indefinitely. Tài khoản của bạn đã bị đóng. - + You cannot login at this time. Please try again in a few seconds. Bạn không thể đăng nhập lúc này. Xin vui lòng thử lại trong vài giây nữa. - + You cannot join this game, because another player in that game has your network address. Bạn không thể tham gia màn chơi này, vì một người chơi khác trong màn chơi này đang có cùng chung địa chỉ mạng với bạn. - + Your connection to the server is very slow, the game had to start without you. Kết nối hiện tại của bạn tới máy chủ rất chậm, màn chơi này sẽ tự động bắt đầu mà không có bạn. - + This game is of type invite-only. You cannot join this game without being invited. Màn chơi này thuộc loại chỉ dành cho người chơi được mời trước. Bạn không thể tham gia vào màn chơi này vì chưa nhận được lời mời nào từ chủ bàn. - + Invalid password when joining the game. Please reenter the password and try again. Sai mật khẩu khi gia nhập vào màn chơi. Hãy điền lại mật khẩu và thử lại một lần nữa. - + The avatar report was accepted by the server. Thank you. Thông báo vi phạm về hình đại diện đã được ghi nhận bởi hệ thống máy chủ. Cảm ơn bạn. - + This avatar was already reported by another player. Hình đại diện này đã bị báo cáo chính sách về hình đại diện bởi một người chơi khác. - + An error occurred while reporting the avatar. Một lỗi đã xảy ra khi tiến hành thông báo vi phạm về hình đại diện. - + The game name report was accepted by the server. Thank you. Thông báo vi phạm về vi phạm hình đại diện đã được ghi nhận bởi hệ thống máy chủ. Cảm ơn bạn. - + This game name was already reported by another player. Tên của màn chơi này hiện đã bị một người dùng khác thông báo rằng bạn đã vi phạm luật. - + An error occurred while reporting the game name. Một lỗi đã xảy ra khi tiến hành gửi thông báo vi phạm tên màn chơi. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. - + The password is too long. Please choose another one. Mật khẩu quá dài. Xin vui lòng chọn một mật khẩu khác ngắn hơn. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game Bắt đầu Màn Chơi Mạng Offline - + The connection to the server was lost. Kết nối đến hệ thống máy chủ bị gián đoạn. - + The game name is either too short or too long. Please choose another one. Tên của màn chơi này quá ngắn hoặc quá dài. Xin vui lòng chọn một tên khác. - + The game could not be found. Màn chơi này hiện không có trên hệ thống. - + The chat text is invalid. Các chuỗi ký tự của phần tán gẫu bị sai định dạng. - + The server referred to an unknown player. Aborting. Hệ thống máy chủ đang tạm chuyển đến một người chơi không có sẵn. Đang thực hiện bỏ qua thao tác này. - + Internal error: The current player could not be found. Lỗi hệ thống: Người chơi hiện tại không được tìm thấy. - + Internal error: The current player is not active. Lỗi hệ thống: Người chơi hiện tại chưa được kích hoạt. - + You were kicked from the server. Bạn đã bị đuổi khỏi hệ thống máy chủ. - + You were temporarily banned from the server. Bạn tạm thời bị cấm đăng nhập vào hệ thống máy chủ. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Kết nối đến hệ thống máy chủ của bạn đã hết hạn về thời gian kết nối. Bạn vui lòng kết nối lại lần nữa! - + The client player count is invalid. Số lượng người chơi trong hệ thống mạng offline bị lỗi. - + Too many manual blinds were set. Please reconfigure the manual blinds. Quá nhiều mức tăng cược được thiết lập. Xin chọn một thiết lập tùy chỉnh khác. - + An invalid avatar file was configured. Please choose a different avatar. Một hình ảnh đại diện được thiết lập bị lỗi. Hãy chọn một hình ảnh đại diện khác. - + The selected avatar file is too large. Please choose a different avatar. Hình ảnh đại diện được chọn có kích thước quá lớn. Vui lòng chọn một hình ảnh đại diện khác. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Lỗi hệ thống xảy ra với hình đại diện được chọn. Vui lòng thông báo lỗi này với người quản trị hệ thống ở phần tán gẫu công cộng. - + Could not start game: Synchronization failed. Không thể bắt đầu màn chơi: Đồng bộ hóa hệ thống thất bại. - + The server is down for maintenance. Please try again later. Hệ thống máy chủ hiện tại đang được bảo trì. Xin vui lòng đăng nhập lại sau. - + An internal error occured. Lỗi hệ thống đã xảy ra. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Thông báo về hệ thống mạng offline - + You were kicked from the game. Bạn đã bị đuổi khỏi màn chơi. - + Sorry, this game is already full. Xin lỗi, màn chơi này hiện đã đủ người chơi. - + Unable to join - the server has already started the game. Không thể tham gia - hệ thống máy chủ đã bắt đầu màn chơi này. - + Your admin state timed out due to inactivity. Feel free to create a new game! Trạng thái quản trị của bạn đã quá thời hạn cho phép. Hãy tạo một màn chơi mới! - + You cannot join this type of game as guest. Bạn không thể tham gia vào màn chơi này khi bạn đang đăng nhập dưới dạng khách/ẩn danh. - + The settings are invalid for this type of game. Thiết lập cho màn chơi này đã bị lỗi. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Một phiên bản mới của trò chơi đã được phát hành.<br>Vui lòng truy cập vào <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> và tải về phiên bản mới nhất. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Phiên bản thử nghiệm của trò chơi mà bạn đang dùng đã quá cũ.<br>Vui lòng truy cập vào <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> và tải về phiên bản mới nhất của chương trình. - - + + Server Message Thông báo từ hệ thống máy chủ diff --git a/ts/pokerth_zhcn.ts b/ts/pokerth_zhcn.ts index 8939ba23..9ab949b9 100644 --- a/ts/pokerth_zhcn.ts +++ b/ts/pokerth_zhcn.ts @@ -1,7 +1,6 @@ - -UTF-8 + CardDeckStyleReader @@ -213,22 +212,22 @@ Please contact the game table style builder via "%4". 赌桌款式出错 - 已过期 - + Everything OK! 没问题! - + Some pictures are missing, please contact style maintainer for this issue. 一些图片缺失了. 请联系赌桌款式维护人员以解决此问题. - + Some style fields are missing, please contact style maintainer for this issue. 一些款式字段缺失了. 请联系赌桌款式维护人员以解决此问题. - + This style is outdated, please contact style maintainer for this issue. 这个赌桌款式过期了. 请联系赌桌款式维护人员以解决此问题. @@ -306,52 +305,52 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file 保存 PokerTH 日志文件 - + PokerTH SQL log (*.pdb) PokerTH SQL 日志文件 (*.pdb) @@ -398,13 +397,13 @@ Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Failure reason: @@ -433,18 +432,18 @@ Please verify that you are uploading a valid PokerTH log file. 举报不讲究的头像 - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? 你将不会再收到来自这名玩家的消息及游戏邀请.<br>你确定要将玩家 <b>%1</b> 置于无视名单之中吗? - - + + PokerTH - Question PokerTH - 问题 - + Are you sure you want to report the avatar of "%1" as inappropriate? 你确定要举报 "%1" 的头像为不讲究的头像吗? @@ -473,8 +472,8 @@ Please verify that you are uploading a valid PokerTH log file. aboutPokerth - - + + About 关于 @@ -509,14 +508,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project 项目 @@ -567,7 +566,6 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - 初始 GUI 图形设计</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -576,7 +574,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -585,16 +583,6 @@ p, li { white-space: pre-wrap; } <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">翻译人员 - 电子邮箱地址</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> @@ -648,31 +636,59 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - 管理论坛, 错误追踪系统及功能提案</span></p></td></tr></table></body></html> - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + Translation 翻译 - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + Thanks to 鸣谢 - - + + License 许可 - + + + Third party libs + + + + Close 关闭 - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -681,7 +697,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -933,12 +949,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order 手动盲注顺序 - + You cannot set more than 30 manual blinds. 你不能设置超过 30 个手动盲注. @@ -1081,7 +1097,7 @@ Please choose another one! - + Default game name: 默认游戏名: @@ -1116,75 +1132,81 @@ Please choose another one! 排名赛 - - + + Maximum number of players: 玩家数上限: - - + + Start Cash: 入场金额: - - + + $ - + Blinds 盲注 - + Use saved blinds settings 使用已保存的盲注设置 - + Change blinds settings ... 更改盲注设置... - + Timeout for player action: 玩家操作超时: - - + + s - - + + Password: 密码: - + Delay between hands: 两成手之间的时间间隔: - - + + + Allow spectators to watch the game + + + + + Create Game 创建游戏 - + Cancel 取消 @@ -1297,56 +1319,68 @@ Please choose another one! 因特网游戏大厅 - - + + Game Info 游戏信息 - - + + Game type: 游戏类型: - - + + Connected Players 已连接的玩家 - - + + search for player ... 查找玩家... - - + + 5 - Show open & non-full & ranking games 5 - 显示 (开放 & 人数未满 & 排名) 的游戏 - - + + + Players + 玩家 + + + + + Spectators + + + + + Start Cash: 入场金额: - - + + First small blind: 首轮小盲注: - - + + Blinds raise interval: 加盲注时间间隔: - - + + Blinds raise mode: 加盲注模式: @@ -1356,7 +1390,7 @@ Please choose another one! - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1369,68 +1403,66 @@ p, li { white-space: pre-wrap; } 玩家操作超时 (秒): - - + + Fill up with computer opponents 用电脑对手填补空位 - - + + &Start Game 开始游戏 (&S) - - + + &Kick Player 踢出玩家 (&K) - - + + Sort alphabetically 按字母排序 - - + + Sort by country 按国籍排序 - - + + Display idle players 显示发呆的玩家 - - + + Manual blinds list: 手动盲注列表: - - + + &Leave Game 离开游戏 (&L) - - Join &any game - 加入任意一个游戏 (&A) + 加入任意一个游戏 (&A) - - + + &Create Game 创建游戏 (&C) - - + + &Join Game 加入游戏 (&J) @@ -1453,44 +1485,44 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">点击此处查看在线排名</span></a></p></td></tr></table></body></html> - - + + 0 - No game list filter 0 - 不使用游戏列表过滤器 - - + + 1 - Show open games 1 - 显示 (开放) 的游戏 - - + + 2 - Show open & non-full games 2 - 显示 (开放 & 人数未满) 的游戏 - - + + 3 - Show open & non-full & non-private games 3 - 显示 (开放 & 人数未满 & 非私人) 的游戏 - - + + 4 - Show open & non-full & private games 4 - 显示 (开放 & 人数未满 & 私人) 的游戏 - - + + Timing: - - + + Lobby-Chat 大厅聊天 @@ -1503,211 +1535,226 @@ p, li { white-space: pre-wrap; } 正在开始游戏, 请稍候... - + Joining a private Game 加入一个私人游戏 - + You are about to join a private game. Please enter the password! 你正在加入一个私人游戏. 请输入密码! - + open 开放 - - - - + + + + Game Info 游戏信息 - - - + + Spectate + + + + + + Game 游戏 - - - + + + Players 玩家 - - - + + + State 状态 - - - + + + P - - - + + + Available Players 在线的玩家 - + Invite player 邀请玩家 - + Ignore player 无视玩家 - + Player infos ... 玩家信息... - + Report inappropriate game name - - - + + + Standard 标准比赛 - - - + + + Registered players only 仅限已注册的玩家的比赛 - - - + + + Invited players only 仅限受邀玩家的比赛 - - - + + + Ranking game 排名赛 - Connected players - max. %1 - 已连接的玩家 - 人数上限 %1 + 已连接的玩家 - 人数上限 %1 - - - + + + T - - - + + + sec (action) - - - + + + sec (hand delay) - - Connected players - Max. %1 - 已连接的玩家 - 人数上限 %1 + 已连接的玩家 - 人数上限 %1 - + running 进行中 - - + + running games: %1 进行中的游戏:%1 - - + + open games: %1 开放着的游戏: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 邀请 %1 - + Ignore %1 无视 %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 邀请 %1 加入 %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 拒绝了加入 %2 的邀请.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 正忙, 无法加入 %2.</span> - - + + The game will start in<br><b>%1</b> seconds. 游戏将于 <br><b>%1</b> 秒钟后开局. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. 你已加入了一个 "仅限受邀者" 类型的游戏. 你可以按自己的意愿, 右击在线玩家列表中的玩家名以邀请其他玩家. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? <b>%2</b> 向你发出了加入游戏 <b>%1</b> 的邀请. 你想加入这个游戏吗? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? 你将不会再收到来自这名玩家的消息及游戏邀请.<br>你确定要将玩家 <b>%1</b> 置于无视名单之中吗? - - + + connected players: %1 已连接的玩家: %1 @@ -1722,1343 +1769,1341 @@ Feel free to invite other players by right-clicking on their nick in the availab - - - + + + Time - - + + Show player stats 显示玩家状态 - - + + Admin action ... - + Total kickban - + Close game - - Connected players - 已连接的玩家 + 已连接的玩家 - + hands 成手 - + minutes 分钟 - + double blinds 双倍盲注 - + manual blinds order 手动盲注顺序 - + Server Error 服务器出错 - + You should not kick yourself from this game! 你不能把自己踢出游戏! - + search for player ... 查找玩家... - + Chat is only available to registered players. 聊天功能仅供已注册玩家使用. - + Invite player ... 邀请玩家... - + Ignore player ... 无视玩家... - + %1 is playing in "%2". %1 正在游戏 "%2" 中玩着. - + %1 is not playing at the moment. %1 目前没在玩. - - + + PokerTH - Info Message PokerTH - 信息提示 - - - - + + + + PokerTH - Question PokerTH - 问题 - + Afghanistan 阿富汗 - + ALand Islands 奥兰群岛 - + Albania 阿尔巴尼亚 - + Algeria 阿尔及利亚 - + American Samoa 美属萨摩亚 - + Andorra 安道尔 - + Angola 安哥拉 - + Anguilla 安圭拉 - + Antarctica 南极洲 - + Antigua And Barbuda 安提瓜和巴布达 - + Argentina 阿根廷 - + Armenia 亚美尼亚 - + Aruba 阿鲁巴 - + Australia 澳大利亚 - + Austria 奥地利 - + Azerbaijan 阿塞拜疆 - + Bahamas 巴哈马 - + Bahrain 巴林 - + Bangladesh 孟加拉国 - + Barbados 巴巴多斯 - + Belarus 白俄罗斯 - + Belgium 比利时 - + Belize 伯利兹 - + Benin 贝宁 - + Bermuda 百慕大 - + Bhutan 不丹 - + Bolivia 玻利维亚 - + Bosnia And Herzegovina 波斯尼亚 - 黑塞哥维那 - + Botswana 博茨瓦纳 - + Bouvet Island 布维岛 - + Brazil 巴西 - + British Indian Ocean Territory 英属印度洋领地 - + Brunei Darussalam 文莱达鲁萨兰国 - + Bulgaria 保加利亚 - + Burkina Faso 布基纳法索 - + Burundi 布隆迪 - + Cambodia 柬埔寨 - + Cameroon 喀麦隆 - + Canada 加拿大 - + Cape Verde 佛得角 - + Cayman Islands 开曼群岛 - + Central African Republic 中非共和国 - + Chad 乍得 - + Chile 智利 - + China 中国 - + Christmas Island 圣诞岛 - + Cocos (Keeling) Islands 科科斯 (基林) 群岛 - + Colombia 哥伦比亚 - + Comoros 科摩罗 - + Congo 刚果 - + Congo, The Democratic Republic Of The 刚果民主共和国 - + Cook Islands 库克群岛 - + Costa Rica 哥斯达黎加 - + Cote D'Ivoire 科特迪瓦 - + Croatia 克罗地亚 - + Cuba 古巴 - + Cyprus 塞浦路斯 - + Czech Republic 捷克共和国 - + Denmark 丹麦 - + Djibouti 吉布提 - + Dominica 多米尼加 - + Dominican Republic 多米尼加共和国 - + Ecuador 厄瓜多尔 - + Egypt 埃及 - + El Salvador 萨尔瓦多 - + Equatorial Guinea 赤道几内亚 - + Eritrea 厄立特里亚 - + Estonia 爱沙尼亚 - + Ethiopia 埃塞俄比亚 - + Falkland Islands (Malvinas) 福克兰群岛 (马尔维纳斯) - + Faroe Islands 法罗群岛 - + Fiji 斐济 - + Finland 芬兰 - + France 法国 - + French Guiana 法属圭亚那 - + French Polynesia 法属波利尼西亚 - + French Southern Territories 法属南半球和南极领地 - + Gabon 加蓬 - + Gambia 冈比亚 - + Georgia 格鲁吉亚 - + Germany 德国 - + Ghana 加纳 - + Gibraltar 直布罗陀 - + Greece 希腊 - + Greenland 格陵兰 - + Grenada 格林纳达 - + Guadeloupe 瓜德罗普 - + Guam 关岛 - + Guatemala 危地马拉 - + Guernsey 根西岛 - + Guinea 几内亚 - + Guinea-Bissau 几内亚比绍 - + Guyana 圭亚那 - + Haiti 海地 - + Heard Island And Mcdonald Islands 赫德岛和麦克唐纳岛 - + Holy See (Vatican City State) 梵蒂冈 - + Honduras 洪都拉斯 - + Hong Kong 香港 - + Hungary 匈牙利 - + Iceland 冰岛 - + India 印度 - + Indonesia 印度尼西亚 - + Iran, Islamic Republic Of 伊朗伊斯兰共和国 - + Iraq 伊拉克 - + Ireland 爱尔兰 - + Isle Of Man 马恩岛 - + Israel 以色列 - + Italy 意大利 - + Jamaica 牙买加 - + Japan 日本 - + Jersey 泽西岛 - + Jordan 约旦 - + Kazakhstan 哈萨克斯坦 - + Kenya 肯尼亚 - + Kiribati 基里巴斯 - + Korea, Democratic People'S Republic Of 朝鲜民主主义人民共和国 - + Korea, Republic Of 大韩民国 - + Kuwait 科威特 - + Kyrgyzstan 吉尔吉斯斯坦 - + Lao People'S Democratic Republic 老挝人民民主共和国 - + Latvia 拉脱维亚 - + Lebanon 黎巴嫩 - + Lesotho 莱索托 - + Liberia 利比里亚 - + Libyan Arab Jamahiriya 阿拉伯利比亚民众国 - + Liechtenstein 列支敦士登 - + Lithuania 立陶宛 - + Luxembourg 卢森堡 - + Macao 澳门 - + Macedonia, The Former Yugoslav Republic Of 前南斯拉夫的马其顿共和国 - + Madagascar 马达加斯加 - + Malawi 马拉维 - + Malaysia 马来西亚 - + Maldives 马尔代夫 - + Mali 马里 - + Malta 马耳他 - + Marshall Islands 马绍尔群岛 - + Martinique 马提尼克 - + Mauritania 毛里塔尼亚 - + Mauritius 毛里求斯 - + Mayotte 马约特 - + Mexico 墨西哥 - + Micronesia, Federated States Of 密克罗尼西亚联邦 - + Moldova, Republic Of 摩尔多瓦共和国 - + Monaco 摩纳哥 - + Mongolia 蒙古 - + Montserrat 蒙特塞拉特 - + Morocco 摩洛哥 - + Mozambique 莫桑比克 - + Myanmar 缅甸 - + Namibia 纳米比亚 - + Nauru 瑙鲁 - + Nepal 尼泊尔 - + Netherlands 荷兰 - + Netherlands Antilles 荷属安的列斯 - + New Caledonia 新喀里多尼亚 - + New Zealand 新西兰 - + Nicaragua 尼加拉瓜 - + Niger 尼日尔 - + Nigeria 尼日利亚 - + Niue 纽埃 - + Norfolk Island 诺福克岛 - + Northern Mariana Islands 北马里亚纳 - + Norway 挪威 - + Oman 阿曼 - + Pakistan 巴基斯坦 - + Palau 帕劳 - + Palestinian Territory, Occupied 巴勒斯坦国 - + Panama 巴拿马 - + Papua New Guinea 巴布亚新几内亚 - + Paraguay 巴拉圭 - + Peru 秘鲁 - + Philippines 菲律宾 - + Pitcairn 皮特凯恩群岛 - + Poland 波兰 - + Portugal 葡萄牙 - + Puerto Rico 波多黎各 - + Qatar 卡塔尔 - + Reunion 留尼旺 - + Romania 罗马尼亚 - + Russian Federation 俄罗斯联邦 - + Rwanda 卢旺达 - + Saint Helena 圣赫勒拿 - + Saint Kitts And Nevis 圣基茨和尼维斯 - + Saint Lucia 圣卢西亚 - + Saint Pierre And Miquelon 圣皮埃尔和密克隆 - + Saint Vincent And The Grenadines 圣文森特和格林纳丁斯 - + Samoa 萨摩亚 - + San Marino 圣马力诺 - + Sao Tome And Principe 圣多美和普林西比 - + Saudi Arabia 沙特阿拉伯 - + Senegal 塞内加尔 - + Serbia And Montenegro 塞尔维亚和黑山 - + Seychelles 塞舌尔 - + Sierra Leone 塞拉利昂 - + Singapore 新加坡 - + Slovakia 斯洛伐克 - + Slovenia 斯洛文尼亚 - + Solomon Islands 所罗门群岛 - + Somalia 索马里 - + South Africa 南非 - + South Georgia And The South Sandwich Islands 南乔治亚岛和南桑德韦奇岛 - + Spain 西班牙 - + Sri Lanka 斯里兰卡 - + Sudan 苏丹 - + Suriname 苏里南 - + Svalbard And Jan Mayen 斯瓦尔巴岛和扬马延岛 - + Swaziland 斯威士兰 - + Sweden 瑞典 - + Switzerland 瑞士 - + Syrian Arab Republic 阿拉伯叙利亚共和国 - + Taiwan, Province Of China 台湾 - + Tajikistan 塔吉克斯坦 - + Tanzania, United Republic Of 坦桑尼亚联合共和国 - + Thailand 泰国 - + Timor-Leste 东帝汶 - + Togo 多哥 - + Tokelau 托克劳 - + Tonga 汤加 - + Trinidad And Tobago 特立尼达和多巴哥 - + Tunisia 突尼斯 - + Turkey 土耳其 - + Turkmenistan 土库曼斯坦 - + Turks And Caicos Islands 特克斯和凯科斯群岛 - + Tuvalu 图瓦卢 - + Uganda 乌干达 - + Ukraine 乌克兰 - + United Arab Emirates 阿拉伯联合酋长国 - + United Kingdom 大不列颠及北爱尔兰联合王国 - + United States 美利坚合众国 - + United States Minor Outlying Islands 美国本土外小岛屿 - + Uruguay 乌拉圭 - + Uzbekistan 乌兹别克斯坦 - + Vanuatu 瓦努阿图 - + Venezuela 委内瑞拉 - + Viet Nam 越南 - + Virgin Islands, British 英属维尔京群岛 - + Virgin Islands, U.S. 美属维尔京群岛 - + Wallis And Futuna 瓦利斯和富图纳 - + Western Sahara 西撒哈拉 - + Yemen 也门 - + Zambia 赞比亚 - + Zimbabwe 津巴布韦 - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3071,12 +3116,12 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Hands 成手 - + Chat 聊天 @@ -3085,263 +3130,263 @@ Feel free to invite other players by right-clicking on their nick in the availab 用户提示 - + Save 保存 - + Log 日志 - + Away 离开 - + Manual Action (default) 手动操作 (默认) - + Auto-Check / Auto-Fold 自动过牌 / 自动扣牌 - + Auto-Check / Auto-Call-Any 自动过牌 / 自动跟进 - + Speed: 速度: - - + + Start Local Game ... 开始本地游戏... - - + + Ctrl+N - - + + Quit 退出 - - + + Ctrl+Q - - + + About PokerTH ... 关于 PokerTH... - - + + Settings ... 设置... - - + + Create Network Game ... 创建网络游戏... - - + + Ctrl+O - - + + Join Network Game ... 加入网络游戏... - - + + Ctrl+J - - - + + + Fullscreen 全屏 - - + + Ctrl+F - - + + Show/Hide Chat Window 显示 / 隐藏 "聊天" 窗口 - - + + Ctrl+T - - - - - - + + + + + + Show/Hide Hands Window 显示 / 隐藏 "成手" 窗口 - - + + Ctrl+H - - + + Show/Hide Log Window 显示 / 隐藏 "日志" 窗口 - - + + Ctrl+L - - + + Internet Game ... 因特网游戏... - - + + Ctrl+I - - + + Show/Hide Away Window 显示 / 隐藏 "离开" 窗口 - - + + Ctrl+A - + Kick 踢出 - + Vote Timeout: 投票超时: - + Yes - + No - + Player info - + Chance 几率 - + Configure PokerTH ... 配置 PokerTH... - - + + Close 关闭 - - + + Ctrl+X - + Vote started by: 投票发起人: - - + + Show/Hide Chance Window 显示 / 隐藏 "几率" 窗口 - - + + Ctrl+C - + &View 查看 (&V) - + &Settings 设置 (&S) - + Shortcut: <Shift> 快捷键: <Shift> - + Settings 设置 - + Configure PokerTH @@ -3349,97 +3394,102 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop 停止 - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - 开源德州扑克引擎 - - - - - - - - + + + + + + + + Start 开始 - - - - - + + + + + Lobby 大厅 - - + + Chat 聊天 - + Closing PokerTH during network game 在网络游戏过程中关闭 PokerTH - + You are the hosting server. Do you want to close PokerTH anyway? 你现在是主机. 你还是希望关闭 PokerTH 么? - + Really want to exit? 真的想退出吗? - + PokerTH - Close Table? PokerTH - 关闭赌桌? - + PokerTH - Internet Game Message PokerTH - 因特网游戏消息 - + Attention! Do you really want to leave the current game and go back to the lobby? 注意! 你真的想离开当前的游戏 并返回大厅吗? - - + + Chat is only available to registered players. 聊天功能仅供已注册玩家使用. + + + Spectators + + PokerTH - Warning PokerTH - 警告 @@ -3455,51 +3505,51 @@ If you are temporarily away, you can use the "away" tools in the tool 如果你只是暂时离开, 可以使用右下角工具框提供的 "离开" 工具. - - + + Chance 几率 - - + + Kick 踢出 - - + + Do you want to kick <b>%1</b><br>from this game? 你希望把 <b>%1</b> 踢出这场游戏吗? - - - - + + + + <b>%1</b> secs left <b>%1</b> 秒剩余 - + vote 投票 - + votes 投票 - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. "%3" = ( vote == 1 ) ? vote : votes; 已有 %2 票反对玩家 %1, 将其踢出游戏还需要 %4 票. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. "%2" = ( vote == 1 ) ? vote : votes; 已有 %1 票反对你, 再有 %3 人投出反对票的话你就要被踢出游戏了. @@ -3717,57 +3767,67 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error 读取服务器档案文件出错 - - - - Could not load server-profiles-file: - 无法读取服务器档案文件: + 无法读取服务器档案文件: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error 保存服务器档案出错 - + A profile with the name: %1 already exists. Would you like to overwrite ? 名为 %1 的档案已存在. 是否将其覆盖? - + Read Server-Profile List Error 读取服务器档案列表出错 - + Could not read server-profiles list 无法读取服务器档案列表 - - + + Save Server-Profile-File Error 保存服务器档案文件出错 - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - 无法保存服务器档案文件: + 无法保存服务器档案文件: @@ -3831,12 +3891,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order 手动盲注顺序 - + You cannot set more than 30 manual blinds. 你不能设置超过 30 个手动盲注. @@ -3901,7 +3961,7 @@ Would you like to overwrite ? - + Use saved blinds settings 使用已保存的盲注设置 @@ -3912,13 +3972,13 @@ Would you like to overwrite ? - + Change blinds settings ... 更改盲注设置... - + Game Speed: 游戏速度: @@ -3959,38 +4019,38 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error 头像文件出错 - + Please select an avatar from the list! 请从列表中选择一个头像! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! 选择的图片过大. (上限 30KB) 请另选一个小点的! - + The entered avatar picture doesn't exist. Please enter an valid picture! 输入的头像图片不存在. 请重新输入! - + Select external avatar picture 选择外部头像图片 - + Images (*.png *.jpg *.gif) 图片文件 (*.png *.jpg *.gif) @@ -4011,341 +4071,365 @@ Please enter an valid picture! 界面 - - + + Language: 语言: - - + + Show fade-out animation for non-winning cards 对未成手的牌显示渐隐动画 - - + + Show flip-card animation 显示翻牌动画 - - + + Show buttons for small blind and big blind 为小盲注和大盲注显示按钮 - - + + Show own cards only on mouse click 只在鼠标点击时显示自己的牌 - + Reverse order of F-Keys (F1 - F4) 功能键 (F1 - F4) 顺序反向 - - + + Network / Internet Game 网络 / 因特网游戏 - - + + Switch keyboard focus to bet-input-field if it's your turn 在轮到你时将键盘焦点移至下注输入框 - + Sound 声音 - + Factory Settings - - + + + Common + + + + + Disable splashscreen on startup 启动时不显示养眼画面 (splashscreen) - - + + Show country flag in the corner of avatar 在头像的一角显示国旗 - - + + Activate the "accidentally call after big raise" blocker - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table 赌桌 - - - - + + + + Description 描述 - - - - + + + + Maintainer 维护人 - - - + + + State 状态 - - + + Card Deck 牌叠 - - + + Card Back 牌背 - - + + Use card back from card style 使用牌叠款式中的牌背 - - + + Use custom card back picture: 使用自选图片作为牌背: - - + + Play sound effects 播放音效 - - + + Sound Volume: 音量: - - + + 10 10 - - + + Sound Categories 声音类别 - - + + Play game actions sounds like "check", "call", "raise" 播放游戏操作提示音, 例如 "过牌", "跟进", "加注" - - + + Play lobby chat notifications 播放大厅聊天提示音 - - + + Play network/internet game notifications like "player joined the game" 播放网络 / 因特网游戏提示音, 例如 "玩家加入游戏" - - + + Server Password: - + + + Allow spectators to watch the game + + + + OK - + Local Game Settings 本地游戏设置 - - + + Number of players: 玩家数: - - - - + + + + Start Cash: 入场金额: - - - - - - - - + + + + + + + + $ - - - - + + + + First small blind: 首轮小盲注: - - - - + + + + Raise blinds: 加盲注: - - - - - - - - + + + + + + + + Every: 每: - - - - + + + + hands 成手 - - - - + + + + minutes 分钟 - - - - + + + + Raise mode: 加注模式: - - - - + + + + Always double blinds 总是将盲注翻倍 - - - - + + + + Manual blinds order: 手动盲注顺序: - - - - + + + + Edit ... 编辑... - - + + Game Speed: 游戏速度: - - + + Pause between hands (press "start" button to go on) 在两成手之间暂停 (按下 "开始" 按钮继续) - - + + Show game settings dialog on every new game 在每次开始新游戏前显示游戏设置对话框 - + Network Game Settings 网络游戏设置 - - + + Maximum number of players: 玩家数上限: - - + + Timeout for player action: 玩家操作超时: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4370,66 +4454,66 @@ Please enter an valid picture! 日志文件 - - - - + + + + s - - + + Network Server Settings 网络服务器设置 - - - - + + + + Server Port: 服务器端口: - - - - + + + + Use SCTP 使用 SCTP - - - - + + + + Use IPv6 使用 IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">这是什么?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">这是什么?</a> - + Internet Game Settings 因特网游戏设置 - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4440,61 +4524,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">提示: 默认</span><span style=" font-weight:600; font-style:italic;">游戏设置</span><span style=" font-style:italic;"> (例如 "玩家数上限", "入场金额" 及 "小盲注") 将使用</span><span style=" font-weight:600; font-style:italic;">网络游戏的预设值.</span></p></body></html> - - + + Server Address: 服务器地址: - - + + Use password for private game: 为私人游戏使用密码: - - + + Computer Engine 电脑对手 - - + + Opponent 6: 对手 6: - - + + Opponent 5: 对手 5: - - + + Opponent 4: 对手 4: - - + + Opponent 3: 对手 3: - - + + Opponent 2: 对手 2: - - + + Opponent 1: 对手 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4505,8 +4589,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">提示: 最佳的头像图片宽高为: </span><span style=" font-weight:600; font-style:italic;">宽度 = 50, 高度 = 50</span></p></body></html> - - + + Enable/Disable Logging 启用 / 禁用日志 @@ -4515,105 +4599,105 @@ p, li { white-space: pre-wrap; } 日志保留天数: - - + + Log File Directory: 日志文件目录: - - + + Write log after every: 日志文件写入时机: - - + + action (high frequent disc access) 每次操作 (高频率磁盘读写) - - + + hand (medium disc access) 每成手 (中等频率磁盘读写) - - + + game (low disc access) 每场游戏 (低频率磁盘读写) - + Log Messages 日志消息 - + Player Nicks/Avatars 玩家昵称 / 头像 - + Show right toolbox 显示右工具框 - + Show left toolbox 显示左工具框 - - + + Play blind raise notification - - + + Automatic Server Configuration URL 自动服务器配置 URL - - + + Serverlist Address: 服务器列表地址: - - + + Manual Server Configuration 手动服务器配置 - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -4642,62 +4726,62 @@ p, li { white-space: pre-wrap; } 昵称 / 头像 - - + + Show cards chance monitor 显示几率监视工具框 - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: 头像服务器: - + Style 款式 - - + + Don't translate poker strings like check, call, raise from game table style 扑克术语 (如 check, call, raise) 不采用赌桌款式中的翻译 - - - - + + + + Add ... 添加... - - - - + + + + Remove 移除 - - - - + + + + Preview - Information: 预览 - 信息 - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4710,8 +4794,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">获取新款 PokerTH 赌桌...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4724,7 +4808,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">获取新款 PokerTH 牌叠...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4743,96 +4827,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">提示: 最佳的牌背图片宽高为: </span><span style=" font-weight:600; font-style:italic;">宽度 = 48, 高度 = 76.</span></p></td></tr></table></body></html> - - + + Delay between hands: 两成手之间的时间间隔: - - + + Server 服务器 - - + + Game 游戏 - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: 默认游戏名: - - + + Default game type: 默认游戏类型: - - + + Standard 标准比赛 - - + + Registered players only 仅限已注册的玩家的比赛 - - + + Invited players only 仅限受邀玩家的比赛 - - + + Ranking game 排名赛 - - + + Show lobby chat 显示大厅聊天 - - + + Automatically leave the table after the game finished - - + + Ignored Players 无视的玩家 - - + + Player 玩家 - - + + Remove Player 移除玩家 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4845,20 +4929,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">人类玩家:<br /><span style=" font-style:italic;">(此昵称也将用于在线游戏登录)</span></p></body></html> - - + + Opponent 7: 对手 7: - - + + Opponent 8: 对手 8: - - + + Opponent 9: 对手 9: @@ -4866,65 +4950,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error 设置出错 - + The entered flipside picture doesn't exist. Please enter an valid picture! 输入的牌背图片不存在. 请重新输入! - - + + The log file directory doesn't exist. Please select an valid directory! 日志文件目录不存在. 请重新选择! - + Language Changed 语言已变更 - + You have changed application language to %1. Please restart PokerTH to load new language! 你已经将程序语言变更为 %1. 请重启 PokerTH 以载入新的语言! - + Select your flipside picture 选择牌背图片 - + Images (*.png *.jpg *.gif) 图片文件 (*.png *.jpg *.gif) - + Open Directory 打开目录 - - + + Blinds Error 盲注出错 - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -4932,7 +5016,7 @@ This first-small-blind-value will be set to maximum allowed value. 首轮小盲注的值将被自动设为所允许的最大值. - + The entered server list address is not a valid URL. Please enter a valid server list address! 输入的服务器列表地址不是一个有效的地址. @@ -5084,138 +5168,138 @@ Please enter a valid server list address! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name 维护人姓名 - - + + Maintainer EMail 维护人电子邮箱 - - + + Create Date 创建日期 - + Windows Behaviour 窗口能动性 - + scaleable 可缩放式 - + fixed 固定式 - + Minimum Size 最小尺寸 - + Maximum Size 最大尺寸 - + Fixed Size 固定尺寸 - + State 状态 - + Please select your game table style 请选择赌桌款式 - + PokerTH game table styles (*.xml) PokerTH 赌桌款式文件 (*.xml) - + Game Table Style Error 赌桌款式出错 - + Selected game table style file is already in the list. Please select another one to add! 选定的赌桌款式文件在列表里已经有了. 请另选一个! - + Game Table Style File Error 赌桌款式文件出错 - + Could not load game table style file correctly. Style will not be placed into list! 无法正确加载赌桌款式文件. 赌桌款式将不会被放入列表中! - + Please select your card deck style 请选择牌叠款式 - + PokerTH card deck styles (*.xml) PokerTH 牌叠款式文件 (*.xml) - + Card Deck Style Error 牌叠款式出错 - + Selected card deck style file is already in the list. Please select another one to add! 选定的牌叠款式文件在列表里已经有了. 请另选一个! - + Card Deck Style File Error 牌叠款式文件出错 - + Could not load card deck style file correctly. Style will not be placed into list! 无法正确加载牌叠款式文件. @@ -5238,12 +5322,12 @@ Style will not be placed into list! PokerTH SQL 日志文件 (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5308,12 +5392,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error 服务器出错 - + You should not kick yourself from this game! 你不能把自己踢出游戏! @@ -5472,106 +5556,106 @@ Do you really want to reset factory settings? startWindowImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error 网络出错 - + Server address was not set. 服务器地址未设置. - + An invalid port was set (ports 0-1023 are not allowed). 设置的端口无效 (不允许设置 0-1023 间的端口). - + Could not create a socket for TCP communication. 无法为 TCP 通信创建插口. - + Could not set the IP address. 无法设置 IP 地址. - + Could not set the port for this type of address. 无法为这种地址设置端口. - + The server name could not be resolved. 无法解析服务器域名. - + Bind failed - please choose a different port. 端口绑定失败 - 请选择其它的端口. - + Internal network error: "listen" failed. 网络内部错误: "监听" 失败. - + Server execution was terminated. 服务器执行被终止. - + Could not connect to the server. 无法连接到服务器. - + Connection timed out. Please check the server address. @@ -5581,12 +5665,12 @@ If the server is behind a NAT-Router, make sure port forwarding has been set up 如果服务器在 NAT 路由后, 请确定服务器端已配置好端口转发. - + Internal network error: "select" failed. 网络内部错误: "选择" 失败. - + Internal network error: "send" failed. 网络内部错误: "发送" 失败. @@ -5595,26 +5679,26 @@ If the server is behind a NAT-Router, make sure port forwarding has been set up 连接已被服务器关闭. - + Internal network error: Duplicate TCP connection. 网络内部错误: 重复的 TCP 连接. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. 收到无效的网络包. 请确认所有玩家使用相同版本的 PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. 网络状态出错. 请确认所有玩家使用相同版本的 PokerTH. - + Invalid server list URL. Please correct the address in the settings. 无效的服务器列表 URL. @@ -5633,314 +5717,314 @@ Please make sure that the server list URL is correct. 请确定服务器列表 URL 的正确性. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. PokerTH 因特网服务器列表存在无效的数据. 如果你正在使用一个自定的服务器列表, 请确定它的格式是正确的. - + Could not unzip the PokerTH internet server list. 无法解压缩 PokerTH 因特网服务器列表. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. 无法下载 PokerTH 因特网服务器列表. 请确认你是否已与因特网链接. - + Could not open the target file when downloading the server list. 在下载服务器列表过程中无法打开目标文件. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. PokerTH 服务器不支持这个版本的游戏. <br>请访问 <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> 并下载最新的版本. - + Sorry, this server is already full. 对不起, 服务器已经满人了. - + Invalid login. Please check your username and password. 登录出错. 请检查玩家名和密码. - + Your account is blocked indefinitely. 你的玩家名被无限期封禁. - + You cannot login at this time. Please try again in a few seconds. 目前你无法登录. 请稍后再试试看. - + You cannot join this game, because another player in that game has your network address. 你不能加入这个游戏, 因为另一个已加入游戏的玩家与你有相同的网络地址. - + Your connection to the server is very slow, the game had to start without you. 你与服务器之间的连接速度过慢, 这场游戏已开但无法带上你. - + This game is of type invite-only. You cannot join this game without being invited. 这是仅限受邀玩家的游戏. 你得先收到邀请而后才能加入. - + Invalid password when joining the game. Please reenter the password and try again. 加入游戏时使用了错误的密码. 请重新输入密码并重试. - + The avatar report was accepted by the server. Thank you. 服务器已接受了头像举报. 谢谢你. - + This avatar was already reported by another player. 这个头像已被其他玩家举报. - + An error occurred while reporting the avatar. 举报头像时有错误发生. - + The password is too long. Please choose another one. 密码太长. 请另换一个. - + Rejoin possible! - + There is an existing session with a previous game. - + Do you want to rejoin this game? - - + + Start Network Game 开始网络游戏 - + The connection to the server was lost. - + The game name is either too short or too long. Please choose another one. 游戏名过短或者过长. 请重新选择. - + The game could not be found. 找不到游戏. - + The chat text is invalid. 无效的聊天文本. - + The server referred to an unknown player. Aborting. 服务器引用了一个未知的玩家. 正在终止. - + Internal error: The current player could not be found. 内部错误: 找不到当前玩家. - + Internal error: The current player is not active. 内部错误: 当前玩家无响应. - + You were kicked from the server. 你被踢出服务器. - + You were temporarily banned from the server. 你暂时被服务器封禁. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! 你与服务器的连接因为闲置而超时. 请重新连接! - + The client player count is invalid. 无效的客户端玩家计数. - + Too many manual blinds were set. Please reconfigure the manual blinds. 设置了过多的手动盲注, 请重新设置手动盲注. - + An invalid avatar file was configured. Please choose a different avatar. 配置的头像文件非法. 请另选一个. - + The selected avatar file is too large. Please choose a different avatar. 你选择的头像文件过大. 请另选一个. - + An internal avatar error occured. Please report this to an admin in the lobby chat. 发生内部错误. 请将其通过大厅聊天报告给管理员. - + Could not start game: Synchronization failed. 无法开始游戏: 同步失败. - + The server is down for maintenance. Please try again later. 正在进行服务器维护. 请稍后再试试看. - + An internal error occured. 发生内部错误. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification 网络通知 - + You were kicked from the game. 你被踢出游戏. - + Sorry, this game is already full. 对不起, 游戏已经满人了. - + Unable to join - the server has already started the game. 无法加入 - 游戏已开场. - + Your admin state timed out due to inactivity. Feel free to create a new game! 你的管理员状态因为闲置而超时. 请重新创建游戏! - + You cannot join this type of game as guest. 你不能以访客身份加入这一类型的游戏. - + The settings are invalid for this type of game. 当前设置不适用于这一类型的游戏. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. 有新版本的PokerTH可用. <br>请访问 <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> 并下载最新的版本. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. 这个公测版的 PokerTH 已过期. <br>请访问 <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> 并下载最新的版本. - - + + Server Message 服务器消息 - + The game name report was accepted by the server. Thank you. - + This game name was already reported by another player. - + An error occurred while reporting the game name. - + The game was closed. - + The game could not be closed. - + The player was kicked and banned permanently. - + The player was kicked, but could not be banned because it was a guest player. - + The player was kicked, but could not be banned, because the nick could not be found in the database - + The player could not be found. From ea4a5e28e20bbe0775f8967f8511a9e7ccb5eea0 Mon Sep 17 00:00:00 2001 From: doitux Date: Tue, 19 Nov 2013 11:00:32 +0100 Subject: [PATCH 105/128] Update translation release files. The fresh translations are included for testing in beta4 --- data/translations/pokerth_af.qm | Bin 123267 -> 123332 bytes data/translations/pokerth_bg.qm | Bin 50817 -> 50975 bytes data/translations/pokerth_ca.qm | Bin 129277 -> 129344 bytes data/translations/pokerth_cz.qm | Bin 134307 -> 143737 bytes data/translations/pokerth_de.qm | Bin 141199 -> 150778 bytes data/translations/pokerth_dk.qm | Bin 67863 -> 68027 bytes data/translations/pokerth_es.qm | Bin 140499 -> 150305 bytes data/translations/pokerth_fi.qm | Bin 101651 -> 101817 bytes data/translations/pokerth_fr.qm | Bin 146817 -> 146987 bytes data/translations/pokerth_gd.qm | Bin 155390 -> 155381 bytes data/translations/pokerth_gl.qm | Bin 145867 -> 148169 bytes data/translations/pokerth_gr.qm | Bin 51440 -> 51596 bytes data/translations/pokerth_hu.qm | Bin 86901 -> 87065 bytes data/translations/pokerth_it.qm | Bin 140403 -> 150229 bytes data/translations/pokerth_jp.qm | Bin 72433 -> 72186 bytes data/translations/pokerth_lt.qm | Bin 95597 -> 95664 bytes data/translations/pokerth_nl.qm | Bin 91299 -> 91457 bytes data/translations/pokerth_no.qm | Bin 19835 -> 19932 bytes data/translations/pokerth_pl.qm | Bin 129168 -> 134901 bytes data/translations/pokerth_ptbr.qm | Bin 140713 -> 149245 bytes data/translations/pokerth_ptpt.qm | Bin 97159 -> 97228 bytes data/translations/pokerth_ru.qm | Bin 125275 -> 125427 bytes data/translations/pokerth_sk.qm | Bin 92024 -> 92172 bytes data/translations/pokerth_sv.qm | Bin 48974 -> 49128 bytes data/translations/pokerth_ta.qm | Bin 90155 -> 90758 bytes data/translations/pokerth_tr.qm | Bin 56186 -> 56346 bytes data/translations/pokerth_vi.qm | Bin 204966 -> 131686 bytes data/translations/pokerth_zhcn.qm | Bin 88319 -> 88374 bytes 28 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/translations/pokerth_af.qm b/data/translations/pokerth_af.qm index 3b15f6b3ba6d1c604ec9fbf07297b0d9dff8aa2a..51e7e8f96df3432974da94f2ebc3427ab5594828 100644 GIT binary patch delta 7013 zcmXAtc|c9+8^^!zz31G0u}&DWWXaMbS+ZppAte(UTMF4S)`YqxLKI06Wy_NNM;L3? zs1VKAmy9s>Fc{02{Jx#rKc9O#+w(rp_gUT(dschytaf=7F*2!Y?Z)!})Cax}P$<-k z$mS5?F{CfBt|mDU_+OW#VGgztfVwk;dJiD?2QL4rP@HT5cx?tc?y~daKEQtvaOqEl zB8UGUaTfUfg+g(!t(YKalf*JYPGnWhxZmAMCW{ctF}o%jO=1 zbX5<;xI?1itPx-O)bk-&ly$U0uXbS>oCYiZCSJ8x`LC~_7;_Gk>G zWJ2!6=e#}x+4mrj&g+7sfQ)C5C#C=!Dng#Q5;na440+aap!6u@r4mrMM4^aDfxJ4G z$H(j}eXCHMOn|&|Byfk<9ee=nFNS99&%iHdpo#b$qT79F$K(L#YC?Ns3ve$ECJ#^G zz$jQpeuQZG3DuXq13KKnj}>xFK*Sl;sq&r{^+^6tIM|+`>6Ht>`Au*;{2a(V0uLL_ zIMWU7;u-+|wTD;gIl$eDUTf)xu<7V^t_+y62)*C(eE3JQ3oxr0yjydf?p}80&9(Do z61+obcEl3&F|LLfJ`{Zl%2|XyZy7LK)C=^B7!J()ihi+-@Ti;U_lysmKN3FC+ku5c z;WIxQxOiQm$Qc2jCC4Cw^zilOy5dK`H!ccDRKqu`Es&4^zg+%**+lpcP6KXShyO4d ze19eUBWytOXZXi%WWa7>U~D`C((M2SE~Vvbd@%6*Tyg;h{&$8E?23SS3#i|P2spnH z;@Afa8aJDPYmPzj)cmHm7&6}v*fs)zWBGzz*$AB29l|#qfwA8pCRIXU)=CC0klX_7 zexp$MJ-2h>CIlXhqD6ZeBJflLhyk$nJb_zDl8p8jVSo0}wOc zAgtUYT|U}*w!K0z=nAGZ3kF&(L*#gR^4H}*J;6*Z*J0<{sZ(`=Hbj6p@>OkZLe68OD!y3;>Dz7!sFN+Axf6duR-Ky0Zb zI(2n}_~n7<*@lUc6f6S5BY>KN#L$0JsgTvKBFse%G5S9--L)>TWwx04=@AfAS48Zh zVON~Q^3qu5dOMM(Z#fmOT2#g9iJ zyi3HTxnU4Te-~HfO~7_Hg<|$Bal^5_4WfUJxZ!*fVsM1G+k-3Ic~(5gVD1N6#jBSc zAc7^8HGLgKQiRGmatH8gzsj}wQC8jlb_UK+DEt?wnpbfLS_Z2;&n|`tn4#)4^){=p zR-wo#RQZ$_EvLS!faq?(@Sjvcx05?-Oty6XU`~9tsz&Ydgg7@zHMS)+J=a4uC55gR zA*!htSpQY)6^g($s>s{ah$U1NW2MXg9ivdRo2FV`M(MqAR;_LP6WfN9Dl7g4rT?R9 zN4z)iZlvn)0(x*oW7UaxoSDEGh>T6D%OyS#6Y^9y1P}iqpvD5#Ln#I#%wP4|>vy0|g6ebLMm{i8^(8l#H&8CuuZMEvASNquCBE;2e@fbH!ysm25J_l8&Bhlw;oWt6*2bPPpf<1dI&K+ zNIjr>JR4INh2qp~^|;c7fPSfZVtIAgu}?kmbUELtr{}ZbjS93gcB6Xw%{z?!N_A{l zC7`ZKy`T&0Z2Ajz-0RW6t#Rt*6FyQS?&_p{`I+ih$LO)to9chY z?_=M1r!I@kXH_^Y$pzU!S9d$lK2#_M3rQ1Yqq=vxNrqwdfHHTfq6cG>w_BlzJSMej zz!hIPEVZu6mVGr&@~E~SVq}QauI6{(c!bnhc7pKmmb%?!bvdt=y0@hV=VVEK)o%dH zBcls+hlx}%&ow4rHt-cE=|1jxR zxxZqzO1Dl?eL-EMTj%JP5tpQU$$ag|-=$~Acz*sJ>7}ayqU{Iim9!6tOOsw{8I_53 zq*tH2a2lv5z5CAE@88|d%qa?mtygF1eHGr=`7~JrqKiy6;c;8C9T`dPfap4eEa3Sf zlKI!QD*1xPy~(d+g7n#+g(K~j^j~@5NRN7B@wvgW_K*)mR;jFeXJJz{ z$%ci;Ss)VpWm6jSD6ySv8Gji#)J6Uwo+?XxCReXa|4nw48_fEX^H{j-e4L(1dM!7* z#Q-gTAUFHy$nju`?BUE>yz;s1al05|gIVtIW<3kQuX4v~EF9ZX?xG-$3zn zdFrw=5IsZXnaUEfCwBmswugGZ&)Q z9(j2fuS-8Fue?~5?KE3X?P;U5uFsU$)_(%jdM&4?^9A0&$Qkqbpe>!{jO|=u->UMa zd;EXbp8KAOXP_m=m2Fz2#r$wvm1LY(O; zA5Wr(4>-%m^I8E19pw|{&p$X=zF=9x6~C=27pQ#LHCiUSm>tCZBGCjv`?<>${B-w(m^OAiCfV*`bvO}_l;k78h~r$+6U#@6^vqbnEi8NH@*-6m|M zYC8j)*g1NRo!@FH6n@(@j$V7%aN66s@wTSU8czsYN}8rgTUxobk*0MAKMukbG@bj@ z1){W?p1W89w%*tDxipRSXOhNe>^{b`NE3RqHm8|On(?9(Fa~PI=kxgXXU&AI!yzi$ zG?V^4$DPk=h2q3A&9pAw9J_YdIrxD>;eJCi-Q_fexi(lcXB3s)$3+v}>>xzwZp}Q7 zmty}~O{{YiC-}a0Ui(9n(5@SGa#WKriZ5DpMYAe@9mDoiv-%^i+p}JiR=fik8LC-( znEQxLV>SD&We^9JYK~qj0;b;A9RHKY>(Vr*J~=T=do<@GoG8p7Tlo)&SqYj8)~XN~ zr77r|35@Texe=a8AzC$eI~7ALysNo)f-iFP(L6ft2vK{f=IN8`5FK@z7e_oHR@c|O zPN2Yd)YE*eB7mOlv=vr;;KK5>6=!g;oa>^k{B|@jI9j2Is-&&g$99|w{Xy&e?JQf| zB0D!W)VdZ@SO@>oy4@%PDxT1G$x%~yN3^{b4PftXtWbUF%1lMSdfI^jyEzfp*9Pq8U_L5bJJ^>7&Xlx6Zn`tXUfSWUH*&=uMr}~82Q7TB z4JOp>*~&f5dAcAECrV@HARY1)Y377#tEX=nGOM&`LCn=3fjzGxSZ3E{@ttW7n3 z;OvsE-RkB8(Y%&+=h8>O%K+`}zv!24!?cHb%Mf#-w3kiAz?0$Ho2h?r#(Av0bH@S% zbk*Klna9U5)H0?iU*BYNZDPoi8aA9h&PL*S`Ty zwbRwv%NMWn(mBtkw8!7nH8!2**2_uPR7E9*yXczgnF1-nI+r}2pHM~Drho-vx>eV9 zco3yK!&}#3MIn1~yw0=#K^Enex?YDvxy9oblIny_6rz|7j{{!|xI_#*3tr!X+Bb<@3BF2ZBDwV^1bHd8#>#<9N^c=y4YXI$xC$$ zOP{l37U>q*9#Oi#rs@`t7)e*%)g?A@V;dT&Tei&yII&Zge2x}}wb8A5$_FmqtJ^g@ ziS6nK-I1Z|fj`FR&Mc1Q{Wo-H{``-lMrGaE+ffj!rs?wgJmm37UBTh<`%86~d>Nw6 zV|16k++pe5rz;-Dh5izy7j8XbIq|pA>mDWoy+-M+Luo+j4t<5Fm8^|gedFI~NYO)u zVqR^1$A*5~Gph7`@~DlqLf?;@Qqi(i^5{ynZ5jFij~eV5!}KGUI6|1U`k*KVAmXY% z=o0;xy;L7;qB&DN^ugs7b#tbE>`5}_v3}C@9A;*aetJm&$MzV7!vC{=MkGJ&yt$}Q z3~aBD3=M)9S4SUJo&GC+ptoJ){ZnV?W2X88-l-P-Lfd|z+e?KaeVTqzlP)y#yM9sl zRJQ$9`uKUC+=2z`Q&-FeJTvY5XT5&yj&2bBM(ER@y=UwADY;)|2iq(CCh)N{z4cpM zJb@M!^hcwqzrWY$&+U{r`rg)`JJF0KbeTTaw+(yt4t@R{nsvchp*T@rpMQ?WGtBye z_3RCyQ}owMPO~uG*WZn&dqRTrclQqm`ef*zM{Wnc`zRDaG5R-!%xl~BNd4PNY=t2& z^l$rKr`ehMcWyL4d9?o18usQ1GxVPWXvp6}|Ftd!ekj9$neX_Z3kH1!=Kc2lhMN7E ziSLUHwL^J+$T5YY<3591V@7$---Z^CT0zXNZs+=g2KOO_5Y^`!+6+@OG1`Rh%XQN~-Oj;n485{9@dX_XKHb6~Hup044jRY|4Yl)Ad&8g%Ct%nC zL*Q5H?^1t-BD$X;cpd|{GtLk)j^`tM4Ws)!W~nJOg!<;OWrrH3R=Sq_uu5fHl3|`P zA7acy!~EU#IglN; zccYV65ya`X#zrdo`ok+@lNz__k&(ux9~^Xg^lLw5kb$)_a)83fSwV0o8T#N}`M=1X)#^fe+@zyY7N*rfpzbkewIjm5$ zO);*z!_n6Z#!!b{qGNEr!@L)OZXG&B{8)vkf0{_D(kD z>M4%wm&V-jwsUlOO=Er?x_H`6V}47ze(qvp{; z6jM|8OoqP1MpGIdzefQ|Hl$+I@;@z_q= zV3VisSW4u8sdKm!t5XX*ZU49_KSc8(rY;?5c-lZy-vc>7Xf2aZ^IHsMMbj@yY##w; z(}@3=or7@!*+z4(0m&5RP=%sxGxPA_^;pd&o5SXmK)8CFr}VACTz_Z| zPY&ZZmrCXsA5Z4|PMbOY(0mBD{^r%=f97O3(az{Y=0lHoW3Q*?-!{|iE$7UqHze^B zY%g=}an|R7QRdudr#W~1Z9bnsx5Sp1&tDo2^k`(xH~h?x_Jb4(+beUv19ScNl?uhF zJafKBb+)J4=7PVO^LUVJzC6kg(72dyRHS9=>zVIX+!>+uzARUIr- z=Dz1QkpRn-6?A#Oe=Tz~U)Z76S|T$(0Buy3Xs5@Ne6}U7cLU(taD^h~f}N)tTb6n~ zWJ-^)q+BoNb?+@3+p~srePie6ILqEuKNmvGi?L*zc;T^F%fX@^d_g74$$pPG#AjGe z6*GrNPqUmENDsufwVa<8187q$d9JbCHRLH2vs_57c=iy>VEpW{kqn~%QWB1*P8NZI54KznqDsT#V*#(lX?J|kF8lvHZs7m z$u2b=+Ll_+`<-CECRnemrWv-0*4uwlChKQd?+uy){#n0u;zZtk18vRqR`VZM(TKIR i&Z;hR#gEymYmNy?4n9#odB&`&v1QS}l|_pMBmWPJg{5Qw delta 7062 zcmXAuc|c9+8^@pb-gEA~=dRWX^HWSBVUjG_$`VDiC?P}(B{YLXrEWTD7L>yHpqv#XK6&QpA+{gk|=IJ@d`Y@-j{fjZJ1D`fz`nx zS)nuWHa&?_gNS#;IB(Vx?|PCb6VLfYVf9CdUyw?aQ$u{{X42D}BI1`P5jDgRzn&wi znk16N%pg9!6xS;aY&b2F6?qV!JDcb(o;&$~==g4u1xzNIeu-pZH;IkjMe@0YM8)+a zuii~`e7_vB;D*LV*LxLlbwS$4>qYZpDmB#yH+F_H(NtI5_+mxItTbNExZ{aX~)G?YE=1sKnB2A2ihkftR z#OD}rRS$BG-cPi~l$=-P5nag?$qKuZ^SXRuv#*ouc&sa-JGrioBHB<%uKNaq9^_Vv zzi+fA_o*2~)tTfz6BGV>I=P4GiBgKlJ$5@BmQ5b932?~h6XdZTGvC^tJjzyp6UgKH zC3sLE&y{gR+0Nuyww+jhK24by4iA5#DG4iycATbZtK5k8b|c`dLf=ITdY zvEPU-s3os`o8h>w;BKNrr$jQhqXsURM_%WmFr!0n$m@a`u}O9`-Twwr-cJbiLZbY( zG}|5nmsf~nQN3xQ_5`ueQxx1{k&#UX7E463DQUE*w;$1fjT9LKOWu#5nA*pPjKLJE zzX;20pw-i`0Dm)DcMSOy>PPF%JGVn@r%_@N_;)64Y)Pt(L6lOCBswxKr4MJMA4U5t zevl#?kqCMkxq9HCuTjC&iY|^*Ks0Qzec(^XA9Ad4pen& z9?_EDsAk9fgOn=6X|O=TSUmj z=}g(IC7N@=z)};Y-3rh8KV_{tU_x&PvR0Q6G5Zv(O|BL6B!?NV9zZmy$-o^ABALS_ zW@-=n{QQd9L^KdPGo9HK945A_mf4N6A~t;w8#@Szk!-;{mxU4iZwj07Um7B0%SRU6 zM@no?2@A38O0;_<3;k42--KZ$!rTP*APc!at(v`lHH?_=6^Sl0n^^J)iFxD!h*y}zvhO*lu8V%habp^ zPt_9NgSNy<`bz@(Bc>yMNEW5S^vqwf`0^woNsdV7La<* zp^jMAJju1k&cx<#l-yyEkw|MvO<5r^udb528U2Ym#YrA**x)uqT_w`Ek4_DS?FDu zezQnscSL$OEt}Y?AnEITSS&4D`Z4GjQOOx;b7TdwDW2mi^N2=S8(6$gB%4ys$)fa# z?gO7W<;-7D5x#P*ZQz^o5Roi$B{#qfEB;f@4Q!8+eSIQl)8RM-x)(R(e?N!{MsOo| zQ(`u)xzTr^E~S;6{a{!y;y2E%V>MBdJ?GurKG@zuyS4qx67ppBALwX zb8RViKHR>dFk+GhE;kW#uIL872R*=#;41Jlcmn)_fUkHW{$NpSL8xVAI}j78v+NEY=5hRG(yBGss+Zp(=j638OMa=OV zcO-TS^`egE;t%?wW0D);eW_(nue|Ri8(6p8K7< z(-ebd&zh^T!8%udXO#uXALnmIHfjmlNyf)|>(J2N0Qv#wa@d)3sE$kQk zkvCiZ5dD}fZ(ab)B%k1W*T6wZd-&c>#^?fUcpGzQ@#dqvO>G^qoLl^`#vBxhLHzIz z5RSbw`Oy;+h*@3dM~Ai{w!DTP>wx>|-n?hlT0N@I5`J1$DH_DteBf{&qP3QMpraK! zPYJ&uzzlg?%r6}NFHzl4e(}aj#Kv0kq2~5P+duQ6ec_6L-u$u=akt4CQu=6& z*shc@8WTOoKMwkp*l!E?`shTWbr$@K=kV_b3;vaj61$eyBH5rM{?lJ|L;<`^>Xw1h zSS(Yt1n|Y{vbJ3wn#RAk2kTlV`U5fD}nON63Nbc%9e~AkGAW8fm0udWY$@-kUkd?nAh_+$$AER~gonIbTK z^esOSu^zI^y7t7Vr>t_+PNE=%ta{l_Vq>ah_w4G3t=S>Fe;yw)c9zu_7!xybmpyxW zo7k{FWiQX#65H}h_GSYDeE$pC*LI9(>=1dYEgy(EZIriOipDbHgS_qAIYd*VMY70R z`7ciT0z~Lfa`SJ+5aTy;%PIua$wP9h>Sm(W=j9^{rEp2K+%bL2j6&r+I?02`^v+_whfX0o_~(WK0_Yn*N>R}19|vZ#74|#d2}8A z?$*{o-!1Z0hb|JEaY4Rzu0PS2Tkc19eeY^cI0ARCUGtmu>nMdbk6i58gW%5 z8~RCMoYP2jfhoEiF~-hGt1w@MkPgaL^i*F&QQQ1d(My654E>MR?Ck?XwpI+=R0X;zY+X)5jHfFc&jiBoN`=!r3^f0D#Uu?h(fXOfzv^df zDNGdpk6Rd^nA@{AvA%JNz;UUlGT#*;ZKy8Ws~_^mO{U#5WK61 z{k?_miZu-{pq1&0cs&gI`%J~!S+j`^*`Y|Zu!7@yC^qhOCOW@Zky3&QFKkw9c?K%=Mo{Uq1zZGX^R9QnGnBhF**QmAz`I0vFR2<+NN+K+nok}oGWZQFq+uJ?n37C_i#;zC8bz{#S3*Szu0w7Kl{u&!fi}YJ$4EljCEQDZ#r(~Md&j+roU()$k^6~$ zv=_;I9EHXzWdDA9;cXk#N&jQQ+X=U^kRaim6&94zTlloK4R&+$hY6oOIc#>yg|A(a z1*iO#6#5PWB`SqhP>20t%Ky2b(SDzMxH4#vh;r*xeH z6OITp@RLM2CCij(<_V?OR|MzPpG30gc1pjM@L}#mrT;wK4>MBEae9KZN>v8BmgA(u zQn|RzE$HlAV~GRz(D=MkKzyJW~JOXDi&R$ zvobXSLASzQDW;W4gK~R+4790Hxs!+KCjF+|Hw_a$Jxh7m_A8?Kkb!@HQ0ASlBi5y- z^2~TxCU~*(++DcFexUM#%$rz3y|UEi3To{{<>fW)k*0pi@-3yLXEyVdH(&S>4P2_c zceG^%Im$OOE!z7=s@Df& zqMkQZmO(JprlqO@j!2tDNvffq?}#n+R*k}u8|?^IO|nbI;ZmN;{Wxmdb_msMdi)>kAeicrON`IXpKiE6{BI-Ci8P;GF~ zpT+jDohrowCf+kZmAV=YwcDQtuG5QTgJ-C=+(myp_OdFY4!%vVQEd&!iVnqN}sn(9F>TqmDbJ$x8N?BI6Q;{YpSY`^M7 zY!fkOOVy`N#>Cd8snrYZaJ&|+Zv7g(Hd7=k>ZJb37_K}Oq&D8zgtLr$YU3~dV5-^# z8*1kFt6Kld(;GzLAJxA+g-^pH)n?(%M5ouQ&7%<{C#R`OSjz zpa+g>t77a|kA6`1!`6-2I;#f`oCc{jR}Wih1ywlx85at+j*sBK*X5Hk_#5z9;= zWc>_m`m7g!u)bZ?BZpxn89%EhoG3)=`9$s9w+4H~8uj#K6rahr)U&>ygoe*hFTR2p zN$jJJ==2AwV5&Ou7Gh%fAOr8b70EJhtK-f*#X@eWlSZeaR&-YSjbHT6L!XJQ++s}IjJM%&?_ zK0XhMxaN-fT;mcbrG-eg;$L+>!*$hRk<7_ieaX5QY22tTo`Co6%}`&zfcqX-4fJ|v zp#Ga){ZExUs#UD|JsL4~`nHBQ=TKz&YIs*zU{)KAyln$^3VMz5mm7%gKQuRiQILqX}20Q7Dn2>*YVy_XKlZ?**MLSXa||$xxral8zCN9az{Ji0`$Z-Q|t1V z5d`R{b_(%ClfASvP1+B{KB!*n+r^fs{YvfJ*GP}WPg1fv8R;)+BV=DtyL`2gSszeJ zB-&`xCq&1>wX4UO5q&cg$zl=>EPAV5@9+r1+FhG^yAIEt({3LMRTV~~Wk+M6JgBAMP_*XN&kI1KRD^?Qf-+O$_^eI3iqj??vjnn*0kQ#bfi15x0A zx)I5b5oh^2*T=Bl>a99YPmG&oq?=yx8xo~!ye=*h(>$53OLYGP*?q1{yoTvJxav~t zy@}@T)@8N?cKiq3u7zWWcIN8#S!{C z!FuTaOvl9Z*1Fn<2$P&)y8BZW5&r4E*`c4e55Vk8Tjz!UZ@qu4UCe2_7#27C|Fnp? A?*IS* diff --git a/data/translations/pokerth_bg.qm b/data/translations/pokerth_bg.qm index 556bd7dfe62b5b8541de91192c35ae17981909f5..b21183f755176ce397810fc67d27f289d1443242 100644 GIT binary patch delta 2855 zcmXZedpuR?8VB&--g~XR_u4m%N+g%ck%ZLIX*37jCYMMlB3(?GkV_##Y$Dy^$ZzJt>K;i~0u>j_NOV?YNo?(Dr0AMqd+2jZ=cROG; zgV}fnTxAxG*E8*(GIM`tHuiz*bOJ`3FeAdiJud;=vcS93{TYtn6N&-P8KK}e763DC zz~^wlgcHo-5b$LeY23}6xq{hr9en*tz_A?Cq+38-Fl1l10%P{+>_q0GJvwiZk+vM3 zQ@;URy5QA8tIiCAPgVmkem=8F3BM)ffWt8?%G?16`wc2Qze3GX>yLM z$^C%2Co}aDb881y&K{)2|7~FpqKDou>t;q+o?{oA8<26Y7qEPf>_Ga!sCHC@hEnwJ zqt?M5*kXutp{2mYTj+GA`(Y2z(?HuZ<0lM^a{=@!MEWDEfLU)v(^`%IhhK=24ru_} z*`jheIrf6iTWq9l5nX-P1Z>O~-Q@QHX2HyY9MN5~=|IX;(W5;Ss!U_C-tJ1Es!cpT zwT|{ePwX&>{%@EKbL3N|RwQ<5qrFalBzBFxM>!D3Y+5D`xpy9r2Q%mSF}3sB#Tk05 zfcdAHk^16-!8qE}a&g@bPhiey@zs&tz(G^-hl{kQqT3S4Wk7h0M9?m#5A;cF;(UN3 z4u{Lz~m-#w2vhI=Pn@ei6r~gQ25Lxl>vFQp9YenQ~a+DdWV#!VegS#SH1 zOK*qA11&pgG0YM5X{+z4-&p$$*_Zv*|s5d1nZf zQ3>BYcmt?E%=ehm#P}!72tB?x!XDT@itq2ELUDh>znrF^d|tzhD3wYU@YFCew(0)j zjkN2ehL#g3+txBu5m0sE-$@=Qc7Mou%m$zX!56NH@2&0zWuQ zbDd|=`b?#{Uo8j9)1)oG3<7myrI(V%Qrdek^D?EE^@anBZc6Va)&Lv&r1xFBDHF;L zNFTSDQPcL2K7V=#h#nz*(dYu~e<;&0{T)aeB{O^-3K%&v3$tY7KMe)?bEcW4Y+jcM z^{dUyM7hkD-vOkKm-(MKNo{GdENRtbApS?$_ODmd$uUP(qNMkVWwQF5$CL>!RkG_U zn#r{9W%rF}BKm6Ct3iPZbctLOyoI{{ck8^V@pHj{8co=6*pQS7Mm6k4R6R3) zg%FZPAOned&oi@j z34iROTF8Da{OM2cozta20(F~3t_s0k{|FV&UkcOt)Vka!D$K)Zh9ixb(H9kyA5(}6 z#xm=@bcf|e+HDHofJL++bD3Um6+r_U>Y!Jdx@twJ*Avvid~7Qn2^C7I6B%x=v=-CZ<&mOvh{yw~KPjEusbqIr zD>E(Zf$z+fxpNySzE;Xz$@KTfA1aTp=>|?(Dw{zQ+k07g#eycDW3IfO)%4bq1b;$#&rG=Eb=`pIbtSd0YnlM?!0<0L>spEcb+2Z9(XT-AI!%g{4zw+=HQ63k)b?7K z#re!;E6v{N8aiA%ncg!rM@w%2-*{*mR6X?TDO2+wKkvstf`{h(BAUpqK25trCSd%Y znP;PC>tII7n9MBtMbGY8IGroSdTxciR1>~>wG;NzL=E*mx!$I>K>9v~FLj9>g)T3#wLWuTKI;<#U;kXuGYQT MXxvbm`C{h(0bOV delta 2796 zcmXZedt8k99tZHx%skJ`JkMN;I3+2xk*LASY4NHki|&yk_be)vOKntYRLW5%)u2ey zj#dh-I?HwuHn++;b}f=UQEp-F%i*}SyY2aU{mx(S=b2~b`F(%i-}m?ZO! zB-var*lvgvz$ZY!3T9XfIUd;gXMw+^elH;N1j3#IvkudB7Sm?}FfR-kqhi*Zz!`P` z4kEK&2kziDx}U;yIl(lnX4Z#;>u?2Z9x$UPfO|q?dHRE&O`m)Aflu5G_)K>Jzd0Y6 z{tEm~4sc3g8gGCvzDV~+m@^!i4IbdDmje?bAW!-Uht;rU32+7O=gbIX3B~uJvAUwt!*kX?GN(yd* zGg$%HSuj)GnA@jexpzNJ-pDMNhq#aLS9CF>N93@J3bNZMfO4(VCWT;tXf6c zKa5J93$QH<=T{X0<4Vvmg+7n0KzCgq1yYK>Puu~s5{bE08Q|3@acepO9A7L+I;I82 zY9#xVq`krDFSXQXN!s5u0GlO}>-<-MtpjsczvPzfR3Ifxa<7z9m60noJ8%#vbCo)# zRskLzQr&p^-Jmf{t4GYVc&U2}t@YMmsmI1UR0GqP_5YHtxbr=rT+H;dVe0(~r0HfW zfxvX;+B?$x{&-+UgtRKh2k?F@ZMW(ID)XctF4CGxZpffi08wr-K|h}cI4K(w9{`*P zkj?4n26EeF39W&E^>yYjOIgD0PGHk?7Re(VKq zYh4_$e2MXl%ubSR{I|?bpTHH*X#xymxw40p#Zyb(C@5%iI7fl*H6dorB-K;|$D zn#ex7Zy^65pOO6(yfw4nH}WsK_u;B{Nyubo;c${R#ONyS*tiNn53mb9g6VO9>6^;c zWKz(W#Pt7}yV}|Y@Fr%IiMwe*lNqpt`L`%$z$vcd93?69D%Wv=c1h*}?iXVkY2=>k zL}0Cndp(F;A4po$`0I^y;RLL^OirN(DzXaL@E6%eE+c6bHq?;M==p7uX1-x4k9L}I z`Dc0k5+wt8t6d3=I8P&n}M7se0Fz`=%X`{?O&Odh(shq|$qnFEN!8|pLt$oHn zc}x9ga*Gj8K+q)SmdEnp``v-B3gxlCU!Y!_!Tj!+eCxPxfvhL;jFx8L+hcOW6fYq7 zk=zim6exZvZ@S+P9Ni zV4(cTqnkkNJ^8bGcc3CrVP5oKY5)d>#Y@^BmQ$GdZxxPzP=bd&Q}}gSQ-8`}CjO`h z;&Z6a?N@}>{*&6!Wku4;i9kZJV#n$)=%mmp_NwT8QiY;==L71ak%}MG6o6Zr;;yAF zRf4%j@uFX#4LL%oU7SS&tXB>@5Dv&|n6bQau7)iDgYT7Z=mGz6M zpE*}3TkfO*hYtzL?mR%{CyY5AK%dWK?p`Q_x>3LugP4{kW^BSosS@&j6jr2BYIk`H zu?fvUQG<}s6G|PYg_+hXe3=?VD?Wg!*9qJ8wbbc5nMX>5y@koNqtckZBZQJFFCfWD zIMDl=0<9Iwf~)8_Y+?Gu2o=thX~YN(TlF;4&l7|T)wDZ@<_H&q{!TUhyU?0KXQ=&s z=67a7TN#y9R*i78=R7cflyEo4mhMLicWakYsm>IhrXHoUHJ7*)(G!7J3`97qTy)Q-vU7=z7#dt@0F4c=Bp5~bvBUUbq15THU zC*1pJA$Bk)ek0bM=>it~DxQW8!j8Zc3H?eykK*`BYSJb59IZcuw}vZqQI!1OuIjPzCqjPIas zXr*3MK&7kiR&Q*lKo6#+is-tknY{#-y6V$Rf6GAsSm$9w~*L`!d~8zu4d2j>57 z4pLt~NB4s&nL}1GgYIc`iIj=C7c{fy8i9c&%(as==>hIQ?Kn+w^n6-qFQze9bN&zw zygfm4=_<`wbk($q^xQL(Sy-WId!=s%Ccf6(8bGP48l}1SX&1fdn&v~IiT;duXeYir zNQa}lHViy4c$#*7Qz4+~(QYXGjrKr~HbqVcSXP8KdyWIOxh&>x3A3R{TRv4whiM1X zU)0tVT?2MEYU|Y9^l!;edv=~bwT;Aq+V4Xskp1D>E4oZz$XlkN#B8k2mWt7fSvc3s z`EeAmafz8{K@aVTA!e0M<<#zfG5f>g2DK#{df3ow3=MOryR5RZF8I5H%X|9cI73emgs}cb@x{bDw+n-*Wx=xB9g;#dqRZR?F70zsT6Pq zeEorY|ELuC*MPB?fRf89MNt%_)hmFT87jrSw~)5Z1^yRHMgzB+IQa7ll_GYAgZBKP zkoHFcOGZMvr2tEBLMrMAtf;3_cy@yHYZCDHIY=+Vft80K8~FSWuOYi`qCwXje3-3L z`)U zU{b7m2YEvlQ0VO7`*kWs!A;2f#{p#@As>4PobC?Yl;OZQZ|D}@ff#ZX`pKEV^`D?G z*abYR2D7^da3&MBaTO3f)}Z#9a-f?h>Q>7#1NPCVU-M5|RFd$oaJF|tiTnU6WM87{81L2Wm5Arzrcj7!d zx;l8v+rbJ8`cI_U_Qn`s+5j=@0S4rd-+N)e9}Jj1dJzUK3;>oNz@R8bcxo^PJ?DV2 z9pJrqFR;2PyrYi*ckikc`Sakt@(e_9GJN`TUTeRH&(a8Boj-h1I|B)iF(ixMC+5QU zyJXAjGB0x5l&;OX95>@Vw@)jzV$$* zh!4a}>rocgGR&&-h-a9CIfW|4l*b5eIRW@O6yZVi1bEPlewFeA!-fgY-Zr6V|j zX;-l_Z4PUt4pud-SCcMlfVgwyuVb;Ms;H8*NVvu#I{r4HmE>%{i_|u)Awr^&I&vGZ zs2}#m(5yZ6k-qX2E69cuO%_3P`x&PuaCqMmm7?1$T$r>TD1M2&h!ohiEY zbc2{tUG({yWw8E|@C#kY=TgMzk9_^sG%>4{7Gi#(nA@fSa3Dg=e^&-fUMLnGpcRF7 zvGz?A3;c>mHt;$xOl++=3mAAtY&U<-gg*b3`02q&pjWm^F?^56`o0MVZY{1?oQ4=N zUgZ977R2rI;+DJ}_^G!_vAT{ZaQOxz;5Sjw^c=+06{4iK8}mvp9&TZw2Q?P2UUr3; zvr1#zycJ^CeofQxeN?Kxnl^1u1K;&h*#ZG2>IX5QhNf-J_CTl38jnjWASQ=tx`h-| zb6cns`F|y}(z)0*)ii;{7a=rZn(+rbAWBL!Q#vqTBl9%DiFB*js0q0`l(H?W6hY~l z@M6Z_)=m>?n*br-anNh9W^EV1x8Q?u4U;}4qD*xw)m6Eyo``vV_8*PM)@!!{&n z&c^co1*0Y>=o|}hL$2of=cN$opENg~cteD{YYGJ=Vy(BP=t?FhK3{V`xdTu)T=Q6p zgs>NCUVGgE8n)5Azm@_dE1C~kS(KhZS{U>YJ%7<^S92l@mS~lUG*o-uLFW{$VyAKz z)Y8`5&4hc@Qrp=0fd%ODxwhFHzBpsF*6lV!{ZpB?U(sWTr7_x}wPU&HXjO{BT}6xrO%`X`?o378kUJJGC)AsG&O+XqUd8 z1UydGuAN>1Y&oTk-)iRov-7n{jj977t+h$heSvR;cB_9JHE)IXuv0KZ^a<_Z_P!7U z{I$pb>&*&w)?S&<7wCF8IB2={e$rNm4PR+rQTN6EY1+So(tzAZZDn{iD`mPQ=NzG8 zoN(~^Je6Wd;@X+f;4T!O<-HG zH2vsyi0Lj;NM;_yH8;sNXDAIg;U+CUG7F-;Z$iGowON7`{fxC2JX>0-jf2=>kd|gp zqJ1YytK4K@{&Q(fP6QXB4GHxW=jxZF#OYrFar>nWUd)FupM>6ut9`n(pY%^)Y z+E0`pNXcLF4I5rb$=Q_mz|CwFIOfgY9Q?VTN|9ez+V%^5nbTR?IXI6pH$zJGsamkA zNvY=+vUBm5_Q#b2xBHQQk_*Yd$-U%zvY7lp9k`>YA4L2ul6rTiGf6}4Oe2|=cal|# zA2cL=c_&-izebQBREi%ukP?%i8EGI#NC#T(0($)G;NLoxLQInm4vB#9Unw1qVvK5+ zsZdq@sZ_O#7o!QI+SGc}hj+nQg&0q@v68(Cn_#g9I8993VYElgPS? zJtVzsV}$6FE4`A^fK`*ES9%60c%Ss@eGgv0k;?z0ko&iGaNhux!Y@hsvnGG%{XJQS zJVrK$7*s}f;dL`|AB0a0G6!PtGLq#m_y+kK?|&ri|L}_*(tBSj#gBf{zg0@HLoefc zCB)tUS(nP|>(6BUac_vs9NAEAt@|5*&1{MI2$8>7R!7~>?_x< zL66QoBR5{~2%`IIxoHMHv%z0(S;SDS?uf)ZDAel>?x1P%K}c7%TvD%1l9z} zQ~SEH7r86Xn8H@Ua8#c8?OWivRSsE0?H(2_&u{7pq*loD+cFdjykvXmTq`B*fgHMp zGrj7hQmhV@S5~mzjtrJp^~qw=XymoC_*^>Vb=PYFUtE%t`Y_2#L*z|gJ_THd$eTCw z1>fD4w?uQC1D^7hy`16T2J-d?{J!sMdB=<}YId5u`^+NXexOQG=rK;-6B*6E@TGk4 zbS8U=lXAK{%kS(9`P9%i5XDdAjCi{E%n~`{T1OxwL_S;ff{X+5)s>v_hf8vf#v3@F zBapaxk!l&c*8x z(4f%4)b+ah8$H;v?X&5ccc$3~JL@`i9Rft8>behTz~*I>uFnCg!@+XhfZRFMrs+EG zDQOI_uWo9gD|?kEx*+ieFn7=eW%IghqHg-`00@_-x|ts@Q`RDAKlzm z7ucGX>%zt}uSXowEpB-XVqvIm2|GoRU0WB`G=d#nrh`8p)2;5(i)j+1TRonmZl11N zpS_j4F`I5f1)n=^(j}Mf116o+Z92&{bp@e2n1`;ql5V9Cnf{W@F$8>VH1ekdou3 ze_XZ;!pop9Q>sJUTBa|f#9-WZ{nOGEh%meUb)~|J?x!z5Y~%jORsZQ4GjXleU>zMp z&AVc7p0braiIbtukqBzuQbRra=8^1Y{S5U;(Qlx^W!vwRlpI6-!+i11pAAi;ncA~Q z8Jd}yq?^(VEi_Ed6{id>6qdlIazm?YRrfa-zRsa!EUjVa91zHT#2rJ|AM)s8Cxge} zV-)F{hQ24KLX1r|44B4og4-L0TBwyB&l&6!^XgJ8_ZcQWsp2EUN=QYFA@oOzV)PM1MAc4m-b90aStglch?-r+FAU4xyx_)nieb5(E}q}Suwv{u zdg`1ZuDKgu_?uzP9&aGa)sS$R2G6-_SpO@>TXVv0IIt+5X8}(Pr$%oB9`rX{ToJ_q zCL1n3`j^~qxKtd$thN}k2Rvq5GQyB^k^{_*Fy#6$MEe5_xgYMc8e~K17|wL;Cq=kL zvBURL43Fc00euwPXd1AkgHkPG9m_LVX?B8!+)q|15^KjO-!>V-9pOM_z%^Q)vQinu zEvM+dKVgiMt36HebFafiBwrb~(gou4QA%J01F&kK5|~Q|o_?-OFw>mSJIaJAiQRu# znR1R?wpf`tHONGZz%XSy_@b~}WmhW?p#3Z5^kQb@ zrzGX_eu+DXY2nJ{vn{EryOb=Sui5u{D%oMQG%ru3xMx+eFY|g)qLQ+ zwCB3=ZljYO;(x`;dp|Y+AB&ZL8ZhV2-ZWxSd;V@d}OlpJT=A=7o^J&ma& zXmFmB@sP(qfM2A8zg{pNIa|sV<1gdM{`Ab;Z;Yq!Gc=V8DzY+J_~ly+s}CC#RR~8nz7_3&LCo(@wLthk$lql$9N7DbK6+)um+IX*7%{) z1>%gG@#EL!H0WoQV$M*Lrfp-M3;kizPU3E&ILstTG;I0|lN^!>ab$%_*OBbG$JEH{ zHbl`5(^s19z<=FM&Fd612SVLVE&g%=TBMrV1kqKyKbboAW!XfnH+|#BTv%3U>e-%x zyEoW0v|Buz#MUO?bgpr!bxnaoo^pfn!4!BgpXEB&G%-1ig1p-_#g9V1;IV0XXdVw9 zuBsFTf0?4{w}v>}*tEK5DUW#$n^t?-Px0hzpDCd^U3_qfDRC*=>fy-_#=lW1`b;sc zzkeTMcso;aDPy}W!L)G^XLLT*v_Fi=8U3v(ZAvM`d9s1cHGN}0e8)vI*nj^IM3X5 zCCe->+3ev;_D*u}hskCSpD8?|axr%gZA5|EtWsc;-SMI8OmmN}oXMdk=7C2uftkf- z@3uvZ?K1PIcrG=Qg?a41$G8~3HHTbhj%*)j4y*Gc+m9~h@O#XOZd)9DJVK>NA7_p^ z`IHlxW?tJXkw=9$%xh0_f-(N)cx^AP7>ms7c%FtAcAYt~&3U%T)y;@F^XcE`P$`8!ecj{>>5) z(2&Yk%Q7qM3B)&TEx`jhW3NCR(ajqrO+k^Fg;fy8rcr?Vf-&-~W4QH#l*1?3g zmg8moq5n6Q6FWJR138upKgLrZaxGaI`Ap9GmaOL&xY|csuB@h~R-Ck4$qnEO(k$7= z;XGceP$?3eEZNS~gOVVXqNuec+r2iQudw92&9pNH!!0+)4*_&hmV)ZE?C54o$$yO9 zp|_TY?MoppjxnDC;mk-+d96!2k_Y{ z>*QA~j|ImPR@ZU1|7i`=ec;;F!WzEiFQBtzUEJswZY{OerTv)Oy5|liHgd2q*t*K= zF@?32H8H=G&-J#Zd_z^~JyWI7ys{o%p9hgxZare=a~Dgj$8Ps#5$?908&t+Ez!~fL zQWoX>R@RHdINj!3P1Y-OA^}5P>$Nsf+(Xn?DPmJd&d>hBdLy`MfH4V!>blx{*{WTp zn7OR5RmTZh(rEK?!nSi}Z(!d&TWa$Z zhO@5i+)rL?UXpAV!?nP~INRkSR$|;6+m#__S;8-DH#g9*=ufudM@*C57TW{=VE#1* n+ox{q=ZCJN^$#u|3HqW#P=f7plY~A|wW78zJ+XDE7#s3`55Bo} delta 6939 zcmXAucR&D z5wW6T!HQrBifCeNvBZ`{{0_T+{g~a^H}~Cg?tR1Q_u6mow6Rr$cU)DcMtcF&gOJAA zX||FrAeNsdy@9QB$U(qSzqnBjR$oBv0b$+-$o+wWQ8tRZbpX$;fJY@ezdre17D8ayDcg?_Zq(*=Yj}T4m>>Xd6Yr7|3po zfDNA@_vAXCn?d$I3~W&#j|=7QyF#9p0BoNIId~1M`0NjPZY=P{8FG{a+~vZgSd$Go zF_+g5?ff##MsaryC}=0<09Ss6_Ab5ptN=zg zci==gEMq=GbRLB2G4Fs*-B7bat`V@-LG3CZXwl~QZ^FSUp~>}&K)x2P$NmJa>EULj z8F`!0KC(W9b~`-Ro(EdJM9&TM!|XitJYNO`|AAg_>jNP@$j;;f^lrm_wsx}fMrAwy zzJ=c7X?Exf^f4qt%t%F_%j7Rc^m)sGStB~3-#kACAQ1h+8R5y~b1u02E4&u%1fpKU zD7{# zzdwV|Jf`OQ|G_6b6-aK3LE$SHkRFa06h+H7Ct%Qph2&KX`gRsbOMvgo8=+Vqm8g!y*O%``TmpBt9VX7=};l1~K|JhKK(L5jq0H)7LO?D@g|C za6KD^e*-&1{=)FAP+D}DH=d@e{R=T-{7ptUn5muvoSlL(-MH|LR2xNH157s`Vqx{g zjB<~3TVUtqWE;h#?FekjB5XScAp!K{?*d`>o&c9`BHVh0o_U1GVcfu!i&%MZHn89k zq8k2Kg}MDZqEC^3)I&^pQ6*eL{3RCAk)!d=BnN9E(p{QE%<6^o;hTW@X6#%-v$j7& z#>(Tsk~=usU_L~rG#nqt<$WI5C_1&onF;HFdk2tzWC}3%JBr#*fN+0=lFWbT#~XP1 zS3UY!ix=_S?$kWIPh;h+_rur8)q(KZ_@|yb(Aay6(3hEc!(=3E&*AyTT$0Q#N~X~t?y=u@x6frrC^u6Z_!!P7+UFAac=AH0daGQ zxFM$j2lO_Is7K1~gKg8G~Rf{Sufi~?_?&p?6O!QE7nstv7_SQyGa6G=5 z#?dMYRQ~tQLa01cWB0g2JlL$7)Qb5U7Ox6Spj*Xy)vSvHDciD*B4Cax8$JQmq&weYup%1@l#3b8{&@{nXHDA-e2Tt5T|KS5 z@(*UIr=2NhnK~$s&1}+nJD1l|2Nm9j7e#6t znGvDtxD+cFn7LlP*0~}O_(8pPst@q9P^S!ursjF6_g4yph*+rJ-_i%7Pc8M4@7-C! z4(bcRe1Jw{XTN^x`)gAm*1b}{Izf-^Zm#|ma1glKLtPe<$4Y4-$(J*!7)R~A(%wcf z>8_-)hBBEmJS6?7x)8b}Qbjk$=7xujBGyl8U7tHHd?2-{%643ITXL(G0Wou%)V|ht z;M@VpLw1Jfc2VkDNaeUTTS&0xYf@x3CE91a6y++j z`RtWqE{6hhM#cZAI8#Ddbn`z|DNyA0jS+q~6^uBWcL3<|NbdmY&vvK;!aCSUOW)1>tuexQ-Q_)sY}*Ob1MD@EE>8CS|6b~?+NbY5TC zEo+Z>LFB~9x_4%FNM~8UG@G0z8XfNQ|X-trGCm~ROtxq4-KG-#1rf9_)l zj|{nCHa(MAOKw`kP_2{XrXL-FLvv*}YeP!yh7PjZy<&*Nz2y#nZDPfrkULhRQtS(q zyY^kdURX`;8e9otWe>TBC%;cAmVGy}j<#y$Vfneh@gwr&j{ZQ5i#)lfE3hq5o;Hc2 zf^MEXz2kd!?A!9J7;5*RUUG25Za{jL9NdDTm}``+bArs2v{ZS{M(*@Np^aiy2YKa3 z)>~#3IjTo4yW~YVb_VY|m@BWjQWdCmPF~xCNmkre-cauu;50x^PUZuKu9Y`NaGgDh zym2RY*uRdP_K=_V94K#@wg4g|Sl)hOKBcmOjiOLJM&1z?!MX5&yf-U{1s)=2xUu|B z?vsxXd;@WBhnyWp7oYHyvoEyH$e?g?SoXc}nL^)Ksq1m>KxePQM5{1D@C@G-K=>Q>1b9+y~Stv@?CAruKSw zh_O5GXd1UG_e+_kO@{#-bEj)O`qbg@GDg#557lAs5lx?~v#CujG+vVqQUI%ICKoz! zR@tEm5N`luD@{NiuS*+grf&CxaNMPt{_lCJl47H{(=EQE*}+;>6V&Vska|S3U@Y@` z*j&w`riUTsb(NyWQ>3CA=Wj`2v4{z;QzDTBEDNRxHvCbhD?Ci^k3GoNZse|Dypow%;KFpqys zd~KsxaY1v@QWe6`NOQRhqw-6X=I)#=5I#>e4>}b?Y-p%?c#;otx}+)1c7$kLqWOad z6VdCL=EZS$h&>xMuU9d@4>r^MQ$+whA8RYD`x|0-6K%y`IU`0N(^h^v0T_A2MyrTD zqpjPAm08PC+wi}0ROM8yOFq--Y9p=d-7=ukMs4RDHT^GXdoCLYD7S4CGdpPe-mk&V zSKmf4I9uC)31{Nif3@B+3vi5&c91U*u=AE{eKR;)&pNFg>P^EI^w$n6Y{@uo*7~JZ zZN(0^SnHqb1`(5}opJLKFw0vzbMZci0~56~PjLG3G->CJ`w3!Tp>}=`Cc@J7@umt6 z)=Jvt6UXyx{DXF_;ct#8OSRiwy&!)6q}?4=3jCd*-TOQJ;r&T_q?Zh_>R;_OV=?e% zr?znIZHTU(+WYs-!0?gU2M&(FfSTIh_SNN#{7G9g3{1E#s5f=uV{hG@%~ZaKxw_Euf+DS z;@MHUb$@Wdn1#AM^W%8n-=RA`aue{-qC2}hoU=v~-Pya-O}atDdFtl zsJncOzYprFyXwsl?RM5({d%7%FYAg&aigREQ-o`L?MhN-qoON`2Kw|+EF)<^@>iuo z=o%_w8>P`v8gk#yMv>54>DXWZk9`%DK9`sqsoqLIo-2jN%=ihFoUFl$uUidviuKBv zm5vbAYAgPs3_w&x#s4b(m$g?JXQVlE)+yu4b#!--GU*h#w7W7rD2GG*0VU{(FQ@aj zHi~g0lwU*mcIImb8^yTIO2}k?O3EKfXm$GUd2_{jhrge5M+uwd1N2VzSC(2cfF3?J zii2~NWsN(trw&w>&6&k!-$Gfj*q!I9@ygoO^Eswev{B%evSAmsXhfNk{QLvs@HxI; zWe00@B@JA5L7cL!nLE((m6ElH`S;%l<@|1m6K;rd{$x|?WPpJXk^Z1RYWyWcUGIsmh-rJ0Xo=v zTMvv?-d17*{I$FCwl9@wYKrpCmFDk=RX(q0M_!nseDS3r|E4Ja)M0|3T%$+uI|%)J zy;6a7e`*c$VO*2#900Cf0%!FYS}2_J@n%iGjJI(`teivedu2Ogg#GMI0pS>?@R2|2lcZm z-H9)$QrUW1zu1rmF(*y9#k^0nD zd}5N1ev3?(jaBsN!)W2PLj6AXe*oVwJO7B(XPzvEXmVVCtT$Z}1bxOUi%YAr^j!3p)-fjCYwBc5sb@<{(l|8LuOG$_qRG26kQYEhq+cG#evz=Od(4}&Dpu&J&Fc~%bF znwLS-ItNzKWtzd+^Cm>mWW)bd^!0by(747up8dZWn*8kuG)XtO1Vlq@KVxX!lf@A} z((tn{lVEAGp-W4u>drQXft}(wO?@!<=@Qg3Fat!`w3s{ux4C9jyvfE5G zO!D2vv243x>YRKYr=rSfg}8g%5MH}E#J(4XRb7ht$|lIL%JVp1g6%TIH>QjCdKwZU zIUx^DvNJBzM$x0GVcmUByn{X)l8Wz8RfihZ&*#ogPdDsdz^sf=84gY=hBzN)I01$x zeYD|RgHm8sJwvX-NlZ;Q2<^b3Ab#>udap$1>3; z(b%TVFo;R*jU86j=S1OWbax`VkFaxf6QkALdlHkT)aWtCnQxwxZ4?+|XNRARojY(R zdtVy+9?Aixrx?9j6fw4ajU(dNPbOS2j{bI-E%&`~))nSRT1Df68k^bJz8gdCFef@~ zw6ny~Mv+n9xa8O~p1PVFW4k7B23u`4#vbDim(()Gsk`!Q(8;)_Qw=Kb6=Q-6-<{X4 zXx#9UXNa8L#vT2gfG4$$yT>2o{lkoV`glR4E-~(#LIc$a#*8VH!c|GetiNXS41U2z z5p%^(OwebTdDUmOI(JatThO!nQH>92n13tz@I< zzTf2MSC=E*ebbBuPaxWVGzIqM_B{PfbK++}oQN}pdAU;s&MY#mI1&NTv6U$?U@%1Q z!FI+UH61DC4~M{XbSv%N6Jt8FIgV-&XUfekfEf48l>7V)8+b3%g;n&+@(|O7tA2dI zK~tW7FyD)1*(g>Qn(`c2{SRDh6ons5d2ZEtf0pU;d#V8btYNw~b^xFWH{GpB%MSUQ z9(-q{_8m1nYFP|%wzlc7r#TSUH<-Q#Z{hpYUS@}+Qea%M*|}a3CyXuT7B~323pwVW z-ljn83N^Q_&-*&mF}o?tSQ9VJeNR(8`n)&yzwN-IPY3f5$iT44=21>CXeXH$IX`92 zUouDbVs2~p+PUVrorP`8QJy6%^7rP1f?}Q~_2$%{sVd#4+bC2A&HL9i%ZErfV$L-3 z#kEHa-iW>Nn7-h6ftJ+Sdce6yMk6(^c6xp05hedcR{<#*SO zA6(PPsmYr=ay)n&wN+qZHc}X#>wReOG2q1&wjlu$>oV1{noN| zdUs$~k|n)yD$jtA8P({s#+||2lCZ iA2^J*K3uK_-HpNV2b`TVlWXY%!b>8LmPCrtv;Gf?l%D?p diff --git a/data/translations/pokerth_cz.qm b/data/translations/pokerth_cz.qm index 9c7944ee949fcd106096552cb9b7d204874e3474..eea48219a3224906ac8b97e9bbce5de7fd2efa36 100644 GIT binary patch delta 10889 zcmch7XIxX+*Y4WMIq3xzyF$Q*6;V-CL`BCgV#ARcODIx=pny1_5)j2MYJ^x(tk?@G ziV8MR5V3bf5q0d{vEzMmGULpD-h1!+dq3R!Aw1`t?6dc(&suwjwM%86?#Ybq`vYne zyb7kiC?WabA=Tbo)VC`+gh>9B`fw`3v5a3#2BDAQCTi< z2+_NlM4~97nITqOm?j|W9Y-YYLafg$A|pS5Sf%kqK#?kxsOLJO-&zRB+`ADC9!AXO zcL7DpCq$!;6RY-3K#`_Di3Xp8phvA3|BHaE<1H(8*C^DV2|NJS*k{EP=LHlgeTmzWNOZ)BxN~x%6Dh=9b0sRcE+9+jNZjvf#9Aqd zdpd=v(4BZ0#-FQ7y!~}^N4pXCsraR-mNjw^$AAed%0qQ4a9rzCAu3% zynj4QIGgyeRHE{E#K$bg_oc-Dwt!gc)x^)`h*e%<#j}HmUy_ge0xPz@BA`fhmiR5B ziP^m&ekTO}BZm0BcYq&A5;T-3Erukq7lTw>DAB)zhpnC?BP+&qXro+It( z_r#{Gp_(bLi6XaBZJT_e!!1c?`xb&7CCB88M6r{p-g9W2oJ9>p2BP;8YI^o0F+~k> z+5ecB+?Cvn5RfmV4#^FOb=yci(@qct)}>y{@t$$#SL$`5f@qI~dcSHwlrt3A6*!mr zw1ou%`wPgFFRa)yiuwdVlS7}VuW|{oEf=Y85pZi4>iY^lJ=TNz$Bu-Hf~kMfY$B(9 zz~e+~&D8%9<~@0eyb?AM740LhX<1}s+Wo?XNNFUmIR}Yt|DC-1K;sfAc_+ga=VQq` zvprBu1M~6x!Xp~|^HO599@5|u6~r8sG&t5sbTyp@CuP8=n`nq-;rJ99G8YPz%4kTz zWMF3+^6ePWosZ-*bvn_##^h6wVI+~~k)R^B1sq_4zsc9U-=V#4kya6QqRFag=BR#wdMB;One{w9NbkHF-s&eAUd=ZQW9 zBYAR(zWdVX?hssc5@^K5={4ln3JYzCqj1e0V#gnm0j8nJ=>jszVJoh$Pve{U6OG+L zQ$mr34)rMU`aQ&s4J8?m!b0wpJRG^b?mW%eg}gr?qq$DD$cElDKhGAH8bT>ZL%LX( zOsA$1z5PaujW@Bdb~!D!pyMQ39vDch?h?v$Zb59v70UEoMU>r~HciL(_c_`<=K#_1 zibT%wI$^kxlM>gr|s6kL<&r~`ejj~8bwqt6Sxh+L{OMTLfF z!)pPV>=M%~TS~OPh}qOwMa*?LvpI$!d-{!4-U2~v(ph!q9mMWdVRp$#!+FQ8`0%ZO zY_ZYE9KOQmp-ox6?l5hWX3TBU3li~PncJc5#9nn`?p}68^^C03nRH_B>a)(CF2pu@ zu^#P^hL_GTpNX+}ZyEdb3k1K#n4!6tSk_(^?d(AGxFL)AP)?L_lf`b;5UbLREqIXx zo_WKT%5bkR4q)lF$lGZiY>lc0(Kmax^Oi5sq*nqm(_^-0Cp331XZaBgiEbva)9-VL znP;)$$p#Y18nScz8lqQA$%QrgjyOt-c^?Y1^7; z%oR~5-x8u_nIezl;P$mSqRx@mQA=zE6sanUyev%GZmP&9p&QYXb0Yn9q~8=b0hvcL z0gcRKp~!Em2Z<`R7X`IJI_1q5g}r%8Y@c26$!AgVcC zl&JM5*7czklYB%ADx!$Bu@NnA+=6K6Wl`qrCrCd((dOBGh_!VW?Vqk8y1ZO;cs9PT zAW>0h9*E=eHPPuBrNkbmh|bu3z(S8iXYP3sJK!g}%D`+zgGAQ~a$&k1q8m%w5H*-1 zD&rD~9Xu?0-tz)cn=;YI*!D!PInl>c8AMmAiazD%gE@_2l1Yihmy5;oJc#WL7Rv)5 zxF*Gl4hFH@XdDWY-4)l}fCXw-7dKFRLi(u1jiVsI8(XoX!ph$g49P(lYk!_MV%tBZ%Mv23YS};Q#T{r-gTf>ScmE!2DH;AP@5hocc6S;bc zr*}mSxVu`MY#gsziaR|p3Wr6uV3dp46t++mtlf)x!UX*i+ z5st*Vo487D5JVMb#iA!%qkHfvUx#yTFav3p$F;4B#>I9P=T>7kYKjxr{?&Y<{_b3d zI^T)W2(AlXk62=RBiHRJqE~L@y0?d^b3bweYhD3GzU4+%fCp?kaUsLc65X!Ejoq_` zSmr1$GPi_8RFjJu1cBapatT=mVuq1i;=L+F71i_uR-pcCCJPs=xFZn0(QM_mq%hzu zD;9?X5k#>sfoQ$7DxeJL&TVZ5zNq)Yig7IkWG=o|>@=O*HZY!8YBskcX&4%6M*&&q z?cC1T1J6ryX|l2%Fio0ckK-;%+ zj}BtoDNpXHvr$28>TT{Bw+r3tTke?@zTFngJ^R=dEz)G}^>T?9VrQ4?cK(pEtTW zT_?JBkaxRYO6=(&-u)#Sj+;IBPBp+_Pd#~$G<%{QxqP>Nvk`=i`ED_liRC}!d-TM( zTLXBXmFQ^7y!qiJ`Dm{*`QT1^qBAN!xR(ohyaRk#5L&SABl+-7Z_ojK;UiOy5nJ?% zk8$cw^x%V$k7)@X?RDlSMr%O1G5o}p&|K_f#gl9JIq#9@FK_d6d*maSTJduaA%D+K zV$#{^T4zs^53MNaTe+VgY}-W@n<-q5Rcf*CO9v^Q9Ff z#GV`YJN+Y&4L*EXozLk1pl=0k$6d$z7FUW{UtrNz9o9HP|~+J3QSo^;uVCfx;0A@d=)YDY_=qny&$SKT@qSo zkM_N$WNei^Mnq?cWb6iL;5$STz9tl{RR>Ak*(jNcK3_y4Xu~rFWHs(f=5^?XV5}pV=ZEz! z=Sa+j#&mSIc9JFUG4O3Q$(-57`kLGfeXPgUiIGKae~*;6d!Z ztK|7Sq}lTelFzn`D6y*4#{7=hk|=4V3FsqE-H=v!6-Z?A5RjejDb-cBBa&Q_I`#!` zG<1?WeLapc-^PmfH%pDqCFo+slcg?KDv0WAmv+q+!>7Eo*G%+$wv`2B+YU(k-Kd4W zpqGGbv8!~z^n2JNo{)O;;DvO(bcoM3Y&14VeRg99wX?VMXKx6)-yj`+wKZa6t#o7t zERnENs?T>LR(M-#IDdy|d%00MZt8YozdK3C9YnWl{7o9`--_76`O>%^2(J88X+kNU z&v|OawZo;;wjCw5IaoStOaQSidTE;S9eTZ!(v`oqAac`7H@J8ai@7GQ1mNV^`Lb4{)VhpRy-(rjjZkpU+gcY3&@Pq>&om_y#(Xs$aFg(K-puN(=?>b z)_StWDn$3S_p+vMmzemto=wm_KN#t z?u$x*f5@0P^p$9u-{>1D9pJ_6K7(9W3h`a+Hj;^|fq}8eAXvP3DgS zD{^`u3n-}#uK!IIaLWpaUt54DNEVth5TpXGSdlY zv@=g;{v8vZ87kWvw-DucoGh#P3t}@?%MSdyidgmOvSYK7Fp;5-E1n~Hr-lP@a3GWSJq1ll56k=GV1i9r zARiEqiOs|0K5n(JyVY26u~tAfeXitYD*DUkrD~svz;6 zJ#v4cN`=US@-h(h?(*>HT<}4%JaWQN1k+)8^gSOGmk29nxX35C9!DCjkx!W7jpx}` z%!rgv2}TjhmdWF5;_#{7Xu0tc=G*gHo)|e8v2#~G!?+tqGp7V(k3@3g%qCqyp?l>s zCr09M=(~LOR1dV-_vC4d;?VOs2*^4$moMMkjo7mK@)eKJY))$+U-4lGQPqy}RRh78 zzl90N+~ehI2n+4sDPP~*gDAjGo|E89%*|eYVhb9Nbt&=_hnt}m^q1#*x5K`}-6$_8 z7)fl_7J1<$NUT^bph(e2UU&k*lN~EBTGaxa-avkK@H!lurpeE}La>FHp(EN^%{KGPII0v-yk3Q&j+f9>yc0k&F{;r@Hl+zxK6mlD+-A6Bl zW*0QNMcuSD)QYwTf*I0(F9pOTNvMSmbuN?d{QYn0OZ zHLz>0YsI3a%6i70=SifAP&N|5#~t02O=?|-iEWil-`NrUGEM0m3Kx`SDP4OZuXA53 zJNh69k1bYuw$`FSnW*gcb||>NigHlrh3Mx;Ceenyp+~iWs_eTDdF^8h^4?ZkdE? zdQ7g|6@>Y|k@6rJa2{w<9&cEV9oBQBGGC79{5VXRA9@15ic=Qq;F2TPm4$8KvqBGL z;fThl1zE~7@j1lS98{KE9Z4+s7v=S2FCver%3C*U;dwjdou+tRs#e~;8;_RFQF$*2 zLEH14@^R98V#|9fKh&}#cI`KnD!el>d!4G%GhiiSs&FAv%~Dmf(~yX3uChyck4B=p z%I;GDj?Yf3>~S>1b~RP$8hyfcyjHVXx=BFRt%d4g z$zYV}7}Z-ewIV)2%{y^$MZTK%wpi$pT3Y1=ir7)L!qIphX_2T_WP*`GAE~QnvC?Hq%&?EYNcYmf<1-%3C>wW@mLNJmh%LT#9I56z}nJ-#36zwwxQqRD`* zSao%xmj|N%clGRj)6h9Zsh5NzO_K*$u_Q{pw@EIsnOoHRjOCahHC&y&4w^lVROe*Z z1T|{ZM^`TdF+Eb}AG%B|BTJqC=qNg*$?Af6FzHEebwTk+q6C$?P=SeCb+zIdVD-;v zT(SieY4E)p<~un@UGxSE)<3U4<2R6~lB4=cB?$WDt=f3=JAD3hrut6nQevOO)i3X3 z>m*sB{uHy8m?TV7eQ7z-QiG;;R~*f9PMUi4uc5aq*0el_3BEH;t5@kbNc>sTuEAQO zh{GB;`AnqSH%-4IAgno~Gy^VH$F5nc8Ad$Of*P6;_HD7LE!OzyJcx8-jhZpfkY;;R zHRBE~LfsD1jGz1#=XiZI;}^jd%g$*gNj{-Y2Wh6Pd`A@CR+CWgKGJB7Cb>7V#q*XG z&+ZgZq>j?e?O6sMIiN|sT#9jbH5nZdTT|8v$UHu4c9=_uo%>ajrNX%H#)X=_=YK+e zU(n?BF9(A;XpWR3-?Q3jjtzmyt|~MIQHeyAlQpNDldw0ODIm+20ip5XY|WYRmiH%V zZp=g)E(q0>uHK46YKi8hXA`2;#hO17_u)Wugx2Q70itHBv^FIW=uxKDc3A~t=F$vp zb!S)X@3XWHm9dvwF<#r$*$&5R->g{tMBDsf2o8_FXj{ETuwEIYZG8@wxHnqc=D~bo zw{o@ZKfEB?+)LYKA!6yLE?Vz-?}y^o>tX@f#A@1g;Xe`mzEhjo zBm=P_*XHf)i5~E}_Sh6Leuz+LPh3O(7cbHl3_J`TDbt=^0)dYm(O$ocpu6{0du!Nu zY%oas1iuqdNL}sM&KEV<>nTD=RJlH;pzWsd&JJ1Q?DAY|(K{MI0i>g7ilAV8bod)d zWlU}UCSeZp2#Ug2WfWs}k+LeL^dSw+0aE5$H$WH~LP4lA5qKdGFNRTwFnU5(@1b)U zqwKO@*g`iCa-y)9SUuvW^CJ5t-_) zZ(;84#q3N~f*nnBg4>!4S~87UH;DCPXUw~Xv!^C)sLV9!*WOtpLUjx`j;5(&14QDA zf6bbeGb)mqLVUw5OUv2!f4*DC6zX@tG;l;e5x@0cubFa2{rukwQvC19n*E0`St~~b z+4OBmePN&w!Ll*9iiMd%ac`h+Vov)fl|m*!#^@m zA061+5N#T@pqi;$HOICeI%19eS5?YYTDT4t>q15aAACE(9l^^hqJ zQu*OyFljGTt=<7o{_6^EmKE%yBckgmWyP^s|`g;d_cyiq!*1}=>) zDr9wjyj1D%Z-+$xctK`$g=yetdw0kGljES-zZcT}aN(b8SyZ_8u8YLIA^H5@Z1q=I z{*XXD?5nI0)P7)`Pkt#^|i66s4OO90Cf{ zM+WM^3l>pBf(#M33k!*|N}Szf3R_ZBSqB+p5jl(^%*HfU+s0;aU}Q{Sq|RF(6*Vy; zGQd1=HLIC@ERDUdT1Q1aA&Z4jgXnLrmi5$!h4`Dh>}B@mCL38Tv-dXUXj;*#wmD%V z^UTJbR@TG@uik}i1E9Wzw}XCYq8;oX5gi>86|C#25422_xPjHl9<`T+De!+SLny>9 z4<-nLIec(^lKxItg-=Lev;hnqWv+C9)y+Pg$9lKy)Jot4i}?%?)Z$aiik5pnIK|@m zze&+jEA-Ujhb(o?U0<BMkz}aEAIrt81W9;|iD~ouT8sh!Mu5l3GfP1SdmN1PJ zA_=a-(;s|`yBO36!#~7nZV|^C34%Ztt_=*(=?wuoP_6-&;{qeY^@c#s5FHk49(a+} zGEVz%C9y=S)%*Wx+P@9^UuF8M!lSG0h<7|ol(&+2cYla*C-L(m zhzfQS@4Ex{=Muj>lvqnE;CzlbwGZ*7Xk*wtm1D}2&K4BU$sXy_ju;7aQ z#Gk!SRB1{w&%cQLe~@g&O=8~q4J4nHNmRFz-fD0(jsI~ODwdJ+ z+Vw>FeaSg*zn<8m;p8%BC3L)xT!PmU6|JR->&6mYzd^2^kj$MCq z?zZF_51WvV2IGkCMu}u=elc*@adJ(^!tWN5>qUrsO*&2TxB=aV!+A1^9(JK=e_-CX zQJ@|>NVq}^v}fSI8uEfjXl9y$FSd$gK|1oba)(P7kl);F*vLr=D6b)U@qhyLmmryu z6f|)q(bfsH`851J){VAUz*SRRC?u;HB=mr`HMrk7OA612mz7)4jtVS5x0`n88!k*& z(e9ZuiAiQtymdEXp+OYy8cVb%kdCg${lX@cwD}y-(P~QV2uV$GrE~81;Nn9f*%U_S zLTrdESJI`KQAA(+Q%TAkqL|fmhqohgTS8^OV*bgesXF;9BwbDqUw0tNT}k@q;h99+ zT*!3B#zk@N6nVtIWJp*=XbHm->~4zI_A|?N^HkW zw#2$UQAr*1{Zva7JcF$`js<`E&O%=WBAyV7R$% z=Sq=msTn(S%7MtbmgO$&NOUQLUHzC&Z21yawAzcEa(=i7zzoL4rTZEAi!)K!yfoTRa08Bx)=S4g>7VCt4oQx$ODZk4i2C<9^L`N#Wcqj2}y`wyYvna7I#W{0ZNADk-jUfd5AqN$xU4uw%<4 zWqFwp*)GYw=w3wTn-Lic~YAjdKk;C&e9QO z)x`D}OUJcB(+#e% zEp+v^zetv#<2uz~%(vxwn?nMhw{d-%qY(Krk+W@?L@cC?`?c*)qDNi1-+41)GZu40 z?jpjy8pHk34-$=&absKEfx9x!tsZV&=gG~Pc#SCAgqwHf0I^LYIiJiDVwFSm+~RRq zN%;b9O)}hTYz!Ar)0D{dJr_9TEfH5}VACuv@H2FuUCyn03_ss-j|-B95Iet?3(AN< zB(&kS*zm}rrrfqdfABgN&SB@?j}2VuFOqfW%SFuVM3gj@+c^yL?bQc!J4a*?c?~tt z$K1e`86p|~z`#T2xSgTj5mN2A=nhzD(o-(F0PeM>Jqjl*;LR)pe~cH&o=oCmA3`;M zmve{4lputU+GMDMJ?f56G$XK)J$Ykij?k{#~` ze#N*B#6sS;1!3*)M~P&|r-4w(`_){+HU=IS$&POar9|!m$l>=&Pyt(0bH}Y3{NL=A zctP$XMY86P4Q!XqC64tc=KGdA83^5XFcry6>$p=ZvQZPx<%$XlG4W=RY+5LH<7qWQ zsux$<)QiZ+!@!kaMY0a_xH}hM^|b-q-H!oKc@^fyhFvxXN%WWZPu!>3Q5g;mEzPRuc0t;_5h9`zglN$)U@LW?bFpK^O;f zZ+}K3>FhDEST2(JO1SsU@Sc}F*cuE2^<9W9$il_1_<;wH5nK2gECk&_xZT2|;B(x+ z3x37;7w)qY0#bGi_oE>o z)zNUv)Er(r7bX1trF;v0FswCg5#OpQM7mSOw~y*aG&!0#U;Y5a=WyO414eRw9&c3! z-K9_BtvR0n>?+Tl2Gr+n^@9!q4|a$-oq(G|Cq9wFU!;$vd)p=Gc6J?k)GNfN*3 zD0aHgnLkj8-)COr56)jjY?lpx_&n0-*8?Kiv-$jyfOSOsjrhd$Oro+nKFQV#qSx@} z#=Ro;B9zYvgUJ8(;4|`j6ID&%FEq?wwVl7Rc{&Og{bs&U;(#nQjW2CAkf`Te{_f<1 z@ayG#RecGu;&A@{=!LL;XTG{E+|T{Gft!bkWYdlLnz`MG?Q!92*MtzAHQ^uivBL?+ zm4EgW`Tv(E{0mzpu?~M5IQ;9Emqcb8N6j`qO4E< zu|x;9$bPqPkJ8Rt_UCcLo9iwz`=Z70|0ENcgXd`&N0e;#T@zF`jtvQ;zSEz2*+ z)>xe-7S&j`7Uegq{2~jq@JE$g-#|SMoo8fQe;op&bCqqKfe)R%FN-SJi{jH(w(}z% zEE^7;CTni@v&53n>E-M@i6^9R%U7N3;h;z7HR;tM)(rl33S$2@v;#^t9z$z@{ z7g^;6EWmoFtTw}#*oX+(lSie*JWXWJ&)E^nah1K?3OBm7Q}(qPBbsY1Zxr=`*a|m! zfxQSGMOk%zzQN6E)KCn8CG zmpdonKoj~!KEV+S+?ykxc(*5Xe_HOg9}<}UTs}S578RF7uJ^ieAEEP;e9_ty#IB5% zFFK!2G<&;zg?kTTKKb&Mf5LbY4$9Y5;rAsz25x>JUzd1^*k&jBrdb}u%wpw{st-hC z2Fv$M?nY$0L4MfAftYIxdBT=jV$Ckg6CXoj-Wqwz2p*CdCofh*!rBLV`Q6A{sNo9a z_wH$lRz%4wj36TKmh!((m?FXj%BySR5bMXtYlX(dYRAfJ5z$C*FMm|EpV-c&@|X1j z;>JSx+mkv3lp6W>d>C(Xib5LK6memJLOXdqLTPXJqzX$3toYCng{1)Z$r_^QnveTC z)QY}^2vGa|6#d+$L)2eBSoo>K?;Xzjn-%^I=lh+<6#5OB;3Gxgq6W@TYwPNJGCqMl&FWOv2!m0{@R_$!jTzCsatPjPN?EYbJB6qh#z zVxq%}%MX5lPZZhZ{wO++C<^SWQF4VV3ey_qDN+%z!;^$*n~jO}?ITRb^XzbuFue$pt}GPX z)mZ3mrQp6!zaPoQTJX#Q6GjRPmShq;lOQaqamESfn}KWF3QK!u6FYiESnB79q%p+6 zwNnJY*+?Q$K7xO%XULXyg8nw<**#1M@Nt5Tyb?C(lh6sN5y|p92^+f%LS)PqHZJo) zA)^t3^=s`=4i^iN+gGBQ^qWZ5Zl19F*bri?bVAJ2_sD)zg_uv{iJJc=#EwNIoE{{S znPdnD2p@`-32|NRh(<>X>1$kxwdI7I1k?*#TL?K9tPs+h3b~GbaV}5`d3kQc<~|Y% zR>3x2FB0?(7wqv8p&$o8?71cs#&*L|s#LhF_Na6Y$7}vN&;bt6k+BsJ!t%2Wn znJQESL$uq=g^DCMRL?cSGryz6ES?(}suSuWtDt));dMz*EZ~XorU~kS@VUa9QKdM} z%Z0Z#*m%||z3^!lDwOCI!e?iWSerS**Yqf> znWGH%Qra~brH{VaaIwl)IXw9QL>H%Y7~)0j+8L#z3q?sB+ujKvc`TG9nn( z8~0u*x@)h&%6%@$L}Lq-`+H%+j62GM==rcU&z12Lv5{(93Hnfy;>@`Wm5 zBR!RABW>XSQJa+M_n^bs*2;@AH)3g|%(cCW`u>CR%7*5M1DrBH3c8z-tGxNlo#?L% z%F_8miF$-7D^4}+?1A#d>XEo_seCEZ5=-8pd@}W$ITxvKou z_bqx%okg;+;VMaY^9KJPrIOCXne0oZisP`-kjpCGClh(Rt4h`zoLZ@pcR;V^%}bH& zSfs!Qu~^nh|ymLH6X{`je~o(qX)mZ^FVhkM3OQvK!(TRLz~ zHMl2oM9~1%xPf8lD{fRdCFzl$3*V}yk9~v|>V4Jp%cTeq&MJ>+i1^GXm8WwYykW6w z-m(&$f`1puo|&qa&+mqo{|HrJyKcntCaJa#u0o&BShaQ7IULtVtHQfL71y4sB7$%b zS=!COv&%&?_jFa%J)A3+x4 zs_c%nIN5wt&&eL20%=Ox=I8ISPgZwVes*&I~-BqqcMOgfV%je_v*Xh*&6+nfx%&b-a2|e{3Xo zk$TjbOrkJLwL|wZsCb@wQW&z}I&<~ZA7|ly`Y5%}RTxWprFvECeaOpS)qb~O9Fv_z zGS))nP#wVle zEzuaI;`gp^G)8w|tlvIptbO5j7M7afl+T5`#r0$;wa7Qhj^|gPxHn1Ao~9OwMNmkXt93Owi$#@CTF2F>rjS@$W+_?I^M6a z)b@C@m)K=LZC`UdKjE&{R@eydda50D5dmp_w06ubBOFfqX(JH@0A4v+V= zGuqh^wVS7%RR_1){X)AaV>{AofYy8UdvwJ-wBFmHidE;et7Ko0PK~sFdp;03J8IY9 ze|>bXSQ|6~Ued9(fhS81e6~lsWmq-h#T9KtX%)`>D((K?U|X{?wfcq&W@@WF8C62; zRDd>FjRzl2*PgvG6#0FvHfwY(BGn}A#VYuB_!I5r@sLESwKi{Y08x`5ZN7CNj#xU8 zEUqhv9Usiq7JE0mZ>hbv5$?DAt+s04akO-0+Sh}-;3(&${U;!W=-fQLu2If8BCA+k zqY|vB#7oy~S3OaBgwDviH*BIz*S-mkRDP3nme$7TS`~|Ai8@`^$8(4+>aFYX7RH(} zP1o}}B$4l>>-8vvSVpa`-=|kZ+sEsE4}&dP`0E^NAn8-T>71Q0Z^10xq=JQL)#__> z>;15U`zl?C6Lk6coi3ypJDb;D7g6hm|BT$$#lTG{>AvpJf}yBteRc6&_T#u-uFE<# z3?*5)?y{ehXlY2CG*SXg|CuKWRPtAOb$UA$4>lkPdX=QOUb z?)yL-eAGUFU>mO-Fa@0m_wL?4d67w0ZwYH1C77`xQO;(pv6A^yHF+QrJPTj;S8wS| z@(DlrmrK+uGiIe4h*lm>l=usdvgyG5lM|gKjKwG4m|`MHzBaL%>8Ty9qMkH_29lq6 z-HW>6ztz_Nj(cMKpL_p($A(P*z0-sG(4v1wy)Z*}`t9Fw_y4;0f3G|L=cWI9TM}+lQjuJEZICM5zfzVw zv7*c(bp^+wRjG-M*zdB`;YKX5W2(-MwQZSt)0y>WQ9-V(Me5ZFEP6od%SbjwlB$np zQ7mfXZnh)!O$^)FD)nv(``A2c;1vjcUokTckLlSa)vcI~Riu6_W%HG(haa#J-BV{Y UmNb$?l{A$cNR2U){N3t*05)w+YXATM diff --git a/data/translations/pokerth_de.qm b/data/translations/pokerth_de.qm index 70d4f2b288ca13d48a3f9b7e409701d67b8a94c2..bfb55de83a2232d040db627d862cb7b836bbdc21 100644 GIT binary patch delta 10781 zcmbuEd0dU@|Nr0DeeV10OW8`OqeQlvtT9CPU6#pU7)PbjMkf-JQzC>cM~;2p#!e`* zQxvj{B_T`pC9;e?zt_3Xj9I>)KYpL@_u-M}eeQGL*Y&>M`*oe!=j0z3DNL=hf*kW- zEKNUKv-;s-s}A05N95u`M74#(Rc-WF6F+M@FNgBxItjy7KGA(C^?Bz|)e(edWQpH~o_Oe4OqDN(*$B%8L9_=gLKH7h0lX#&xi z86?Q@{BI*ka9IMu*V^bZL?l;RPD0ZXVmEjae4xeak4z+VX-celItl)Ji0+n=5I7Mk ztV}`#wD7=@gt7DS{b>@$%^~J9m4ul*u_|k9y!itO3v=-Ks*OGeMRIi-kg$0eF}GzT z?0~=@6eR4q1tyX-iuKeo#hqB!VbpoS38J9+)MW|YGi98kE+@)~_P(R8FWrd_rhtCnLF(2F8VEWj zlIdR9*t83E3&Ki{D5<+@A+f!3>Yi`q6zcvGHqH5gdd3eW%Ck_<x!x8 zBaC}mM!gb$B`Of8*W?T`v5E)93(oxp^_r1QY@Y}Dcf*P=_>zALOmXQF`EP{dUHXao zRvD){jU%ZK^s4MkLUPW}HI`y|sJh2(|pNR$BPNM#~zkpfP z|I0C$IDrBtO@WECC?I#0i8wbe8W1)fwq-ORbrR8IKN>i>57G0bG$;g`dG$LDis(RW zLn9iL{Fzv85)Il2pKyx+*AczBCX#K8w=q{ngZ4x4w-sp65vcsvDl|Cg0&HJ~pn<8m z<}|DW1h=~Zns9M#2@P+AiMFnxNbPRK@eqoFYUmd~kxaSX#%)(=bOYpsaA!&wi7<38 zr=)9li79VUvgs%^WTBLSITHx*KUpa4<2~ezeiclh}S2+Bj$h(f*e7>lA$dAf0y2*hiFGN}08x zvE;h6FAx*XtS6F9DxiI7-b7wnIvQ*tR`nni>EoPUL{06PvRsSjz7xsR z+nILpBBG5B%+7HIv6dZ}-7z>>X(Fqz8G=;U!5qA{6DvE$oKp~nv*k8E9w(A5D>bp2 zpJDT`^~|jURNL?r^O;aeoJ#`pIk1g5{sC*%%bBS5T-N&Ra^e&lSetg<#4_r$PR$X9 zS0Ax}xOgJZmh7ib5WILii)tt#c4!!j^{PqqbPpT*u7qf<6N}%XCFanb%_&VLDlxJ} za(vdB+Og%85Vw=BvDIovqOS#P$BjWm6K0EK%lfn3JFxP`7g$boZK9hm*y*?XiLI)_ z&ioQZoU4YN7giI!h!x2$m9i_&-xFKkl3npQOl6R`hR=SMyNZ5pwYT~@U+fOuSn2ifgiDaAHx$i19CK}P6 zYdxrdXz5wb_c(I<*3Mj;m}{sdOe9x(FxShPNn5#c0g3I279Zyf*ARZcQ{mLKlgl4@7@sq^(~iX^ zVqZMCv(E1@K@4~HZZBdvF5Fdyj8^zPSD1@<-8q>nTGWKdV>@?;Pa<~m827yMMWPm7 z-23 z8tYA%z~zL*UHJh{v_VqW*o!z>HHr5HIL%9`q-)_FVg-XGeXFJtbJ{18^YD^{l};sc z&`2VziR$HNNyJgGtd%4-uQyWd5F7J-C9zkFh^>s1Bu7<%z{@35{E+)g+$AZ`5r#Ee zNamQr-@>WJN#-uc0NXA~7P#3H?WikR5Z;d{s6! z?IZbpl~}j=yuA->Xg9&e z!fSk;yPjxXQuwCsQxRS-`DT^TusGh}eH?cY%NoPCc$r4jSI@Vs{*{=dE#FpfBR2g6 z-~K9`Rx`rHcW41sAFImusd@$RT%8|UUP@g3P(EznIig$B`0(AUiS6>_V-6J%=Qx%( z_Ju&dXY+{}QN+f);FIoFBpN-APaaYRL0Z~aWdNW29zJoq13&oz^1${mK1BjeKE1-H z96(W;kCZEwW&gFF2C4nvWv+w&X!t@XVdzwvN9vEG;X&1q%C>^p)8Q~NRC@8CM{ zJ$M=XK&*mbW04d@uCLG(MD?r?43>lGB2BEw2N$qSg&cnKYzDryv1lX+CyM_CM9Wpt z9h8GV@LL)nPt<;6WBfspteKyU?Xvi-eI^oH;mL1L9zay5o=DbF$M1+gj$SgHKa-bF zG@h(P{7>D-UwCu}skbM8xndMdaMwojd6BHsO8&}0dtz)JfAwt=TC7HVp$}}GSHKtc zn1b-j<_n=xIwj)^kHEY4h4O_bps~zUzG!(ZVw0QmH_Q+y>pA}@8_%6i;-7jciOrb9 zKjTe1iO#m;pUGg`?Q8gF@BQ%kG+*`=Rc-cQ8z1M2WXqfLuPfoj1q(nY@CsNDtOB+K z1Heth7Fs{&6SFJ;5tf!K;1ke#AEvMb@bCK}f!&tzUrg4_b$7Qwr(u)Vo`Q7aDm0^q z1=(ICBBg^MFVmudxF#s4!s#x#3hG4&*UKtFJMt{i7hj=DDxCN7VWDb8sCIXnP}72p zXsj)`kGqYPX9yk#ps7M1p+O;!=o%q3c#C}SrmNuNaSiQv1Ht5Tt(e%?4MM9IXf$r_ z5n4MUgFXLE@Lk|Sv}>@?zDFvtq>)1Vu@#8@79w=&jOU6^2?5K{$&_3b1{UO?wQ4Pd zwl)x*Z!Uy(@g}<8MTiJN>(#BZ5ZU?_I-gTQ%L$$WltXO!Dq-dU#P7`+!kj2Au}}HJ{L_`uFL((H zI;|t-EESg2x{oqlSy;Lh6Rm6~ESn6?KAj*e`xPsm`n|CF2JX*lEv$){fEqJRSf4!} zDcw{@yx{8W6gDJHM%(>H*t-7^5=<*$mroRN^1Z^ozNN&~YbYF;3)O#e7Y>|iO7yv^ zaL_uz=YGP;83tl49trteFI2bI!sV)Mh?=JfSASZAc)utVmlqJn774d{Mk5-A3U{i1 zg!i|x(X@_<7i?Nb;qFLJVtIB#Ng`6_#UF+H&3v&{`c8QK2#rIVT;ZvY5;@+{#%ULX zr;mpcCruIF{Z>r0DOxJ&gSLF@C8-?I!4whFiZ$z@f2d^Rf&?2k?hwhkG!bcH8=Fg= zJ8vWMxoP7g52?$#J#eBjseUm8c>O|JuLV~6Y?!p6bz?e~mo{tFhv@JOY1{5K(IbwM zcG~h9KI16ue#VGQ*;d*s1W|R1lZIY}54})HN3v2P#}(3%c`j&fFG|BJqRXDrM;g9< zDB|BRK^nPwBy5%=jr?>1J=s^09JXjizi#MmXWN)=Cz2&klEyYXil%j~bi#0i)2hMJ z#0GoNu*6Cyp}*&<_LnAmOho&AR3ximl+J3|9$T*u(pkfY61y*vTJn~osjVSh_|}96 z-%gh{pqv0*xf9V2py1(?m?Q&w} z^`%GNxxptkOLODFwUb4%izU*Ny2`|QJe20QgAZ&ClAengNX&nZ^s?pGN3#vzO7*kChlv z;xn0@$gMuse47i_wJt?WmC2%2q@4ZPYIzOh3#bQLr)y{^oV<3sG~Az9Rg zTSPm5l#QCSjo3$nNj54QU9QPX79ZFMDpASCcY<@BS}RK|#{F4x8`mwDP2PHx*zPg1 z=_7)Obvz?mpn8K2$5XcKCr@;_Z)NMf5q=X(WSeJ}5NoQCZG8aEEpnCZ?J7V+yzHzR zn)a$8ySm^v)SPFsq9QHPJkt=_bqAR}r)J?AaX$n$uN4Z1Da(FT-l@DTeBhJ3OI9d0Cg99PbVJWdWN9Fr|T7lE9m-1uNlZp1WkRQAK1x%D5zc!KB+b{CG?steXJ>~gX(9G`c z@-zOh>61P3Garg@BKKBaJOrAsT$VqZa+x?ypn`cPV@uXvA-|JGl-ysT`^f}}Zai1m zO`MNB@Ig^G6OuU%u(8-d(YkgYG#<|t-A`d9cYG8*aUj8x%M`sQV&Fwp6ahX?L}`9D zrcV>e(gxf3+hN798P3E8l_(5&o?U9CFq}bk{WwJtsD{9q>lA?|YY}_14ZoJ02CL08#m2UjA?otVKiMaCcz)~m)f}Lsv;p2Md;{5#l)&O zbnH93lpVC{`0D%08}G z*U*CoXAzY4?wruYK7usO@!T-l}Z|ma@wPdQen4^IPD9ib|+TYgHu-T?TWHo zPw5hh=N3psve`*W@4E1*V+LiT5=6_T={A1ts%$*4fLO?SW%D5tqR0egi^G!;|7%>7 zzHaWs_8d|ATD^5fu#NNkD!XK?Cgz)_?A0E*npZ0Q2SD}X*NbHB-YW+zbHl#Ax$?)~ zn-GoZsT}lCizC<8HeO$%44ecXC_AYP3d3`U&nknv-$VFLSBCnZLI;$mj0&rT^S`

miytNj(;&V2>QHW$4J}Xmu z)x;(hLMP>_CYa}1oN|rei~9d- zC*{V0SfTS6cN++PHnPdubN zB84+OOi||eoW=&@h4SRo%E%)fm8UGQb*hu{;^ROZ+dWfWj_63#EJJyH2Q-k|M)~v? zQ#Vwnk;>;%sP1lU<;&q1ICqQk?X8Ni{RicTa%bX%0m@I!%OG*CNVflz^3%ZOXwPq{ zxbNH%UK>=B;5s;N>#E{;2)yyNN{BgxgN^MfX;W}&O_i*cBX-TTY%EMvxplsPUYtxl@yzi}oStWbH4Oe6N)%O8#!gDKB?HcRQpuAVL zfBgfovstRXZRVme$yN2+6-@N-h|19CK59dImEqWBwB@^1L5p_cC^t?O60i=@l%fic zgA+QWi{$DIR++{{coH>fs!G;-5_|taHLD#|TsuxRtMfj@ZAF#29&Gh&ohm&AJEB<^ zZM>K%lFg{EvJ@4euP;+ADuxf;YNuK}{t$7xcdE@3P)&0jRXan9;Y+tv*%U?WRbSQd z+9f!AZl%gmz&SrYFsX7zo$6X;IzGFs~#u6#o5&X)jKC= zVvl;O)sby*W_((0{|u}=UnE!CbWdHySxa1vAJxvY-=dM&sdoMl1cs|!a5TfR*Q@n) zK0vjxYS;T0h>k7?;R{FI)b8WUiOTcU9*Jt2(dM7jy}m2N`M^o_;JGNXTaK%L{;~%R%Sm<2Y5367 zD(VSNE77V2sS_^2S7J&;GW`dUCic0JdP>%PY`^W)bK0k)3U*b`$-)YA8>#0?+G9`H zR6V~9RPAv{o$hr6JDZAX%RJar-9){3IwSTuR=wmYHk0ME)Ej!c5UcrAy*X$n-j7yq z>E4Ujlf~+7VGy`uNA>o|ClFx0dRG`ye8C=dmZui=zg~Cs{uf3Z2A#3->hJ1ohR+Tv z8&_qkk2OAyxL&6|-U9>GI<7u{#E6~EWg9K6M6xay)DH^!VO#w|{TfXz=lo71co>#^K5(G#m*UudxWr?v*rM z`kLYOeMGX<-I}38UD0;`s)?F#7tN-VW^@nKe^b0B&Wr>mJkuog@+HpRPLsNKGCHSC znuQ|~rn7x)yb-F|Q|}P5x#u-|OYr{k8=6ehTCD8p7tQ|6szf32nxiY{A~PM<*hO>2J_;L`{hI4vVe-Fe1zi9N< zIxH$7S`x3V=7*zMex=r}Rv~)1o!altW2FwYw2fXaC-!EQwz>NnqUau4AH_6c>n3S? z96`dGzgpY-HwWVCW@!hIKr}a6JH(|K4l-(LhwFWb+?r}fJVTUa%`s_59hir@9i$!o z%WH(sL+$8!FvVJfc7pT+>Uyy@Vc8p^h57~j-ed$?x_GT1cj zkz&OA!F=tp{!rNii#FGoL{zC%d&(;rd&8q5*~MfKD?XB|Jv-Vu0BMV+Aq?kcYl~NI z!69{R?TdExh*p`v@MGn$~YD}X>xy>*oqm*XgArOv^tDdPXeHeJmM z*vqZEtE=zjjN`RZ8;eSG4IhNzFeyOSs0`kEt)Z^*d1&I^3tf}@X~do{)3tb4O0*?X z*LE(Pse81}|1MO0_7`1100#biLl^M24bGBNb%XP8@X)fJZb||c@;P6Z*6$sTXhU>q zXOqzXPjc0zmkh-Lf=0L08ZPHP>z2L!0l!*ji)5xcy0wuV(WExjZLGHn2MZ5$hj(ZUtUi1pr*njo9MkFyb1rof+MnKeWm?zE;mE8c{PEMdRpui}yfQZNbm1rFmt!)(T}uYWvV-F$Oo1G9hNEc0PQH|x}&|C&0(ZN$RA zPjTkYcQS5{?D5wW8PcHn%HB<=1I17n#p0gvC%O`eQdNo&JY_Is*eo~ z)`u7(gUzGoxn}gASEGhy+*0Of{_&aG{AqJ#^XTmd%%gVjHUA~VH`$f_{utBz^OkBE z4R^fe*>{#BPF%J64Ix}O)@xn0Rb)@=zi;o^`2|IWMd=NJv0>3s=G*UUX6W~rI5y6_ zGPAj5!6a5eV_URUYr%BOtk0_K(2|toO77&1|J!^U$g(JqQrSdMHu3PV_NFJ&1BZ^;WO4}EmE1EJXK5dWVDQSVpXNe_Eyo% zhEmszHYa>Nyd1HO8YQkOLYzxa9^#tnep`{+UmV(~_i*>FE3P5onNj8XZ%_Ekf#iP} z!Mroaxmor9;4=Sn4&9%2gD+U8$++;&B=z;6&XCE7)klintEYg!>jMrL1ugyEcQyV0 zQjB@@ewPgY@?Smb;CK0dyY08tee;+Yqs88hIb?pQ&89gj0;s!9>6VobnS-TGJEpeC z+ps!Xt8%`*T*uO)4Rhz*y)8$5nOkO38`gob087obtna@cOlbSJ2Xor8MQ#7fXlnMq zizbWTa#kaAXc9~2YE}^S83~PrL35&Bzb!@DJ~}eek~oDqW!_0<`&i>v)Ddd8rid`a zyESO65gvwndTKAme=M$oFqq+wz#40|?^4mZMu#w?VR%HaJ~%QuHY_kY%BV+VS>rk| z)DUYai)N1OCric@*3Rxfy>BU>!hC8DL$r>?z}EZ~gDI?$V2fL8Ttrc{x#uyr;ZdS! zp?K=ANU>_^pFZ(@hiH9NbgVu!EGSrS7;A_%z{#RV=xq^W)W?N}A@LYug7wihIm1Gt zqVXvr%xDugvsnt;>!fo=q*zC{#bmg}zCNpJZ`Ut4W^8bb-rry}#zn^jwY0G9P+{px zwx^1lRo@0N(*{CPF@t>5x4g3vT7G|&Rmnp)C%8Pn82D@tva`A-Ij71VmbH3 zLH;>_u3unuY;2e@RNvVUjG-)LJ6QG1?MGM#wWkvT#g_7;Ab{22#y`jVCV(;^EI2j_ zsn%#Yx(6=u`V33gPD%Pw2lJ|Bl`Stznch6AmfDiJ zo9Qe=Uor*njQ1>0%2*S#(=nxa<1(%3AA^fkD+U5s>wwkTaZp+ejlh*Pw_EcfAl8;jch za&Ah(+4}>COu7yEKy{fODR6B&e2M77U}K#p@F8nOo;ekhTd^(S%}hx_;kIhIE>Ihz>W zl*sYk#JQBkp!kB9i-GBeuk_iWGlm5>?4baceIzwVE_`4nz;{k$y@wF|TLTJi3Z#LOiu> zfDi5aMs1pWASzN&yYTBo9wW%~HC8;YhRnFxMEA#2rz^0N50PY@3bnr9NOlIi_tunp zhno@WGK_|7${`vxkcMu>dxkA#G&HAPvgPm+ zUvkY$Fc7QDpmE*-&}}~&7qN`!%5fSWHk#;$n%uk~nLE?SZPq|yE7Qp>^c%7Lv&roM zY(jY$+)GrJB#}ihBlmqIw{%Rr>=n74hsY!1=`YW#(ETMiPbSgRQ#55D#{D!NG++hk zeaJ_5ir9%CG#etJzax!&XDX4colNsOdl3EMO@TAue(F9Ha;Jjm-2@6XT!3W8Q26)& zqP01+`h+js>KBSMZvrnEPf_QZKti4rUGIKpds0k3yzSmt+He;WXc$8q4D|E!A(qN4{Xr2{1Ow*#el;DZaVNo3P1DJ{yH z$Vx{Sro|Hd=uO4R-b6b)&@I6MvBH8%dt>}*G4v>@7LxX-$8Xyc#Q5oaoSVs%?)K=U=1RwFpYK4VkJ=hvz06`MxvLZHXgV7tR_q+d-^#C~J@f zadRW9biptLlPU@6K|09_2w|uttO(^1tC5uzy{KGjG-()t?oc3&&rWw%_!*F)|o*U7$ zGKtL4g`GO?L}YW7<<99qlyit(s!k`iES_CnI-A({Ev!V?MRc=LB0Ig7-7@)&*orK6 z%lsU%bq(3wL6AVHFMF^Z0cQO<_HYqYHSryL_0pc$wlG%v=q6FO98SM2o|xfEU(P)6 z5V4k-oK@F!q5!3l!E+_D)knFmO>B@?qPRY8#YEu?Ifv|3#G88F_SwG@d9pU%N>gNomiVq zTQ$wf#Vbx1}^1u^fwGT9mjVhMlB zL{Ch(!5kyoJIO@DA4FfL$Xe~gxI%xKnW_f1vtQQH*NNCubD8y31B~U?LfNp=N5qbO zmyKy2f%Mu#A}7m`dB0gf)Kn{*RUeRU&y>x&P|w4%1qDdk(Sni3Yh(*C{u*v4PnNBnSq)pVk*$lz`>}DdO{NWrHouc?GR$-#`g5Kveq0n$ z4JS)%G>_QPwz5PU7h>~DWXV4UA+R))&yk;bY8O{Tcjd!nQN%7U=EE~KA`*J= zk=6py_Iy6N5MB_!h>zj1@&$4umwuASEdJm(&is`q`8R&^5RA9W;LL9xmO(Vv$H)bP zj1259k*Vh!dGav7dF?l%9slrg?J?0T9UoT!_X-tJIAH?SjU+NIN+QRa^E)0xHJ=#2 zXH+pl_%{B4bA7tL#veH6Pt4{le>e&YGL!rH$ylE~7_K&a%)0RC_^1LsR*XEdM;g~~;c$Ms#H61>JA>0Iys9X?72 z*E?titA$jra+$NjUBBRcSx3kr!mhf8GM>-nqC9uYk* zH2KP_e^DnJb#C*K@S3Ime={x^Q0bOpM!N2;_AC*lw zU-cu7$X{k;iLFEy+<^bk1n(`L1GWGYL4yS`zqdH(jSE)bA!7dZ=Y`-L5N_w62)@Am z`s=kgx8lFJARy&s@!#tMQo$U7F4YmcULwd3;JnISP$WAMdwxn#R_Ra&Y!Fl{U}Nd` z1x*~>@=Ttfn^8nmaYp#r5CLn=2oRb#hDf)@32kG0Az925%oaaH@i{^;&w!C+eh@mB zLU);Mh0fLR`!Z9(&ioG2^;5y_PC2oM!vy=cI}l*z3VoU(Fx?m+IF5)Q=9w-yE^0*V zlqd`yg8R9lg6np;Y2kWdd@&;EgQkLEdLMVV!+T-+P-~RiGGUe%N+!#$f={3K#Iy=w zesmVGAPZrU`9PxLx5A>XP)R~d!Eb>MAv9U=+m02#vXID5R|>1E;m)OLLge6FV!;7I zWCq+cvx~5HHlDvXOW1JfC!~8TVbkEf#AKlcVQc#*NVh);+qU6D%UTNC!!Y307sB>~ zSn0fQVb?uepYyY@d)5-C+%hvdzLMv zjX~fM(uIt55c$JhLPowV(W6bm+4}Jxl?WGCyQ6S1{3;aIw_Q)tg`3U$67`G{Zco?^ zzYY+}>xzk0{3bjYIS1B1NqF=N+|M(@$f$!7*$fk*VumHLgWrY9;3%TB#=?^x4(M>M z3D2J)|C=TXFYQza-OR`thlJ19%ZXy*<+9PJq7Bg#9*N-_u)=FsjaGBtbF?I)~IX(F^asDn_ml<^dy^|asjowb{YRdD<0?Y)U-FEHI4>`fpZ{zM9h=MZ z{K2Ts5?Ru6`9=Lt#JZNq3kN{On_}cwW*Np4>+UbVsm&zP50c;V+f6L+iu`Wha$-5F z<@e5F0ye?&$_x`?qtD2nKDkM3?m_vBGzVh0UFEOWz>RK|%WIo3qM1Dv4PrkM3tg#b zxDa_iWxS&CyJh4?2!em>a%jBRRZRSQW!+zgQ})Z`BdC zc2e}ulo9Q%QVd;*lI-U_5?S0IiVo<}N!%?5<2P z_e?sGcYwm*qZ_fMj}-xfVLXYG6~X1WzUa7-(SsFXM=ucD_+7E;Z%<+!Pb)U5KcXZn zS8ShPi6XRGvCrCx*wo94!;zK5S`1Yj{Ra{Y_^L=ACJ;;Brzp}u!c8U^6t_2BM-7*& zC@a$uEfo}Zn?gjsy%qP5wL^qUP&}$cpzztNs1zF#`!-BbiHJtaS}LBDC!l6^RJ^Ve zk)&2BsuK0Y_%@1f`7qv;O-k9`#*pA2O5KFzh_Iw=>J<;2UsJY73c`81veh;>l>G(| z>442CP@3#`i%9lZ*(MPaxMZU=4}(|4wp4c1z?!q#Dm!to;*-6UokX}#mb^@6!)mQ^a9uy>{HtU1=-Zq%CrePh%p~!)~Zkp zG*FrK@H@C#nSCdS*sUGPg5i%)a`jRcred6}uFA{KQ03M3%F8un*chu;mQREvLIOo* z9ZGENB~ke(ipXb&sGneMAj&=LWd^OB3Bf-vB+OwrY@1(Dx#BMn_8vbo)jJmoG-p(fu+c{g4wq zG?-}oanU2pkbs%Gi(cozL|*h+kO{vR#03?u=y0NqjBFt;w9SUQbP^W^I^+6XBO@n^ zfzy#hcHIzznmQsJQj^enz&;$BH`2y5}8?; zxQp-%Kod2jg-XBwpJKop$jSZ&twXttX0i zBOu!CkHottCm~HY5T6GgBxaRr5 zIIu_MYmWB~&LdR*4Wfv>ja4mE7ZBSSqY69P9(919k#{O3vQ=TK=mDWH(rnen2w3mI zB$ec@b`h$ba|>l&M05?ZYorA)Js+UpfOarNL5p3f-RjI)z_X? zm|%!Rwrzl#>uOf-|5MenY3Rx7^3*(!nXYfA7UpLnkB?T%ZNcfaYDIhO)l?@)WNGcx zrbDh0$FEZV%0XrA2dXVv+=1kD>P{a`hz6ypt!6-?B~fbIp>WS53iWTUu%+Yu)dOtw zs2{x4WBRVczT!@`%Si+BbFr1$ee@G-pNrC=j3M{CdP@LS`Z7#?cnPxJ;p^%XUKsG*EcF?J4zGPwXLqPX zXY*N|E5gVgdZ=?}pcFd^i)jND9P?5abcc#kveg9>J3?h=)kQ(+#MWe~i*HXN=5k4W z?`{j6cU3>=g!3zf>W2@5P(i8Gh6*ohV%-+2pNCcx3m>Td+`WX^kBYw(Yg1-IJ^6|Hp&S_5N~=SwJ0n z!XX;-VAxWHO4F$|&fWgfbh6ovR!?crbcu9F;E`#pv$0`tf3Kz+x?whdsHR5`lxER) zHTJ8`urg8O&>EcOXyh3Ojf1lnjOo0lpPwlrVt_pFX zoVu1m#iKNTtwR=!8m^iA{WNljVUA}0B^b-4RLznWJCT=PX##J+I3`+3Wb#Eu-n*e$ zp85nUS)*C&xDm<9RI@e}D?IXAvrgs+BYvmZ&=(@se%EZYI*&f0v1ZFEhTX28HCtbz zReP+`>>q_{S}|R7*z*Lu!$NapxD)FCOZJ*$-k51eOHHEB3;fVfr8()1P<(o>Ce;!~ zWHDTm{?->em%}8o)XkbR4CmigN@Ssqnk<`axa$;6_6Url;xr}aaX%o?$l%8kS?6@k zKgBM{qK7meP-C*%Fs)$D!~c(kY6a(d(X7!b8oxoS<)T%!y9(>~)2a?6;fJha+NLSE zZX2O(dg}&u$7;1!i{N&a-?c->#Goduk;rDP(N3Dw4k6ZBJ9|k5YCoBF-Uy^;?;NdP z%xq%+L}^2u9EiQzu8l|zLqSuk-8|zD)c^Au)*lc%tJ0pf$Ry@_P@7zd0fJ9!Q}$qG z*Jf$cQ<@Wv&e2}jxefv6h&DIlCb7sp+T3RsP`HfM=B9wwq0ttoFy1d7 zMxME)EofSci7%AM@j7jR9mYEms4aYNzz20j+M=nWi5d^p-fD=MKA51r`vbbZu~PfM zrkvR8KH9gB@!Z#BZOx+H_$}wMu4!B)(ek#smi@7l$?w#ewl78Lm7(ieg7@E_&~O1I^<--PAS? zM5ea7zhA+vc5Kzn%~+4ksYKnpr5~^>)=f8WJyfy$xo(NP2IZ{S5jBIcX>o1N9Ax zF{7(H^-Z?aVW;CSeN!u2*o3pbZ6mZ)D`x0BS(zZ+&XmZ`EZ2AW#~TfWmA+dQjP=|z zy-f)uap{o0`;#bQ#eMa?KEEN_xJ}=09c;x<-qjW3-Vf6MRWOIBx4}Zc zJP<3W7^07IfiAy4)<+d#WwU(r8!IQFPq)`^gPTxtihhsJAfl2z`U4gTumKPKx#L67 zCCl_#fil>_C4EjQ{5*N7K5sOBB736MU)hX_9oeA2^ANUmxsU$dxOu4WN&f=7=QQSu z{##!(KANQy@FTA1fFW3e*se0JdD4{DckS7MBNzvnhM|IfYuzGF@8{=L(UdeGc|&$?rTuJqf#=UxBn-v2%B_@9^l?~VWW za+3X&R-En!{;fURs6v-Uop^87E>kEPt0$m05?$ak<%E+r>{r7@Ws4UFx#hyBFb#MbU+ z17cnGu>L83>}AO9x4E|rjl zXk@m?wF@yeLrO$hHq7lulF@$e_V~l=`<(MV&-1ywKcDAQ>bKI-WNAYi)!ZaI=eH*T zcozu&QgFs;vKLU8o%E5tZ4;mw0L-`#$YTH>y$Siq zML=Hx91uLX~_5q!QDQiV5QbDb(4R!2hmGX)s?1hVrM z9yCnQKT7a<735+3L0~-OnD59FkiXnOW0pW(E79;rf~6fGr3A9J_cOwLA&U8yn}Dkp__gj==m#j<=McXTv#X911rxY$Euud1K_u^6A&>8LsNe?Vp8lD-wVfZ4q3W z1^jOwLOxwgcj^)L*A8n20TNKyBo0gFPw@@ z1>W0^3cpC$@Xce?h5LcJA*%i#Pz~AV zRf}>hOhBA!lb&>+t;%RK2Wa(D^}~%YzN{Lmw_u>W)O@hu_1vC4r{fj8Y?e6OS z(UnwEreM8ma-_!DHcuT<$qJZQuAY)hcN)j4=WQGasKV9JX959rmf+4(^)l;Jiu*gk zgc|jRruhs*oqA8g2q3t-`h44JpgLB4O~u5YPE%Ku9;dZ&>KbVoa9CD1mXuH^8#K`C zfK@RX#YWxPeB3mSyZEC2@0zajM+0~JYlc_U07sr`0^g=G{1OFUY||_#V?}l<5_C<~ zEVy_p^0{V(WDEA(Ah=T{876fAri4l@ech<6o`R<j~z?jw@&hH zdytY2mS!Jf;j{Sm#)hk!9-&ra1j||{Zfs_-_Tv%~Z&WS~AR1wnN#HY0GA^8mObR=JpACWJ~ zShA6E_S`2Pik_3N_{B}~HQ;3?o5=SCi#wD5avde@U9Te31&ha%Y%E?ENOnc9H&Sko zY(OgsniRpYLj)(3OL;389&PXcXv3s8(l2G_0MmzptFB5{TQg2={RAC71;Z~(6(^aX zy&h6UF+JUVM7oi@l<_T<9=IETgz3_=HstzB(gE1ep6tf;aMF)VBKH7E@#Hyv-$-7! z@q>YUxX%whB^iMY2V|V5=hs|iZB7>8rjd1rM+1N6%5S%3YjB0!>C4;feDBLW>YZ4T zm9lSTHBe)b2aQSqzHyNU#k2yB_mMxF(TPHFkYjq$;2)yog$pcHa=yGUo%?oAAZ>g& z@sGUr!xA7RP2MnvFWg)&r+ml|zTZtw-^~N;+~ggfEdlc1$h(d%X3u#g_@aYc5cmjq zIZZyZCIT2&DqowpgBn>WS2tY*YVXT6?dXtcm0+hCf~yU3?JPIor%CcXr@wv&Li@=N zd=0FHk%Ftg(`v@D3vVw@PS@Gn3bd`;cLOGWB$$3u>$2IO@wud(y(=7;*;*U5eHJV3 zs5a^!_WoY)3O=`JmrUXDX%nL;~T*uKb`CABKGv9f?Wf2!&bAW$(e$? zpXo+jcVOk){YM*8#_0lNW;XpRUGPC(9=Wc%@GKg%x>^@e;>)J?j&APq{lJa!x8l*4Q?eZ86taz#0yY>zc&|Y_VxD1^9L3hDKhemkl zs_f~|TaR=#cPM~_4BZ{2B_;ZFgziqWq}qGw>Z+-jgUfXfn-nVMyzXh9l}hG~5r^Yaue-I;tXog3vB|ATQ8LHw;WV~b z&=yvvWcTz3bbXa0Uo$QtQ2e-m8-Q( zV5C{8N?=0v-B79yhOBICCioM+N^6nXS$n+p%jv*&>4)8e5u;2d` zr-#XcgU1^3k5#kgUK&nn8IcQz3};grf%qsx)ep`49W*@nY6RDghKE`kH!f>yXl!!g z+;h;ViR{AWHNYrGA7_=TjaqMVmAA3u&`Ur=sIiNho`jYdyE$+i$(v<#pOwf^T8!Sq zsD*-g#)z?XZ2M8h*$XdnZu(8I{x{`*qChGY+K9&?gbhT z%%}z)tTrCS9H2bfSmr`Yk4!L@^`_;g3XB()9s#mGFkZYC4#e~}-l%c_wjDO!>dy6* ziN@L)9N4D281Jp92exR94GvDg#R(=;RDX`3znYxZ^K)&3$*GaWu03FKp3QY`xyk0) zeDx;gntXghfgM9k{njvtr;H|lXEHudusFdqU|~n9wp4IJE5SG))979m%z2|}LK15* z>x}7>H_Uze6{hI(jLdI;o0d3iV^`{7ioKG=6qX1MPzm0A+{=_Zax`E3%yi`Oe5(D8 z;OQXKQ5DyH1`DPYn2JWxqYw5aretxGs^)yez&(-*ZL8Q>!#Vh{0dt@ zu-QF^iJDSk9u}AkyggSizQG(GPDyXtVqP}dAGq&jPMh^HyYe@JCDrCr+i2#Yzs)6u zR~cU)bLlVPEbgu5G6UZW>?{~o;$kkdr{w&u3BLHleC~h8fx#K(3sc7O?=YClTQZTi z?aa5ls(H`_b7Ra7phvdFeiOTD$9jwBlMGIB5f)!%H4}EoGUl>9uSrevI*Yw6-Lgd6 z$dY}_vT``HF!@`-(m=r%A6v5eS^#T^;H3VRywr=p8MP(fR0DL|Z29rh5VnL>mJ=WG zw2i$jC#&nZ-)+n3akTQ6hnCX$%K&Mb<*fS(-eU2B$3|K%%;WDu_IX;nyF0NWQv{2D zwf4OGDaVjY*4}lAoZGF|0ZFxN6>Y7-!QPylJ*>dvX0x`0Y})VL@9Ce{_c`Co^SQo1Pp6Zm)J;-SYu)sXZQR;+1n?RV z_NHLeYSIhHZ@KYZXGa)d7z9Ke0^~7(&n3af&wycH0Hy(gq2qz^!Mx9pH1lyZFs&Hy zdm{K`52Oui`P~tM^;aRKui`pGaKJgi{AGgm&mdL!0FJI*#l@QLkbX@8#vX_4wu2j4 z1^vAR9}j~(oG*+EfE>G-Tm|`)BpNda@_GsAlP6f32zhHM*VTgKV+9-9Le8BIyfq6- z)I^}e11O8G;ALzIhdQeeczrX}YkPnp^I@Of0K~6PUZQhz$ncAI2WE7{u#^(O=!cPg zwvZ8mUgd&;?ih7(E0Em<0ju(WH+l*_ZjXR z;P>O`&MAa`FcjE18=={B?=2sa);PL%6c=gHf_XIvJxhbqaxi^p6VPj{V9^WAwH*Ua z@4&of18k9kJx>c}^}~|cOxTbNEU&BqdOk*c2siHHh8>ZSz@V>@?dbvJPQbayRG?oJ zD*Phhz-Px$o%fs;*5mnW{=iGCbS+#mfC;ra-^GuBIwzfP{z2fEBf5cudjWg;>J}Za z0ewg4wi!uJFI{@;d4SV1-QioIfVDty%O%}64X1$AWxDU>-9Wbqf@fTG*IfGpJK}YB z(yojKvi9kIf54l8A_-qVX8XxAj@wo@=YSMOiUQq0_;9~fQ9 zN{SGCyg512;O6L~pHW!^Oxd9iKR|b$73k-0c?-~m>7&n&1N51KUwG@6+h?-4Lj)7{ z>XVulu- zzrlEU8RGwFPMBgy4^9Mn|7|$bo87tLh2g}1Zv&m@7|LS#+_bZTi6;%epXPoQ6Ae#h zAHhs`Oq1k`%@wjo@b!s;S#u@RRBA=ItJKohgRT3wVA0!>k2^J^@9$EdHf(+09Ld+^ zD6qdsnsbba`yxqNmd6Btsz~t$8uWuxa;@a%h>*69$Ol@t7j%9q_)4ANke>we2TI$@ znU9Wbs26N3ula%lHb@!2qyvxKrR+e)cVC^9eP$7bs_*WOa@=Q=W6u(*Vzu=M8r&y8e}bfD)R zK#>G3n&4QI;N%_Bp_L4e^2Yz^z|#QVOyn&vrJG< znp9CjPxp70ZY3|}+FN?)X#x^@NcFAB&(q0v7R@S#e1VT=v9=O!;q<9BQ{G_+2mC3g?dJwH;Og(>n%N$}iE{aY>-{T0h)#a!Yho|7 z5L^?Y7{*eCcY7tLsm_k2N~>491Jj)Z(|Rf$w)+Fu-&E%84P&WQD0Baz=6gO6tdCO` zhjZK1^UAWG$AQD6l@-N>z#n#HgWnLwBU9NB&i5|TQyK-B6r?b zgN`1fw&!kE!!l{fnk;ojsV{JDwffPDgTT!abdSM$-nr`9SrNe0XKIR> zh8RoKy}bf}l?7_<`n$lGd+Lc1G7Wo0y=0*yBc7-?o$1I+kJReBOnAaf^{&>Ev*Lt$ zx4D8|?XA{UWwJz%JW~H?(pVu$>R*TKz?+{MZBsr2y5<_&?+oRz7$>;CwXuhuAwT_{ zvF}By#VLbv_}A~z6V*7*N|7`^H%4538TicG7*W&A7~`yNJz27$#+Z>lK;Smx+G(8r z>nz5TQ!;@5tBl2!?n|kPmBy;6{BVaX%~+iXv^=DB`--0Rdn#DgBDq#`b1cw;d>P1s zr`n9Ae7bO+HaDh_2}{;uYJxZv{u9i2P5XFBAPe?w!Hk*OlJ{7^htFuM9Y;C!#|Yj! zs-L!)tYwVN;pr<*&=H!b?RniFQ2T4AmN72DUA2;2 zic{y?T4`Wkz{5o=U;Kcjx>&HjrFJpHgB!QduGTPt5m&UE2~5bB!?l}7!>G#n+Jhzg zfth^;b8c#NPNlqmUaK2@m73nD{nd;6UG1hl-R{In$!o1W3*v@B8%&6${LVaP(pns( zc3d&NGKNEAQl!c4JzDNsA-G|q$@?w?U-*^a&mBy?LoNezD^32L+$ra~O#aPrcPS8T zf7CQQkHaMRyeTkv0$cl$;N+{O;IvMxl#X{yq0enRSmg+o)S4nk{ld(Kn%)b%Kn=+@ zE$GVonzw0%xtyXj(Uc|AgR~o_?2viDpOWdI|8t%erV9>z$&^=61;iAX&MJ(^r4FVG zsf@r{Z_~}g{N6EF)5A|kvNdW*@YD%o8{<2cK1B9;zPzi zH+LHL1MsBO+(l1MLK4i~+wu5u@S53kb|UaooY`kMYvJqL<{4vac~Y!2&slhxV|9yQ z!vOQj4j#abZ1aX;Cz)ECIrYX3V9O-)c1IjHxL;^K5>*BK_Snob9dlDPk!WH;l~plPrtd z?P4=;wJiB*BU4x^IIv9c_GB;1fl&d#cNLaXe=cCP7YUv_V>zwky00d<)!kA&njQ^~ zPX5yB?8vp$Uu$CK*I4Di=It}BYO6(<#5dB7SeSUS>rZWqlwHpyC=e-+5sZ7usYjLp5%T5jTVV;>5J zmaMmyJG12cc%zw50<9PSE(C_ov|b7y%m2Gzz1EV6ytCYTr*{<-+t1nY==@W17-7Ud6sIR`!w6}AKqqq>uqP=?^t?59scl Px2W&;ALi}e*EalrjQW-S diff --git a/data/translations/pokerth_es.qm b/data/translations/pokerth_es.qm index 7ea70de2a09107334fec15d5d4674e48c7b5acd8..39f20a20da0792b0753f82d66c2baaca57cd4069 100644 GIT binary patch delta 10398 zcmcJVd0dU@|Nr0DeeV10OY20)DIy`VX3LV15sAn!!#FJzEmUL~4$4lJBgeiE*(nrK zNKwe1Y+1tCWgmw8Ugtia;q&=@KfmAauitpo^FH^v@9TPB@BO-(OGWbaOBKfU+2PfS zU#?0!>sm8!==vkKx)9ZFN5h&9O2d(aQb_U{hjOmV!Y4g+DwtGTX!o1+FRM*miYOzi8(YA$<@^pzXrk|^&um_ zCIw%t!41&O%gRzgBv*GD@!O{oo#co=uOK@88}Vf=iO%j8$>w(?{?Dbv+ItiKbQ00| zt|Z9u{M8O5)Lsd}XIfb|S|nHZ5(zCUh~2(If=>gYJ5!A$bZ?0P&XW+dpXkpOB!o?d z3Qv&`oksNJ3khSF5bK~MVcbISCJFO+Vl_5ddABT8;i1Oc)-r)_=Q*UycafxVBI@NiO70;bW?p!Qv{)`%)J4wv$5qW1n z24&=9gkaja)OLnDvB0(Dzw`uAWCC?xiT8|Id#L+~DxyQD=%-2;_*iqWGdO~Jw1NgA zw~J&BXRK_yhk-B+IYog}wh~=9N`WbvWMtKri5Fbm?G!loFtJ>B3hIFsU;aozGhm9ctrV2r25e4! z3UL2=O$z>bIkCDMD0pxcu}1YNc)XFQJe`7**Tbg!sh?%yX$9189v1MR8TBjt9gL!W zUyj4X^(bW8bfU+@DWq_{kvO-WG$3jMY}=Iv%$Y{?B7_E}^dWkEk_HWjX8!6(gQB|< z+cA>{C4VMXypIN@!zVoUgMScxvJ=U6zO}NrD-AjX!9NAiprcUvE))F{egU>$hM<9| zW!W^eD+G7k4jOTBE0jW;VWPe7DMq^wajd6UsD`H87s+&Ut=y-k(T&20;#$+B5eUPE z9cb#cd&G3dDcN`o8j7YF11At|?@e>}BJT4}(L4_aM8jxG&2xaJhS36qAzcq9)2S4q zzqim5;|)w~bCs4@Sa$)fjEEpse*&d9@gjzo(g&?2I`WRTPRI98$5O^z^W)hB%co>)6GcSoT=ftu?~% zrjCUqjVEf{ll}TP1g}uA*v1lK`K~Oni7Qd%9X9qu1yQ=d#_!M)tLe)YzDP!XsmYeh z@!8&J&(=5~ZfBLS4eDydgbr-a%|WnzE0Ju2jP2Wll{eS0g1CA__olJa?+y|B;|4qP zdn|FTJ=l3+1JPTvNLF@)mAbSewmpiKdgKw?m(6bc2u*wlX17-(;T#yo?u>=W#@VrF zPumkS9`$0M?p`7CF6DHq))0I3E9Wt38?kmrxh72y5iN1Ia>Z=q( z&xP*rCC>95H@pSHsW6_4e*K16!C7u}8f?iXaPcSmqH<-5WCy-*lde?})zEQMbz#JM zZm@FUVs2qo0#a}wx3Ym3(ZGpZ`kW^SKM!u(oF2qFE#$JNYhkjh+>tqOZfP^Fctjo& z$1OYVbhUC~RbRNXE+0@DJ-D;?0*Mv<%w1*3Y&UtXtS}d<%j2#uZ$VW5F?W}rO6>G2 z?z#U(BA+JQU*p>#Pvmfaom!9adT}2M3XnN(Nk}duHusi9GT)cjiJKBdI0V;iv9it( ziNa{?kMdh8skIps)V&~aSAK*u6-gQ-1QI8IBJsWe=Xuvg@>AJeVi(6r`c|JqtoCt{ zTzxx9)Qg!!j&CHG(#Z&$_XWIiup6=7 zTX?@X5{^@!h7w4`L1oC>Vo@xpX#MVH=6K6s$LM+;7>kk;5nlE-u%dY8;E6% z=Hqiqh^sc5Pv{GQ{=Uyo$&7`MX7E$**%OVq!6y%X1wnkQbZpEg{{^48|Bg?2h zF<|Z|e%VhsM6;h;nL5Er^FWcTVXT!`PVmbXq94rJ#4oQ4K_9sC%Zm_(t3Ai>wmA6iU$oW51fvBQRUSJjKzta%$g5CNE!ZuE+{PqP5%(b$- zAqXd$Y#~}Nrx&0c&gjDLXoP%G&)Le!(IQ#9DOPr8{LVg;iETX1?@k_o=lY6dJ-qlm z;Hx77j zr37>a{XtJ+D<*<%!8~vqu~jRFd#yt`lSjkcd<%g8Y>hjl?cNITKEI^`oF(j&LozBWOpQCB~f=ewYL2 zy|zrKZV%OF4;Ng`$cRac1ov@wh|TsAJaV9^n=6GzWjvy5fzaq3^1;U?g3-t08qw_{ z!RJ~zacq;&{v{fYd)w*oj*7hzrw;`i=YVPUM6 z*q24ZlGBdpa=!>myZu3|j;pY;?gOG`9feh^Fwv&l!s--gwsNzudMj2umlrnN#QjC3 z!p7){s4>RV!sf#hkkdUxa`om3Tc)O<{a!EZJd}$B6C-5!#1g0MBOL7ef;f+RLe8Qh z><^9#Ij693VHv^^Ou*PP;pAKcI-rh1F&BtFVwZ5GdPkyGn}w^tZbZDV70Rnhh?C3_ zZug2qG|Uq2*8GJ2e{!YuBK@^UHm_W`H^Ph9S%0Bo3Q}gNPI%DDm)ISZ@c7Y1Vn4PP zp86kUXtX$E;${jC7 z8dc5odR6ZD|VK4+wlfI<1Y<3lR$Lwt2A&pqN-xMH1aBZ=xqz>2=;==>78^$QEjyE zD(Oi3eMWd^hIHiSA;g9SN@F&RK$#pTjrscodb9H)xjOmMgwEJ9FC1m%vRfkAEQK_& z@i8>7e$t7d2&c`>q*EI0CsybxorXT2tNx=j*<&(xxzQq-+feEJwtjHNrqcPLnD0?v zskz9w22Sxry6hbu{B%^hynGwcmVVNe*=l&_S?Q*-$;8;^j!2nV*Qs( zuV`|Kv?HaZ#-xo1hcVI{9m|RR87jSb1cEd>F0IIMAr?Pd`safy#7uG0CkK6r{q5{97oyeU%iOhJ(X?tM))OFQMibjk4?4wM0ujWjCCls(CkMw|2Q9BPPr4Rv@7) z43JeQY>Cr1kyRk`(W+Lm2jz(OlV@ems}x8uePpk8>yUVIWS>vLyDzVhOa8D&{`er* z{yH5g*;(#1d<{`XklZ#7#Zy%FK;u%fW~C9y#3-5 zFh}m&8{vCDUf$(31W=mf-KshfHE1C3o*jwZw2eF<>KGX*GeX{1gIpigOCB~02TTnE z{+$W14(qO1hD z`A-aZ*?6;=HW^XTLS7Vb z7oWe%i?cCKwx|3|5KQ{=vi!`)>o}Ry$jb*q6DwE9pH06)oHkLxypypt8>^7tHKr2H zOjhWAg+zB#6gHEWAm`UpG{}Mz)gEf)Jx9-@niZU9M>um?}cD%wcE-)62+L7`3R#PiZPRdaQ}^!dpap5 zMWP55ZdOdL{ut#pUSYh9@eXGyrp5=ucb+L`8Z!`OB$9pUqAWK^vB(2wYcEXCSB$e6z`7RkE3 zRp3+zaX&%vM`K^2;fabvQw9<1vQlwkI~tGeOmX5!Bb*O>P!t5U#=e7$io(Jn#LRw* zqKS~$euPM_PN<^j1e_3KZ z3Rdi^c;$_iznP-=umT;LeTAYA;l+GtXSftq_HTceGE#4%`W0}g-Y#Stgy!c zWzF7h#JX-#){aDYF3%Immef;vH-JwSHc~dLK(v(g6UnhI%H{)0h(*UJTMw2X4~*WW zY?C*Q*p|0S-#YHZ4&^C*E#A7IyOqn_mEAKpU;>>o&=09vxTOpl0M#1@i)7vXlmk}R z!T#Px`Sbf0IO8c*4*I0UIe^~E+tJFfY4Cv$KPbba@Lc{hWkkSzWX3bf$e>f`|BL0y z*r>Y1yaJW+c9&5k%9IHnP;Jx;<#?M^;vABdQ~G-o^XsCVrYb_K=A=y7Sr-jOs+Avq z7Rh#wR?Z1@CDys6azU45IPo#%l3~!$*K^9WIdJmA0;L$-A$4akHEYbe*Z&>FE{ zzo^`Z(-LX|9^BAq%<@*WYHCrTWbV`|dq?}knm@>NuRGjsv z^3ZkIJULi-R62y%ll{s9pVQc2oKT*e>4-c+%2Q_8IyFmq@o^Z@C@1BW=pTt%<|}XP zF`mMK;_u3*zxTicw#w&HsP4g4Wo0M^E>2RuyKN8KM=C#7xezDor2M<}E1ZtGie!0} z%D)G$!FIfrifihQ{Lx7ziKvfbxArQYhrm1AtAzMmVqcf3q%Fa@>r}G3)o|MWx0N@8 zRdtO17jTY$NmZYNjepEgc{*Ri>D4S%!?!Lt_VQZZ^uRG=N(nS84*O!_Nxqi9-uaOsSL-jzy!aj!k6zwxo)Z& z9`XmGskLfk5}dH+43*Jx!PRS_8W-(_Q?6uHvfhi>r_ZYSU7+HIdsOrN58`0KQ)Tjm zPrNEurOm*OXwhyfOJhZ{1-UBo_3OmeFH|irhYwXeRjrtiOPtL%)%J;~rl%@Ydxw`3 z=jfw4OtCl*tWf3GtH2KHgHctWSdUaVQ&lkH1omXVtBUk6$%UD!q86~(^?RzK!3|); z!>Y5B4-wm&rYgA#8z-(-U7Ha|)J3hjdBYj^9aXm*;{L0rsylZkqh(X7?hS|22B)eX zC%+@M^_J>`vkS4Ok!p2JM`8_J)V9w+XQNTP;M}v+Ke%Yo300_F7Q90vk*0R}7!Gz+ z*T&HdJ33#jum2IMjZnKixPXHS3*ieV9;)3ZRAJNFM(r`h5nHi(>V~zeh!X3o8#dpF z&8UOA@jL@Mqy1{{d>m|iX{K&w*{-Ka)va2g7c^$BP`97!j+MHpeQSfMudFN|to98W z4rdEhcS=Gu{C-m;^KWNmN(Xi4_E^y;cXiKwxkS4Usso#r;d~%R{mUYh*$fZ$Z(oo{ zR?Sk!pN0>;2vARSUWdAWSUu@7d?hJRq>olO(9c`z2dXzf9CkFE5)aQ>T;DmIYl`AD8S)iTzVM#E`^g8t$G_{;d zphocEVG5H*2(oDCy+&sLg4kjwjnd6{0b!A#QKlm!#g5WAW#NmEr5dNw%V;)})zp zAcffU&YEQ-5T>RZR^AEF?DxziwzR+IfUyDtY@Ddc+Ju$8YNR=oRh?+$AkDFLi;$R} zXbN(!5Zg0dQ}E~*GF?+m;e4pHq^G9v3^HCyq^3xTf!hza^0r1(C7{F<;wpryG>rrm8WA$D(=HdB2UEuHbDcK?MRF+p2xUatyd zuxzj+_)08ywC_8I97XHR``?sGmN5|-yIeG}IXIc?E zl#^8b=NOqTVe!oLb=w$@ef`%fHBBWE2TdJ!wlh@@wdI6E|M`N+CG6+_HsP6nd%Mwp zPMXOKHEjGms0&3=C`IFU93@f&g^__0NRO*=;^%l&MBI^ER3pWYO~1&f_;CFwLww?R zeRNc4f+=v+51BPbXV+=i4gY&V1jSPf21~?Gyf{n(jS`1V#4zEQBp#m<%r14fnx>!) z3cXwB=;*j4eZr`SutY;*TzrB)F;1UkNDPbACq_o-hnuD@bvKXf$y`k{mbjSPU1IK; zK534%OwN@arrEn3O}#R*HPz@x$o#KqOs@X73ud5)L3QD@VN zi8X3?5&nH&Q|IuQs93!rEHNrB)>KmFnyJnn$+3PW-Oujk7Y&)#{BSz6uSRW2Np9p$ z`0F}#{Pwn&X;S~{4q?%82@zJ24KWdIm2U3dZsxl-%*B*+=nIP#hni52+1ZbWRxApS zqtP@5x-d|@X=KwH_WyHWAIrcliE)XBX#L2ju#usLSaE_;(T4F6@on|rrpQb@9H&y$ zBtKF8@usO8Ye|)U7J*EL*KVfON0ph+3u7Cwnr55%%(0e-xP%7Z7N8Ci2Tag=xO+D+ zbv{@t^OwqemAk{gYxN)FeS1l6)v(!?W3}76{kKOgcE(!&_t|vcOkxoy*_3ML50%W>eCq)7G*9Wu z)aJrYtcGdNK;BNYDJ=SJqWb0me$1V7_cj~4F?Um!X4SF|`Y{j2#+f=dt8VVsmHGT% z-(KGJ+uL=_v4@#9>t$D#*75&OaF|Ce#yXTKeauN2%pvP>3TwqxSHchC5QLv7_S>qY zesM7|W}9^8oK<@!TgzBibKWfGWFLX&EO8%&xQ|1m$00NiS3p%yS2Ja;u2Bhw(C7$# zL`+;_R9IYWf*w&~iOR4@L!$XY3ae($oyAgIr%@o@)Z-@%E**{W;MDkRadL|b7|hq# zvZhj8MNq8ys2^mW@w4rZ-=u5THBKKJm#B}73Xjkm#u^e0NCR=h^j1et&?iMkAsrav zBlL0B`J;x%#^FBYq zB*n#tn+>yA^(>D~?8*881srNTTV1%q=`RtIYo&$y8#RzD{l1Z(}(eQ0DWk^&+ zVyq#?JmmsS`W(PT!Va6bC z<`u7*gX8!7=wf-nY7BE@Dc4wtx5T^I;K1z7o2qd(=AllU0~>GNTaB|HXmJEfDz?-C z1C|VvW9b%0`{(NWz>U8TjGUh!X1R!Py&*PSk7O5%%TW>WF^1TP*u-cI|AslU#pWsX znbY@aRo1yIv&NctSK}OYmP?CS^)M2|FvqI6>MDyQZ}1aEF{Z}zs(1cATO)nwn8g27 z>A&UoAtz2I$igSl{&+{$KU@e_UB3z4D*6CBm|? ks4f4d04F%ru(&a>!M~zC903_>NHDXn2%Q2sr>*(F08`SJX#fBK delta 8164 zcmZXZd0b7~|Nq}>pS|}v`;4Z04fozqqB$8eWxAKdP2}bp%8(>OqRi?@$s9=~L){RW zDU?bw)K!QK$rK{!id>SBg}|?pYI>6u;ga zccJC4C&s26zte}vtSu3>BJ$%*ob6?zv9nBOtvAvBvx%KQfo+K$J^^|Vm23xx5#3i3 zalu5hEle~DGFj&mB1JD^&Tol~!eFA>93qe-H=_P{*{_34X5E9xb2#odmC1gj6OB1d zjK3h0LbStyjC@igZq(w3 zNMd5NiANkv{Lz8f)qcN2d}B08ibzPuw*#&DTzS_<)x{y2^wFQ3jd<_fbLtvp zNzBQD`p2Ik8nTyMH{m_wmL24Jrk3cRJR0!El4z$j*c%*6Zk-^3ArDRbVkeWC?IX7d z*vT$`8mQSoY*PaoSX@UV4SWNg?mtU^&hsHke?)&qtRS*&1fC{Z*PZ@+f_V=Ik^7=u zM46MwJu-ug^zE~J!G3s?`^p?*TON~#8+M$XLLO0JM0rEVBdrV3@mn;c0KcC&L!N&p z5|cRc^sXgVuP=GdGZLNgAkT;t=+v8r)qQwMDh*qO4HVy`VTB8c&ef-3-%k;pFCnkR zONcHS$g42LNbFlJ4G)+P-HxT?LkjYlRH*r@wjm*Zv?}{`sA0m%lN24Z`5U^W+h|XhLIu$GkNf z(1;!6uB2)D!|>k$6bO+}z!?+YKbOhYYiNd@FVWwPDReU2&oF|*Z&bo&%qhZn5)x`e zQ6uIP#crgPhv4t2d9=!^5hT`>qE9q}gcj49I`=#Am157r+wP60^|!Eqde>>avF@VP z8rtONM@(~*(i|O#C6!Uy$Yi2z&uP~Z+%Gkw^p(em4ti5&Ye)*xI_8TH&iz{^3usBl zqMe8wdeKS01Y(MMRB|+cXzNuf6I_VKyHR;p%s;7=?q}3M(p%`^>sC;O3mKoq<`Knh zq<356p~I#0WfFqTzI{~F3NOxbqnfquL>+oCbuFS^+<*8{WcrPXMC&K8dQFmvS>&*K zr(j$+6s*A>ETsM`*4Xg?u`40WEDG+opoNK7s${aoKUm9eP_(b}D2&I?`< z`?8oh=k6y~^@4SGHzTs#$$Iv2BDP@`>(?1>cQTWC&6!7JKZuR~iUprN!~*RV#I` zSeexcV(T;6tv?`v+k4pEEeJ62e(c_CsA}vx_TqVWV##k<&HZacPGy{7a}qJ*r6rtI z=x$=oZ*z`qvxyc4nYj3>OtvP5Yul(j;=i8jF|vec`EQ)d>E*=MC2&1w-au|}lgWNm zaPD=Hv+GCBYf)dKsMp-M8>fgS_mjzN?f%0AZv0*s;)I=?e}`1~|K4WYj5z3y&F5zR zI}{lzLne#=#)aOfCHlp{g&TZ{Ikq-2=mWR5Hkg?CWNwqS15uyDT-u6faI-et?iFst zTJ7bsmgtF28M)&taR1plu6XhZjI+6OO)7|0wB|0DA!916xC@o;@c*hWgax+FTp!`0u zLn(@(O;;ejn#<(a8AZUWr9?lyS4^!7NVgIcQ%~0MmLjAGX**_(i5W49kn1;LBl8sz zfeo5#uk+Rz$so+o=yL)=sG=`Zq%nlZ5v-8Wr&t^@%o}SHv5qcoL23qDUGZ zP4sQQ;y{BL#15QP9BA)JETl$p^v55F-47Lov+)7PSQFB2mb~-`v zA_qGxJE{0M`4CZcilR2O2m$E_FBE6M1~?NxESJgF_u$1ac*X7Cc%$0eoLDYb z^<}?ImQ%{Nsl-@V!FRM=N{sd8JN-1A7}th(Zjz21(Sq;#>kp!rj(jh{f>_{5zVCHJ zxQ`k9?_D6#J*)U3P0NV#uk${&uZZIl`G64@iHdIUQx0z>mJr0x%qt=G-onTS55-FE zCG(3i;9lOH`0&bxL_Rrug!fx4z}du~?D>e#(0%b1KJpR#d{aF>N)b)0#Ey^3jU$>< z#jkP_kVPZ;HO26Pln#6>kDbqsGSN6uCUf|WkDJnlDC;r5p+Dx^ZhXUU7?4Xe^MZ-9 z3rsX_m&pt(Og#LO->~)@Lh437u@x42#*I%bf_p8Qg~AC7_&_Zv@4%>Vji*1-u#|uY|vN}h>Q2gMoHjDumnV5SyKzbTE9BTWVvs^ z8jO8FEaYo62y6eECzBmF2ceR$ulPM{7;MQ*CObY1R1o=VKpwxlgDNnL-)mRr|E-(J z7vw)kCTqUgM4Ki2z9C`6BJKGD5hy}i50%O6()ok)PNOEQ;LjHoW8xT@Z0df#^vQjM z)L;2)4FjPPm5IhjGMU2=zU(-x{&@g@y*eC~Qairf`K=Mf+dtE@fAP97>me|#^f|!PJH3`b2?!=xJ3aYny)B#?CdMRw| zc#5D+gj?n<6ZDf&!aueZem1UvwVvoDG;IixCV2}j6S^Q-%n&T+-b3*jBv|FbNKW+? z?8>3Llbr>-YWRJ{V8Pky22sHb!TCl7v3nPU?yr*(VBQElnjkQhdkK99tw6r#gub&I z5IZ_T=+__ji<$~vTi~W89fT1jh@cN*1>>Y1txWiIrGh9vUQ`T06>W@dEvo7o!FPwmhAnN7|C^b( z*l6PVOqtB_wTY{Die~-y6Lr3B;^mcM^VB0m;|7T>HsZtALPeV{*kRdA(S8oR#dm?& zsrwM3v}aSt`;X3 zHAk5}MVzw3hnVYSaoX22h;(gbvf5cr_Z}qGoR=85U zeH;sDcS?MaYewuZo%p!w8nNI~@!2sKV&x6Qm#g7Mx71=yBSsWBN?9-A19tpQS$`Jt z{;{3PhHw0c7M+yIa@#6fG%zDlx+={FA|6;pDy@v)P9r&-S2~u!YCpbGI+fKDnFT3( z=P97GIHl_{lw?0GlF2q7P!77;48`hHnQU=}a`2K$7~KS=hX8+H-Ap;mYajZCiAt|@ zG&IRWlz)3*fvGmi5!c(JH?&szq(B0JcFJ)D&cw3QmBzr*yF{C8D z2cmAzl{=i=iTTwi_pEwA%xto9-y=vYOrbnFKp>X&M0r6A2{&12R9=t2f*S6=^5#uF zQP?cyt;P`1tX$=t{pN^pw#xet5GaE7DIZAn3AMBG0U{bjhAXQoQi$#BrhHi|AxUK@ z-ySd!Q~j#^b{58)-AAQJZHTz=Ql%fg1R?j7saeg^GKpe##H%& z&HSP=OMZ<=R-tNf01GI&sIrQLS8Nni)>>F|!5)<@2P-}ts=(Le4#H}Ox1#8uu zf8G%tV5+dX{yte$8JFgPeN_=bU{bzn>8qzWsPI!Qt1EJoPpOuV8B1)&cvZBG6SCzp z)ta5|@c&o7s@OBw$(8_B!edN$?6qp|{1~Lw7OD*USHxx=RUI3hOiUP|I<-6kB^IYT zb?-aaUv>IM7_sZ#s-l7SF|Jk>XJMYC7OL|eP~|l{)%h`n zOH$pBCJOSE45OWl$Xa$%y|DH0^ZSx@CX7arZ{kT?sYmM}C>ZjkfoHLUbIYYa{cDjG z?WDnBm~csJ$;-JJ(fr{ihDXa}!9FG)Js^!;X-2G%n=}s3vrHRl+<8d);R?xDi-o34 zm3$+ODOhQMUbLN5-iOM^+3`vn7Fp56gmk> zWJe<@tm#u^%V^1X74xL*lEPpEIT8A&7*2Gi5UCxzbj` zhf;&2RC^bkJ?@jT7mXxl`9eCg2lYbiAnD9;JB0MXQh`Tj6eeS(!a^Tnb5f5pnm0GH|pV+gx>R$(&Bc0l+n@__1 z#cG)>WSQE@+6fKERdu@u@QTb(6Yot?w;xeL%>Avpv$uk1WVE`=iN(a0zE`_gSQ6Wq zr*^3`$~neZ)5W47wQI&!Vy$Daj=CA6M4w&%teDyY*`LO6hb=nAQRSivcJ@sDe4!hXO0fE+s3%rH>Nn$|l7r3F)pr|0m1osoYR!l}3Q< z{1yu=lF5?OHC$Uu_C%X4Oe!)9eN$=ccj!U`FKXt8ttRiI!GsI=aF=_aD-9^MWmGG@j{3efcRN6ArT_ZF4y>brJ~yXqM0(M z1cynFWOCr#sSY?JiqJ%~a3FTmQnR{G1&)Yl=ERMcEonk+(HMx3A_xST?bk^_r6FKE#H% z)ZD(+4C6+cyS5mYHqzX?7e?%5uEtpD??kLq1I^QjYGTW8Yd$qIBUT)v)lTb)`&HvmvFy=0oyLK|{g>Ky=!V&>N!m`GP@2Ui zYP+wrL@6~;>(U&Y?rGxjD6NZ!KMpL_+Fo-k5D{}_GV2p2PVA)Z-5ndb;jSHYIFBeH zT_UikL9>65m$S8@S797u9b__fh>3Ta zXqRMFVJCOBYx~9_S@qDa&B6{3q-tXneUZdwYS;IKh#OdH;~ewRM>uLXE@#BSgn-FvY%;lSTKxntcg(vw5QsihPyV=o*smG^k&*i`FMWea}y)nWwN&M z+D9dx$fB;=_oy-17t#q7Cz@)Vvf(SVTJv;j^HLO*zv$Fy8AQW9bd59d zdzWUq#${J=I`&TII2&%)E=K1%G#1u9PbQnbOXuTbju0EF3tUi%+OM&0#vr8UX`*gU zY#{vqvo74-h1iQfbSsWV67%n>+c5br)c+wp>MqbSh3JmhlsXL1QX;{P^UFLS| ztSnNOo!Jx-uB-0kKQTD}|65m(dyUxINL|5`lPFwT>k3yxq!}M{h39?nL04Uo8uPV? zFfp%_uBdSh79K2<(oH5^FCtdM7BR<&Rx$eUFAw&)4>&oh5rFYA9w|+p^<(qYP z+gD)4k9Dsf;<=h$x-YZ05xw7_Z=CpmXz3pPFTHV+$*HNKl%^7v$TxZidFhS`3Ok!;`D>BG)8l3uOE*8zlcI3^xn-o;cv4*{rDCx zMCN_<6JNlswhq<@<*q||)#+y}e2-JHdiojbpo-GP&@CT`My%B@vUo^T z8K93E0556V)x`W#nH-y;U)BFU;>8qw+_efkw@07S4YoBoOK+^ZV0NPZKtc(zlWX)D zT0Hn-u>MHtAModI`V)Vmeh*)u&#!=gZyl#UH4KtC`&wTZ98T2mo&Kz21X{EAGTD&; z5If#&ufH&(?)?M$o6F#Sq1W{l|Lnz)?s)y{J~nv1xBg@JQJfEUGaBlhIY#6-&rq)f zE4sGB&}d^VPC8~78asA`P2?I{Hb6_YQZ(2)njzg<%4ElH80;Sf5DV>XX!jPzdb*vV z{Uu1^qN|}pRWz}S%MD#Vy&~GM%+Mpcc+yfu<=~jl#a1%P_Z`eNV52CB<4QVzhumM}ciG%&o zB@Z;53RMs-^ER9*ho2v_F%%9tj#IEPhKn1pumf&}8~0#amn6gO;WJR*li?Xo&*?8; z!?&Jje3V9y0OG{O8E(yAcVlVWTITacYC#LAJ@uuY6e?eLAP4-x>Ga|8?*GUR(dqOaJ%A|Mzl6%QH<`Y}-lpv5Usu$T&Oq zmwFl9muFdIEZ;Zpx7eQNvNC#{R|*+PrBk@rjH}->!pf#=GP+gHwa!#%*=bFtZxfa+ zX3lNS`deixT-l-~neO9QAC~Fu%eM8*T)B;H;u6N}V+}H=>|m=|!ooBbnR#y)d(yZ`_I diff --git a/data/translations/pokerth_fi.qm b/data/translations/pokerth_fi.qm index 19023f2bf6a41d9fe0e7c50be969c5c6203b540a..400ab56f4bdc82cc1df9def349f73e9156a5bffe 100644 GIT binary patch delta 5579 zcmXY#c|cA1`^Vp(d(XMcxmydOp$H>O8&V8qouZH;L=mM;X;TyGrjoVDwPYX6j7Iid zDoZlTGG8+!F%4qI8iwrhdphUWKdc)a#E8`7gEL<v@#a1lpS=v|y9a?6jN8Ft?_y%qJaXMp1VzvVbN@on?BQU#X$Z>x4AyNsf{Mts zh4lX-@otRl$de452SroefrV6>a zF^1XXx`J_wnEU)ju;?P@Ub+t~h-aQdUBIkPu)x$b;2WN$ylVjbN3gU#^z6JYY=erJ zlgYNWiUS4&vjca6$WvpM(q^# z_ZCuZ>l*g#=|C`>hcd(Ftzce}GW+!1lum9bUed!ZbxO*dKHhQ2_%blE*_A((xQ?77z;rg6Nb`m3P%ZawN7=9{S|m$6 zB9CfZ45LK=63^)`|I)uF3NKeFA__kL1U`j-U!WOMW4xjvSIJ@$(LO-8zccz(D!4 zQ?yavbMm**2Z8KK^5*m^N`?}Sucj>OV=ghvTO?~eiW7qEfHDit+?^bknbQ_*((K%cT+ERjv=3&y} zKaN~>@GFYsM~SLJF6W<4z|_@Tt~?)Xge#X@N_A^+7`MWOr-G*AR#uZ_LQiof?r?j+ zQ`d4p{o}F3lXhI8*LEO$p{aw?*0_Kx99c?jsgNsN^_kMKC%2)B6gK(@H4b|0qNfs9 zZxzYnExBzE$Un0jxSz&erMkPCEAne8i>X}EX-ciLd${6!GIw!b;%j0U@hx!;@jdZ8 zk%X}LjYwwfw~Y=c@0WBTk^xJ`6G^E{azwIz*NEh&B}cg8m5lg6By*D!sk1C?MN|=o zb9;LI47B}0qO+C6VkYruKDR%c{NHwu#N)5I%T?7d!g-Q-fH&dX4NG#k=O&5Xb0wY( z<8C%Bq%v2@)wXyfx;o+-)C zQ!jI`zHR`9RZC1dE|PJVx!0`(Bk*N09as~8C-wk7zatKywI^{m@YRi24K(i}l2n^t z5T6jOh~&BEX*@19gN>@<6-D&ItTJACjB;#h4KFM%rFvb%x3jFEme~ckquN{Q(?$ z%RhA&fRl9+n+Edl{;a2F^ilq)sH$$17~S_EEWV z7%Uwmu2pp0=mF;QgCd$W0z!=?C zbHU2EQ89nUN9s?xip*X|!8$i6vMS2K!sUu=`wZ&brzD!p6nO)NQ2me&8 z22?3?_MQc6dtJG7Rv7u=#4+VM%^MmbOO?O4i~*kCR2Hvj0Df&y9vjJn^@&wp(bfYy zo0N5Rdf@vv%G*}t7mq>8dkvHT@0qeeZ4MT5OW8mf2;Zy9hxOaRx`r#CH>)XgDwMDG z8-O*Fl%Fq>OlHTa^ivnnsCHIm6|t3y*_5HG4x57jmn9NEd{EhJdqI{tsO)nN0#lZ% zddf&4PF++E7hBdBRBqLjX%5k<{vnhp;d0f$)mMqbRNf~d!L)BwK2c|>h)q!W>!|Pc zdZP-v`VCEMdR5r{7EV>o>fQ@zT%d{^xzM5ti>mDS z7LHIYF_K57`>2*qqj~@RK2?4X7wXSi)yiGuu?4GDrt@T2@O#zzf2qdI)~QZTrP@?b ztU9+eo9(|?0V=C4;T%c6v^vl^^kw|X9Z#|)8pbbxx( z?qOi+JL=7ksGq+7V$vC`jA`l}2%s>1RsZbZ0rc#wF3F^@A9PTkFQ%qA{=B-<&yA)Q zD|OX;dTq`vk!+5cy6QZw!!D?+w^4oT{HyxLeG2dCJ?h)bY`{9&t8X6)0lxd7ew_X* zQ0^j!|3(V;lOHj>Vdnk(^BuF$)|6|A>R;siUP&t%eHEfe~m&Z2Gm z3Lc%ig0*`tc(g=waC?zPcsB{&hj-A9?+9at#eq#8BKS=lPr|pBc=WO`aZ6_^^(%y+ zk9wM@9Yr$tF2c+#3c%bSg>at-q|?blq~Ar_z&jz);yP8Bcp=H2u6J-2(#-O~LIZ>> zO%(;kLCD$Lg(~}~78U!fQrmZtxcPs= z;j(%vfiHv;qg+U*vxSm6aKw*K*+XDNSdu zYhX!fnr<@k*x@uy59?cCoqp2vd}Bl37EKzbXxgdwE{&@gGh9};-!g6rO@O>YGRCZz!Dy4vO7A0`L)sH4W*rJD%Iq9oh0$;G;4Ed;2Anr zV(b@*?`CP%*U_vl&(Un0M+Sz3X%0rzgUvA0oI)JUFIJkWjvZr=9kNR6e?+Ht|wE*zf}F zeCr>nZ>`j(UoRk0R!LkJS|}bc|6=VLPitUnYwcR6Gt_5ew7bUI0_)dki^C3*nD%J* z_>7?knQQk&QLIn6XiHusQ9WoQlDTTNrx>kQJQK;35407&blpY^Q@SNp8SU$uX8Mf& zR>#{@az{1jct0}tn;tr)Wh0Ga**d|F{1j`UvpP=ebJKNJHIzdI9y+HKQd(J}&fDKa z?edPqw_kK2A$HW|t91#!WVP#Gx>OSdKIoHf;TR9FX=8QEj^)t&sniulPoSptX_$Dx z+!yJNHQcB6m#RDaV*%yFOi@|9Tf=l$W{d+AI$e!988Uvq?(aVJWXL_;iwEWSj>Y)v zKBVlVpF{@ftu{2!_jk3vbC+7`KD^%fe{@5bT;H31xM03EdUy2_FwHjo*gvgk05zDd zw6ZeZ(Z`prrfOQKPgvbZy3EwiSA3uz;`1LkGuk6s%=di`5}dUOLNmZknoJ?Xbo5B<6E zn}QG(|q?tBy-jiXK83l`5E$r6VN%xt~wT&7}4rp80<%*+D96H~$yJNkttC8f?u3|l|MlC?Yjp*^#X|35Ym Bk%RyM delta 5530 zcmXAtc|c8h8^^!Dd(XM|o^v6uKI zLYV~*WuCbtv!rQl2iE64(Hn?4Li7U`Ow9~3Hyr|$&Ok{6z6I7Xg?5&_kSL zp5OuB03a$2e;}GCLp{g+y~GOdilvrwUD|0H9WLAU~Tuq zql{=_0gvi%oRZrS<5&q zbBd%S%58=fk6!{SHX+$mLY6l}>LfB~f(mPo%>!mOM|!uGw3A?DTp(^AgsdBsTnntS zdMnLM=aFaI2h7q1d4aot8N+e<2fF%`24_Qw&evsD7oa388(2ROcTPnBp?y$3I1H!` z#fyS^+Wu+0%PI!^pP=5x2^e;hiH!zYC&^4+&J5egj}v}p&Dzj&4wtg#`Sw88Wu=+P zj#;HTfN}23amfd;$mYzk=rGu%xor4IdoXir=D%PO(2i#bwN-%6k8IIFx_A0pwpBw+ z`H}5xIR_XV#Ew1A+(@C;oJSX(Ik6Gs7FEfpb;Nl^NQ%RJd2^VA~6^n*??vH4FFv71K#%tsM- z-3L&tm&jV(RV;f zW#&#g-!%D#a!Y43s`s|aodFqCu7i|E`uPI?98#Y8{v#>yOy#wN3ZT$KW<$8LVhcrV z$VKH}=V+s2dnvz09s`msm5s|vDeX)gUq)5b&rD{LULtFGf)j(Rfucv8nIkza)kUI- zIdGgq7uw0X6mCE(lJ1O|oMW5gVC~LvgWG=xmY8wQd}pBM9v9q5IU8TX%|5Xgto0Bs zv4C>%^=B?Q=o3YRBk#0H9;L`1RVA?%yeHo=pNFtZT z6;K};u5UV^{_$4knLoH3mpwq(m@G?m2h#{H$E^s=R>9?Lpzbrhn%i1R88+?&H4eJ% z%A+zjhDu~}mvOsZk$=Lnx&L_GA>9q&^1Pem@dcN6fl8|+mdno|b5rYxpMh1~iC>A6 zh~J27h?EGc&Prsa0RkOR-LHB}Bm-8rB~qrYc9X~k3?Y)ARxjf6*E8aNiEKbLkvhxj z$3zVUR^Sfy`Uz;WP^O)^%mdeCp7iC8B$NN!9F%$b40o%v3?|r3ln(Hv2lt=_Ied7o zOxO7`&vxe?)vO?yOXJF$JQDGOE5AsY(LRSOzd}22*N%IdwVc*nxi{zN_sE;vpSB`U zo5B61CO=Qf%#$|G!TZ$&&-?4OHLEJ>_0W=g52h*A(9sn8}h-Jhm zBBg5M3F15Y{V9<=*J#7zW+Rw;KVFqb4@^qp)u*V&ra1HBsv^?sT)u6K%Rq1e-(}%* zQsjERSB(`lkWRegV^bxV-z$FT$6eIChw!7urU4(5_)!VX!R#jT{yS)zh*`kT8WsY~ zHt|v6T`0%5^U=fprUvkok6V8UOtFVg=r$UNJH;p1kw>iC@eAS&V3Wu53wDq}%STFN zeLM2$W3GbnYJS5U`hENbev|2DE5PD1zhw-?E^7myYx5dtzlYzxoo=kM;CJjNONYkt zd!JHL)~We@QA@ynu;G6`x0rfJu0$5Qn?F=oOgnnTpY{0wHt!B!lu5<9@CAQ;Eg60| zlz-56IAHmPe>7zu;MtY0Y`g>JpU#_Jv?mwZ?cyc++Q|G8#=ng01J->hUzL~vM2GWl z-`oR^pX2{@6iGgJ$*f^~?XQ(UzsmpM!zBM^w@O(D<^lwL~`Oy=vYF zcVL8#Ot);ApQfsoOs^-;RjU$vodoMVPL*`I7;HwgD!JQo>fwnpH$G6U8$60aY4TI8 zn;s12bVHS0x|7=N1l88c1HkwsRqh!YZR0+ujvE`nX3kU<-oH!w5TYu2PHW$vRo51g zZ226L$ZRWA*Nqg);%ZgdNOEytvFhQ1eUuxnswcxM!G=|;o}MQIEL*FpimZTV6{!%Ra<*dR$Ex8 zyER-U0XnI+y)y?ad|Q@YXKwOSkFBtv&K)a}ah%#~YwdBf%n_h`RP@_{yg<5Hy*6-BlT@v zC9tnhT~T2G#(YsfF(-dG4O73Uq7taRrmhmqz-Et9S5XaO>>c&%$~|B<|5d+l6sUGq zt3Mqv0-G$=4L2xJqWWnJQ&!TjmZ~ui-$`;dS*@|$9tha4mRVPKitukuw-jn* zlRY&(6_go$GBmw!G_BWa29{B+^}4Sa6il@;=aU`%oxq3HOX|Hx8~CGe~H{%IZRiwt0ph0y&pJ!t)HiEPj;VO-O|{pn&>kfDRgLGX99An`jaOj}EV zxj9e>Sx)}4?<9ok=~IlG_v!kOT49yxIL-f66505LLRu2lfpzNx!j_GT=}l&Y%oE>* z+ykS)gfYVQH`GzTUCOdFnwy-2z3`OGK} z!Be4h2|YGtr$jbqu~2%2)-%=$WxGh>I=2uWyrl46h!visS%G!fC_FhH3=F9g-Y(k@ zoc}73wZAV^Hz)1xXf9NbeL$mb>vzH@d$QNHOsL&P&7#X=;hR4__-KGo--*mz)J{ag zClZ8cQD{b$H06!h-irpLsC`7;0U5c^g+kbk3O`lXBgCQ<%9x+V^~kOZbV zB|3HPLIXyC=+qQV=k^j!aIFzt3-$uX_K2RNNB}10i{1f#l=v1hPiBe%J35otr;CC0 z1{x4POJoBx#Ly%P!2B>V%;Od1sg*d(`vx_Y5HYU#eG--!ab7n%zqg&Zs96TswDV$; zwiK*WwwQ9rhP2(ii6*+iGwB~ppDRjnsdCVjONpB!y6?5_CdQquaG z)#7`V0c>c9Sl4KxSWT)F{~1Uwp4%XiS(#~-VO?p&{I8aeD<+NZrd2r<1D_MMon7vN z#Z_s$D#&96PTC$8k7-8+ZO<=O^mb9BwT+~mx|(SnTq#w1p3wRp4gvLR;FAcHC>5wzNMbTfgVp+sg~V z%>K~cc|@N2?SuB|6RJ(K30l){J%hnqytL1sFQ*vkv@gTSr5C4Z-zL|9iIcUp7FJ** za&)?AYW!OTo!MW+wayY*%x}8ZRtB(HZaS;=HROR`bXIjUh(Wpzv*~)PJe~FHyA+Di zMDlQWiLQ5g2(^vxy1q?QZG)LfH(EG>n3MTqZhzAx~czCmXGVGi@TWtHtHYU z5{uoW!gac3_cJLeOJ!~e36c(&Pb=M~;T9w-6}ru~7pcF_*8Squ0mz=D%b#(Krqx*8 zK@U&5(GuO^2#WRTue!pI^XPr%iA2^vL3fVPI{lbLruNib9!uwKeU!DX1*weg^TS3; z?NN;|c)|a~I%^y+?Wh(Wy36yE)2kKpY zvZ!4?mHG9OJ~-H#in_l(b}U)#@JzoTivk}QreERd1QvW&pLQyRn#nDFPUHk?r~hcA z12*uZ{#4aVYJWrZCA%}}W5@{o)gqFiW_R^h-;jI-E!1DTMHw=nyS`MU3-j|OvVnv2 zrRG$F81H|op&Cjam3uD?BfJfPC+ADWRNer@%?^{WJ%>Y@Mmsu)99 zWRbouVIO@IQ5ej(R?!=HnW3{y)7Q2#gWdn=g3xF~-|C%U9;*$G!fG(BVDS3YoJP<^ zS@hHQ|yFb$X+zc1SRnfFnZn#)U`P*@m z;gVl5SPy4w!?k%U0CkYzhHWy9b?+oH+l55hR`_(o?O3{jRb$qUR$WcD#!k&?_R`KX z_OzuWShH6m8}Pfa_wNzF_tD1wuQR}YY%mV0rEpKWYjnZ!HPMdt=6Jdb*>HadQ<#Ct#9sds77fLB$Q4REnf1a!?H+OGhVE)bS04oa>yfwtR#3Goh!hS5OxUVQH7pj3J# z@Y@-P;ujs1%C>~mo!?Gq?BvuC2Svk5PWlgavRw++MH)~2UPO({=OEM&_#Al(p+v*i&IL*u8bwxt zXucC|SK7}4eG1TS9Y5Up6z$Fy0(%77zperth$5SlC(xljCD6CJgTm0qNw13NFpN7n zl!}g~)ew7w&@uBT@1x^usx;XXou>_?irS-d1ntLbGkFHs_!XU>aNJYp5MZD67jX7C z0_G$^m|Y!|N;gNqg5wa0V-eVaJ3jXafss_jg?I$UHzaGJYZ`yQR21ENuYo9C7TpIF zLb&%v_i2>q)m(Ish@(oMpvTXNrzW7sLT=#J0Q5+oNv=ST@29Ea;js6dJ(oJ(iJs|k zkV>Ya*XZfg@elNho(<#@1V^Axu+*sSmYx6PAdH^Eh zDaKPGn7q$Hp;MiVS1_^WP+;&pgpQ&6xeY=1?T56PCWx?~qGU!Rvd?s2b0aL+A55=u z#los3=mo!H@re?Y&>}3M`{7bM#GIc46o?ry<75|mF5{)KXx9)hDoIsBYq4vOh2jxP2Ad=BB%@Kq4S$|LL0XkcGSWGntakOyux z8V)h-G;))^(r5he=v8Il_GLVa;r_SG$J;H8B=&2i@nw`Na9qXL%KR|A7QQYG02*u; zTA`IMdN?SQ^1`}y4G`B_6e+z4qE3HN=XU}_`oO2msR$`;_?D-McFn?<%;V~C9_M0V8^5b^uP-PV-Avq*7&1Ea~#1>(U}s%lJ@ zc=6m1;=nNRHTMQkubpIDzY*eJlT928rNO0`PV0r~|< zP5Nd5vAL4}8Ak3MqDv zG%=P65}Tz-=ejZ1C=QB*a#HB+LZI9mDcm*`qUl~IXE&6V76wDqwn*!$c>!&*rTFM) z5OJHNozWd2>UNcm%(YSXyl%vpXw=W~_ne-fl?e=8Rv{kyK4 zYc$hi6$hmXTfx@8+Vz@K|`D=QTR{?h4Ij_nQ%JE+^(YcYiB zu5NF!i4bY!b$jb{hls4AJM^P9uxYI>eJUqtR>a8#Z*&m{R6Cw7mlpB@%0sI#&H&ZHchhOEEH)&={ zw%n>AC3@svxvOh7kX2nCSXfXKQu%rE=suT$n?vNW2ev>YM9GsKgasS1H8r{0x@{s2|rh~?}lp}Q%%%f3qWHNI>#8Y{pj{@vICojniW6}$eW8@@Y zc9@e3ZaFCY56H1&e+AO3%B$PbJ`%gcyfnJoW8~HClUY+OkXJAL2JF2nuc^#Q@63_c zWH7TV*Rhz1WtsEc$&%9?lw4lPn;vb1Wa%nz>yicBx5@E=KU3xoIsU{nh;{}!VeuR0 zgLULP@&fsh{Ez$$q17P2P)b@q=f$=6BqOV~fMiC}j+2Gtb0@F=LjIsVl$8^f2(qJ- z*L#yX77c%qtYS~eUi(7*EXh!$;JLe&Q77Zepx8r{1DC>rH_2e_YF&g zS@Nw;b7@8Oo8(((DW82g^1YZa-h0VUj`R8H=JIoI4I=!A{6gN( zYVWiBLQn0)hsrNLH)ll=F2DJ~JTWiH$=rJm3VUq0{H_E)T=8{tZm z(u^pNy_J@oq9Ojct+bq44C2BkrA^ySc4n?EO3w`}0q&+LeX`P6kDgXWH5p6;&sRpZ z^8x-Dq6Cd(ttzV9ir4qWnJZb zW~RN$`t_V>)e&XG91fUwLfP;acWO^pw%p_I5d)O1K{Fsydnr4PPiL{Qz(J`@8RgIL zIV@8@D!Y%RG61wx5`CF5F;_X-tpHNFSxWLUO8i}CCAt3jdcgaZO3Kd(-iIpZ77S*t zDO5700Opd$$_>}1K%-8|&Hh{I#50wg!Yqid#u&xw-ab@$IK~U&)CVPR)?(oNXC=SB zKg11x<>?b9+y)Po=e`;<*?1@IC6!OtbAYX}s;(=G)IVj_KvNguO3XN`i+zP!yh3%x z;UFjDTvfNWdzgmeoP6M?x^F)SjP+1G)^e5?MzwlFuKCd+)iZ<+FfLB5@7I;JcXPE_ z#|kW*+Nf=Iu};aKq;|X*45U3#14hy@vhS&*Zo0E<7^{vE1%T^(bxejkM8&c}>ew9v zA^L=?SWJTEZC;1GltOYSAS7w)jSAstb#h5 z1*~Llt434}W1X4dpeXr|x~Nf08c!2-(GZUQ&ntCR#zyue+tk$`_}YALL!1`(G zx+7*9Q?|P8Rv098ikfIEgk&wI9{c+$<7qcF`9UG$+{b0=$xoH2yc=rzG;+g22gQZ4 z>N#6Uh}Lz~%ofzuj*aT&pgs(sC)FF4RKWJDnjNy0R%=l2HqGHe^yRYkyY>690e!`e$v};CebsMgm?-~p@_vNgJBwCm>!$a~E(API>zk+QfP)44 zc2O*ZN~Jp}_LtRnx>JUgekTXTipTmcb05;Y;`D(^Gz-JcQ}sQ1?q*G$pzoQ;)*$J! zzIPy3nmAwI=Vl#hK1x3@j*_qs*AGtfg}Aa)KmO`{Rs=)zzt7$S@pgg!_v5VVLiXsV z4Xq8a?1p}N8(PkZ$@*D2{C#eqlN(R!=j=WOvHQ4w{)k}^{-yORP4@S!gqG_!^!Eaq zS@b)60wAWI(I+g-gYeAL?|w|tExDyX)Lwze%G6&nQ`Eoa>u;{S4iV;|zjMb5MCa@8 zx=>Q#JM{nTsmO?RK%bjOzYqVY&odT@9#sM$=8~a`x zgo~&C+j-jVxp0GSdvS`eox$3FE<>iP!DZw|>i)T*Oi~!{FBrBOn{F5y#lse_>xN-jW!VPRHVk|ClhX|&s?~%D`Q0$8eJoYF)G)b2JqWKIhLFu~ z**K3dg#B!kceS<~?DJB2G20OFJDKp^Ft6Y#`!dxKWzS>rq8R4?#kNyl`*7kE z!;(J(fN$3fF=x4xox2RH{^fw@svCAqU&b^UY)JAfU^SR;INE;`M2SI$)AJ)ZPD{h- z2j9sk!dl$uD;lFhCh_E=&=@`2pWUHiT)BKY z@Oy%TqR|}Vx}7Z{*4d5gpRjz3P-8+%xb!(^+yai8c)_^c(;w*l%6M#6Ux<1qjAs*= z(l>oJo=xF-+rM7Mw7>?e9cCEQ(+5ICy*Fme;PTWT4oWUCW}Kz=_b)eQZt`MF@-*gU z33vN8)>AF-Nb=RmpzP6L;r$krFSy%zVXG%9I7nC_$sRoBit{>*TvEx4*42i zce=qnG&jES;a;9rF@9RhLLnu>__-%5!g@uFUn|fnK5Wx4m3gbxEX`PC4zB)tvlvU8~b43*xusT7v;PVCXlk;fdK0 zYwv3Qm8!7zEfaI8q>F2$7SM7$#J3@u@u1dS@XVs<^Sqw@4 zt2Wz|!Qy3rHfMKbHocxszJP;bbB?y8MFcJCnid;POFMd6b2yN_aiF%jR}wHFO^d6` z0k0ahtvulnTl}>6J`D3k{j@#)Us-S#b5MBbw4{_Ah!N|xBONG|1P|@l9cm|}p>|Ro z2=Sn|mgakbdl}od4i*oYnWK*TKS0R-hZu(W)!aU?V#Z_ay>@h_Gv7^(d(uwM|IgH-j*Vw$rA*zLF5{V5im7|z zaJD)pO@q7Uvy@+D8hrW&ow=!L*qZ%Jbgrh6J-5@E=bOfcWbx$Wor98Vrstsrp!8~-lz_fp44kUxYbR6R$o<*6?{F2As;jJmnNE>@s#FRGX zELAhjlwtRvai#Y%Wz?mPF8?rP45-FvddPGs>=?xMPNuAz10hB}Hr>0+@U?A+>3$8~ z|GV1s-~o#pCDHV7qz^=!!=|SZA0XDhH+?GO29fJ&Hjit{li}9pqAy6xM+YU>&gN2X zR!BwM&2CFR08LMs?QUO&@nVA6oz1^EkYcWwf0e!Q5R$q+{ExZH^g`g{X>-+CG^Y1Q z%{AP4KjN;rMxCwfrhYYhE*#9jp_+Zpu$O*a!d&}jcNw|LT)#exra!~YehaE_V|C2_ z?&Pc}C$C4F{R2nRme$$L%|a?M&ee8MG_pDwqBA%5<4#^TGIu(V3T#_$4ybjDI(9er zTgJS!{gwH*?+2OMCzvN)psnQXGtVfqnKg}vIrMMZ#u&{(;Tr1X`+?@UNAlS$YUZUa zV_7ctHZMKG4W`)5=4HB;wBqmP6-_DP3VqG7-Y4lE=ge#83yAld&Fh}C8~Qlc{AU+; zh%&+Egkk&nVMp_>jscvwrg_h3F0{!e^WJgKc!r)~P8`ipnl{>e#EUjm^OX76t6+xO zMowONXg)4@Zwq$Pz9!gwy3QH;>p1h7P8_IwHS?8|!NB}3PA+-iplI%Hew@{vN6Z(@ z?^yOpMbBE4s*LfeJ1k1zPs#MN=!+LHGpw{|6|d6z`&+bl#+5-+EiQ-od;1iNOZMM9 zIC^LCp1K91rI)2$w;1+~b7LJBVpfi2;6R4owPP*gXFPy!J~W5@UrEdAG5>>@JIcu$lPw3Ur$WqoZ8?<3?^o8e9Nxx_J!)+^cGwl@ zzuIzY^D-W7&$Of^-=HxUv!p#aWoIoh+LFGAB0bgKl74X@C+ud)&^T}{Hz)tDYsql= z%9T%dP%87$lHtn%PeocX-*Uo=tt^*@bOnm{wqzIOLO;1#?*5>zABR}(*P$EAS1qp| zr9vw9+45!TR{l+qWOZ4S2dwC0E!#ZCP|j>WVXbwAp;l{Rt^Il zV-&=OE!Iva8Hl1ESi4+zVc%EQ+6xL*ly4p2ULVLvvkvj_2dcPON4%gn?OksDJ$X40 z_S`yg<~v~I9qYv9RKfa=)*0#-Ce%09&<*byiVLi>Dm`LieZANk*`DsvEXB#}%MMCq zI$IaE&1IlSw#MGbp?h7i#xS z<9;Y*>z6Ts?Q#>VZEh&n`TnDAaraL=;!CkDzQpxUzio@nqor)s+t&Z|f%JIWwsEal zM0T~sSC6BHJH&i1@8UYvmfkgmJ|Atnyqe2M-fO%4fOhiF`WR0)7q!V~NbZ?Q9o%+r zj#>S^a?HVfC6hj-4*ev&Vg_$7yQR|8#k0h6Qc6wP}BeFyNl z#!ktJgZzF0qHKhnQl)*6`d;VzEgcM)X{Ydf?VwjJ2fYoDmoJ9Ut+7+GIn{x@bvh8| zM~3pj7YEBvcQD<}PRVH=!O5)Kylp!p=LSgbihu@=^B(K`LKzbv!Hm^25!uO;@t$oZ7>wy<3R3qDE>h-*JUUZ zB7r610KY5Gy-DH!2B2vmd&g-4MTggX-x8eD;O)k3xt!H{rbEBQSOh zekzp$oJc_Ba-TV|4yYP-1DH}3)!uQ%^O~cEGzoYgfx6c&L1?|;9{&nL=?zaCCn&Pe zBCG~PyD8|h)^-sXSOD)${Nes1@V;0A9K4LKA8G){dXeqOFm!853;5NsQ|K!@SpOBe zjo?a7EI@bDdWb{W=$=jI#d_v;hZx~&1WiouDo71OX(L05Izj_CK|F;3c z=?VG{DS>cxMc+VLG%Ff?Lw3-mhtcoHhXZ2JZy6VGr#kwj{zVQ#zkkou#r0t8KYsym ze+v4i?toOjItGlLO&_OXz>@jE=c0+I2G;=xSv4s$aN5U?pnN#;QFI{@hNI8V9R=lqA||E=?oNC=MRJ3P`uIy zXtrAzODw>S7j_EysjzI^z2E%c8W+vRQXQF{+=SLb)+5Leifc`3Sg5;9}%7jhakS65UqS%fLdoooA&MyG5Ml% zGbUN)Ezy5wAb)T~4F1L$=Lj*Wz6RpN12Mf}6(Ikd2>6;0Y-ub44_K%I)5Xey5UNLI zu|dy!?O3t39FubHR1u|C1ir2kNACLp(;oex4Ps4CaqI|J+;oOWnfxnoD^y%5JPom4 z6<7b71gV@wTvwui7wha48CsF!(h_1zvB;@)79!e7-0MUOyzVI;ZlRj&`zRg-&{g9y z#oITnAmY+R@#9-S6K~17c`L;8DN?Pu`>B^rrG{>;PXmiGc|orD!%h)3Q*tZk0Sxky zTKi=Jk&h*>3smmiH>5UG@3Im!vQw(qC?ZkoYMU+%yL%p@?!8pTerf4(&LZVB-7M=99q578#T!TFF@mP})$+>|!eZUA)7k)oHp zX67i;{w3WY8dsF!7g&I62c^U%eE!dLDSg~oVEDD?(v^yN5MQ#T441F`&|gx<6Ca4g z&eCl`QM$fRx|5m&vA?5~yP+{q*D5`hgCWkoliqd723i(L|6JYyT(2e-rKC{o25X?# zLCme8(Jc3Zh+h+tsB^NZnqT&Cl#1mwHH<|J{N|e4)A*H=Q5yFwy8oqzrt6)@5UKu} zKF&)Z%DlBxs-$Yh7AypuI%p>R5R_MKG!v44FjzC4xsI(99XxkRGyQfh#JUrjkV$2L zRzaEt?I_W?H#K4Jm`FC~P|eEmg$xgqX4O^>uy=-LZMD)sbh>8k_`bl10IjYO$$vS-Cuh$G+S7C-+7eCsW@RjP4?$#RF=3^Qem z+_5<=8h=Rc?VLl!`X~=ADX0hO=Xdhhf!BcBwdL{0qUg{9d1_K7BxAljtq&(s5G>D& zn*=fOe8gOXOP|{>eGyYKi7UVE;KScNx zG96<11Csd?UXy&y`%Wb7y?mAYPhZN$?P&SmAF`3_uiy&p{`#1rjo!h6{6x{6@PUME zMgNg{l^&oN7bY-&(i0VR0~6}X9>p>)11NM=DlB3AUG1khm!aEl(WWv7HDW0|N0@=xm=iNMrultl%?^(KUc`L0eQc<4$ zt#s(I1Y*{9r9(g&h$};s&Rw?ISh>b3{kO0MxVKChn3=*pbg?p~^)MjyfHKD09e7Y% znJ~Hr6S<=@vGpg2%D*U6S5Vm_S||avIs%V|DFJSDN&En1=5!0CFISnlg%&7@w^L;J zD@zNRhp)FN%Q~k(M8+%25}0^78fE1q8-MV5l(ObZd7$A!Wo_r(5EX_fo2ox!Wjd^E z-pmiJvng9bIbeR6vSlAvYD-n3?(^><)s>wS=1|cSl|5%>Q(ODkDLKzm_6CQtO-)n| zo=&0w7?oI0=Hh>Elv8~QApP`QNmxaTe=esaG`-ve_+nHNe|+FeN9EGeVGxZ{lyu35 zwM0^GIky2?^iXaO-pM5XOUWzAgeaOEp;%nIc2u5>YXFfvNXefU4qQH~JZtI&adVgQ z>Lm+qvwg}NPa~DJiGxA+m9IDQfSrT2n%-=d(iYp2&wX6x2kJ7+i(VEymfdG(G%oLZ=z z&sJ749n^-@3gSL)rJbVuF75Ib9T-NkcKL9A=fQ8a0z8R02`>ReSDhHM()LHZ_pkvdm7A zo~6BHEf3MLSexFSUfVNLdu_r%2=9g3TV{rXwWc;_=1z#!*R=QAdB`{LOxh|mk#*QdN73VgNimNPM49?=$;6F}e$U8!|nAU0Igm7c*GoLQ(V z`(Y%oytSPoYmu&U85clzOjosg0#G+qSL^!);9)mi!%TK=mUx|eP6<%?ysll61~`6P z=e@|rUZ_GUFZxj2f^|J|E3w({VW(JgP}gh06Gqq=ov*?a-gaNtum3^d$W&ebSZ)sD zn&|%L%L&H%>IUBSpznL>hVGyRZ1r@*Qast}l+sONLydj4b$`x31o82s?$0yq>}DR) z1^PFFShZO<+t!)EbGD^!ULGGT@O5zOIbG<%WQc=Rbc;ugfN1?tx7PH9z0hjimcb2x zwr1TPcOQs=CAyep`4IK@>kdAr#a3+7o#?92GH$vIl_suvKzDoX4fakibh)_}V97Jx zJttZyc#rPEp{mrZIXc_pe5QVIqAuT18d8};T|Pw$tDJSu@~EC?Y`S+P28gwVx{rsg zl!!07@0S_9m%R0w-DPP)tKKqr0Y&tY-f8q!`aD)&DK3a2x?2CsW^Sn!G}ouOZ3%je&(>KFgc(}nrN_2G5gSpY-z zEB5*T-#6$ZE^;CJr|H+d;CQJY^#^9JVxerIkE>t6SP46zKQ(w8M7f&!^NT~+2O0I} zAN@=A(qFh61o19XpVs{`@Bh=M$8(^VI{K@=^yQOi{nesez+<^SZwM{1a)v>;hd}JT zWzatk2j&zRtb;j`n?Z(BL2H0_mkhN}GG@vwaWE&+(E8WjD2t*4hVGZSf;+biJ-N3Q zb4o>QDeG$UG4%JW#Bz1g@W)aYh(7xb!-D9btBnoAuF{~NW*hufPUjH$L&KjuGmJh< zCOtPyoSp=6@4aFAlm687`VK}F7-lrN0CDY}Va8lv{yosaogRj{W2pV7s~duxc{oxz z)L^^GarzuOX$YR$myz(?u+SFEvxBF0iqAh87S(A-{d;9tG;=BsFH#Ik=6i92INq>! z^=#nJ7&}Fa?uJeKJ3wrFX4w3a9o+nkh~?#+28J7=z)@pY8+O4lm3~6&XJ#DI;QiV~5w2O5A(Se5aZ4Ict zy(0cC=V}{oxVMDHI$qvzFLo#^WZ36T52N96`X9tjef-z)?1y? ze?C3+x|DIm*lMhR-o}yLpE7f*8^`!wW_wUp3@G6c$j2N@w~z_k8tCqh2`1Po-P}?hj@`-YQj@yalzlzvOnYG(iu~G4=YRh15=+i zt9Wb{YU&$1k`-~GX;|-P-0l2p8g~8`lUZvTvEe9X{gG*O|J`gU-9#3l+(o*kttrh`nZcEkXi95LA6*-1N*hv}ayr+P5p)`2SF9=X_E3n?2Tk|y zQNDJmriXQT|GdQX=+Td+rlRS|Xm^OtL8ezBg%F$lOkXRxKs<_2)roB&epc1eZ%K2a zol?a(wStQUl68UVvZ4@ZldRfYibn8avg*qHzc^M+t@HYOAF+ zSi(1`UasW4UJhn|P`!LdGnR(i)V4FLQRf=jDVpDMFd$uR*NQ87zg_KdED6{(Q1x-U zLmw|t2d!dZ+WnjQ`@hFo+9#`1uP|2fE2wiSZD&&xrp~>|*cfNDQ#f~Y@bg7=LHsi= zBuib{A(HjORb3g+1t!>TsH-#`7{wRWHEn3(Dpl0ThUb_bm(-1m1rL6->ZUi`5dGal z-P_9*qEZVrX2emhyo`FFyAQ;Z)#{fwp6d5oT>#*U?wrnsr`4H!f9lGW4i zr%`H!gV(*)GlKWl77p6h-&N0hTwuO7RxkA6KtF#_ub-O+Ebistibr;ew$Ih)nSEK< zR;!=c_erJen3Y=8_@s$u#rKD0lFhoZ1>DaJF&nF9vCXSyHbzrd{s=HTo#fxUhMJvn zZt`C%r_BumqS!$fn!Wo(uwz~jX}=KjcAJL|rTlKlGEbWG1Y*WP^OPQyfLTWK%!o%xj~67(Ci9XLq3kj4o7a!~jb}g&9lV)qK3*pYV&O^iiG2P(^0WEmE-vh;YCe6^ z85q3YoVAa}wlIs^bxN&ar=`({tvscwX=zqtC!<_r z@iZ*rVW{5H;~a%($zDsZ8&2H%1zQF{p^KhbhPXBb(w13>rlXcQ+9DRn0hYO2zEFw_Ec2>8WnumBnv? zl$_%%%ep+KP=r__Z{-0W)>(G6WKhl6W2a~})N*)TCO5%FmN=E~6}Pk;&+5c9PPLrv znNNY5Y&n<5v_9c(Ip2?#%DZhzofZs~E4Ey27{X1`13Sx#^l7}{icfa6WK8)nz|4py zzqs0ZSxa3!#R9KbOJ(x2`PHrEHkRJyY@^mlM8lJ)V&%SGo%x9!TWm-4?$br;Ltnd{We0_TDkZS3rH8$c_t;lG(V<~6Y+ z*z>JKU*PpLVgOLLDrT(Jpo@T_H`q8C5Qc%-WSPiy-2x2Q4=l_#kqxEa_y^JVtxV*) zDuCawf;p&6f&>|=&XMkD$4rTEHu#Vx-czS_x|3UvpEm+J9G~Q4R%vpt|^|FD>6|l4X zNDI4wmaFapA>CkKMLS-z5DwgI;75D3yLrt3W~GK}Y9&}BOL!V+h4sgy+bRdJ-_Bw{ z9Qk(qP7K^eKRlzxz^pnTbpi%`Z~!s`h<%7g4DLb}82`vb*4V?$-a{~W;$vFK33#g$ zz^=WAcRn$9I=nxSORsIi&=A8o@{t3EMnnRx2Z>jK#BUh-iUuyohR^cDz%Am66tHI1 zCUTy;;j``{*!5=c9ZWmEHwM0|$Q30y@J;MW><_b5E=5!hUW9z_NQ{f+C z03Hv3f5aYg=_&*meoh>E4FOTKgBRWi$XQAZN5Fqq$j5&oFnlHX_#Ogt_JDIwLeR9u zvL>H@9&yFW%v?`)}5LMq+hl}l%pkZ zKNQiKmSCM2HcbO5_yfy7a}fQz{}ypr}?WsBr>=YhPz zIM5<1E3-aF=xgxwPM0{$4szG!`Z`M zX}e!j+2b7~6jz3@Ckx06b3d@RZ+d_gbY@~3Cga}amkx(r+c#ueCnrV_NA zD|qGucHfP=&q!9@oaRb$C}*zh;~s43Ov>(@$vx%6z#fQP)qp!d?-=e&E~WkdHgjLI zvw;b+0xBigrecL+y%*RW4}~<57Ho0dOvem`WcUrt_BTcIgEX+yKMDu=D@F4xh0{DA zaLtVh*W2Xy&+`?7N}hr})hLEHjs$DvVWNTS?x2|VZZ*)jv0~;=nfMZ|n0fgpixu

``iPf$e6t`GDP6)XFY@K!cetg52)Xcw#4IHQ&VgIC1tq~D)PP{i3= z0LlL;;%4{*vl=RP21S!To>L^%p9A*TT9M@DPs+Z%k0NIQ4eVcI=H7HgaTJAk#|MfB zaXZ02B`Drr%m61REB={&iV~`~qHb9paO4;-3-S}?Jet@Y{`QCy( zSnMBszxxztji&RzbR|<}wd4I77XuF`^5g2>f%6*9PaAm?sPN%uoZbs|^-q3oMj^Pi zC-`~8X(4ru_~j|H!NUK?hdpZm{B?kj7+X#4$O}Hg7%yp^WPZg9%F*Pm{3=B>I0*cz zG!ptKKR(J;piaX~3!tX0B^t=H_oE zvX1Y~e4fiEZ2V5LHk9AeidIwGi{Fw*ikU zg-CU$X*{uxc+JeJi$pSe)6e|T4U7V%jhR(dL$k%0mzn_fW64Lr|V2sj#gQRMY_C{&_)OO%YWh z3z{vIXr+>%n_d9Me-j!-QXH1v78*Aoi=N35TEusyR%PxC!C}!8u#Fc5$22n0qhg_b z2~P=fNoZe7nf&i^!PBu6crsJ)EG2PlVaB<54K&~Hd2*!o(b--7yJ zF9L-A1L*tbi-o`)ROc(Jgpq~W)Nr&HruGa5?m7!o2f6}p_6swo7#t|YHwd$O)=*<` zT9~_mH2+ADu)y&b;9Z@tpd-2D_7`E{d>uF&rLb@Z?O5+(=BvHJx?0N6Z=w*@pC&lo zRESC=jjHZ1Y@AK+Tf_*PuQvoboe|>tQ;a!U3)@;%P?6doY~N1vB-sf&3@gZ_HKT-}5VuKcKffze86B?L#bh(Kv;14rXn~639PEhgc zWv1cXLDBZW8DO5TXt&i1oYX{Y+m-C}alGifkaFVhJh4j;KkB+&#NOU5sAW1L_CNNK zBEd%VzA=x)t+nVgg>vQjX>sa(Tk0xY#p&!F(9|GK&$9({o+{2bI1X&KlQ`?&EE2Ca zCUPG8#d&=O!+`Z3rVofqFp+I+CeC-hOikMwamjefiIc6xkh#r5N9qAxjOeBMqvmwXTtYU#c2x#E_xBh*jn#cin?YO?!^ z`%6N>IZPIl^>qet&KtxF_ih8{GsLtfb>J)m#7m#4m?#E`IU)AIp~)t)ic8`(eM7L3 z3NgPgIr8KJ@#f5tU}NivMcNFYo?br!vX76 zCbGPf${`P$P&xKe4l&RNcJ!5U*ve-Ve11w_fwKEtj4~kbIQ8YW%D`kg9^BZZ9N|j~ zO>d|idEbp<;GJ^Z9`uqCrW+om{8f`2@iC32e%xI!<6`413oAow<)Xmo1?Ovgb7>(6sFJns@h4E zA5Usj&bjo$sgWv=eA1aGsj9Byf~g4@t?IF?`bsdsqd=cT2kH#p{faMK!@5=)x^T4bjAr(O?=jrYD)AG)nupkU{O)3 zse@w4S$?YdgWbt~H&hFE*U+)}fhzRpDfsL{m0@)T@s29uub*^Lt$tTY=lR~MHHLEF zT##z*?{sgFFijQR)|HB0ifY3l5-_c(GG@_6PUoxQU($GYm#U5}j-eY5gDS=O9i0bu zv{0QNvy1Lw5>!{#M$kaduPW_5|wv$Y=`VfB)CE-m+^EDfbI zGTXS&7~8Um1&5M1UIt6SH|S1@Yavb0(A?)6NE3cmf$Fo; zluTm&8)?@349eBc()?$EbcjeW^P)of+x;q~;5X^-Wxn+HXJ%gPFD;u&>VB`e6xz5F z%uOp9?$J1g^8r%WTz|R)NS9U{lIaSd&P2|lhqR_`AFAYSr8NuZ(jCM%DKgxPPJ=or zZqs65(Onan52S5J`hg{p?v@lX7y#f$a*A@|Mtwt#+Bnd9;x7 zvdH~u)>8g1DnNJZ8EY+V4RO-LNU~qyZs}q2II5C^rOIW8!GhkKc|AdT8&?K+^poBf zx{-8QN+0THgWYtKJ`5?MZTU*ouB2_kLFw~W>JN%@q%VPVYc=4c^sNPLOBf?#0hOx} zGi9kBDTUoRx!JImV1q}J*F2{I{El?A$|nL*EEe!bCYX zlHxJDo@`30UM2GGpcG(ocX>}|%8jyF@;Q?*f{E-#t(xoTKxx}pt(eq?UN)OfRQuQF4LpI@yFHf11aOmcy;$cikxR- z)P3FbRK}y!!+XV0L-<+kpFD{g$d2k@zX}62^{v#wS11(OarMM4r|35Cka|iWRfs!# z)iV}SIax;C7kv3N_g`D7y3HA~aTMhDI%S!1)I7Wn0;#^&op;sA{;-4C#Wy_%L4 zw}GqSMDqESQjNpnIxsO&fAM_dH zYOd+i!v>son`X%A4B*6H8lR3Obo0AkGdhM!R{CNuEY3dwZoOwF3o{%RRReX;sw2Rhd0p(gyd+osCM(V?AO=NKkwByFL1Ut1!JA279 zu*lciIYXKN%NuDI8YyxO%__BFK3?EjzR*UVT|vh`TW!Mh->8)hHS>d&_DtIhu$@D+ zXUl1Ta)@r}$1J`}MHjn;=gMy{n{2H3DbDXwdydTg|r!BUi zm0JGLKKxNZ)z3rw*sTnl{ci31=NaHSt=4{BK)rbbd!x3QmBB*S@fN-9QSf*f&gr~sT*tC1t>1kjkogx+N{(~ zeoF~+zE1a7+9tZ#DbmeZ`jM`UINh90WcQRcx+UUQs;19$%XWMMX7tuAw|`FJ`{R>t z)gVfMfOBS6&o`0lmaB^z@RTGWUl&_cM*q7RsN2(>!e-fi6Pd48mlR(JRx?nSqIpWq z&`#Z%+rQET{<_Se)H5GR&|NC4rE+{ncO`(#^R2H@+uX{+SC{KT+q*JTS1{-2+oI9E zxve2zUoVSvu1ko%ULnm%1K6{} zL_gr=-^8In&8GMzxT9mIrfaZ(&tq2phBLd7Op4>G$+(oB3o(4Kb6EHP|Q;&(U5JQIn zoAnUq-U9n~C6p7=!EB~Od2cURhXiQcy}%T;p#QTPEItypaaF*yXf&vm1zh|L2b=e_ zusk%0z75RvMAJ94J?I}V6#Wdq!g z$LjMoU@kU@qx3`3Hkht10e%#lrtk*i2kduh4|c5?_6P0&&ON|^rL^BSE;zCB43Iqr z$t}n(aTz!hLc_;qn#tlu;>>DipyMN49KQjqX%FO|4g=0^#XZ3bnAr~np5wt*|HPA| zuVmLrc=om#@S*}QP3gd)HF&pcJs>|$z?X@(z~#9ntzhWij>$DTusUa%Zu2G}u>-4B zZwJ_KiL6!z#ZC25Ry&cVwee#Hr=#G+RAv|L2EhyuzNvP~*_HUzNkHk5BmC$e3ddSJ>tcI;swFu%Y|W=!14P9F0G zJo~e(sV#t#wJf*#EZEV9?AqTE;5x>#8^SK&<9Rb#SzmU~t_#?yVs@|9d9VxP*@NF` zyI*qI<834q8Go?i+2n=kmF)Gau3&is+1Dp`0S^aGzjZq}g+145!9lQ|+c~EWXJJ|_ z)^0tA>tN#wj8k#l0!iL?1an@ONQKh{uKV;tlJGyx&gIs71kT!q%d`7LC1@d+ z_tY2ceqZiBBUyQMg)6vBIg@dkE85hNl)c?~?g_sLtjLyo<9!S05zl?Tx|0U_m-~{H z1%${7sFYx9%N2@MUSPL;6w)|auvM;wt0G;kY9(OmvQ(L6=bdWJ8! zM*9@bH_7pzmMQudJOO)RuNYz*1J=yPOe5FDT@hBX46wCTO#USkpLZ%IU;M>##mwx% zq;mllUZdyxMda|=il~U%Ku=Mzv?mE~d3#0l8%hty{fae{swprGiumpH`{Rj<^-ZmS zq*{vglLCM#brjo2tOjeCqc~c78rWk;#ZlJ)QueJw6{mmx1{~O>xICLC7%Et}>xSZ9 zEQNZ9B1O^q?O-1g6|c{wgOjrqAH$DRVg)E_7G#r5oacp{B$AmjGntK(h3Ct8F_J?3 ziz_dWX#zI<0dM6_uCmRr@bx6Vk4Yrd17{mE}?M$=ah;WuSd-PkgXdX)rfV#+LRQEVpXK8oM*j54t8Zhp^T zO0zeS{C>Y*715L5e||35=)rvA>MD}^7$PN7{j0^NDec=xJdEHA`^{>Ip6qsYz)VPE-*$^M~3}COe+A za2{tS>ltLB?@Io#e`H6n!zKLDs1fwV*Jd)m@BFd3m#F>P&R@%>{%@YQnamW(-z=lt zP@R+@>M^nFsvD1 zVdX3{neosO{=E(TaCZr@KG+^NVjFtyPV^+k6Ayyzy-v&_Iua>y_AVg4r0*{ylD+p7 z@}C1pQc8>YAHO7}?3{qy8gMEfLEOKSdbDGL@-#_=12vgdq-FQ73G%X37*Wtj&}^d2 zDr_j|!t=lctxz|H0XEcm^Fr@|F;rPqLhsqN!JdZ-eZ6-W zsd}vvhHqOzEe(W``B~IybQdOe3kGiY5GM9>23{o#lS8Q!8NN%H((N5J1XqOVRMy$S zaA9_kxIQu%nnIRS6 zy7d!MGmVw@H$c9PaS9aE>T5+ z&1!p?rsxbtlW5(z4ax5e3sam#JMSY@kh)t~aYnS?dkUE0Cpv8Q0w=W-+jx)(-p>-- z&7p9gl`VGa>Q9YyFR{mf#?%F+iG2^fr?%5s9B^$0sgsB38%k;L?20(?zCASxeZ+89 z0W>g*;o0^iAMNIgllBFHMRXOXe9I(V@-&m{oNQ{OHyEA7ne8r8*R@5QKbC^~n1{Hq z?I|kb$>L&aLOI86VpOY0I)W`UleP2_S9$iP5cyqPHI_#GTqthH-cARLN^xT~eee4N zanqxN)DY>#Eh!obnPK9df=F=9=ZYuvHQ?Iq63^bb37okprWVt)(I!;9@QJE`VzhX9 zZd2gj31+g=+u{{{9k7vg#hhNdfnzJg>yt-@TV4tpt z57TG?9yMY~svX$8qvDIwyI@-yi!aZ3fzu2X->k|anbC+}Z5XgOKY_9{d5?1F@WVr?p>|OY zKS6!{wY|#U{b+@0t&}70yV4PfDT8*B1=ihC24}fbkK?P1xcQhW|19NSi;sY-)l&J_ zxwF*kWGLr`xPa}iQO@g2k&-*gq_r|g2IYzg=yvkmGgbX0@=cMQ zs?pY8-EXj&Y;#MM-Hx}UA0Jc>N6FML|5deGLa}T--cHq8Ls40LQRT={G(H=qa+E0O zp9rdUSLqAKC#yQ=kS-MGsyu>%sWeBZx~|P99#eS@rerGJs_ONQCRP`!`quOSoa(6h zrA!1n9j6))M&q8)tA=PvDMKPvA{05|$VXARY8&FWJPE$>2-4-l%hiYQ~ z1oF)|)l45ZvfpFXoPXYtZ{DaPf1OrO$Eb|U(ut+2sK0)(mugu>Ii0%$RLhMeKytWh z#UFIO-}tv`bsJ}z__8YQU(y?`t;&>18#(!(YQqZ}?{=K((7brMnOLhzYF9yh`?ij% zGoyFVeMzD!V?`7VbWoL1OcyiB?^TxyDWB9URoMfcQ1fzBm6JjPo!Y3n=BERyVolww z4Luu6swb;~sGE|0G)?>TFR51KI?~79QtM=zzUe~?t6oXnTKLmZvxzj|DlPX#BWVzw zW!ah-Q-ZaW zg`Owo)JRiirc+9KOEaGir)EFV!gF<{S#FmokhRjR1%C8?wT0(KN(&~E7~kn2McS5w zxjIP3J2Z~*OsKSIdH}iohP2Fhf{yAnW^z`8rR8mUQswO?EuS-;S^}*Uv)BtPv$3>( zEggRTciT+nYb|X#*c{ZC^i8#F}P1)3*qrnI-6 z7ZAKdI=e6sy;;B0Qf4Am-UBsKW?EYkS3%11>r6eejdb~P5ZI1TDSJMx*l@y3u5(8z zJCod>>L}&xpb~Pssj1q=-grQI5JUFMPm&&-2%@UyBb6^W0QNg)VQ!-Idi^7yb8qQw zzAK$6T1u6*v%s$Rl`03`rEP^sRn8<~!Wrq)W~%4+3Z>7(sd4kZBzo z=T(`>eDmZH+nNGf$IHKe?1(Oy`A!b}s-sJsat)xALeXG9V(p^Ln;Bjv`Uh4OB?d0=P4<^3aR*&PbxBVJ$WYG9X{%w?XO zl=cX0{!%%`hs<EtyvO1Kl4dtsF$WaN^@~!d^ zAbh8Mck*vQxAXFYW3-Ke2>I3DKJ*MsoFIYjRw^{H4YYT*LnI zx6W0xz&tZqo=VMiXijO{R;?J{lH{n#H8s!EN)unJh3V;Z3_hn8-O|CR|s;BQ@cj)xjAQitK`V+@|An>vmQhI-DxR ztyAhrb0~5e*E5sz3{wAZa(lq@s5*)+KRMlP^{QTEQfD9aD(^FtNN#FV8*;__3+jYu zYSLHFw(wq{nQQ~p8;Xj+5?$1r9^D}!Z=~Kl&qzCNd`q1;zX=KNRQ2)DN8no2sLz3X zsGOj_)S?8qX|2wZs5EgVbyj#LNy1unwgb7KI8L42kzDk0n>u?;YjW9LbzbCIu+(?z z{QKn6zt5=)qkVw^t<(=6kk+O4Q$KbLqI;67>f+)^aLx9ppBh7*!2%zu%cH8nPPSKn zs&5DO-JsD-=}y;svo%()iS|k}Igk6Ax^_BnPFWhexN4wJqQ>saIHI@4p3d4@mkY-UJaOdPSa{(9qLT|G>-N)z*Mcq(RDY)%5#meU2HJ52?-kKOLQ#$ zxkBUe>wLKNp{7$OYKYD|YPznZBrSiS@v+A=8qqg^qcdHn(4W#!G8A8%&-3s zH7=br3+_;mOmAf-bDU@GI9&j|+G#egVBl(Z)ogi1K`PGE{5#kltZk4caolnGU6JO{0AH{g|47Y|FfzG+ zC(Y3*FX@uITyr9fRQBdZO-g$TCZ{=?vu|h61;S$sUqx%qF?x1bXW_9lO@`|w(uE?; zrGYe#Q-tYoeS@)s=6ODe{_}jzd+Osj=iyqR6={9W46Wez%MMjqrF8|^rfpie$xZ6p zB(1!k)MR3c){so^2ldq&?%kmZ-An5aYvhN_=*9nS+e;B*X18=wmS`&7pKj6M-z5Dpv@cW57g0V?^)4G z>(tgh_*qKlN+0cG*GJ%*CTZV3O9$t&S^H%+wcysBOxlJ9V>4Zc8}#kgAv%}J?R1d& zqU+pzHxSWV=PoU$8%vdL;04m0oy&BCZyQLXp6EtE0M=gDjj`_p+$+O7~alS|IwaZrb1P=~{==OZ1Eo z0u0Tuuxgo^oaX~wtoIX=g#UC2cOQXalx}Ai3Y!Ic%w&EJx}zKN!QPG1C25{eGjv>c z>gI1W!35p;LDVxJOw?U?R88f$RF^T7%=2}aN!!R^6{5T9MBB?S>hh-j`nIjft&zR) zKYguC(z#A^^|kV8j&~}(&1TBxhgN!nlN(s&Onu|pAIKQ<^o~w;R1jS)tXQCL_dJaH z^2U0XDhjs$p6Xq1(B@t_=sT9K2FG6LJw8>uiyGB%5VM9@0s!&Q2ABA zzYXbT?KG3t&S0CWzwDnzDZEmDeIqU7s=L0hm?Gg-m8qMZLHsKWT#r3Tfp+^2^k@Tb z1Y;~F!hsk;|3fhzE$H#g+`3x3trRp;!p^Eq66Coh;MF0(OY z6Hz0gD9*y9K^CUYFq3tCV`0z677l6%wkB4X4-O@&=mU-XJKkDGugmT zM3U~r28%?(5Mow%9^@L76ZP9lWQb~KzF^%PiAIbfR(q3~T!WrOznvv!d(2GE@dt4u zt`N;QZQ<;vX0ooC7WQ~+;lQ)RFIh-TB{!3^A4B~5NTQtQ;9T5~v9R8DGY#xwd-DZn ze}?$o@kFQh6MqHL=Ie;R)t=}=f|)G7lK8(fh_yXL{PS3%i%JsYc)nx~365(Zc$kIt zYs};t)FGjLC9xarN$_Y!blZvq@AkynO(0?DA)@2S{pu*ZDgrpNa>`6k@3OtZO z!tcw7wI5HyVxE|FjD@93Nm!YO&s!~Qzrsw;VF(GkClJ$hCgD#A{Gk>Jhwg!?Bn|wT zD8oR~nOBJ||4gz;xy0nZkgRkYF{gM^c^Ev2KKYY&LNzf%cdD0CMKn!E^=su3<*p;0 z%{vGdMNadt5k=1>=a*RV{D$Phg~H}Z)Z+4aVv0B9p8b@VSWO-V2q;}go#(p{>oc1A zWt=0LFpa#|;Jr*ed7rBxIuuL&-?$JRdr18aZ+Z|NuTKLyKm!x@n8{TCqWcdT;E$E$ zPNIRzmBbEM)4)O#=g`16u<6+%8a#76OjMf&CngiQodeGjZOx{^PcUvl8u`rmgXmHs z`OM8CR%^DIoc(L^S#*rp!4_l~Ishxa97RLt#}Qq9MniXY0wZZy9`0ZNjYj;kikN*n z8u4olG3O05VkS&>E1E_mZh}qw(n!<9vCcGdF&0ohi$>(<(MKM^lS}lYH%;gb!PN^ayt?7&`5z__7LOvRq0uoQ8(> z()`geMB5wFq63KgoLRKEsSTpxAT2#<15K4v3c`@CucWjKbBW$9p%r&9vDGXKn~tV6 z0RiwihcC3#&6U_88`?Q$15x&N`ePm*e0Yp97ab+an?OezLuIk~bkq+MCi|PoVuR@D zQg@=Z9q4p`k=RcPDn1-UbR?BZ1y7;~o^Ex<1hYTVgRC!zCXpV#Mxwj-lAfjI673A5 zx0^G_K)3eM=gG)gXENzaBfPl4p1v&eA?kF1DQYx$(8^3Eu3(zgtB7`VVzugSAlA{A z)j9(wdlAX3c0&;BY-a1WpV+fQ%wc|eqQ##q{ClFA%oxiWeuK>?HDS)Zp;`C!%wyIo z197%;=5c%|>M>B!dGAZ!!Yv(2iy zMBfV7pLY#oVEab67(*=MG&}ewR_-yF<%J>N-?e5Jt8<90e#9=#4kfN$2D>6`CVDx+ zOjdN6l{$1Gwy6~>ZF-W}u9fUgA86wBLw0W+63!kUc0URxn;ykpJnu^Ea3l8R!40C0 z8cw@*J+Z&na!vcj?m|lK&AGMCAzC`k!gPBx*|t!wwM|!>W$n859 zb6(+PNV(U|{tOeJslQf zlezHo!%?4Jn#uNj=3>igh#IWn;uNbd0;b3iYq0HTQszCw4lTd)eB1(WoA%u2ygcN^atX<0#O6$q zNS1gK%Xugf{ULDeCKfi~C8FVH1FGvONrUYe*gjg~qWBC~IU;Em;X@p0B<>|}jh7!J z{ck-WcK*I(c)es4SKds{akwPt)dHfrT1kj09lg3D2{{eEwvj{@3_(I|V&R43lE|C4 z;Srva#84{;dR#KE2QvHv7s>pW21Hwf3dyo5)kJsJN>bNjfW6Bl8P2td_T7_YOc_Bm zrLAQBsHMonZ6rJ9yAsE{O7>e#CzkIb+23{qv4yUZ!$0~EZTnr4ABBl}l~|b4K~lOH zvEjx`ZfC3~R<=>{;useCij#Z@K7i8WCaE#R79bxz zJ>Ok$CYDge_qqvJR1D#JcYRqOuz&XY5V4NT#8FRg;g-+~B7jT86*91ea0 z6Tr`4riIt6!7un+0iqUat-u8~IBcT-}ze^8){Fvatif^_F5w3N#P*qR0)a&aI&kN1=T8q<+X-_Cb)>`OB3OzWO(bfGNGO|RGL*+XlU$&ma|%L z`TahzxN}0&iI>%(~#jv^yd$u*PvvS{gy(nC@W%@{Dr>#@ZjAX!FL_{kq0+~(ZzXaj=hD+-SkAo zn}o^U?nITLLP#JQsJ=f5Q@gz-)+k*FPeCn7&lIAX_9l8fS%_*4)8yJPVe#ibjw`21+}09Y%EGskHmRhUn*BN&D`32iLHd4!jhB{I^-^6Nuos`(8Tv zCOqZEcWE$tMP%1W8eHH=%rQ+mWjh2P_f0x=b1)2&Af5X49Ez&)py`4*dr=zEV*onP zy%wg$naSdurID>pqqAHqoi!1`vPLJJ)AA6p;|-(<=)t+#U8IRk(AQ zvu-ZUxn4qa_>%Pa{TgB)U8Sc!I>XYL()^j=md0kXi?^ibwRMPj=ST~C!m@jsOD~6v zCN`*_^oBZ@NPAgY8odQR-d}phtDM+huF|_FAb^KlT6x@oSdg{!Z^NS-#1_1iK0E43 z>~)~@r76v1SG{C9D+eOk8JW{S zWP_H+Wlg`GMUmcN;iG{vw_>=g&1{)_X$?`sF|r=H5}0s~%sUAUn(b{vw>3n|jIukn(A0uGvcL8@AW0ZGkSN+Xk+O?Mvi#S#j8p*~%NN9YZwpsF`d*Gr7Zt*Ti^#xo$rMsF)^i zIu}v0x30XI3Qlb(TP|aj%mG zl5m#f_Eqj*TptNMQSM(+pA2mF3HhXEEuqq5^2zwCoFOx<{KsI@jNTC74?^(@{dbJKNSQ% z+)VT{mmU%WPi{gxa!s5XnM>?$ju>v3@iXGlRgA3gMagipaNBEfM*Fh}qhxVL>`>gF zVc~XHF?KRa%kkA>Ts<5JHTobLu4BN%lf?M&5jZZ16&DyXaa=OSO!j`7nAE%n+KJ9$ zQgk@ZYc7b%37+Vc--;Q_V{qWqRy3F{m}ebv&8}X=)_oG!K0)g^znQr9<4EjR?ui?Q zAyr02n#sD26E_nk%4sETYvqZ9!|7tqoH4{Y1&il)qn+6HL_Bw*C362MF>h!`^ewN% z{QU967CjXUWQSFy?+D}P!leq3#ZonpH9$rr7whvAU;r6I!ZON4@=P(Hog6=JP@#L4C= z?1wlJ>s+RAoQ&^Rj5L!aWh&g8!I@5#DcV#bN{Yr<_{m<;c62c@KS9y)R|!$@T1BUm z3D9U`g{QL%u|H2MJWWozFxA54hZWvgo6%Hvc2oHD3MKaKj$-I2sC=g0Oy;>wF>0MN z+J$JvFCW_Byk)s!%oh#zX$2K)>?{USENW#79jp}>L}*!ZG_(TnuS%~X0k0_ijPIxWOmQQm4^fweiaUQ|g{SNk&u0%n(K(=aDTQY4I4j;v#K3t@ zit2mTFzIc@=NboMH9m^39jhSV8#CFV$BM6`v5%7MRC28iE(n_vr6iyU_M+KJo`=Lc z%9KKQE{+%0E2ZthIc=1(Ms=|xyJKNViqg4X32{0{WfKlI>?&6_w=2Uz(OhMV_YOq9 z-<58`OW|x1WqWUgYo433i!Xeuz((1#trq>pLuIdbKO?2PD~B7rQqg@2$`P3XM2{9L z^}`+^=eJSn&)h&0ou~9)bpSmB%O)`;jKfvyCgUA<9waiEzG;&y{(>=U}Qn z$^soslK)v*&<-ZMVxuhhwHb1Jg0d(shuDr3W%14N#HKhZ%jWwKdB-U4-mxRLz1pC> z*8*QWaaZ2IA4i;WlCmPuo!9^;<&1n(Bpf+F(`f7ogP?Gr0yo zR6jXrh^sR~<&aX1{y=q;fxt4mFR9Xg=5`y)=(b&(5N zF&~wuBbd0r!fSu1JckD2HiFS2R`Lw=; z_&;z;H8vGxbEm!Px9^8gY?`RTFT!~qj#ACC+lba{ohtS^d}LatnXJKP3#;p?=4C&^ z=2)p()+-%d?IhK*Y^?CyPF1R;7pmP@)e0}D*d;}k?sf`M^Fw7^4pZ`XRI3*(|NlB)wPT1QF^6Q;ZvO)q;E`(2Kp$e2d8&Oukhq6VwSVd}2rxsH8HAi&)Jc`? z3a4sSrpkF8ffJg&7M4g<#~40aU$t;ehU!e)vk2z~s4Q+t zx^9yVM097_h)sUHBFgHXf@knmCNernkDZHU#~+MSbT7Z2qFQ z`d(YuQW33w{V*3N-1+LyQCslOg8>@bRh2}m$~5(R;9Qiys&Q^~3msJ#P3tR2$=Y;H zn>Xu;z4Xy^blE}_vQT625R-^)Y@r!+3YltYTg{Mbw#aNJHKRx%N-=1Db?kuShK`zv zI!_{(vzkdS5MD=AnrX+EC0h?^|_i^($6T<2Q;zk-V+7Q(adpv zNL1ZOGrvEgrFV>lrO(Xd9I6eP#r+;2fh23vZ`m%#+st(c>i#j=5`XoFvW09Q@(KzQH#l%*FBpPZ8B&+#2-cw8GYGW0tmsn*+|ic360=M%(If5KegZYui-8S#OTk zw!H#PR6NzTd$g3;nxLH*idMMeR5B`))Xzp6SZ5X_CZ(NR=czL zCY%HOr9Js)Kcaf6+B2~dqSZ$2xm#s;&PAI)>;&@0BJJgsCDfG84c3<3hm%$A)ZQI6 z9XkZlKEtUz`5(}J^SVYX?av_MoZn=PaoD}x_!DDI)B5B&W@+3s;g@(Hw_`hZ>=8wQ-eZvdcVk^u+TK!^M+Z;g+ZLspZZV)MbZO`NSi*sS?vhY z(KHIcFq277;iNOBwq(|}ok>Bv$%WkM7C|85~pIKP)r_Rbnsxd*8k@O9;OK#BEur} zA-X9+ep4puL(LOS3(?OE2=A;jO_g=OXo^zQ;otLSsnhBoXed|oGRqWb9HwEqtbt|6 zI<<3v7{6m_GbjWLHtPsWjifOA>M7)(HK|Abd$zQy?~X^L*6jUe*4lX5i`g2_Y{j2F z8BD3IH6kE9Dj-}pR38x$9Tslvv5wgt`ErO|wzXGLKhuzqCy>Ja8Cc#=9}?u3QOX>T z6cn+ZHu(RcFXRZo{GoV!Dy|{PKaVSXg90K$q0k89^di>ah_Zrp^icn&X@*s^2K5_^ z{Fml+eql30{B@yWk-CWiI+In5?u|M7BRV@ShO=(`zZ8TO&wvI3U|Q4rRyO~KbJvAIRlnoKKnUs&hLh_*f;!-RqmPtpCmBaWjGLsKwJ-^f1Q|U& zI9t8HX(B96k3|MxiQ%}icv$#9cg-&F-$ra@lE`9Wok=E>O%uUBSU5yhw+?UKo0f9oF;4jYi%?MQDB)&kGuc7_$~ht!t|Zx36oC3@f(UeGt7U3 z@Hfh07t^wh6J(sTG0lTnIsVT}_{X2qF0Zro`nTvUbrWYq{-=5VwUCJce)<`Ro}ftc zO7*(H837TI=EWPY)G+%lAO8Or_HS|B{~zL-m0_~#bS&Ituh2C2Ms*A(W$MhzGpWXO zZSrbAT$vV%r_8pTh`(lcf{ILc{qfmkh=~7YQUCwZqW@R5wA3k}nAT>^M8X$B;Q;@s izDZ#-;0?%Urmy|=k@|`HhyY`c8dmSfxCUI9{eJUt%w3RBUg?vGG?KH%tbP? zcON5%_5?c-%l-v=5Isx*#}U;86LIs2RyHv*roVw~XhR}dA7aB=5(%S->Haa0YxF14 z;5|h8fUbrI=F)>`?090@^9FKe=|ulz5Hl+>kh2IRZtN|hg;$JR`qDtwBhSd*Y9og{ zAb#yCVqyyeIn%quZ(l%k<`5Wx_Zy8gzignMUGp>qj=pn)o68z$b9vvqkU?aYeOv2*z#5!YxD4v+fMkDWJk+3NX zpD!BO`Iv!RqZ|?rPa^imI1-X^;E%y1oO%e>k$l?!h~o7m54=Ncy(uaFy+}-$M~ZuU ziQ&*{XT2NI=Md6O`b=!87d2T|Lo}y3H8sg1N|&g)*+(3#idrl$Bw7?fE#KnC%WcS( z^M}qqQ~QEz#FP>_o_R@3p(AHK4k$|_m*uv^`pu`o@tH)E=FpHW_+4^y8j@K@lb`g=qhZ}3fk{UUWMa0F4ozs-6x`%|Aq`h;B6c*FhUbFEy3_D#==6#U zjSTdLib7~)_-Z1DOfZ9J&lwu|0_$EQat}R7lv7Ra5vjy9@dk2cGsu0-d1A@?N$)WX zH_odfkL4jmx5ksl0T^PzBO0BB_qX$C?4OCmnz+;0iFL%9pQW*ZP+8Fv8XKMjou<;b z`i+BI(zqyGp!@}m%U()!-;B0XLb^C4V%;W8B3tz7c_o#7}1kW zdYTY1n&>4XuW1m?yB_4_H-OlV*5noblURB_c^!aF{9z65C3^2`Als=oGTocJ&f(zi zx02Uoh&-tk{Waw_(Wkj^o{L03y=l?_99&8=GXDY1)}Dm>t|EU(gqG;P86FtF+sJ)M zG`E8<(X_)9JQMC`okPn?9~0wCC|rL960)S_6P6I|YfWoT%!gaKP?Vh+BxXa=m&_oc zZ?q2XM|T8@y&geST}vCwaj}L$M%qoFEmNlwYi33V96A!ypIA=^ymk zl(Ob5(bb!j)*7N(Qb}ihvEk||2C^mLbT-i&_aa0T;R6iC#$GyD4oPFz~f{Ox7LP9?Gh4mL#3?O4FqDxzK2S>O>Zu?8L3`gh?7 zER`%#iOdiTHI!6>ehjZvw{}9*A@Ph5KeAU8J-nqt$rdDq4uAH6k@9ZcqeOY4aK*upK-`4a21#K^Ge-1@rt zFqs$JmbM*7w+7R#udaq z4C8KEeMQ3io4fhgo!I#~Troqux~b<%vM)kF^SH7^bER>9WYai0Bm?WXs>`;boRTW$R~shUtj1 znC)2L$Xi)_%LYWpTx9XH#uClyBHKPb8j*K|?0Cbu#I7dEj&~VLZ21t`>E8p1_AZuX z2VjFfuZ@iIkll-dFF5eBviR-9ii%}#&f|iwddR-aJV8u8R8|+9183aN3;NttqM&ZP z05ZYJ$bE&pJOobgCWDtIwjkDj8sEUVBLd(MBlDZ`Z5~6n!Y$s(b_JZ~65p*6%8rIX zymR9eV#h0ZmuA0-eg*M;gqFlYReb+qn4n??KcELBdZCUV-Q*tP+i~8(yAE#LWEDSS zLIF|PbAHyzUBnJq@$)X`6Q_93&mV(>)O6=VQ~ing4~g9-T8$|`%tt(f^BxW1m&+iS zN5lB#>Btdh_6hCpOe#RMT9%3M8#`qmiwi745 z<@bz&$333TAMmKpu*4s@6i95yLH=-b4KbA(giEPh!7rd6_zm0&ekVOs%hN_ELaNu#^)&h@Hz&j8(DA+lo2g%1fu9szX6pnoM!xy4)E!AS|b;G z8pt|X8QC+KKROy!6pMS!9}gdoFAg%0xp91QUCZ@+kiXgHZK zGWCbxEsfmJ$3WKm6o2mmEcnN9zWDPp=LdyS28UCFldTBNlZObOB$2hloY51#`hh{71bRd?S;WM20-Dknst`w;@OK>i&Aol5s;QAh^zI2e#t1+U?OJ||~h}Fab2MPTH8WOv{ zMHn;~e=lnzcy2=t@vxsTAwLU+>?vV-FCSECT4DMSM^sbgg5NY0JN-KevwM9YW^-IG z%v*;7&+ zsqZX&Evz6qXd;)5MxDDiTdst$Gg)x#Hm!wzq}aPzWT-!%z)#%2V=iyATwu6$Uc% zFY>i6{n4mY%hyiEK4n4jgq-bYaN^~g&=l#Z+EkucaR?<=Bl(syYSilu+E&wQ!BsC*`$f3~lslg-OCEVw*N78Z1O!zVTFHT0NC0R%IZ|4^T93Xho#B zs%SABKHec+VfQlw@&1g$As?ll>WjkhULBE*m!j`Q84UHUV#rE8Y9@=#co>7|HcK(0 z%o4@pP6OG-;fhg_k6~d46dnS6c*h~dIM1UF^k5c$#Iin=v6#lm#qELua%n3V2?EQa=Ip#?B?8s2Xs(+^tb33nySA9awXr|cqcSoXr6BPR#-H9z4qc|K@MXY0q z;^;F-Y+a<{^iTnkF<0DFL&R-4MR9x~u@DPIS(%n-eS)Ig0uowrMDgHQ3j{5_LjR}= z&L3u@s1h3xr+cZWLX@KT0>#q`1e0?O6mRQ9V)1%K&2b&E#$yyeufuxtHY;U&O(8;G zrS|Vggwg9ti)q_Y8g)=wriLJlMkxQ->O~ZI)<71~Uum`DJuw!dYkxx!HTmlDBFv0pW@z1`|I^zNLF^wMbODOs_fzIgAS@%>AE2wBJZel z8wIy4Z>{Y20UN9I%0YE~i0qdshn$&CZ2J!7@EKV5XkXz@RX9J%qR^(RrpAmGyD;X zrTNO-Ggv5jvog;Ex_s72nfJYn$f>=uVj?6F-&SOf;b>SiqViERQCLq=_csnw5+<62 zY(zK?6x*i3W=u~TSr{qyYCW1v>8D&AejPWszgrxM_M8Q6jeTHhrH|MpdOBMoVLcKj zt+66DcD?8m0uAN3i#~af=%)jsuNvn`eIfc9^2BU$+NC7eavyQ_f{VmTYQzPPJrUN2 z8o6tqxX>wsSl$(JVXz0@uQPJjQ!#it!v9%wF{B9wEGJ}kp9!9F)`$EjT z&;g;_Ud;07j{00FW@md7TO|{7f^cGGgn^u?tC*7slQ^9!=I-c-h^!L}#_l2FTZ^}< zVM0>}ig)%xbB^|6(PMb`pb296YDhNqy;z>&jSSmWd>MR@*nm5r9uFs)if`g8pyL0; z_xW8A2yMjbhFQc;hKbc9ig4qnVvQqi{!Al&-P{lvxq7^$EhTfV<`YAK;#q;sf)ZtIy zjpL;09@jA{YA*TDXaysAC(Ubk7w&E%&9{R{eKtseCeg(4gQYN44zbfQQpC|#s5=Xd ze0Rz~w&RPmu3tEe^t}|f8peC^p=9vNUMr=Y<5P*I43?6*V!a}*UfPXG3rqS_Ixqpb zL$h5v=2nZr#~}lm&15O{LItsD8tKe1h%R}&bgm3K4BjtYmU|Ps|3u1izJbcTLb|r1 z5!}72bUgv83-y)my!0iSUMdy&4J7KhN-9sTzgWEVdg(BPgB#LYIV4i7_mZk7W8tgo zq|Xmcq03Lw_c|+LwUN?~?lm~!L<3pMWEI!R7H;mQl1*)c9`BBd=W)>eTUElmi)h!2 zRB|UUc!WyPsxg|Q&qm(NR<#^_n>dR^RT~Z}>(N5h&JyE?)1+$u$qLEV^OwqDW;C&< zE-I%X@XsrURXsgnOj*NK{krH-CX7~%=^cXtc%Eu(%2Z_8?<$|sPtjGqRQX&jLVW0~ znv!?|$O(Ms@C?az;Mk~wRZ4X z`2U_7Rct%x;ze^++;a2~YjTaucQ%kM3sohQl@W{eQzcfw7Rr)To0p&fB3^Yk2+8g8 zFV%@@6~qZ@)p_zK_S{>Q(YlH#w~Z=Ggpqv~R9Q1K5kFE?InAMhjD@P4u250la8=I4 zwx~<4zgOK1IY(^IAXR>`Hzq7SRHe(^iH0mu-7iOE+>j|EbGt6Mz1jea~3gwE4Hsco0k5q*20whM((ec7sRZ;j8hC#u_b*^Oy_ zKec_74+4;_+A#zD`-fiY&h-uL@{{Ur-B5|`b5gsmu|;_hsdlplLz9dws8qXoOoL5r zSNB=e5|Ob&-A9iH=JLSsf-Q$eIC&AJ^mny;rxNITk@~L~B)vU_>VJNn zLI>VPJ?{o=rZQR`WVsUs(>QhTUD(K+6a$%Mx{);=>c}%s(VyC?*Y}UZWVcYg{tPa7 zwUIhT)*r@vU9I2P8zOFTP#x!R8E*1hy?GTQRfxge}>Zs?WWjk4eWhBX7E>&og{B zd1K_Jk?N~mGT^qW_3DffSjcLl`qt(77~}mgGH#!NtZ%LQS^iigO;7bl)Rdf7s}byY zs31clc+^YgghpZd4oT;VMrv^zUNBK39YBEj_nyWg4ey7I&{*8Ni(yr*#vuUi*Z-kr z$e36d`FI0asQ$ag+q(rq?Oz)IpvS}l!ZmY8SfX~EsaX{3kLj1QW|_MiaqJJx>eCU# z7H`ySn)yEz&w3+oS7=VPyGU%MpgCQI-^V3r()QqH&lhOUr8Ob)_10Y38H4d0ugOX; zf-$$!WWBh8I%TIOdo3iY&t9&{&hy5G$22(-7IqYjytQ7FV^NEf2N}p&w9@1_W5MhU zP3{M5*m9xf=H$^tW&ep@nte3i19oHRK1FMh zSVfdrs%_dAb4C7+wq>gl`2UGoZKqoZy$YSSbM9aU(7{<4R5JPAbW^xBEm-S9uFJ=)35-H2>6wEw<=Tb;b2os+(SDB`wu?$VD$ z{-N5r8=#6U3$;P=@5rk5+Td-Uh-QRpLt8$9|9^ATU$LK_1)^Z&F_gC8Mq zeAUJkRp5Jt+N7Q^uBDQJtXFI8@q~P0h3~bgYJBf!oc7f1fync_w3kL!Az;b0mn-1j zr&QXj;~=r}AKL8s%ZM7KXsccVUI*bS0I6YQ-b8h_t|I?POg!`>4)K=^~ zLeze`_Imu06huN$Z{$vjKcHCAVmj{`kBq%+%Ghgn5WorQxFT7Ns8O+z$L z+h*$8J6K`vbj8S9PCEN%Gca7q(RHqYvEI$rbPThfaNod8t>MkV@CTbF+yBaJb+MJ;4n^^)szp+7=J^BIy z#a>;(CYk*ZYB`{#S4O)+PmcBP#^%L**gvTn0} rW@#gyvF^?ZJ6mujv47^9BqX=vq_j@fTt_Y;-G;lG=GB_}ui5_rzgE0| diff --git a/data/translations/pokerth_gr.qm b/data/translations/pokerth_gr.qm index 2f85e97020bf674aeb9ea784eacd02a9aa32fb53..a47bed568e22bc7ada4252d997c5aef531dbf62a 100644 GIT binary patch delta 2935 zcmXZe2~-qU76#zIyQ`|ZsuwUW2r8gxKt(|rjWI`XUqBJWB{IfH5`qv>1O!B}(N-K$ zHXHW^6m=9l8YNDmpyRGcFd35=3>ge=i5jAgqek>F^OKjufv=XP>c0Ely{{h^8P+)s zg&lOC7IpM;{{}!$AlxRLkwF82ytj%bx!ETJhT*`Boxr#~JYFRX)dNv8fIhQ?)rpYu z)&Oq?39BAK+PRYF?+F8*3G?;{t2;od9|UxJAdEi`>F15Wh*HSod41$K$Z5qu=*TR{ z8HK>8VUX8JK;M1BVkhLy7kFMT9F-!hZiZYj2N-w^%HnH4@?#i3J_Y!kb@tPF>LY!f zlXPzO)d(HD0SI}Huq&H^6?F(-Sqb!x6jr~DsCTz83*Ta@BNtHDVn%!>qpC#oywSkY zw-CLb(G6Td_X6HMg;^7Xt0ORHbSp=HLRj<)^V^?ZXJR)2{qCWDD6h};M^j}B1Njv#J%a(4CY@{N5@7Uix*^qv zfWs!;;)9$=|IxZFCfduS+u310VA-Vm^v7rh;PHocqz?lbOT2V9cQAb`hU;CnbM8y+dcUl4&QD)`Kp_9G!&;$xyl`2PKKLBxKYNHiB>4u{ zg+o|fppUt67BEc|hTU(|4or;JFL(J6nA}tNNw&VQHHGthOkbWG3XFN8ukG9j9Js2l zzj%s)tku7~!1>nw%K(#+nK)-q?bG<8dxqXA;lQUo4HN2{fVD3TsWn`*UCM=?ZyHj+ z|A7OYXvk@9%j_7#&KdT6&UHJ(;h-pB{tm;%G=5-mfpCFr__c~J+}p|UJmCl{qePOg zaPCYNq0buO3X7z@*8`a1D-G(knkmnb26tpd_&<`eE1B{+dMT%xYwV32$tm&w+jS9k z3X_~l+lBBT=Us!By;9mdp_-BV3-|t1hYgVqJ2(XV=_IH0 zWz7{p-Xe@2={za9+2f@8(@c=#h*W=`#p4K(esnIQ8PdZ54ftfN^t1zAaF2QbN&d7C z&!g#3T1v}-g}dn$-fyLxfQ1qC0nd{uN0#)3j9QMUtgo!>-^ChvEgS#AnYJG}BfGah z$KH`A`#Hu}ndrkG$gmpJRI=m(5!OdFY^ zdSRDnVf-TbRziQ^ZwKW2zp!}5Uy~mW(Kyq0h4HTxLnPZucAe6`dmk3jJ3@C4VYjiu z$+v}B2E}`8Ff;IjlDIp8Yk0eo`06~1r`K0)2S8P!lI?$t5zESobEkkWqLsX%qnLqG zCGUgTz}AnI>YrMH@|()V#Xf+?_rm-T<&sNBU~0BvmD|;x?Dm(G zpYMJLBqk{jjt2w#;*74F{tIL*G`4?iXBD{}{bJsMED-S@!y2rqs|u!0=Sl zn)kU4eDbU5_$)Ta{&!60ZY*O}A5u+C`G9$_+WYfxUSB8NFhZR^gn_qTD(u`>n5YvL z_^2_n%fX97}^ zF!YYPt$Y-)*jwHH%To>{QZ0!r=LUO87&=1T+b@{4I8Qy1&4G^VrJk=~-FBU0S1&}o z#lAF4tyyxPYhk9a%1gac!o|0$M*Z&A8P4q^wIP=&T=`0EI69lFdy#rS>i~D_IYP%% z^~F|JO-`=*`*c2dY`%sxHlC;kO?5p49Cd14C$qne57oTpGQiGd!ujn2w1Kyo;({l_ zgR-;Enw3Fx?ozX_o;%%yFmpgcKCtVMdC+)Pb?yQ;A>Bs>z1A13uDYzzn=}vylKAK zcQ(61X^Z(*+yG$OWAlB-Gaz%C`Gtokuw$OZk{H4-3wJGp2hRkShg*iH`*0=N(;z?#;r8J(j1}Tbb&;)_^o-WXcZf_$f~AR4;`Ib=KwK!N6z5 z*3Aji*adzP7LT)@DP;hw^Q{-Z18PKE9Ht_LIU{8kAYId_s@)<{7YA7MxUNegKx*m zTEFShL%k7&SR^CukH6lCKnzm&la2+v`VoejSgcU^>lziCoEDqx9TAg~lD;7MBWF{p Ldu4aWS7ZJUxpZM> delta 2852 zcmXBWdt6QF8VB&--g~XJ_gZW3UBq;ue%$#!u(VR?S+~+vc!RYwpJk9&pcdfPee%JFp@B2LO-eFX|E>PtU zQ0y-lIK;XXzz87dHZ$Cd91HBIE(o$Td;+MZ0^yOs%tLg&h3VG+ybHF{>1x$+q?@Q08>%k`$0shlxfM1^v zcyr))aKPv|W|10v$rZXUXL?U!HY@>Oy%=yygOL0WV9i;mmp1{!w;P=mcFNG-j6n)Z zLoob3z5%=%5ztx!Y?_AP%_hLfidlaYVe@xW7WQCHW;P(^AUrySqDnzT>rbw>Q z17l>xZVfr&2SwR{ctBgMIPr4?1z_{12CRFcxbdbANLs4+kv|C7y<_hDNpZ(+GLT|a zJlIF+%Q&Sp+gk>dcPkw?Q~^_eSGta+-wnuNT1PWCJW_f#)A}1~lwND@(Z29!HmHjfy{steHwtkp~?)ir9kit=E|AM{NA;+&S}c3Y=7X3bIKc59l(+4%C@Ub6v#*A z`zy5GiodI%Q3EToRia@oz38aQX>BlYyhP>K)(PaqsS;X3fI(GE+gGZDyZ33L7OJdQ zeVNs&%EAqKfMc8L`1mj&ewpfOB7Grb9y9)?>SaB>@KCnuZOlnZ;c|{|rM1&&nZrYw z85=q2FT;RYzj5vkTPfv1oX0?_h%slljV4O@q82Wzf%aJcEY8T$@B0m6eiFbLg}w(t zJ;ukXA%+yL#IJ#>?H*VDh!TD7I#-?dAKE&9kZ*yJj^rQYeDXcHjal%N?4kQ}*rL7oA zB-odF0u{kR-2X09bKTV^6;C}UY#ei%W|%B&YHk9~-V$;rdDG0JgxtR_1a{vS8h+^o zs=|b;$<(23?lN;t!Zovjz?_-Foumq2-2|cCs{<%`Dm-kkqb{E(Jb8Q@h?^ihKko?~ zZdaQZ|CfsAvD)G_6^~^tX`qV&rP}cWErDH~I`F;?^_A7k#Bu6SJ{w4LRnMzE1#Gra zCogpa5^U7lmoK9|pRe8}(|}5~x_ZY$YQX90@3j=bXZh-OOA5ezmikq%2qdOz^j~eE z@%=Tndm{khFf(?M#@BFe1$AH_&1@Z&xpImo!QY+w(qzr{Mb!3Jnl$IXqK4>Ft!ciO zPBR!LYC7`(*+Xc@rsci!`RyXlCqnW?r$lB%Lz6Q!mCPG*O1K#e}YT z)Sm8&hCeUT7m4dOgwm$4W~P^lTMe~zR9t3O&J}kRrU2Y(rhm1#r^*{xUnK5*+6}~7 ziRH7Z=s>;3^w)@oojs}cV#T_RG-IEa;^k_p)4_|yE1?sp4GkAtQlHTtus5)aI-}TH zPMdAZ6!CV~MOxD{VtY2FaPum$y>=n(=5^w;4M*s79?8s%65o|lm2Bx1|CmPu`^=S) zNR1}!pd^|f18UXM;1KF(zWt;jD=0v#3TE6}$?YL!cxNQDT9Iu0m&VetT?!4KLn||$ z88A(X=+V;=TFW&0N|6DNXoWvWD?+bRQEijfI@0ILWT}Fud8WOSDi_29=l4j*JbP#% z-Z014Nv6gQV1A5rL7-{ub(XFdUjbs~OE1#=Nh|4?WpmqWL4xyIwGB9 zeoYe{7*}M$om}B9k5tmh=GR|#jmZNJ43ph`sfx25+V8e!ME~*(F>^y?2nhbqQ(Jp&&tm- z-vG%i@;e(liuf0;HqMLw9Mot%JQh&3U(!xZ8csVwX8QXvqe`{GW80{2CTYJcpsi~N z)ULTfftGt|Q*HLs7H`*X_^E()h&glYP3943YXX9)3zRi#>lJJ1FVJmfQkC|{3v@rw zoN4`v8M;#2eWw?wv(~vLQbuMk)A`Oe(#iCm8B?Uo2=)X{X>=tqbE*2jV;bvq7xz;D zTa~)2H)-aQg|0=S&!_Dpo#~>mQ`h=?6EOax?oK~SS=Fz)2je?vphLR%i52v(CS33K zx{UhQOQWr9Y4}{9D$ohG`J_I}&w&oye>00FGaH)q2PW(3puNNlEYcq@z6E?^rZ;Ij z0sB$0qO1?`HCG8WCY?%>3bt{{zt8L-hav diff --git a/data/translations/pokerth_hu.qm b/data/translations/pokerth_hu.qm index a6cca47b60329d14d2f804daa176069d6d075393..5a59ee88687e008cb4a493d139be71088dd2a4c7 100644 GIT binary patch delta 4620 zcmXAt30O_}8^^!Dd+)jDo^zKHiKLXWB!xs;uIyWqBBLRcloF$orO6$lY}qbCmccNM zbu7c!nn1^Ep5Fch32}+xLA>4F|Yw+1&b8EO&#YUDp@@ zj)2iz;tsk-58&$+VjwV9P8>)7_H3AJWoQEAe!z~A05=AhF~UUVGZq;33(#S;#I@Ui z;0ZwFF%y~hC16S(5Swcv(|3X*Vdbi1FYStOwG2fLo&gqTEenLLRuS`LvFZ zm_EZq=0p1rO$FkgLm4$5@YxUL!dt+tx!`Byz<|jS;LG;|iOn#Z+5lX6fVS)20(NKM zkaioee~pf>mH;jf(CzO+vbHn4(wuZcMJknpEm%nDiHh~xp&S31W#@Tk{mHEbrsNQ9zqKCfc100gqe%T z@@$088Vo$>i_p~1z{j}=%_fh;pCXb0<7P;F7%%Z7Luf7?^kFup4yNZ$+hZc*Ma1b& zQ9kG~dzpbw(rT_mMX%p!HgUhh?uU2%xIoNcc9;k?y z*g6qek&$$e?#Om?1?qEfrW5VY^T62%Vvh?FFPGp_WF`<}iF;nO|MFtg7*2j7%WCki zF$Wl0icgMup!-!OHtT4eC^0OZ>9&)Hh7>dNHoJk99J5WMoN(VLF~}&f{08$(t_SOz z&O9$11?y77`VZ_0JbS>B8tZ_8O1AJYJvZtG+omE;31Nm^t!4wxUhMa(Q1XOMV!1oJ z)^HA}$YeLUy_E5xCNkN3R&MJJRC}-oJ1L2tG_aR1e1O;KGP51Kz%0vUT~ZEGGWU|X z^`QHEe~{?yC$T19rq81)d2~(IKfZ#Jy;5bmVBSxS4RSlfCfT%#%fR{uS@>Z+m|v)D z?&bji3zNkc1_82T5}&S+rBqM=vyoC-jzee17d-XT%JJzcz@2gQ(2kp)_6l{)%Ano zu*-g6-3!IBRC12h4v8COit9zifJ2tVg5yRlZ)J#6+{>lhs5evGyFy01T&k!tE+$v* zRlIN$fub*pw_mqWiN25+^i<+q8^!xp^!wlEiPprgL}#Kq(Tg~rcn~NJCKdxXuMsI1 zO3jG>(s~e)j5gd%=WwkVtnGMCnY{;?yp!WkQ*w5j#Iw<}Hz>&hj74+NzSF27{m0FUa-y6$&Bgh?1LoUs@#`p>Wxcti z9%SHq12;cW2j)DUo4<1p^^J)mOczY<&#f7n58PeFt)ERB?CrQs*DR@8I&)iwl0RoB zaaoR!XuW!9`(`BrjjOl==NFMW&Nq?yG;(Ky>cRTY z;R;vN0axti?oQeV=qGX2%_Rn~PP4fh8*+t1wZuW3#DZsBZ471orzc$9PgGuGmUGXa z-2yUtaxXkZnhQ!L7DjW8x2vhWmn!9BDO8V#D_hz-lW6@S(d)Iuq1_~IDwFuoS!p}W za1>};N*BbSe##Ep^%RO`Welq)89A+tJrD*Q?yQX48$&AUr;Pg_b;_x2O=MojlnDby z0zJD+?6*l`-p|V9a5AXkiSj3xKY;(TluPq+z}y3ssa+NWqk<*Iol#~OyarLM7AP~q z!@#r(WoFSX>Kp#bZPf>X0b`UG9yWt@v{n`@q$V7&6WuX~`W}Bn3d_KAI&Ogfg z{j0$=7RsuN^n$j1m30?vfj@(kPal^7*WWAuJ*x+^*}$7;{s&a1^DX8@f+_a$hL&$4 zfqwSZ#h>IuPEd=k|G-0YGjne`rk|kebV%9>IahzwkFS)j-M< zzOqsW^l9SnTan$ao%otMO4(u$zD{TX=IO@QQH{W-k$+rGHTJ=cf7L8d3fuEsJ@p@;K?e5pW#0FJ28AbH#kE*`Kl=EM5Rm1;` zrapR86{Mw3VK+cEy`&u#j6p5mYs6fiACvu4m}Rm?I`K zakMZxiUM;*ZG5b@Gb|NCJgrF!a)ha?$q)N43DXw;0VeA!#3kl{sk4Q|+7RliUnSNK z6y~MSB)wvc#M;$DN;H*dgR`)>?Q_zOH_$FF&Dpw=304giuy{iPHOwaDNq<@g`TeekwhJ7Yq}_yQ`)&$i#B5%fHj*% zyJ$MD*CL5Gj*7kNJjh=wBsz{0-6xg+CwxSGMt#Ke?9-YY+n` zjH7hvCvkmOal+1yq^LTFXdvVzjN0P7ziNS{@K6o#h@}=!EaUVyXeOM)CPo(Xc6K5tP6pNOPkp;SF>>|^S)?&_$J{S<2}b?kg{adZn4nNOBF zwSy~|?Ot`pz-pS^e^X}+J4-WIrFwH3iF>bbiDMo~EZU;ZtgNK=R-)d%hz{0WR3DG3 z2J2y_rf(8*O`F~7q7G!~mlf)w-uWaw7U~;|&jEGM)FpSxGv`LCtL|IVI!67VTNqgD ziRy7grnN13%;Sp2b{+lR-dSVY zG##+1)Y!$+`t>c1!QpW!;QvA6@R(fbpP=dWZ5%4usOi&ZBDJZ%G(M}HNQC`0dOIfy zNtuaEWv20)-;s)|t;BWq5_1n}2Kdkc+81j4Pm$|~mumug+@rB8U-SJ2(v(LNG*iA% za{7+Y#9t%NTU?x~Nw)r(L^w*5a%Tg50=Jep*Vja5zg)AaKUuz@wdU}s0J@>O=IBgY zQeC~~-0K9IPM?{`xKo<*jMh;bBvua9eRpx+PJjWPYz59%Q8E`BY+&lQt}jYVy9dcCJ62 zs`CNuk^nsgv{Ab?W;}2s!bBz{YfsnJ(wI`Dz4S9#W%&53Hvd8yPBii)f`RoHbrZl*_YrjA9rQq} z1-c(DY$Umwr<=QxEU(h*l9f#)W1n?tBPh_DZA@fBgGAphy3J+P^xb=1x5ryYUjbJn zZV1(#)YJgu7wP^e9YXid(fu`=4pbJa%dKu8*{jlB9+%?+rdzKoNLT_W3w2lBQfX}1 zZz98NB3a_E)7_Z+?EyAMUkj^=`DWeRY-w7S$W)Wex<8polWC?|@5hukt)7_mYoue3 zcx&djfgGKA$}A*=MA5#`?E9iQ^wo3GY;ABORqTDU&2?ckc8xI0cHRSgf6I8p!b%x9 z6Kp{Llf@Rjh8SJEG{)}JZH$&8^lPNtvPDKibmJV5CO?9u_;1mGL3naukfFzP3u%O;u0 zGk{4`fyihxnK!*;)@5LRf|+daHmH&|0HMRoWM2P)YR_6)ACkFngv{1VsLI`e@jfz* z1s|bmNCSQd1!tE@FBm3s@gg&sw*s6$eIb#7i%liEgZp+X@eR1mDl+(;nM`yAw<8~j z>MnDglbOuB8eDcL5PbxE)D*zyAo!Jk0e=mE@XdJ`F|#{_vV%a(MOcJ30ay0Jddq9T z?lkNZDTG~L!r{dlz_|v!|GWx>JcU=HBd|ReqtdPbw#zZbV>|JH%+PX~3Aq@n*#SJ= zim}C?*^Gd-CxF>g&17C>2-tMi2)r1HNnd3Ei}z#F%obpI112YI1iCLraKSz>&ty!U zyNW!XkLe3W0M!RDJ>e73{5Pf_rietZAd&-_}I-C=u^m~7Co&8$_yF9^gAg+Ba>L0j(dUih0K<8fd1QL1_jG3+sZuS z8o@l?FweZBU_HmPA;a8&$75M+a~&{@XDg4;bECGh3^j3oN_LamPm1qsCR5B}WwzeH-}_k2ZW7U>F!ubJ4|)7XVXj$o~yHf zwM`1wzV!V8?__%W$*gr#_+F+gc{orpB)WpczFTd+VBV8VO-eiCR7F_DC1C3rMfee4 zuptGCrQ3%BEJP7~H3(4rD)Z4>#p(*$0No+Q8jA?PR4cRCTd}oe8L%!wk+pFQuwkF# zTE}XzuIm(c*$yx+Oi^Ayaej10QL7?Jf3Q@1$j>L~-c>>^08)OdQkg^>@TR+Ix5{Ab zr|f))ZeLuXbd){-9V3)Z%L2fhrYJ|3*8=}0Dub*^sPnFy$$aXSa~szI>S|?75!I66 zQ)G^hR>s_|1j>&o6BbzlHjc`~7oYXwr`$6&nKGiS^4I>8fE#}+PqmIDosCo$#M1r7 z)DiMU$v)-tv**EVjw|2II|j^rt!!CcM0#*ham6HDM=O~#UdpU*P)RfGfwYsVww^Ae ze9=tC9ap(Kl7VyFRUYlBn9UVbo*j<^&r?-iU$g?jeN=v&15hZb=AYb;PG|^GCCsE+ zptO;x{z8?gOa`-TFx}v672DpMUT}6s7uAl@R7P7vR2fCIdxPt#@=-wujgh%fZzl8l zMYZ=KiKPD_)lU;js1CnY9S;0l7_O)e|FIItOjKnj)62qc5#IpejQEb|Mtn~UBhog6 zr zl%qQ0d=S`jRP}2D1;?;UW=g*5dQmZ8pDD8-#-tMr#=ffZ3#5$~ajNnwtA)?UOc;8q7>F>o`P zNLsl07x5{PCz8{~n`1a!YXR$ck>d~VBTa;I!YLAGuR_kc9Tl%JIh^CS_o8Us?4jsx#ru|)ZSBh1sUmz};~*7NvztdYvdDSrN;5Fq<0zwm$5A!pq)lX-PA%@hsB2tF>H z%&rLHzjOW_cq{PVUp^1kFON^?84rx@Aamg=KFMo1ZHPCY6dnSmUBagq?V;u{j?bvh z0)|fD^X|8R*(dS^D=BG*tum8QmA`61@!!$Fm#v_9-T9HP8d43WiRbT~qvso~2l91! zw!oS8d_#RHaQzhjG{+aL)4xKS^tWW#8=>v;NHCRNX!j}-7}V8F##;zIKV2qwCkd`4 zi@*jX2ySI9K$}{@e|->@y`?grI|<_|ZK#7r}(IYbkqjyhN@?mbfS#QQO|zx znXT$?oSezJ77KLMz^@-tsd!G+N0v~)ifrrx0G4iEUunI`S&(WjJJLQ ztne4t8IRL=mSraE;wNtW-WO=NE2eE*Me|~!%q{+6X4Y`ZhAO?d>oL{y;^(H_T7z-7 zc(4!M-Z@sx{f?r!Nhw~*reZuIUCa+0NOdevEQ+Jo%$j2+8+1f0-s?gw`A@O*!9^fr zl~}cr+<4_IRvixkdOs4Mto{W^zb*5{Y4Me1K7D>pd^N6=W}kNAYd2E2!9#4`N!x9F zcR+j}OfTFRC?S^G&5kjW*oIWsJ5l;#f<2XquOz!UWUkjLnKzb7{p#E)UTh$`?bY3+ZzQGJS#Icc%X znpu)rFV<_N0~|&6zQ1&M8s(=4laBg+q!tt)Gj^AB;#{?n62Df;t)$R({~%r9L%{S^ zQeirUtT05X`t7p;KTFU4GludqPkO=Y!6ZTY&|*vD{S}x{XCGLr*Rl{3vBQyO%DY{B58xBmrVum`i{nRo-rA$!y1jdKS}D7LNn=j zBvq7DP1wYGYNC5JQNagkuM;%$S5Szf?wHAZ1WiI07cg7BCTUnToe&mil1AmwfK{p4 zo=BCuU%1Q(Kg%qdrb(}?1WHphJ6Dlm&as+fQPp6saT+>sP-r@8G(}y=(@$?TMFaAw z^2BRy#ODHalQkuGDKfb_&Aloc;6a(DrgsRsySw%_Mjr(}xO!($py-&^am$&rfK8Lh9KBW=kJGno*l^;_XU$z?4w`Jv1Ui?l<1 z$bioMwc}1w=>0Ra0e#CUl5X0sQ>doYUDnR}m&7@Ev^M%0Mc&dWR2ygWBNeCH+SPYb z=zQBj=2Do+y1dq=4k6E1RA`Tk4FGGKp*=d+mZ~n(=Du7;r@w478P`R7meD$DvdoI( z+RNkUzGYWTNo@?qLE1Oe8kom?9T)i7oVhxoT_g4SRXWL@+z-go8BWuBmxsA&AN*}l2^v}?R5EhrL=*5x`OMpp*^1KiX{5N4{2sHb!T0X;Um4ctC?)DyRP^j zir=@+x*OpW>0bbmy0W$;6bEZvP5)}zc&7Uhdw`CDyxx#e2l%<^``)C_-E#H)UhSdD zT+(}r>q!td^b>9yU}V0r`l;Zk`-uARF1~=(xB4Y{+o)VE*Du{ho>yh*=9TLCs|L=#v(HDHQ1R6&At4R1~}RxA?kfF&$~n zStL(trjx}Ui|utGG*f9U4)@vze7)Ut&eEW1Hy6w=TM23crduC-nC5rXpRj88e#D8< SUzM6n*PnGfk@S3X)c*nb#DNw7 diff --git a/data/translations/pokerth_it.qm b/data/translations/pokerth_it.qm index 64bbe9cc68175a5de182416b21e8de6d95dff719..ad397f322f77714816bcc2e681ed2e703aec2597 100644 GIT binary patch delta 10584 zcmb`NcUTlx`}glNJF{iBp`ut}6;QAtRy2wQdqEUS)Wl>d0!mRp5DSX|?4q)fwPH8+ zhKeF$1;K(E#e#|jyT%%86o22HO-%B8pXa^aKiL;HsTX?2!?L$AVI(VZCkyA4wav@6WY2$ov8<#Yf$b0~N&w6q;4p;#;BX+SK=tuOR z031a0A&rQOA)2qYaS3kYGaC>`Bh7Ab##lVs<$aITxPz%vhph zE@a{}Q;1b^#0}7KvW*w#N#tBc62EyWQPE!F#c+$R1?E2491iEL&T@eeYHdHq2A zlPN^MMw6h#^H=7P;ItHi%WO0pm&mznB%xI~v9kRnc)1hZiZYSVvlX$n8WQ~W5Zxa| zLSQ0PxP*l8g+z~xB*guU@4JvNVLq{TIuhpa#2nt+cuPsbqI_c2>)F_@t3=NA1PPme zB<9+lgdGt0k8~3D+$8#>C3(nTq7}VKp71NNC8h(U7?np%lShh6>xebzKpHRD`*RNI ze|$r1x=1zVy(F6OifY;A6BQJb!TvP_TS)b$U4Z@Wlk;y_aasp*J8C!0l~^A=^~g9*G`bG;T#ENh2U4i#@d~0md+PPVmFRdKuroN2 zdbfrKMvsulD)qFn^;YT~gq0MmqCV`X!7cI=h4VCC?&i zJP|xbv`t3+9%9_{8uCrrNOWO7`KDx%iB(lf7o1Bn`OZE-EVn=T^~Q=X%_hHTFvZme zqBEH)oFhqCQN@MktOe>{b`;=9+T-vu!UI7w^Y10jOfrqx+HiLP1;0P+F|_U zD7u~X5gOk^rn}FP>F&*;$L2huo!9Br>I~S@gFb}TAUe67KDyw=c`fPVd|#qgi$1}%i2*ZWfY<#+3 zB3n_z#Oi*6&7&;LxhquLZ(=W>;_F^*UHf0mBHjg=vW;sNb!8R_xERk&q=bG8K zAR2R*>oB~SXl**@eGIvMdnVU0`YKXxkVMXvIA3cfZC}g{N%A3D-I6n2MffGJmB_l; zKATv#HC(_JZ{iwm*i9Ush%TL@dSEnM`8fv8wc64~xa+?1;oM78^I zQ}uzwdeyXXu7;amf$G+7GPl&dDbWZ|Zo{m{#5UdGHqGiyto>eYU#gDiMj&@^7Mz{2#MoHCU>fO8L`h_xHFFLFwuJM%pG51h1Iyr44JL;ICrHWkJ#=GToGyy7BW}y1HwlwbC2;QPH{`-c^=O5x{j>ZmD|M5^Rj_8 zW}*Cw61n=PWns^z6IFX63%4e$*RN&aN5J3P$YP876Kx%31E}Lfh4e?lSn{57=H$=CO$rfZ{fNX^5jB*|Yd*GHCL*Klo|6C{F373H%&Sf#~3Ue%?uhOWs)C%tHeU>e#r%D3SGSz%Lxr zfau~qeo+q$c;pqos8=r0oK-e17;fW|g{{ix7q@ z)6sA(MEu*`wOu%ROXOVK`4xAO>1v$k*Y+f{9+S!=2O(JWv#m27l_^ksHiLDIbwlgm10=CWG$3K1F87)!(|MCl}TSiwKf2$*r zt(d^Sw#R#xNnlOz2-uKV#&fV8KDPol5nJp8o+P%&3?eKST?HS53J|7P)Q^8}@<#?M zzt4ZRX0H2f1Ugkg?Dq?Te8Va<7HsF>d0U(9R=?UC!(Bof=}OB#D4M@eBvq-D=84V z_rP;^N`xWH(a}8kP8e34k2bqd2<>1bDoGbYdwQbB`$Y&3K?~OBk`U416*2c#LiD_& z#Fj@2ac*6Sp5&W^xMr}?F$W<&R!5w2q!7OxD_45iczKsF`wim!jfXI&dp@xhWx||X z#P6+^!u&`bu}|}apHEdq-!MSP=)R7aQ<$*SQbAVzov~OUt5xrMEWDtZeCtrJvC5KhcCq5}#OPIA6*;>SWsjgCZKU4_fvtsz?F zERx((sP zA8cGc*~T5uC7M{T^U?*|G*a%^V;jn;$;KyPa;J5B(5Y;a8J{fQ?9Nd8a;g(JMZYci-|FZF{`D&*>Os$~|)55JXkEOdfg}KJ==&d^CGT zRHK7@bdeJ=mmlO~s_Zrqo7Pf3X8lNF0crAx)uYi`wUbBuaU8qV;SxFLjq;ezy@|}j zZCvIgk)@dAu}zMkd2K776o7DAeP5o`cn=zv&GMhn=X2Gs$&=j@vCI8dB6Hj%pWDs{ z&bUNAHvscJ*e16WnKH3=+a_Q11`ob(DPLT+iDbtD$~K>pxf39)%6 zOEGm}u!fiR{{0g`u(| zk)l9RuMhHu`)P&Sr(-Dd+iZLssW5pI!@Fx;QFvaez{$r+Mdv&jQT`c4&l%|Xs{JUD zJ_@qRZS)}NndI!$gSm7riFKj%a7&K%n(cvV;kX_h89Xz7=)(?UnH7JH% zZh=i{BgM#7(8Me^g)!d?EnP1~$xb=V{W$O`Q*&`J*M+FhLh6UIMWzfr>L4Xu8>0#pR3(s5z#0iqcXY(c%e;YYtG=y!DD3 z+v*`BniaRpkx=FwQet)@u?8r zeW{^Rwyp~D#|@?KyHup)fl7yvOzbV=lr^&wvG=oA)>$^3XzFK)%#`*>>A2!KGTt4f zVLJqP@KWiPg0R`UQR%LMci()iY{bE3$;CRz^|a@Q+O)APU*W%5`nW0ljNJ;J8dQ#r#_jt;A}a^?>|5}O;UOl#kt}Fj#4MfB{QNlv^e)KsnA-W;J<6Y{3%c{_j>0tK+IXIx`sqjZz-H z^%>l(Ja#pa*t;ZUQJ>pr-8w5z?z4__M|s*0CVgh7JpG}R$g`WW?0aZp1u37VmJp{s zu410a*qY_2l($W3M6;Mm{~aW{{iDh*@n__LB`Wu9I8m*YHr_g|>QH|G8jo~UpF*tU z?hREx989p3SE~Mr7yDD&uKr z{L}BMK$8X%=Vht_r7G256>?}5yndD{A~p~CV2~<${9uHmNfmo%2)0(|ZQSxfHNMp` z#QP`J_$huUI(2N^>aCg*iXxQXTa{P?hfnV5D$_-bmv=@rHQFD(Q>dD5+Jz|dlE^-F zQJH2m?2Ht8RW&0%8ZA*<)vTYq(Pn3=GSVkntCK|5wTWu!CLdz!da9N^M6)^ff@;~j zK|~IxR4WD`V*~3uLN% zzc$!+_?c7%1tW=>r>lx4L1O(~iJY^Ss^~bJ=SVlz$rVkJ)9a|t`mZJ8C#%lAfU`xu zR{gpTHg2+1RdNUUz_&irOOyWaIxAL}CQzAO+a4&}7p z9#LhtjW~T}QMVH->^niM-M=2OPG>}?P&~K1hD0_$Mf7xsPZhouo0lV6E7s^3{LX|N};j&b5o>LOxC zO=8Mc7c>;RZG3x0BHQFF&ho8Gtiu>_UYBIF)U0$b0nA^!R(5XX0) z#gg!DL~Z(r*LIi+aiCaJd@{K=s#A>kn;fdU`%ZijfPqin6W`pd0^45~KU6ppCvPhL z(dH!tPLRm*8jF7n%Op;nsOFlvB7f9Y%YqwV*E>Va^ALDv7qt+bN33F^THXqrVW(EO zRL8D4-o|TAYG+fA^Ek(kS2y5b<1W?J4QpN{cI2_T(eI8#Ki*P%j7}r=@`AcmPsH_^ zcj|A3zzKitr0&u}j|Qci+UNCPB``r- zbIvaZ(Rl1vCmWg)``B1Lw+mFYX8F#Mv)VAD~EVaAfLZ^~rLu+H67s_$2FRWjyO9G*Hn56Rx`bkE;!fenresCO*jLlsx?Nu|NYlDCdO_2UlbZIkUD25oXuO@k z*&}Sc;i~cW3xTucXgb9s8caHg%;%tuNvWF7?XjW{<28ME=MiO{(D*jHg7bk)&4>jk zv)c`tA3pCv)qAgrJ_R58%||n-=1R0`F`6kC;VTIl5>2dLq;$bPJ1MM)(}kSkhrr%@NI#nGDBw?wX}f;Jh?L z^Gkmx9Ab~uY!2Fq_xEbH^zkM3^nhkt7zFOYX|_i^h5#cpyTTqJ{x3Gy>}v|=YIsnS z^E?JMKw)F)RLuc~&((cxT+>@~w8b&RbxqB&z8I)}d(FASF*qT8YGY=EMAmzn=6#-plgwSu2jL#0|pm1o!khH1rmrt=7kM_O?MGSb+dT8C_WG4Pz$ z;nGE%^BvcE#33yEMrnHvG{fuNB(m8%wIfH?L&|Qdjhu9cSmF`wxW1_W)4FTp%}8MK zgW9RS-thj*+F5&3h)qqDn18s-s8U!~n^D#rjTt7@~?Vr9?2)8=H? zKx%BPJ+g8E64M-Qer^e|t;yQ_hewd{q5^a&g zM+n|uBG*8pE%L&6=gw$PzQTkJpJ>kn48XDcEA6F9k=VFw)S9k+xrcqepY~=8*s@ZL z_W9jBbh~!i4{>XVspsn)7MJ7j_`R-HXB^E6E;?tID`>rVU9)poX|-%!^B0*oNNlZZ zJ#Y6h`iVsw2EBVjE})%CyNfL(K4{2fdnT9l;w-l;VXGP>&m4BkY}2Ti(B zPZ4H^e$b80O~-NCP2IT3uZiMAb>q@uiggvbN%9Y<(^}n><-Zd}C+d=%?;?y=>ZbKV zwDhiLudB59<7Mo4Aj@HjJ@115A=;Z98tep*mz@tzRCSCVvB?I&0oS;?uhS2C(~)T3O#O%=96Ypp zrB9uLg;bR5)BN9|{?}NfPdkGZ&iJ5TSUwU52xIljtl?5JSik(uVEpwuQX(_m(yxu^ zM)cbZ{f36C;2RC}hj#QJsvfUDIz>jbX1D(Mm8*EKn!aGbL7af}(w|)ffloKoU%dsV zdsw2sK6D&57^HuUzY|bojQ&%{3o2qu=Z6v3D8<~~)6dc*f*G=M9Q$?1a^7s<6wRqM zjim`$FM}eOdFc-k<`)sFtR~y-SXPly&NyL5*7<-3%>4X&ufHBOzYOxX)EvSzSzkuC zcz)N~`AN_^}%l8WtU77;B7UW>H8fPst@LgCU?4AdBmyRoq|Eb5`4I*sXG`*Eu{q zD&7z?HaIZW7#kHGV~CA1#2aG+Lk+Q^!RBqt8f0y=EO4|`UdAe0Ov{*P?)gk(-n+Z1 zx#QlW_@k%)|2g5;6^Q8a__8;+1L3Do(byCG!dd%7ZPk4Q;NXub6=9qp^o8^|P;@Ec<%}(ZS;oTs{Tb{EwFV54bJAR$2sku0> zM%BRZsF+}@+=dWiL~uK?o~viQj^@sVbE^!-vPL9{cP2uRh!}FYjd3(+Tl(;awSjv{(E*W>+DXkQL)Bw!KmTaRnq73qrA2M(A?YXZ zUxsv(rgs0jY>l5ZLyW=A)zjU&(5#4OmDT2z=Y(4Q|F$+6zrLWfn#8=|qoa9#q0st2 z7!T|F-;?OSn(@zhtP7d*;g!(5Hud>$+M?jEb7}|utr+v+C$-bx3Ry{CE;MlefAyXi z%T5Dx$o6l*0;;o77S@pk=&XwPIzt0XL`UYzxq4bUcVf=jdpa^d#)7O5*03aYV%5xs z7NVt@4|A?e?MVDzuO965k5`4xY-h*+&oO5BzsHy%#4>IMtChVsiDhw4J*2R<1}R+b zA4-(_L`6g(C>A8M>e(U5>?ZRKrU=P5t^R7u2nK67;k9tQY{1=6tMh!-Qk|}0F~)%K zU_)?3RBTvaRAh_+!Dfw?z))kXG_s{>Dob*jK)%v|*5QnBBirynQtCjUSjNp~4wjH* ztOk!+BF!wrfrVKTXEKNO-*k;KL`KCLLc@ZB4aPWQtPu$%YLvki2r-8E&@dzxV|1_~ z$~JRYNMsZ~g@?u11jyc&%9_=xi1*IoCWUOMMot=MhbX;(>!Os{I z6CV{FWI3P0YGjwKWL2xztBjDbDlJS(E!OCb`nq;y4`X;(pk+r6bIN|bkBwHfGe}Qc zwPn+v0jbQo(24jLjEVpDU%h`|RBUWmOsJuUF&Lv{cRtEatLxj-5WH$lB33O$;2LS- z>xANvu;AE8V}zyCZcM2yW`|m{PF9bsWs$ovJ8KSetW{^wpQ*|a7&SgTNK#z@%zW?9)6qmSZi=hd(=57Rot0H>*vNI3S;qntq+k{_8mL#+bifx3pJqM_Cukf|snb z#Y4-9ydxg8XkM|FEYf0p#cHvKmTT2Gr!Z^!vn4!hWwNF`gOt~!u`a73ZKcNQaDQF> zJ$V!BO75<3EdK)r0j(TcG@vyR8*&th9h&^Sm^Nj(>~O*bp#2_TO6mQ@DWOK;w8+ zjj&irdZQs^d~i&xv>?kZ2d*|N_@}U@e+&C>;lw|6_Lp#Ba4zd&#!LE)gkaXfV)GWO z#{b)rW8v{p6bH4~RA3#!I#LiBO_FA;)Be*#gZ`rl{_C0>8^pg>9ShqVpR735}u268}YyS_IMbAnA delta 8186 zcmZXZd0b7~-^agepS{mH`;4Y*zGWy9N{Sm-x#l?~bd6W029$Y-I#i~N-Bcn;rp!Ys zDn&#^5lY343fDZ7y43S&pXYUdzvuP*_1QCTD-C_l&upIiE;>A~ zZR?C_`!4>~pU9*e5t$Kr^fq$E|BeHfNMmNc!AQ#xBkekZ-H0Xh1D%QTdV*t#%32X| zi-?y0Ffwp}L}pt{B>Rn64{IWWFq-HeEfL6(oM^}ae0Z)zW}Zys>PA%KE0NVLB>LkD zF?t}8V_%4Ky-hT`&d7Ng5}CQPk(QHLwLXS#f7mG=-??jaK$Uwr-9>jiDlHi<3bfbub837QXiiEl0 zMEM0IEZu?UjwCGKPRs=NH}gc_?If~{jwI~N!g#7gX7Zavj%JZ?Y#K4qo`lm_@MBXF z5+8xPNbWI?X#EzFued{OrJ*4yW~URquOUUzL1OA&q_KA-D*sCQXq2rF!rpYIwTLQIPcbCYsnA*R=j+a@JIp+hNhf(KS*NHv_lg;@TL?6S*-hkh| zv!&ka%!zf4q#+Skp-vwfx*NYU?CVcMufibq-=Sge&54dY0Q(UgZ9v0&LISSGjrLWxKh@65G$UxNtr3+TqmYg=F5{nkec{p~Q`VTp;3n0pHBj@;DMCtFyB@6d2 z<&x{~QN#p0a-C93Of#BXR~U${E+p5WeMHyPG`9Z3^FGno&DcQBIU0Ly6C3pY_%b>UPYH@MH1C@r~D)@qJxL1NN^;Y8BN8#G5@RW)238oh955PKsDQ)h0$AZ6Sv+Zw#h;EKyQA&(IU1Tv$e25mWW^tP4L{ANg z?DWHlL~~|JWC3^CxzkQWb}lT-w*x*9!)|;@Ar`ou-CX5E?4KR%wh%{jKT#q}TE&V? zekHcSk`-BG5DTqh4+cR3r6PN@2LUFmkUd@sRm~XAUcc%?EXIu0lot}&w&wKFF~khF zc5@c~M~St1##whuK|t7P+we9zYbbjB_u^gfT}*WF6CtwCK!DM-bzLA)JTZLHPg4o!o+O=#Cxd z7G58N%w#H&?O4kBm(&uq9>uNE&mh)0&d7Pwx$U)!5Q>*`yE|DC4GiSsLtYXK`HMRm zGMreOv)uW$I;iR{cQFLdpKa%Iy)%fe=(ror%ZUAD!sVG%;X8-8yb34y|6xDwK0^e% zP{|cvODDF&o-2*ABkI(QE9ch`JKC6gGvp3YuR`uy_C8GHz*T1LNU0#^c~~af z;z(@2Mkdb0f*Z^+(kxRZ8pa{JE|vX!2=fZQGILcmyhJVQw8)9rvjCY*fdR%+>>wLf zTu$tCd)b&4AxN)-C34JL=Jj?xQPWqlx%C05q_J%7<$Aiw7Uv*shaWLAF;TYoekp9k zP8Q_Th^V)dY;8Zp_?w(;-5a=_{H1LBoG-8?TUlrfejnp5i)i1FXzw~%gkg>=(Ui8b z7`LrN)tu~9qXooH&XS$7btSf-w=Ah{5Mpz{*w^nn+06JP^ljeMUWk%by~c>uhkWIb|>OHUo-|Q z`Kyp$odEZm;K{G4XpD5L<%6btK-KWf$fnKspl{H9&RRbB8T>rv3BOLZl~`U&eqCBP zkzXpm*+xJXJ-~0vg%=#K;=_3Ce8n^)0}n`KmZ$jeIVjgs#_>CcV7|kK)BMh1X+%rH zj9jtD$iT-EnL5JA1YdsV_U{O(-h7l97J8*8AC&|5+E9qX2@CkrMk3?uJjLt_0_v7Q8>(jIuAD^*;m~AM3Y%4Zs_?n4}PZ0e_@GDVOJMbGg286X%1xjS8 zC&3zw&w^M;RRsuZ|JFz%OMMJNCExn<$F?zWp+uI3=i6jNUVnf*?#F>j@D6{xOTGVh z>@8i8SFA+VD&EMB&G-{80mN2c`u;%E#eDPI?Y?mkhFboUXozFi{#q*@M{3~k}vAK`<*F3EKyf6P+0bTBG#J~R5 z592%hhq@>vo%KfEagfLi`TVCQ_}#JsuqCnO%|L@CZVbXjZ*UWMl-PBeD!ZqyRH`%#d`WBj4Jph$8e_WZ4&{GdY};3=rq z!^YAR1Wgp&GGm9J^UfoxTq86!guq%a4HQ~5hDi6_652-gBAR|fFkk+d*zCuGMH-AG zGhFCW4BcIRDs=e*zkhI0u(v2d`P@UWFDWDT=(^D7-ChKk>4HOZ1g0WKVZg``Vl#UR z1C}--cJ8S#cnF?n4-&@jft%jEDNM*m1bsYCFnBt+qt@dD&!ILbx0?xbJy0@PO%>)j zd?co|5f*OCB<6orSZXnl==M`#X*Z}Ou0U9}Scee$U0AjUJAS=bB1KFfg~-d(gtY7)L>23Vi}mwYoD;5Za!27}m?h+LPRLRngu)hmiR=do z_b2Zs+BjP%tIa1?9w|H;h2vMpqe6LWxSw}BBg02aWL~F*3U4c7$3_U1tG5!ReGs1Z zbR?F}2``=_|C=daF9!x}m5iM`C3m?9BLT=d$JG}Qu-gOzgW!8Op z&ps|h#}3JV8_^b}-6Z+oUIAkM8+qDejLU50m#W%B z$CmPIE5IE|64|*y^6UDah;_@B=k|w+_pFuQnroOq%x;vtP@7Jqw~-eu+Yf7>B!AGi zj9At!`NNA?fE_2VOfwI`1{68#n|yD zaBgr^j6aJ5&7PHt-<`3*!)1yI_ids3-HNIEAOY_Hg?pAgDlSij!KdI6LT9C7e&9)B zr85-sQ&Wh1o-0<&=uT|aScTtU7|*#;iq&PfzpAB?;kAn36PJlaPEc%|J(HMaLq&x8 zGm6wEianF9h#W2`4%s*nn{J^vwz-m6%h`$(&mb|s^@^ln0nM5CdxLauz);wrA08jB1Wd{q=7YO%}{pcV8v(al$}MmPu4zV z*X;V|-Ic%OB0!zWQ1+VY4pDbk_W3g(T&Q#$4Y$l`r0o9@A69o(4zB%;$a0o)=y^|^ z7j7s=cwt^cOrmm(7BPG5Nac+BzEYPn%9;7C5W9nvGb`#@pq$;Q3q*NK={YPMI<;3W z9^M1z1#{)H*pE2xdng0y&-ZaNm4@}{V3;y!em%P@*S~#%kiJj3p}xqC`>fpf2Rb72 z(v@2+ZJ_f0%58_8;QudID8sH|C;J*JBmc&Pse_cq{X&sOb;^XUZ&8H4S6-OBml$(b zW^N2ZiDjnDe2k9PelO*fk^o{wdzCpO$}z4}=AN&gCsujW8LGV7O?k7rl*nd~vTO<@ zv3`KaY=Uq?N)(mlTZtBa67`d93}_hK78?ZYK= zRAP(%5_49{O)bp5hDtBgCvP85zAsd>v5+-3N*9@@)|z)#Cd`S;S(S zitk4jV#D{v4>s6%L54xB+Jy?`aAWb?c%E2W53!~#+^Z4|z@;A$s~uEg0|cfQr&X;- zwXi{l zEO@udvAsFEW^pRVdZY9+%rRaB9ajxah=b^oRZatZh*dsOIlDpR-s>f@j&3TqJ?&8! z+*ken)edR3scK>kBvPF#kzI6G%?O0*je7wwv z={!{n8{I=3XsKFcf!`a(MyOUa*h=i}JXN4N2c=anRqzQjRIgP=KA0tug_x+e^$$WQ zKB5W_f%Tqzp_1ISS2tCxTLRJea@9UNOnBv-YCn2DY*Vl*egZb~jaQv?tbvylNo1Or zs)UPW#KsIzogZ!k|KI1UN-2d7eO9V2$)^&_>8{GMzk&L`Om%(zPw45!sInuWyE(q9 zJ1=IS3-(S`ICl`yFC$bBPS@`&K=o?Xa3qx+)f>5v*wv=0_tT-0v*T1>9yKO<(p*(t zYeMYlDAhl|e82)|abw>^=GmBMQwk$yp=zzNOXA`2~Hfn2cNc8qcb&sKN&l8i> zzmA73o%uuE-&T+MVU~JK-%wQ1c52tN2IS}4rfPSWr#NUdQ@dvtqAb3qo*4xZr&*{y z#vgT7c5e58FB%~b$@l3B~(#p zp$=b%gUG74MqV5vkb!sy zVq3SW^Y2e3=DJM%@IgzAHR?y5F}~eF{rGVJvDaVKh6)cGV%>YIUj%(2w$4vo)zSnu zP^r<(>x&kvr>5cSzG$J?NaV;|)6@hyu4=C_+4co_evZbZdM4OPV~P$3i&>*-_q2fM z#C{OEK4GCT_p5~se9~B~hAmZ8XgZr>{KphcXWRXVxN?K0>t=UUEPFLJSI{shE75ev zX_zfIs_EGirP=l@O`lEXC>Wk<98JMFXN*i6sBv`mK*Q2f^V_oah@2#mbr@vibWcsc zKG;a{4$a7O=|sCXX`H$hINh3SwhstLQ5ve*ejYnKQ>6)&4ZzWh)9mOA5$jrM!mTgC zJ2Eu8HZo!lhiZ1e!cpzXRn6hisHPRWG{J!93SC?`u|3$=A;)^+9^bHYTiqH zc$DU>7eeucIL&!07?I^gP0G7P=v)qv$S%ZcQW?hILnN}GL7Gh4D{$8k&6SauM`f?M zeF@K3TN}CVv_#fbr+Jp|iY%(rd_s-MzOB;=7Cihv!Cxyl*Ndi5t7!Zd$tFXqYF7a3 zpP*I6ClF2Ot!V^I)Jp+OW}4_RobCr!eHHVB(k{*?bNC55Mn!NeO6Ww zb04N%FcRt6*Iv6U%m@DeP`k#-k=Uyx+K{ARVlyUdcY2RQ{Xc(8{ROdfdu^g+IXX{)rTcMIyQymyRY|nzS6!=q=wu3Jy7p$pD6uki z-EQOeAI9mrzmGvXZk+BHbG$!wlg?h;Ky1B_Zsa8dq$Lk@qwh9D0L#$1;r}n_>WXfP zX;1uZmZY2B#*wJ~McwSzaI1qq>*lBZiRM&+Zo#TgMAIhf7W@fStgY6qlvgADUf22W z`AjrvzHW8edZ|mvlL5WX48`9MkJI4=G2y@YRJEmf^hxx_!UGw&rPchWZO; z5u-a5nNRGJn=V0v7oU&QB^C_A2fFDpMpfcORHwUC2LFydqRSi$Nn|_dt}R+a)Ff7y zZ5@Q8**l3W;VFn6AHSi?TY%rkl;}z~!2Q-V)0M>@C$jLzX7qG&&me z4X$3mzo*Ca4f3&~yD|DEyK2$#XsmB$-2*lesBhZ{N2>J|`p(uSNVmQcSz4sN>oYI3 zW>WRtKfqY8%+=f8h9vUR^>$CU63Y+M_o{kJ6dkSqEflt7?WA|EfTYjw(T^XGc^_WY zPs;H{tJd&Qzt$f+s5I4Yb%ic}+|zH(!_F4G(uY@0#W~$h9}PF5lq~&$d4q`V#OvcN z_rV5c=rc|aA!@!%pXo1yEmY~R7Q@d|*6FXgTtu8$tG~4q3p=w*U-B5Xl|M-T&}{+g zd(yu|_nh2j>A&~I!AG$Y+u-Ew!uoV~PS|BS&w<77FTcVYs12IL43Ogpd4P?`sCoi7DoLRE}AM8xu zu*os5$sJZvPwrKUzonC_E7@sv^4oVTqi3>J TM{YhBsj}oUlc!m6OIrUAne01> diff --git a/data/translations/pokerth_jp.qm b/data/translations/pokerth_jp.qm index 8ddeefce636c2a42eb5ef9988876d43566f787a8..9d9391a60855a4ea78e8dd6f2d9d0e40035b8ee5 100644 GIT binary patch delta 4505 zcmXY!c|eU>AIHDXz0Y#*b2sZ-Vlwt!WFlr1VeAzpWX&#wB-`jBG6pfP-H>ezvQAk> zNG768wuoXv*^Mx^(ahxi)_LzgpL3q)Jm>uO^SiH)$R)}0$|}xr0O|tO`U}=i5^Syr zPTngxZJOZhV`K{;rxh6pbgV!I1D$IF2Ck{^6l|6wI6EFNb^vDI2D<*pa~2Cuz6AvF zOlQEI@_{5jguHwS(0gM!B{>js!a~kp3HEap%;9@Jm*h>5Z+QVeL4t{UAU|FUjJpP< z8=sF4f)c%&Tm)t2N+8?|$}*WU|0tMW3T6E{I1!jtK0x@$a!N`7l)b}&0h^(Y?FY2{ z8|tiUK=M*(V^V=0xzKWV0t2VPG5j5{`yr~Wcn!GTM(sFi?Y0MXUd#vTSKxi0( zW4{C32O=b68zjRO^dCQ)8XiaJ#LmE}c?jK2jR!=M6tL54!PH%X*%=5;qadj{7~Yxt z`L86M9OQk5N%q6QwabVo6W}vlutzlBWUBpVJ8+%+3#My~_7{ngV+4EVO7@MkNLy8^;JO8vuvK!8qputPSI}>Y;4w+^o>L47 z;ga{s1HjuZlCNJ&;Os&v`a==W+EbdfkNfsWb|p^m|^DFJw7 zFf^Q-$e^5R@Myt(nxqJ}cqVu{!D;YGXVjnh%itTC$LN&GDJhDt%i^1&N0ee zj4)}yo;ybKC~j<6FIZuc(d=Zl1O^%#P4frdX~yoi?gLk!8v9mb&<0H^r=;W>#}~5( zs0GHT%mC(p8xJw?S!9g5nNL$E8Dk?V@xV96xEEzXBpDO>$1_@sj0al<0f%H`Ml{z& zZ5KSW)tJ9F0r-8U@sAU!z_SX*_u)SSJ(n0u=VmfUkH|_^Sx|Qt?6FfYeXy(#sm=V4 zUM5%cZq5Tb3Eo;Hd)1?aef;ItRav3>l*rz$Nx*rd+^)tapvw}ugHi|B8z4_O%vd;E zOP-g^*hy$A#|~i~Fboh>{p2_!1%J?9jyuVGZ}6|YN~R$7?+G^dEF<%O+FE&i_me=K z8-fi!6KozKIPijC&M%@^pF216tzW%JPo^mspzH%DYd` zV(A?&?_D7=%_HS~O?Lv7RKe;7(#Z$o+KUHMisgf`)VPwTVB}``x6CY{`j>)<9`cRK z)U-jUVDm)5X&2<@9y+k^i2V8!)3fnyLBGR-$2!Pws_^~KgGe`W9od+!ERx?itF+^T zntYH5B&CyCWKWVlPFhSpfxR|}O+y}ko}ny++O7H#=9d;aZVgt4~QP5Oltop zFsP9dxq>D>vQL>2WoHzRR%UGGL0yju<|@jvug?L;mMJSE_`bNGvif3GT5ON9_G?~ zXu=rfMm1lc@^t0q;2re!2&JI(67V`hxnF}8s2(NQ`o3V|V5Km;IdJ(0rD$F}(7~ZR zeR2(mxS~Aw)|n;lf{D4xha6g>-4@l@hc5bcyjranPSjlk6_y_f>93yQzxtL zT@NrFg9ZKE)z3Hj08d@jaH$wDMXTYNHF@bYR44p26!owK$4*Fwen3_9-<~uS>z3p4TDs$Ja z-Z>RRyLzidC*6Uyz17DLZvY3Ys?U!50M8Y*q>2Q5K0&Ln?kxpP(kf0L4cu&|RenW! z^c1{xU2FJHI;+Y&!H$bGk4q6iX^hq~w-m5m*1CP$m*p*1Fe6dxmG8zXQzN5%fTNjO zz@kFHH%kjt7?P*nY9UFyd(Y=;L$^`#y;ZcZbKX2SN1L*Mc7GA5O*xSQ)O6Ekjr0T# zZ_?%!aNe*)u+124;r=tgxxw0!F{4;aJhinJD&X2(`>CZruyd!jcUcju%-D|F(e4V6 zyH?A#764&ewETQK(5#^e_*nflsz1GvsLjk;8w$$8c^s<4bDrZJ70l66f{J-jIR1JjaW?8o+p zn^x?iMqkI8);<1{$@{nI_~0#UKD|uoc`+>fai)SHJg4O`v*~_3Q0uw5(J`(Ms%38E zEF0VoH}@V(AMFk>2gGop=M{5^w;RytjiAR{!2`bvUcYJ{zLb_(*wh?Ww*E##^Q5R$ zpx~%EsxX9iXQANfPv+@!*$PjnE11^KJa-&(`QmzWOtq&hDpSnP#m*!)Zp+N&EUsi; z``_8@6hj54Y&ZXq$f!?wZQk_c4K+Ps-t-|D(7rKm>BFe6c1m!H#k{kb4?D*YbILrL zdeTVq*}XE*=8gGWU>lahU~}di9@s0loRV>^`9>jQV`iGud^>3<%g_Mx)46+q8FK{B zk2k-nbPmWIZ+_j98$TXp{;-ig&t7c)D})ist}zgr#ALrd&zjh71MPtr&Ce8AW^s7F@1&U!ma zpVpA?UH9sN^x_e%h$-9!LQ` zCFloyN_d3@3Wh$>lTQ@@>#FN1`Lv*Wj-IBH_ebg%*3oi%*XS=)9{l?o{bQ*+JI#$2 z7+YC5@%rLh|uy{v8)k8n!*=%vN08-wLaktHZ; zG%xK`OIV+WwA5rv?B~saKNeb+`xUUqmMzP>9;dIjTh_#}fH&GG*kP#PzA=_{`T4-n zc9xB^dGLo|%gm0YOtS5)8 zbFY8TY-uQ1yxF?imx>L_v+i;R)MO_aWZl=(pC1HR4~*x=kyouLFQ+kG8VKI1Xgwiu z9{5V|c&znG8s|;x3APLtoE~OJg?{lMnz)^`-mtf1(xqdtZ^Xu9&T}pUxVmT$%Zp-?UmK*FA zXv-ea2ar8%xfLULZRXhSwkn{H!)z}fq*9XywvW*}fbNBMmkmYyw{gba;tJROz2ENn zDuI{%YP+}jTmH>yZ4bzCfuv@y>RrLzd18Wnj{1@1qqaS+J3TtRy5Q~l<&=~S_BA(n zOy{2VZC~2if?pSmtZqNJ?h*^~FZN{XeZIeGKXSDTL*}9VbZ;JiA?k8cid zYoGCuOf!vq5V7j>f~v{;D*oPP)y?k9S2em&MbiQ&hRqrsxvFIsx8zYh5|rdCfwi*! E2g9&rNB{r; delta 4660 zcmb`KiC<3HAICrUd7gXkvp?2}kSvk4G+M?|DwNPBrO*hWRVtC>L6)(FiNcU&1`(nV zQQ1O8)}k^|*(2M~XiR?JI=|QNFZlI(^?ILkpL5Uo?&o_Ovt%Dm$u_mqF9gsN=;*`P zE0b{`&lvG5W3(S*Tq@BVxNk^w2kaY&Uce{?Ac+Ec=@|#yV~m>*NJjv1mjI_f=$zGz z5&6IbI#cg{xn;odHz3=v25?>0LXNkFEOiCVA23e*&Ul}Gr{^4>0NF!Jz-|a*`X&Kz@Z!HxbXwfp%UF!k=BNX(Bthgz(j?9 zx2^%>?J;DP2@tavPRUmQgNtyn+DfczCYj5PV-My8z;#7di&dM+@oAVaX*=L^4ily} z0h68Km9Q2t@`d-+z2KzT@CjN(8t#E#=tv-MHvG~^V_#n)2{`g0V}2rI$x--SAVKnT zFl{95=eB^Tr$L1bVcL_xz0(M97NCogajcs0N_)fylbifjU|D$$S-=jfeCc4DcqHbx zBf*woOC{|i4P|WYfZqZGfk``&-HXG+SXpqfM`&M9j?-_K(_nlAm)b5I=>CN}{>TsL zypSbC48wr~=-7kv!nG0p)`v)iR3WTgj5QPNZ48J(8~l z1r+55QpiQ%@MWoDCT%R)#@H%Ms?bxmcvwsOM7fg5>!o8JRs(l$OFcVM(0X~bkP~vH zLG@Gvgeqxtp&RADwHX`Og-W9zRFJ8+OB2G|(1D+%tKL#<_`H;+`Xo}c7D+RHoB$lJ zlb-%Q3b6hpy&6O7=dWQrv07S@oC;L^EPZn>4|v@m{Stfv7#AUJiZ7&KEs^m>&A~mA zaqRjQhTw{$OgXhXupmm-+GZdf)R(b5RAy;Hl6qRotlCqh@~oEGbjSp*y_OB>{2dq_ zAsfN>0FGG6LQYal6v$;uvnYmkx0NMKrFtNl#3(q(R!K>LXFZd`cq2)4e9{KqNbi>+ z+cxGr)zQ(i?S)%G%A8sXpgRv|vKbGpLlPrBB zN4e`OJJNqY&_-bFBw-Bd$vCf6mXScxx3OT1S|PhpSVU#7)6kXy(tnVZwk5H9`!NnY z%ov>^t20vqM|a9Te5ai2TgmA78{?VYvQO>k_e=+(A#n+@FL0uWIE3Z`@i35em{>%# zAd}BTAppp26M=?dxt4Ll*+e_8u123L-1->-!9ot?8hL7h>7CxamJBRQ8 z*@((o1aDJb1$+qM9mlN&4$k2nV<=!sL-{$w1L#6H$cN50A%8mXVZ%QHQ(Ezn8_B|_ zllTSETH1FUzhIZ14szZ_17g`5e*NeI;7k<1DV!F(8^&)bZcipV#3zp?(|Vuef9v^- z=8yTEJ87e{bNF3{NRXb#`F)RQe(W)S;M^iAXB92v1RwsaCsiNuD}QYr2^2b>FYRat zw4KjCnDRThdOBa_-Bbd6Jjz#hCJS_mX0)niOn2mKf(HV(m-Dqt6M+$5_*XCQ0&}zZ zIvXX0JkOY(%QxI3OAI+9NIl3!m)(>86%F+MLfdYAX;m>}zPDiHbc_xK$p|Ij_-mAe!**iZ_e8U?jOFJ< z({Gn4w?aj;l5pUApg5?k2~gh>oqzG9T9v?fZL>J8!jNuE0yvc*F0G=uX(OZc zEOEuri@;S!am}omKy*hjSw(_(7$Y7SEFQ%`r1?HHFr^oQXgLv_#x(b-SO01~R z0s|(Bl?Hk;MK2?mmyMyT8bt&&(ms zJIg&aRLwiY%V+9KI#E)l%V*X!vsyl@Pk*9H9_?aDk{8R@{7lW&F%S91gQSsDusr3( zM@rfn`PnJEfr*{vm&=!s>%!z!Q|X{V*$R1eBG9c)(I=bMd&wCec__xuCKnyDQn)Rl zbr!c3-Ztc#KA#l&mVwz{>_NsM#?mv2Y3s-`E88jpnqMf>DZ--jD2R3`qHDbAA}nOQ z@LVxJp8DEQ730Njig;?wa6_+H((x5l6CcHDeI_+w>ly36Dw2O)L|vaB1tT=BOzZ5&ppL=4?a3-2ivt&RZ=tCgMIx>HrLS9YC4f||QC9^a+3s3ljG zxiWs}qWsaf1lVk){3(AqDHfr$?O{UqppnwH*+sq2F`6lr&RP2?|HJPnT^+-Lzmk>i zKBRf4n~aevrO&P&RR2yX{Tj8@>qIhEdMN|PKBd@5Rz|kDPjz;tGRl;G?~tyHZIuW# zx+s^c3W4Io$`wa@QWIs(IC3y!eph8n47F>o{GGR@{Lg=_O!K8~4J(z$Y#Zt7a%Y@; zOPQ5h1#FWjb1KM$M)#B#1Y(Vg@_GuH?#N>0TY(O)s!)DyGNK-4nMxYin+m&?O0dkM zo+nY&!|4tc_P(m#64ErnNY&Snnzmvym02(e`l3u_=^Q}$f2T+_Av2H)%6?UV$1^gO zw<^JSAn-OswZWl^8tFRK2B)*s!|YRST}6ev&kjcWQH)2&t5PZ|fb4Fn9gFDTzlW+$ z%%=AmOI7C(POg2bDjZA#Kb)hwxg>|W$6l(E2mYkkd)1>#y&-V%y6SO1dho(k_2kJC z;A^R>W;Qjzi>9ewC42_XA5=9M8jKPN;{iGogZ1q_)*}rNNOiYTIU3 z=+z?@kk1XJjPooR4_r{&4Y$)_0RuOP+6=~M;4PwpYBk{ z8SbG1lcJ8lznQYfl=0mP^%gr)bjk(wLAS2-sWC)-WUMQ#w^Hkm1<}S)XVf|Gq9}c| zj1T`-pW|rm@qjTWSbh5f&HI}$4)S7*aaMn#+Rx#YMr>OTWVF&KyOZW4Vl)QXG>?0s zF({)T^(xkw#ZU|^DAqW8CXoy67>|6@YyADYQ<`+p%o|4%cJZ05GBZtC>u|a~?Q=Abf2<;(J8RxO&7+T?V$Ii>-vO6Gt-GI&mO$M=T?_TNe})Dmw`~vY&3VlmY}8i#LND~cqkZSl zmlk^Hy0!U>Jz>LDXnI*A0G_NZ(*Xbw4%K1H%^TMrO zDSE*kedNt=3-qsbnHv;t+$$hF)_8V6SYXn$F$c1Sx}@?>J!kBX-{CsI{DJu!^FPd= znty{a2EceWe0$T#1cPAgn)APHIyue_4-cFX9XQiCA~Ya2Ffz(`fbsZ%g#(iU+>QSq PdxiaXudH&nZbknA%K?(u diff --git a/data/translations/pokerth_lt.qm b/data/translations/pokerth_lt.qm index 8e236ef8ef646a60307a6be09291d31270a2eca3..d53cf30ce692f20f4dda57b019e6cc2857f2667a 100644 GIT binary patch delta 4635 zcmXAsc|c9+8^^!zz4x4Z&pCG?nQLjGtc8R~C|e|{geVndPc_y|l3Nadz4!z{o*s^wO8#}h20H77H zZM4jMdtzs>CS8faKv*nsBoG<6HqvPN7f|*E@&^E15b*t5D_JBh9=r=^O>679=_gxj|depmzi(Fz#GR|5}y z%&VBADHUEBRb7`)*U;Pf8;-PZ%oEo8=SmzjA9L#2&itO7%eiHZ;e{&*BfXlW&j z7>K|Xr@>U0Fk;LmAZZasMAiYR=P@#UIp7+A(95}CVfh$6Z9W|@7vXUO$(m|Agr|Q2 zYv6+Ld^&fEE0N5MY%KF*x|Pgu3gPF-(2vJ4ejt5#dUq?C<6^|?kAWEvBB9=(_RC~W zx-Ij|2BgGNAWelxdst3x&>|y@3>X%R%(J#oB28o7uP~bWBHyhO7| zU+BX#X@&_v&Rm(6GR2y@*(CepioMJIf%OK()g~6OKKm8-8R^bpf#Shs^7mJ> z;;AYPtl?rs)nGb?eT|}~un-7$4pl;<21*Vnm8-}A$zCZ;q>YqUWEvkT1rz1R3|pmr z9(^e3u(GvS12lJ6wx1mcHfX4F$b+X~-z6(Unv!tm9I}!{1)0C9jHYMGIrmG*ySB>o z1RKC%r81+6QeH(wy&g7R`At#eolJaBhVPMK)WnD@U$waT>itANeBy;jynO}-kVx$ugvty#Fp=T$mJGZT54(C-K zt(O3^n5uhYs$a7nsXUt;0aJccdD(rV+SOClmvaWnvQ^WMkqqhvt5T1WY_45XrANLa zxBMVe_)e9f%mj0j%+;JDTVQU?JDNVLHV!!h)+AcBsfc1a$eT(Y)rMG4nTZxv&NDj9 z@KLH=K{u%Iu2sk~zL5 z*3$cG;upXx?kqh}?Bd>7$yzuO=}_^Gs(q^&F~~~RVkD7jWW0%}As#eW@ka9DFCBIR zo8PMrrju)$Maaw^qPkX8476<}v$UnTquOXXrh0IWBBJ`DdT@yjp&Y6zGcTm~C90Qh zB48P%diQM;C2pC_u?aF?1*$&S((lja5}Ogv6J3CcM?^1rZ%^C{{MCn83{>tWk|HYK z5nm8>L^`yoGK|C3IkH zd}smd8^H|-SPtC%zzs;W0c(1bo7yKD2<^qiO=%76aOL9rya&?GaL+})-=fZasye#A~K>FamSQg;Kae>?Majj`ust~|CAn9Y5zB9&5Ww1s>A4`uqs z{@hDXky5Ii%rc()blXCmKbThzrvUx8&ulLkO~rhpmM*~dZZbc*^A3X#P@Tw;8GeXw zvDq8UBax3~uL0>_KDNjaSWw7M&x-<1MDX$dQ9qov)JisXCO^BMKhRSpvtOyq2O^&w zL*aYd+(9nYj<@s9dtVY@|B6(348IT0LXY0kB>f>KUg`0Ud^_ zlO}Wl{<&g)BpOX|>SdEB(sZX$Z;;4b=QZj)_dwvzuj+j(D}cfeTNV0H=W>skx2 zG*?|xq6d7O)TKr`zsCpl(+X0lWtF-@Xb3hsUR^Eu2|){Kz3&?#)RO|@wO3|;ADK^`tYppF3gcIhhYnv7qG>&AmM6r| zDIf)T33JLrDIaa>83BBrAk0mnIoKQ_^K+h%GBujCy+>Hs^f|Doov_4ogl4+6RnRb~5D_Qt!p*V-?fK(>jEk6(J4iHM0JAkRHgwi8XK-XO1 zdCJeg&h=I@&Qo}6QwXL>72XEir2$GSymO~K=o%t?+D!G)q<=4b4y6s(pAeBq?P-^t zC^R5F`YjOcf}DV?JkfC~ncM%Y%<@pNON9sdt45|zt=Ki}22hY9_B^`?c)M2gc5Y3h zahB*^AGaRoWcF(=`W@Xt-_weL11OOOP8WkmkEG0O`@;HwEnURX+0JzTa1q06^)yTG zvy!!3ElwKxj1;33rv_i4LYgYhvbjSAc%3-A9j$ZzA|^G+1Pd50E|Q9<#DqauPMiOi4CMpjj+lavppOY@CDCR$(HSY%G#onmq&)E=q2(bdoNcBo9AQnC)|E#1X1V z;a*bo@JgB_zDQF-cT?==OVj6(%V!?4l0~LS=`A{ed4));`jg?QUec<;Cu!UoC#}z* z9^mC6b4)*(kKRjJB_-7RUQ3%z^U1OysnX#o7II;obQ%fNbd6F`3p!!rcT!O|5|4eB zbba9|ptiAe<34%ha<)`f+6<^kksiB7(U4ptJ$bSaY-qkzKE)l#i}XiW|^6X{{7)^U0@82?=BRCx;+wIxM;g~4+Fl~X?w3AaoOF~dONlT9=Tb`T4ZSZ&Li!#UMh35t;{>s+J3#sfS%FX zfMewP;XSp1oga`VmuttarRr0=!=xSel~n4xT|4V4xxQ1pHo4h$s@B2UlsjwbV!cA< z{3lkjKFzi3eCXthE^7A#QG-mrqy1%QAXvvz?SW|yKz6$J)SKCKAMv%4IrwN#GkTxd zP39YC?Zp6Ew{U^>&vW$mKBlem!@%Y;w^wREP=8^gw(7XxdP^_p)Qw&PPx|RZC-Tf_ zZ=LZtz30d2jCAY5+)SNYB57#HJ)K{OnL6?rnUB(SQBh8mj!ktl1IXYGKkL#0y}|s4 z>o&%YqLEy%l9`+oy5B0wX}+n^o!`EeZk{o^!ZUZN>^;|AzDBX`*ics_(m$*@VI^zX zO;=>BrHva|$)fh_irX)lN zV+cij`(i7Z(*l{1pY`kSTIhnDq|fa|)xaf9=GHX*!K@o#&I9#FwNHVl*7{#>`BI(S ztUo)9wttbVKW8Du2`%*(Mv{3h4a_MvM$=RM6*n?+q>ujk%=*>7`jVw|IPXOLoBlLE z4e>Ozw4pZqVVl9#&4FrEu$8REeM85;rqNit%+RfpWYjs+(DM^TDWtoh?^<&1PIp6S zC>6~=hRhM4=zcQ8ka;}~a0@Z4uZRM~p!bG+mt68vBeQ)YqvSUYEGAM( u7e?Ov)V{5`?_J((YU*}$OQXbLX5X(3%=-B6%(an?(;G$~Zy3!YZ2u2r^LOU} delta 4526 zcmXAt30O_}8^^!Dd(S!do^$SE%Ow;glqE5?5Ft`Yl#q%dQ8Ly{$c_9P%ZTRMvZbSOfelf&YmEW^A^S zIn)QgF`w=W6#m@bN)~1Uzi$GN=ma5p6fo#LgoJ<43{UN#nVbhqo(IkCon%n}j1xWp zg`8y-vp0LeJ%yZ*>5L)k&jAi^;nRH`;Mh`OOq9aZU=uhWQ0r`MAp17K}hmv zFykwP_inE$L~_CAO+{6W#5gX!N4a$c@5 zYNNu>v8J25yq zk=S#&!rL`C6SV=DJsWr3qk!A#C^=Y5=h%Z67V_?JPt>;d0J{Ciq&frOU#c*AH#2M^ zfB1K2^_pY=mcN-@3Wd3Mg2Iqn3e6SASkDDjV56S1o+om_2EAte2DkxVH7vfm4Dg9% z3BS<7Gu>FamN+GzZEG|gaQmD6RulrXyP>ecmRP(f# zS*nEE2daLv3aMfSTggIGEj(v$o}!8<{0rE8OBMNx2UvuoYUVmmfNfIEx-gPzktzJL zUX@r#VKg>ZEjCUBGTapwXR6lJ&8D22UvSkb-76~Sl?NyJB;$q&Qo>wJo)>} z7*z?k7_7dJs&WV&qeYFXCO;ntaST>Ns{!uKR;yQ$0aB@2oJ1R`FDf(@szo!^$M=Qm z7Q1Mngm|@+R0A|~Q#;T02OC^ZJ@jq~SmXZckxeOa=ghT|g*UQ%;Y{W|>N$7r0hNX7 z%Lt5G3Iw5+DBcNSU_3%FUMc{mc<1MC%Y^Byqc539Dv9yXRdzFPL%!|t)%4P zx;gzwX>p$GZbSMtD~s#dF(&kDUmmKzn z-137$u`!pTP6g|9-SUCAXPy=t!QOn5+c@+DSd%tfdI80Bum?#VX~Wbn3gff6jK_4C z5w_fp;nzrbL%5uPZyHg`<(x_Yb|-TCQfZIaNyK-=wZxCab41eL*!M(o{j}CrGW$cs zTDlJ+eg@p9Eu{;J-LyZfWcE*qbf{^MxqYh{dApI7tYuRoX=L0WA_;xm980BOa!%!b z>97;nbcEZVOs=sFRk+o_T`9N(v~8{M-V;kljmezA-91ea;m&Y(&(R^&^|&I-BD(kE zDqJO?*p_?qHJu8#Na47y3STzl-Zi4nAG;H6i77-Epe&2%POKvC1)ivgmw@sZB4tGR zVd4vV{vRS8+FWkO<8mF?cd5LPlSz90JFhuR2{|O0Z`zOqY-ADd^ur_IZVcbygB=Ov z0KR8oFy9Kv=B|^)k4EoE>w6m3O{@l?1to$PGl$y znJcv1$77+k5fw|P&YF4~-UF|kH1+33fi-`x zY4|z{@SI^Kv#Zdw`%HN@_O!s)@+&3D)9@X2z0Su-?9!8OM(S9egzj6T1MAu%g zg?=`grN5p5gPUggC-fobt2_vJFjygN@ zqo-nUPg^STm*Rw#6z$)aixG>+UfWnPZcZLpo3G-W(qL+zcNBhVC(ccznb^`w;ip(J zaY_W3Zko8L>2nf=O7TbY0UFQJtYm$9iz}9RP@Axb>wlgPv{5VEG(z0GcOZ$x>u2JY zXQbs1XNg;?g8(T@%osuG>(pOi`dV>kM_QoOJMmZ&Ie2{=@!UR==3x$Een1aubb7I1 z0c|`b-%1v8P`s2uRW4_Ww@S|dJL`-0SJ;7R4v6;;gachO#pj88fb5WOG?N~G5nngR z2h)0qul;V3r8mSkZj|O-O=9&Xl0U-{@l!BuxGqsbJT;%}5=pE_iRkSqH6QK(Y>1WY zr_ccgoKjfYOzKkBjXapAu-_@E>)2~R-TU|AAC5gE~tAqsb#}UntyEEsfslNN*P|Qb?_V2L2gVvQ|M-l<#9o=!?>n zfQuxPUX~UHlew|9L@ppzZYnMPwKdQuQsKB-g&z(|);wzABW3gC-;W2RoUycP&;u#g zqn6rIdxeX8NC!_A1NmK~WB15^?H@^}g>W#JW75S9`Ba}Lr2D^p+x3W4DHv!Fxh~bz zk-yDeangT1$X{cstYm^LtE1YIdh2C=Rvryt)w0knkLIc_vg42&VBuwQTNNFDW2)?8 zTL>mDlU-v{!McRY-MlHo8s*A?2S{GVew8Cel+z2t896$5Ck48n96OKvJ9Dm;ENpYK-`1v|X<@ zI=?^2s{wU7|IT;GOT%^J(nvmPqjlrIP?C9V*Uh?2UXAJ0MYq6qJL#>BF7aj>(0Zl9 z`8%y-eIDu7_M>wyS*F`Poch>;bloq${$L%q>vE^sk*<2{j=h>qbthTL>^R+VM)xyn z6jnXco%N&V7I|78)H9j)>fYV1qnD8gJs2LK`%Lw8%C@3rXzHpbw8o-fww+9+<|&dv3{l>S=V8YezCs?m``K<#+Xq+$u%ok zs|)(WWu-K7y&T(a%o*uxl}GctHQ^aUNLkYJE+7HoXN7G?>!M0PiG2 z=j-&G|38K6^7yen!v_qTfWq{H*Yg65Nb%3UK>(|Qh2xfSjikb z6^5NOth-fAKRI|9GJ8|4yDV0?Ww2rYhHGGsqT!&fgg$>^ICR5{)){X&HH@}@(cf^o z_ydXA6T@FYWS;Xa!}-~Z0nL8HMb~6%{`IV64Vvtt3$iXuk^Wc|OnQ`JVRVaoJb7^-b90l&1Eb+yS%& zHg}VmUP$Z?rne^g0s(QvKwzvfWrERk3{VaR((3`v2bjSuWMdWpBYy!LmdH$*PdAPQ zrbk-Hyefgv9AH*|3z<(BsFGI!VLlczuVzr~Tu#TwWX}F-A=59F=`|Co!rp+%=aKy5 zu0K@IHv=n2fV1C5FX|~X+F&8`Is?vwZdmyQT5v*h?@h$#2Vl>%*o8& zRE_?L?SQl~7`gc(&^i>O`)nd6%M2@$nHUF8O)Buo9-dblxEbEdvw&${7Ba6Cc&|PK zd@e`84{1QOCjur=&VO2tz-385#{&qulmRxX7-MHp?pOIEc;;}*&+C;4URDRjdmwl} zt$Th)B83@LD)Y^43mI2{;PVvdTMiS4(}Sl>vye6If++n7Fx@)LY6z%(oy^b(neXpl zQ3Mq-ZYP!$l~XZ)MdG-I;%8y)-%X&zPr2qJ3ZrQc_B)ZFzLemP_H_DY2u_6&d-}?} zsYG`87GUNf6!s4X@_$8H)@NErGG3V}yQ9+axveYda6FUh^>jR3<|IF+-%9!LILfS= zrvt0gnO!24xsRR9z#5sR@;c_Suo7&fJ99aE6wGBha~tXm)J$iwA1i?2`7Hi0JvbtT zrKyRNTeF=_W&vGO+3|MN> zkig!&9thNBDh%6qVgPIRPSJ7EL14vog;RHWK;I;pgX&~fsuiv|)B)AO3b*JY67U8K z*%&MHSEapav0_ru1;G4TG5N47n4hO&?xrCC+p37Z><=iu$oyBQSX4yi)2Awy7{Y)p z!7>X>iuLs|K$5rOVA5z{&0)p0=A~dgY!nYzDp(U+Md2mN^M@OXGSw0=;gF&>HIhzWtY-jF+*5h-+XxbxL3t^bZrE~JX7LB*n=|LYxJEh z$lY5kkh#fLbv^GYO_3a#cm6cD5{#x5s>1UmkuNr?!i%(s+HI^kP zxvXX0UBZ35TMCR`$SeJ*RMlmC<2Iei%v@y-`c392CNs5#%s1|p9Ds-&N zAzx}PGvJfpls^k>_*TKWpdPS(D|oE*Cxdj8S$jwDDz>3Pv|ncV3Bl**aw^q!!Iw({ z-ZT+{GEdOJX(@zcP{4Pu36pYNz#3-=bCwuy=A1bVblNP$hxGs+TbqwaM$>L# z)zm4#rbohN4aM8KR@mq44P4(W99mNWBn}i#j^Zf(Zo&<1DX`dIC@$6m{nCXJBdxpp zd7-R=BwH|0s1U8eJj_A`^$6UK2~SIDL!vw(ysZ~W!hu5dF#|9+OsKm;1^4||tsnn0 zHKqR*b*t^cB*_w)g&u0V^moAcEOi$JRaAFF-S_GRFiox6C-s#4 zmb6o7p`KFSz%cdHPF<-6XIhXd*2qy!4rYJnIv?;PnvBhD)iqJg_tW@Vf>e-Z7TlRn6-JSQ%i zJ_$?_CML9aN#5~5Tw%(jjof1kS@&u&X{jqsl{ez%4GRFrhD z;imX;D_Nq6Q;45}=!MCC5@Km0ZSN_GRwTOtt0h|>2XYcm$$mP8JIF<5QI6E3qBrI1 zvdmrvspq(S;AEiW>evqWSR}bNRHa9{%mKS4kF4Fm+6>8eY#_;HzD#o~Y3vS1^41|g zOTnM@v_H6NAu}4KaL*?s;1kkx-z(&m+okA6_h?2Pmts27b#3NKOEr09(kf~Bk+w8- zKFSQz%6#K5S@hC!rnHBn%)ad_?H@<|={{6C>iQYzeMe?|8!79rQWNl3pme&JQrD@A zbe<0Zv)?IQ*+MD1w@WHHP66Gl7}!tQCMx4a(A=DJi{Z$~@P8`77)l(7I8nRW9t z%J2@f753C{(WImv+cbRdbHE)djpNAMU_PFj4hqV|`czG4n#ms=w3lk#Q4<+QDUK+ykd3*dS=PE6Shs9V^3YQHmN06P zN1mds*kR44L^AhYPh|QB$-JMY*-~6g7WhrGbpZu7(4_foS}B;@FPbwZP-;4+YVums zN;TP5kEV>S5?C^P4hG!IK`fOiKp|8xlfYd=Tx_;CW5Yqh3)nlrF- zsOIIe8sMdk=A(@rSnCm5ZIl~*v#iiIv!jfS7^bybN9XNrwRW{r0J{RMeIy;%ebbs8 zp56w0g0&7$DV5$2v^^TOL&XQQefo?8-Un+3u5L#rmaKKPCvn{?wU9M)&<>7sq~_Ae zO!*@7dZBj6KnmcyXIifllzPtyt#|iA+IAIae@r1ysd}sp{Yv5-%xR;qQRW>ACu$ek z>>_hIt6g+2g+6<=GGh){$eh<`H@eZv7es3hdwSCi!?j0e*pcf7YEQq50VW-{kTovS zo?&zx5g_wfm^R0Yu8R#dCtDd!nc5FD8kqY99p_8o)LQ9;#+76Nw{(&NE#J>iXZ(YX zcXiMi3rOm-LUm5Dq?E0H>pc9;RM2TM@3+^5giudDAFG?|MNxHnp{eU4b|Xs zRnYeIwZ8i;x^BoZeUGZ0v`fg=yND~H!OMKT&s`(+z)SNHYdh16)%t~eExA%Fec~vp zYih8C%=lTR_Xz!_`=#`+ilO?90o3yys$^~q)*suF57sEtkYj{T1K0NC<{$Ye~Nxk;NH>t8*>{TFhXCv zk{0YztA97NGcYW}(54Yh)mPmOU7YO5oEBQhnoTo&_iP4jQQsSSJzWdd_M4&KN2;7x zxM6S#Wqey}Lr@U8qjSFD$Gq9}6_jCE8}O07LDm^IRfN#~tA$~I=M1vjki+I1jg0(? z8DRc{vtBi_^-$^&V0QkmsY38ITmN96#s6r#L+5}1gd-ZU4S%=%HkdUvzgaC=Sp|eg f$A(9@_MH?H6E{10iaF(J3v=N|eOC8RF*E-U_4ACt delta 4545 zcmXAsd0b8T8^=H2d+)jTo^v-^q@si@G1^47N}*^KGPXo2B4aJfFBh36QRE_`8rzI* z7_yA)ODHsBOGQ!17RffIB)`W!f4$H5b++gGET8B3UM%8v6>{s%*gqNOw%s)VIs=wijhq7QKWw*WTkF^K6tlyan};E z=bM2PH8|UCKunX!xg|!jfFHp5(F-XDz{PJQR)Jfz9$38#+*%nhh|`9`ILf0X}EIzlivs5<#o-Xd9+RvH&T9)|>{K zMq|{ETY-5d7&WN{SmckWSk$yUm!zYCm>=7eRx_gBbiw?;s&C=6>c7Sl@Ey>Fo@BENAhbYk(oeZ1F+*aO{t4 ztCBe7Im0nC1iq+8;C;1`3$(TP6LH&x`IW|41}NIWi61vK20c+M-MN*QM) z3s`CRDz(-7N~V-u0t`nbQxAH8g`Abl-82|rS(16zLIKGakstJu#4-w>c8g?%E)vMJ z6In7$vc6?LkZLa3pE?3qJ7036Z6%oVTFC>p1&AB|DQ~l)Dg()AZzX3ixlU!k<7G0=4MX@#(t9ZF&|5%H1nj) zz3ow;@poDOcHe*>(_~&;C*WRd+00{<2_I@@%kwB>uB6D4CcPsMO%WFM>A%)dzE2$mHLgX-!Kdm>C`RB=UpXPx1^p))nE+*-m zA=?}BT_$eJ_MTr%vO7?AAf5g-Esgkrc$WAt@eT1mAgVo)q7fBnBr|IvHUZvIiFDCS zH~t_}IHM|zWadsp+FZ0oc3>T8bMzo1nfX*A$z*gKQAx};RLCv52g(li+yiXbE<2n= z>TbD21SPS7;NB8rdVmGFrEn)j0~l{adnk z-?mciE*3e)L}ZPb?1LHIf4GNeMSMqeAZm#HiQ|a-fr>a{5%B0fkusvfj`)h!gNU?g z{iD?!ZnS`PE8*mOcTj3LaEcR@qx}bPmZqd(fsUO0q9-KX_FT_THl&f}oO@X%m}>>+ z6Oanr+Qj+9n}F%sbJGV+p=M~$&5E%naevOm4SEkOcID=+qi9ySaPdx5R1mm?1zNCv z0bD}%4$9#PH;ospRUNl>SOHLz!mXc84>;}THr_C&qLFf&hmk+$Y~!|duBG(}Zu@rn z;M3z=_C7MGR|B{65v?CYaJyzL1(V(8emlK{RI|uP7MRSP3atkVKFD2LLk6xTy<slNKXZjq&t8gFnIC~?Z56E-MuC|GDoh)qfB|oeWM%^u-I^~`-JVxCQcGh))C%X47NGST zgu}+gm9^FMP0HY?C3G-pJ|Hl9c1a<4T>oR z?xfqMia9F}fjLGh=A6z4x^Gr2j&uPYmm1Cr7J4(q>gZ`S%I#KcR*{(<8Wq1e2LU%H zDGscy0g|PP6T>;M*1sxlsVjlymWuLnEzmDl@z8>{>vTa;RYUn$B30Dzt-<^_MGX}I zJP#{sD{0!0c2T@(;VD0@74Ht~fVmEe=Ia#Akkd--#GlD;q3e|Gw~wcMdnmG0r?km^ z3rt+1>>;5*YCM&Fi!M=jn5p#pYdY|1lQL98-N4RKIjz{5D(;DLS~aoQK^fh>C#?nL zf)Q?H_)X>N$uy0X98<3Qoi;S?xH9wkd-`##^3+5c17_=$m&=yHmGxMmtekY5EVksC za}u@XL%gyo9q7@I?|zbAjDwNP;u0SiLxK7Gv4KKE`~?p9Rj34FvF^25Gpe#$a3 zSNEEaTX2r@B9UKE9Y)=BmdH0R`Gtuz8mH!qtasuQr%$0gz0WVRd`ZHP!~dc`N>kbs zBbieqpSse6hL3Q5^M)lrr&S_1^x?Pd_W^|GKK%9)r^n){pyQAwh8|*mA3J94FB+G zILSyX|1xnOux+8prki|&Ndeuz$2SB}c7M#_-#JrucOA@s&LX|j%NFqeh0zbw+6suL zcC)QX;9F7F_5Uig3+_lVVItU0Cvyk6i!4hOTx#6FTJ;m@xMT@p~r+n9!-GT9g&M(2zh5K^}tzcA-|kl*S&{uK^_if+e)~eNiMq=BRu@` zy8+9Ey8n%!y1XmAk!!)MJcPy;8ybH+g)e={W1-(fetD*nMs+2{Hc@f&D3e??D!JP^ z;PwMmC*Rv(L1$H6CFF_qlT{8@WkAbgm1C?v9jwbnm75=>l;EQpbu@|;rCBv)WGx*O z{!+!zEYFaonwdZ@j@@Y_3v^c{b?61w%T<-;T}ktKr7F$$6wO%&RhyDYxqCkq8QNat z{RmZNc{%m2tE#LeWY~arsv|L#V4iJMr}ZG$bQ4sC9cZU2S5;x}0+PA|s$0wQfwzUK z;s@lJb0bxc9$L}bTJ^X`IGBC4>dBL3U>=dG>KJDrhgZE!`UJdKtNLtZLmoV-R>yhL zfhtJd#)dpL<}X zvpUGBlsxIDo{&MB(h#bi{FRc^i&M|LL7wk8B0{~?>Q|tympbuY2AyfuBInOBk~y`g zH+s^}m-JH~^bZ2FJE1-_!-iDXTAlxPJ{=_zjAW+%>eGzYu~s5$@2f8d&~x!!4B4$L z^o!LWs5P)*y)|6OcXL*16sGkg0ht=1BW-_VTaCp@TIbelEJ`TVXLr#!##5$bC2Rab z4HVEAk@wzc!o#U1pA~B629QMzS^^H79DSX$HBbx%g`a z6*$Fb)&~tq9Gy9NIlc`pbIiQsGs)MT>3!sNo{!wZP>k0`_`L=9-kdLI}_@vFL&yC zINFdnc^k>h%XB|Hn?dvEDP8Z{bg<5Ib^Sh5L;*pp`->A}nm2P`|}^){{c Q%?qB;E<5kSe=BDFAG2g@N&o-= diff --git a/data/translations/pokerth_no.qm b/data/translations/pokerth_no.qm index d39d55fa915fe549cc00bbfe74837ed81fffc2fe..ec2b5168c6c9839a4c52c4bf26f74ffb8d1f53a5 100644 GIT binary patch delta 972 zcmXAndu&Tl9LK-+wzu8AZSNi?Y#wbVT{m0T>ZS~t&a0Tr60ev?Ow^3bXlIMZbZlPp ztScrP69lu3Kh!H`wGasr;vf6NWWo?kgs>oE{5ZKe`J8jl`JM0g{C>Z_I_`NrcPKWy z9e@K!s{~YTV5lFMvjETwj2;Kn4b_17lF`t}nAXEM?OJeN8t)N;JFIab2*>VG=u*a* z*^HjK!Fv;5!JRf|CMplp-&wPrjy;Qw!D22mak#&*&^yHy`9^{gBal zL9y{A=H){9iBqKWk#Q7+bFJjg5XHQZX zrr%ga|7R){Dr0n?n0!5#^k*?3%IWfhj}k*)kI_c1b_`hf{cuPVj|+?8Q1OPZb`Nud6bp0TVyyUZham z_<-(xRWFe2)P0Yq^JCuYU9N?cWu1Oea2b$tTkm^#00E54)wkqOsxlwzTRCc0eGQ{^ zvi@sFKQPT@u$PfQe2ZaQZWb^l-ta)0N3C;((b;L}h+a!Zo*7=GchP=}?EKt7<$WZN z6?c2DZ4m*hKh!+>jzeBWLL zXxka>36Zw9MSx{{q&xVE4E>>nr%wqF8xiUisuSIb$U_1A^p(Je6)<7t|CtG;SPd`M l((qwi1T_sbG@|BsePv#sDX+lqFE8<}P`+5=LK{>nI@Xj~qo$2XF&Z{WMq-kc4{fFe#bj3!%6%N{$v$19Pd4 zWzT3@bPWp1P6JvG3cIcXq8i0nD}dTYO&XA58H?dI^HR|X__a_IoveRb2e84%#<{zJ z0D-kXy95{~BsZgH8l=07g%PD!e5wMNK&R~RxMr&{wQ6MHn8 zQ=DqQMdB<_6YneT4Uz1GU}|=ZG|cLmTUQ_6D*{eY=ddAXzrSko<; zWRWR5Q~}q20(y%oXt5MfYN<(usysyl5MQFYrXlMXQTZC@NZk+owhkTw4Bw@CS){g; zGYmLM-0jrl_fo$sGRMg6J4+&2+PK3NBP5cYtC-yd1Wr@q7r07y9uO2mH5#}JRlNYy zM@>)TTDvnzP7~59c?4^EA#IYI)s`=6>)cvkvsJ2;>saf&)J_&{Gt#g;q{^#Nl#@sq zGL4=k?;ldAsf{uNX&%jtk<^;1)6CZ{0da3MzrrGbbO62 z$`aqRjntD;$qzB)C-Dtb-BR6FfJ<`ZE|?E;N`ai0iqF1N~W)KDt6h{TIqh`dh z0b<2ou%co^B3NRH3Tm)mS1eIuz52fMn_PYOz5B;|>#g+`3qHSg&e>|qgc zxhA3wxn$;YGw|Y1JOH1)5y*1x+4-nGaT}))ZM{HT1+=iEsX#Uq9o}0+Owo#X8Q$*= zAl_{m1U+Qu3z-JKNyiiuUEe^`OKXVU4kne4FVO{_G^1Y;8*F||F7uufg^!|!ju>Eb32B{PK%i6P zk$Hh=Y#24E!32|bD5x}_*!?*)Bq|lA>PSOoO(iN#r(qcZL?;eYa0J?)@}uCGp2QO0 zQ*inRVipqx7c7LSTtJxOOdA``#F9q{512(n!9|elOgIG}hANYv!`X|8E`LL#d!obJ ze+Xo&t0=TB?sFGR%P^vmGbk+@ntGc~Qz~!47rZFl zd;}WkK$*kLsYKR(G<$mj!r?2L=Rz;{JtIf1D7tu8IRiUBoYcDgU4WqLi) ztG}qAO>1H^{HY)~kEq}d?fD8C2^>iK!q9Kpa)E5%YucCPP1Hg}NAy;rn&otf_az$h zlq$>}^~45R>1N?Os4{_WKWz$CZ>5KpVxlD{>Ccsmhz@4cyQXN6>P_$F`ytmPGsQ0DyxR18)srxlRV6Bs1G~Etn|w zs{Mk+M6sRQ{D|6gW+z`25sPcZPE9lryO+Vv@+*nTy#=xrW_HQ-2V$n@?2^|ZVv`i? z>W`S=$y@At4&vQBpWR4;>h+u1<42u{&5U91ZeAp6-AANZ4#D^OiM-M_5R(^)+I&+) zG{szOznESwkd1#R`o`&7qM`o~bq+p5G*>C|JvNirgoUCm@yOQ?oCLB*B_cmt2J4^| z1x@ZjG`ovPS9z4k*g_zy*Whn15QT2?CH8!{DCW->#InjnN+bs*wjG)lN& zlf6Z0l^==fZxu~}qp=2!>>OSon*T9@n5w;KS+mweKkX0|%zB9Em?PRSs}C`Ch-mLL zHPM0EqJy*W{^BE1dGsON_Z6M2Uq$TrAEMK)ud(nP5S_l|N9-51=rTh-S+!VHQCdu9 zW_~KVvgA7~c=JRzxhcdJZWh(_I#2Xnf6<$i?-9o*MQ={zqr(}Zx5ts`hLng&CM7mx zuvk17Gn>0tEDwj^>dtm*O=7uuFjBQh+<0v<@=27~Q}LFld5XAM0tEOiRP22YzEPeg z{<-2N;(zIK@jw?OnkNedvYPqgs3+5joa%~WYzgJ0r#R+_je4=E469}KMmu)|iA|TU z5HrpfryFWR;39Em4Z`x}ZSjI!e4qPLyr@Ynq7^@j7mW=h8vToVDXhj zaHfqr#gF$F6DwXV{wsPr(Txe>k7;GdCoeg^+?J3Y*?HY4kfmjDijf|~8r|e-`M^}S z=X15pxL~V&xUX;F0r!k+=ZTp=y2G`vi*^6;G0vy{4q}-xT*pSAh$_D4y7Enk4V%aH zxQzAu=1eZY2F}`LvOf@yY57JGr3H07O~w*F7rS(GTQgt z9B&@0S$}R``6Tc?XW=l@3D4}zFbHHWEx7ElUt=+v$1U!K{?U+lZY7txUK21eG@N%%(-}zaJkK262ztD2NSj#XXk7hIz-h=bx5f@yN6DSA{?p z8^gVD!gu;YumSiUYz{U7JAz}u4a6eCz;a?^E`W%xh=$-p#Q&HcxOfN7=Kf(zG)Izn zI{A^7SKA6?E6($C%s(B+@_U7! za{yshuz{a%z=tKH_=P9yqQf;$=<@NaM{f%(a zaQ&((mg(Bt`A0qqVlEfW z_KTsH_(u;yh@H8~zrIjKv@}N|4p>5LVh4%L2e$mUuPsF1zP9uDXo=gJUGR-h675n5aL`H8DjCil*;dlNQvj-LbAL(SQwhja10;SC z+hOa@lE};Og|ah}X!eAt?gL458Sej@CK+1?#pd9ClCf(cXxjow?8<1EqDm6`z66O$ zE08@LEJ^6rhiDSBGqb)x7PwwAArwv?mn50oau>0AZjz}eZkhS|NlCibBov?L?R@@~ zWNybEaH<%|+)xa(b%(@SmWvI@cFB^e4MdhDl4W~UaIU{3t1BiEtNbL{q4`Mc<_byC zW**D+TuIUI=ZMx-NDkb<^U?}QX-X56VuuB?+*HZ0n!3c?yd>q_SE2sT$&~ySGYq@Y zCX$N|a1MtKl1s^};Kg+$SG!aZ+j2^B?H~kf{ZdkWz?GP9j^y5*i^M`2OCIj?C3d)p z4~Q863A9hmuhRf5=pY89(@tUp7o_(AC8%^ zTpqMtAa^H9+nj+{-r6nozVwl(;SFi;87PtJ>=ei{9i;uPG{Ca@y+9VTUpipgE$nFC zNd0+)ZPIjU&<>brMwv7uA2S^0D%BnLL8a3|YB+bDD8IKfZt50d#~MiE_7@S2n<-5R zGq)uc-BUWb3J)e3?96^A&DeZ|*wp3HnPb9<)wf6&DPN-U`5?_1(VEDIm#+2pBQ~I) zbmN?AVzO}Q=DW~DWQuh6&pfgG>C)3GXik(Wy}alGDy8SrD_7J+>FLs|&d@;W66qgX zJW$rZmEJU0uR)5{ORMFzh}|6}tw!RZncbv!s`81=&y&`Clw(b}D1E+FL-gku>4y_= z%3U{P;x$;mH|b^S5!0}f*(!66$VJ8DEo)FX30t{_vc}7UQC`OhWFrU2T=SkH@!XJU zw?crU88WX7ID77RnYo$j2vT7eSql-oGRIfe>V)mZE?JvpP}Q_@S%-2YmZkk<--qb1 zjvHj1emMhfk@*flSRL9e>;5MOmT#B+^sy^!S}p6nHxhfk`Le!I=r_+#HqZeXc4%8! z*bE$sc>N#?KhqEy_Mt5N7C5k_SvICwOJe?UvdEvaVY^u}Q=fLI&s}7bY`fdl7iH$@ z#YAfyW$AI?>bbJ%Paa@xpIa*7*@tM#wBBn8>Q` zGV490=3Vn-n^G5GQM)KBZ1n`CUWIJmh&-I6m@mqX&P+!~7i33o;2dXdZP~HPNyH9~ zk(KqmiTh$%`CeN`Z)K<6ULk6^N>()zGoP_t_ITPwV!z*zGw*a_X-DO0@?c3^3Goc5M8<=?~h$E8>EsCn1uE-&&q>*8le6+&$C}-W(Z^>x7e9CLOy!7 zE3uaSIMwpI}$0rU(M&sqCTS3?_%(XM6 zn>?}IF@)n^^29WMJilmX%2at;qz>!z!7^dJ^LN51?%b~qy<_G z72QQ3a|)KPY2`~4G)i7HIhdGZFL}vE&KCdmW&bslFj4~($-_=Rol+#+49GW%vG@IAM$6lu?)}dDu31wHl5N*{@fcg zEee&tUWz(kL81Ij5JyZ?Ab;nM;_>(S3QBs8j&c-oM?}e`_KHRWJg}-YQMg6oedY&& zEM&K$Z8e;Eg{z$>M2c^RogwCvujnvRj3c~_ito*brXpp&Q}{OVB$j?m;cIiQi8Xdk zi&pe5TuH3f5`|w61F=)d3jZNcZLCNjtGiV(B&P|MB%(;ec#(iRM!-d{wGi$999^jni74;P?+Ou|Bkp#RU~+!;n4kx6vr%LS8ggM z561r9@v&m6vJCtAPl}AqXfVau&eLH6SyGu|mY+K|p`R2B$H2DdE-A8S!8y17q7cIF z+f9lULkfw4uPE}rL;nYkD^}s;gN^r86b!?JZu^=Qn;kKO#RYc$RjJtG`wm5>%+B}q z6om(?h;>O&?Cs-?Fx;&ux&m8{^H3a?gb>@IQ5^R!k*JAnc2_(LMSt7PQHr-8U2(#3M)AJGbL3yYCM!22f>zfR`T)1SXM)ol6K&bdP-^2`q<0$7sys!RyOH%j@Xl7 z%CAK*U7gm-<_#*L!Kum?FI|cH>6C4vq2YbglM;wD}M-rGc7ApcK;SRzO+qXs(P-lVRe|wb>1r+!R%ML zz6}SBDz~v{Kl6x6`}JFBY@5pC&N(<^LlCCjvRdVt`Vl*(rYf(=by4KbR<&?5<3VV1 zRjWBVY&zGdypLf!eKu6p7MnyiDofSAJu0J#hgF?sdtzO`rSf$HgWc_1Q>pUxkATk% zP<2g)6GzV!$ei-+^p~o-b;3lB3|IBrSxmHSzRK^L3T#SCRl^rx(VEaxHOl-C#QV&- zs`!&|ie1B16B?{QCF8A1`yI9qe_-d!)dE?`LDl>o*{I)_sTOv@;_=}}Rd$=h@bXbA z>n~L}(YT;mI+J1l@JY4oQ6&=9J=MAaZaAo%ui6+6pV{70wW+Tkv7HxGTcRLXeVNL< zHTEF}+N9ds8u9s6J5|xs1RN~X2xP0mRQnn3A2krj;x4I3y?6jIUGN5kyy$xhvWB;U~l-zp>!@(xMRIT>8TK+_&N?{ z3UsIlvvX~PLzy%3!;|X*SjfUQ&$%#p~*Z-EeNlaq1>b@eiXl{ng)`MZ-U?s@p!x z#ZKm$x`QXa*M+Kmi^^u>TwfaAPU~9$Nd7;Cw!-#AbE>r^SL@L=Ot3h*s7n*35Y=v=KG7x}I~HCb%XI}Y(=C0~r^nek z;MG@VK&4Y_)Kx1s;o#Cq{j_^??2Ou||C+KJ)$d}BW63@&>r##583=TuyT)nhN1OvJ z(m1zihfQdu#=SN+DyEH^7H!O~IGcHa3s+)m8)#bHjl#*qM$LD3vWV>o(tQ8=3DNQ# zP1gnRk;dCJK|$!?_)JaEDT$@6U|A` zlvE&&cb?aj1{_4@+N`O(0Vg{8QFCp`IMmamd5E)N8vc{!LlGKXejq7 z1erWcefC(Xwlmt7YnldX}^?D$A?z_F^NowRF`twkEb`z1itP$JH8UNgURy zFfUTetm`|luPi5`Mi)*9K3=Ph6LqI33Z)qQHIj++G?t=pDu&%4ejNuzM#YC~<8<++ z6m3jYXo6+i*m{LsV>Wn<>4g8M8Yz{M=>-~V(cFNa6pF>Qks>ID@f1!vCdGZc@MQ#; zg73#Nm(K%ubc=~GCTkPo^kF8Q$rzuYH5s+ZI#XDr))cANMp(wp_bhyvb-JPD?(ZI! zUCZlQ_H5YM%!vkk8G)iPQW&Lt?o$!?xi`!9 z^sR*wb%F(qf4_m!ECDU+Sb7xJWsePe zP(JkEd<{YV+t;M9iSnNWx#IdokUbu5tfq7L|3~y%9aC82J(`hhxTvv8Fo!Ku7)bwF zG)WI*Y^>2>4Tyk7K2Bw-JxQZj9t&uh$yw zLq7r~zy)jS%Qi0JrVghTZaSYVQC+Xw0{j5Fe_Wc-1c-@zz)bdYAFzEvSpPp{EZS6qel}H zW+FWKJONE$n9*d4N{H0<(&=rzp}0Z5vihHcOo^4Ot4Q3MdRaT)Vb0cs66VzCOLM2s&69NrUs_prU1dc| zpD$U?qUqt{kt$3m22)Fgkaqw1(v>T^vK}mD-~I5@mv;Xme0SU>LzVGpp9qEi(*tda zPDSF@k-?f@%<8skWs}P83s}PvgnX?J*Xj)6TBL0QF5~p^u{wj^V2Vkxp4-hDbXfks z8nY!vwE2SGI--;{Y4!Ku5GdIu1Vprb5GM#|vj(0DzHM80bylAT%&lMle=A~3ZD^wD zUoG*sz@hpuT_TpZD3dTFoi-v-pJ1|2(t36`YuMq;|6vBB{--ner+58#Q`$0R1ZHec z2sUHbjBHy~QG8h39@H~@cH!{<-P~Jh75|*Q33fGL@%>j7jWH&|vVSL+a3q6JU4q_v O?g(?)W4y-P8~q35ht~A~ delta 7667 zcmZ{pd0b8T|Ht3&d(XMcxto2T>|>X#F=SUlWy{ziMIj+1QWrIrRMyIxoydL>t)!xi zEThd531eT!FvjHf>fFcgyF7l6-#C+C)y7y{x&vV{&^4@Nbxz@Nr z#^l{;_xlmmUq?jEh&&UloTs-kc#TXJuURRTSy{ap>_8kj1#}}yY5sZouOSkPK(vf?))uO8I&HFh}X6E#=(6J-&# zxqg|bAd&3OJtw-IPWEPecQc%NtY}VbC?v;NyyUu=oVMY+%@O33RYA0E0}X!HoM_i} zurK%^bk?PU2+MBf!*yTlMAkp%bFD8!0qJbjEx?yAh#6|{jqN3me8Hd zbo3$(&ql}bW;F8WEksYVY2-w#_;n7As+`DoA&tseLUj5Ijru1OI#ZB)&Tiu0YSWnM zi=nb#XiUU%qU3KhHhefyT6Y@fgYPd~rg44)h^J=IxUg@;%XiYa1gQ9hHwaZ^)~uwN z*r$>F121n!XqY)ZMutzO`r_pD28c!r{_t;+a1ydIyvs zqV1H)g{}&h%81pik-{Cpg_f^Tc$Q=m`6y(v`jeF!KgEOsjxI6-J zf09g|{Yep0QbAPbxMCUXip{#u)`uY}iggt*#_!7%+gi0Ja>!RCM7)3(xG4@tI1}?B z#kpUML?;RqX%Xnp4OHaK$RIjtR9vl7N__f~;+oB8Oq8m)_Q-{JS$9PdBW`R6RTSr> zLsAySoh_Y_*VZb^gk{8G#fsOCx8VPshbg{X*^PmQDE`VuBy)YJB#oNb(O0RA!cIcE zE4AKOv9Xtxjpi%0W`x-LQOX|VwMbvtcvei6HoOW4hcN4ad{-<(qaT)RI z<;oFt5l0?1l*z^QmDAs>B&tzU=@&lSOq3C?^t*__kx{CgpNni5`Ps^Yb(Qmr?!Y$o zD#QG%5p_;hu6Paidp29SJ|6GK%vQ!Wtx6P|rHq|9lIZ6jl<{MtiSB$?94P~! z*P2M<4_yTNI;V&iycT*i_)c^+OXy=3n-UM+BlIs?4R@&_46j>=P@FAzRJO|wcgs_S4G4WO_t4|cd zzCg97Q-tuRjUg#PSfPw2-uGTuk&5Iq{};g=X(u8({Vc4_3nkjF5;h9h>Aap+1}Dp8 zol1zA*@EcM2w}4$28{nKY#y9SG~3I{dBIi&f3fnlRwhTT6E?3y5wjye*wPFO-PTLk zk_)d{=7n+t3n&^^S%2W+v8zlj2oiQahAOU(5cav|BMsjY65J}YpGio_SVUZXgpe4G z9Tr~&KZ0+;KZ!~jf?q&a5XM+ymdTr1frzjr$3ZNl)KFQhgYf?Q z7UY1JR;Gl>H1kBW@UaG79GwH!BX&1}tr_x+Ji69b_c(L z@xniqapY`wk*-z{C-xUr326T|TU4KQA-y8+%6q^STv`^64Y?s)Klu zHb?9~G=jL_N3nlkHR7lb;vmP${v6SL2fXU+VbQmjCn_I<=<8&M@_eP}=Y#sf7$(l@ zW&VJCzefyMn@K!=r5M<904kX-Vqgb|G=#*3^Nqymy~Kq(u#@~WnY{L#7&$1Lc;ag@ zG8OI=w@zH=kM}GC#Z6ahqBJWPV+X-To_L7cnms`>iW9eQ$M}={#U0@oC-u9y;}AA9 zCsf>HzK4#Xm&Lt)!HC(%!~-eFW@TYAxoC%Ya9KFfZb>|voQ{GdLp){gPn^+AJU`+M zamigVbv*)9j=PvvIdINB@$wo^)B(O?LEYX&9dpE@347sg7sS$veByK8#0SG>!zjJQ zvIg)9Z$Hs2KSajKKd{q8@zIR-#J?ED@}<#4MACp%w^E|@b5zRVTaY#XR%z^^x|`0b>Wy0y1s$_8G{wrbX);-F{hg=fn^iWB$A~(8 zw(@+5s^R`Ku!TZZqpg@Y@vExcLRj-;t*UF!;i!tMsD}JH4}qwf%Ejj-A{(iEiy9)? zII3pw8={)eRWowYeo;j=^MD6&voO`Hzq5!66J_%4hpKsforx9hlQU6EkK|fbI?5RD}!o!bpEq-R)gUyyKMWUK$qG{ts1o zsts|6Al2_r3W!}gs9v0RAU>{DeXYSnGnMKpaerWACF-gRP;{=Zrmp^ODp3f_H1oz; z>PFRUh*Z()CPUz#&FiRJenX@>Z?Cq^hp}DjtF|kwz^VA5+G!Oknd+xy@`7mf&^z^z z6|2bP3HfT*Umg)9rl{RSxZ|`TYWGtp(}SGV9=oxz!FFoTYi$5W(cj0_N1s9hKS!$14i<^m%~D^}mlA!-Ru{$oM(iZ0@7ysG zExxY4Te~v<2h365Kh^~0cB;Cpd_O{Fkh)x3mH5UBbvXhGEsat?Dcy})El>TrLW|h` zO#S}23I6?F{p|{j?(klXazE1V?l~Ic1cc~g0h-!A@lfFrO+8B}+NGKwwvR*g>nM|l zP0`rwd`onFrlyhkI2MrPsA(AvYu@xx(@K94kxQXzqks`cHq*4bg5P60Xu9PgPOR>z z>F(i)^t(vYb3;COUgO{jZ#lh4)9(W&)SlD~s^|k1mTR2O`Qqp`N;70S#*4|-j4&Wl zy18h)a3?`6f6{p8*T(^5fX3|osPbWjW?HMZ5MiFicW?}Jrqj%K?n3mHLJ`J`PO*N>PeFk$eL=RTiYSoglg6vbRqingJxqE zHn4e^Chm7c+QTC>M;5O~a@wr1w0ncn?4?u5FcsiObH* zWy~WVFaQnZrbh7K0@@1wc9_BLRp=y-8meAXi6=atm>lO-_C)^ zC0LuhbR4nbzBVfnSv7i!HY=?y>i={}o9)&Oc{*F0ljA`=LZ!_O#>xu2$>iH}wYgbn z$M@9c?L=+})oZVh+=m;iQ0qXSDgFE>j#QKErEy;&fxBfgIp&DuwHzwFU?WW(@)%y!Lh^OH zg7p4U@}J&}=0)V~xg|by+aN8f5>1@#CoR|I5-(XQg&)O>L0(o~94wQk zMM*IcFur}GCE1-i9g%j8u@H?oDedlzaZaw1_KJ|8&vPkZEEb-hD;;zAikfefm2W&H zOIj(hor`qN*$!@bQ8FjrfsTCtk}jw`hFx>aWVxsGa)~qgr%A6>M&j*i>D?3zc%ZHHSA`96>S^ikZtt<6BAFa?RHvMZ z^TWfVIzhmK)>YAo0qMwsPG+5|3mzO>>D0||3tChxlQ*R4nmXPjE`F?Qp@1qxt*&*w z5=cg=Yx9Q<(SQ)0?F>jPVWzH&6WnQ~Lidw9Y$IZqu3smF=46X*MDO*e8CANGr;zQ= z&(nDhe}XDm(0Ok;i6qrU=i`o0A7b96o4GI_XSC)rxoC_o$ge$aCU)z>8nq`r`J*nX zAFTDYqb|zvJg(a;x|kIxqXYe|JmMvjo$u@7?w~53P*=BgF*bBDN|zXnoU%VychaYn zIH#K~g`kqdvvt{8*hWrWUG|JD_9>g8P zb@%SpLtCeN&<5>;XLJuAh7wlA z3cT+ilM5f~YuP|m*WT!D)_%f8MvC6%FK_sNx7qrJGcmxTe)=X)ZW8S+1);mWKKka1 zE8up=^(~jyM7>^1-=-nj<5=G=(i3O86MDN#IILzl={w>m#;&{dUAv-S@e9}YT+i!*gns;bB$t^Q{iJ{3rb|oo0au~>eSP)8^>!i4ebR^AhOQ@Eu=1I$Ot$RRuj?O! zs(G1yQ*Xrjx9jvVwijT;lk{6xGs^WR`fV@GCD>tr{-A3^-0RiXCwjv;_P^C18R9~` z_q_htbSy|)u0KBO1ttj7pKA{{`>~5Y`RzO$*Mns8hQaz2M!R&sOrE?|pV{dW#v%Qs zp*BP>qx3f}pnuU!E6ss2*)UrF)SN#OG2T}H5hWI1A7~I;3UH$t2GOl@=XnNo^*6-B z6b7jYRFfEFkPgn`r&6|ha33r$~0rg zck#qWGL7Auoc78aR^HS&Cv^jEI(8c8F8K)SzhRua0ivJs#Tcym3&|_M7_#FJM92firA;5h z8@3x)42IR~zgroXX=PEqF{Ypt{iVj;Kf#84mda$a=6B=qxP0QxON>{3M$AKu=Tm&u@q}&N1~_ z4;wM9F}b_r`_r>c<8x;dbs1{mrzxTJZX6=BOc^H}ai()MWrirB>kLy?G2Hb~j45Y$8g4-CO(hRuD@hkk z_r}acSxcrDl{cs(e=vRPjXHnqC#>>bk!5QGtvx4LhI{?a8;?w|x8x?4v6&iCFmTEWh8Jd%dxT$wI%)eS-kNkp;=N=bskuoo#W!$aKje!XetFzp!~NTmKi{^X&Ox@ zKm0O}+WqfyoMRhy=Rt9fZMkXF|Nomt_-;DBn;#d`mfZ#ppnlwsMe>GZ7n3K3uk2ia z*8e}me@#n0NQ$#>$0L%uwddEpHnvzfI_aw)s}ymqH?cmc?`+=5aUqR1MOB|DSIWSE)8RZ-N9N+yPj2-#h^_I=+8 z$&xkH5C)0Jl6_~!*qi_Bo;zcH^Id+A|Br{B=bp~_eBPh;{`p)Re^!5tJU9&#_(%Y)I^v9bgF2-L_yK zqPNLJTq4nw@ea=QlF34@5h>c@y{kkPp(n9Q3yDC^J({TV8caM_CTrh{D6}truaU_a z?-KoRoLIG~GC9wF#D$*6^K~5@b5$m5SL9%)OAdx?C4RLn^h5>Jg zP4*_|S+9tOf1qkkxkQH}$yo7M2sWHN(k>GH_?$eSVZ~_&s1|1?dRLL^ojXNLA54Dx z9ud=plD`E4idU#*S}kJTs!`|pCx{~5smo%#XUTM;E+@)}_Igm)m$irvZU)V^n?8Z)(M0Muu@}*^x72?yH1lg$ z>L1&I*v6*RKlKx_Q!A+d2Ka>MNN_FDoBA@@rs)ozYDoR}L-03I)c*)nzPT}d8+ie? z-;3aZskvn|paTRiR|&M>;#wdLY=nunHlsNGZp3jjGD9`=Q*D_{y6E7J(=@z(1ksQ= zG-e3Gu(n9!uik<0s43NQ6dEd^w0@(A)(xj=I}!H>n$UEwiim~_H1lvpVs&cLEQBFl zUQ5=~6N!F5MDr}gn7CYHnrCON#k4poikOE#ZD`<2?7(%}(0@5m_V=`L5`KSwFYTI^ zjWDc1S+$|DiCri=0uxT_DwCx?q3oG{L=B8|G|EQI`4ScEjUn3Cj0%N7qNFuc)Dq*T zuBF?VAE5DEvfO=9lj!yxdTh-h+UP>BSIvhlThaSyXQJaV^r0qRoVdd4v zJ<*2kGMV-+(=S5uT0f3CRb5W3~58vWke?i4t3-txAk~vK`m^6OB%i$(BuKyLVvajZ0Z>d~Ko|m)Os5 z_7ht*m7V#?Ok9nI?7Xmw=*20S?DAPw=-P_dhH|XX>oBpM!&q@gXySDYySWqzC)1nV zN`}c2L)gPr7F1w4fhkxTIk?>CX;Px%QdXn zm?)}{Yu&$qXz^n%@Hle&_TF5ZgsZ3(0WvvvCob5YNn35;!o~#=E&Rlpt{#I^uan6- zc+0e~4jJ6QErG<<-pmbdf^a%|jf;K#E3socx#1bGB^%2noa&9rl`WHHW^rS#mJwCU z;Kmywh;?b`;Ec-L?6O3p=yYyzU0_qt zYI6BQ4kK|Cb>V)lT0-n&SMIFqTa?Dy+}S(9#7=gC^^w_%9&$w|bD+8u?%Kj8L|&)3 z+x&Q9r(bZ-I{!lCf028a(gJzn1o!UrN{ly&d!L(&%$cenwTjr3UJAvGKw?J^D#S<# z?&R!X&2b9RV)+`yL#e2-4imWDQ`C~)!T-4JdU{q*UqA&x8XLVhNkWS~r@iFa_vJ6<^!Ve_h( zm%jHP*4>XU=MNh??Q`(z6u!@ zmVVa42VH^p>elleT0qrDd+@!S3yBKj`S7ym#MK(j$Mic#bTfq? zx_cF|-JX0xP62ThNArojA<$bTKQ7ZuEcq5c{!RsyX#=17{VNFK?O>(heCj*+#H|+m z#QVqx+wSsd3TX1lU_R|2ic`AfIzQb{AlmbgpOuer**l-N^3cH4@eaZ) ze)G&%sA9<=!nNEw@OQ8fd`GOj5_}IfbMV?q5IMj6AP`lw{Cuzs^}qZ{`GQ@$2*Nhy zf9E&PVsN(F4i*a_oG2w8MC(-{3{-<@{FeI27j-xXQ+CK?&GH=#n#OPKHI~?l2!4BN zUp&`LChK^N-;r`0J>??)OkO_XKjoGE0&$wdUwC+%=#K*aas@MNqj1nF%4D6tf8oeJTLj=;MQ)ZvRxKx5gV{Iz8@iB0On zU$;V_{rmWb2k>0}T>eP|i$rYtV*V+=ljux${;3MK-R{aieb)}3FY&MbKy{lr!NJEG znQVD1|7%6OXIl%pfR8|Lum;!?G=ZClEo=?u6I-wcL|86(4?YHcK$v2|aQ>Yo6dCO1 zC;qcNbKTh}(9dPWUi%2j4J*-D+!0iJk%&|i1@$XE8VtQ4O@`B5{8rE|M7UmRFX)Gy zCHh<{R8EKUUV17xSAc3WPYLceWWu=q`Rl_hN+D!Dzv{{Vv3{evJ+&Pe_<` zjM&nNLb6u}qK8KR_RlFzpTE{Pj*@dZ%1s%S(jm z2NAy|YGJlnPwf30VcyS`&^Oc*=6704%(b(yxaK{g#`T0HOEA&OrNYvQ(Cm{EVd+M! zIIV-Q>N@Vv>?5p>9gP}e$rjcf7=@hPLnh}DAgmuhk?4@Kuyub9dbCNxE`Kv|%CCg% z-p`4vIZ-$`2de*gM>u%8DfS6P!Xf(vpUVrUrkT(IB?|dmF#3ob;j(iZqUP;|E8nd~ z`4xncvI1g%>=tf*6_03$6>eAmfc}3}6UW7xW-{5-Z-hHTe2L{(6H3P+WnSnd+-nwy zEz@z~(L*#4ZL@?Y{t~gyHyoULUwHB;9K~v=@b+Q}(I&l8(F^VQ_6JHeqJxP`l@;8* z(MPm#Fk^#*8>+~(ur6=q3$`gh>DqZ4%IRnaA4VwM*6u;4vQBAS1OZ-OS9-U=N}rxm z`iw;QjCiDM7SM|*XNR(FcX#xP8USrXQm&jx_#wlmC z41zQ6R?ZlR`R@LvwB=crp}X}~E_j0n-&|KNEZIb~Dowd~ANKeUKP%T1jU~=-Rk_Ph zhLrq4xqqvGMq{FK|D_8=S;LhFZ_!-d)vK--RY zmZz%C(@TjpU8dT4ADUa#PqnwJK&&uNbyf>aHwaf8 zi|WQU5A1+0sBV`cp-jK5DizBSS6!tlMdl;hCe^(XB&ZXIRL{ypBp8+I)pi3CPl@W& zX?XX!618G&1>}z?wf?(FNXb8`s|;R-z2$7ROXgVY{c5XgEa?wTDr7Rtta57Cy|suo#-lo~dr0 zkBoLsscsQ&BFet64wzd2)z?-B_C)yJ+^cT?8UjeC)Sb$3Fy&oA-DO`iHYmH*-D8fD zg|@9%_tqiTN4`);Ou@lb{Wx`GK{e$1yXwe0V5*mTP~G~(#=EGayJo<)F6yLiO^G%8 zRy}gXYaBQnR*$tGFzhy~Et7M=&Fa))c6zHPKYxT8@L4^@Qi=}CS3UKI0mNoZP|x)C zLzN9z&srah_!lauttYUeT^H512N>|&RP~lob8wh+TAk_h9Nle^I{Ulj#H!a&ADfzr zfz0Y-w?2cL)yJ=nMHjnCo!9*~TDN}c{CyZFGhKZq1SWl=RiAl(4JUJ@>XPrF30qb5 z(@B?!lSYZmFBMy}hNAkmWhT*t!=m9kNOb*@=rnd7a(;WUZWf%#CC$N-xnk?uy>M_4 zB6dHGmE86bzrw);o1_$bj>W(Wg2XU?7or(v2j^{-$z~-xcxi<=V45qjZ&!&XJkKsy z6HRBJ@sFLv2#XdH?=27`9tXPPXhql(m(~ z-meoaQ@q=u@n|4U8JU2VsHd1dArNi$JaPWqQ8?Y2ERzM*5f^U?BDOX}T=Edj=8TWx zlDB=Z^Z6()?}dyxvQQ>#|C6|iFwy?|;#!|Tq6iOh|G56d0xO9pHly)aS4TW?s6J{z z9WghgIrbfGE#k?O;l!**#k|pwSf4MGbL$}Hoq+RXZxr*F`(iViBAyFfgT3KH@%&3T zTXcr_%UamjXQ+7j4)Q^;r&yd073Z`Qi+6>iEiVusjoC=7N0NgFqQs~3ONjjHi7yHo zBZF2GUzX3s^Oi#KWsl2P@pr^gFS_PQg<3o*pR6o|0QMp3A5!lg*wd`PGF_9i1mNDn+zhj&|^Kg4DQQ z0kP;2QuFT>sQ+=UQj5bAh^^Ts1$x%PdEQhh(C)42vmLZ%NL?~l5o zU#Nc6a+xeBPwKnW6Agx0`sVj0D9avF{||Z`y(T+&-B*g303Uc=Uy6*ub2%@isP1KWfQ%H=&G-@8mCii^I&O1KdjI>U)t&fN!MSH$vhiN+X6ozyq?Hpb*4y}hf0XW z{~+z_1{G&^miAwR&BxA=jwr*4J!mE6`u~ig<0YM%TnTw3SUPQkt*6zJet8r@G&DoH z9NUqo*=nhHhvhU56r-glKXpTOvPjRAP~DxW(#wGuIQNG1=4J)hew_5a%#}DrAL(QB zR}grNOm=XK^s(PEY{y$_xQ4Y5UNbd{s5&@y8=&EN2)rR$BP8VDV53N*Yzj^(uTj;k zid}P*gI61CJT09s5a&5sQ-_0%+qKnryIh5ehiK~k=1Mre)HE0}lh})|HBGx9uFo{r zv6)tGwSLv4^Wrel|3f)q{U z!ksABNt(f7YY|P(nxP}%gjJSlEcOe|{Wr~zvA#r2LN%#IUt({~ni=h(;@UrHW^~TR z!9tkE>J6WG=A_9;!;WbBTL&-flF6p~YHZi85nJY}Sy%!ey6LA`G%ANU?Ger9(Ws^; zx@&e0E+MX*x8?wuiM<-EIbORIhtM4@np_dy`Eji#cgP7Opfj30BTP~-Rg>2QHoH=& z$@{)8wqhF1*|GbHZTm`7a0NCVwor35Etn{1faZF!3$d+dH8<8V6_l+(TQ> z4WHu|YwI;$jicJxTA%4AB(fS>zvDRAc=w&Qk$t;9Cr#U|8G1p>jxcS&v|3ncZEc_% zI4#1#;^x}Gkil@a9Btc?h=w0sWwQ219UON^+b#er`hBgo$L<{T{U5c#4U2F-FkAcW z9F*B@r?o$P-h-<5PMh#EeCY9V?P!-3Xw@RLV=lp05~j)A$ASr>r@qjzU3174A&^1U#Sa#p2>(bi_uaA|hk-|1~D8J6d;kU@siYAJi3=Gh^d&PiHCq12%u2q`TP|w$yjm zy||l0T(wx;`{dQcq%?h%g{4G`HtDOi!_h21LGM|!2)*4yeZ%uuX@wv3jb1Jz_G^;9 zd9Bq%=9_wdaSE~Z_4GZCAYo-J*7v+v1-s@t`o1KWBaIE77oI{qVUk#X8cDR=!7_PSuZD`WsPffPS3kU4&7gKCLUF zrE4b#O9Ewb9>ew1JKsjmFQ?DAT!I6Ms`{0!;9FxHWF2|^c3T0?4_@mtwYSmISuX4M zT#Tmn- zF<8jwsfL-MZ&ClN#u{dx#R|voF=Uj6<2#@gh9&lJIVT#HzWEwEqPsHLxY~v_aUF>s zPcUroUJ2iDHXPo8ufVI!F&rDCz!wpLh7(1I|AI4ylf4e%1f-nd+yV%kt2SJ{1*f~W z+Hk$^aBMKh@EG3{P;>*sr#2TwVvE)G%8ZO_NBKAEnO zuFO{7!rEH1!+oq{H>)}J$G?wP-8yPew$)_n!3q2R!zk7oL!OHg1yB+tP@pwnXmjhY z8!KCv4!veO@*S&fJKvA>uqMVQtSn{O^ z+=;X8jAGU1hqDgs%zu`s{=cs>bE~O_Q{Mpm{{j<4NunrB6p3pi^`IC^#y$J}82L`5 z{M$bGnScqSa5n+dCjO;Ya_SQulMrbfW=cp(F~-IWOtiKgUO6*=csI|WU`$|tEew3hx=M7Zz4>^=KCx8$Z&RI4mk6$&?hI zkZ4SbH;yzVMMN8uqNA+O7uK;>U*?|KG^0rkYrsn{Ywos6)|g#6^{P_G|2*3l;ib?& z$Fv^aR?XUKWq@_<&MKLsGSBb<9@LH=P$>ko>&C93cA$MJW?cK)|9%<9sa<4TjM-?4 zNQ#L!8-0D}?s3iRv@f0$2T&LWh@i)|ZhM%Y-ynJ6(Xw`p^2kH*b1?q3B#Atz7Wv_4 zn=j+~THV8(D@DY{Cq~&f~68wZZZ#N-4-Lp*8-sN2c4U@VbqvQ#W~8|Fo}{yu7+!7N-r7hfOqk)$+5l zE3TPiUe3_CIYG_;@PjYUtL?V3`h9k95SKOD0b$$NUh;`ULx2$U%dsfHi|KME-iMBa4S(U6)-mJ1Sn`kQuV$RlW zjf}R@`&eZbV|#TPpI7&)0}aSS_xWpN$1E&#W6kERwP4zXp(0iFT7x zvTfKt=I$7%QaQUX{d0`>9sb7{?K-mMZ9Dh=KgQ<&5}(HZJwA~@QhQ=b`@ zGQz>_?rnE_Jo{zH8XaO1O#@@2j8Sp%Nih-e=0qa`)E+|-(WWGMCR?*~HlfZ;3jQ<5 z?S{8!RI}_5_UTMWg?0fjx%K7?_Zq_?wLKBopG^Al7P1sRkFdJ;a}F~jnC$}D6R176 z{hcOTb%-~b!usI%|Vq+2= z;%4njXHqpW6tkP{i?s#JWzM#lYnkNa6dIL~9F<@UF(oFBj8BNP_1eaqvyQA~LY3-T z>I_+8@fOm|7xkz+n_^=kYy*xmx2)WQ?4jDHu2}nfQFv2U_Lnyep%L*( zNim7h#?GcFjFB}bmlbL7KU2c+U=-A1#%qp*Z~F3*6c!VeWJdBzv|TvDYGlP+U{Ot( zzwMlotK0bRq-fXJ-$}JbpFcC6F(Q6MY^1Ecfv_KPjqTO%ta?^~l55W?YEw_!05w<1 z`@fA-@yj?PO^JWMZgUd3y%jo8Pb}4uh5t-f)?QO9*Tn-ygHJ ztIAcYVRr{dnvIbSZj_6gz2qT-*p7H|6>T58GttM#E`-C@s9cG1dX0)Sn#_?#WLYyV zheajCnaokmxjlX#3Y?+J;x= z+^pf#we9|vr@nFEh@^k2`%mcxMn#xLpbEt#$>N)ggGWRqCjGf0hrId!|MD9Cr@Zw^ zvbJkeL1&UxXZJVw!CyT;8YnWN)R z-RnVQ)0T*u6HUN%73XcV(y~n<+t0VMjh~gS)4;aGN!g$$QT_#RFww)>M8a%*Kh8=E z-orh+_9RkuBkuG&kwqFnRC%8W6u1^quicn!1wn)xN%D&#x|&TA#LrCz zlQe%FaZ^mNS|o;m6`pxd(xzuXBUo_h1d>ib%B7DOZ4|5use8+`gVi_2JNu2e6d2dc}RW7V<-Dg zP(S@9;;mWKFAv=IEA@K^ogS`6e=P8Uid^ZB&~TzwUBI(M8z$2q&oJ)so#YX`k0?2s zJi-#mLf>7L3xV9pW7SFG?c2$-FLs=kO`gkwh%zF{b8jc`XBwD|=b4|$YgjC?wt~Dy zRT7(@lh*YRc+;}s3yC6= zXw^~p`yP>2+rgDj4X23ATEx{_(Ap~ZJKdThFTmR#jHHcsuz>3AX``j;!gdR7nJ|G^ zA4Ged+7Ryur@bS#6YXwI`CA)}VpV<0PntrsOHGB68`0QhRP;ZL@7oLZSpi9(r^j!bLlwScc@ddG6m^&W+ZhcV zo~821^@#p?PZiDa;oJzSSm#0HQjc|&CcHP(%FhmL+8j%?aRpbayPde%Ev}XY<0>|D zjRROnjW%4z=`iulFKn|6?zd=`l{Y>pmvZ*>7MNfpU;LCtynGg4TI^5!?Ji%Hc4DVL6mse#F0|=Pyt;x5?J|j@hx47^ zA%VN`e197P%%+;O8rX9a}*@ZZMGgmw;AZnK;m^AglYw+wrNC* zORNm-sgT#(3vFw)NBmC_ejSldw9-j%JG+v2V`ri3tYU=NB?<*f7d)yWXXm|wcd$Fr z^6tWz;w%{R3We+#ZDlJK#vXJdK|NHM)FA=>e{ifYGYY!nAYs<|LC8?43VG8GA+WfT zs6mtvVjf5AwAIR4-om;{WU;2Jg)R1Nh}=gDd&6H4uiYo?5ARFdyiiD4Y9h*t6i$WX z_ZPlGo^K}ZuL>9ImJr|f5iZ-5Ap^D$E z@K6jP{-=-dy4Q6g*Bio@3-Lr}jY4@gLh7LFD$;6*r>$41*0>Sx@m0y=vEXX;tZW{v zk}X4se)L!Uya(gTjw)MSIcz6YWk1`4_*t;Z`I-gBaywSlr|2PZVu)%`y>O&g2Ze&* ztD5p=Inht8Ren_g=}x4|?@SeMsOID%ZLhy$W#T>6oLjeHBR{D^{c8|)>aAMZ9Wnm$ zPSvv4a64VJYTeXNMCYHV*2m%d%_mjS&8ib^)v2N_Q@x1(Oi;xQjUf8=O?9}&OyZ*l zREOJp5zp(ZO8W6T0*g+SGY=EA)mXWhRE4YI9gfRXx1-~Tvz=70PGW~e_NvdmM~Ob= zswx9>;hqgdDK8N=@SBw%PblQ5hoU+NUU9dkXwi*oO5ARnSlt!6Dz8+?r?!bLAK_kF zD7x4#CuV1{W9^~Df}`kK_ZV^91Mzja4&xG4^- zSBQvLCi+yqAwg;>P8p7(C6C3aNI)EG5NBoN6Mt-J5oZs=N**ML!HIA$pZ;RVqnboM z@5Rtj@38;}D{IdbL%%@xd1u71r||PF{l#Uf2;wV?#bxPHh=fhV)y@*KXo|Qt4_**I zQH&I^^LaT|TJjZgn@BNgYD=Qj>f)we7%#!nQQXugooKev$^gmAV1q(7cd;_*gSctk zH=>=F#MtIoXm*hpn+x|^dJTmW7EoSSA*)AN`Qy2`{V`PY>0fd8fP94TAaSo}Rl2Sa z_hv32{-snr5P=O^D$;TB0omvk_?hTyL+}gOAB44jU96BZlE4bw9|WPZXb>#P28Si!YsY#53=RuS8gT(hc#I2D;p`OnmjFJ1U!z;`<-5NIK`Oyy>ox z!w!lcYT>)ZPr&-bf%c%q0S`vu;(uT~xF3Nq5X{31pFp@>P$%#O?x%qj;8F357XngV znE1UaAYF##U92Q7>>;W5;{KDJq)GB1evu_<-?@KyM zu6D&l+1n-8;u7MAPoyqywzM$ziJE$7t35JPw+sN5~YHAU5S3_A>A6ei)dM2siZQWxHMO~ z|HpJ#zn}E5A>42BPgbs9q>%kLNsoNn5FeT=l?F!;oh+7~bacZBr$~DK4Ef)#ne@_C zhwRzM%IPhnvKu8t(O1=~fvBP_8?UOhuF&y+rRthZ9FYIRtX%Ti%8kVex$QVB*V?LW zdL2SGTx8|-E$T)ICs1IlP&eL;i3{JW9XeG>@Q1o}0K8?~MRmt6194t(Rd?&xgy@j7 zy5~W}n_J21ewSv$|5L81JtiH6aV$_zzSRho%~rK9zagsIUG1CO2xYcjJ#~){ai4tk zw6EuIh+L+Se~eMj?%o%n_mh<&D-`n7Ug|lm&!D)hr(QG`-m*Mf9o*^!@!x-`m!SOS zk1y4sc0s6;4^$PVq4+eYH+{m3_ZO*SOZF43y{O)j zV!-*pMZLQyi1_VN^)YiL@#j72w42uun!BshAK?B$fckV@p6 z*Cy^zq0Z|86~`V{U-7dH$9X(TU0}>0GF?*_2JC{hPf*|KT0(rmR(9{Afg9aXt1D_Tk-tS#E#@QfiW!>fb0-j=T&1b`ZURw= ztwKKaP1CrB4Uxu9)3hJrfxW-R&hqUnlEWK~Q$DP=?6$_au#%{etEPK~ifHdOP45*b z$!cdQyq;tJMS{IA_dB{E4fW62@ny9t^ZCsBm@6=@cXYeyV1 zN3*aejOW+{O>haGFBom*hQ^w(f6fqZ>8x2faXfMBx0-1EM--`A&9;$kh`PjR_BeYG zPa38R+H36B2FvOTsA<$bw^t?x1w(l`@3jv-!>5i-Phcy0};*r zrnz^hDI(l(&BIazidnTarE+!RuZfycL^KL}t9eoqPrR>==5?ivxY0}V{;(N`(&n0P z7ht?;6Sb;@nvkH2)--Y{BCM#bGbs)_|Dvs*7=-&n+MlK0upw?#lTST%i z+Qx^mfcy_yyD)gg=I&a11FSi_SnDXjijzXMjxyXQr=GU;g{t3!w7=vbKqWTNcJdj6 zBU_TT%Z7aLv({|@+%nHi+v7h>tUIsmS=o)qp{BNX%4Fg-+qC_rU|h=c zJ8lKq8m*>j$LBXd>`v8=e^kZq+KKk9Aj-Ge$$g@5HoTyn)7OQ#(I{;IdIog3mo}*C ze81gIYgwKFF4Bh10OKmO%ilalqhhIcMOBfzy;8gKuhEcXmNvq{8QC&NyY_Dn`2U;X z+Q@U*$+lhEn13-~T6OKgh3k=4J++Cg-w+4X)uxWzPArYnW~~fGiRGrvdhi`wq&-_4 zgrYN3o7?XpN-leCUJAyE8=<}A2~`&SroB{t8;!A2ZOJG|B5ah*&Y?IV)swXkBZy|i z%jS{J7L>&!XMaNf6KqN7>I%)TJCoNJGgj4{sa90p1M~a5QG7j zu8_T5>k}tD)&laWOJejx|d zdrn;4LAKn)IPrJnkXc@^k#q8L%Q1LUQ-yr*q`bnRJ0fGUydq#0S~0ieaLW=m;@Chr zdc#6Alcp$She&zLes|*VPV&}gACUbz%UjC^;~?@?-aZhKa6*bgwtpt?Butc$Bqy|X zBN{kUP75AE+`>&hcL4Q5q@R55R4at^zvOJsUr?AVlXG%>h!?P&y9l=NrJ8K1y5P!p za_%`i*u6l`+ujB{YAIjw+Kn^XGx_Q}7?*c|d_4g=Z9P>kcm%(9Su5WOhiG@cmG2z$ zLG^q@ejd1wxcvhwchr<$MVAmcJIZhK+v9}gCBLhYO}r~ie%HSM8%~wqJ7eQFZ7p)y zW>hHq-Q_Rd=4a$bPcBSx&)IcjAF4wgmo=-gBq3)MaDx9!L*C}%e@yZyTTQggf;j?sZRYn3jukfxdYOws2foMiF{92 z$fwl{w&>WJA7~P zTC7`8ErR%6OWhKEE^$JFF6^J?r~}-sy!S&PN4(Lk?GXwiJ)?^XhxHyjs#Dz6wT*7a z&_tpkyL9m#FyPrF-7fTec%7$i?{I9Se4g%*TLr4&whFmgxGwQj39y?q*ETU4K4~Xn26G!0&gWj=OYs zj#TX|OZRedUnG@G-D|apI44f`ZY)%CWPyM~_KT$nhie zLR;G^|Nlv^n$Qx5%RPEg#7d(a^wO*hGzwnp)h^()L3&Md^lHivDCASU_04)+BSF<;Q3>K8+Db@h%PZHW4q^-jK!=nY@JOK-U6k@fn{-msL>6|jGW~xFd8WTU z=JsvkP#=A)r3A*1o2uWu5IcS4r$4X=S?|yd{n1Gn@Li$)B>58;EY_cGQHqnzWqq~` zBYXT(pY4lM?8IPwZeyt6SgAg@15|YKr9O9*JwkV+{&G+nab!n*{w*KkVUqsto%+NZ zlJxf-aesZk{=tJF;x}1(%cDuo#2t6&pND=TUge`Nt8YVmsiwg&tt)E35<~S@UC~03 z6bkHO_{qjZ{AIbpX6+~B`CbN_^6_Xoy*D&MhlAtG3{9V0!})&*2wm?lG}tbzBzm^W zU>6Kqdb+{j*a-Kd0u7Gscj2g4*J5bBdJHO-*9PaaXc#>FYG{YkFwe^|bnJ-IEUK%a z%PL#!th2$b5jbO)m6`nwZl051Og#L+jVon)6 z+7>~@3k-j*M;44cYWVB>3FHvVuZCF{BZ%{l8y3~yffA~}A@C-QW3<0Q)_Gf5GTE>+ zh>n0N1JD?lZ@w` z{Ec-AZ=yT)+2}M6Zr8rHvG<@z)PzSB@{HF;AD^ZOu{DkUiyjeATwt8pAL)6ToiQNN zAO8Q!7~w*oR2c94fUb)U8t=C+ z!HUa_Zy)2muXT;(^LF9CoJ*!Uv86=I-}$%K-29NaK9jTQ^}5lXz99|-u7_7QO?WsIV1`F!D$wAwR5Q`5@(yME79p#Yp&zu0-G3YZc+nBs@2hEM<*Mk+X)IeGt%7p=@hhP&Y0W1hq0dRYi@rP zlDOh$?(ign_?pq&sq78WrW|v(^{}P(v&^24An9bI+1nfA-WSb(=1xbe)^f?bG!Q#@ zdc_>!RfbOIF>}Oa>}-0BIjYnL=k&4Wt#A`cU2on!?RTP^Y398S@vwov%$Y}e5!G35 z&I(i!tq3)rD}tY=4mRfuJcTaUQ1g{dSlHop=Hdsit*egayF+K9z9;hwbkE7Vy7^mI z9DFpv*oL4Pme{w^827}Ha~f4kd=}QXS>lzwLw=4Nlamn>p37Y#vy*ElCY{e06H6{l z7a~rDFTPA1s;GgOxA0Nr%Ik~`x zw|9&5i|G?%yNhcjPu{`9gyau9Ii6#53A`kE{vOsfNG?9ZsyfMaiusu~+3OLf>yrn+ Z;R!Cu?V1ZcgqZ6sgrwy9jzVdJ{{x^w6@UN$ diff --git a/data/translations/pokerth_ptpt.qm b/data/translations/pokerth_ptpt.qm index d5d164036480fc6bec0eef74e182fdd20fcf3b65..a0303e16acafd5bdca289e7b3652bd60a17efd13 100644 GIT binary patch delta 4680 zcmXAsc|c9+8^^!zz31F}&$(N+xrCxbH7bS5mVHZ#P->JGiO5(|WOR|WFq$h%q9Kue zWH4kM6AJy9v1LhG?Ac9Y%kSx&zdq;ObI*C7<@-L*^De97FW2#FnzAz)&1{`=0JH;k zc98ko17asI+gRcVAgZ1?8i*a55oR(U0hE1!gFL_o0CP`CWKqq4!P^11PBOQZ0;7WI zxram+X#vKc1I(i&vgi_Ut5yIB))HAnA-FAz>3)ICg`7lYdsAkl3Eb_j^#1sX@ z7rHNX0Co?;;B|iiE;jJ>%q05DOxQ1T!yF9LZU7T*Vps`L41oXQL%^Jt5?N#)_@@_w z>8@ea*p1{?B1VN#BGS?^IyDXG>WZNATfxHbB6xB#xur+w)BzNquN*>CzkoHjLufwv zz083~X2x2{tPhaLOa%x%Lxz6i5HWy0JiEI@*4~VG!|z}=?=Y>wpw1aGr<)`)E)w(O zD3L4ju&}I>!r+IcA!I;MJyxG?3Nz9!V(ne}Aa`7*sT!MNVt}Qt$aixE)1Sc6_VhwU z9*#v5`yQ5AF$8C0)&ujiaJxJGze0hBhdz;KL-5Q(@eXN@PwjjFpTkV7HvnVz$(-4o z8L}usV+Cf_Jcly7d7Q;XX)?*$vh?yag+5N(9+VlVdKfh%UHvbLAYuStEJ;4mO6~^o>VBRqb$N9T~jhPC!PV}Kc z&1CvnWPbam@Hw{vOi`!kJ+q929VwATp0qUMY|WPxk!61ZdCrQcy*^;E2E~lbz5rXQ zn0X-(P+XJ9_-w`eGRlJCnPQ`RqRgl1-1-RoJ?~C zCUsI=YF-XDV5;I4BV9TyQrtd&io6I{+}YR#aJFuyc*rdTYZ0KR9sD=Y#;EvMR73(_ zpoB&ZR5>e^tH`h>wwC*xsav(O^$tp2YM#nA=1|Oaby!9sDdIevQFZ(2DCgb0fOe^Z>)z@c zF!>$Vhqni+>$vcG5*^j5DZg(6Q;FPyLnNjf5nO86n}!N1Q|QPoRjvl}Y-4dz*)l)N zaFwn3Cbwbe2`ayt+{R+cbbuWdMyenQzA_h-NMsR@xSVQoF6arjJ)jhbcH;6!G*l8D zmw%ds{aXsRXEm)gdn553v6%QT@gwm+Akm3PDM<{G$l6yBKLPy`SJ1^5dT@+L5=wk3 zk#%THBqx(vaC?4c#Gw*dhXF*|cS&=J8saXCi`wKA!tL#t2W)rb4y013TKLG^(U-ei zTmra{m06W(iC3GxmO3zpMxry_dl9=6&BWcn%Oqk6J%3Cjg}ihlKBN0!A~|iY&EavW9<0X; zUX{Osfr&0@`YkDg4tXwB5HZ=bw9vw8a!MtHb%af69SS zgGxDaBbf3hOPF9Xk5e^i>kRDrPUhEdDx1Ok0o$W8C-|t^Wch&gT(62_F9DsEDz4a; zdcI`jR$V$@Kk4=0k;QUKFM8-yGF~j)%dTTB{bF zI|XJQ^IDbam;!{2mATMUwW@o6YRg5cRZ-z!ZeLaFi?>iSaaV0D-%ZuuQB`292Ma!| zI#EF!n65fMmp1a~V2P~FkE#ns%EG>bs+&olGbVchpOs?4RED{ z>T%5tjKb4e)w5$hV7)u4J~gGy;&oMRwf;R&7o=`9I|i)XKy{PXF@W!MiLAY&+HTkh z!1|Qh@eAoKI96t~MeSBP4Qyg!rm2Gp zsCgT_)Ztsn-0A{#WRW*jajkm#qWxg~`l_cF9tS*Is^>;~0Ix5r7nIX|Ka0#Ux$4FH z&Vp%z)hi}W0Cqf4uhWv%E=SZm-2KVA`wr?oE31GFUg{%5c`*B5)K_%nz%N5B@miDl zv${%X1UBxnx{5Xf{C(6lQrd_XPu%q)G7YO6I=QtQb$j+~aMUpLdcUQ(9`)Kc-z7;h{M; zE{9%xs5w`b0_J1ZT>f~6(y7*zhaIM&Z?C}IQ^B}mLGy4m(Cww*bd=st@s-G&hYG`E z>!~XIC$4<@raN!k|geyAT!q}jur`MZF< z84}G*KTvqxxQPC6QF!flgDkBP-nf&+-D8BhEGm)Tl?(p`(SlpPh)ARcwNEDsRwPb; zlh`W24*2zpXgi4<7*-_nS+?j=)fLRnMdqNLV&{-j;DTQ4c6t%;-wM&k-hoExrJ_&R zVe+`omxc@4TMpuoL)++sfuetZ+CxLL#1X;t+(VSPeWDn=*`6xjTQT&LfoAVb5}9L? z7&EMzRC7q2G~yza(gaJq!DN0dF47iL<(?`o-q#Kom@ISR0GVGeijt;mIuSJw*qRTCM%yYhckY zv>g=W{3SM?(g(wb{m4L$~pd9KY|O3k@{w9Lr+G9LwM z*WaPt^tM!+l}rW(G}9i8Ee8wSqb&qQrbj1jaU1fqbvJEs7ZOanJnfZ~<23nl+R|GT zng8|B-n&a%i7nSY_&(fBqw^DOMMVnONH1+=tUGYPMf)`M1Mn$ATW4)UAuQAB;;E-C zOVfR4L!k>p4(^WY(7pPdg*MZd;l|c)7jNr1Hx;G6w&Ymokzon^gKo9=@~*z ztX9`EofKvNO6OziKq*;8G}8|q5_Nr&NHK1I$jluf^M0(ZZ%;CykDt!(cS=F%N1cDC z+cb-%>wd_HAdk{@kFnQo^~05!-ZCAz)C{K2|Z==M*hT<(~wJN{}GomQ4fWDfmxg^cc#zsRgJ z>CXAl|CUd;^lD@>7wX>KtS3p<>iH23<`wDHOUg6Sgt=(RY}9mUH#c#Gw6^yR$p|2N(AHd=Py&nJ&)>(MS3C2TOxC` z))$*-@1%T|$fA?;AL%=^Knu^w1;v3tV9~kDTK2qhH zZCE;#^1drZB6Ip6GwO~Z^F}$Hr4tNWdr-mXk|Z;4mEpkpQZVP8hC{lCbPQ->IDBm& z>8#ptdN?irHpXzKoOIVH%<$)EGS5B6aDLW8KwV?F=$1;;$2y6uahpbTL3W3?FkG3@ z@PSNA>n82voa~Hk8^0%O*BZZfqioI@B$0JEXLNZqnWov(#x6Ch!Mx@fyVX(t#_5cG zGAPV@?TtY}R5=GUHvUljBha?FarLM=I=1vQuD(L+dsiAWt0?RtzZ&zMw^F!5Ec=?+ v=w5f9Ob5&7N|5CiKkL?(oz|@mSv7SDwscH#v^1a8EVb8^qrIjuU#tHEg6)hg delta 4676 zcmXAsd0b8T8^=H2d(XM&o^#K=moS&mMIuX*krJ|vt<5?`l!}xrV@bBDi>x8~T_lpF zL1bv`gNb26mc}x+qM>ALS%*f*?{Usw?{i-Fd(ZdzKF{Y_zL%=_B~|?Dy6k9LJ!`8d z0L_6NPgUk^Ben;#wk8e&qJAe117hT~FpF(ApzQ(Vod@`V!0h=7S>$b?-%o&hdzIVL zfT1D4tal1oWH2!L3}E|4Ase$2+{$IZ^m__fL=w2Hg+P37mGjOiWY!Fo5yjwcd(!_$ zw^AR<-+=pP9gtA~-nx-CI-@dKtB^&u0^gthuptV3!W!aw@UvC}8zaE4;D9+X3R$Za z;MW(>dz#9P>lCuc58!hnfF+Hgi}@Z1d;{I=YiNj$||;upUgzfd2)e0L*$;@%rRn|BtWR@8SJw=AroI}KS^x^o=3R#O@m}EK#=5!d7zZ&#yn#v!F z6*8_l65}Y4%VIJAP8qqujKw3!fZ!UWo~#QSQkG*)34M?|rqc2d8>6FvMX!Pmsh5{XKseDt-F1|Ykyf?E; zKTZY<%VAe|%9!Ym3R$!7*-fV|z>trJ*x#G3fpJCb`LnKIri~hNW)_&YtHw2PHwkyR z#=Sj#sBb-$0d|#NPHTM6ECbUV({!J9hcc|WLKZpCUXQcdQZX1;k0kW*jfqc57(HPgwfS2Q^(l<+luHM>*% zfGm^dx0H62>z9Ik=dQWMNS7{sG`G*@gYiu@#Tgxe){gZw54ibY4IDI;{jLE` z%$g4c1tjo!TIdC!tWv98NrpL;+3#_d&O5b@cTn(>W3?{Q2cS_cZL8@)VE)^+9#_fh z(Mz=hZa)BPoTVMofMlICULlKmYIox;wlHn{tzzKa0d4YR2ij|)c5x+1V_}IlDRx-L)st`$+DYy97L1$i4oO z0en}Za_ny^-@fDC)}`N{rw|>9*NClwXVpX>dhbQt4ZQFnUH~e06GZ>Rw`?M^TJ^gYG4z-L7g+esH42gtou~ur}1syIZ-+7&3oS|1?zjB z?;Vf=ls@8nCpdsLxyHwKi=-Zx$4`uLp+0blpVaLQu)IA#Z52iH^=m$%Jsr?t7e6!J z1QyVMpSfu(mCcEpln2%Ih(%IS55EGm}&b;t{_v4{C{%gMmZ z0{%vW?toJge`{2>OgdZ6m(~=4^-r=JMN8*Zd|6yOFvm`O`8-Os$e#R@$CU0{{rP9! z60oyC<-?|Y)%8+f#8sVka0ZyRyFE;_*sQubO=2|L1pQ$On_eWdO=eTG67(NH(NrypsvkxIYoD(@HQ=0;KY z-bd-?wLJt@=bmoCnS3zY_Xl*zu1P>xLzVMB=vMmlrf@9Pt&9o>b3dg^FU+E5;-SkZ z-A&csRkz<<0~Rt%cj7*=Pmu2HY)a%|AqrWO4!Uz@io(zFx|=hzDU3^XCEZKG+Wn!s z`y1`k_^7V@gcES-sqUYO8x+nbdAg^+`hxks)K%A|WbwKp)Jp#ssA?e8o)Hb!Trbpl z6%F`JQOI1L3C;XZ0FL>B>nGCNm|(%ZXfoLF9Kqve4d7rE`Y#;B5b<0X#HUc9{v0R-@25U)tQNwzlI0I)2$2Qev~iIzWx-ysUYs!H_%WbU zLt*xq4#2Bbb~l5?<|r&1HTw$Go%yl~~?C=Nz?miZBSCj+k)xzNcJec$M!ezM> z_@68k7n^|ou0n~0&fncxcu-C%eUvYhi?zWGFY#+jkiZl|ey{7~<-`6V!^i@uG9BJA{3?{(ocHH?n> z{zqehPk#C#Mw&z2p6kaJHKeJbr+#eNS1#9&Yt;8$>ui8lmi!0Tq|MQ0O^_~9LQJZ0a?I-=2J4qC{UiLuQ(sYHWe~=1vej&CxLd%nk z3R!De42+?$Jm_FwBwKCW#9(hnu%@nJ#B%b&vCd*-5*gbxTbvZ1Pbvu(+JEoG%*RyY|0xnPtA+v6VR7?dlC^uh%5B%g?QXt6TdR0%9(i~3IPs5M zD%rsY#ezXz)DXSI!nw5Zbf%Dv-XmVvOxa&&yLhAQcanXTSd!udW_~Z0><))SD7!K$tWrgj~=;Qu$LWDP)r~mA5xiXtjy%3E>KvtB(}z|BwWc zAjJ+kPxG>uG|k~Js#wX@eWw+OhcQ0odD-22KP8RQRfK;&;F#gMzst>_frWP zlWvF{TtQcm^M;t}1h*^3Uati-;_Y_V-ItX)hU z`B6PXdT}xECe5&64w(~l+we6xA5+mQe06f5YEx!f8CtHQc|S1U9JJP!{6>?0sc;lKc*+b~aQwI)Qb_l;ug( zw`@xSVKK61t-AMctG8dhEoK3gURpsQ@ z2kL&s@|gfyxb$23$|-v9yFq23Mdhv}`7QMj7Mf?|2YoeosZpr&f<}c{qtuK%6tUfC zIYRGwuZ@njx(`)WY%zw1Q?gc_GENP!k>#Bx7-!lk#{LbB z^MicB2BsTR4lkr(sF`tn-1jt>*H_3~w;B(Zmr>QvGXB0L4Xl1cW5Efk5;$i(dx4>pVqV*Xc6|$E1jD;3Touqt)Y>bcb!kc{Z)Li4`sKJ14hVf?K+O%<>TgJb?EhVwI z8DBok2OC*t{E(0h{E%$2WRwGgeN64I(7ItOO&wlk(FFh|Z*eJ!>5ggObqftcA@&&# zR@*kyT-^sMUf!m~14s$GTotlbM^#2`GOfK)N_QhK)7CCj8amEYxqXmnUwRQ(>p0T^ z`2i4n({$)+AF7f&O(z3s_cyMlQ>CQD+D%NShmmz2uBNlo=L158>AZU~4IS$gG6(Bl z^gw2Z-8EgF`t<|D?Jjj%*jy{jO&$IPK8BdvxKn&*i3(ZE#b&oh<7uc}VD4Cv3g+c& z?p#Ij8~LZXM;f^~_mMd`n2Klb8|IOPKLAbZn^T8YQ9^$)r(UN0z01sN%gOB{#+Y+j zZzXRvGM~)r2N*_~PbX^0YtPMhL#Cn@0Q0Br*MXOx$AiV}Jy2X{LP+w02}c%8V1Bj! E59pngC;$Ke diff --git a/data/translations/pokerth_ru.qm b/data/translations/pokerth_ru.qm index 3dc5104a5c3af251d5889452ba7f3cbd09eef65d..755dbba26d190fbaaf706e4a773719fe07cbb723 100644 GIT binary patch delta 7239 zcmXY$c|c8RAIHDXz31F}&s`a2vX*rw+t|q#*_EY~P>P5MA;vm&(}I#nNR|u+*<~*z z6bjh}VPpxzFm_{|yx;D9|KM}Zx#v8~Z~r~rzM_45RlB6Jn4J8*lXWS8dJrPdPD5|9 z8N}Sjq$jY^ne+h;qyVa^e3WSC&^0y+Lv=vi1;P*p$OC|@?QIlih625Q2Re_n^Xmz~ zdoXZ?^O5585n%W!zlMCDsBzTKV+lmyb{u1D}c8jAU%r!5?Vmk@%?0f$WE(a#g#zY1@0&| ziqnaZT^azZ)if!=L^?0EoKpAC6bB(UKf%2SyiHAS()%5$_>7IiTv|*MRF%RIk7ZBC=7d@>^h26V#b^73gvWb^qZG`(HwR z71eUEA{t#h1DyMc=7*n>7PwgX-I-LhpJ%NPAzehT6?s5wf!?e6VK~q`uMGIb5q)0O z2j(0h-N;vPZ^NCp?quhM2X?+00Qca#Tu2N&3@ahV#>1nqoMrHMMHNOrM!#8sR7p?t zi=ocP3`V~v9B)B3`dg#60t+{zf9yWs@^Bl)X+QK|cm!g65I3XI?@(x2|y?`AN@C)Gtna|)ip*w_M zefY(Eg_v;$ei^iZ`xVGdz`o8l3jbI;XL!Ibn+x9;3BO!QdRT4v2VbVjXVLg`fZSGsmjv#B3FA|+A)7lp!={Wf?4U5aYY}t6EoTXRow-#gBZ7x8XY-g3{ zSUq|)aIZQtn*IziAs!ii>wuXPu{DnGZ3@TUg;_wX6^DMD4bdSPS)(}Nz)TxOhh{i2 zIu*Dv6h#Ne0W(}t+x55Zs{(UR z;B!4!U_h48mzjZa|7YQTVO~XDkIfYos&GLcLPUj=G@_jW;=Aq58FT`K{=u`cWn-<7}HqvZ2J~i(N6fzm<80FBZht9 zg4Q+_VNKK!lMBVPrnP}>zlrG|N`c@>V%82W?3yB$yog~u=pxc|yg&bwNUuzH>)T0e zFjfI_)MC${epF#Q8-=GV@+bWWtl1^bz0Zd5ek;!Z8fJw!65N50KB~iUlvip+)v*Nrp7T&u7cHC#h}-hLQQNRmG=sxbHctTWPI;>I+r(rMVEZjH-WnT>A63m6FN7(6bTdi0bZ?9&mYi_0q-icP%*MDLrsQE_SU@9lx zQ(fKsGBv&Hi@HzoeTc{>>VZ`mMvDDy6lYJU$Gw;jD7(}X%A>>X_v#5J$UUvq(+Zda zN1wKH{xkKo8@H%wA9YOFcU)+sI?j!8cKr+WynpCpcZGV%`1iDk*6QSRFUGB~`|1^S zD*}_-s8@{l2HG!Hrw>kIT&$?x{oNFZ2)%lDOK*st$?AjOdeF;-`t)>8pzdsE@5$<0 zE7BnryQrTZp~QaMq5d~C6DagomqirNcl;%}a39dUshtI0Hj0t8Bu%81w!G&TNgq%L zLcS_hbfIpFD%mI&G?QA_=Z>$fl-hjHEPg#&a;dTxBJ_gPzQ#A;#9FC~To~0rS9!0L2HKORrNZse3TSeM&~={BaIt+5lC+*jo-fkVss-ZJf{dEJ64)%9>@h8 zs3}G53xjAnDdn2Zsli(*_Ay;=(oAWdIte08E6qE~I6kn8l-OJbrahJx7e+EsWu(+p z94bDQmXH4lSkzov*^BltYg$SV#mSl_t?Y9YBD%7)a>-W)BuHuXIK$#QQd$AceT0VP z1;@OQXy>g>Hj2|`Y28E0@@PHj_W?x=e0!t}&+?>pO3FAs3qpTi+Me{9BDzez1uhEm zU$Qy*kqja~Q3My0Z5JZGAIS)K@dU|*TzpN^EHBlzQN&wG%JPzzw0*H4=h`UZGf9c} z<DI^2x9)b9IY~RcA|bq9O1onQ)2ypiuw4iomiEj#MTh<&Ix7#|xwz@8?oSC#7N+?tFfPRNOa? z=D%MmE|*~3A5w8Ht#15zsW^|43U!eFOo?QG8}B7OIl>p>TS(8E>LI$iOV1^mWx^xr zxt5BWv{!om(T!!m1nKoRhWJ5G?98y*C_LXtZ!7b=KHg+CGL>uy(fb_Pp7$1V8-)8a zvXC4_(kCWH3{d9wCke~7&U zWZi2svu2U3pMR8D^?TWvM*mq_CYwVq07r()KP1rZQufMKD^a51hvfP*??H4-lbw%J zGAnM#jf<(W<;Ud4*7uIU-rcf`Ged6LU$V>15{Rvj<&H1c(euOQPE{B&cI=nC^-X|i zcT?^*{X2-5nR3rw{C({#*>^4dX~RKzXi+|J=(s$#QxHx3xjeRabJn1B35ku z_{ckTLalH^0D#>vcu&w3%TPDCb>}6pV?w|N)wZVSeDYm!eYR#hd-Dod?nnfcyVM=99YC$@St!|o?@A=-o zx0qcPW1NBefmrIQ`STbja$2D&J?aSYQ<&zjN7o>F zL~8!da)sFNz2=`qH1yqLHJ>XB_94;Q3aRh7vD?~;zp#v)w^>{1)o8%qowV}7f<@Xo z9(2(f^|a1k>560j&&@w*o3f}DId!$oua^PeUDLYdsHq~Ww)cX8%-!v56rq0FzPGBe zN?UHD@EoKa5XXXgajw==rbqf^YJGfnGHqPZ`tD_6KGCQh;>iWh+NB+8z0s1*O=oT3 zdhWPOMQu>N3#*l1wPBaeYKSbLP+U<#@z?;h2osTIgk1ty5 z!9FrX+!yTyV+ruwS$ku}RhB((w6|`VfuTQWZ#y`$V{fFrv#Snc&wB0s(oKxMQQA_a zBE-p`wWW+T7+y#FsAN6Fw2#_<$`pu!Y1-GjEx@0Bv|rECNRw9R%){as>|AsXA?Ykq z>glSnpFzqitFGo6KcMR_8%6hMo#VQfKz?6ct=*h>qqojEmR27&Ue~}#BVAQn*GNU< zoV!ZbNTGME3eq(>TmE~7u5BS>N90mnyTBl}8vp7#E-j*n+vr>e9ALDbuIqhxEbHN1 zoyRziGpU1apou}Vwe^lJxTrdN3wK@cgK{S6#x!UQ;j%_Iw$F0*E*Esu+!;&WT+_|? z?F|s)q>C)?Kc^1SS?A}FTXiv$%UMA;|HV^A(=6QrD@8o5p)P*-2nMsJx}=89IpHha z;w}Awljn3Pd0g<6Q@Yf@IG#1BgKo#{WG1pPx~yUAfSU=rlkqVeAXInq-hbp)-Km?A z5bKBO3Ow$!P8p;tJj?;YXY0;;Qbk)6bmu?a0v!L+l>~67fl-QR9>a>?N73C+0^DCI zmSJ4L>Rn2O$Yl(g{z`*GT*!@2Hd;mE8>Q2aUhE@lDIRCJ@^z1te(Y04M}K8NBnKRR zT=8|O#si!@JBQV^QS=aY#uOb@!v&yswzV!cpN0(nf1guqliQsY3zgaelfWMW9u|W((|0t1FDcVOn z73&`yV0ukuZn!shWLD-|_tGn58^z|1%7TV&%*bkG!HjSo4ZKtmqFq@aW+*F`&gPlM zL_7aGrmWt^0OlL3ta)O6OC7CH)_m{*^fQ%pUW{Cwx7qn0lnvlSv)(D2nz#b3R7!Rf zjrG$SC2u=ZbI3R)?^t7o;(bcKXIqxY)s%ucTF6`Q^g{1iw>}Hk zPI}jJBlCJ?r{5QS?|mCMK`(v(Zeb8R3-q3YDao!a>?|9uAH23M3*=nA-)9=@Y6hKVL(8unq$0QqO z=iYHP3cvUI#a&})Qs?x`6KHBtaeA9m)%Me`Z^h|Ww%2czDX(GP`i!Am-tpV|U9O*5 z9D3OK@U?#5u@VU9p8CV?lt*}5efBNtqo=1nR};wOyu7|X-{l;W@dEvs`QNkpe4#&^ zN`-X!TYu&0D8OaD{`Q{o<;Lru{p!x=zWRSOW{4&6`d1@4V62<|{oP8y(JJ~+WsW>B zc&Go;_B9t4XQPPg4#xs7JHyxc-+xlDNQe6AW^A4i6T#yfbK8=P)2EhPu5j zLli_Aeo|53Up^WdR%6>erGcT*J4c|=Nkh}nB#1RuL+jr3nO}8=4!*Pm>%WGsEg6Wn zY&Q(-oXjHfM}zlX=Dy8dh9Iv;5aV(TK_{=#Svwkn(=wT|S{OonH?h{cVi-T8h|YP< zqx=Hm%zHyjt)C%&Z){l9wSs0V@q@C4aDdd23iTn;Y79->`iSO*49{Av2@|;*f{o2*POEcMYe0EM*;k$B?gB zX(CxBLw;x;ML)q%P>Z6D^f45)q6+5g4Fv%W7&o^XE<|QS4DVzpx)BJ`Aky&X?P?H# zM+|ox@qYD1!@YZv5C>ix9)vW9P?8K!W8OmyK5qC>%@Jbx1EXe=|Bq z(N?l|7#lh9zGDw#qm~=l+GvbT5`!2Gni!j(Vn2IusIdi`KGE}=u}zzy5JAI?9T(PT zdE#kwbt2uIjaJ)5e5ujZGlWKyYwR+kF2mDTJO3MCqi|_!bnD2SZ1gbp-Jb)Dzi8~= zteCp(V)RdD3L0K$9RA+{2J&gf@N-EJD}#)4s{O{YWRNl9588z5TRTfm*eEvtWsE!g zh`n47t8q!U<*euq7?&L84r9(3lhxg5t?!J>I#&Z8cQr0=n#)40)VTT?JCma)javpd z@l0Z$aeHtktzRBf^SPtohFKO0Z=bp#&tF<#2$3xkvF40vjzkh&Tl7kM*fr5oR}KohxMCfQk{s8dX` zXSoETP1;H?Ai7sJ>FZpkb^l^=IK+EHs>$Ixjqzp!Q`6}iAT+&9y$7bSjw-fMxP_Yn z1MARx21S{|<~(5GRL?Y}FL&I_Vw#Z>2C+NdG`GJi#Qq(ogoCl{xoVqMh7Mv0`q<8e z{-%Sa{LX8m>Co@o$+pj?6Tc-x%+#9lk6xp3wl(EHIl(F*%5-`WCAFZ7>Gb(Pjz82? zpdZA)2Q;zKDiY?H3LF>^iuc$k3M!fkT&nVeIi|ul)b-;u(}j^OO%JlMK4#bJ6rccv1@{G5;*&(eI2zqC(Td$a9%VTr1OZ+a&-Q40; zI>fqn=C<|uUWXX7i?V=y_mENMzPSu2y*$hVt~#*Cs%#z%85r`TIl!q6`=ux5k+ocb zAI_V{Jg0X|KV_bLbSYC>ta-|>Z-Gufn5QhI$OpTc=V(4LmGw49tbNDK;%JVl`;cC6 z$2_kOtzG@t&cu~=o((f6_Ojlm-)EYaUn^nTTHU<90|QO>FLr)=Y~Gz(1hJ^Md7qK* zL8e-u( zOYQI2T@1;$G-~R|6t}`gkI@?T3S6yf>;%7Y4_m; zFyXPKOEOJGv&Q22fP!7C^5@_w{7W4yUpuo0=+}j-zc6^;>>AEv)kdjGs#l<> zB(y0PqH68i5ZmjSi=*TuHIuqXu2Ki7FKS6{QfuC|u>Ic*?Rm@uX!x&!_vrBHqr+=? Y22GthV^Vl<>fF(y>Y=BTMEI=#0fzbN7XSbN delta 7127 zcmXAuc|c6-8^^!z%sDf2X0>lWvb))?oov~KNC{mbvL#Ctazl+4Ns=X7_I)QiB_u^9 z*-6|i;o8@0-+td_{`#CVbLPCy`@GNdeV+H757)GJu4)&R5yKakt!f<%pcaH!V5gxZ z*%%_+hja%vy(9YrM}`2ZDf}qT&OvKz6#7Six+8?46(IKouBmMl=dJ)QTYwH@?fel7 zczOX>IUXs_H3Np71+4iOZ5JXdAJT$(z{S!wip-vn)=dRwtRSQKd8C~M8*CKe*>+|o zLE0S-%w7QLvI5Mh11Y}+Fn6|%qJuA_f0qLv(jdJE1?GK+tmE^GYeBBM8dhBW!*+qY zS8WvMB*;#6fmP!m_uz~E8xPt22(U2{^2jiH(*!eNRMseO5^6ufl13ly;_pHFNE71520DN+w3AqZM71&>XwWCrh`t7Nyo#EyI77F~ zsI3a%(iNcorSrgrOf)(E49Llcla;?aKOAkMt+gSfm2g>}0kjb4v6?>&%tnulU%=FV z(erI>U}hBAiA+YXmYjKu_I6&}ZRh(6=r!sd4e1S6!%B#;0%fRPz~&(scy1%a+4b=9pTRY~0k7ByVEai7it+&VbceSe2RLvT z-V?e)3|b5C$R7~XJHUGfW8nU6aw~91XQS}`VQ27Jc&E_tLoV=6qo)TaV(_Rd!12xu z{!>6&dn<-_<%{!L*(hR$W1{&m#Oz!I6nmu08#}Xx+bDcTA+W(npw(i8j-xA!`XK!F zLm(>=k=8Txj3=T8aRPojG5^36W=~nfIhJ9x|AqL|)47wcr3ovat8V)3;i!M;2&XUPN*=i;#!ZLCrVVHL7y9o66p-0y>&#X-AyPuLxn?h z3t+%PJGcL5qi~-fYIdc^D*qHtGhaibxd^A!eGvO((V=q_SjFfqqI;_kz;cxsI6VZY zGE)rsPJ`Bb5djU=5R*HLsg0@wyZlA)=OSR#BoVTQhF!lZ7QK$79w;JF$NLL!#kw*~ zx8Ci=CSwKQWUknM*PBb&+D6egPh?K2!}m@X7e1yyc#apjvjVIT=?leWc@wa&vW+4t zMBH>}3-Q+qantcM#0ayv(~UFSe_h;LOMMu*O}u>34q~E7Wm&ThVpX2XF?1Id&O_Cx zaSGs7($1k1Z4^T`sT!AQ2DBWkay~l`Vpy80L(pwXaSSQnrWOxQXsD@b-Kg@t&7}BU zM>S%PGsK0rD!=B8>Dg*k;4(T|^j8I)??=^-v{8&|r3$^xh_F;vgLypX()%*hJ@X$xgbi2st4JBiuVtgiYOVHvJr_{+sV5YxL((brgfqqb zrJkD28aVo#opTSXr`{^yN>@=w29%9>0Mcu%0sLiIYYc;Iq@I;m73#HKZh5B4D2T<$m z?9p0XuzVdv{C@Sz6ZF`ITIx^Z4p8xHsegrLGk0o9a?T;3Ya=_eE7>S~S4x^ND`R=T zv!owd143RSm2~3TT)bwoEv`W#b)bV~DrMMRBqQ z?!z@~FZj-j1MDmauu)`2OY0xemnYUpTl(fv_(G%|?!`r|t+eBG2!wu@v^)MCm3tNW zfy^O4k>AKKz@>WRSGwSmx9vj2WRg_COR*#kxs*aOEH6E`QN(;E>C4NNq}>Yz*~>;T zuP!O^eg>%{cS(C1Yy~P7*x9M4ogYfu`SYo?*CPzVBX?FRKj*45H9TxIm?7T zBjsl20G;A&6wXo7m8TCVSgz8I(gA=+pq<{KHVW}Xx_OdOd3uR->ti_kiTP5#6K6iR zyOiI14#PfF$}jfdoV8MZ8l!G}S1CV(p7LKP-AxFiz>Uk6o}S7|wnHEE{w@=GVS0WG9=zbWwpp4z#ihmFGhg!G{df7i1zS&1A@)`RG=lx#!h zle-{#9VT*JRTAoIlvYi*Mvp>5C^7V_mrPvsf`Uc9(JC7sNWPtl7c)>;%<>I#gM2R8vS_)1^`irD@Ne14k&>IZUv|1(2(i;gZue$AYe8GNeFZAUo=~|< z?^uY|o8&IRr63~S%H3V~{o2m*z_rY$O;&kOUM5?`7|0*S6a3g$ z$bRy~_U~EVf674%(;?ilROM1s`ceHYdAo^r}Ek;zGqh> zdF@V4&~321=`KI-vP#}OVJ1XyS9#ls8EgaM+-(=){1JJ3coZ=6t-Lqo6cgP~KIp_W z-2Y8Z?)RF?Amr4=baAppPR(ioqzL(B@c=1p<@577<4-r`9F-fZMVEwzrt-p=(9KlU zs+S**`x7E$rCc;S9$0u^e)g2h``t-?;iP9p^0u?XBKh;RLSWnpjoKp-Vt7xDt~h|t z*U^-&UJn?UZ0FE&c8+~wqfn2q(|e!B!DSy%J;}~(Yc$nXIkPaYJFKbKnnv!fp=sI9 z1DJI})6um$dzdUu_dV2v-FX_<+$mI~6pfqT0WRk(&DdL2*|Q{T#);Q};jU&}Ht+9G z)QsQe1MxqVX5#k@AoqZcBI9L3A9H!@3C+}oXV@~;)65*fDE2(8ncd(BM9^JL1e-{a zvR@PF7{*>N+s=Yq&4M;v7!-eK7L4Fqm&9pSWUpgK)kU-NBcD5zs!1%|1&rLUS$*8d zCbzNXpyd}ts;egD`V}fdW3L$Ppe_A&G%&cAjaCsOYiqbN4=dNwI{r9IExxC1 zl*iyXxmw%g<}aYs4Q;1WYWly2wnt1q7UtGA3jeFx-UXG|f-SRAxI1Y3&SAH_aGus( zX1aOT)%G8_mrd$w?ZAWVx+g?w|8l2cA=9;kZZ+e^MW^-ISe6Rbp+M`K=|s!^(*|6* z2TUHKogA?bV#`78Y1R{X*X29ie@fWC8A$(*DR|1jY~3nTO1wk_laTzja*7SGr1v!g!yotFp!$=)6x? z#mWoO)m7)P{tb{>R#z>F18=UZbBtn02Q=5!H8MC8pX=(Y7?k0qboCX6{;GPqhFQhm z2kKhoP#D7Wy4F6v+((?&wOf)${?L@p%~f;{;(=ao70VDBuzI>uB5WxYv6fQz z7!A3VZlj1Br?ju*!Ln<8rnqL&^7Z?aKHP+gcD0ngVSM4R)5<`nN<5v(uyaUF8%5U~ zJ0rU*!{<9dl!;b+`Mij{p!nv}wZ}u0kwzLiZKpD_SYmfBQv6Pnb8agWr=DW^c2uT5 z97xIi(?($(T2`4B%Cn$P5jKjUBb3mwz7SJJD`6Gs+Q-3)^*UcL?THc|Wy2NkQsE<1l@E1ST9LQX1M8#)8cRZ7ZiM(fwnO2%&1T|a*%<75Ns z>?|eIod;9dMN0Ne8k*~BqsW-AWM}aH?+7JlJqt+C2Ia;>rl-zZxf4r|1$~JnG@~#PIv}TL)c@^vTw57_I zfi&bxy7H|$v*E-HJ%Zm+F?;Ei64Z@@lk}DQGHt(Y(pMeJ?}zNPQFQyHZ&H^rVLhpD zTGRp}svK$M#ZHyJ*`Pd#>K1*gp=zM@Q+?~x5p>lUy>rdl5PnDW&c#9I@zzf7@A@8x zHgSLwdbchC5PLi6-M#uVpPSnG%Te#OwkEsZG`;sX2J4l>Hi}pu{m2L|<^DwdD1UxG z>$`rm+4T|AY=C~Odln0OWWuX5<*g<35r%BG71i`nduy?R2H1J9sg1&WqJClLNb2BH z{jykw+H5zyEvc$|>o+#%a4XgN%`*Kp_=0}NAewjDQ@_vo8#_N&J0GR!51lN8aJ1-; z_o6?7pie2_f^>J+r)hj3tV`GGGo3E5(t7C6&n?SSy<_^U6hJ8Q zxzmOI#jIZZysG|{#tgAY=--au3#0V-r+8|xeS$&L;uJ*ttA?5`S0J*!82(Vv;or{~>Q&;N zdh$j?{r?<*`ss#7Sw}!JL^n+t79(Bf%PA=-iA#ynU*nUx&qPz}^@<53=TM zt7P!?c+BRxrNKA-29s4bj7mH}Ir?t!8@QFB+RHG0dY+YAu`gkFMVBZ&()1rn-M$I~R4bQFPj2SW&teWjrxNd*8Sd5R{c0D({rh1MNBj*B z{hB~1UWR9pA0fP289rBXfLP{jG*0Zmb5bW`$(Q7{x;Bb)?~UcG4rYi`V~h?9KLWK+ z7#+TjA}1QFayu<11{-TUz5;~3CAp?ylZ>@z`~p(5jE=JzD=E{A^{eu}T{mO>W}6uc zmy8YLeAxwjGB!EO&Faw_#-`lSiSAj(mMsUdUA%5=H@`NEahB1!D%tU!(Q3PxH`wUx z?#G~+XY4q=Cgtgeoj)tsD4byI)Q&URbk^AW@F`&YN~2rjd~P9+8wW3D2^!YfIPB*U z3i(uH(1m!26}OEuD{Wvcyl4!)&X{oiU}s^hjbhs{ zj9g?~tnR{SJ!xFpp%U=KU|iNHjSX0larFysJ5uKxxA(2eL%mtX-J=fh`HRLqu5KLA z%ec><2I83Upg;96uDUVh%@l6mV{H_38yHUr-d|s3qv&7GnBMFx)7kpjc(%6#@UWEe zavC4-innv-JBr~*D}Q(jbgX(+_ZAs0Jfe%;dCGG*%r@Qm$~jaD)5gDJZ_1tCAg zMv*nol=8dC#?eGQxCmga?l$pP6o!q+vT|n(qAO+U+@Oy4S3b2JSJvd31`$ zkuOYNgE#X4*JLiASOoa~XRcW*pKVH#x$$NG?s&Sn>DzS>>nE67)#h_;Bh5}q3`>&N z9dqwA3W`e^bKh&_A+qDlUXX#m>X?UCZ3!$oU>;G;87P-)9`lmf5gccpoVtWHEy^4? z>jTifoH=j_T|V%rd8XzoYhIc;bnSnvEDq+`H6Jkxwwa@QGTPNicE**k^ZXNYoQw4V z^L~bT*^NRz_{hAmErq7*cRPP4nUhxJLByq*4;lGf+EnwAE8RFiZS(0qMcgI)FsBtV zO($(Lr}w7^5^kE$O$i6IzUHh(k=$jJu~CHoB01x*66TA6{QbmSb3qI}`&WRuFk$-t z%37ydN@P&z97bA7A)9D(|3%$74t34E_33W6D-Xi$3rCEwY2{H8kmq|>A0Aoq8V**e@Ms1KD7)S z$oFpBXc?S6i8Z=r1-lSNR-{{dq{&?x`_ diff --git a/data/translations/pokerth_sk.qm b/data/translations/pokerth_sk.qm index fdd66b5dcfcb697ae904605c7bffeba9e392310e..32e132173549af0edc167cec5c74d595cee5bcff 100644 GIT binary patch delta 4788 zcmXAtc|c9+8^^!zz31F}&$$~a(WGoyvWAqcvR0NhDMCb>C=@l8Tr{$zEEma^7_yrw z%h24 zByq1hu{W6Z4ABSh4H?% zn`43Tfpnj?BQkH=Yua_dFjsC`FyAxaQr7}A|1^<#9RRoICm_^C;=H>iGF>}~ULU}f zIFgKSB|f|i?iIa!Z6tWxoj_!f#Mp->GVf8~J?Qy$0{HkX#G&AS+=$6Yk%M2)0Z~g$ zWR|Yrx98LKF^MSyOk_T7!5^It#1}#lF##Cb3W`M!f&cvqWq2Mi{XUe%2Y?^nK|h_W zd4H8LmDw7$U|_NxkWm8nZ8w0nA2GWBR-m1=#L!5It8ZhBdOOfC4`T|yvl?DMLnm(&Iq#a8zq90 zzJT$s5p;<3j?W;Hn1Qz>zKt}I@e2`jg#>-O9n(k9#-SfgWagU@tvf{l(FHNz1?oIT z;==Se& zoSR8>93!#l5Uz%$1JOY!85jl>`Qt@y6Y22_{x*_zM}I_9M;D;aWF~&q(RGHzkk3rF zgY4n?jx}qQ39P@!Y?8^%&P?KjdWnWg#+;YD2lJfEoG+dLbH2}9hdBTrFSGcDDqxfy zTXc*zo^8%DRKyttY>#;i(6fg9@-ztOWR&o^ct|`zHG)Z7qIaUW%IWV1=vJc>@7da$+Hqa z1j!Oh$&I>L*$VwkV7pS{;|kfvuatW!ak3-pMgyt)Wp`RtfH~yIp0Mp;W;2Qj zD2Zi$^0IAYcPmHv+Y5PM-NwoPiTV`?$&`OhETG6)&+&!d13OjX^sN%>$8qA+_P~y( zTyy81ln@!;X&@7oagKH*>FjK-zXg@FIVqfTs~n*52shB0%HE`%oEzT(_~Q~c`xHgS zhdge1E=AIfU0l-CI^exy+ZO`G{ifXYV2^<4N2hpYOHh z2zTi6A|SJpJDNrUg#{8n5LXlbA)Y0ECcYw)>%uKfWabUTCW?V@cUn+G2u~oA@58fA zWENeCWP$J}+|dn;T%$CRSxhEUiH&d~s)!NXvF-# zCRg_@gQ~+6i2)uGEB&|+=5)Wj4bh4?nP?A`Wf2DwpAnA$Pd5<@4YaVJ1qIpD@x;IB z3mHT*P5BcZcfNvkoyRKhC`^IJ;78leAV(a!0#>p`Y$Rco4~(u7J>9D5+AH*P(}2D2 zRoq-e1z?oXM5fD8+|rZncXv<}C+sKR35s&p3NY(&il>)oSF8Pss*5(j#np;e)sKOa zM8)6dT)?_-R5Y10pxYj0v-FQZb*i%Y!Z5HF0ZOylFkr|D6PdY_vdb3=E`w*FwD5nU z>{S#4HtLSjq4+D%JYVUt#t%^CN^EpejxDpIo>n9A#ji^5Rh8tOOr;M`QTQfB8IW^| zn)MN7a25&vM?YmqzB5(6j>>r}Pk{AGQO>(?o`#M(<)WE=fM+V@@{04+uf zrD3PCN@xx?db6^Mk^w`*mDLqA+sG#<-+dJ*R);FO!YFSBqa#UrLSp!UsQFW7%H?=V;r^0L0diJP1ev1VD-l+1^Qmbi~rwT3lfs*gO zDzuUqRn$Ti-nBc4`Bt@Hv?I0ZQL44mX!I){rrMBA;s@PRrN64D7avodo0194-JrT& zx{O-OGgZaZ(|}u%z#NjO_pcCCFVcV>JA|%h>3h+iO=On0gmDq%m)~z0duVJ7B`t&i zXDdqjWMO&=#lhiPA!HfJt8Wyd7vzEcP$ev=44|G}DDl0$urQHk^YtwyzMm^3MuvdN zItj~KzXq1L39Ah`I@OKZC(s?sFP?65Oy9JPA&D-Fk#nU)BuXJ zgyBl&jIwpw230(sblR*7KLUMh=b}xYwz~J#$eGlk`!?H zCb6`q*r&=7tl0>OeJ_Z8Clvu_qQwE1R|0qK_*w~+YnziN3{XBu5<)qE^PSRV(q!ZDAAy0z*K?hn9xOVpiZWQI+d zYJ00vQec$2S5zALqm$avgCb3gRFBUI115A-hxk@gpUqZB1RS7l)To}FKz5!z(L@9D z@l+?Z?FrU1U7b3NG+4A*o$7v$rn_qO)?}*l{a;BOKV0HtQJr2^2E2fJ$6^v}@Ei57 z5fxx=Gu0PBmg#arUC@>^RR^mJ`sGt8Jg>gD>^x9&O{jm-wSZ+l#0 z(-=yerm>w(*Izbk+E+iI<7NVpEa@ZD^!YwBmB}>y`%j{Vm980_Vn+hWG%mIjS&zmM z4fKIUs>UsWBBsMKiJNOB-d(L3I+z6LaYHlq6q$bPIgMBE5;A3H&E!o~YieCJ)BdA~ z9Gatvy+fvNU#MAPwU=tMlP2-eCOTNJlDJ^HiOiwBW{WFnzT|->+uIgcI9hYeFvg3% zI6`w`mJQWlC(ZeqI6Bw_n#jziXf80ijw+K_?WMUsmYz#^uDO4OJ|9po(alq0##GG* zY9`F1M$7wr7j%|ZY4#p?;-nSZlV$v-Xf4mu_12=6z#Q!Uhxz}JH50Xen#?j zjKoJfwZXydDG7UP=Z__c?T2Vrc)5TLxvkwEHG$gSYZF<^|FmbSDrtoIpuM_x6PTj2 zHvi&d;QcA>&Aa4l`&HTkk)B_>$3)h$hql17iB1&RCNke?6Sal)WZI?H+Ius6>34|~ zZE%+ zF76Vyy6aA+7lF0vtjpEBp!-*Kryq=@eH?X{$I;uLXX>t0e4<)-M0d@fq_a7oyBW6v zP<+tc?v(_Ld}tyw=qA#F#P&X_yEmUU`0`v=wuaOlctck+%%0TvtZ&zXn(pfieYajV zRI79*GK&&@k3VP8?E1UDUv(NCNagwg4dl3SclBJRL&ylMChoZKmtf z#y3#0u-2#DBSE_F({HT`h8kl+^@r@U$Zms-J$+N)xvvWtAP4+Z$k!_8uCR-R4 zQ*CmuPdT`wzcoA%hB(Z@T(l*IAr|qb{~;JiM*`B1{+f*si;WM9ZR-;f7nd+MHq@B) Mu66FL2K~JM0}YzAh5!Hn delta 4746 zcmXY#c|c9+8^^!zz2}^J&$$~a(NHQ`5-qkECCezJQYj*9i=w6pSsE@POUiPQvNMc* zkYR|dAxlF@VxrO*Yu1UF{2urG{`#Evp3`}s<@-L*b6R$T|5(hguw-s4t?Z0?0Ih+w zXJl?^LUaSuc@TquP$yz25Pk_zOaVGO%j_k{-24oFPMBSYm8{dU4cgGnu6x3Hl>o+Fy|P&7ih} zWsW%^^Nk6!<0+9d{>Hp}Rg}v*q>ms2{QgDOX-go=yq{2 zj!z(V9W1kW3eHAn0|`zj>lsb=?NFIlPkyB0nTeu1=rrnEdjlRLnbbg<9TX*V+D z;eDPC!fPi*@8o+V%c6m6=fGG z-fveaD!F-J!ZyWAUvi_x1jVPqLei6ckP>PYaMPqzW|9HWE5#_$eUq~j5{ zNZE2Hy=V%jbdo*+%?p+7rv!lY@KFvds|3>|DTAAna1-s#WI@Z7ajzBuqPKEt5fu{O z7@0v&l~eDQ1JzfRX^Bl>M2k{o`b$#C)Je)s;aPM-#w&m890J@MqdfZc2NIsY@?r}8 z!Md(8%UdeT*HYY@A5y-^F935cQvMr%2pAWyY?xg{$_eNAE8m2jDRb;tnQw|XDbfMR z{grF%*@+HB)HfO_L}6T4C$e->GS|(DO4{Tw&a>HJI+|^`o-MutBVsro-VwO9n45Hj zl<}@7H#d)zbRm{Yi+n?o@{p+>&!sD~z#JO5^pjK)x|DGyjtuFXDYI9s%(XS#x`8JF z*Y`wIE5XueXa0fd#&S7Dq=mjdR4M5N6Yk4QiZ+u44B$3DCeQl^bH4-@QyCB7b_IQ_ zEp516r)L72_j7x*$e?Hk;yYq6@n7P6;z#0PBBd_6%1mZCg;-A-h-pF>Ux1jtM9O_k zvYE_s2azHWvyI!koDoaRWR`b{RAOTlL^aWa+vl_Bi#F=SC3CG>BppbUa$m~@uGrKugc7{Y(-+?Q;K%Ra~2F&s`

`B~1+yguqMZ9992OiNyIsITu zd`9aiB8BGuHXc_Sz}mgwg`w+SG|_sxSI@eSMl2((7N;zzkPBl7&n>UnLmr_a;BLq$iN@h2fqRfp2T0u zAPbjuG@Vjg8$TNS|IC4zD&CFu1pf`z>^6-O(Xy%S{)`u}=en!J9#RkS~T!5L)GW zgSF2Q;@K-eGg*i)vZJ=A5GL&$4IFe85b6tK1V=aaG=L^94xe00Q=1?N9%SBfc;=6oP0#|a1}1jr0OuhWG2&h5-u4iF&kb9rPH?q4{rbkZ9n3rVo(pVc~RMlc*ut9oNHJuRjiBZ*5(7>a(se0KUl7O|UH@_K3*zZ(dE>q%% zUQz2uEu>*{vbyDl2y)9t=G_#v?PeN2BYUVjC@8VoXX@@(&QU+IQTzQd5qPFm2kWT+ z*cYgyioc^1xn3PrMU21xmpZ1s3z>OLJ#|o5>fepkOUBSVSgKPm|CP*-Sf|c@@|HH9 zu0B3$Gw@@C`ux2)U>!!PD&bO%^xQg#uC|ar00Tw4$om};3xm2- zf9)t1rP9XZ@0-bn3=^+xrc!`P@lF-VVB<9L{!()6KS8{Icr<-+Itj!ra!=Stp@!zg22 z7SjdMYmDTVw+&dnPzvZrC#ZY66ckPoaoQ)-bV>@}=m_*{Ek)GpX<~CRlQos3=)sRk z&^M%sL6^zk{icq3YhxE_zNUyOcOPlN{?^osuE`AhKc9z7W*vQZPTI~>d|&jJc8#E2 zee0wH-t|ED(=ulzNO`9!fK#od6Xg`Y_KT%6!e}ttx6Hb05m3NY!|4bF` zmXGvO(1RImLZwd)wlo1BlRkH+xP?5D`FXlV8QqrVnS2eOObT<~uMxTy(4-ftarC_j zHZ)YzRzYD{8Lx4+xd$|y)40ZGfwkGD>FP&H6CZ0r4o6d=snv`dT0_m(Q4<@sgAzVX zGif@-d6J`x1qiKS3dZBsrXbzb7a!pmNJFqE9^EB-P@Z^rB&c+tZZlzY6(3_gZRc%vS z3fX{XTHEDx-)_Iw_EQvbjMi=vt-t8C4mCIF8?-NxA{lsH>+x-nx_4dMt=kAX>K58w z8BSEm=4id`NLja=5smbNm8kWZPKt4yBXd>0%xl5gKE23*jy_udBNTf71=;|&GMd=7 zYe%l6T2q^^9rGV4vd>{{@>L4G!vJln%@!(JdD_{xSJKz^LYY%Ln91BWX;=3q&r>&O ze+{$)rdetC83zY|*`LuKh_j^{tk9mQokEAy!A#bqOq-1nbS`Dj+zPco227|z8PAhQ(3$M?kaSW14SmdtWifx6f}-B12xv9p(MUVt~4SAX5Q_+ixcj+n`s&eR>P zuA;f7KzDY_N>cZBUE#?)lv_95#cPyn=Y_f=iJo5)XC|}Stt+ywr;U@%WI^|b>#n?| z(561oT^~P`{#lWsD{V|7@;IP-*tvo>EYsCKE&v;tq5G7woxW$|^wv4mK>tv^+YNfI z&quw->rM0-;jZ@-7X$xn)d$|Prg=y(Sv9dU4%ep&pQvUH(5DZijIX<4CTsdqW{{75 z&7BIG`(Ep}eov*Mov+L_P4vHI7lT=E*XL;~f#J*azu)|U6n02|dI;_QC|-Z2;sc$z zHu`g+WSy)|yPlOZnK3~Q=KLxaJthF#8EDQ<$v%feb18V45Ym=|F& Ya-eB&q-~x$a%ZmT;7dMF@li_pAD7LcumAu6 diff --git a/data/translations/pokerth_sv.qm b/data/translations/pokerth_sv.qm index 7613e5135fa1d659f7cfc319eea58e0b59edb681..6ae995ef5f6c7eed6695ff35af441eccd9020352 100644 GIT binary patch delta 2928 zcmXZecU)9g76@|Q%fR8gXu$rXnT%l}{sV)VO%mV^D0MBpfdLwgz9T2n>u(f8k3_x0(4@{iF zY>9-lYAfBxFdddNb2loa2$o;oC1LV1WThf(PUmAG}Z%1c0p(zO>SB{c>u5|Wu`bY zvmRrm#~>}Xommi!_~G&8hndmV7VIKD9ocst(BwjpyNn)SUWq+nVKlHC>YSzlnM#}s zD+i_|plddLzGfDB4FeR7Nf?;q3TS>48I9Qo%(oWJYHI=x&KIQ})&TaSM7tE^1S9=i zv8k>{bnW#?AfZxpgR23?wKKO5iEdfW0XF)GdiGMN(tE_($||5DP;8gcK)Hw!J2}(; z882s=e#cBT7Q0@c+@?JhyCvMAoO?43mf}@+&I1ZNrk6ca=T$1s)~*43r!d18i%SO+ zX&F7@h5{epQ&aJ^G2OuaY;o76)0B@1;{J=2ThRpx6mnYj840gjLJvA3u}|~^4mnA@ zyLy3bkR)C82h5H!$6k>n-M$NK7?R|^q;NTIlT3GH_KGtw+W zJg|JE{YgXhN(w}@s>d1bw znOSg@9H9Fi@&jO_B?n12X2C;p2ne-VCvE&nL|^P<7MhS$G&Y^m!wv_iioxW3m~$PO zo|~o3IkX(OFuj|lKVGE*=ZcwYXY0R{n(B(BU1up+86ncH_Tj2|B)zZCqNM6R~wrSWJPiZTQ^a)oo5;jahD5M0rM_# z-GkSmL+ul;cO1=->tLD%FxSR#52B|5*&n#RXH-ZY1Kf*Q0(HiOdE1#omomgR7qR$3w3 za^W=4)GI5V?M@N!lNGOC0qn4mwf%DtsEL)oQs>`JX`IWV!M0I;yDABk6+7e=oQDK&dc) z#T=I>UwGG?3TFj#gN;0ZE1*t!QXbNBj2hV@dD@!kz&dMre)w9z`>}kdk_HyNl{XeW zq)sfC|D>XcxR}WAnbJhG5%QOVJXLapLi5EoYFVZV3teR>Agfnc3>y)r@cJQ=de<+C zKsB`hv7;i%XC@7FQjz~9wg2#QiW6T@XPg?KxNs+vD!iFj^p*g^P2T=*ew5<@X7MCG zWEM?)WGHiV3NxaenRlOGl}VA_?$7Jul1>Aq7x|w3p--Xb?pEe0drY_|FrNA3C0rgviasJfnJmLkbNSfg2 z7tF{J-NN*T6yoi>nYG*Xrxd2T=R&~JU`ospI&)#6`jfl5g!4IJ(PVpuYsgGTFx!?$Mb*IYDxr_SgLDljy+PY~QRSDNS2k%`%GE z2d3j^%>8bv!@hph70RcnT1AQUDs+>X(5t#}mhO$)nPW_t3sY6EZVgiR7_D|nril2> zQF{gIff09@VKwS(KUbj9U0o5qgt|aEvnW)3u9_y0ZK1yOBdwfoRbLh8d)JZV@VQ)A zs_yvDX?jV_Ro@yxA*<C)Wa2-)pA-UIkQc&@2T9jB?SeZ`(mzGeomt z$G<6J?wWKN9eA1Dnp|%iVBrL2(G8~Iu4exn4ZTbvn#->P#hW#T<*Hsf39f3+ zETT5Dev9UOFik{XthwTpLwzroncJkD>SRfqGKpE}sdao3MMuv|?Yy!F6p0dT-IV<_ z(Z$*iZodHW-_n=IZ1q)Mwt7xwYk`)LMAT>}6B delta 2838 zcmXZedpwnS9tZHxxjfG~&vPzx5vkBcQNo&KbfZ}jDoM(w#&(lPk~l&fMk&|m6e>!I z6}q5yRu@w#BVD%Loe}A!N$nt0Q`1zFZMEO_w|~8#=R7>;`}=->-|z4AeU#oElID+; zomR2t?;O!Xn~bvXdcR$)O~ zF_82Semffg>mg>nE0+H8AYj*p!1OFYn1P`1L<*)J!IATTxLO2PQE>LzWCbuTh^eb& zrmn>5c|)|=Y-VN~qCUM}QOk_5e9A5oUm>lthk_f2j1}|+<|Q~B8cHwbQRQF{B&XqO zXb~`V20CWa=W9RWal;@5GJwHJR0-|R5@WNYz}#Mm>!s5`#n+OAS}i4|OL9<2j=yi1 zBQ@1mN^ZTm0K^QJ+~bY|W3!oi;w0@Bvw+wul1HVKs-$I7qmm;)QLEG@xteO>Bz174 z{~NKAX?ltopDA@~rrIWaDRqzO1g01>>-S67bY26LHq7}inR@RaX`0bG!1on%gPAmc zXd4x^Qd*tm3w+Tny=B%7l)aO7v@}s5#nSgTsJ4=38I%fOU4~51FQYGtm)UOf11c+I zJ{^yNojO_U&BegzbIdV&WwG}k09#vR8P6$Q(-+E)1m$5JtXpJfK3fWekCCXCr$+y&VqsZS# zFY-O9V`fbu2kE|&{6MyoL$qCaX4VSwBSm5DBCpvip$8k7S=l5tjdh{C)~I3B+S14IKZp%BaQ`hVWmOnJ4kO$-g z4k8fxgZ%YKGGYg5PPUL!Dd~OWOuBa>tAR*=vJKdDf}~<>8YG{Q#w0CsQ!s~Hw7f%k z9A9;en&UO6_zP8CUuDmY9?=YpvFGgGSkONHJLjPr4rF}bBEzhyIzgPykpfF8<>F&$ z_y2h`7hg&*u!v^vxyI#3(dT6=xI!;Vhg|?ydXnCw)o|sJN%RHXT;;_?>b6W~!#M8S z>^0O~xm@?qUFcE1ihDekBIMebqy3rdow%L|dmt@_>+hpRns=2Oa2094pJlE;z{{4< zJV|)Lj~G9d8p@Pu8o@Mw&0KJnsf*;T4!Hq`J^9W5zD`3l=aYJ%E{;#NJ5P~n`LCLr zfYU*I?o1C_xe1@UHUua*%wPIp2srkXZ%LR4m~}BTQu%L(9~PYE~qya{{7z6`32>(^*ohC{)o4CGQk9IZuFDcNKTk z6oB(XMVBcBU=*f!J|s}*+AFoIc2SADmE%f+0sbU2?DtA<{a-iI==D(sXsG3-)0MHl z&NRZ)l$n2`alc`YvT+qn!fB?;=FSvafwiD~oCk>C3ASJRQBAKha}Ej1T`BP4!OT(d z%&=_c?f_v;3T1fr4PkR^6J=iQMC!EdOs{_7aJ2`p?Q@}|?==P5D;!-?O$TQq)5}q)nC?cs7a?3or4@Ua3)gF? zXU&6!8~&fuNb(eJCiT-EFxRt-I;GHdlr~#RyYPL_Rlwg#=*prLrkDv`^&vEU&I|p? zCjq}x%w)Cj?hti}K3n*0IlcG~aUygybrw$+1>@5|)oBx%>m%Hi5L$P>;r)3yg#nz%5G*xWHfgQfU z`upN@p5CM1YbL%QvYHYJs+v!oym0`swq-BrMd_T>|mSfrWFOg(^YjRY}85SWwgZ~s*}Gfpp1QBPFFL_ z&Z}z|_|X(7JfXfQ*+!@QVP;H_`rZ|~A90;&X2M+Pu72G<;(25Lez?{(#XWwO@k3~ZK)Moft({bF-%<*D2_-l{N($Wu!9H#d*?U|yxK+Z4PhL!5a^n)v3`^_R6BhfzE zYk?GqL8fhWNT+$1!OWOsG|j<+Hsvg4)@7sVKZeuMbIxdPK@VkOnNii$V-%>F(FgZ` a(wN#r4;xAwE>I;Ko=vt4Y6wor`{KW;mp=Re diff --git a/data/translations/pokerth_ta.qm b/data/translations/pokerth_ta.qm index 533d3e3ef0997ed63d1bfe17d7b721bcf7a7fc82..c756f2cb70515aa98863afed0e448c43cc0dfe7c 100644 GIT binary patch delta 4782 zcmXY!c|eWX8^^!r-uJ!Rd+$wIq9M0T#*#`zL){{@3ZWDl;i_n%5;0tf>?T6SI`+ia zvJ6r}RF<(!*|Q`w#xmh&EMxL}x@Yb`pL5Q8-t#`^Ip60w&)suc%q|minwdWU_!_Xf z$?33|vr{JL_w}5a7de-nB)WmIk;K7(Z*$@>!0#gLs+&52zIfM1r30(X&&|W zaYn{j$k$u^@tmc}5Pl~krqn@fyPno>&pFb;LNg0`0WpAHNLd3heHHNv#OXOe z>UoGu1t3geA=6euTw6wcPtG(Nr#=gQ3USXEAbLF%vBSwZ-cV#*2QHt3azZg}t`N%V z9l)43up09YC@w>*A6}Ek+rcsWh8eKljdm}|-S(@|`PU0TU;=t&I|1{J@LzKd&{ZI) z$7(!me@j`$H6IUGYrHvnTb z7?wrHY&#m^=gnKd{C`43{0!Q$3Q-CDfP2RfmGv3;P>!g4@jw;Mm>1bmdk!imDm|SFy>_{@; z+qPI<(u^$h$9j_q82teGt}ehU1&+0+=chy*A4hC=n6qdGN=-Eg+Ir9}*e_Q5Rv=6NNRp!&TEAV?P z%h;=@v(9Hfs)&I**rsMlfL%2^a4!mI_C4oyXLj-3383meyDDx4`ubYPL_Mpv?+x6Y z${uVaEz})kFP?kRMz+bUHf#d3ca?RRRY0PgV3xVM(E=TQ;dI%``CyOCc$U;&YnJ(> z+$Pm#TF8REWufC{16prc_#8i=+b&tm?K9-!Pn_m?|M9JC>|P_-U@zH})qN-wZDc7I z!YC9kb3W}S%d{E?%r$@HjdNFJISmxIX`!-$#X-O{PuazmHDJ!GWH;GbFx3p%t@Fje zQ^+0(B-T&1vX5nDB+9OGs3?R_yUEpNQvZX}h z70u;Gzw`$@P4e^UG(Rhevr;a9ak3cfYb*KR6AuCb`vkGFQG5lQ{^^``iGpUdBaj^; zSbMs_jF9G*22)iD9!?7=`S=Juno}Yg79n`HJOsQ55qw2TLT3VnNr&l-pB@tC6p|JW zju*1!%falP2-!sxp6z-IxdMIA;TO(M`#3XS32Ot3fY#q}Ix@~qe>aliKPJ*Lz}N!e z#|k>jt|uw6(SpI_IV0^XWI@w}%}+=?zDI@p!Hw}AD&&`BP--0^>{(6;WuOD`EwMlG zZ(=-=()++=L`u&C4_e4HgNdK0Uqv)ioDcj+jRtaY8w;6cF7XTX`v`k}U__IJOmmn> z88LJbQAPY&*z3Flu<_)aV$V5ykFYL!M^G(1chvyr`U|hWP$v5(gR@T|=M6vMZ8Lga z`I%@3Tr?6pQGYtI7x4tK0JyY}SVBjlGQ(r={t^dL)^}X&dQ7{oO5O;#6_zfHL65 zO))2lCUhPqt{Ffsj@%?}*gy+ZwHG(;rVqEN7PlqL1l}JMcb=R<8Ss*YEF@Vx9`*`s zkb`((NepGaWbx*xZGig#v8Le)m^%|6wWf{QRC4w(m+{8wdhzi@7vP@=v3AaKz?d#R z`{Oz=Ge&&wsi8!%le4ryAs<3V@We*Z)S(k4t`VFrew^Pv;>>!?dH;aI-hUs3b5G7b zOkr4O1an-in6xvR;(tTABJm%(<$|_a$O20gseOW|CK<}dNCWO?-f#T@4& zo%J4&n>5>RgMsFbtOB<9iWuBCJnR4>nePA6|C^N>n1HTSY z&Z#*;9(u~zbE|UR&!xa0E0l{Sj0Z9oD%VJ4u->HH*)?4g8j_e7)Za zi1Jo`E`LRa&rs<{%?ErkRBbjy0Zp%Qo?ofzEIUFqVpCPmN)m0ueO16Oaa32hsls%W z^Yzj{vR@)T&1$)>ggM9gopYhkv$^>E@{i&8FvF$Ed?S$>r_4advUx zyx?IWlW$g=$1EWatnpOG&~31?EFwo$jmGtein5ojd33p6c}lB+grL>J5KTYA(xDZyr(rH1X%0 z6=hcM=whTAFIs(K4!LmpJ@vUglwv(EtIG!Wq+4u=x?(1MAV^~&3v^ajZgwH{|D>*Z zOlQ7mr~2+<+CaTZefLl_YLpl+p8z>iUo>Dr~x_Uw0)@8=9)$ zucIS=ZyvAy5KbSQuG1i$E|G;^8g&yAn`eop^&m%J#tKc_II_G;IcNC}jeD&Jc`A?7 zb)=?Sq;{a^`um!>QU&m)L^JQ_uPN~`&c6Aa_cJsW zt*FX1+eGqc%_>cPB!!{h1WX`_p)r0^&PN*+n={I7uxJTHACqaA+l zD0Q;CO$ORat`nDowH+mS1dvAlT_z1ZWTJmcxl+uKI=a-pl_pIikA?lwNHbVS8!5}+ z0@gv4mh~meV%AH`{Eq`Y>!sD%lxm%havEQ9o-LO0?%V;cU6$6(AcK0flMcq#fO*?W zCqX-QP)HR9+DO9|siHgmK~XM}F3&yzJRTukxfu=Y@t5x1wF4do0;Py%By`4Q+iz=-)(TD2)YuXm}sWUU=v_i24fVFux;GXg6}z-OdPLG)u}$l>#EBA5q1M=zG;)?%$TUy2zUFBpf+ica zzKxt!$a(y^wvQJX(Ed+tsM{^7bWUkUuAqEStJHq?FNw?Tqc-Itx!BHKJJaqbN-WQ{ zvwmAaf2ndfN8PoMb-txtBC917MdM|S-G9IGoef$T@G9_HA_oSU;0a9NcKwKXe(qqPTvgvpq&!Cg^Odf1^Yd zq;pLtO=LgR1%&0&5qfi;9jc3trl`7Et;-BGg7pqH>()*j4wQ#l$h7IYqqUDI)!OJv zf1(|IXwa1vRRIs*=+0lFv$Nf+tI*K=l(rT!DMwdf`-#fxUoB(UEcX%1YYdZ8!Z)#Yajgq5AAVI?H)IEo8bDoFVJ;ZWU#NWq^mEi7xz?XFb3|VCX%+25a_Qe?B!6P=x8r zU9$j>)fO_Dj!2gG+M&NZrE!5cD+e38{ciKWFSiRM~h$*0-)n}g@z?I$c zU_%n+0GpkgQ~yTQ=+OGl(b(nV??kxHaOsa)DG6-%3?QtEG)4${okmYMUV!}P3x`UNy^`+x5g zNav-4^zJ^IznR7x-`!60UEqbWNP&@zIY7_yRgD%=V_)u;M2EaFj!etSb4!z2Jg7-g_I?tkLeKxrRZ_bG!Sr$l4fiY-0dhZu@_a!k)wc delta 4410 zcmXY!c|c9+8^^!zz31F>&pG$rtb-^-Lq*wA3>BeOC6q$e?2M(!(r^%s$=HYN%NV9% ztj#bgWh)9XmP95~>1Qj0h8Z;Vd%ExZ^?A=Z?>X=DJn#2;-sdFch=zim#0kj9q zzjL-;&)M-S&P4|}wWXZNvx!}Rx(38Bpl?2L7|`!1pqmG@9>>`+iZeL~(E9+%-vVMN z5Rz>r3y25&z6UgmnGY7-0)|G?1l3CBe+?LOk-lAIB@2pzu;y#PzuZdZ_YuPG6+plQ z&PY4Xx|I-$+=1RLIJ4VBc(Mifd^^O}JAlE(oFfXY)R_N1i2n4#>>!BoWaaEchzr&O za}pqaBLJZpRx(9{xHX5at2pP-eY$1=J0Kn&3ycbbVe)Xm)fa|^7}#7}`}W16u8X%Z6Wk?0rAb~l*?G=IpBKa2(%E$6&Z%C5dm2X1dL+@gWjrOHJq2g+B0U7H6ka&fmxCye^X3OMB?N z=iaBR=xHVMf1?YTumn(ibrDN_fv!h%9R*x=W?Ih*@YDmK#1 zy&O)dc%8HSy>6M!1YoIlln*Yf)UB_j{GF@U9ZC)a;;M94o0ot&2k7pxtzZT>T~Tfp zdGd>{R3NebeNFd1Cx=Aop@&fd&Q|DUjnp6VOmBCP=0*AGo#usrb>E>6C@KYNUg^VI zkm!cFSjhrU>ErUK9%$}Ce9${eA9wEoh4NE<;;cr1yjq`BMSB{3N54CAEvY(5f2{jZ zAU9uss%{|AbGkk^p5`xW$9efzePu=#SldhbchgP)gC+=Ke!cjPa}IRjEO!u;(GI{0 zCN%VPg@%B9>wp=O1$RfPdSQPFJ)2S?3O5O!%}-MLFu_M`2V~a@(|@Ktemq%NnnqeU z)-WE7q$ju0=BW7Z6wZ)HT9(YA7kM+>iP)V z@@OyJ&QoEd4+ga0jJRPX^Y0|=c}(K*nl7Y<)#tljNX=eIrPVAPUP}cfu#i|y{6KsM z1lbe+A@(P}Cr+}G8Aaj;x=to)l;=T5X;4eNWhFCu5bNmrop5*^qtM%0$&6EpR1t%{ zh(_Xg;ipaqfCgTivu<;KIaWB9ND(xy=hXDVwY+?qx0*9+hH$qrMX*h{a967zI1S=A zv{Iqy9Es<7tx$A{JbV@)JlwQ|u2%~$+!Wya2jO)cRWe77(|Zc%&3}aICiMKu38F2r zn&?dIOzchkoOlSx?@P=F^3D)RJ9!@kt-8r`8o1L93Q6945m#%$TCWiesr#sQZx^Lg zq+<6)VvEL9u{^3o#|3`?8JS|IxAuU~HqrAwWl86yqHl0A@aqH7H@*=VD#aO-9f8Cv z;>^BpfUzgUx$9_a3l53#UC6Q5t;G3p7O)=eG;#heTB!dME1BL|{AN%N@Y^@y`dKu= zNfx&Zq7X+86?g8W58Nsicl}5Uw|pq>pOFB(og^O2SVR?YnUyTCy?7@4C0KBwczN|W zs(kImd!zQ#i5)DK)E0obof1o1k)sW6a`w=!@^m!)tP#~SSYj#4^%aC)6GwAtNdM zOs4#Q@LY;GNyp`jf2EjxWLb8aG%m*zOgtscUVap;!yswlgl@ofgS50Hog!1o>7FXB zIC38N-yrGhNfRlQeWfib8ETp?9qbwcoE|G3{-zw5xlcM3AcE9Kx z&yq^ZH4@i_E>gMN5X?7IDkt^Ab(>UCLZYlbAXU}MBsv%A^)VX~;Tx&u%1g4`&1f05 zl00@b+U<-68s6i)}ra@rYcz* zM=vn;TAmq~MH+~Zm26O{oWIAFR6kt4TSj~S)kwKGnLMaED;J-Pp?c6p zezy2WVC7uS7e4Z=!Ad4+E6cC`!YAUn)nv zK9C0PaE=|Nq@67Rez>5VGsJ*3-lkkh$)Wr|w@4{IP7A*CR;mmZFpH$TueGOM@QtdE z?Ld9N*Qz*|wBh_%HMnO{r?W+E=l2^}P=eY)M;>)p0{A=(v8VPM=Q^3)^KS3%I2wwsFwQhl0C{Ymq2{$AM`|L}ydLypB6_LU zm!t!KnAL)NF+ggK`mop*cr;agid&SpV(7Gd_qn3>*%>sYqEbok+|N}dOBTKo;5jC{08)jBa((ZZ$ng5fkZ(2XYn%@hppyMZha^ld5l{v(WV z<^x#?2wPSObWRbheT}fyhk+F(7&Wc{@Xy5PrKpqVKZJEo&$?EC&92s#;L_i)EU%Lgg z-Hfbg8hZN|6iuB9yiyDv6d1_%G4|bBPuu&NGfxfyX|9?J@;3VKA-Ew* zQ|HqkSTtR8b2G!dJVxuXsTkNfP}@19jOl~cuNS{-<|)|XsNmvkZO{qU&(amz0g2a` z{@sF(1=^Tv#{okN!O%YiZDG;c$-C(Hxe40EE>nPrH-hnYZEj-{>tda@Y}IfU?|JQ+ z7WF{odhHbr6PI^Pd-Ze;9owUAkQM`<-PArmb&830=wQ$Tanp3FZ4B!vNY^DP3^-Jy z3%=R_tTpK(y_nFRbN`_Y&O+Th2NmP}RIpVm-MlN;fz$+D)_n%p|B>5_czjYPw zi~{D|)tye}^O55P=a%VyKTJpVjMF`h+sC+SCE3}O;5xx}5M16(GEQtq)zwOFfjwCe z!A)cd_$dJlE*O0pf3!1Je z@J|0F4UDHn+SPprTNni8K*0~3f}sA)apAm@nksdcA6H`cU@&MTtnER6K$Ln{= zGGLyLbOK2UBom%gMc(D}$0Q?=)LX_Gu6$RHtdwrG0qthW`h#IWwMF)Fr<7Z+le<6h zp{AzDf!FGR183wx$!`Jn$MURczN~~CIk^`d%-$uZ%(DWAedLtQ>@jVOf*Z=^+}XTe zsg*YlVWfJ!kvH$;|E$6C_F3t`syp(Rhtt>!?vWFD;_NI}MLqz|#>(HXjsb>b$n}lq zfp50U4K3-hyjRe>Sa4=r`Bq#{Am^og=QoOc_!aqHpphD^5uEvzq8rI3xU7Z!wc=?j zQ{3Bj1u_GbHibdJ?#@d5wm1sqh!X#jt+qp7!P;(0`ea&5OHeYqAE2At6^3QGq?;q4343>e7ll14zbg=&g{S8k#=&I@)ZZmQ5k^0-J8*s{`zu%|= z3mWu~DqMixxd!V;%Yjz0hE|)#14@!$g0ErNx6|o}$q;E_Yts4|V!L#IkIg>ZFmHGO z@WC`g_QxE8@qZYqJ}Tk#-eNd$Z4rCW1J%&51~AsDUA_sUbUX!%_SugZJZ)KOR3O*8 zzP}o?h>2OhM~$CX!+5q+=iQ28tGzF{L{aBwa9=PaKyb-Wb%kv|XJD-0{-f%~b!pV? zB*Bn3YEjuBV4;_~={L5J*->iA$TIFZ$^}Cr)g3*8xEy?{9?Il8gI(2=9b*M7RBxz7=tD8Q@<=@} zzK`)cg)7}I8*B4U0kZ;(H}*FDsMvUK;c#H)9pin428(6m^F|*|w||>-Q#-L0xS8a{ z8fr;3DFI|$M^pQuKLBT$#iGw6CfkX^vv6b3%Ou6+u{dsqm*j)Z<;f6L(F~qMzgmpHov#pm)fZ^ z2el?=#S0cxmt@A*UV{ZAgUyfY8kwS-7CEBH z;C+kU{Q;|chsCq*5;Zr#;+M>bjt;a8i?nk*=LycLvP_!9+DfmmEDj3-YF1kE9oR_@cX1j9~REAq|*n=IB!a|6)2tMzCoTV9IO zdVDmU+WOR5>$eo}athkrT)O%BPzhfM7X0nf!_)T$x{>CM8qT|r6eTUT~oa)8?zRU{y)(Q?mhqj delta 3321 zcmXBWd0bTG8VB&-%$zebXI2ae7dFEUG(Z$D7yICX8!mtwZb_QCp_mGyfH>d+ib)8{ zW};?xQE&rugHS<{!L+(6OBRZ@Xk}MR6THT~KYRcBo-@mNpZ9&A=Xp=z8O@7Rnyk*M zxjUTPyB-7369_*noY6r2fF0lMnCNUf0%(Q-GhPC6IN;SNw2uSEe8TTm3dgqqQ>OF# z5MkW~;GG)4r&(Bk5YqOo9A~!hN*ko2O}sxL^ve=vj~3RAgwzxO*j!4*#nK^=e#!+x z{2;sU=0J`@f2*)=7v!=0L&!zQ@jK~r$ZNBJkv~BGKmxqa3JVWH&cDq2R^h1bLi_uW zOXdQD9H343HxTzLbPKCsM2`;W8V&*hemOBJcUwBfB*xe0 z1Do$4Y*RVVH%M3)gRpHCK)MxEW)uMaA(*-`15kVsS-T&&dLM) z6>}N`zoQ)8?Uc}Fdnzt6nlN`{2heMQFuy;RzZy`NFYMtZ+_VJA(cFlDSx9ZZ2lSYW zw3!^J`;XYYU;zh+Lb0z8um!ldAP;ym7)?R^e911fmcL*?xp>ht7_jb9Ids_zPmIo2 z1t$Fl)Z9=7Rvrb;j!-3(T7Z5bsscUr?3r^!?QD}&SD&2&5>ixO$sYr*O~ReEss^_q zKys7n&K@rFrmxl3kBWfe8GB?_;fnEnhdutTiH0F;=;}shQob%CyHnjp- zNt(%BxuHIT{?>+igC@?-is|;J(B-ZsuJIeLh`%Q75f|A1q^4+kCNl(@V*{rED~@Pt z@TbKYRpZIe0$`Y<6(uVf14 zt(O9NrE_CarNK@t&HnSGl=9`kJd2d3;lQ63NNJT!;n%#S9ElHhXcju%5{7@7vsrSt zZIkjtD}ihy>y^LmxmoBpS6JsN?ft$8s1A~fBVHwbu2g(Jfej;8D#?7pa4yh4=wtdP z(A$Hy(Fod3Q-t|j=?mT;r))O8@6rx7fIbf5BEN$E59l*YD)~@FR|xYTQ5JZgeN<1s zl1lp@WDA2(4it{qE}ZBg9oxv|fR8ZzP3a4JJ-b@0FuGj2<;Z2~H2ZIDczv4qAVQIv zE^tHAL#3umoN3xF>D!$3^rrNSuK`%rD*e%!t_q^v=vwLxtgNCz^d&tE#MaV!>QA}h zvFqs1{QW7)6+xdr%a zh#V6C8jv$zUbd(gGa*8b_hW!tUF0=!7N%&Xyk^gS!2OzVS9dvUIX^F3CFhRjO8HgG zdk*n=mQeY?vLqm5ru=C|B3r>xI)@kbeEIC;-+-$P@|A7#fYHO`mX7PdX-B!$g%Qig zh24sT(cjDWqJ4nvOXY_TSmfgh_(rB$_QUS1WOU_?fXIqTcv4=Nzx>)N` z7z~u=Yh(V)7VFtAys}%H^e#t9xT8(!{~4#1quo$b#dZ~>-5wOe>6*0L-;DzHN!mPn z5j#~cZROn#R&=|zHo=nx=qk*Bh<&AzV94 z7a?cx!SCrJ%TBVj4%4mJa1=N(NtZC+ABZ2N+q&>Q9=Hp1xyGlkLG_oe!$BheMv-Q?*eP=E|h$+*beS0t9 zJ6~VZydF3jrRZBT0YjbQbvlfh@QrYHkDP0IXIrQe8OZtOlqmDob3=BzDKT+XKvA|5 zcQ2By^|&xKURj+S!TUC0>S-n2R>m`Lp|H$X$<0n=okj^KR4cm=hX6@im5&~PGaD4P^}(nDrWg7AumQoomZ zxOKL2>)u5ma;S1UgX_5^Pq|$d1(+L^hslS4sb_@g>B{2?On}W%%98;c=y00yypV;J zVNu#5InG!nar_gGKP|wZIB-WR2O3<$*?Y(74epB>vGX(GiYW&F`&{6iONA$YG6c`z zN_A=xzTRjUTh3E4G|><-eJVH1Q8;miVb%)^&xCWrLW^O+`0tq*j|__=>KI6_A-1oD zEkXUh;egBtQ+gYUXD(;=eP}ou`~q-H76x1~lz-mBlzwiwpyf)Lo)tHZ@~SG*u7m%vv=^lZ^LTSs;ivP!T*?&y6t0G&}I zFxgb0iUs;vg^9yWUtQpR=OSU(QNqb4(;p2Td|wJT%Mq^zoMYBG{>JQHY<6zA$(mD} zedD>JQ~qlnJ2{8Pah`D5I&)MMb1TW+oEjF)m25NTM^EE>LT8(}C|qK`xQ`KT8)vTl zf=i|xG20FNLC8X3!RKbXGjqZxU06TET>pC&FxX&j=)|o!xx##BU<*(cZ*Gr20C;?B z@qb*z7Y=_*pt6OpXmOVC8_w+dNtWr50jHjp6_wennw)P5k{vj5=m!%2A(k;jGt^>Q1E#;+_|xP-6eZq`9RWb%~%*8}UY9rswfldYLko^u<1w-$Tv=PVMe eFNfX$R@d;?*HNBfp6OEV;oWaec~Sbhss9J~V%5k1 diff --git a/data/translations/pokerth_vi.qm b/data/translations/pokerth_vi.qm index ee9dcc206440cc55da229aec6b1444932c1c83df..0222974462c6627759158ce4e8c34c4be1bf5bfe 100644 GIT binary patch delta 7910 zcmZvhd0b7~-^agepS{o7`<#8w$#7-NOr}f5Ou5D)5>bRmkwV7HP3n|VWR@Js+(m{= zA(D`yfy|XDs_Vu@__@YQo=^Kc&+GSk-Phv}@4fcfd+oKp^LMrHlKf|+xW2Y&91*o3 z8obOxk3 z*29T}kwlL}6|yH=i5!0?G7UbdTrjaUk(&q6qa1~-jT39lR_(S1DF>i^#DG{ynA-=d9(T42`P0aZi@fDki ze)J&zWeCxxCM1Y>A)zq|jT5k-9Trv;DP$#ANw9B2^gAQL2^0PJg9O)8M2G5=;Dg;A zb|PU`9MO?qNm#Ur7}X`=xAov{5?1p>)$fCBTP_J(vQ4=0zWRa~6D@qIBjL~#qE{VB zIQ4|+k}s+K#u81xP3oZA#KwIf&GZbSI~-{W_Yzf3CE4DADDy5Er+gqbv@z9N_l{`L zBWhrkO%$C)O=`c#f(}r#s5_8$Giv@C8yq`~T5_g9=x#T)yK$B1-X5|$^MdH^S+Y0b z#anvn71ffM@eMg{&LZl$mz)yt;!=^EvZ|mvk%qo)NwoYp*dKgO!@6VVJu56M`fB0# z5E|x-jYO{@XWbTJiw}}>9{5{5ayGq%4%hHBBFGCmX-^{}pz}EwXvA|&xN#r3gdHG? z+e$8xDMSx~zaBa*YZl+GZlxq@G|c8kLRvJ4A9D7f>;L-B4jSGL4CdA#(mmV^(A3Nyli+6zXzc~?%_Uk_?PfdrQEU#}DkF+EJ;VZpx)wI{q=aeHup>rE9e*Yk zyp)nWcM>fdNC%eVxg-Cf6RXY=txcfRR*;mVna=v)gX7mIWRBhG(lj$s>24}G?GGCY zZ$-turV$%*mr7H}_uob$VKc89E-ARl~WmcK6q12(Q<{>*GwLi0o>P9s2hK0v>D>Si52Uzn# z5Lr_nW*=Nhtk{d$ryn7f`7`S`z>e6$3O1z2d!n7knfu}(JolJQ{09r#w~hsNP!Tho zWeYntB{~_%7JVuwn(f1a4r5_Y+}Qfc2*ib5EMCO;-ZQqNHoR^0NVZ3=OLXNpJNC#E z);Kh-`hwV`pIG)Bgx7sqmj5A*m^a6+Ee$00U?00F>>)bSQz479VTCrmiA_Jo3T-bC zo14NO4#p1Cey}Io5g+C!vsW+s5L+6_8Mo~qmOPoW4LL|umCkkSlt$zgYvHsxpa~xe z$mcrM?n2bN5$AAuC9yyi*KhuPM7~c7*^@e)OLb&xQ^L824J7j4!+GC_cMQ9wkZEoI zmxGu=W^VZeAQzz!q}zuZ~7OxTKIR7{Z0zhpp6b<-$!yA7TbA7hX-5 zTyA~U0z|?-Ttb_liP~Q0l4AaXS9o&=V}=n^WpZbhLzKIEa_3|4`_(C2Ucd#6XK?v- zONga)<*t{x5R0|q#Y$CsEUaIyl1vE2B^p(ueHjQWuBw*WFGS5e zRc#jF!&%K#cDG;yXI`j=7MBuRJ4!XW9^y;cZiVdWN0onNG?6YqHLE&qoPBLl&ANn( zv<|9;xk!(5>R7npzG`9717cH-sUiYv61DbJE$@#Ie8@!=^&0N?qDZxV<_Ds^v8oL_ z@cwU?RGXXEAX;Lj+C0;ZsNZ(g4v)2nm?Kn2YtAFK`n>9B7dK*~^HryR3?`a8S#@O* z<~NvTS}w-qs2*(IL2TzL)vI$5*@+LTj{(P#WbUh~LUQ3&0x#sHKqZ>Y|A>nTTATt$y>hrPe|`i3wZmwCx``Q^1T}VfdA+D z@V^Mni49-E4=h69xu@a>^@Ipl-sVTuD?}iw;JvCUiIv~t{m0)R+MmMDJh=xt&Ee-~ z6cD>*mh!PYcI_~I-`DoExZ#bO~##_-S2;rG}k{L7A7#F-)dEB-i2y&~T9 zN&_7R#qh5__eY^Ig@5-Wo@mnl@nu4 zodIciy`YVTaV6Xr5$CM zA42O`&gH1fJ8|gn`3jhz))s z3|v%`SZsta#1RkddoQ?ehg%-D62=!~qcCYH%;@V4>;Frb;bcdYoG8rlL*Zg|MVQ_9 zKSXaMh573;iA@xRMYe;8jwK3Cao}Tp@hAQ$n;bU9B1wk92%fEmm9m%{%H^P1_=W+gUiRu7&e&C}f7K7S6b% zwsAay?6$zdV}sRAwmJ|yo~mx!6B|0!RNcMLD3s$?>R+5qO^H^wQ4cwc0CMWF+WFc7 zqRkK0E`G-mYCEWB6g5T(bz2?4Dv9)G)B(8|zg(}LxzCGO>)z_w|6~yr{;7~X-l<;D ze;AP`S?H6jkU4Scg&i&t9mrP)PlXqF4^@Y?KSgX=zIvGnRW7@2t&Xq_MKzjZ;j?J< znqC88RLj(Brs6}tcT}5mcc5c=t={qh&z--ZjxRY#G;6au;fxF;d#pZTtU{#xs7||k z3n6xrI{hie=LV}UergUC)>dB$0%yNe$TmJyUp4+jtX7iRls5o6TzphrxHys6gahh_ z{Yr=>HdQ}5j}NsF)#d3n#JV`BE1umWHfovrud@!sPCBVyuYot5^-_PW&4^qwG*;%n zv9q_D8o#2L-CU%p^>!MOPalPB%STN!XSi{b=^EQ_mr;ISvGC{)lcr-qAhCN>GZ4ZtMsMufQwHrGg-c943ZBNX6P7`?R3F-yYJk8u?M~J1K z(#$=VMl`%a6XesGnCA-3k|8jX^%FEM4D-?%Oymg+%-j;?;zxV)jW7$K$e~I zT=US{2KD?un#V_)Awn@tY588n=txbuRD;-kv!)yYiTqk)3Lqivp$9H)@E{w~_=d_z=lQfzY6 zhD>yLzi1l?YyZtrY$L-;6T`)J9ISIgkl0RwS0r8%JLFXV9x3+7Lx5THkJ!`88y(Lz zvCqZ=h`6TcF!B_<<*n#+W(In{{-U!#<_W4Lj@Bcx_F5_W7BoPE(?|3ztL6%EdYksd z2JI4O42^^T2Oky}4nx5C{*SnL7eeTozG7%~7aZaxnxZqn1TkW6HS3Del`qg@brV;Z zAmUIPapmMGhV z>~#7HiP=S<@t7xxrE7^s@se>O7O+<lILNTG=Rmt7HKGB5d7Wy_)$VM40j4hI;tg<22#wlJ_-; zHq%P-k+D$IY00NLRHwvCemKma^|Ca3VFs~1r=*2t?&v3uS~zon^lOMK#$PO)xm+@Z z%s_097$Ak#gJ|ErkW6a-t(u&3NaX|4{ zidp7>24{k_dE*kIA?Fk_sgaa$5CP05SK9XcJyf(++V*J-kvvG+ISPSmaHT>fdYPm> zgbzjBmiBgVAhO>hrG0?3E^6wWl&{Wrq5g*Jj)2qf9=iy&C-!s@4bE95Yljyg+;Vg%45R-r9%9u!HE~+Sh6WvE6;N zZ>K`kYbR(wJgG&LZP0$HvcUny4edWY-eExr3fa;DI<8Yo7!1 zU0f8(^a*1v-0Gx|jkuvRKS0?%@t7{YJ z1l1htq%&P^RgSv!E4H zX7jp&A}?ayhUgwWtWRv#blsD77$=wLo<0pFmOo2Z=4VIjr_s6>5g&+6tE2l=--g)! zUuAiAKOF5&lWV*JAD=cU7wpLexsDBVSvX0yS@!`aAJMYS7hkZO+!%d6Tl!9J_UsnA z;;|rfx*|(%xugoZ-YwgP!A36MmD@GOxc?2gU6(|3Lbc@%tGy8yRI=S=bkP@{$eqz6 zGPnM6_wM6~&6z3pS=AD0*%To=G{(gU*}|<;WCvG27)^=%%i`vUXx$YualeIw?BxD^ zu#-~<<>4nYh<;6wT{;y*x6bl}4M;|_V*Pp=-*ObZ|R0EMzT;)yukQ?4Dk>fgEL`gPQ zPI!qHWZREqwF2oMx$w&OLK$+wd{)mj5C(3DW7T{dLPa!kE zm(MYbpEOWtV%{loW|zxww{i02;Wk9Cz2%!1@xbJ^7Eb%2kQsgDKMUNDy=>(7DAice zO}${tL)2!y;94yKlU`G+l9+2Jy|&pcSodVTbt=Zzzv`_EVT|R=^&J<%n`$i9JB^M- zMO9c$L?#x&B0X0rwPPv#eY+v^RAzK7gNWm57~S15@!1^Xgxone zaQw@-JOn$)G8)&qeZsljG~?Rq*xAVE#<+4XG^g&yZPnIqPB#8Ndoa<7UB;xgyP@+D z#tX+B(JRWv%n%jPOnYNiG2GQW*LYgJEsbTVC<0FrGgn!0w z{m>YUFTwJk{f$@Yso5%vs~4NxS~53J;eJXfZ1|pw{nFMec1Yv8Df4@KvDosabyHsS z>1nz6+-i`ud4654fk8ifj^7afS)-dh)3`bR&%Flbsx)r&zkj%x&aM6L zCtk#Io&WvB@eFR{f1g-k<_7=kiIg4=?c|iP@vX#EV_&wSOKNf`+b)XdgZ*l1RbW6e?@iQEml)H&{4QtQ+qp&I?YN2aRi&1ixn0)gMkhHd^TuPGyZI6R&XPL)1lLew{@9wU zW42D?MyAd<$4z49=b5a2YS?+MJ4>y5fooTXbvEDp3;#X#V@=JU?r=3y2j1fZX5JIQ x4N}Htr$TNr>tmi%iU07FWZqd1Q!0<{FXS{$&F^n=6U~D^aJ5s9eBwUa{tuMz?CJmj delta 23647 zcmeHv2Ygi3_U_tyddVaqp#)?Yg7j2+4ZVjDOh7se$&d`GBojhF7`jNu0R|9h3L>JE zsG$iWMT#IORg|tG3W&-@`up}dNtlF0@xFV1@4esqU+&GCIcJ}}SKDiUYn?UshsoMC zyNz@Go#TnU84NaW};4S6LSVnmOgM*7E#R0#J){Ba?%hf_%T^H^f9eNHMZ9+Z1$9@(iR-=tV4Q6{&N+f|eVRX4p<* z2i_&ksnx`;94BLw2x42tkoS-~#D@-{fH}8`1+Aw_KA3lG5?TCz2Sd>mIQ45{A-_?z z8xXK%MXJu7sl-0&Om)BfoY>(m6u#vrVuyxM6DJhwK}meeL&lQ&Y`Z2AbHh1nI2gw)BA_1Ydi!Q+km5lLER34 zx~@_;=dZBg#P_Is&LCpouKOg|+_sv!U&Dmcx>MBncZtntLs64+i5>4OQT}i%Ma|ew z+`XBiyF$|0GbwuNIAX8Ypy;(tiOt(aJ@?_dYXimfSxoFZ2gM8o!@qn%F*(q<`!K~! zS_u<=OU~Fy(}~sJPq8z>`LdTOcK<7&vnlq`XRv8^>OFA^ynHtG-oKLgy_@v1eKc&k zlwO`bk=Q%F)OT`EV(X36F98c|>P-ET+Y_HSn)*$8Nc^4V)Nd_(;F2A5HL=YbCCVq= zlIfc5PU^P}oNvBO{XT`NCoiG?@yB8Fad7^f#CC3?A?-2o(Qt|KEvqTT^da$$*C|zK zq+U&#e!gF#eEL}$5fn%4#ZVeM9GbkUp$TU%6Z`xDO>*vrW`3fneIYj1XZhru-e++!k3B)ws?5xba9YePebFM5a8_FGOY z`#QZl1q{Bum^RPYN^Ejl%BwM&_>gyLYaAA8Gf<*@NN3t@a}zu5Lq|Wh6B~Ji&NQ9?&TQ3q@zMHPQAi3R6zpcWyT*T>KVgRuTbLswz5yT>zGW}x{?ki<_ z@GdhgfsGRbm`{b}#7V_`K7;S9|CN<_FPuobLvSt3*WzDLvRmKX$cJyHzzwJjX z+$N}#c=kND^F1&SI+N{7t3m9IP3-WUZN$fX!M=DUmH3}K*)i2BV((v+DF5&XJ7sQ8 ze8OmUs@5*zGsd!W9m0uiT*EHBiTE%poBi^03*w76aPOtdh#&ru*BZMH0Zz|D!?qFY z7$?*2tw5bvXvzW}=3k#!;0+$J=QZNfj__6)XA$|9Nt8bd;ZcZeRI?`UJ-!{Wo*CSF z7Q3U~N{MpK$b5R64_zNY3Ply3&;Z^(-oQsJXhR4TJmYhmFMPK|`D`CP_AGp=Y+F9T z=^aPh(1%YDG;ued`xsvNcshThb_h|ea(wOd>(~`_`MT*{i8CL*WeQZf;3EHIdI+&k zH2l!;UBni8^TQR+6F;+qAGsVweD!I5njygCUEpW-?}SE<@^2P5AU^*xzoeW%n3Uh> z^cBuMf9||J65iYQ5dZVQN=y{V@9o=%2zEn3S`G2I)e6O|2;wW5LKhE?%_kK)CqnVp zA1ErXfs=l>OHo~akNC2#irSf2_;NEv&=y>exvvO64xjj7uAUf3Y^f&N@(TYi_Wx(-UiYaXn zidWoGOud2ac%h?WZqgn2Of$v2Wq3X{QL(U^FR`>d#loZ*Vl`6~%U+&M?ARZQ)j`XM z9-LEbC^Lfi`een1`Z2^)oJPgRPdX4A)Jr28IqrXx=Fp#*Zo6<0Q z83Iy-(zgjrcjSabxpPZ|vSIaCiJcs*Y*ZHK|EZSBCKWalUwA{=?1d-9KGiE*tEv$n zmZ5BS8iDE1I%WH&P^~jZ*)!l2vH7!={jb4S25(aidVG@<>?ftY@0Y~h?59lna24^{ zuPZZl9wmOOrZV#-F!W)na(pfXjg3=Ixa>zxR(Fna(!kq9rUA-Hf5HcrRa8#?0sA`j zu5zkkHt~b6E2r+j+0gnI<@BqAh$f#`&J0(;=EG##>bjsfjk-LLFZ@zjqI}a5<)XO{5h7j6#V>-> zo!6C%4`RFZxCWpDMvkJu@;UVB<^5Gfg1zt9s>`$SK%WJ(XvK=BA8Qp7|6`?7pr%vlkj#*jVZO)&&OKPUW@j z7%=T~<UrGv+IJ?{~^a zA|S1ptfIq@iGMjxrCy8g2hOTAA4d_tdQGLhZNhopSfzgzPBm}5$~ZiVXy0!t<6>;f z*ZZqX!;cW#=A$Y%9Zu>BRR#D#vl&sU>Z2|aw_a4$+5rtMaIR4Woq^5fpHT(fF$0Jg zRZVIk_Ak1rYI62G@pHba7Ppooz+|ghRzP4{-%iyoays!rw^i*%mLZ;7Pt~y#?k`=U z>is6R=gK@)-=q78ef)(gv89#Rta+-$&f&z~>Z(dk0KhT%t5RD22AuJgDr3%PIR8g> zQH`wCp4ghMs*z!^$%+H2Y=;S<^b1w?n~-?Vn-b+8nN>6HVE=BsrkdGtAAF{cYHljV zoqk<4|8QC2_G+qy9pP-}_Nd-?@q6N{DyWt&#R6m6sotE7dEPyzdh=Zf*kZYA)wj4l zypHOvn+Y#$9|GE$=a@m$qA6D9-A{-%0=+fHJ+H&mOOU>jcfQnmFZ1Q@!e z+A$9*-qKXH<3K}VTQ#ar!~$E}s6L+oiJz=g9pX_q=igGD3}{6Z*idzPz+1$k6IACP zA0__nkE#pZ)380Ss4l&5ANxP_XYm0se~Co7t&{5V@DSqfu2o$bKbzQ``Kq6;;apdi zSN+^XkI-z8sqKR5?$_su4UbbRdM+mZ+7h)^c>Vs-YQL&=aLzNCMqZO?;z)^dV_BI_ zdQ)xg(s*!;`_xX>ZCP;h_~*pPI<5wsoN}x z@&|e9%r;$t4Uefao#I2cvC;)@^;bKBcLM`vsK*S&Zg|B{JwE6o*mAUbBG54ZHB>#R z);Q#RX)^uhU+P)S+95$Xrk*tv3w@TSb{|}Z%;ppIqB|IuJ50U!{5oPoUs1oY#Rwmp ztlsSXnD}od^|lko5n+{T=Z=fGaQ2A$)4SDR)9vd0IiPXJCCWEXSAXse=kocN`cPZg zFr~NpRQ6lMv#zVpwK@+#^RD{aPsR}+eMfy|hnaX}wED;IPZCesqrSd1g7{a*)Hh~f zH*8R;@B1@ijb>|n+g}7plP#H0aJ9H5gLoIaXCDqV2yQO6F{cnn$+VLh^1H1 zq)+^S_^Fnf^zGY-HOSNC#MLA2IH(!j5k4`MYsR0)^|sw)YKzfKet$Rdx%V`$4U0!8 z|5~%q@CPtuP0gC{DB=SRn)ha2A$EVJ=KUX_nT#cxkGrU_|35meIbwtt|M9lw^un*9 zf!{RWe1pi=d5h*;c{A|-Va<0R1R@}<)m*x=8lm|W%@v(5@w*!|R}g?$)E}Df&m%Q^ zyRGKNV;xM|6A_SafAVBu9!+FFz0-6=PT#X7BZbVY!9&_$cQ0wHtaRqZ&D9cQYv&R2JW zw$)Bb2hG@}ef8!~2(jO4r#YeG%zfI|1`k0*OxDh>6OO}cgm%t5QN(r+(7N`5;Sm{H z_m7xw)(P$U(aw3Ocs$T<9k86(*@4>6UYi7DqtbqM@eycS?Vhvn?yo9q4|cnR?>}e{ zZNUT?m9$?(!$j{Yv|rrADVE(^dww7!jq0Og;ggV%G}mb_%_i35gwA^a7+A7N=Q9pj zaPCH3?L07YdaXqHcBihTvqn#x+k(Gx4U!byke$A2OZw3#c|PPZwtdqgexWaZ>DWtxMRo66b%eF2%7E z+qR|7ak)40j7K`B_`s(cby;Ik&3e*FqI_x(-PlAc0?%#TxB#g3W@DZ61SZH@qMMKr z1Bv`}uR1rQZty^&{B#@Lv^s5YTE2j} zfHlsgTYBwxnCP5SxAbl-kxwJt@}7uP!8;|&RqJ)D2n*%p=vD_u5VK_HwvF#coOjjj zeGkX=uuZzXp9CS~w$Sa1ZVWiyRCjO;7(M*6MEQe8x`TW1eN-deq2)MBR$kSeyo~MX z>(rf_4voE0Lw9cTAe@HIvbvwfzDwNu1DP%g(%m|W!00TyI&Q%VOwuKjl7LW*-fwWLEQL$r~ZW=fy5Ov^i>jZ zKhiEyp1e>WUK>8)+^4U1r6KnJhrRXn`yM6Uv9rGMKn1ZH6ZK7ZO(Z_{v_7I*bsUrR z^bx|jS}&Dp*H84Fb5}tVKk1{|r4ql;S|9y#EU~cO66NX#`j_9VhU4~>zTbT~>G5L{ z<=b@nxQQ^~M!P=Vj{C3N)!VvV#r}Vw*C$3FAigGBpHb!n0?;CTW-UAzxJjSmGn@GJ zs``nBgT$9->LQ^?vJPUu< zzomlaCLhwT?F)wQBrl)y znd|Rd@PlbS(%*Y*CVufp{e#B0QT=KwQNB3Ez{8x?;mt_~g$i%ISdS#0tbT~A1q=BJfXY88y zG7Qao!xuJ;GqkObP`u`V;iXpdP#v3Lh}n$8ZuK;SwdeQ57hE$~ou8e=er;!nU%Uyi zdXFKY_iA|SC__^AQRIY5iSoxC4e57~y=rC|#-@Ehym}SGBufbKla&p#+MY*UufJhd zr>&?Po;SGaK;`fG8Wv0iOmA0RrgLsdlqY;{aDRhWI+`xnCu7cY(@ z{?lZq;c`Ma@iHq6KTW!W?Qqd>x1t#~e`I((eKtzxK}KUrD-;k<7=3>M{d%B8`J>au za%L0pKeCMGId@Q+Ic7B9iw7NNtb%#~U-E)6@cZM$#ytdu&BrAftB-z+463uS)_C~P z)-lGqRq(yGbGfl@{kPyO+l|39tpEz^jNyBbR(~|rSP#h}Pnl?J)Tl4<=?#r7W>klS z^^6f!KogY4i0A}3(-dRt>}rT`YKd~y9hnYnXKd2~f}E&ljQnsXv81-fsIW6A!IU%h zpNGR~+F;}0N7&ZR9_@`8hi4N%aMd`b;tCv-n~h^nz*&O5WqLs^QGUi`oU-M6NHEnn zx7`99CUuN+w?MK<(~R>J?cl_Bjq_XKthjl=xFGaXqN>Y`Z~TlzX1ka1ogP(CDf!d* zUi>DE-)CIkEeh+sWc!) zV%!sHCU*Il@z|#r*YUngyMHNBZrp7A;b;u%2m6e_1G4cu*Su7<5UQs{c&VZx`GR#` z8o!%JJVtow1CIluslCeQ-NgCtzsIZmDR|?VKfFRmVtbkPd3Aot1!%QKqC8=M*Puax zh=~2YQpa2-KA@}Dh)77<(Az89l}h~5Qm+Y75yXEy>oxu3$wH^98^0NNq$1X7scB%9 zMkr#BH4U|38&@7>8um*(@O^tz`i|F8a#>{>@yhSS>g+I$cpWBi+Dv2A_i(rkF*(P+ z`3FMi8q@e{SK;-iOjEnSyNyF-`uG#m%ubiE&)b_8oIH=L)?`}Q908_&s6@Fo!?eMD zl=${brd%V&?Yw6C=y(Tgzayqy-LD|fOf`La9@}wgThnK;kbG}n)Bel}M8=Oy2SO(y zF}d!PKJd+EP)ItCn~sbS6F5xYOoM7WJvNb!@S$(LZzxf-qDw#>gij& zd-uiyXQI9PAH=J=>h-;+jD;jyKlYv-a~C1|g!k+t6Nok5;=SO?Ae8AJc`p^aU{PTulBw2v?-}gZS>?U=_xuF=_ObVui@@Qe zVDGaRdjj1~_Wt(e5qQ~1-Va+LPjFPRlR{}!;KD`M=xTwvi(k+xlq{XPxqQv#HGx!} z!YR=G={#1}WeTa{-hPA`TveKsbF~j?P&=Ix&F>(vTS$znhrbpYYCep=4oW1uc^73- z2&wPfTo3D4aV;~Oq>1ZOpld`>71!*h`nt*H(`3hksdSNYC`2nbRO5e3 zVr5m?hJZ zlWemL&9W!Q+cGTG>$`RbR#vijNwRY8&*m{doy<4{ba{nX3T5js5=<0GA~PnW=uE$W zy+pE@-;ycCnSUfJMkdoGF&<9|5%P86nvhb?{cRIg$#uDItZTlxLhb5QAGeE3_*RJ$ z)~g$vXp?15x5qiMGHkUnYZnnZHO*nMjECHXBVE8>Syinju zT(eLdCO9H}5^j-YK1*?~arMf(4%RcduGOvRp7S-U00mjREn@AbE4mD|L)l#L0wME|hUD$T!deV7|dvGIW%+2W0k-NPcv5NH@;T3)uHHXC`@bW$b zz96fhz4ASx^9c~oS_=QQpis($7BG{0 zKu1>1z2Z7EyM29`#r0{F-u^;8?#E%B6Z4oGTMb+qIM;*(yk~g)xbs?tZ9Q_!fqC-1u-&U%@7&}YQw)&jEDyf zk;HRQZArYp;ij@DH?i0{ahSUkyymTvxUv=Hsv}kt>Kuh57FEbZavsdv!<=qo|u`)vEYWEMZ z>_uUbGAhBMEV_qfk+ykS_Nk47!PX=E&%rjDFFCR8p0)g`D=R;7q|LIGk&2*r!dUc?*Sb9ynIhjSG3 z>PVaBSIYc*)s4UrAWl%>XOCPP zQmS;zSLkzi=F5_Dg@D; zTs|+g<35Y>%*~h=b9qMw<<5?&&D^2QnU}dySXlGGi0F*8;Xq@SbZdgGnWaT&X1X;s zqD5%Bdu17x<9Z|3Y_y2~>W#z@YywtA5HS0)gR!dJyvSm0DEw$_!aUsJpY_`<2cw0!S z%~88>(dS(-Kwhv-mLoAOBeTRsTS$v`v?bd|Svp%&Qh+dP6|7^mBxcx#wG2!FICG>m zi%+vVvPQMe=TC6tS{!SZl=8x}_X;KnwL*1O3?9rEDmhJBTly1hv8UP{c5AZ59&fV- zS%z9O?Qs@sMqHxZ0Yd>c23Zoa>=t`Uda^AA_{Zw7r=`l*5;CmmiT1cmi!B~gq$UJe zlI^KkqhQ>)B-po*k*C&eDGQyPmSMN10##YF{zB|w$!U(95~Z&6%&o$;N*B88KNH%P znqW`0Azv72OHNA{k{7P=R36!gk!g-ZYlfw}HK$Y)LX@=lv35)Jf} zs3gO|Q?k=Cl01b7vSiy+c=0>QGxoM#+||QsV8xMN5~prl+h0E-M_f&OOLjRZg=|2ai*^=r9ozZFo$AUpT|X zk(36wC8n!EIH+*X0f6s0bwPgPd0#*u8*rqRGK(KT$aEtJth+6vSy{i8(z!Pj1I3~V z2*4@ssz`2(IKS>mY+9(Pbj5A{iRoU?F#8Dr_;vm*nL9`EH6+k4U}dap*Y)yFp_Je8 z4bn+60p{haC=JM6U?>@(NF(y)FObSZq0ARgiDNnuI?2PF7BF4>`3zi>lb#eQ+XH;; zO_7jKJSY&U9q3XdgBS$7`<Tf%8)UpHNv<)V3gTWP(wFNFk8B+kRHj z9dm&Bs-$z@-6orrt@%{8rwU92D3Bi$r>uaZQHSV<_k zz-+&7j7UfuAz>qGLBf587Rno+ijtquxTyGCkT!NS z>|YSGV(AYkGz51$(-kRrKi#SFz0zW`hkxW3+GGnBVpVOsB3QL9>l|!}7BJ9~fBX+i z%dj|5M@vsj&q~JmS7St0nxlEFZIm_B(m5?TzNRfjz9c_Zc#u6kJtKlGF~CO2w)A9c z4kk{prr0uZ2m@$lrCS_nmZp}tw3PHLhb<#GEj>Lg6-Xnqgn697mhM@}4txGI1xLFy zU5lX^mQXCzB^9&ajwLM>NX#a$RdBOiqBS+aW*v%>rZ_hx4)Vvzh0X+Pam z4+UT}Fwx;iZx$LVKNE~&J_&M#lz>WW)NI(;Y6B4OA+wP`)RJu*nh8`{FtH3!E6bc@ z*fJrV#Uc3f5WiG_|Icp}qThz^TIz*`H43g579JjC@kHSGRs@;`S)M{W0W5NFN7m5t zx`ztUMNs(|czLRnNycEei%P~Ys!7ckwqiXCihVxZJs^^q1LCkPM72qT;!OB+HU^6j zoZ|k)hgJ3!IjD%og8>$-2!S@Yk1wl=a#EBcoEo@>bg8PzuY0+7N3#B|bA18}qmWTl z2Ffv4r7rCY2AB6Nl6jOX+&)cNV=>SRv*Pp;=mg=xZ4F_5s-Llbf_vF6R->XQP#_pf z`!qkui*UV~9BwNP0|k zB$*p(|4p)P`6Q{187%N0{w2Y_qK1;-UKt6QN;6{3MCjiERW}243B^;Q7W&K_6e>jV zlM1y@RsPqy)a2t(5#C*^2A6TCk7UZq1u;Ip0BTVR02BmvY5AZ_zQ-xO@)1=GN^<}#pV^&H&Mh9<#UI0BH5mi zvS95Z&X|OU1rB`*tYwurpN9jn=^aw=5LG`1)RlnAL{&N%o+tPkDgBjjG_E+HCK)4% z&=U`St@tbaG*$9dxiTb1rE$CkD0p8`bT1VN5Am2G73_~9d$HlA2q0300tE_Xav z0-9h*)Ye4Y5H+;>O|I%w2XvM@h!Bw)t)*y z8igWM>_i>Vb)j2Wx$p)k;mH-fY@0nH(a}tl(nPH*#9T0irJX$KQy}44^7C`u=oVO| ze)ec^4YUSEh{zNbt<+EulBEh2HhKQPe>i?8Es>6B#1*y z)GA&^g|IECsDD^+IHVSN4=o?O)k;2oo-NfBd1D`?D|}2s{l#9}KMRS9z>;U*)XThd zFPv2BJSYI+7W(&J*+0ukk+<}1r1J>JB(#=Uf_BnM&u!=N+8&G-ROx|EJl~EMx8vWu?Ek;Zik>h2MN(oDpx*>L zq(NYj3&5VmkX)&IrsVqDKYcSTmM*m!pt!D|t0Uk)r}5|A8*)OG4M{TKz=e7(s#a-p zh++(Kmj)OrHwK6tu+ZzJAy1nG{(4W8YL{n=n*V$!$jM!iegVApFKj(3W|w|}0Pgs| zs*rZO=r(CB!ibb}gg^;dsH{qGUaBp~4N1>or2eG^>!QI;taKP_h@{S=SxCek6u(o1 zIST8(asm2%ygEE^m2LkNrDh)$nZWj8rQwOc>q3w) zm!Ais@N7s>Kh0KD(vVWS6P^$EmC}_U@euCG!*ew#6j`%wX$ts@#sq2IuAb|9R!B>I z?fYyWf=BA$p{KxS2Noha*3ZXU6?I+Un`a;B#y1c{(7T^_Hg<^HOCmsokMu@n0-y z=)a?Z_!2bmU+b8VloIW^;{R6jM9HeD{x_Wz&%c-Cv@5?fQp`I_>#*>f_U|N8m5Ux6 zqV)FvP(Ox@?0uh+;lI+DAus0l%wqr3p&@15|NnMq6hnC3y^6GH{7;jH{G*YQnluEm zZC-Rki6)-^aJPobyGwMjZCm(jiU8>iZS|r&{7+v7GJ#@!8Jg{X1MPd{pRWJub`9z1 z?oc@Sf1-1v2wwd^)x;52(8ck$O&lenjT*tv+0pS7b-Y-Bf22l}zi97pHH)dG&mZj3 zxh<)!MgH}FyJLf^jsFm+u-t=P{23arLYS0gD%2&rqHBK45?A}k>8_@c?%b=f+v{`1 z0kPB(URc1*cF()c!V7<76~?ZLslIcMk7BR64)^kLhXt_aQd_%wt{+-GrcCnZs?lPS z-T1%E>G6WxH}X8Kds#1{$}+6kh*N{ifKz#xnpLROUXU>V2n3cnPny9;pcK{Sqrt} zq=KiYXo~mZ@*8rwUKuP^YD9O9c**Q2XlKj{q}YP4LUiwm5-B=1@uF7#=}3y`%Pc1F z0!d&kvOK8|$+axzvGf+RYFvg5KLrd%vlUvNf~|3Jc%$I(Y<-gCui8!;W)W{5vNF-@ zl|S%l!XgBAzi47Fi(rQt7b^a{{bw7bo(4*{;nY-bgm2OWn6D(RnelkL~6Ztw`jvUur?*SbZz&Xwrssl z{Ei|#9B*OW4cf6+xcaxh=Mmjbz1&}Vvum#LJ;T6ey&`Oualg|9KQpxUV;#k>-Sl{8 zUr)3%x%&=a_1r)9WBtSr8HISopBvbp=?$KZH?2mnn(jIMnW?hJRjD}V`90RXzCWv4 z&GXXJh6B&5v96S{0aZP(#l`jo6)SMx}nD0by(V2GZPEm_NK-c+)6=jpQSCD0^{X-?uvt1 ztzyg9a1R~Kx^eZf=Q4OA(Y-a6Rn|Gs?u-`= z=FbZ|(%=|jPaUHx8qC~pHf2t(c&S8bw&>zsV1?zHwCpH-$V*RP;Y!!MmJQ`$E0frDFV~N)YPx?I zj;Chiuy}=QT`=AMd_17e7Z1 zXt7cL;I-bI=eK~ppkWd22`AC{eXC_p>5e;eDISQ47%q>Ci74m#A>t+JOWypYY#?I; zT*o8Ix|+7IxF)oUaeu!Mh0jVyD&!fKu|~{QwRKl_`K7EvUYq5tZn?bUA2Ahk*Ue*t R^X}#`P1U^Av+U1W{|m&M7qS2V diff --git a/data/translations/pokerth_zhcn.qm b/data/translations/pokerth_zhcn.qm index bffe80916fd745abe290c811ce01479a353c412d..73985e66bf03d974d4179639db537d7198fb0a7f 100644 GIT binary patch delta 6698 zcmXY$30zI-8^@pb-gC}9=dP9#4J9erB}D3z2bLWGp;N=>L65u%hVWgU!>Eo9A_ z$SBE}F(f0DF!puq`Tx4-KcCNhzV~$Qeb4hg&+l2@va?%zQa z7)-SCfQigy57D>_L>d2?$XtDhOIuE~>@O3Ui-Nc~9Da2KDhk<=%KEgte*AeX+OWd;rqM#t+MSOqsb>giz!l30cvksfc zTyX8&mT2N=;=QoWu1ezlj}lGkLHxu-?7k)O)7BDAtsy>k4H+p{OZ?9nM7jCIujJr? zOcPlXOX9POaeZ87?h_MP@3zG69Z$4wEAdC~5zU)MLc|E7?!hF)|4H;xAl2lvL@A!6 zy1A1my8&sP-H7HNBg6O)L=Q(&vsG`1tUTza2E}l*Zz#1idq*^_an^TcVSG&Oul-K6 z^gKBm@%Y6z$tA^(=&(ed>n;+t=tW)|v44+Nlz%J@i4P?*23FFLCs=4iBl1hyO%%L| z{1zW3T2W;pbBQ3o6{m=?73A-YeT1mUKP8c9td9J1dl8M-752Ak%>&orjU~`JoXO?DTD_7T&HVT5^?=jpyN!3Q8FT!+YPO6^EjU2H&TZ z4rchflG4wCIW1^aeeQ&YQPyQ6k|pjvt+|5-E6QZ*lW1djIMLdxl-s!zF~wxc4cSWM z6->LA;Cs`2DSt%)QNT4iZjT4mw4#EEV22o))eq==_Rt5U z@E3SAnjXGt4UdP=Q)3o(-Y0Sl|ARMBfY8 zpq@y9afg_3%vU@(d?t(OY(q5jKNkD3hNxFLi{FO_r>j`T%VcEpuPjHz_0qR&i`fjK zHtX1SZBwY%i5>hWgvh2y=Idpwc&0tpYs#*CI7#&OI4fH)16pdy{@}O6(0eAbhR*D! zRc~mgnUUQY2#aDquzQ=4&ENX6=g(Y;DZLbiOqSOUL{ zcUP1~odaVPSDIE4Yh$Ch#j=St9djs zT#V|GrX*2CR6AIyOoKH>!Kjob!2m^bnYwFA$v6Vlv5&IFZ&+}RsI*gmCNjKHwvF~f zWUnh7uOo2LBb0+H9uU(ND2Fvewr4Cgk@bG0obqxhdQFCMT7447=#3}kG3l?x6u3Tr^ zkf{Gu<(A-dl&yT_0jEHsr@t$Y{TPTO9ILz(TS=5J$$U0MS-B2@Z5pY3e(Ef-R*#hb zq2f@=f6BUq5=c9c<4X^tDzsWu{{c75WPZKF35k$mjFD51ZG{3|!Zmd6glaLvMAmp4 z*WC^~Okc$HFh}QHWzRV`%}3o7IhW=?h!*O(e!MNwqjlVXUhveAi(Ejno2UZcxhbQr z5ltS;O+5mMe*4Bn57Xg6Key+S4nyme-Lv|L76CuF#gC97?j>A`GM$)}hD$k(GTOn8 zTj|K7FQjm*N)w3&wdArmnBCq=rsG4Ihb*|YQ`-=Y+{45H&lvYTuupO+G8}jI96ZwS>|fVMCM}4ZG8yuIn{8#4lPF|TE^x2*LRgvF85qK z#)^*I-t;#_sS5BNXb=7edV`<986aeny4pnMZT2%he8C@%fiNJo5`^wj>r7;3TR?bk zMJsOaDh3WRk(pftIb279BAA|)CRz0QliSx}CsE!m?m#kPUB?&cXt$ymzW`mhiI*v?frV>81wT!rrvX!|BtQSX#t zWn4ueq{Gf|6&I0Yl+OK=m5A#Q?#U_KAF+UY)>%#TxQu(wL0Ul{xaTUk-2FTE{F6I6 zY$W&QM-HlGiOd;iWE$Ues6 zTt|U$=JV~`r$A)+Vx6wzA^Uk-ch&hz;uCKNtSs(I!nj*_*XY(Gusc1xM-XpdVu?DvMAWz&6 zFW`eVFE=8~U-F~Mi_wyu_{ctCM5Da;NH0fBZ%+KQ2sRdAuS?`tnu7!(- zBi1cMICgYY;^nF~nxhxcZv_;_F3zy<;AyF5z`VT0XzYD(`Af2O$LTP^ls^2u> zW*qn`UAWV?ideHE;h!^jP=f>)#W-i%>P38&0fIw5svzaH6h{O=OKF2b##}oXWS-5)Dm|`MOXwbV)U|lc)0MQ!xkIsD=maNA0gr z1?6MhRa{ez^oL=Cqg11AIU%$kRiWFk(MRE`F#BR>3>8c@Yf&CCyFIE|r%vMR>7|OF z*cB(C7pi%KpozdfS$zx^#;L01lPBR=dPcQQgMGCqQ2pizfj{V>+PkubXy+rW&5c)h)ubXC2mlaSKYsy7D=IDa^)zFmgWjH3!g{g@>vUUNi?h%E@vZqf2^BCg+xEjEQ< zW}Gea-&vy7)>o(%MzQ4qJUA*|bXW}O_Nx}#YR|)fXJUH=l%_u{wwECBiMC?L%ee3U zli0Jg2%}D%*bAdPd6kN;tIOdx65WO#g;Xc67QIeHV#xei^qGQ%+}DW1bf|(YYQ;(A zICocjij%7A87EF|+X0?AAVv;eivVmAW4uu#eoGePetCm%jWL#c{v5%m|MTs1}!x!%6kYTrs_!Bc$5jNnEuHE?@Xk%(@7R`#%%cKgNQi zlEr=VGSQe)#DXzfi83R_qUFh$AuPqB``^I;@xtvyNYq~}@p*vjXJY9I{N5v7Eb~W* zW;PP5#vVlo%q8ZC-+hxL@j*I~eSu^cp_qwhrKQGv98n8RWcF^-vUcw1pIOqfxH)L-9#ZNeHymGv zNb6S5!^@H~nR#K-#yuWH@8?OIo8Ic4=ov ztkb+)I++9|?p-Ne+{-~Ry?09&&p-)t#!AKhJ<+JoOC|GR>9XD?vR*M#$wgdyt(8i* zq7A6j(%;qRQG;$tcT%m0aURm0{7@o?lhVHlyNQncVj^Q7q*vums5LF5*Nuwty<^gA zU(}-SOQkoCs6{P*l|F80WJEH(ls*MP06#C@kqnNO3|j%^WnKT>zC>5h=SlIf7Db{bVqRFGV|`LgE!ma9Hml+e1Qa44lt3KZ&goR zgc!yYswYjseVb#j8z;((smgTQ@u{tgCtlkAQu$ROgO@bv>G>^W45*g7cG^6Rtjd zri$pV5cLUfxWQwD`eY^IVEbKND1@SI{&ZMf?0f~aG)VpXQgdWpbM@u*sIia!RNpyR zZ{}t73qg-l$u;%s30NRtt@^{g#_)fk`g0uu+aX5%wdWfcGTTI^Y@ktefgdN4Mj4K& zepQ@?pK})7YK}(eeir9AGmWk1bz-hlG;I{yp{)I8ns%1A;el{X`}bBjmtNL%j!H-5 zduh6RAt$tlH2s}WJ!hC}hV{+Fpj4&_%nwIfWSX#mTFkg3G+{+h%)CvSNjZnmJe)NV zK|3*UUD8aALx9tJo5*^5Ym!@bLT?~VT7P&Xd!r`JvjDZIcT-JPJGgSz3C-FROe7t1 zWsdGD^Kr6fePt!lYj;gf)eX$9Hku9du%k}WxlmO2!)7!sX{QR})X-q)wXhTZqk# z#hQQaSQ35Sqq)~U6est>BuKUSE? z%${o9{3D=+Ty4KNNZxwB%)G`jA4F;0U14zRC0gGjXE6ib&>H=^R3PbIX-8+GKYSUX z9ryhx%J*&UoGZ{kiyZBI%U{r^YPAVBGV!KzwahiAOl0=QwM$OaVgswR86Im<)tNTq z1a=l+r_EG)K!mZ{HGSd94c^+doeMGXJkf4^hEqUdbM3C7)_9E-=day6=@5Pps@><~ zhX;CS^QKr~G>FpXPeC~w>7YINDjIKhR+`8fx7D6vxK6t(^PRJ{$ms&Ir-}B0FMhXv zT-H?!3*$-cqw+vBkqz2+n15K0$vWPFgI{xWynh8GYok*&eu;srwNBmYIwTvdvpA0H z)w%x>-K8{ae|WC$ zQduY#EYg*zvCyt86Pfu0U5UjPbji~uGS?=$66a?4{ykmkTLf^!Qr*=F0eEjeS9h}^ zr0>v1cjrefl6v-^x_eGluxyp?)x)zGjjVK^V|U<1(W37AOU3-##LQ6LyoxOhYb4c6M zLO<*DYP6MT{p{87;QMO*eBm?N1sAVRvV92Y#_LlCL!$W$Ok_>^%j|tfztZyolCoC6 z_U|fuZ@+$9ZxjJrz03oJ`UC6Bi8Z;XKdi;~l9KdCuMfn!qW;_vY~a-=ePI=Hir49j zhGT<2wbWmVUP#1w>MwV0k&Nj*4Ih#*j2l7h+_yk~bv71IUd{U6%)*#sXi$#F%}g|y zZK%UBHQHd)=sos*$I!mB6`BZdA~Ux!bbK@g=jcU-u5X}}@zn;WKk&V%YD2f$bi8YM zYUqWx#ngAJp`VDHP&)U0Gn{|A+ Od2*}ZPgNWTvDH4`oPnQ<eE?eb!#e`2u_qbznzr#GqLxGl z^JN|z3U(x>&jbC5qMCz2M00&IMp+x%5h;5S9g8L62NSJ$YbJC1ACcD|L``{_f5i|5 zhT!)EGnrc)(U^-w>3^Ha+*wwp*Z+v0n@*ISMEnYlD0RG< ztlk^qGvUJ2r82Wmn91C#iQhYxXzg_3k31%t*Mo$Jp+sFnNQnK1=-qu%O*})ixB;o| z?Ic?Fl(a4$L~%>VF!l@4^ET9QWd)IqCpEUn*AfkMq-Iv1V9|5aPiAdAP7XKW)FrFP z#fZ-*?;^Lwt%!1p$!qN;q9(57y#e#@^NGAK)e!YtP6IyTcb|=5Z}0~BIAeZICdgdY zK<3W3yxb2o(igo{xY;xKPl~3q+GPQE=iS=rxgoFK;8} zvWY?>=OIuA3Q0*Mn%10#CkGJCaHh}*d|*}-g-+>9^j`{vCjB5L-JsCy)d*BSa3|61 z=`yQKW-=*~LQlf*+1n`e96VTcmPUl#hK2LCL)vGE5}MK2z8HAf3Nx7%(Nz6mB+?L? zR_l=#J~9_gmH9n^7DOQ@GBvcY=o!(X&6H$350C7o#lvBE_s6vSP&9Jl5UsGsU?c8Q z+F3C3J*}+Gozb1ibj65dnUhbeAL7G`>oWBTv>`m4Xw7EIcI-e*(T%c0w-9;T)9yuh zZb}o%S$={jU@IN7!-t-Iq7xIqb}=%a<zM+>Ulj-(s+jJ{23NHjQyRUdy&? z8$i7rJNPJ+sQCq%ABVI2-|dLPUa@OmP7+lvW!L9VBi5~g-Qu?s%{*u(t0S>{Hr7@?%v`5uD&j)NPhxToFXxB2VW2DwzlB^iho8=RvGT zj3S~7RO_cRH4&_hixdlr5NUD0VxeII(V;Av<(wkD29nBtqu7(;L$qg^;`k!?Wvr#* zYSdZKOL4712{F4$#eJ4ZtZpa8gUbl;4`0PoZXq%CTE#mrOw%${@%73!JU?IYEk7UC zBUMSFim0rSQke>CjDo*X3WEWP-(>1;DkbAk1VpcF@+Sr~6)9V(zY!TKlx?E@h_&0U z>~tG}i?&k^c<_{%E=4({A+kMvn3=5mF=gcYCFnKj$|1Tm-AcLEwhro} zyK-|#8p>9Z@_^e*5a7*zo78F3*Ejj*bt`U(+to;L7T_*GUK2C^Fg2n!vdQ=Od-1S@?mky{FJxGevmIXfly&!a#a??y^^*adfrF`P{ zu4D+WwVBLn4aniTJ1Bxke*TyPZV)=W+*<5CcQ7%!4}aVC+RC*CFnD!BwJW zTV$4nbGOT%62-4G{ZFzsT5Lv0#ek9=KpKfseQc0~bNFySN9nP8qU^ zdvFfYVQJihOGq*r!#y&^xL)kdtBxXR+b`h73OyQ@#H*L&A?Zf; z;k8*vf>8!uA9aIh0rB-yAgWOre8al%pXX}6)!ZjUrAK)CJa}fzBfi}OL}82t-|mYI zTC1LSu`ePTzm#_=Dj{aSiFg071<87Z@6iBRJ|mL%9GF7%^dav#+me{!GvD6}zlW#r z!JC#Dk>zLk;f48V$s9ka$2crD8uF98J7KNF@lzsNA?YIdsXZ!*vS#ozS3;*BHuAIW z`=U?B^Rqi56haezPK+Mq=siDY6K0zD!c11jk6-=;ITcgGujr5QEByHMX?V`gn_qpc z9)xn1U)$fflW5fjenZPLB8yOd<3@a-vN69Y83X-p;y3Na4BJ@p+aKY6`2~K*lsIDI z5B|?n^U!Kvo5{M5;&&}f# znvg~mn#aE?N2K?y;NQ5YQRT+VEUV$G?v$XhKN6GykXrQ}L9CT>aNEiC= zL&8rl7JRQqqs;Ub{2~q^vS)-z_nV^eh6_>bJ&|x%h$_JKS|&{Xb2QQARl?Nomr!Uz z&19}=LUeB*l(n-mojS`bbrxdUpRZjlz82!fL*tbfg@krTh^cf!A{KAV$wo-BkB8$O zWUlHcq`G-RF`b0e@uP_~YA&oR*o*+45i-BvxjCYcRk8;w4PRlyajeRx9u#s6HN?6& z2q*8}ChC7s$a{k8)>*>2Dq93DU$`7=3yHc})&2qPW(t2BAe|$Fg{yrKs9rsUdvm}K zV}yr2ONccz36DL}sJ3E6ttO}} z)_o@Wr?)D0LT94)XH@h0 zLkod=RYD2wx34eL?TIS+uk%DT?y6-I!>~b3Q?1othD}bW{_F&)KUJyrt|%qic}#V5 z08gyWS=9|~3DK4!Q>ww*I8gPpbSJ9lO;xE>2TM4ARViu)bzP?_E5Y_a)T!RpNJ!;e zRmA}VRwSJ2#}z1Sc!sDSxd=7OQ?!oQjJV7b8|B91`l8rmV7eI*amo8vD2nmo zQX~A=H&um{@4~a9=@Ja?lP9iwSqaYsiTmbdpdW>ZCq`}| z%5W7gEK9=sZ^R2veq!m+LcCZM4`ntN3w)nK>izP>tH&{b=NR$2zaBfVQn6$dX4ti! z#5&={@5Pe%G>ypagk%_r4~Ju|=!<{QkSvov-&VstJ=8iyB{MUph`I$S#M zjx<3F1N+-b6U;v2%FS;r;gUA*5vR9ZMQ5XEG|N@d2w6tw+bks0u>71Ep^;S|! zq6aoKHqzQv^Kg7}UFQDI(uO^rM4x@7jpfiz`Et`#OKamUX**%q0nyUV_IT^JLg{1z zB)NB#bZIY#wd!u^(rGASW(O(XzZ?4WDybk2W-Zm4$z1zM1($H`JyE*41zkXRDE<2k z3OkZ5JxsA7##u=Zb4C-{pOjuL*iCeJhMA0AmOd0Z!T&SgOCK%s@!%5ae7F zEc11cx>FknV9;%K=hCi-&pDa)Bh*gA3yH4Bs$I_}l7>FLQG3|7LP_{wO08>cyrTB= zL?v^Wr}hsCLTa{>xqrVpWRop6O)7P0HFUS4o|&xPboGQpgeN9L9Tth-eGAm#zR!^{ zP1Te9uiym0Nj=l@F1mT5I@%uZ+0<3XTBH%{I7FSODImu0Rww_}65Y>Mrg7Fi`Hw1l z^~yd;s9-_rH7U@OpO4y{F?H^%w{^ilOnT|)K}K!BgJ3rP(M6a zYk8LXouJ3AWUKn)cnlCQQT^p{T?8OQ{jCO(ZP!ozy;}tg>0>5SJk=;V!jBVfYn0(w z)vxr{@H5Y#TX|}Pu4i!QRHm`@x{YOro2Ip5I|5dwY1^m>9&pw;e6}I7x}tH6N;4wz zYE4&fWPmnN)5i%_bm|Muke(ShT-l@v%n3)c`A0J@pbTqVJI%NYP|Uokny{=xXd;p( zB6uexxK1;94kDbUHIsF3tVwFtfmqAin$$k*rxc9TsTz#zAua7Mep5C5Yuk%_%|%ntjz= zv@6A8db1{9f+pf@H2G1N;98@mpcy=>v(yxHfz&NmXbMKPLD5Us+=xF(^zF8$@IFFw zcc|u($HPXr5vO_VFd94k&6+1q;)yvv);x7cO6KYnW-_~_+C|69FoCh!bk8+d(*L7PKaPp{|EJARdZNaA zX;=4z+txSMu5mmE30stFH@qo=RNrZL4Q`4>mBU4GubP*!VQemTl>pGCUMsqjcptnTvl(HQW8 zu0V}}c7>VA>N)8OtgB&As+p|&OI?9WLp*;_ceN5BT|Z2BV|)P4?Puxk)q(U|f7Lzw zg%Hiyp?hp}DuHEVbswIefd@Y5zRli&Ba4oD>#S1L&!2kRmheR1SbfJ^c(LM;Cv=JY@F~RmZQLK-C@c^hcXONk!eqEW}6ZI>+o+2ra>eu{Rg6HD( z+q$C)*y?2-$j~2HS4gb>8hx%7&m{!tkKFEu)3+l1*+H1VhXVb%k}vpBiT*+mCfKM# ze>r*~5$C19;+TZRd#dSOLzU4VSD5y|6#b1EwQq0M7cYh1I Date: Tue, 19 Nov 2013 19:29:03 +0100 Subject: [PATCH 106/128] Update for france translation files --- data/translations/pokerth_fr.qm | Bin 146987 -> 156505 bytes ts/pokerth_fr.ts | 122 +++++++++++++++++++------------- 2 files changed, 72 insertions(+), 50 deletions(-) diff --git a/data/translations/pokerth_fr.qm b/data/translations/pokerth_fr.qm index 77df6c345bcb618bbff8160f499bff1a2b72408b..5419e6274eec475cd71d34167a1f35e435daa68e 100644 GIT binary patch delta 11001 zcmdU#cT^Nt`1hYXJF~rD7Yi&13O2-wiYS)Y5d~3+8kZuX6oo~DQCG#@b=9?ES7KLG z?4kk!mWTzh1Vz+{9qbL?@6IMBId6XFJ?}a1KkxDAXJ&Tx-se93-gULE%IJ1Mqn# zk(~E6qMyzZYkXBC*M16d0hjT<%*OehM6&+nHvZ^sV|Z=i=g%hQd`%?h%@LoBIWD@8 ziBFzJtWI-00Gk}J@rhX^=RJ`49aD&|-Y5RDf~X*X_<|Nhx7LbeYkwpDkLARAdJ_M1 zBGK>8B*^jp14j}ZS3~d$Ha2}GlJnk1LW^QzZ*G&|KN1e!1@lN6(Vr;Ai=>HHi0v_rBH8eh#2lWGEPo5J))PtX=%|2O>Ry#?J|ij7m&X4YY6reInRI@X1<_0&#_{QK(1U2G363!@Y^|JPLs&< za0xN}V)8OUz}gk4%?wv!L#I>MPIPVwb${hbbjcp{1^uZ< zOK4#9YLTqYFdMs%q8?#)A;<>msaiqo(je-YYvl#%`3g48x1-*PLt&zZ)H`VoQRDUC zS)xOusP|)xdwVg?8ZZu%dRHD!GXwbC2#HbzxM_>YB9|cEs zCU){J1t)zWR+vk{De#F__&fzBlkK!IeV~nnK@@y+5}rS#;B=@w{XP8{mPbs}5y5kk zSe4E+tTV=SX$_iiQPz(_n!*Gp*Hg6i0I`z&6a&@J+zBF?gT}_JG8)q`l<4OGnm7_+ z*m?&|xp^PH)0vV?r=g)t`20f(?Vo#u=*A98 zs|$^-aG@iim~i!Vk<5}xM;3Szc^;zE;TB?zT2-%VU?d*FdC!%sUHuiln(Sa>2ai&kpRx%3CI|%vj|2m+RU2w?~Pk znc0O2F~oU2VwZ)DSn)R-pGUHMhqlB{Okw$Mr-+?PX1BXQVE!PxyA}y2=Vx|rEKD|K z6?^v7o0#e9BKE21I#G*moNf(PD80tHP25hb$6?N+$x)*9?QPteCz72m=bBV*Mif_r zYZrWpXjebZ=PYu2W-!-2?j}-hoJg*nlJm1>()M+^pvj$xc5s~GCcVmEtpW0oOdu=QNrxqhfvf=HID;3nQIC#qG-P0@uC z8$8Fx4RyIi?QHcL$%^oOS%^n5qp#+>1RI&<+q_o z&gX$7^2JP|YMmre)`TV5CW$(2Wr@U?(}(C_p^dk$ON=*e5j%88k`z;s$a|7xx-V+L zn^%$PZ$S_a!=&Cs|&n0@3NZlI5cUh<=$ONgl9(Sl#=QZ8I7Z zS0_xer{Wl54>m~lGz%cMrK04}w=PILDoNH@Of>kZjoS+)*B?uW#+W4e^AJUi3MIFe zClmX)T=MMLN#Zn}C8l>H_YreEEh(RvgE$W0h1^s)$x)HaVV8~PTzKiEBzUnquN>k` z>?aFf!3#F5bKl0&C49a6u(@!HZ{a$VSc5)%%PMGG8n)%Vs_!Ru`3&Fs)dDm{xqO>i z--uOR%y$s#5KI2U#CN&@@74d#cW#Y1y^_oKwa-UfYxtq%FNpKa zmYcxGoxDVx#|b{Z9|TfN<|n7d5Sx?FPq|+S<+KlW&0qWf{8Wr;SfYHZ`CnIc*1J2pNEaZSXeQ?V?imZ z*hUcH>T(5qN6eK2KY&fak6?(6WhX%7eAgu)s;KK3upIT@wM@KVWiLV4rmi!;V<7|k z+4$NCgcHq50MT;QoeIjq{rt{`$QSMnZJc#TBVnTTx|TJ63Gt4@UJW5 zdpoXzHHhtW1nc9zE!YN}32rC0%L3+t5)fgzt2g)r?~ejuik)fv2U7qtSZN0T)tb59 zm;^dsPMoTmAWhkTuyht=hx~|hb`a#HS~L<%1m#RP-GiHgdL_d3;Tb_Y@**+2pMEnbBHbPBXk;Dk=WC8;fJnx@6~i6 zXe~OLw<*G)OPOe|X9*+P84xAe!ia93MDM!@Q4y}l7XyXpc4frct`p)Go*}k>m@w9@ zGts9UlQ6akY*bKN7-!TX<)#bc)?(%MA8dS{CCq(`I2QzA-Vd1IK%p@2I5Oe8;liRA zyk99tSbDw+k;hD7`43x&d9D>!yF5fS-6O17gNY7p5!OzFX1~4=*8YkNxO|DQ@eZDE z>>+H5`UN${bX(YZY&=?}B_cVWfx@;a)6jm;6m}hj6DbtJey=)IENhJ{nbLEV?CsjzAMoWluG4@4p!@iw31VOIB~I!TgTdX zq`OEH8`4$0VChn+L)YCXryFeiG)n5YX(w-OMiSC}4`b8kBUY(MTxZ#KnX_a&&dqHGBTRJia z_bub4qbeORVT;vKI%?}sVq*tOqc@I3Yt>X5{W$}>)fkZ+1d8|VLA0iqja!^VvK4cs z#zv>nybhB75`u6_dnBFQ@E{tOEz+sz^SLH7rAcmxii^P_S(69S`E5GE8LLa@hhV<1 zhozPrQ!={S(b5%fClQkmm98w@PL%pYy85sh8xcXexnL4;^$$w->&l61+E03PmjGvc zCOvvB54ECLdi)-qR}Ge?zehFG-jQY{))&zL40L%hEe1AaP5*wD`CKv8nT=e>}WSY*UH!$q^so zw5ihP^AQD->e5e@8POtNnVsbgvBT?R6%xXUy&Nd3^eUWa^KOx>^r=i=(Sb;IK<3;N zd80v=%ejF|{d0c{bH(Mg}%r7U>pON{Vlo0)vC+ju~Jzv!G)FN?{$OLV4{Nj7@wZsIBi%0?eUx4U4xEHShxvAt(x<9~p2-5emB zT!`muPTP3MQ#NhaX<`>rWV45d5et4TTdsP84o4zeJGe1X2aRm2C&JI1EZZ@!m{|9Q zvR#jSi0#gl9qJC#y)erzs-fvljb%5MUnREIq>?{cz02lT(YGS z^2bfNcJOqh=r8hW5y@!jwDKCMlaQi!%WJO*#{R-XBr|Q2$Q{N7&j-jGWm`XAD)(5u8?BXG-YORv?NPA2^-u#E zlVNi2C6~bUa-Tj3-_l9)j%5%)`Ck4*c?Y6~5%O+_M_@PYBkvh`noN}LF7Ky7w>qYk zJaiV}z~HJp>{3nS`V@KCeJfwdhr2fO-rF`7_G8{N`mrt@D zFl6S-O*2mtWmS?VjRrFp$Y;JNK@BL8&oUL``EvQ}pN0|JFiXCmz9*{eJ^8|Ieu)2S zH|6FGtSFxg+o$j{79!a&#LXYPGP%VsY> zdlTWQ`5@2fS%mu>dG2BBIB(<^{9)3scJd1!ZxJ<{FE1PdO>BE4e>VL(ajvx#%rgmF zv%v~^k!bh?wB@l4S(8!IU*RrIzV zOssgP=raie|LUm-@~VN|EpOwNWg^)oqm9pMD2B~NILDq;81O!OW>FX}pt@>~Dndg}C~9gR|~d5mUr!)wKw_kl#!n<>`y zMaG`jGSIY@ms)VBEE;>@+&x7!YIX+EwHi2 zMaA{|$Oj=N#qBvz@wMBE+xv&2&g&H=6MrQ(?7odxRElTI3*ienikFv~VN2Iv@v0&+ z>2*_>;#IHfI8bP;DD^~&mA_EDUxg0mcbVct5D&?#Dn2=3#dbTCG#2I5@S{>;hlEvk zf>OH=EA-o`tkuVvSipOw;|PT3)=DDT=FLh^clgv*J7v>iM9Z@>kzBPk%4UNu5t|UL zY&ArJ`aeEf+4|H}Vn?!-K6PBt-^-LfR&QO+*|>RtvRmp#OwdW`*9ob*Rtu&70H}WU zF_COwHRXV{b%?fyDF@;-l#*5`gFk7B)!S&}n~}=UsYqD-&&se!ymvWF8Q${&!gs53 zgnu^r|HA6Zm`E35?MN9{@fs3DRb{*zR6FLDGSO}UaSbArllyxT>o-j~Rh2{R#%$%Z zT`p)Sl0`CUmW`**E9dw*5%d2^xv*mrocN$}>2UaxCQ-R;4xIez7Nr>8ZT*$&2c!}i z7b`b3*P5_jf2Q1o(q$y_BgZ3W+6+ zQy%UC6=&>I9=!#dFA$XJ(xJqWlQPrmJT@5HmFH$wL7#s|nQeis*R@h!DG4P?Y^A&& z)rF{axbpU1Q#KA17bu@j=z;2FQ9hSKb)Rc0Uxi@c8>5tO?^c5C-zYzpJK!*Ch4OQ& zQk;&p70IspDL)TNMtlB3#Wit7cm=8?;q|cV-L2wz2z+FfN{Bm&gNPNiz*^$3%c!ts!`+Mg!MnEOx6p|N3QxgsxcamB2|*UF>w`?s`(wE;x@HZ^Sd6w z;qe-kxjua2TNBl?8Q2l6U1npkk4Uz@gUWL27W(=Rs+EQCp;zBjtHxvH_2#K|{DNwF zJx{eSqL8?T-Bia2CRX-UovmAp9oBV|DpLXP)K*hvj?93q2CH)PFv-K)s+{Jq*~@HI z&JcIhf|aU^la3P0Xsx<*V<@p{r&Tv+_!0fkSas)i4Ps}_s=Ez_5+^gL?%kV2oO_w- zegvF0bcw1Y=`FEiMXL8T9N-)8)avN=I6GdTuJ8ySHV6YUERR3 zoM_@Ub%SP`uo+dV8_hGIGqR{X&*o#(dQ08Zx?SHgP2I93dO=fGjM{syD>{=eY9B{% zU4o6T1JpkL5pcFi>JH-&4KvC`vY-+hmnN!xy|E%YiMrQ;lSIe6s{NW2z~*Z8kBd=e zGw!H=`ieY~a!(z1egSckMD;H<)}vL^s3%@qj2|@eMVeUiY2pP}xt@CZ;fL6MS5PnN zvM@@_IUMvc*^p1_ zN0(59%66+?qp9Uu@*2U7hbd-j1b?fBx@lyUUSJQHq)|GX^3cV$*C4o~gAYU`i z4DWVmp_$_6L!4WJX3n8$#Fov~tQgs!*yjE=zHO&DSpOukt-osynTj#ML3>TwW~{8- zs5zQuPZS@fIlUh7e3vwt$FCDR^G%ca_%ycRpEOzXq0-w8HCY#s@fJF0a+DajXM~Nf zziM)-eS+XqL~`w$YjV6W-t9usLnj+-(M1 zx>wM=d~g!oZcEL_v77L#)lqG=mBlzb&ehiR#nCKZpsnLlfELVO+vG9^XgpEd^i?u( z>N(n0uA7J^{HFC%%p!Jtp|)2#64tL5wSBHu!>)Odb^r-P8-lb$99t36PQSIb9s9vf- z?Tqe-mLV%_d}kx)GgmvWYZ3CuI_m>LUCW zWco#WFs}<5hk4ply^E2-mTA)q-(te|+B1Pr*|#>@toSKJl|N~-J(94u^ApLQZL!7;Z?>7Ovk(RDZ1YWykv1OODmPn{o)h`Ha%pWgI~RBIxWcL7=bm zbd^_?qy9hMrmN=B0{i>fI;V=*%boDhHSlmi{qAk!>#e#*k0Nn+RHSQK3TJ&XLD%du zH1RG&*ZkoE;)HBn>-R5+P7K#|SPWkpHbUorAF3{_q6-RYfv~)*3wqlgXUWrbKjz@z zp`BJYePR+4)mPnufcL2X4Kj2KE@Fj?x9FA?!>NuQ*R8RJ%e}d}wQu|5B(#S}W-ioi zj_yMAWwI`%K2mn=zPeL;yP^lo)18?pA=)`Zmr-yN-}BRD^*w<+vRL=q3J9FPM0fKZ zobJ6zcW1yDY%oao1iurI@uTib`>P7<_3B3w*IAw#>`Os)e&~) zdWXCuO{rz-f?9QWZAjc1V*Wf{Gg z)vRsA$3Emu9^w#xT^T5ZqA1+r(V5ldxQmv(3GAu4Fj8)AcchlNQCOqYvk7{rGSb=n zcx)IaDgTdEr20q1G4nS=w0W{o&arR*9>bE*(A;q3eDfb+z5YK@!i9e=Ak~u4>$?I{ zn}xTo+@(Hsgj%h7i-g&XG=d(}7#PB;dOhwVaTN#i;9hR^A1VIY1&)Y}3)7D_#2FLy zQIR3>W^H2C)TqSK^?ZZye=w|Hh{nH0(KuG?88G0_U_5LeF523F&usR#PGj{IJ&lC` zk!HhP$2!iwQBkqu^zoy^LyZPwY+StF7^@#=FourM8%KoeBMi~u=DbbLsdv^_b!<=- zo1Xs|_PeyofbYYYPw%x)Eju+psL+ypMLDdCj-OKj*w{BNT%Q=5ppQ@Z^J1JK z#%NteXjE)``1fVBQ98SNI=43)a%!ihpOdjahYo?tV(=%@{OqB&X6m zn$rKTr{#EBWgvBdX{{;OmW0FbKR~RKRgzglIfjgu4SiTO+c3+6SUcM=p5_|^s#;^x)LEEiWZ``We?7mr+px`IU}ik=-NI##@8&v91Mp?2rUctc23xIR2O z))*NY8xyZbIP!Uei%WIL}U<02?axuOsyG0FOF`F8Uu2i zHS-zpG~QhLqg$8nLbmN3tB;8_>PJL|h3gGt4Mqd9UhHtaEpFrW<3>ax`x%f-Vr>FM zM#RM8E-EtKCP&(+RZQE$$qq`u;<2PqF?Yv&pF!T$5EU63X_=DC9MTehV^W2;v-om} z__{6W>!H0+#JaWaTI=oKNnaNb8f!F0#*ff%}@+Janu|-x&Cr;U9_{4gb^AlkcVDuOwRn zRsNlqYX|;W2K1q^2~lC9=0ac;BrnStHCHQbXl*WvV~xc*np?*&!H6Z`e~(xB`*`CF z@qZ6v$#vu|OPW(J^XcU^EfZ>UdfowVT7Fh=%_YO|c;Anen8C8kgR2>8t#^79(!bJ@ zwW^h1x=3pp$7hkSy|s%GgXtejX=I(+W@VJPcrj^*hv^M5VS4257+j7HkBc_MgvS^y zd7fM?$?|{A>uc+atlkxav8^6x4PmP+e=G5yQdvFI>XV_?0Ed;0mPK_C*v^f)s=a&v zrz{QiAqmEREBa5#Lc&8038-d~Mp1NwJ|ZDJ-uUNgEEPVm8j^y4NjvDD(*9-me;fS2 zWL1h0WL=xJ8%%&^W5xCUH3DMJyvN1SQn3cBD6s-P#)Jm4B_y z2m{5Sl>S=s;4$&UKwdMgx^SE6E7S$jC~@o!xEE%u=^erzOdj95XVzWfmgJ zEQ%s-iHIb(O}1|Gdv(t5_Z^SlU(f4Y<1^m-{W(eIat)wpgV zSI2|6q4;)AXEOtXOk^D!n(02?OwS&~uUbw_nQJ0vd71e50HTywGVt+{#8eKr0oFQX zW=@WYoRtmnNnu2%e-VFEBFdOcd?9vsKFvfH@`U)mHxhGtPW-E2qDx&#P~rU?Hxlf& zV&SrxmSrY#R?|snS4!-T1qrUriEbY^kl@*lSnD_vyiX9_zemEv5QvbG;1@?!+?#~J z4S1eS!XImiImeQ)k|(BDn^`cEgiV?F-PufMyocYMwULCRam4D@BH<_&T)vWo6OV{K zs7ajq8`0V;Brd!~Y^@=Llv6T@DN0FMu$P!^Thh3?6MbAx`f;C$Ezy$onsTD))2L3h zOrn#Y$-d@CENlrih`LQQuK_iDgB^!8))Ok-`j;H>G`m3dy_*r%`@AiS776qauC~JJ*{= zCBi1^6oY$-UOzLDCCoH4;}(rd!@}R#(Wvtf`7W78Ps)exm%w>4h$_0!xSm+J)CM%* z;?{DSr8`b6`vuL0NGRZ_iA*7ynJCb_RuhTFFQecYa6j7#6n5_kY^DoE7%o6E(rE9KbPWpaV90NI8Bs(l~S8PQj3D<^h8V;Imtw}NTk!N zor#=J(uK)JVixr%@8oo%qqV3&a3}J!r@~Gcf8j+cNvVJrxzW>i2ypjqkl|%)2GOqN z^kEl*%PlMVKFylwj7SxY@L^bMs#uHY*I_S{D|L9!-b5zUW4bMyi4uCTYF0alxr|}e zF2cB;Jzy3|Sct_fX6bZ<*oz;`HVW>yY>JsB8%$(z?yUX~sQULz18dk5qHW!Txh{T7 zoJBw8diF4}pWe*P%a*9wIo7p@GqHogtak^v-3=Y{30jEvkFqiUV8I2Q*lY&{vD6?I z;8dTe^g9duT1vFNEn9d{hq!Qvt$iCoR5X%pR^hj}i^bQ3n+DHkyEIlrUky3z=z~#2 z{*O&$8=~0pqu6o#1uSz;6QVom?AqrvVw?7{>q}-6S2K~_6m}8)ebYpiyOR~zb|x0T zffY16M=bFeE9wOayo_Rxwj;nCSiv3#LRB;J*y~qr#Ews56(x6w+Ie#NZSlkmf2+A> z!3PjR=WtG~(}<$;%v>|hM7Fy+*Se+)(P%HO%cwk}xDw9&5@PwjSzOoo_Yh)dn#fsQ z=e(*SXV)g2PpAh`>^g4zJ-FL~HYT#phs<=d=O!FH!lvlV>`L| zSB4-n2_~|nx?J$RN}{^uT$p|$v93qV4DZOTt@J0>M$2t&?nub+7ikqyZ{T*;>58>8Kf{)KD%Qp0`~8O%8yi+9`ct9UXqY*aXwnHq z{P5Mp)J2LT7W0T@)>9mD8A>dwvEt;fUPL>#D6#@ELAPpVt|(U&tb}(s6f5p;j3;(4 zSMmA`cKBwo;>(O<#P~EtWpFkE(i2|DNkKq+Ya&zZGc&ORFNVM?UR3Y~d29n>Jc;kyY9VZ{}^ z$6XkuP{8->2#KEhn;&dlK$O>l_pO9m*IULF6_l5R+6hYH?t{GRx^H6AB>l57{qVtdzL8V zkeT7>X0EJlBD0M(GiL?AY3&c9BSrk?Mp)?mNPcrR+-to8g;N|#tDk1pT4*9?`HtW5 zG@dx^V1Cb_JfcT>KGC}>P4D9q&n+b8sp6AXmqT*WR$P2UHo69W0sjHN5tCbj-@(yl z-ueV0cFQY3WI_21SP8x|^L7*P7i_2wpR|U7{mr~R0#u+-`4dFtq+SfFz$E@)t1AC* z-pX`A^In?BoE*&T^o>6>IE2{75dKKSaH8f@Ok`aq^G6q6B1&`NuV?2F&387D1wZ2R zpO+w{_Tlf;m<`canz_=)MCSgSFGz>ge_zSp{Tzl$X(V6hT8_fud?;TyU@5Gz9bX7h zQbrkHcplcAyn`>i43Qlz<{!jjA<2&X^D}sUu{;0DNhTI{ihs=?L(%z-f31Wr6NCBJ z-@2o+3FFIuAvrBeF|*`>i7YOR|5y{>t$YUB5L?v-G_=4CFI;p2w}1zTtv&$efVDxm z-Rg1ROMDOlLItaG_-{iIknWc7KdS=L{cQqWgDPHm31VUb+^>$HJn2Oo^Al9%I@AG2 z1bG>3Ea!`$*$lV5_DImp$R+wbLa1$sfwf*=C0N&hNRxI6^^F~oECvdV|9DJn@hYL& zS$M&XM4?q74|j?YT78D!zwRcuHoJ#(T_L#MD<<~MLvVYy0|6#X=wgMy^vp@{7!X73 zk9&egparpOUxnU%@VsD`;IkctNKvLRG7k~7{Gwo()@3~0p-hy3lUQ82u<|V2v|ziib~fJsM8bw^wTPUS2^)LwC02W*LD<@;4C(NQux%SAGM*B) zM`FOzbHesNu~S2qu~82i6}il+>+&wTGA)U)@9&5-dEK;YjSlXQ4E7HPO{? zLRouvbU5z9i|5Gy9i9lUTxDd>*=8DQ314p)6YY)@6@yVl8}{>}$`yft-4tuoZ-M+j z-^?|FnF$+AWZnGCOt2Ph`y56#Ofd7Yn`pQ91kp@;(S8diel3YDI%0=UPl^sf@RnH# zVtcp2=oh++-TK!@Y1doqeeffy>-l2;>;CZn%;%!lRJc*W19942J5)9^#To1^k@a$M zMz$TwY(H`4K3`%Z!^By;W}p)4CC>WiG9uno6FJL?qJQ^(C`OCSTy@k$wy0PPaJYaX zGf-SS0baA|yBON)1hKUGVmQihPSZz>Xcl5Xxtv{ff#&m}xT=!}jIWEhY62#F_)aut z$D_5{BX0T}f_i?FxViWM(YA%+)>9f7V}ZD*FoZa9ftakXBu-}`ru~(V5IsaZ`?!+W zmv!R#uMMI5J7U&CaQjLV*|nMC6@4vYy3Hka@Gap4L zo$_GC`XNf^f=VL$i^}d93ZfHlm7dWk(Q0Rz$d1)f4!CcF{64@$w&9s_(9$O`!UUx^ z8c((}P&v%!5c+^5rB5;%oRk~N5#Cs6@^a;Ye_Y8{Cpu@_A6Wb75cSpIXH;n0AfHJfg_m_H`8Gl|GdFTSMLuZuB zr%WQ|Zl&C){)7^3y>j~)N1|?8GNh?c)mWn}MTDbu z*2=PC1fa9l$~Tn~;)tWN{D_{IrGxUvRT%S?FqL92>WUMdD&3f+h`81&%c=2Dz2TM0 zCM5(nuBqy68-+e#qKPcBw#s(LJEC8yD*Gc?z=Ij8W|8oc{cTmvHL&X2ZB;EfSaVK2 zRZ9u(bUQ%haJB0BJXMDr1gxxes*b+n(ZbzOxvkHG$n`4sL2%Q%TU9+iU}E{Js&{2K z1h`gHRi3A&p}QTd>OUO=CyJ^eTEy^CS*nTAI7f24t(ufq2fbSx)ubm?T%?-PycMya zxvFV>Es(^m&h&k?41?~KR{(p)pq^jRP*h^(tmH~#VBIbfgKUK@#zCbT2s-mlk z-a~?F`S0V<|A%i?t#09riPKeU_InZixTT7{jGY`fs51VI0k5=B9bB{yY1Utr;_wzl zX_@Num>tAwj#FJ+9)W>8R2Lur1fx}#?uEb`oK)HUOHhKjs&Y)uf1lM>bS z@ArvZR;h}|LK15iNX$6`^?%|VNma6%Xz_PRKL!i=D^;o%vH`K2q~@tG8jDM2-gT0? zG#QKnqD<<46+5`6lLq2^fGzGT4GO`4>&{C)t~Nwbv1YDrWFm`PX6E(5(zq42#D}mP-Loe2^@rn7KPzTF~wi zyk&v3AlMuClg-?nD+NzOQc25@LacH2W1lV={=zti-%DZhhhk%P(lSFbPDY-Z$UdHs zq75y&qkw22MF-8t*-WJr6Yh>~SCBTYUqm!F$wbyEQrda|k#Va*+V&i^VuUDd`#Oxs z%0=2S7!h&Ka}!y|E7C5)M9J5ry$1Ap`(bkJ11RELjADgn{+uHXN-S4N}1jr zP^c`H3|U#e#G*e**^9Aa@t295B}v(rVJyeiOF26n(OSKbZVcT+#P^eKzK3!7?vQTn zg-)Gvr8`gH_r3N=MKKWVi6c@`vM;Q9nDip}PhvflW+p$9UT-Xh?z5$Lc`k^QO{Di0 znZ!=I8l?9F?qJ8=rE+KN{6%Bw>lRcj=@HU5A5^RDs!0{~;a;Ej$P|by*)vp@svRbd zbCc^1YJl|GR<@gl=c{*_$d;zc&dp&%ryb-rrSOW}=4O7qExU}&Bli1xxx-im(ZnBe z$8+Jtwit?J_lAv8m)pqhRaP0X&din1WY3gc#M(#6ULLcF{qU2$hePD^-?=>2j`vQ6$&>p(g`19*r+HsRA+tfA zJ-rbkZ~atxzQtcet!m5u%^=dzI(cEW)x;^A%His4lv-ou$U}`#7dV*tnoMLni{&*v zB4DJqw%oKoFQKI~qB>e#|W z1G87iDe1+;rfic>^@He=?B%rk&|y$V`Ml^$?C}UW)Abta{VVd7WwlU#f0wTsp}Ww2 z@~syWi6+dH@A&m1>Nr_0I*Og0ljT=S`eA1WHSD>UN%R&r3hm zoqaIh)!)=TTnu^~IM!AV>ADUFjp^#4$&=BmomY<^T!zNOs2+du4&p;s^`y-Z@l|W} zRG+=@hUMy+L3ub_`e-6&oumH4&k^-Oi8{jGkyv?m^{O7lI48WVUe)I`+^(fMwgpsC z#?*09XiTCSnVCIW9cRD|7B*CEynmnA2DN%~F>K*(UGs#&PcwucI`hO4vNLPa-zsk6s6N9aDO z&J9T;ws(L!@2)Sgsn668ifoAO*{3!J8panZlr9_)C! zra@Ug&I2ZZ@=g-;g5p7?=-*vJb@%KM>GE#jHUFbX0gpq zlu-7X;J;uSGh`E)b+DPAd^Jl?m7&{}HETWMP@Im?tUZMtrfW3o6do|*pPCI_A>#U@ zG;vPn;T=~rTb46opLS}tzC!EvWvOQWAUk-8jlU*o(lLD4Uvsd(7bb3{IXoRJ?Xp92 zWY$ak@sO=ao{mtQIbCzg5k}PNf+p>qKSFgUGjBf8oMHH__cwF1zviOLCAjM>&7}bt zr(Sc-&GY_5%Lkdc=CO&ayPf7)-cZ#4h1WD6QDkz}FKdNnJXEkxD|lClX0%pW<1LcS zMy=c+AJ#ucD<>kbj0@CSrs96zbggBgLwL!77iBW3o>|BR{vqYPD_71GsLYw*g0t%Pu+N@QO z=!L%8tn0p*aELZr#<;C*&HSsaHruiS3tt2pDu}cBqRn>2fES{)IUg`#gPz*l34@7h zjL;TT$4bB2YKwkB*Uy5qk6hq}e7^SG(+nI|f75;sM4!N==qxvv5^Wf%tJ57Pn|z_J zVWUEnUgvbJZzAN%U36{U$D=j7pzF|hH;i4ObCsfrZQrFEU^tJ66!Ta&=(Z)g)jGQ2 zBtTbXy0LcciLx_w6YSlI8e8h7yoOsHS+ARWc0CTOUg_p7`A9VNzHZ)nsA5}x-D2@O z(r>vgc>5=WB5=A?{8wUc9MG=nUgp zu+K#1X4D-q<`KIat4q<~#fkvkiTqxeV4UvUK-BNCiMsQ}@b8n?bQgy~VvpwOvi!q{ zYF6m3Iz^yGduSrNrUkL%)NozyysGc3>+VOx{bD-kigz9)Y7uDAz3b5e9|*cHVJGny zNwmJ&<1bwwUEU0v>zUG!noP1o?TROEvTYX+%-vX^wd=Gs~CtIZ3-e%r@sCRfa z9Y-~v^li#vtT#97U2Z}W4@&fH%T^OB`=#&r^)1ofWBP9EU`rmW^xjV(>C1*TdLJJQ z{JFM%boLygE;{|vVC>-27yas?Uvcu8u3w#toh`bjk1O>>->%eetMZbpME#ywy-?K- z)+e?|fDQE1pF7$IC0V}yVz7cJu9p6CA^bdRrao(MI^sl({>COO?CcT!y~nVvhuicI zhR?&fKo4?u6^Sf$V89xsV5SrC`%_TXMwz z%})RN?SkL`e)gYFoT+G2#()cIe(TmQ$i|GsYi?~nfb!TCE=zu zi*4fP5bN%LFJ;4$jx|%7t()64rOWBsb}7cf;X=xo;vg<%X^E1hc$O|z8y_o}Dt6pg zKBeWmtmdg*tl3X>YJOw(MNCyWu$IkJ7x*xLE9PemZOGM&)zoigd>p`Z#zym5Eo10B zR?|3V4s&O|rpLzcxvZ`6Qvj=Nyfv5gVF9MQ)%|HaEucV}OjB_+pC-lT_pKLO&0GBM zp@y&tvG%UDjQi)aZdHR=8hL-#{eN$c_W!?|r>braz?+uFqXEoDJr^U+p(!+-{EX!R z%-T3QfORo_WqQFq6+^kY#}3#xGS&V#o5H20pJdmVvD#@CYP8Q}eCmKSCbu)5G_cyS zhZ|ZLz27tY)Q9g_hAQ>rH#S$3nkaB{TvNBWbAFuBuRC|ssO!q9jGMkQi`1vRxKDa) c{=#rb - + CardDeckStyleReader @@ -630,7 +630,11 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> @@ -642,13 +646,20 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">traducteur - adresse email</span></p></td></tr></table></body></html> Third party libs - + Bibliothèques tierces <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> @@ -730,7 +741,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-weight:400; font-style:normal;"> @@ -748,7 +759,7 @@ Guillaume Delacour - <a href="mailto: gui@iroqwa.org"><span s p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -2549,11 +2560,11 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Liberation Sans'; font-size:18px; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> {3C?} {4.0/?} {3.?} {40/?} {1"?} {26p?} {400;?} {0p?} {0p?} {0p?} {0p?} {0;?} {0p?} +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> @@ -2565,7 +2576,14 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">traducteur - adresse email</span></p></td></tr></table></body></html> @@ -3016,7 +3034,7 @@ Merci de renomer cette partie. Allow spectators to watch the game - + Permettre aux spectateurs de voir la partie @@ -3256,7 +3274,7 @@ Merci de renomer cette partie. Spectators - + Spectateurs @@ -3370,7 +3388,7 @@ p, li { white-space: pre-wrap; } Players - Joueurs + Joueurs Kick Player @@ -3420,7 +3438,7 @@ p, li { white-space: pre-wrap; } Join &any game - Joindre &aléatoirement + Joindre &aléatoirement @@ -3596,7 +3614,7 @@ p, li { white-space: pre-wrap; } Connected players - Joueurs connectés + Joueurs connectés @@ -3697,7 +3715,7 @@ p, li { white-space: pre-wrap; } Connected players - max. %1 - Joueurs dans la partie - Max : %1 + Joueurs dans la partie - Max : %1 sec (action) @@ -4933,12 +4951,13 @@ p, li { white-space: pre-wrap; } Are you sure you want to close the game: "%1"? - + Voulez-vous vraiment fermer la partie : +"%1" ? Are you sure you want to total kickban the player: "%1"? - + Voulez-vous vraiment bannir le joueur : "%1" ? @@ -4960,7 +4979,7 @@ p, li { white-space: pre-wrap; } Spectate - + Regarder @@ -4973,17 +4992,17 @@ p, li { white-space: pre-wrap; } Admin action ... - + Action d'administration ... Total kickban - + Bannir Close game - + Fermer la partie @@ -5001,7 +5020,7 @@ p, li { white-space: pre-wrap; } Connected players - Max. %1 - Joueurs dans la partie - Max : %1 + Joueurs dans la partie - Max : %1 @@ -5019,14 +5038,14 @@ p, li { white-space: pre-wrap; } Players (%1) - + Joueurs (%1) Spectators (%1) - + Spectateurs (%1) @@ -5924,7 +5943,7 @@ Veuillez vérifier que vous êtes directement connectés à internet. Spectators - + Spectateurs PokerTH - Warning @@ -6202,18 +6221,18 @@ p, li { white-space: pre-wrap; } Load Server-Profile-File Error - Erreur de chargement du fichier de profil serveur + Erreur de chargement du fichier de profil du serveur Could not load server-profiles-file: - Impossible de charger le fichier de profil serveur : + Impossible de charger le fichier de profil du serveur : Save Server Profile Error - Erreur de sauvegarde du profil serveur + Erreur d'enregistrement du profil du serveur A profile with the name: " @@ -6226,35 +6245,37 @@ p, li { white-space: pre-wrap; } Could not load server-profiles-file: %1 - + Impossible de charger les profils du serveur : +%1 Read Server-Profile List Error - Erreur de lecture de la liste des profils serveur + Erreur de lecture de la liste des profils du serveur Could not read server-profiles list - Impossible de lire la liste des profils serveur + Impossible de lire la liste des profils du serveur Save Server-Profile-File Error - Erreur de sauvegarde du fichier de profil serveur + Erreur de sauvegarde du fichier de profil du serveur Could not save server-profiles-file: %1 - + Impossible d'enregistrer les profils du serveur : +%1 Could not save server-profiles-file: - Impossible de sauvegarder le fichier de profil serveur : + Impossible d'enregistrer les profils du serveur : @@ -6583,7 +6604,7 @@ p, li { white-space: pre-wrap; } Server Password: - Mot de passe serveur : + Mot de passe serveur : Network Game Default Settings @@ -7334,19 +7355,19 @@ p, li { white-space: pre-wrap; } Common - + Général Do not hide avatars of players which are on the ignore list - + Ne pas cacher les avatars des joueurs ignorés Disable emoticons in the chat - + Désactiver les smileys dans le tchat @@ -7358,7 +7379,7 @@ p, li { white-space: pre-wrap; } Allow spectators to watch the game - + Permettre aux spectateurs de voir la partie @@ -7824,7 +7845,7 @@ Veuillez entrer une adresse de liste de serveurs valide ! Galician - + Galicien @@ -7849,7 +7870,7 @@ Veuillez entrer une adresse de liste de serveurs valide ! Scottish Gaelic - + Gaélique écossais @@ -7859,7 +7880,7 @@ Veuillez entrer une adresse de liste de serveurs valide ! Vietnamese - + Vietnamien @@ -8620,33 +8641,34 @@ Veuillez entrer le mot de passe à nouveau et réessayez. The game was closed. - + La partie a été fermée. The game could not be closed. - + La partie n'a pas pu être fermée. The player was kicked and banned permanently. - + Le joueur a été expulsé et banni définitivement. The player was kicked, but could not be banned because it was a guest player. - + Le joueur a été expulsé mais ne peut être banni car c'est un joueur invité. The player was kicked, but could not be banned, because the nick could not be found in the database - + Le joueur a été expulsé mais n'a pu être banni car +le pseudo n'a pas pu être trouvé dans la base de donnée. The player could not be found. - + Le joueur est introuvable. @@ -8701,7 +8723,7 @@ Veuillez choisir un nom différent. You were temporarily banned from the server. - Vous avez été temporairement bannis du serveur. + Vous avez été temporairement banni du serveur. From f310b76bca205a9dbe9c3580259ba76a6962558d Mon Sep 17 00:00:00 2001 From: doitux Date: Sun, 24 Nov 2013 20:45:57 +0100 Subject: [PATCH 107/128] gd translation update tested with 1.1 beta3 (#231) --- data/translations/pokerth_gd.qm | Bin 155381 -> 155352 bytes ts/pokerth_gd.ts | 3183 +++++++++++++++---------------- 2 files changed, 1522 insertions(+), 1661 deletions(-) diff --git a/data/translations/pokerth_gd.qm b/data/translations/pokerth_gd.qm index 99497274301dcf89acaff8366d5c20f0598db5bf..26c18447a84d5bd4cf0d8a2448873dea94fbf0e5 100644 GIT binary patch delta 7996 zcmZXZc|cA1|Nmd_bI-Z=p1WpEMIw7r$&xK)SENKngPClVr5QqFsf(;3B^6~Edt@zX z&sMa_u7yu1YZ4**Bjva@|=Pf`s>L#yeInODzVOHdUAuxiSxXL4@Mgp609d1x6Z(c%?+Hk zocL{B;lV3V#9Mu*vb>L=w;yhA0+I` z!~JXnhkw_T8>l8B@lRsC#*lCp6EKm4l*eEgNqr|1#fc6h&pb#OSHTXS-!=NH!Y&h zTmaFpA!K#)Ix%B&vP*kStaVp%&|!hi18Lxf&cr4s)94uJcji7C6OZpw+R~WZMxwMO zH1>UGqKk7tXYeq&==w$D#Yf}p2+>b#Jy}|yfn}Y@I|B>_o(K1{&7(EtRm56cqEOvsNM;vpmOjOME_MrE#!@LpD4km7qMa^O7PxKlvz&4*JHbHZ7FF>I#I#zl-dPy*?yAJ zXJPcMIeN0~!zn%7j;K#1U7iz5%+iTUF8C8=#L)x6k!Z;U;S_70h=sItXT~;Xh?B-J^9_B8w$~W=zMY=zClu@Z zmRXK~80}{=hn01tceZstT*BiYblcEoZwvQhovV~-{?ub}1l;4_={ z11o-J$pWk;#BTl0me_P4`f!3R`%+DGw3aPDsX-99#UkoLiC%}W-E!O;d$N5k;gjoU zvV*EN#AHS6>?3cYm3Nw`BbK<0oj;2m4;;(#{^~+h9l?qkGKihYXT_@mi0d<#-4YHG zea_aCz3Rgrm=7YBQp_H7yGZPk2YWaY68KiY9`8jox#G&6EQ6{R*Ra|*gNfa6VBeqK zCmLYEY4_|Sj{C-S3qC>2c^_wEtIHsYT!jm8SAd=@V-{!I(w=BG#|`l=A=>{t=Xe!? zJG-76y0{#P;7>id0WCSVrZ_qL73Z~jIMJSOoKHD?E4YiEY(mHX$0%;*Nk`&_26MiB z;3~OyxCI|R61zK=TNL$6+Di9~3odUYGOy>>XlD`g3^6eFGZ)bqNNhwuF1~v&B%drU zA*_a2+7a$Vmj? zgyb?}JMKy(+Z>7A=_e6qW5Lae4D6O85p|P^wfB>>JBopOh?35VZ*Y!yXz?Oe71MqR!X-k_DHW_)@Z@0Qov$ zyn)5IFRg%S%#?%%G$(SFO4d6gj=%0H+3*(LW|bg`nBM>sY9)!>hwslFm&8~$BTCjt zV&;1iE!0Z(O$jH~wor1W`66PEO(bXRJz;};oFo^1jU+n0M{;c$Ch&Y`;K3}(gRO81 z+X_iV%syhD)=O$LbBI&ymwcXgj#w)XNn>yUf=)Is6ec5TRq4rES{r!rJ}(V{Gkmk- z71KKs^UC9!IY3n=R}8Ej$#<>NLAO$OzHjG^#5(-N_iKe>qvK@Wp-mF8!ruJAw!ere z3wS5Nl34T~{P0rPV(Vaj!~lpicQEf^@_^{!Qhr8b9dV9BdH<<5iJt$#&p&^V*wp}j zaZU+wJ>vPmiC9QuSAKPJ0I{_d{FZQTn{#Lz~#fj1T<^-M=v7*S&yy zC%Nz&BoNuJ5B!F#Xaqo4eyg2;RN0%~UI^n)tL3A3>^$s|fjckg$tEu4qvv-ex)a3j z8jbO?YWZDbvxqiqHgJoXfjd9(x~2!rj?@3Zo)z%BB7P#0&fs@Uh6@)1-!22c<9-E*OlNiiYy>L|e47A5C2bXa;&uiOH1I8+Z|aK)RQ^SFwjjG$e;2EA$IB}ev}Lw|(T00A@i_k=yBRU@Dqq^L20FjOmpMSS z#S8heaqHn#)A%w-k_t2UvP*DRUC|W2EEggxSj<0)!a@qm_*a>Dp~RhkW1}DzyOgix z&!Ji|=4)lpWzssn_Nz1QWBB@C$Vm|+4SXM{Cp#I(e{6~G4&4Mzi5>0$_Q1UrI1mg5 zPY^qj2^Nx$9Wlm51%B`cYw$rJ2o)U8k$b{3kAhS7+IN_pxO<$EH@Q2^KK9mltSw;7;AZzVA28-O(_*R#124; zm?L!l=L!5jB2DO)1ra@ZDfBGk;ZC=Oo(=H(ACZDXw{oH@MF?7=K?waM1ntF+ zwN3`UIwWjqfIojX7PgMU1gA`etyyr>dV3)v0Pi;o5q1`}BI=zY#Ed#Ztece(-|0D$ z;C5lp9?Wy5y|8y3B>G{2uvd2+JKcCsIQR$;b~_4(7OX_FI3yg+T!F&oq@LWsFyYvm zbts9S3a2u1P(JMuk{kkvGk+(fPpl(uNJk+nvVa(OOUTOai`uCyS~S zs^;|~_OMi_UL8(!zf^eM&k(nwBKM4^aM^)C)WU7d^|9 z`jxgvJu^%?kJS;G>2%V01?`DhuawR|I)hk17wN(uxrlTF_2l|TN&}r;h_=}o7_&o9 z7GWY?VtpAk*^xiHgGtMZkTl2 zOw98&SsGig5BYynjdWK7Ui?`u-CcPCrJN{@PgB7NJ*9`sLWt|^DNWKg5@)?insM(o zQTk13))U;fbe3NFf}|wzmR?(KNp$Q_J=yci((Bq*#HNz8a2RxacBAy>f~mx&tEKnV zIYdS}>4Ts{#E#cX9}caA|9?3keUyy_3}}>AXPFaQv0M7``F&#XYH3ZnBXO!;(zo04 z5V;i6?=2b8n!jX5v7fNx8dJc44eQ?DaI+4OJzvf&FBqF?WeY z1<5KZ5Er8^%O0W^rp=AA|DEoLaMoY;v>H(%_LQtzY(|`YD_J$d7sXAMJ+Fk*-d`zu z+b9w{y+&4lMvLf?Ci|HWQ@#61E;-Ty%f2*7u9>zT0o7Y>?7I&du9BN3hoHG?D{r^Q z8^!(ada}3{a`XM~5Vk(ZEzV#8HAm##*1-qPS;@PrV7gB(%B?t{YgkOJhkTQ+nkdyzzWEQFaqRMw zhxf3<#JTeA#}Mb##`36K?Bx7IdF)FJcz2upfmIebnzM_%Ci6!q09d0`sHNr{mcyF-=rVe;Z{x(cFxzvPwE5sr4J zi_9*R*d?_ne;Q5{S|naHwqH8`j@X|~i zj|QJbED#q?Da$m!0yNiYUk-F|`#hadoiTJtVt@ki4-$CM?BhYE@FXH_wIQi5l z@nIMwTe4q#m^1@9d4%{n_&BjCwFVZ&inTG7ME!Nc#djt4Xs9}i@0;flyV+ZOKkhzu zJVC6tL%bBC#4m9uM;_#fU%gO@jy@%R?|>Z(3l+2sIq)}sg=mB@WN}#0c0xyDE|V4Q z{osDF;d-+8LWNy-*idemqIWgC;^k#MxmL#&_ESqxF)o>-=s#UTv|y5Az{Rx?sjDcz@U6JZzJJ?^-Elt%dHtg(+tH>QKmdo1o(F%*2hAz zxcNOq`W!`IH;8mrl47}0IB{JB#ad+n>Zr+zb*DO^RK0274_7@|YK3C^uu#O^bVYO+ zj5n`?Lhr6a%M|}kNhX@xS8<>Z#;Xib9KyK{OZQSFObyTxXPcxr?f4yTvPVzWdxau7 zyOP+-zZ7XM5M7F=BBKI2)Ojc_Nnsm5dMNT7ijWy>71uYmLL4wv~@vYIExVDyx zAN}jG!XiCc@h2r`+Zq1fLn)cl6`f?UlIO9|#2TfrIET0v(MoCG9AY~nl(J53(26cK z@XcqX<>=eQ4f>(%%0XqW`N|%qQonbz|V4m4b4R7mTTD zx^kGk7S+OD<;03YYPL?^%Ddo0dkf@!Da@**1xSfqMss~i@F-NJ3-hj3v z{BNb64}Q~=#ndWeD=KiHWUky@30rt>ri@#G9d|gXOk9bqcYUGqoNpy;qD+}dFh-e^ z@@kiAqT9`sc_OkN7pcsfmy7rjp)9a~3Z4Wj3;IAsHCvPg)4M}uca=9nGKghW>Xap= z(CMlp%JL0vM6TVGj~<%hK_BH~s~N;e4l18K2_ddih_cGpj+pl~<__Mo~f+2`k+jSQrTU_DZ#Ie zs@_dK@Sc2CzkVplE*h%_Z|RJ>p+M!>9*pT~V4X_k=(icNBfnG;!=q7&#;YRIu)+Mjsz}Lj81s46&Y_U7{dHBe z%_Zc2M{8BwW`;Aa)~fh7uu|zis$&ySL-(AaN}PQTAC{?3y1Ef-{7rS*A0qcKSDjf{ zgTEkDtCIW?l5fYT(t5#|Y=Tr7?*eh2^4P#POH`Q*_ZB-1JbPSq#r`VdLYeC7IE-Tx zpt^M_5cz*c=cWs!-`0Av$)>6oC7w7pDOP<%Y025ys)cSmvfm=L;NB#e|EXmy>WJ;$ ztX6cqjY?9cRwN+6_$8^0Q}O!@Teb0nd#DG7scn|Q{ibwRkC_;SLhzlQEM}>C#*B`{ z&PA#NR_dyVg}qcS8izc++DIJ~1#52mK)uGzk+_a`)nOObp(Smr-ZgJBYUp4C-}CB} z9y!GJxvDQzeR#7*+*WTk!nIT$4Pzp-$(?WJLfh7_It2zEHd$TJ#Jbb!0^{#E%}dpj8?-`Q;D7;dY*QD0z=VB{t8dKo zAZn#iKWK)9wyae@{Pi5Y^BDDG`%2<0x2fMf%OS4!67{!bhj5_ZM`OIZnrQD`jhQo! zF9lPLWv4P!MjbV_xA1-UAsSup_xsR*-PQE(e26Guh{i$O1o!%+8FvYR=|G@n!d+wH z24`xfkN{N`Xr{OCNA%!@W~PNBQP=gFxwUYs46WwxtQ|O#x~W;T>La}7r)JR(s3Liz zW~KBS((qGF@ZL{E^9O2HTRtO3f@Z^5c*&&mI>SZ1kDlDX6wTJrPZ2mCYNGE~;>D?& z1A|~(!Ta=N?sCnU*b-tN`f8F@Pf>cE(WKlSi3uiZE{?B8(;ut3RM~(uep_>85+wHB zMsqE24N>c(ntYp3^kboVvgaNkHhe`FthuqMX#hb}u?g-M)j?DF?@1!-o|<>VdJrAa zX+E#HfO7ny)+iUDv)^*9Q3)3GL8@&T*N9^dt=8D4FR}M-+78XpN2ScwTG^N*?b;hy zH$`jx!XJHwTHCuG#`?b}TKija&MpXcGk>DXoMfG>4KXX3O@kuaty%e3xQ5cRF` zS}(7@aLaJ*?*(Y)ozt}IgF_LRwrj&ZzaZ8>(T3l^&ek5%Mpwg_PPNhQY4VagKeUGz zjwE{jRh!TQp}2Xb_Tt&mM5f8wE5Q)RZ?nvWkDJEEgNdu#t6Wga|En+R4|Nq}(@w-u~n9P13$=qV+d}WcCtl=wb*Gy3jJa^~5-}n1{?bmgR)5N+oacf(BED?1iiikII z$7TcB==(;F`_0HH@4z0!UhW1xh~CWs#}hS#6LCxMe4vp#a6hiul&eIt!NjIXM8a5N z=9va^eRmNJKT5PL&p@UhgLS-oa0500a(!h)|GP=dT4^BH{{wMe_wc|NBZI;WWTQ72 zIj)tFQ&thbc>^)iLk4orX2kCgAWF9f*AO$48QJNlk(D|F^_=q};!lSVW%&?)PbA8- zCBC>f(Vc?^vK@noe;rM1h?@BKtBLNqk)Xu=k4KPTv4>c@S4MWx8^}55k*vCC2 zICmj>;X%TP-grKN1dq!^Z(ft&7X%6RCSm?gJ<*3XBrM&58{U$zd@He`7fIN}6SHh% zWQ~@D*eqOo8aWgT;F{}aNy6#hiFL<97w`i5M#AN1#8@E7{h@~4I+6!IAa-IoDQ2Y; zGx;AWijEQM5lU)j7h>Fhr2Ac8M{L_XGK;JsS`KATJ?6)g4JR16*zMn?y!E={Y zG$ONsD9MjTezGRY7!SIFQ8Y^5XD4oaN~1t#=49mH(KKqtGi>A>xv64_-TFvwd0@_5 za{C0G-r7TB0;fSm)-)z8g2>@Gc#|lup2obv!ueU`9(4qzVRxt z+il5X6b}4o3h6zvEmErZy0BNFuL5sOs5p@(Mcy zorcr+#uo?OqVbz>fLCrbK6@1yO5^{#0UiHA-l1!u<45G3eTcZ;=gDWz3aHkCd?G@L zJ{Ho%HJ(IYuIOo!KSWcXM3d(KLhMQnO$z%#tT=`y#la@J6L^g1M_U6~Qh<@g)-)*v z8~@=&ldeJJ$rdzu#(n7i9h?WcmVD{=U$F7kN+YXGX@T|<+?S(;kO-|hV<2ljajEe` z#&KF?>qj)_5UrjI_v;Z)AtmL+nxCgI{dGuY9feO^L3HvPZM+D7PrFW=Y)s$0eNseRpDano``P14LJI=;T@)x5|RzHzpJ1j-td) zkW1uwO7_F*n=%b#k;5o?ivv-wGP*u9hM1Kd6HBOmqU>2z-w_XPSWop^-HG}iU{Zq?H?}sA zwK&1FyAhgBw_{CA4-oq`mNmHnORC$;nw`c*OgvaC`}4%fPcrlH-b9g~jQpfFkewOD z+W&xJ{Xa9SUm!-u>CAa$HR(Brhs-(k9C2;VvH|YqMBRR6gN8T|%UsWfIl;%C{=&SM z1>%8!*pz><z0eTXJEMziNjp{m87*oXH6 zh~@WX^)CvE`dV_jz59uisX3d~r--?3O;sY2PU?5AG!Syh4B$}b*22Ls< zI^fH>+(h6`tK|kQEis3II2$f_;|N!}s~2q0E`xi)hY%~3b5+A15DnhOeak@*`FjWV zJu8dIPm+;RL2P@GOt#sD*aIh-I0GAQdfP~wbeX9CjhMx6vUbO@aF>5%*3x%4#{yZG zCGNzvi;_9qhlzX*kc}*ULF|QEHqI=9SVt!V^;~~z*_`TiL}q5P`HfNM+ZNgU>y0du z1>}xJ*z_{;4z3@U!ZiG3VGElPxyog0T@lCMwvmNb!P~m+lx>|?2NU9D+xFx6i?On3 ztENQp|H-1~c@ZsWA=~e>1>rVPcD~snV$V!v=N-LZgL_?N*-NpoSFMqU(_}@P;0!%V zWu?*kiG7KceYl!VoD?tnXYNH}Ee6XPR_79(I>QTj35Zs23}hy4jm#+G<){PbyCpA8 z?Lf>shi~c(6`7qk^1}qab2(Hh_uzY5>(>!$KZWnp0!2oLA-uC`Jh41SzF*s)#8gTA zV8M#m&foc=k70u?=kmYwg(x$-@t$TyL{Db$(;BLYa~a3anRu6|(w(1o=`gXIfAEXb z3yAA_j$bkk8)<0C2PZ5f7Wy|IQr?{C&trVp)EZPgulTU27*V5__%*NK&GCKtaM>2( zNZ`X$kvBGZ@|zq4WXASN+M(#*8kd0fx@0{0}=)o*Lb~sEY^$8z4 zGLVr>-Q zchJemstsU0=~)|pd_ZDr69YDYw~Va13PKZYzVfFd8EmJskyTZo47JB~5XDeiA5aOd zLXLkwi&&hbTQO^J!|{NuV1sQMyb>DpLSnf~_@`0WNL~s5=Bgey6b$0u+e^e^mhvC?izrUy{09Ye z8NY=8@XZz1Yx$a=NI_fOjQlj+Kz3#i|Jel39k~a#CU&#~*cI2dU_USjJVoqSDwqeF zf^fEDbHR7GKY;(NH>t;mZ2p@U;!kBh|6gPLc@rnl?FQnMPJ%q{5bDEyg5nC|iA9y5 zM9oQ$lLcuVjI3A^)Vtt~C8D66n@^0d7g|QZSWE5;X3Zhd%h^Kvn7+se^91YV&xvil zD%hk#LQjhX+hQJ0bWPCP*1_HX4HlejN{F7%7o1BFL0j4g13scEsBjeqnj#K;sS$>b zjv%(VP8hnh8L?O6g<-?-{mT`C_de7XZ>xlf1z9L^Y=zkaeTg303A0By5WPPt%=bqT zU}KEhI)Ux=z3^up2}(8>L8!m{1pG+HApxzeI&2`yA0&|?GsLftU(2QPdJ;B zj%sP65bwMYqUVI@B2j%SDNvA*AN?CMLTjq~QgOmkGBv`l39s74kTDTyAmfGSLzbx#eyb;>6bSu6-fG z&(r00%it}4<;wdE@I(t>FCXmI9tGSf`LHveVI$^pw>wJ^2|LN%{ozF~FUe;=wm|vf zAfL;siQ4Gpb8{_-+0B;EJ3fur!Y=X!|7ODfO*=P!AkOKie2MEQqRmc5M#mb+wzicA z*j+~nxn90{$x-Yv9FipPt&l0z76t#l~--fLcQ=^ zUT?yPLjF=TiTQ#PzgIN}Og?Bufl{?!N6Fjidv=)kqj~!tH)rx6{Ac-9r3g0Ye zR9gKN3-3Q8N|>(rGxQvBO-vMjUPYy;zo7{9>q#u`y<){M*wF0}mWtpqe6e}2k#VOK zYtCLLmdz_R%$h;WGbzfhX)FB`#pz8I#0F~=XJ5GxJN{B}Wu!pt?PNv18iMU-rFb0u zkXY0TMQJJGW7I9hlU9&R1h4q}TnB`;PKp;5hz>F56cu7q;v8)h6$oRrd$OXk49;7) zN>SAy5<3^Fs5!4g6gj5&kpq)`SfP|1YmRMS>#EdFS&P6rQrXIXKQw(`**YNzJ(Wt? zZto=2^u7kN-6l%&10NB-UMMZkV*~GYC~elj7cRC|c2UEGpPy59<6yckhbX&=@R{ee zO1qrK?P0k}`;GWIg*sd9sING)EhDp3w=7))f}LOCL7 zHoDSPO1C*!_~H-cI1K`|Uy#yoJ)!R|QO+o6gEq`tIitLhr{cNjZDuPAJe* z88E6hBzi}=>|ibW_EKd~W1oIynNq(l9ekh+`?Hbu%5~Lm^_VyeR<74q5GDF3H~bHy zjo3NLEnOXuBNLR7ClK#6a%EH|PI4(v8S@$oK3t_dvtk=&GJ0i#T{W?N?Ul(>4q$i` ztGuxx4C}-wZ#@4Ge6GA%0^d_DSLV9CK%KQ$nU{ohF0WPI@qj980+n~Z>r09H{8W}r zMOfOEAu@+BV%M~y^2HXSu=}EJ3N}(cRcsQp0|C2-*d-AgvdT5GrdS-<$rF9IPISw` z0bWbu81(gQ>oRd{5Z2q%QuKCijlNMdGWv&sY`5OXS9#*^`i<~b{}9m^53tw1qVFBd z&A9fWpBg(&ZZ7&YrkI*5qJIXM_g-8OkPdI}B?gpxql<|(@~TYytM^SfalQE0Y7hLs z+{mlL#MQHrIUcnWgUsF%bJU3XM_4C$ycn|B3lohrQNKVScqQ+qKt^DV5_RLnbo6!x%*c-QMF5kE`3_X)=3?L#%N?+!T(BUw1bnR+KG%^F~QJ{DN5D9w!#2NVF8WaKd~^Y=SUknJBd#+kx1q z36jNZxL?c;1KFP2l0z5RP-dXivjSf6`kH}Ui&V*RVgWIIz--BBs*Gs{~EdTfixoFFtL&QCHJ8SysZl*4XJw@`_XN8V=rZnN7 zUYM5DN|Wlfm{k5{S~#a8v0fT! zakEE=`03IT8;H~|NeXPTg}6?pQm85y^^~`?=4?lltc6DY+s{Cj_(X~v5{AGVC+&=Y z@n$uV4DLFpSUTvFKs2krbf_2BD_bBP!8nH{`$%yU7wU=YktLmTsfU{!Hjwr7mlD#- zh^<^KC5?jUE)S7XN})r&k918A+xT~&l;wOInZZK3wXOx?fGFj}Ky^FIr3Y{Qh~^%W z3g`byG%!PYasdY`o-DmzH45J=r7AfjQukTbf3eRJsYs`S0VoVd1qq<@`i zu)`Ds*_}ES*TWkAZ>EyX?2JY-S;h0%=;;!bus9vVfH;-BcRI1{Q7T18Q*@%!jr<_0 ztcKqwZh%(RnS;vQ@>N}1mtee;q3ZUvgj&ROlc|RNEWJHWw3=xNws?gPTW32b$TVT-mNLBi~eP>iTA3j1Y=Zqscv?v zAi7VgED>3c3sz;#%|!d7SLIql1W-7Ff2{?MqqIUa$rJXG6l@Yk0g z@ZMZ?pFSweGECJ2Hd>=@$WgmkfYCNaR$HiDJp3_4X6nJqtPmL|7|6z~H&VZ;o!WJP zIdPgj>d}|diO&70cJEP)=KH96@-}3{v|#oB{zDwtov&Vedke9jcIuU_529|eQm=jl z8(C~)AnW#a|IgI7qd6>(HGjNh8!-lW@SCP3mp3p)lqn>K%h1VaH4Ao%Yv| z|6T0VyEic6nsrg{c@Ha<`>RikwIF8eranF6A|AY@KI7(2tYMz|+#HD9(@K4Q!8`nL z@Kzl^2O;_XT6I!)7?b@nb;`#j7^mDZ^8FI^RfcQJ5F;;~Qr~dAiMVh}eRDL{v7fBI zcWnvs|MqT;ACP|A8pwWYr+!u7g}M4w^=FipoWoF!V8bK({jL!_8YNSvQ8ce6wktv- zb+`{N_(vnfA;8Q|(zHs%|ED=>S`|G)Jz%e~Ukdm0vDJ(i7llHw&OjEuR5NW_2Vxhu zYZk85mlKP4r&%-_c{;eIW?2-hx$Rp`h`S4M9bRc7uB<_8YN3gp`x|QMAR|Au(p>JE zPHg{Z&6Nr~e|EYi@hDDK`&pBcXht-1nCAMyZ3sLMHCd^J#IA18WWBkL0wzS0y%`eC zchF?tK|l+hrpeVySa`?~O>QHruWNE!)nkZv)IhHPW=$@B(xUuTn!H-PuvfGuf4V18 z3$3Q8DK={IQ}g6!C9u*K?ib`_dzr<6CK4?W!Q!SE6m>im9d0 zT5Hv@7?n{|ZI63+zKe%e-}BRcG-9u`PS!_=77o=qi|gTDb=uL_5SR`HXvaRpZ*2n# zv_2$2Rd=;hE&31@6>6tjx)60?vo}ZDwKTGN zuFme&9P|}hUC$aA>)&^Ej`tvm_ZnTV$}Pm{*&|)wuhm57H|Pd$gE9F8>O9IJ>U#rp z-rl|8mWOncbJ5kiCh69$4ntrH(rxkjiddho+meryg`U*ytbj3{Rp|CMddY)#x}ytz zCHnMQ7uOY`xY;RP#)aWTtrK)NR?CR?@6%-#m*BpWx@^xh>cJGtb$4U2vm9$($#WRj z`!d~ApG7G2N%sz;a+-Bf_hZmQG*(mR5I1;R!X)!^)1%%+YNA?%+-lkcKL`8L9OM9h zvZNXGN5bon=EI^U - - - - - Selected card deck style "%1" seems to be outdated. - The current PokerTH card deck style version is "%2", but this style has version "%3" set. - -Please contact the card deck style builder %4. - Tha stoidhle a' phaca chairt "%1" a thagh thu ro shean a rèir coltais. - Is "%2" an tionndadh làithreach aig an stoidhle paca aig PokerTH, ach tha tionndadh "%3" suidhichte airson an stoidhle seo. - -Feuch an cuir thu fios dha neach-togail %4 stoidhle a' phaca. - - - Selected card deck style "%1" seems to be incomplete or defective. - -The value(s) of "%2" is/are missing. - -Please contact the card deck style builder %3. - Tha stoidhle a' phaca chairt "%1" a thagh thu neo-iomlan no briste. - -Tha an luach/na luachan aig "%2" a dhìth. - -Feuch an cuir thu fios dha neach-togail %3 stoidhle a' phaca. - - - Selected card deck style "%1" seems to be incomplete or defective. -The card picture(s) "%2" is/are not available. - -Please contact the card deck style builder %3. - Tha stoidhle a' phaca chairt "%1" a thagh thu neo-iomlan no briste. -Tha dealbh(an) na cairte "%2" a dhìth. - -Feuch an cuir thu fios dha neach-togail %3 stoidhle a' phaca. - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Singleplayer games with up to 9 computer-opponents</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-size:8pt;"> with result tables</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Einnsean poker airson &quot;Texas Hold'em&quot; Poker mòr-chòrdte</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Geamannan aon-chluicheadair le suas gu 9 co-fharpaisichean coimpiutair</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Geamannan lìonraidh ioma-chluicheadair<br />- Geamannan air an eadar-lìon<br />- Eadar-aghaidh a ghabhas atharrachadh le gailearaidh dhe stoidhlichean air loidhne<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Làrach-lìn rangachaidh</span></a><span style=" font-size:8pt;"> le clàraichean nan toraidhean</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Project page: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Authors: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, engine development</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - basic architecture, network development, windows package, MacOS package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Duilleag a' phròiseict: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Ùghdaran: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - beachd tòiseachaidh, dealbhadh bunasach, prògramachadh na h-eadar-aghaidh, deasachadh grafaigeachd na h-eadar-aghaidh, pacaid linux</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - beachd tòiseachaidh, dealbhadh bunasach, leasachadh an einnsein</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - dealbhadh bunasach, leasachadh lìonraidh, pacaid windows, pacaid MacOS</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - a' chiad dealbhachadh grafaigeachd na h-eadar-aghaidh</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Singleplayer games with up to 9 computer-opponents</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> with result tables</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Einnsean poker airson &quot;Texas Hold'em&quot; Poker mòr-chòrdte</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Geamannan aon-chluicheadair le suas gu 9 co-fharpaisichean coimpiutair</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Geamannan lìonraidh ioma-chluicheadair<br />- Geamannan air an eadar-lìon<br />- Eadar-aghaidh a ghabhas atharrachadh le gailearaidh dhe stoidhlichean air loidhne<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Làrach-lìn rangachaidh</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> le clàraichean nan toraidhean</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Authors: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, engine development</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - basic architecture, network development, windows package, MacOS package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Ùghdaran: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - beachd tòiseachaidh, dealbhadh bunasach, prògramachadh na h-eadar-aghaidh, deasachadh grafaigeachd na h-eadar-aghaidh, pacaid linux</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - beachd tòiseachaidh, dealbhadh bunasach, leasachadh an einnsein</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - - dealbhadh bunasach, leasachadh lìonraidh, pacaid windows, pacaid MacOS</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - a' chiad dealbhachadh grafaigeachd na h-eadar-aghaidh</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">for different popular avatar picture resources</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for people avatar pictures</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for &quot;misc&quot; avatar pictures</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different gpl licensed sounds</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for self recorded chip sounds</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different patches</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for internet-game-server hosting and administration</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for startwindow background gfx and danuxi1 table background</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for moderating forum and organise bugtracker and feature requests</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for new table sounds</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">airson caochladh ghoireasan dealbhan avatar mòr-chòrdte</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson dealbhan avatar dhaoine</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson dealbhan avatar &quot;measgaichte&quot;</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson caochladh fuaime fon cheadachas gpl</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson fuaimean nam bonn a chlàraich e fhèin</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson caochladh patch</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson òstadh is rianachd frithealaichean nan geamannan eadar-lìn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson èifeachd grafaigeach an sgrìn-tòiseachaidh is cùlaibh a' bhùird danuxi1</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson obair-mhaoir air a' bhòrd-bhrath is rianachd a' bugtracker is iarrtasan nam feart</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson fuaimean a' bhùird ùra</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Click here to view the online rankings</span></a></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Briog an-seo gus an rangachadh air loidhne fhaicinn</span></a></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Create new user account</span></a></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Cruthaich cunntas a' chleachdaiche ùr</span></a></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Note: Best quality with image ratio like </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">width=48, height=76.</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">leud=48, àirde=76.</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Note: Default </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Game Settings</span><span style=" font-size:12pt; font-style:italic;"> like &quot;Maximum number of players&quot;, &quot;Start Cash&quot; and &quot;Small Blind&quot; will be used </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">from Network Game Settings.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">An aire: thèid </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Roghainnean a' gheama</span><span style=" font-size:12pt; font-style:italic;"> bunaiteach mar &quot;An àireamh as motha dhe chluicheadairean&quot;, &quot;Airgead tòiseachaidh&quot; is &quot;Small Blind&quot; a chleachdadh </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">bho Roghainnean a' gheama lìonraidh.</span></p></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(This nick will also be used for the online game login)</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(Thèid am far-ainm seo a chleachdadh airson an logadh a-steach dha gheamannan air loidhne cuideachd)</span></p></body></html> - - - Preview: - Ro-shealladh: - - - Export as HTML - Às-phortaich mar HTML - - - Export as txt - Às-phortaich mar txt - - - Save as ... - Sàbhail mar ... - - - Delete - Sguab às - - - Log File - Faidhle loga - - - PokerTH - Delete log files - PokerTH - Sguab às dha dh'fhaidhlichean loga - - - Do you really want to delete the selected log files? - A bheil thu cinnteach gu bheil thu airson na faidhlichean loga a thagh thu a sguabadh às? - - - Export PokerTH log file to HTML - Às-phortaich faidhle loga PokerTH gu HTML - - - PokerTH HTML log (*.html) - Loga HTML aig PokerTH (*.html) - - - Export PokerTH log file to plain text - Às-phortaich faidhle loga PokerTH gu teacsa lom - - - PokerTH plain text log (*.txt) - Loga teacsa lom aig PokerTH (*.txt) - - - Save PokerTH log file - Sàbhail faidhle loga PokerTH - - - PokerTH SQL log (*.pdb) - Loga SQL aig PokerTH (*.pdb) - - + +UTF-8 CardDeckStyleReader @@ -509,6 +109,436 @@ Please select a card deck style and try again! Tagh stoidhle airson paca chairt is feuch ris a-rithist! + + + + + Selected card deck style "%1" seems to be outdated. + The current PokerTH card deck style version is "%2", but this style has version "%3" set. + +Please contact the card deck style builder %4. + Tha stoidhle a' phaca chairt "%1" a thagh thu ro shean a rèir coltais. + Is "%2" an tionndadh làithreach aig an stoidhle paca aig PokerTH, ach tha tionndadh "%3" suidhichte airson an stoidhle seo. + +Feuch an cuir thu fios dha neach-togail %4 stoidhle a' phaca. + + + + Selected card deck style "%1" seems to be incomplete or defective. + +The value(s) of "%2" is/are missing. + +Please contact the card deck style builder %3. + Tha stoidhle a' phaca chairt "%1" a thagh thu neo-iomlan no briste. + +Tha an luach/na luachan aig "%2" a dhìth. + +Feuch an cuir thu fios dha neach-togail %3 stoidhle a' phaca. + + + + Selected card deck style "%1" seems to be incomplete or defective. +The card picture(s) "%2" is/are not available. + +Please contact the card deck style builder %3. + Tha stoidhle a' phaca chairt "%1" a thagh thu neo-iomlan no briste. +Tha dealbh(an) na cairte "%2" a dhìth. + +Feuch an cuir thu fios dha neach-togail %3 stoidhle a' phaca. + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Singleplayer games with up to 9 computer-opponents</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-size:8pt;"> with result tables</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Einnsean poker airson &quot;Texas Hold'em&quot; Poker mòr-chòrdte</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Geamannan aon-chluicheadair le suas gu 9 co-fharpaisichean coimpiutair</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Geamannan lìonraidh ioma-chluicheadair<br />- Geamannan air an eadar-lìon<br />- Eadar-aghaidh a ghabhas atharrachadh le gailearaidh dhe stoidhlichean air loidhne<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Làrach-lìn rangachaidh</span></a><span style=" font-size:8pt;"> le clàraichean nan toraidhean</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Project page: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Authors: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, engine development</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - basic architecture, network development, windows package, MacOS package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Duilleag a' phròiseict: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Ùghdaran: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - beachd tòiseachaidh, dealbhadh bunasach, prògramachadh na h-eadar-aghaidh, deasachadh grafaigeachd na h-eadar-aghaidh, pacaid linux</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - beachd tòiseachaidh, dealbhadh bunasach, leasachadh an einnsein</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - dealbhadh bunasach, leasachadh lìonraidh, pacaid windows, pacaid MacOS</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - a' chiad dealbhachadh grafaigeachd na h-eadar-aghaidh</span></p></td></tr></table></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Singleplayer games with up to 9 computer-opponents</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> with result tables</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Einnsean poker airson &quot;Texas Hold'em&quot; Poker mòr-chòrdte</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Geamannan aon-chluicheadair le suas gu 9 co-fharpaisichean coimpiutair</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Geamannan lìonraidh ioma-chluicheadair<br />- Geamannan air an eadar-lìon<br />- Eadar-aghaidh a ghabhas atharrachadh le gailearaidh dhe stoidhlichean air loidhne<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Làrach-lìn rangachaidh</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> le clàraichean nan toraidhean</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Authors: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, engine development</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - basic architecture, network development, windows package, MacOS package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Ùghdaran: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - beachd tòiseachaidh, dealbhadh bunasach, prògramachadh na h-eadar-aghaidh, deasachadh grafaigeachd na h-eadar-aghaidh, pacaid linux</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - beachd tòiseachaidh, dealbhadh bunasach, leasachadh an einnsein</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - - dealbhadh bunasach, leasachadh lìonraidh, pacaid windows, pacaid MacOS</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - a' chiad dealbhachadh grafaigeachd na h-eadar-aghaidh</span></p></td></tr></table></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">for different popular avatar picture resources</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for people avatar pictures</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for &quot;misc&quot; avatar pictures</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different gpl licensed sounds</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for self recorded chip sounds</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different patches</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for internet-game-server hosting and administration</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for startwindow background gfx and danuxi1 table background</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for moderating forum and organise bugtracker and feature requests</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for new table sounds</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">airson caochladh ghoireasan dealbhan avatar mòr-chòrdte</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson dealbhan avatar dhaoine</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson dealbhan avatar &quot;measgaichte&quot;</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson caochladh fuaime fon cheadachas gpl</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson fuaimean nam bonn a chlàraich e fhèin</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson caochladh patch</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson òstadh is rianachd frithealaichean nan geamannan eadar-lìn</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson èifeachd grafaigeach an sgrìn-tòiseachaidh is cùlaibh a' bhùird danuxi1</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson obair-mhaoir air a' bhòrd-bhrath is rianachd a' bugtracker is iarrtasan nam feart</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson fuaimean a' bhùird ùra</span></p></td></tr></table></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Click here to view the online rankings</span></a></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Briog an-seo gus an rangachadh air loidhne fhaicinn</span></a></p></td></tr></table></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Create new user account</span></a></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Cruthaich cunntas a' chleachdaiche ùr</span></a></p></td></tr></table></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Note: Best quality with image ratio like </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">width=48, height=76.</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">leud=48, àirde=76.</span></p></td></tr></table></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Note: Default </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Game Settings</span><span style=" font-size:12pt; font-style:italic;"> like &quot;Maximum number of players&quot;, &quot;Start Cash&quot; and &quot;Small Blind&quot; will be used </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">from Network Game Settings.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">An aire: thèid </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Roghainnean a' gheama</span><span style=" font-size:12pt; font-style:italic;"> bunaiteach mar &quot;An àireamh as motha dhe chluicheadairean&quot;, &quot;Airgead tòiseachaidh&quot; is &quot;Small Blind&quot; a chleachdadh </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">bho Roghainnean a' gheama lìonraidh.</span></p></body></html> + + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(This nick will also be used for the online game login)</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(Thèid am far-ainm seo a chleachdadh airson an logadh a-steach dha gheamannan air loidhne cuideachd)</span></p></body></html> + + + + Preview: + Ro-shealladh: + + + + Export as HTML + Às-phortaich mar HTML + + + + Export as txt + Às-phortaich mar txt + + + + Save as ... + Sàbhail mar ... + + + + Delete + Sguab às + + + + Log File + Faidhle loga + + + + PokerTH - Delete log files + PokerTH - Sguab às dha dh'fhaidhlichean loga + + + + Do you really want to delete the selected log files? + A bheil thu cinnteach gu bheil thu airson na faidhlichean loga a thagh thu a sguabadh às? + + + + Export PokerTH log file to HTML + Às-phortaich faidhle loga PokerTH gu HTML + + + + PokerTH HTML log (*.html) + Loga HTML aig PokerTH (*.html) + + + + Export PokerTH log file to plain text + Às-phortaich faidhle loga PokerTH gu teacsa lom + + + + PokerTH plain text log (*.txt) + Loga teacsa lom aig PokerTH (*.txt) + + + + Save PokerTH log file + Sàbhail faidhle loga PokerTH + + + + PokerTH SQL log (*.pdb) + Loga SQL aig PokerTH (*.pdb) + + ChatTools @@ -592,22 +622,22 @@ Feuch an cuir thu fios dha neach-togail an stoidhle bùird tro %4. Mearachd le stoidhle airson bòrd a' gheama - ro shean - + Everything OK! A h-uile rud mar bu chòir! - + Some pictures are missing, please contact style maintainer for this issue. Tha dealbh no dhà a dhìth, feuch an cuir thu fios gu neach-glèidhidh an stoidhle mun duilgheas seo. - + Some style fields are missing, please contact style maintainer for this issue. Tha raon stoidhle no dhà a dhìth, feuch an cuir thu fios gu neach-glèidhidh an stoidhle mun duilgheas seo. - + This style is outdated, please contact style maintainer for this issue. Tha an stoidhle seo ro shean, feuch an cuir thu fios gu neach-glèidhidh an stoidhle mun duilgheas seo. @@ -685,64 +715,64 @@ Tagh stoidhle airson bòrd geama is feuch ris a-rithist! Sgrùdaich am faidhle loga ... - + PokerTH - Delete log files PokerTH - Sguab às dha dh'fhaidhlichean loga - + Do you really want to delete the selected log files? A bheil thu cinnteach gu bheil thu airson na faidhlichean loga a thagh thu a sguabadh às? - + Remove log file Thoir am faidhle loga air falbh - + PokerTH cannot remove this log file, please verify that you have write access to this file! Chan urrainn dha PokerTH am faidhle loga seo a thoirt air falbh. Feuch an dearbhaich thu gu bheil cead sgrìobhaidh agad airson an fhaidhle seo! - + Export PokerTH log file to HTML Às-phortaich faidhle loga PokerTH gu HTML - + PokerTH HTML log (*.html) Loga HTML aig PokerTH (*.html) - + Export PokerTH log file to plain text Às-phortaich faidhle loga PokerTH gu teacsa lom - + PokerTH plain text log (*.txt) Loga teacsa lom aig PokerTH (*.txt) - + Save PokerTH log file Sàbhail faidhle loga PokerTH - + PokerTH SQL log (*.pdb) Loga SQL aig PokerTH (*.pdb) - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Dh'fhàillig le giullachd an fhaidhle loga air an fhrithealaiche-lìn. Feuch an dearbhaich thu gu bheil thu a' luchdadh suas faidhle loga aig PokerTH a tha dligheach. - + Failure reason: Adhbhar an fhàilligidh: @@ -814,18 +844,18 @@ Dh'fhaoidte gum fàillig le luchdadh suas aig faidhlichean loga ma tha thu Aithris avatar mì-iomchaidh - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Chan fhaigh thu teachdaireachdan cabadaich no cuiridhean bhon chleachdaiche seo tuilleadh.<br>A bheil thu cinnteach gu bheil thu airson an cluicheadair <b>%1</b> a chur air an liosta neo-shuime? - - + + PokerTH - Question PokerTH - Ceist - + Are you sure you want to report the avatar of "%1" as inappropriate? A bheil thu cinnteach gu bheil thu airson an avatar aig "%1" aithris mar mhì-iomchaidh? @@ -854,24 +884,25 @@ Dh'fhaoidte gum fàillig le luchdadh suas aig faidhlichean loga ma tha thu aboutPokerth - - + + About - Mu dheidhinn + Mu dhèidhinn - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project Pròiseact + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -880,7 +911,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -890,71 +921,45 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">GunChleoc - fios@foramnagaidhlig.net</span></p></td></tr></table></body></html> + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - - - - + + Translation Eadar-theangachadh - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - - - - - + + Thanks to - Taing do + Taing - - + + License Ceadachas - - - Third party libs - - - - + Close Dùin - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -967,7 +972,7 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1226,12 +1231,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Òrdugh nam blinds a làimh - + You cannot set more than 30 manual blinds. Chan urrainn dhut barrachd air 30 blinds a làimh a shuidheachadh. @@ -1374,7 +1379,7 @@ Feuch an tagh thu fear eile! - + Default game name: Ainm bunaiteach a' gheama: @@ -1409,81 +1414,75 @@ Feuch an tagh thu fear eile! Geama rangachaidh - - + + Maximum number of players: An àireamh as motha dhe chluicheadairean: - - + + Start Cash: Airgead tòiseachaidh: - - + + $ £ - + Blinds Blinds - + Use saved blinds settings Cleachd roghainnean nam blinds air an sàbhaladh - + Change blinds settings ... Atharraich roghainnean nam blinds ... - + Timeout for player action: Crìochan ùine airson gnìomhachd a' chluicheadair: - - + + s diog - - + + Password: Facal-faire: - + Delay between hands: Dàil eadar làmhan: - - - Allow spectators to watch the game - - - - - + + Create Game Cruthaich geama - + Cancel Sguir dheth @@ -1596,68 +1595,56 @@ Feuch an tagh thu fear eile! Lobaidh nan geama eadar-lìn - - + + Game Info Fiosrachadh a' gheama - - + + Game type: Seòrsa a' gheama: - - + + Connected Players Cluicheadairean ceangailte - - + + search for player ... lorg cluicheadair ... - - + + 5 - Show open & non-full & ranking games 5 - Seall geamannan fosgailte & nach eil làn & le rangachadh - - - Players - Cluicheadairean - - - - - Spectators - - - - - + + Start Cash: Airgead tòiseachaidh: - - + + First small blind: A' chiad small blind: - - + + Blinds raise interval: Tricead aig togail ("raise") nam blinds: - - + + Blinds raise mode: Dòigh togail ("raise") nam blinds: @@ -1667,7 +1654,7 @@ Feuch an tagh thu fear eile! Geamannan - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1680,108 +1667,110 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - + + Fill up with computer opponents Lìon le co-fharpaisichean coimpiutair - - + + &Start Game &Tòisich air a' gheama - - + + &Kick Player Thoir a' &bhrog dha chluicheadair - - + + Sort alphabetically Seòrsaich a rèir na h-aibidil - - + + Sort by country Seòrsaich a rèir dùthcha - - + + Display idle players Seall cluicheadairean air tàmh - - + + Manual blinds list: Òrdugh nam blinds a làimh: - - + + &Leave Game &Fàg an geama + + Join &any game - Gabh an ge&ama s bith + Gabh an ge&ama sam bith - - + + &Create Game &Cruthaich geama - - + + &Join Game &Gabh sa gheama - - + + 0 - No game list filter 0 - Liosta nan geama gun chriathradh - - + + 1 - Show open games 1 - Seall geamannan fosgailte - - + + 2 - Show open & non-full games 2 - Seall geamannan fosgailte & nach eil làn - - + + 3 - Show open & non-full & non-private games 3 - Seall geamannan fosgailte & nach eil làn & nach eil prìobhaideach - - + + 4 - Show open & non-full & private games 4 - Seall geamannan fosgailte & nach eil làn & prìobhaideach - - + + Timing: Tìmeachadh: - - + + Lobby-Chat Cabadaich an lobaidh @@ -1794,226 +1783,211 @@ p, li { white-space: pre-wrap; } A' tòiseachadh air geama. Fuirich greis ... - + Joining a private Game A' gabhail ann an geama prìobhaideach - + You are about to join a private game. Please enter the password! Tha thu an impis gabhail ann an geama prìobhaideach. An cuir thu a-steach am facal-faire? - + open fosgailte - - - - + + + + Game Info Fiosrachadh a' gheama - - Spectate - - - - - - + + + Game Geama - - - + + + Players Cluicheadairean - - - + + + State Staid - - - + + + P P - - - + + + Available Players Cluicheadairean ri làimh - + Invite player Thoir cuireadh dha chluicheadair - + Ignore player Leig seachad cluicheadair - + Player infos ... Fiosrachadh a' chluicheadair ... - + Report inappropriate game name Aithris ainm cluicheadair mì-iomchaidh - - - + + + Standard Àbhaisteach - - - + + + Registered players only Cluicheadairean a chlàraich a-mhàin - - - + + + Invited players only Cluicheadairean a fhuair cuireadh a-mhàin - - - + + + Ranking game Geama rangachaidh + Connected players - max. %1 - Cluicheadairean ceangailte - %1 air a char as motha + Cluicheadairean ceangailte - %1 air a char as motha - - - + + + T S - - - + + + sec (action) diog (gnìomhachd) - - - + + + sec (hand delay) diog (dàil na làimhe) + + Connected players - Max. %1 - Cluicheadairean ceangailte - %1 air a char as motha + Cluicheadairean ceangailte - %1 air a char as motha - + running ga ruith - - + + running games: %1 - geamannan gan ruith: %1 + geamannan 'gan ruith: %1 - - + + open games: %1 geamannan fosgailte: %1 - - - Players (%1) - - - - - - - Spectators (%1) - - - - + Invite %1 Thoir cuireadh dha %1 - + Ignore %1 Leig seachad %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>Thug %3 cuireadh dha %1 airson %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>dhiùlt %1 an cuireadh airson %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>Chan urrainn dha %1 gabhail ann an %2 oir tha e trang.</span> - - + + The game will start in<br><b>%1</b> seconds. Tòisichidh a' gheama ann an<br><b>%1</b> diog. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Ghabh thu ann an geama dhen t-seòrsa "le cuireadh a-mhàin". Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-ainm air liosta nan cluicheadairean ri làimh. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Fhuair thu cuireadh dhan gheama <b>%1</b> le <b>%2</b>.<br>A bheil thu airson gabhail sa gheama seo? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Chan fhaigh thu teachdaireachdan cabadaich no cuiridhean bhon chleachdaiche seo tuilleadh.<br>A bheil thu cinnteach gu bheil thu airson an cluicheadair <b>%1</b> a chur air an liosta neo-shuime agad? - - + + connected players: %1 cluicheadairean ceangailte: %1 @@ -2028,1345 +2002,1318 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a Seall an rangachadh air loidhne - - - + + + Time Ùine - - + + Show player stats Seall stadastaireachd a' chluicheadair - - - Admin action ... - - - - - Total kickban - - - - - Close game - - - + + Connected players - Cluicheadairean ceangailte + Cluicheadairean ceangailte - + hands làmhan - + minutes mionaidean - + double blinds blinds dùbailte - + manual blinds order òrdugh nam blinds a làimh - + Server Error Mearachd an fhrithealaiche - + You should not kick yourself from this game! Cha bu chòir dhut a' bhròg a thoirt dhut fhèin! - + search for player ... a' lorg cluicheadair ... - + Chat is only available to registered players. Chan eil a' chabadaich ri làimh ach airson chluicheadairean a' chlàraich. - + Invite player ... Thoir cuireadh dha chluicheadair ... - + Ignore player ... Leig seachad an cluicheadair ... - + %1 is playing in "%2". Tha %1 a' cluiche ann an "%2". - + %1 is not playing at the moment. Chan eil %1 a' cluiche an-dràsta. - - + + PokerTH - Info Message PokerTH - Brath fiosrachaidh - - - - + + PokerTH - Question PokerTH - Ceist - + Afghanistan Afghanastàn - + ALand Islands Na h-Eileanan Àland - + Albania Albàinia - + Algeria Aildiria - + American Samoa Samotha na h-Aimeireaga - + Andorra Andorra - + Angola Angòla - + Anguilla Anguilia - + Antarctica An Antartaig - + Antigua And Barbuda Aintìoga agus Barbuda - + Argentina An Argantain - + Armenia Airmeinia - + Aruba Arùba - + Australia Astràilia - + Austria An Ostair - + Azerbaijan Asarbaideàn - + Bahamas Na h-Eileanan Bhathama - + Bahrain Bachrain - + Bangladesh Bangladais - + Barbados Barbados - + Belarus A' Bhealaruis - + Belgium A' Bheilg - + Belize A' Bheilìs - + Benin Beinin - + Bermuda Bearmùda - + Bhutan Butàn - + Bolivia Boilibhia - + Bosnia And Herzegovina Bosna is Hearsagobhana - + Botswana Botsuana - + Bouvet Island Eilean Bouvet - + Brazil Braisil - + British Indian Ocean Territory Ranntair Breatannach Cuan nan Innseachan - + Brunei Darussalam Brùnaigh Dàr as-Salàm - + Bulgaria A' Bhulgair - + Burkina Faso Buirciona Faso - + Burundi Burundaidh - + Cambodia Cambuidea - + Cameroon Camarun - + Canada Canada - + Cape Verde An Ceap Uaine - + Cayman Islands Na h-Eileanan Caimean - + Central African Republic Poblachd Meadhan Afraga - + Chad An t-Seàd - + Chile An t-Sile - + China An t-Sìn - + Christmas Island Eilean na Nollaig - + Cocos (Keeling) Islands Na h-Eileanan Cocos (Keeling) - + Colombia Coloimbia - + Comoros Comoros - + Congo Congo - + Congo, The Democratic Republic Of The Congo, Poblachd Dheamocratach - + Cook Islands Eileanan Cook - + Costa Rica Costa Rìcea - + Cote D'Ivoire Côte d'Ivoire - + Croatia A' Chròthais - + Cuba Cùba - + Cyprus Cìopras - + Czech Republic Poblachd na Seice - + Denmark An Danmhairg - + Djibouti Diobùtaidh - + Dominica Doiminicea - + Dominican Republic A' Phoblachd Dhoiminiceach - + Ecuador Eacuador - + Egypt An Èiphit - + El Salvador An Salbhador - + Equatorial Guinea Gini Mheadhan-Chriosach - + Eritrea Eartra - + Estonia An Eastoin - + Ethiopia An Itiop - + Falkland Islands (Malvinas) Na h-Eileanan Fàclannach (Malvinas) - + Faroe Islands Na h-Eileanan Fàro - + Fiji Fìdi - + Finland An Fhionnlann - + France An Fhraing - + French Guiana Guidheàna na Frainge - + French Polynesia Poilinèis na Frainge - + French Southern Territories Ranntairean a Deas na Frainge - + Gabon Gabon - + Gambia A' Ghaimbia - + Georgia A' Chairtbheil - + Germany A' Ghearmailt - + Ghana Gàna - + Gibraltar Diobraltar - + Greece A' Ghreug - + Greenland A' Ghraonlann - + Grenada Greanàda - + Guadeloupe Guadalup - + Guam Guam - + Guatemala Guatamala - + Guernsey Geàrnsaidh - + Guinea Gini - + Guinea-Bissau Gini-Bioso - + Guyana Guidheàna - + Haiti Haidhti - + Heard Island And Mcdonald Islands Eilean Heard is MhicDhòmhnaill - + Holy See (Vatican City State) A' Chathair Naomh (Stàit Cathair na Bhatacain) - + Honduras Hondùras - + Hong Kong Hong Kong - + Hungary An Ungair - + Iceland Innis Tìle - + India Na h-Innseachan - + Indonesia Na h-Innd Innse - + Iran, Islamic Republic Of Ioràn, Poblachd Ioslamach - + Iraq Ioràc - + Ireland Èirinn - + Isle Of Man Eilean Mhanainn - + Israel Iosrael - + Italy An Eadailt - + Jamaica Diameuga - + Japan An t-Seapan - + Jersey Deàrsaidh - + Jordan Iòrdan - + Kazakhstan Casachstàn - + Kenya Ceinia - + Kiribati Ciribeas - + Korea, Democratic People'S Republic Of Coirèa, Sluagh-phoblachd Dheamocratach - + Korea, Republic Of Choirèa, Poblachd - + Kuwait Cuibhèit - + Kyrgyzstan Cìorgastan - + Lao People'S Democratic Republic Làtho, Sluagh-phoblachd Dheamocratach - + Latvia An Laitbhe - + Lebanon Leabanon - + Lesotho Leasoto - + Liberia Libèir - + Libyan Arab Jamahiriya Libia, Sluagh-phoblachd Mhòr Shòisealach Arabach - + Liechtenstein Lichtenstein - + Lithuania An Liotuain - + Luxembourg Lugsamburg - + Macao Macàthu - + Macedonia, The Former Yugoslav Republic Of A' Mhasadon, Seann-Phoblachd Iùgoslabhach - + Madagascar Madagasgar - + Malawi Malabhaidh - + Malaysia Malaidhsea - + Maldives Na h-Eileanan Maladaibh - + Mali Màili - + Malta Malta - + Marshall Islands Eileanan Mharshall - + Martinique Mairtinic - + Mauritania Moratàinea - + Mauritius Na h-Eileanan Mhoiriseas - + Mayotte Mayotte - + Mexico Meagsago - + Micronesia, Federated States Of Na Meanbh-Eileanan, Stàitean Feadarail - + Moldova, Republic Of A' Mholdobha, Poblachd - + Monaco Monaco - + Mongolia Dùthaich nam Mongol - + Montserrat Montsarat - + Morocco Moroco - + Mozambique Mòsaimbic - + Myanmar Miànmar - + Namibia An Namaib - + Nauru Nauru - + Nepal Neapàl - + Netherlands Na Tìrean Ìsle - + Netherlands Antilles Eileanan Aintilia nan Tìrean Ìsle - + New Caledonia Cailleann Nuadh - + New Zealand Sealainn Nuadh - + Nicaragua Niocaragua - + Niger Nìgeir - + Nigeria Nigèiria - + Niue Niue - + Norfolk Island Eilean Norfolk - + Northern Mariana Islands Na h-Eileanan Mairianach a Tuath - + Norway An Nirribhidh - + Oman Omàn - + Pakistan Pagastàn - + Palau Palabh - + Palestinian Territory, Occupied A' phalastain, Ranntair fo fhor-ghlacadh - + Panama Panama - + Papua New Guinea Gini Nuadh Phaputhach - + Paraguay Paraguaidh - + Peru Pearù - + Philippines Na h-Eileanan Filipineach - + Pitcairn Peit a' Chàirn - + Poland A' Phòlainn - + Portugal A' Phortagail - + Puerto Rico Porto Rìceo - + Qatar Catar - + Reunion Réunion - + Romania Romàinia - + Russian Federation An Co-nasgadh Ruiseach - + Rwanda Rubhanda - + Saint Helena Eilean Naomh Eilidh - + Saint Kitts And Nevis Naomh Crìstean is Nibheis - + Saint Lucia Naomh Lùisea - + Saint Pierre And Miquelon Saint Pierre is Miquelon - + Saint Vincent And The Grenadines Naomh Bhionsant agus Eileanan Greanadach - + Samoa Samotha - + San Marino San Marino - + Sao Tome And Principe São Tomé is Príncipe - + Saudi Arabia Aràibia nan Sabhd - + Senegal Seanagal - + Serbia And Montenegro An t-Sèirb is am Monadh Negrach - + Seychelles Na h-Eileanan Sheiseall - + Sierra Leone Siarra Leòmhann - + Singapore Singeapòr - + Slovakia An t-Slòbhac - + Slovenia An t-Slòbhain - + Solomon Islands Eileanan Sholaimh - + Somalia Somàilia - + South Africa Afraga a Deas - + South Georgia And The South Sandwich Islands Seòrsea a Deas is na h-Eileanan Sandwich a Deas - + Spain An Spàinn - + Sri Lanka Sri Lanca - + Sudan Sudàn - + Suriname Suranam - + Svalbard And Jan Mayen Svalbard is Jan Mayen - + Swaziland Dùthaich nan Suasaidh - + Sweden An t-Suain - + Switzerland An Eilbheis - + Syrian Arab Republic Siridhea, Poblachd Arabach - + Taiwan, Province Of China Taidh-Bhàn, Mòr-roinn na Sìne - + Tajikistan Taidigeastàn - + Tanzania, United Republic Of An Tansan, Poblachd Aonaichte - + Thailand Dùthaich nan Tàidh - + Timor-Leste Tìomor an Ear - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trianaid is Tobago - + Tunisia Tuinisea - + Turkey An Tuirc - + Turkmenistan Turcmanastàn - + Turks And Caicos Islands Na h-Eileanan Turcach is Caiceo - + Tuvalu Tubhalu - + Uganda Uganda - + Ukraine An Ucràin - + United Arab Emirates Na h-Iomaratan Arabach Aonaichte - + United Kingdom An Rìoghachd Aonaichte - + United States Na Stàitean Aonaichte - + United States Minor Outlying Islands Meanbh-Eileanan Iomallach nan Stàitean Aonaichte - + Uruguay Uruguaidh - + Uzbekistan Usbagastan - + Vanuatu Vanuatu - + Venezuela A' Bheiniseala - + Viet Nam Bhiet-Nam - + Virgin Islands, British Eileanan Breatannach na Maighdinn - + Virgin Islands, U.S. Eileanan na Maighdinn aig na Stàitean Aonaichte - + Wallis And Futuna Uallas agus Futuna - + Western Sahara Sathara an Iar - + Yemen An Eaman - + Zambia Sàimbia - + Zimbabwe An t-Sìombab - + Are you sure you want to report the game name: "%1" as inappropriate? A bheil thu cinnteach gu bheil thu airson ainm a' gheama: "%1" aithris mar mhì-iomchaidh? - - - Are you sure you want to close the game: -"%1"? - - - - - Are you sure you want to total kickban the player: "%1"? - - gameTable @@ -3376,273 +3323,273 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a PokerTH 0.6-beta - An t-einnsean Open-Source Texas Holdem - + Hands Làmhan - + Chat Cabadaich - + Save Sàbhail - + Log Loga - + Away Air falbh - + Manual Action (default) Gnìomhachd a làimh (bun-roghainn) - + Auto-Check / Auto-Fold Fèin-"check" / Fèin-phaisg ("fold") - + Auto-Check / Auto-Call-Any Fèin-"check" / Fèin-"call" fear sam bith - + Speed: Astar: - - + + Start Local Game ... Tòisich air geama ionadail ... - - + + Ctrl+N Ctrl+N - - + + Quit Fàg an-seo - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... Mu dheidhinn PokerTH ... - - + + Settings ... Roghainnean ... - - + + Create Network Game ... Cruthaich geama lìonraidh ... - - + + Ctrl+O Ctrl+R - - + + Join Network Game ... Gabh ann an geama lìonraidh ... - - + + Ctrl+J Ctrl+G - - - + + + Fullscreen Làn-sgrìn - - + + Ctrl+F Ctrl+S - - + + Show/Hide Chat Window Seall/falaich uinneag na cabadaich - - + + Ctrl+T Ctrl+C - - - - - - + + + + + + Show/Hide Hands Window Seall/falaich uinneag nan làmhan - - + + Ctrl+H Ctrl+L - - + + Show/Hide Log Window Seall/falaich uinneag an loga - - + + Ctrl+L Ctrl+O - - + + Internet Game ... Geama eadar-lìn ... - - + + Ctrl+I Ctrl+E - - + + Show/Hide Away Window Seall/falaich uinneag air falbh - - + + Ctrl+A Ctrl+A - + Kick Thoir a' bhròg - + Vote Timeout: Falbhaidh an ùine air a' bhòtadh: - + Yes Tha - + No Chan eil - + Player info Fiosrachadh a' chluicheadair - + Chance Seans - + Configure PokerTH ... Rèitich PokerTH ... - - + + Close Dùin - - + + Ctrl+X Ctrl+X - + Vote started by: Bhòt air a thòiseachadh le: - - + + Show/Hide Chance Window Seall/falaich uinneag an t-seans - - + + Ctrl+C Ctrl+U - + &View &Sealladh - + &Settings &Roghainnean - + Shortcut: <Shift> Ath-ghoirid: <Shift> - + Settings Roghainnean - + Configure PokerTH Rèitich PokerTH @@ -3650,147 +3597,142 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stad - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1- An t-einnsean Open-Source Texas Holdem - - - - - - - - + + + + + + + + Start Tòisich - - - - - + + + + + Lobby Lobaidh - - + + Chat Cabadaich - + Closing PokerTH during network game A' dùnadh PokerTH rè geama lìonraidh - + You are the hosting server. Do you want to close PokerTH anyway? 'S e an t-òstair a th' annad. A bheil thu airson PokerTH a dhùnadh co-dhiù? - + Really want to exit? A bheil thu cinnteach gu bheil thu airson fàgail? - + PokerTH - Close Table? PokerTH - A bheil thu airson am bòrd a dhùnadh? - + PokerTH - Internet Game Message PokerTH - Brath a' gheama eadar-lìn - + Attention! Do you really want to leave the current game and go back to the lobby? An aire! A bheil thu cinnteach gu bheil thu airson an geama seo fhàgail is tilleadh dhan lobaidh? - - + + Chat is only available to registered players. Chan eil a' chabadaich ri làimh ach airson chluicheadairean a' chlàraich. - - Spectators - - - - - + + Chance Seans - - + + Kick Thoir a' bhròg - - + + Do you want to kick <b>%1</b><br>from this game? A bheil thu airson a' bhròg a thoirt dha <b>%1</b><br>on gheama seo? - - - - + + + + <b>%1</b> secs left <b>%1</b> diog air fhàgail - + vote bhòta - + votes bhòtaichean - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Tha <b>%2</b> %3 an aghaidh cluicheadair <b>%1</b>.<br>Tha <b>%4</b> bhòta(ichean) a dhìth gus a' bhròg a thoirt dha. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Tha <b>%1</b> %2 nad aghaidh.<br>Tha <b>%3</b> bhòta(ichean) a dhìth gus am faigh thu a' bhròg. @@ -3972,7 +3914,7 @@ p, li { white-space: pre-wrap; } myServerProfile1 - pròifilFrithealaicheAgam1 + Frithealaiche1 @@ -3989,66 +3931,56 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error A' luchdadh pròifil an fhrithealaiche-Mearachd fhaidhle + + + + Could not load server-profiles-file: - Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a luchdadh: + Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a luchdadh: - - - - - Could not load server-profiles-file: -%1 - - - - + Save Server Profile Error Sàbhail a' mhearachd aig pròifil an fhrithealaiche - + A profile with the name: %1 already exists. Would you like to overwrite ? Tha pròifil ann air a bheil: %1 mu thràth. A bheil thu airson sgrìobhadh thairis air? - + Read Server-Profile List Error - A' leughadh liosta pròifil nam frithealaiche-Mearachd fhaidhle + A' leughadh liosta pròifil nam frithealaiche-Mearachd fhaidhle - + Could not read server-profiles list Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a leughadh - - + + Save Server-Profile-File Error A' sàbhaladh pròifil an fhrithealaiche-Mearachd fhaidhle - - - Could not save server-profiles-file: -%1 - - - + + Could not save server-profiles-file: - Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a shàbhaladh: + Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a shàbhaladh: @@ -4112,12 +4044,12 @@ A bheil thu airson sgrìobhadh thairis air? manualBlindsOrderDialogImpl - + Manual Blinds Order Òrdugh nam blinds a làimh - + You cannot set more than 30 manual blinds. Chan urrainn dhut barrachd air 30 blinds a làimh a shuidheachadh. @@ -4182,7 +4114,7 @@ A bheil thu airson sgrìobhadh thairis air? - + Use saved blinds settings Cleachd roghainnean nam blinds air an sàbhaladh @@ -4193,15 +4125,15 @@ A bheil thu airson sgrìobhadh thairis air? - + Change blinds settings ... Atharraich roghainnean nam blinds ... - + Game Speed: - Astar a' gheama: + Luaths a' gheama: @@ -4240,38 +4172,38 @@ A bheil thu airson sgrìobhadh thairis air? selectAvatarDialogImpl - - - + + + Avatar File Error Mearachd le faidhle an avatar - + Please select an avatar from the list! Feuch an tagh thu avatar on liosta! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Tha meud an fhaidhle aig an dealbh a thagh thu ro mhòr. (30KB air a char as motha) Feuch an tagh thu dealbh nas lugha! - + The entered avatar picture doesn't exist. Please enter an valid picture! Chan eil dealbh an avatar a chuir thu a-steach ann. Feuch an cuir thu a-steach dealbh dligheach! - + Select external avatar picture Tagh dealbh avatar bho thaobh a-muigh - + Images (*.png *.jpg *.gif) Dealbhan (*.png *.jpg *.gif) @@ -4292,429 +4224,399 @@ Feuch an cuir thu a-steach dealbh dligheach! Eadar-aghaidh - - + + Language: Cànan: - - + + Show fade-out animation for non-winning cards Seall beòthachadh crìonaidh airson cairtean nach do bhuannaich - - + + Show flip-card animation Seall beòthachadh air tionndadh nan cairtean - - + + Show buttons for small blind and big blind Seall putanan airson small blind is big blind - - + + Show own cards only on mouse click Na seall na cairtean agam ach le briogadh na luchaige - + Reverse order of F-Keys (F1 - F4) Òrdugh contrarra nan iuchraichean F (F1 - F4) - - + + Network / Internet Game Geama lìonraidh / eadar-lìn - - + + Switch keyboard focus to bet-input-field if it's your turn Cuir fòcas a' mheur-chlàir air raon cur a-steach "geall" mas e an turas agadsa a th' ann - + Sound Fuaim - + Factory Settings Roghainnean an fhactaraidh - - - Common - - - - - + + Disable splashscreen on startup Cuir sgrìn-aithneachaidh aig toiseach a' gheama à comas - - + + Show country flag in the corner of avatar Seal bratach na dùthcha air oisean an avatar - - + + Activate the "accidentally call after big raise" blocker Gnìomhaich am bacadair "'call' le mearachd an dèidh togail ('raise') mhòir" - - - Do not hide avatars of players which are on the ignore list - - - - - - Disable emoticons in the chat - - - - - + + Game Table Bòrd a' gheama - - - - + + + + Description Tuairisgeul - - - - + + + + Maintainer Neach-glèidhidh - - - + + + State Staid - - + + Card Deck Paca chairt - - + + Card Back Cùlaibh nan cairtean - - + + Use card back from card style Cleachd cùlaibh nan cairtean aig stoidhle nan cairtean - - + + Use custom card back picture: Cleachd dealbh gnàthaichte mar chùlaibh nan cairtean: - - + + Play sound effects Cluich èifeachdan fuaime - - + + Sound Volume: Àirde fuaime: - - + + 10 10 - - + + Sound Categories Roinnean-seòrsa nam fuaimean - - + + Play game actions sounds like "check", "call", "raise" Cluich fuaimean airson gnìomhan a' gheama mar "check", "call", "raise" - - + + Play lobby chat notifications Cluich brathan aig cabadaich an lobaidh - - + + Play network/internet game notifications like "player joined the game" Cluich brathan aig geama lìonraidh/eadar-lìn mar "ghabh cluicheadair sa gheama" - + Local Game Settings Roghainnean a' gheama ionadail - - + + Number of players: Àireamh dhe chluicheadairean: - - - - + + + + Start Cash: Airgead tòiseachaidh: - - - - - - - - + + + + + + + + $ £ - - - - + + + + First small blind: A' chiad small blind: - - - - + + + + Raise blinds: Tog ("raise") blinds: - - - - - - - - + + + + + + + + Every: Gach: - - - - + + + + hands làmh - - - - + + + + minutes mionaid - - - - + + + + Raise mode: Dòigh na togail ("raise"): - - - - + + + + Always double blinds Blinds dùbailte an-còmhnaidh - - - - + + + + Manual blinds order: Òrdugh nam blinds a làimh: - - - - + + + + Edit ... Deasaich ... - - + + Game Speed: - Astar a' gheama: + Luaths a' gheama: - - + + Pause between hands (press "start" button to go on) Stad eadar làmhan (briog air "tòisich" gus leantainn air adhart) - - + + Show game settings dialog on every new game Seall còmhradh airson roghainnean a' gheama le toiseach gach geama ùir - - - Server Password: - - - - - - Allow spectators to watch the game - - - - + OK Ceart ma-thà - + Network Game Settings Roghainnean a' gheama lìonraidh - - + + Maximum number of players: An àireamh as motha dhe chluicheadairean: - - + + Timeout for player action: Crìochan ùine airson gnìomhachd a' chluicheadair: - - + + Reset all settings to default ... Ath-shuidhich na h-uile roghainn dhan bhun-roghainn ... - - + + Note: You can not reset all settings to default during a running game! An aire: chan urrainn dhut na h-uile roghainn ath-shuidheachadh dhan bhun-roghainn nuair a bhios geama a' ruith! - - - - + + + + s diog - - + + Network Server Settings Roghainnean an fhrithealaiche lìonraidh - - - - + + + + Server Port: Port an fhrithealaiche: - - - - + + + + Use SCTP Cleachd SCTP - - - - + + + + Use IPv6 Cleachd IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Dè th' ann?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Dè th' ann?</a> - + Internet Game Settings Roghainnean a' gheama eadar-lìn - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4725,61 +4627,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: thèid </span><span style=" font-weight:600; font-style:italic;">Roghainnean a' gheama</span><span style=" font-style:italic;"> bunaiteach mar "An àireamh as motha dhe chluicheadairean", "Airgead tòiseachaidh" is "Small Blind" a chleachdadh </span><span style=" font-weight:600; font-style:italic;">bho Roghainnean a' gheama lìonraidh.</span></p></body></html> - - + + Server Address: Seòladh an fhrithealaiche: - - + + Use password for private game: Cleachd facal-faire airson geama phrìobhaideach: - - + + Computer Engine Einnsean coimpiutair - - + + Opponent 6: Co-fharpaisiche 6: - - + + Opponent 5: Co-fharpaisiche 5: - - + + Opponent 4: Co-fharpaisiche 4: - - + + Opponent 3: Co-fharpaisiche 3: - - + + Opponent 2: Co-fharpaisiche 2: - - + + Opponent 1: Co-fharpaisiche 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4790,111 +4692,111 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: gheibh thu an càileachd as fhearr aig an avatar le co-mheas deilbh mar </span><span style=" font-weight:600; font-style:italic;">leud=50, àirde=50.</span></p></body></html> - - + + Enable/Disable Logging Cuir logadh an comas/à comas - - + + Log File Directory: Pasgan aig an fhaidhle logaidh: - - + + Write log after every: Sgrìobh loga an dèidh gach: - - + + action (high frequent disc access) gnìomhachd (inntrigeadh dhan diosga gu tric) - - + + hand (medium disc access) làmh (inntrigeadh dhan diosga meadhanach) - - + + game (low disc access) geama (inntrigeadh dhan diosga ainneamh) - + Log Messages Logaich teachdaireachdan - + Player Nicks/Avatars Far-ainmean/avataran nan cluicheadairean - + Show right toolbox Seall am bogsa-inneal taobh deas - + Show left toolbox Seall am bogsa-inneal taobh clì - - + + Play blind raise notification Cluich brath air togail ("raise") a' blind - - + + Automatic Server Configuration URL URL fèin-rèiteachaidh an fhrithealaiche - - + + Serverlist Address: Seòladh aig liosta nam frithealaichean: - - + + Manual Server Configuration Rèiteachaidh an fhrithealaiche a làimh - + Human Player: Cluicheadair daonna: - + (This nick will also be used for the online game login) (Logaidh tu a-steach leis an fhar-ainm seo dha gheamannan air loidhne cuideachd) - + Note: Best avatar quality with image ratio like width=50, height=50. An aire: gheibh thu an càileachd as fhearr aig an avatar le co-mheas deilbh mar leud=50, àirde=50. - - + + Store log files for: Sàbhail faidhlichean logaidh fad: - - + + Day(s) Là(ithean) @@ -4923,62 +4825,62 @@ p, li { white-space: pre-wrap; } Far-ainmean/avataran - - + + Show cards chance monitor Seall monatair air seans nan cairtean - + Note: Best quality with image ratio like width=48, height=76. An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar leud=48, àirde=76. - - + + Avatar Server: Frithealaiche an avatar: - + Style Stoidhle - - + + Don't translate poker strings like check, call, raise from game table style Na eadar-theangaich sreangan poker mar "check", "call", "raise" o stoidhle aig bòrd a' gheama - - - - + + + + Add ... Cuir ris ... - - - - + + + + Remove Thoir air falbh - - - - + + + + Preview - Information: Ro-shealladh - Fiosrachadh: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4991,8 +4893,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Faigh stoidhlichean ùra a' bhùird gheama aig PokerTH ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5005,7 +4907,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Faigh stoidhlichean ùra airson pacannan chairt aig PokerTH ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5024,96 +4926,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar </span><span style=" font-weight:600; font-style:italic;">leud=48, àirde=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Dàil eadar làmhan: - - + + Server Frithealaiche - - + + Game Geama - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. An aire: Thèid roghainnean bunaiteach a' gheama mar "An àireamh as motha dhe chluicheadairean", "Airgead tòiseachaidh" is "Small Blind" a chleachdadh bho "Roghainnean a' gheama lìonraidh". - - + + Default game name: Ainm bunaiteach a' gheama: - - + + Default game type: Seòrsa bunaiteach a' gheama: - - + + Standard Àbhaisteach - - + + Registered players only Cluicheadairean a chlàraich a-mhàin - - + + Invited players only Cluicheadairean a fhuair cuireadh a-mhàin - - + + Ranking game Geama rangachaidh - - + + Show lobby chat Seall cabadaich an lobaidh - - + + Automatically leave the table after the game finished Fàg am bòrd gu fèin-obrachail nuair a thig crìoch air a' gheama - - + + Ignored Players Cluicheadairean air an liosta neo-shuime - - + + Player Cluicheadair - - + + Remove Player Thoir an cluicheadair air falbh - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5126,20 +5028,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cluicheadair daonna:<br /><span style=" font-style:italic;">(Logaidh tu a-steach leis an fhar-ainm seo dha gheamannan air loidhne cuideachd)</span></p></body></html> - - + + Opponent 7: Co-fharpaisiche 7: - - + + Opponent 8: Co-fharpaisiche 8: - - + + Opponent 9: Co-fharpaisiche 9: @@ -5147,65 +5049,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Mearachd leis na roghainnean - + The entered flipside picture doesn't exist. Please enter an valid picture! Chan eil an dealbh cùlaibh a chuir thu a-steach ann. Feuch an cuir thu a-steach dealbh dligheach! - - + + The log file directory doesn't exist. Please select an valid directory! Chan eil am pasgan airson an fhaidhle loga ann. Feuch an tagh thu pasgan dligheach! - + Language Changed Cànan air atharrachadh - + You have changed application language to %1. Please restart PokerTH to load new language! Dh'atharraich thu cànan an aplacaid gu %1. Feuch an ath-thòisich thu PokerTH gus an cànan ùr a luchdadh! - + Select your flipside picture Tagh an dealbh cùlaibh agad - + Images (*.png *.jpg *.gif) Dealbhan (*.png *.jpg *.gif) - + Open Directory Fosgail pasgan - - + + Blinds Error Mearachd le blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5214,10 +5116,10 @@ nas lugha na a' chiad small blind! Thèid luach a' chiad small blind seo a shuidheachadh air an luach ceadaichte as motha. - + The entered server list address is not a valid URL. Please enter a valid server list address! - Chan eil an seòladh aig liosta nam frithealaichean a chuir thu a-steach na URL dligheach. + Chan eil an seòladh aig liosta nam frithealaichean a chuir thu a-steach 'na URL dligheach. Feuch an cuir thu a-steach seòladh aig liosta nam frithealaichean dligheach! @@ -5272,246 +5174,236 @@ Feuch an cuir thu a-steach seòladh aig liosta nam frithealaichean dligheach! - Galician - - - - German Gearmailtis - + Greek Greugais - + Hungarian Ungairis - + Italian Eadailtis - + Japanese Seapanais - + Lithuania Liotuainis - + Norwegian Nirribhis - + Polish Pòlainnis - + Portuguese-Brazilian Portagailis Bhraisileach - + Portuguese-Portuguese Portagailis na Portagaile - + Russian Ruisis - + Scottish Gaelic Gàidhlig na h-Alba - + Slovak Slòbhacais - + Spanish Spàinntis - + Swedish Suainis - + Tamil Taimilis - + Turkish Turcais - - Vietnamese - - - - + The opponent names are not unique. Please choose different names for each Opponent! Chan eil ainm fa leth aig gach co-fharpaisiche. Feuch an tagh thu ainm eadar-dhealaichte airson gach co-fharpaisiche! - + Settings Information Fiosrachadh nan roghainnean - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Ah'dhatharraich thu pasgan am faidhle loga. Feuch an ath-thòisich thu PokerTH gus am pasgan ùr airson nam faidhlichean loga a chleachdadh! - - + + Maintainer Name Ainm an neach-glèidhidh - - + + Maintainer EMail Post-d an neach-glèidhidh - - + + Create Date Ceann-latha a' chruthachaidh - + Windows Behaviour Giùlan Windows - + scaleable gabhaidh e sgèileadh - + fixed suidhichte - + Minimum Size Meud as lugha - + Maximum Size Meud as motha - + Fixed Size Meud suidhichte - + State Staid - + Please select your game table style Tagh stoidhle aig bòrd a' gheama - + PokerTH game table styles (*.xml) Stoidhlean bòrd a' gheama aig PokerTH (*.xml) - + Game Table Style Error Mearachd le stoidhle bòrd a' gheama - + Selected game table style file is already in the list. Please select another one to add! Tha an stoidhle bùird a thagh thu air an liosta mu thràth. Feuch an tagh thu tè eile airson cur ris! - + Game Table Style File Error Mearachd le faidhle airson stoidhle bòrd a' gheama - + Could not load game table style file correctly. Style will not be placed into list! Cha b' urrainn dhuinn am faidhle airson stoidhle bòrd a' gheama a luchdadh mar bu chòir. Cha tèid an stoidhle a cur ris an liosta! - + Please select your card deck style Tagh an stoidhle airson a' phaca cairt agad - + PokerTH card deck styles (*.xml) Stoidhle paca chairt aig PokerTH (*.xml) - + Card Deck Style Error Mearachd le stoidhle airson paca chairt - + Selected card deck style file is already in the list. Please select another one to add! Tha am faidhle airson stoidhle paca chairt air an liosta mu thràth. Feuch an tagh thu fear eile airson cur ris! - + Card Deck Style File Error Mearachd le faidhle airson stoidhle paca chairt - + Could not load card deck style file correctly. Style will not be placed into list! Cha b' urrainn dhuinn am faidhle airson stoidhle paca chairt a luchdadh mar bu chòir. Cha tèid an stoidhle a chur ris an liosta! - + PokerTH - Settings PokerTH - Roghainnean - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? An aire: sguabaidh seo às dha na roghainnean pearsanta agad uile is dùinidh e PokerTH! @@ -5577,12 +5469,12 @@ A bheil thu cinnteach gu bheil thu airson roghainnean an fhactaraidh ath-shuidhe startNetworkGameDialogImpl - + Server Error Mearachd an fhrithealaiche - + You should not kick yourself from this game! Cha bu chòir dhut a' bhròg a thoirt dhut fhèin! @@ -5653,7 +5545,7 @@ A bheil thu cinnteach gu bheil thu airson roghainnean an fhactaraidh ath-shuidhe About PokerTH - Mu dheidhinn PokerTH + Mu PokerTH @@ -5741,106 +5633,106 @@ A bheil thu cinnteach gu bheil thu airson roghainnean an fhactaraidh ath-shuidhe startWindowImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Mearachd lìonraidh - + Server address was not set. Cha deach seòladh an fhrithealaiche a shuidheachadh. - + An invalid port was set (ports 0-1023 are not allowed). Chaidh post mì-dhligheach a shuidheachadh (chan eil na puirt 0-1023 ceadaichte). - + Could not create a socket for TCP communication. Cha b' urrainn dhuinn socaid airson conaltradh TCP a chruthachadh. - + Could not set the IP address. Cha b' urrainn dhuinn an seòladh IP a shuidheachadh. - + Could not set the port for this type of address. Cha b' urrainn dhuinn am port airson an t-seòrsa seo dhe sheòladh a shuidheachadh. - + The server name could not be resolved. Cha b' urrainn dhuinn ainm an fhrithealaiche fhuasgladh. - + Bind failed - please choose a different port. Dh'fhàillig leis a' cheangal - feuch an tagh thu port eile. - + Internal network error: "listen" failed. Mearachd lìonraidh taobh a-staigh: dh'fhàillig leis an "listen". - + Server execution was terminated. Chaidh giullachd an fhrithealaiche a chrìochnachadh. - + Could not connect to the server. Cha b' urrainn dhuinn ceangal a dhèanamh ris an fhrithealaiche. - + Connection timed out. Please check the server address. @@ -5851,350 +5743,319 @@ Feuch an dearbhaich thu seòladh an fhrithealaiche. Ma tha am frithealaiche taobh thall rùtair NAT, dèan cinnteach gu bheil port forwarding air a chur air taobh an fhrithealaiche. - + Internal network error: "select" failed. Mearachd lìonraidh taobh a-staigh: dh'fhàillig leis an "select". - + Internal network error: "send" failed. Mearachd lìonraidh taobh a-staigh: dh'fhàillig leis an "send". - + Internal network error: Duplicate TCP connection. Mearachd lìonraidh taobh a-staigh: Ceangal TCP dùblaichte. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Fhuaras pacaid lìonraidh mì-dhligheach. Dèan cinnteach gun cleachd na h-uile cluicheadair an aon tionndadh aig PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Mearachd staide taobh a-staigh. Dèan cinnteach gun cleachd na h-uile cluicheadair an aon tionndadh aig PokerTH. - + Invalid server list URL. Please correct the address in the settings. URL liosta nam frithealaichean mì-dhligheach. Feuch an ceartaich thu an seòladh sna roghainnean. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. Tha dàta mì-dhligheach air liosta nam frithealaichean eadar-lìn aig PokerTH. Ma chleachdas tu liosta nam frithealaichean gnàthaichte, dèan cinnteach gu bheil a fòrmat mar bu chòir. - + Could not unzip the PokerTH internet server list. Cha b' urrainn dhuinn liosta nam frithealaichean eadar-lìn aig PokerTH dì-dhùmhlachadh. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Cha b' urrainn dhuinn liosta nam frithealaichean eadar-lìn aig PokerTH a luchdadh a-nuas. Dèan cinnteach gu bheil thu ceangailte ris an eadar-lìn gu dìreach. - + Could not open the target file when downloading the server list. Cha b' urrainn dhuinn am faidhle-uidhe fhosgladh nuair a luchdaich sinn a-nuas liosta nam frithealaichean. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Cha chuir am frithealaiche PokerTH taic dhan tionndadh seo dhen gheama.<br>Feuch an tadhail thu air <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> is an luchdaich thu an tionndadh as ùire a-nuas. - + Sorry, this server is already full. Tha sinn duilich, ach tha am frithealaiche seo làn mar-thà. - + Invalid login. Please check your username and password. Logadh a-steach mì-dhligheach. Feuch an dearbhaich thu an t-ainm cleachdaiche is am facal-faire agad. - + Your account is blocked indefinitely. Chaidh an cunntas agad a bhacadh gun chrìch. - + You cannot login at this time. Please try again in a few seconds. Chan urrainn dhut logadh a-steach an-dràsta. am feuch thu ris a-rithist an ceann greis? - + You cannot join this game, because another player in that game has your network address. Chan urrainn dhut gabhail sa gheama seo oir tha an seòladh lìonraidh agad aig cluicheadair eile sa gheama seo. - + Your connection to the server is very slow, the game had to start without you. Cha an ceangal agad dhan fhrithealaiche glè shlaodach, bha aig a' gheama tòiseachadh às d' aonais. - + This game is of type invite-only. You cannot join this game without being invited. Tha an geama seo dhen t-seòrsa le cuireadh a-mhàin. Chan urrainn dhut gabhail sa gheama seo gun chuireadh fhaighinn. - + Invalid password when joining the game. Please reenter the password and try again. Facal-faire mì-dhligheach le gabhail sa gheama. Cuir am facal-faire a-steach turas eile is feuch ris a-rithist. - + The avatar report was accepted by the server. Thank you. Ghabh am frithealaiche ris an aithris air avatar. Mòran taing. - + This avatar was already reported by another player. Chaidh an t-avatar seo aithris le cluicheadair eile mu thràth. - + An error occurred while reporting the avatar. Thachair mearachd le aithris air an avatar. - + The game name report was accepted by the server. Thank you. Ghabh am frithealaiche ris an aithris air ainm a' gheama. Mòran taing. - + This game name was already reported by another player. Chaidh ainm a' gheama seo aithris le cluicheadair eile mu thràth. - + An error occurred while reporting the game name. Thachair mearachd le aithris air ainm a' gheama. - - The game was closed. - - - - - The game could not be closed. - - - - - The player was kicked and banned permanently. - - - - - The player was kicked, but could not be banned because it was a guest player. - - - - - The player was kicked, but could not be banned, -because the nick could not be found in the database - - - - - The player could not be found. - - - - + The password is too long. Please choose another one. Tha am facal-faire ro fhada. Feuch an tagh thu fear eile. - + Rejoin possible! Faodaidh tu gabhail ann a-rithist! - + There is an existing session with a previous game. Tha seisean ann le geama a chluich thu roimhe. - + Do you want to rejoin this game? A bheil thu airson gabhail sa gheama seo a-rithist? - - + + Start Network Game Tòisich air geama lìonraidh - + The connection to the server was lost. Chaidh an ceangal dhan fhrithealaiche air chall. - + The game name is either too short or too long. Please choose another one. Tha ainm a' gheama ro ghoirid no ro fhada. Feuch an tagh thu fear eile. - + The game could not be found. Cha deach an geama a lorg. - + The chat text is invalid. Tha teacsa na cabadaich mì-dhligheach. - + The server referred to an unknown player. Aborting. Rinn am frithealaiche iomradh air cluicheadair neo-aithnichte. A' sgur dheth. - + Internal error: The current player could not be found. Mearachd taobh a-staigh: Cha deach an cluicheadair làithreach a lorg. - + Internal error: The current player is not active. Mearachd taobh a-staigh: Chan eil an cluicheadair làithreach gnìomhach. - + You were kicked from the server. Fhuair thu a' bhròg on fhrithealaiche. - + You were temporarily banned from the server. Chaidh do thoirmeasg on fhrithealaiche gu sealach. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Dh'fhalbh an ùine air a' cheangal agad dhan fhrithealaiche le dìth gnìomhachd. Tha thu làn di-beathte ceangal ris a-rithist! - + The client player count is invalid. Tha àireamh nan cluicheadairean cliaint mì-dhligheach. - + Too many manual blinds were set. Please reconfigure the manual blinds. Chaidh cus blinds a shuidheachadh. Feuch an ath-rèitich thu na blinds a làimh. - + An invalid avatar file was configured. Please choose a different avatar. Chaidh faidhle avatar mì-dhligheach a shuidheachadh. Feuch an tagh thu avatar eile. - + The selected avatar file is too large. Please choose a different avatar. Chaidh faidhle avatar a tha ro mhòr a thaghadh. Feuch an tagh thu avatar eile. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Thachair mearachd avatar taobh a-staigh. An aithris thu seo dha rianaire ann an cabadaich an lobaidh? - + Could not start game: Synchronization failed. Cha b' urrainn dhuinn an geama a thòiseachadh: Dh'fhàillig leis an t-sioncronachadh. - + The server is down for maintenance. Please try again later. Tha am frithealaiche far loidhne airson obrach-glèidhidh. Am feuch thu ris a-rithist an ceann greis? - + An internal error occured. Thachair mearachd taobh a-staigh. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Brath lìonraidh - + You were kicked from the game. Fhuair thu a' bhròg on gheama. - + Sorry, this game is already full. Tha sinn duilich, ach tha an geama seo làn mar-thà. - + Unable to join - the server has already started the game. Chan urrainn dhut gabhail ann - tha am frithealaiche air an geama a thòiseachadh. - + Your admin state timed out due to inactivity. Feel free to create a new game! Dh'fhalbh an ùine air an staid rianaire agad le dìth gnìomhachd. Tha thu làn di-beathte geama ùr a chruthachadh! - + You cannot join this type of game as guest. Chan urrainn dhut gabhail san seòrsa dhe gheama seo mar aoigh. - + The settings are invalid for this type of game. Tha na roghainnean mì-dhligheach airson an seòrsa dhe gheama seo. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Tha foillseachadh ùr aig PokerTH ri làimh.<br>Feuch an tadhail thu air <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> is an luchdaich thu an tionndadh as ùire a-nuas. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Tha am foillseachadh beta seo aig PokerTH ro shean.<br>Feuch an tadhail thu air <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> is an luchdaich thu an tionndadh as ùire a-nuas. - - + + Server Message Brath an fhrithealaiche @@ -6274,7 +6135,7 @@ because the nick could not be found in the database Auto-Check / Auto-Fold - Fèin"-check" / Fèin-phaisg ("fold") + Fèin-"check" / Fèin-phaisg ("fold") From 55ad77a7a8500d948b4b8945bed83f5bfc0b81d6 Mon Sep 17 00:00:00 2001 From: doitux Date: Sun, 24 Nov 2013 21:27:08 +0100 Subject: [PATCH 108/128] BUGFIX: wrong sound while joining a v1.1 game (#230) --- src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 29b16437..1c66ef45 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -1024,7 +1024,7 @@ void gameLobbyDialogImpl::joinedNetworkGame(unsigned playerId, QString playerNam void gameLobbyDialogImpl::addConnectedPlayer(unsigned playerId, QString playerName, bool isGameAdmin) { - + GameInfo info(mySession->getClientGameInfo(mySession->getClientCurrentGameId())); QTreeWidgetItem *item = new QTreeWidgetItem(treeWidget_connectedPlayers, 0); item->setData(0, Qt::UserRole, playerId); item->setData(0, Qt::DisplayRole, playerName); @@ -1032,7 +1032,7 @@ void gameLobbyDialogImpl::addConnectedPlayer(unsigned playerId, QString playerNa if(isGameAdmin) item->setBackground(0, QBrush(QColor(0, 255, 0, 127))); if(this->isVisible() && inGame && myConfig->readConfigInt("PlayNetworkGameNotification")) { - if(treeWidget_connectedPlayers->topLevelItemCount() < treeWidget_connectedPlayers->headerItem()->data(0, Qt::UserRole).toInt()) { + if(treeWidget_connectedPlayers->topLevelItemCount() < info.data.maxNumberOfPlayers) { myW->getMySoundEventHandler()->playSound("playerconnected", 0); } else { myW->getMySoundEventHandler()->playSound("onlinegameready", 0); @@ -1449,7 +1449,6 @@ void gameLobbyDialogImpl::showGameDescription(bool show) label_gameDesc7->hide(); tabWidget_playerSpectators->setTabText(0, tr("Players (%1)").arg(0)); tabWidget_playerSpectators->setTabText(1, tr("Spectators (%1)").arg(0)); - } } From 02c259a97983dba57697a843fd5e8d6eeb529ccf Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 1 Dec 2013 14:08:33 +0100 Subject: [PATCH 109/128] Preparing 1.1 beta4. --- ChangeLog | 7 +++++++ src/game_defs.h | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a92578b8..907da8de 100755 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2013-12-01 version 1.1 beta4 +- Updated several translations +- New icon for spectator list on table (#217) +- Display the number of spectators next to the spectator icon (#206) +- BUGFIX: Correct sound is now played when joining a game (#230) +- BUGFIX: No longer beep if ignored player uses nickname in chat (#221) + 2013-11-02 version 1.1 beta3 - New option to allow/disallow spectators when creating a game (#215) diff --git a/src/game_defs.h b/src/game_defs.h index 818c8952..e068d1eb 100644 --- a/src/game_defs.h +++ b/src/game_defs.h @@ -45,8 +45,8 @@ #define POKERTH_VERSION_MINOR 10 #define POKERTH_VERSION ((POKERTH_VERSION_MAJOR << 8) | POKERTH_VERSION_MINOR) -#define POKERTH_BETA_REVISION 3 -#define POKERTH_BETA_RELEASE_STRING "1.1 beta3" +#define POKERTH_BETA_REVISION 4 +#define POKERTH_BETA_RELEASE_STRING "1.1 beta4" #define SQLITE_LOG_VERSION 1 From 0af9c0d1251bc1f18f5d0d07abef9d74d850af09 Mon Sep 17 00:00:00 2001 From: doitux Date: Wed, 4 Dec 2013 23:13:27 +0100 Subject: [PATCH 110/128] updated translation files --- ts/pokerth_START_HERE.ts | 668 ++++---- ts/pokerth_gd.ts | 3177 ++++++++++++++++++++------------------ ts/pokerth_gl.ts | 668 ++++---- ts/pokerth_gr.ts | 668 ++++---- ts/pokerth_hu.ts | 668 ++++---- ts/pokerth_it.ts | 686 ++++---- ts/pokerth_jp.ts | 668 ++++---- ts/pokerth_lt.ts | 668 ++++---- ts/pokerth_nl.ts | 668 ++++---- ts/pokerth_no.ts | 668 ++++---- ts/pokerth_pl.ts | 686 ++++---- ts/pokerth_ptbr.ts | 18 +- ts/pokerth_ptpt.ts | 668 ++++---- ts/pokerth_ru.ts | 668 ++++---- ts/pokerth_sk.ts | 668 ++++---- ts/pokerth_sv.ts | 668 ++++---- ts/pokerth_ta.ts | 668 ++++---- ts/pokerth_tr.ts | 668 ++++---- ts/pokerth_vi.ts | 668 ++++---- ts/pokerth_zhcn.ts | 668 ++++---- 20 files changed, 7697 insertions(+), 7558 deletions(-) diff --git a/ts/pokerth_START_HERE.ts b/ts/pokerth_START_HERE.ts index 5605ffb9..b2e0c0c5 100644 --- a/ts/pokerth_START_HERE.ts +++ b/ts/pokerth_START_HERE.ts @@ -156,22 +156,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -1462,49 +1462,49 @@ p, li { white-space: pre-wrap; } - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -1589,1273 +1589,1273 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3142,146 +3142,146 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop - + PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - - - - + + + + + + + + Start - - - - - + + + + + Lobby - - + + Chat - + Closing PokerTH during network game - + You are the hosting server. Do you want to close PokerTH anyway? - + Really want to exit? - + PokerTH - Close Table? - + PokerTH - Internet Game Message - + Attention! Do you really want to leave the current game and go back to the lobby? - - + + Chat is only available to registered players. - + Spectators - - + + Chance - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. @@ -3631,48 +3631,48 @@ Would you like to overwrite ? - + Number of players: - + Start Cash: - + $ - + Blinds - + Use saved blinds settings - + OK - + Change blinds settings ... - + Game Speed: diff --git a/ts/pokerth_gd.ts b/ts/pokerth_gd.ts index f496d5ae..218f7902 100644 --- a/ts/pokerth_gd.ts +++ b/ts/pokerth_gd.ts @@ -1,7 +1,407 @@ - -UTF-8 + + + + + Selected card deck style "%1" seems to be outdated. + The current PokerTH card deck style version is "%2", but this style has version "%3" set. + +Please contact the card deck style builder %4. + Tha stoidhle a' phaca chairt "%1" a thagh thu ro shean a rèir coltais. + Is "%2" an tionndadh làithreach aig an stoidhle paca aig PokerTH, ach tha tionndadh "%3" suidhichte airson an stoidhle seo. + +Feuch an cuir thu fios dha neach-togail %4 stoidhle a' phaca. + + + Selected card deck style "%1" seems to be incomplete or defective. + +The value(s) of "%2" is/are missing. + +Please contact the card deck style builder %3. + Tha stoidhle a' phaca chairt "%1" a thagh thu neo-iomlan no briste. + +Tha an luach/na luachan aig "%2" a dhìth. + +Feuch an cuir thu fios dha neach-togail %3 stoidhle a' phaca. + + + Selected card deck style "%1" seems to be incomplete or defective. +The card picture(s) "%2" is/are not available. + +Please contact the card deck style builder %3. + Tha stoidhle a' phaca chairt "%1" a thagh thu neo-iomlan no briste. +Tha dealbh(an) na cairte "%2" a dhìth. + +Feuch an cuir thu fios dha neach-togail %3 stoidhle a' phaca. + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Singleplayer games with up to 9 computer-opponents</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-size:8pt;"> with result tables</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Einnsean poker airson &quot;Texas Hold'em&quot; Poker mòr-chòrdte</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Geamannan aon-chluicheadair le suas gu 9 co-fharpaisichean coimpiutair</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Geamannan lìonraidh ioma-chluicheadair<br />- Geamannan air an eadar-lìon<br />- Eadar-aghaidh a ghabhas atharrachadh le gailearaidh dhe stoidhlichean air loidhne<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Làrach-lìn rangachaidh</span></a><span style=" font-size:8pt;"> le clàraichean nan toraidhean</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Project page: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Authors: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, engine development</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - basic architecture, network development, windows package, MacOS package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Duilleag a' phròiseict: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Ùghdaran: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - beachd tòiseachaidh, dealbhadh bunasach, prògramachadh na h-eadar-aghaidh, deasachadh grafaigeachd na h-eadar-aghaidh, pacaid linux</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - beachd tòiseachaidh, dealbhadh bunasach, leasachadh an einnsein</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - dealbhadh bunasach, leasachadh lìonraidh, pacaid windows, pacaid MacOS</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - a' chiad dealbhachadh grafaigeachd na h-eadar-aghaidh</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Singleplayer games with up to 9 computer-opponents</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> with result tables</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Einnsean poker airson &quot;Texas Hold'em&quot; Poker mòr-chòrdte</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Geamannan aon-chluicheadair le suas gu 9 co-fharpaisichean coimpiutair</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Geamannan lìonraidh ioma-chluicheadair<br />- Geamannan air an eadar-lìon<br />- Eadar-aghaidh a ghabhas atharrachadh le gailearaidh dhe stoidhlichean air loidhne<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Làrach-lìn rangachaidh</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> le clàraichean nan toraidhean</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Authors: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, engine development</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - basic architecture, network development, windows package, MacOS package</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Ùghdaran: </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - beachd tòiseachaidh, dealbhadh bunasach, prògramachadh na h-eadar-aghaidh, deasachadh grafaigeachd na h-eadar-aghaidh, pacaid linux</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - beachd tòiseachaidh, dealbhadh bunasach, leasachadh an einnsein</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - - dealbhadh bunasach, leasachadh lìonraidh, pacaid windows, pacaid MacOS</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - a' chiad dealbhachadh grafaigeachd na h-eadar-aghaidh</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">for different popular avatar picture resources</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for people avatar pictures</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for &quot;misc&quot; avatar pictures</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different gpl licensed sounds</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for self recorded chip sounds</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different patches</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for internet-game-server hosting and administration</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for startwindow background gfx and danuxi1 table background</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for moderating forum and organise bugtracker and feature requests</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for new table sounds</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">airson caochladh ghoireasan dealbhan avatar mòr-chòrdte</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson dealbhan avatar dhaoine</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson dealbhan avatar &quot;measgaichte&quot;</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson caochladh fuaime fon cheadachas gpl</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson fuaimean nam bonn a chlàraich e fhèin</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson caochladh patch</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson òstadh is rianachd frithealaichean nan geamannan eadar-lìn</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson èifeachd grafaigeach an sgrìn-tòiseachaidh is cùlaibh a' bhùird danuxi1</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson obair-mhaoir air a' bhòrd-bhrath is rianachd a' bugtracker is iarrtasan nam feart</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson fuaimean a' bhùird ùra</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Click here to view the online rankings</span></a></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Briog an-seo gus an rangachadh air loidhne fhaicinn</span></a></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Create new user account</span></a></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Cruthaich cunntas a' chleachdaiche ùr</span></a></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Note: Best quality with image ratio like </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">width=48, height=76.</span></p></td></tr></table></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">leud=48, àirde=76.</span></p></td></tr></table></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Note: Default </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Game Settings</span><span style=" font-size:12pt; font-style:italic;"> like &quot;Maximum number of players&quot;, &quot;Start Cash&quot; and &quot;Small Blind&quot; will be used </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">from Network Game Settings.</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">An aire: thèid </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Roghainnean a' gheama</span><span style=" font-size:12pt; font-style:italic;"> bunaiteach mar &quot;An àireamh as motha dhe chluicheadairean&quot;, &quot;Airgead tòiseachaidh&quot; is &quot;Small Blind&quot; a chleachdadh </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">bho Roghainnean a' gheama lìonraidh.</span></p></body></html> + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(This nick will also be used for the online game login)</span></p></body></html> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> +<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(Thèid am far-ainm seo a chleachdadh airson an logadh a-steach dha gheamannan air loidhne cuideachd)</span></p></body></html> + + + Preview: + Ro-shealladh: + + + Export as HTML + Às-phortaich mar HTML + + + Export as txt + Às-phortaich mar txt + + + Save as ... + Sàbhail mar ... + + + Delete + Sguab às + + + Log File + Faidhle loga + + + PokerTH - Delete log files + PokerTH - Sguab às dha dh'fhaidhlichean loga + + + Do you really want to delete the selected log files? + A bheil thu cinnteach gu bheil thu airson na faidhlichean loga a thagh thu a sguabadh às? + + + Export PokerTH log file to HTML + Às-phortaich faidhle loga PokerTH gu HTML + + + PokerTH HTML log (*.html) + Loga HTML aig PokerTH (*.html) + + + Export PokerTH log file to plain text + Às-phortaich faidhle loga PokerTH gu teacsa lom + + + PokerTH plain text log (*.txt) + Loga teacsa lom aig PokerTH (*.txt) + + + Save PokerTH log file + Sàbhail faidhle loga PokerTH + + + PokerTH SQL log (*.pdb) + Loga SQL aig PokerTH (*.pdb) + + CardDeckStyleReader @@ -109,436 +509,6 @@ Please select a card deck style and try again! Tagh stoidhle airson paca chairt is feuch ris a-rithist! - - - - - Selected card deck style "%1" seems to be outdated. - The current PokerTH card deck style version is "%2", but this style has version "%3" set. - -Please contact the card deck style builder %4. - Tha stoidhle a' phaca chairt "%1" a thagh thu ro shean a rèir coltais. - Is "%2" an tionndadh làithreach aig an stoidhle paca aig PokerTH, ach tha tionndadh "%3" suidhichte airson an stoidhle seo. - -Feuch an cuir thu fios dha neach-togail %4 stoidhle a' phaca. - - - - Selected card deck style "%1" seems to be incomplete or defective. - -The value(s) of "%2" is/are missing. - -Please contact the card deck style builder %3. - Tha stoidhle a' phaca chairt "%1" a thagh thu neo-iomlan no briste. - -Tha an luach/na luachan aig "%2" a dhìth. - -Feuch an cuir thu fios dha neach-togail %3 stoidhle a' phaca. - - - - Selected card deck style "%1" seems to be incomplete or defective. -The card picture(s) "%2" is/are not available. - -Please contact the card deck style builder %3. - Tha stoidhle a' phaca chairt "%1" a thagh thu neo-iomlan no briste. -Tha dealbh(an) na cairte "%2" a dhìth. - -Feuch an cuir thu fios dha neach-togail %3 stoidhle a' phaca. - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Singleplayer games with up to 9 computer-opponents</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-size:8pt;"> with result tables</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Einnsean poker airson &quot;Texas Hold'em&quot; Poker mòr-chòrdte</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Geamannan aon-chluicheadair le suas gu 9 co-fharpaisichean coimpiutair</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Geamannan lìonraidh ioma-chluicheadair<br />- Geamannan air an eadar-lìon<br />- Eadar-aghaidh a ghabhas atharrachadh le gailearaidh dhe stoidhlichean air loidhne<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Làrach-lìn rangachaidh</span></a><span style=" font-size:8pt;"> le clàraichean nan toraidhean</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Project page: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Authors: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, engine development</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - basic architecture, network development, windows package, MacOS package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Duilleag a' phròiseict: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Ùghdaran: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - beachd tòiseachaidh, dealbhadh bunasach, prògramachadh na h-eadar-aghaidh, deasachadh grafaigeachd na h-eadar-aghaidh, pacaid linux</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - beachd tòiseachaidh, dealbhadh bunasach, leasachadh an einnsein</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - dealbhadh bunasach, leasachadh lìonraidh, pacaid windows, pacaid MacOS</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - a' chiad dealbhachadh grafaigeachd na h-eadar-aghaidh</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Singleplayer games with up to 9 computer-opponents</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> with result tables</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Einnsean poker airson &quot;Texas Hold'em&quot; Poker mòr-chòrdte</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Geamannan aon-chluicheadair le suas gu 9 co-fharpaisichean coimpiutair</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Geamannan lìonraidh ioma-chluicheadair<br />- Geamannan air an eadar-lìon<br />- Eadar-aghaidh a ghabhas atharrachadh le gailearaidh dhe stoidhlichean air loidhne<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Làrach-lìn rangachaidh</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> le clàraichean nan toraidhean</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Authors: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, engine development</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - basic architecture, network development, windows package, MacOS package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Ùghdaran: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - beachd tòiseachaidh, dealbhadh bunasach, prògramachadh na h-eadar-aghaidh, deasachadh grafaigeachd na h-eadar-aghaidh, pacaid linux</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - beachd tòiseachaidh, dealbhadh bunasach, leasachadh an einnsein</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - - dealbhadh bunasach, leasachadh lìonraidh, pacaid windows, pacaid MacOS</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - a' chiad dealbhachadh grafaigeachd na h-eadar-aghaidh</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">for different popular avatar picture resources</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for people avatar pictures</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for &quot;misc&quot; avatar pictures</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different gpl licensed sounds</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for self recorded chip sounds</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different patches</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for internet-game-server hosting and administration</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for startwindow background gfx and danuxi1 table background</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for moderating forum and organise bugtracker and feature requests</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for new table sounds</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">airson caochladh ghoireasan dealbhan avatar mòr-chòrdte</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson dealbhan avatar dhaoine</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson dealbhan avatar &quot;measgaichte&quot;</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson caochladh fuaime fon cheadachas gpl</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson fuaimean nam bonn a chlàraich e fhèin</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson caochladh patch</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson òstadh is rianachd frithealaichean nan geamannan eadar-lìn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson èifeachd grafaigeach an sgrìn-tòiseachaidh is cùlaibh a' bhùird danuxi1</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson obair-mhaoir air a' bhòrd-bhrath is rianachd a' bugtracker is iarrtasan nam feart</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - airson fuaimean a' bhùird ùra</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Click here to view the online rankings</span></a></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Briog an-seo gus an rangachadh air loidhne fhaicinn</span></a></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Create new user account</span></a></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Cruthaich cunntas a' chleachdaiche ùr</span></a></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Note: Best quality with image ratio like </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">width=48, height=76.</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">leud=48, àirde=76.</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Note: Default </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Game Settings</span><span style=" font-size:12pt; font-style:italic;"> like &quot;Maximum number of players&quot;, &quot;Start Cash&quot; and &quot;Small Blind&quot; will be used </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">from Network Game Settings.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">An aire: thèid </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Roghainnean a' gheama</span><span style=" font-size:12pt; font-style:italic;"> bunaiteach mar &quot;An àireamh as motha dhe chluicheadairean&quot;, &quot;Airgead tòiseachaidh&quot; is &quot;Small Blind&quot; a chleachdadh </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">bho Roghainnean a' gheama lìonraidh.</span></p></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(This nick will also be used for the online game login)</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(Thèid am far-ainm seo a chleachdadh airson an logadh a-steach dha gheamannan air loidhne cuideachd)</span></p></body></html> - - - - Preview: - Ro-shealladh: - - - - Export as HTML - Às-phortaich mar HTML - - - - Export as txt - Às-phortaich mar txt - - - - Save as ... - Sàbhail mar ... - - - - Delete - Sguab às - - - - Log File - Faidhle loga - - - - PokerTH - Delete log files - PokerTH - Sguab às dha dh'fhaidhlichean loga - - - - Do you really want to delete the selected log files? - A bheil thu cinnteach gu bheil thu airson na faidhlichean loga a thagh thu a sguabadh às? - - - - Export PokerTH log file to HTML - Às-phortaich faidhle loga PokerTH gu HTML - - - - PokerTH HTML log (*.html) - Loga HTML aig PokerTH (*.html) - - - - Export PokerTH log file to plain text - Às-phortaich faidhle loga PokerTH gu teacsa lom - - - - PokerTH plain text log (*.txt) - Loga teacsa lom aig PokerTH (*.txt) - - - - Save PokerTH log file - Sàbhail faidhle loga PokerTH - - - - PokerTH SQL log (*.pdb) - Loga SQL aig PokerTH (*.pdb) - - ChatTools @@ -622,22 +592,22 @@ Feuch an cuir thu fios dha neach-togail an stoidhle bùird tro %4. Mearachd le stoidhle airson bòrd a' gheama - ro shean - + Everything OK! A h-uile rud mar bu chòir! - + Some pictures are missing, please contact style maintainer for this issue. Tha dealbh no dhà a dhìth, feuch an cuir thu fios gu neach-glèidhidh an stoidhle mun duilgheas seo. - + Some style fields are missing, please contact style maintainer for this issue. Tha raon stoidhle no dhà a dhìth, feuch an cuir thu fios gu neach-glèidhidh an stoidhle mun duilgheas seo. - + This style is outdated, please contact style maintainer for this issue. Tha an stoidhle seo ro shean, feuch an cuir thu fios gu neach-glèidhidh an stoidhle mun duilgheas seo. @@ -715,64 +685,64 @@ Tagh stoidhle airson bòrd geama is feuch ris a-rithist! Sgrùdaich am faidhle loga ... - + PokerTH - Delete log files PokerTH - Sguab às dha dh'fhaidhlichean loga - + Do you really want to delete the selected log files? A bheil thu cinnteach gu bheil thu airson na faidhlichean loga a thagh thu a sguabadh às? - + Remove log file Thoir am faidhle loga air falbh - + PokerTH cannot remove this log file, please verify that you have write access to this file! Chan urrainn dha PokerTH am faidhle loga seo a thoirt air falbh. Feuch an dearbhaich thu gu bheil cead sgrìobhaidh agad airson an fhaidhle seo! - + Export PokerTH log file to HTML Às-phortaich faidhle loga PokerTH gu HTML - + PokerTH HTML log (*.html) Loga HTML aig PokerTH (*.html) - + Export PokerTH log file to plain text Às-phortaich faidhle loga PokerTH gu teacsa lom - + PokerTH plain text log (*.txt) Loga teacsa lom aig PokerTH (*.txt) - + Save PokerTH log file Sàbhail faidhle loga PokerTH - + PokerTH SQL log (*.pdb) Loga SQL aig PokerTH (*.pdb) - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Dh'fhàillig le giullachd an fhaidhle loga air an fhrithealaiche-lìn. Feuch an dearbhaich thu gu bheil thu a' luchdadh suas faidhle loga aig PokerTH a tha dligheach. - + Failure reason: Adhbhar an fhàilligidh: @@ -844,18 +814,18 @@ Dh'fhaoidte gum fàillig le luchdadh suas aig faidhlichean loga ma tha thu Aithris avatar mì-iomchaidh - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Chan fhaigh thu teachdaireachdan cabadaich no cuiridhean bhon chleachdaiche seo tuilleadh.<br>A bheil thu cinnteach gu bheil thu airson an cluicheadair <b>%1</b> a chur air an liosta neo-shuime? - - + + PokerTH - Question PokerTH - Ceist - + Are you sure you want to report the avatar of "%1" as inappropriate? A bheil thu cinnteach gu bheil thu airson an avatar aig "%1" aithris mar mhì-iomchaidh? @@ -884,25 +854,24 @@ Dh'fhaoidte gum fàillig le luchdadh suas aig faidhlichean loga ma tha thu aboutPokerth - - + + About Mu dhèidhinn - - + + <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> <a href="http://www.pokerth.net" target="_blank">http://www.pokerth.net<a> - - + + Project Pròiseact - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -911,7 +880,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -921,45 +890,71 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">GunChleoc - fios@foramnagaidhlig.net</span></p></td></tr></table></body></html> - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + Translation Eadar-theangachadh - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> + + + + + Thanks to Taing - - + + License Ceadachas - + + + Third party libs + + + + Close Dùin - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -972,7 +967,7 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1231,12 +1226,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Òrdugh nam blinds a làimh - + You cannot set more than 30 manual blinds. Chan urrainn dhut barrachd air 30 blinds a làimh a shuidheachadh. @@ -1379,7 +1374,7 @@ Feuch an tagh thu fear eile! - + Default game name: Ainm bunaiteach a' gheama: @@ -1414,75 +1409,81 @@ Feuch an tagh thu fear eile! Geama rangachaidh - - + + Maximum number of players: An àireamh as motha dhe chluicheadairean: - - + + Start Cash: Airgead tòiseachaidh: - - + + $ £ - + Blinds Blinds - + Use saved blinds settings Cleachd roghainnean nam blinds air an sàbhaladh - + Change blinds settings ... Atharraich roghainnean nam blinds ... - + Timeout for player action: Crìochan ùine airson gnìomhachd a' chluicheadair: - - + + s diog - - + + Password: Facal-faire: - + Delay between hands: Dàil eadar làmhan: - - + + + Allow spectators to watch the game + + + + + Create Game Cruthaich geama - + Cancel Sguir dheth @@ -1595,56 +1596,68 @@ Feuch an tagh thu fear eile! Lobaidh nan geama eadar-lìn - - + + Game Info Fiosrachadh a' gheama - - + + Game type: Seòrsa a' gheama: - - + + Connected Players Cluicheadairean ceangailte - - + + search for player ... lorg cluicheadair ... - - + + 5 - Show open & non-full & ranking games 5 - Seall geamannan fosgailte & nach eil làn & le rangachadh - - + + + Players + Cluicheadairean + + + + + Spectators + + + + + Start Cash: Airgead tòiseachaidh: - - + + First small blind: A' chiad small blind: - - + + Blinds raise interval: Tricead aig togail ("raise") nam blinds: - - + + Blinds raise mode: Dòigh togail ("raise") nam blinds: @@ -1654,7 +1667,7 @@ Feuch an tagh thu fear eile! Geamannan - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -1667,110 +1680,108 @@ p, li { white-space: pre-wrap; } <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - + + Fill up with computer opponents Lìon le co-fharpaisichean coimpiutair - - + + &Start Game &Tòisich air a' gheama - - + + &Kick Player Thoir a' &bhrog dha chluicheadair - - + + Sort alphabetically Seòrsaich a rèir na h-aibidil - - + + Sort by country Seòrsaich a rèir dùthcha - - + + Display idle players Seall cluicheadairean air tàmh - - + + Manual blinds list: Òrdugh nam blinds a làimh: - - + + &Leave Game &Fàg an geama - - Join &any game - Gabh an ge&ama sam bith + Gabh an ge&ama sam bith - - + + &Create Game &Cruthaich geama - - + + &Join Game &Gabh sa gheama - - + + 0 - No game list filter 0 - Liosta nan geama gun chriathradh - - + + 1 - Show open games 1 - Seall geamannan fosgailte - - + + 2 - Show open & non-full games 2 - Seall geamannan fosgailte & nach eil làn - - + + 3 - Show open & non-full & non-private games 3 - Seall geamannan fosgailte & nach eil làn & nach eil prìobhaideach - - + + 4 - Show open & non-full & private games 4 - Seall geamannan fosgailte & nach eil làn & prìobhaideach - - + + Timing: Tìmeachadh: - - + + Lobby-Chat Cabadaich an lobaidh @@ -1783,211 +1794,242 @@ p, li { white-space: pre-wrap; } A' tòiseachadh air geama. Fuirich greis ... - + Joining a private Game A' gabhail ann an geama prìobhaideach - + You are about to join a private game. Please enter the password! Tha thu an impis gabhail ann an geama prìobhaideach. An cuir thu a-steach am facal-faire? - + open fosgailte - - - - + + + + Game Info Fiosrachadh a' gheama - - - + + Spectate + + + + + + Game Geama - - - + + + Players Cluicheadairean - - - + + + State Staid - - - + + + P P - - - + + + Available Players Cluicheadairean ri làimh - + Invite player Thoir cuireadh dha chluicheadair - + Ignore player Leig seachad cluicheadair - + Player infos ... Fiosrachadh a' chluicheadair ... - + + + Admin action ... + + + + + Total kickban + + + + Report inappropriate game name Aithris ainm cluicheadair mì-iomchaidh - - - + + Close game + + + + + + Standard Àbhaisteach - - - + + + Registered players only Cluicheadairean a chlàraich a-mhàin - - - + + + Invited players only Cluicheadairean a fhuair cuireadh a-mhàin - - - + + + Ranking game Geama rangachaidh - Connected players - max. %1 - Cluicheadairean ceangailte - %1 air a char as motha + Cluicheadairean ceangailte - %1 air a char as motha - - - + + + T S - - - + + + sec (action) diog (gnìomhachd) - - - + + + sec (hand delay) diog (dàil na làimhe) - - Connected players - Max. %1 - Cluicheadairean ceangailte - %1 air a char as motha + Cluicheadairean ceangailte - %1 air a char as motha - + running ga ruith - - + + running games: %1 geamannan 'gan ruith: %1 - - + + open games: %1 geamannan fosgailte: %1 - + + + Players (%1) + + + + + + + Spectators (%1) + + + + Invite %1 Thoir cuireadh dha %1 - + Ignore %1 Leig seachad %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>Thug %3 cuireadh dha %1 airson %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>dhiùlt %1 an cuireadh airson %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>Chan urrainn dha %1 gabhail ann an %2 oir tha e trang.</span> - + The game will start in<br><b>%1</b> seconds. Tòisichidh a' gheama ann an<br><b>%1</b> diog. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Ghabh thu ann an geama dhen t-seòrsa "le cuireadh a-mhàin". Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-ainm air liosta nan cluicheadairean ri làimh. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Fhuair thu cuireadh dhan gheama <b>%1</b> le <b>%2</b>.<br>A bheil thu airson gabhail sa gheama seo? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Chan fhaigh thu teachdaireachdan cabadaich no cuiridhean bhon chleachdaiche seo tuilleadh.<br>A bheil thu cinnteach gu bheil thu airson an cluicheadair <b>%1</b> a chur air an liosta neo-shuime agad? - - + + connected players: %1 cluicheadairean ceangailte: %1 @@ -2002,1318 +2044,1329 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a Seall an rangachadh air loidhne - - - + + + Time Ùine - - + + Show player stats Seall stadastaireachd a' chluicheadair - - Connected players - Cluicheadairean ceangailte + Cluicheadairean ceangailte - + hands làmhan - + minutes mionaidean - + double blinds blinds dùbailte - + manual blinds order òrdugh nam blinds a làimh - + Server Error Mearachd an fhrithealaiche - + You should not kick yourself from this game! Cha bu chòir dhut a' bhròg a thoirt dhut fhèin! - + search for player ... a' lorg cluicheadair ... - + Chat is only available to registered players. Chan eil a' chabadaich ri làimh ach airson chluicheadairean a' chlàraich. - + Invite player ... Thoir cuireadh dha chluicheadair ... - + Ignore player ... Leig seachad an cluicheadair ... - + %1 is playing in "%2". Tha %1 a' cluiche ann an "%2". - + %1 is not playing at the moment. Chan eil %1 a' cluiche an-dràsta. - - + + PokerTH - Info Message PokerTH - Brath fiosrachaidh - - + + + + PokerTH - Question PokerTH - Ceist - + Afghanistan Afghanastàn - + ALand Islands Na h-Eileanan Àland - + Albania Albàinia - + Algeria Aildiria - + American Samoa Samotha na h-Aimeireaga - + Andorra Andorra - + Angola Angòla - + Anguilla Anguilia - + Antarctica An Antartaig - + Antigua And Barbuda Aintìoga agus Barbuda - + Argentina An Argantain - + Armenia Airmeinia - + Aruba Arùba - + Australia Astràilia - + Austria An Ostair - + Azerbaijan Asarbaideàn - + Bahamas Na h-Eileanan Bhathama - + Bahrain Bachrain - + Bangladesh Bangladais - + Barbados Barbados - + Belarus A' Bhealaruis - + Belgium A' Bheilg - + Belize A' Bheilìs - + Benin Beinin - + Bermuda Bearmùda - + Bhutan Butàn - + Bolivia Boilibhia - + Bosnia And Herzegovina Bosna is Hearsagobhana - + Botswana Botsuana - + Bouvet Island Eilean Bouvet - + Brazil Braisil - + British Indian Ocean Territory Ranntair Breatannach Cuan nan Innseachan - + Brunei Darussalam Brùnaigh Dàr as-Salàm - + Bulgaria A' Bhulgair - + Burkina Faso Buirciona Faso - + Burundi Burundaidh - + Cambodia Cambuidea - + Cameroon Camarun - + Canada Canada - + Cape Verde An Ceap Uaine - + Cayman Islands Na h-Eileanan Caimean - + Central African Republic Poblachd Meadhan Afraga - + Chad An t-Seàd - + Chile An t-Sile - + China An t-Sìn - + Christmas Island Eilean na Nollaig - + Cocos (Keeling) Islands Na h-Eileanan Cocos (Keeling) - + Colombia Coloimbia - + Comoros Comoros - + Congo Congo - + Congo, The Democratic Republic Of The Congo, Poblachd Dheamocratach - + Cook Islands Eileanan Cook - + Costa Rica Costa Rìcea - + Cote D'Ivoire Côte d'Ivoire - + Croatia A' Chròthais - + Cuba Cùba - + Cyprus Cìopras - + Czech Republic Poblachd na Seice - + Denmark An Danmhairg - + Djibouti Diobùtaidh - + Dominica Doiminicea - + Dominican Republic A' Phoblachd Dhoiminiceach - + Ecuador Eacuador - + Egypt An Èiphit - + El Salvador An Salbhador - + Equatorial Guinea Gini Mheadhan-Chriosach - + Eritrea Eartra - + Estonia An Eastoin - + Ethiopia An Itiop - + Falkland Islands (Malvinas) Na h-Eileanan Fàclannach (Malvinas) - + Faroe Islands Na h-Eileanan Fàro - + Fiji Fìdi - + Finland An Fhionnlann - + France An Fhraing - + French Guiana Guidheàna na Frainge - + French Polynesia Poilinèis na Frainge - + French Southern Territories Ranntairean a Deas na Frainge - + Gabon Gabon - + Gambia A' Ghaimbia - + Georgia A' Chairtbheil - + Germany A' Ghearmailt - + Ghana Gàna - + Gibraltar Diobraltar - + Greece A' Ghreug - + Greenland A' Ghraonlann - + Grenada Greanàda - + Guadeloupe Guadalup - + Guam Guam - + Guatemala Guatamala - + Guernsey Geàrnsaidh - + Guinea Gini - + Guinea-Bissau Gini-Bioso - + Guyana Guidheàna - + Haiti Haidhti - + Heard Island And Mcdonald Islands Eilean Heard is MhicDhòmhnaill - + Holy See (Vatican City State) A' Chathair Naomh (Stàit Cathair na Bhatacain) - + Honduras Hondùras - + Hong Kong Hong Kong - + Hungary An Ungair - + Iceland Innis Tìle - + India Na h-Innseachan - + Indonesia Na h-Innd Innse - + Iran, Islamic Republic Of Ioràn, Poblachd Ioslamach - + Iraq Ioràc - + Ireland Èirinn - + Isle Of Man Eilean Mhanainn - + Israel Iosrael - + Italy An Eadailt - + Jamaica Diameuga - + Japan An t-Seapan - + Jersey Deàrsaidh - + Jordan Iòrdan - + Kazakhstan Casachstàn - + Kenya Ceinia - + Kiribati Ciribeas - + Korea, Democratic People'S Republic Of Coirèa, Sluagh-phoblachd Dheamocratach - + Korea, Republic Of Choirèa, Poblachd - + Kuwait Cuibhèit - + Kyrgyzstan Cìorgastan - + Lao People'S Democratic Republic Làtho, Sluagh-phoblachd Dheamocratach - + Latvia An Laitbhe - + Lebanon Leabanon - + Lesotho Leasoto - + Liberia Libèir - + Libyan Arab Jamahiriya Libia, Sluagh-phoblachd Mhòr Shòisealach Arabach - + Liechtenstein Lichtenstein - + Lithuania An Liotuain - + Luxembourg Lugsamburg - + Macao Macàthu - + Macedonia, The Former Yugoslav Republic Of A' Mhasadon, Seann-Phoblachd Iùgoslabhach - + Madagascar Madagasgar - + Malawi Malabhaidh - + Malaysia Malaidhsea - + Maldives Na h-Eileanan Maladaibh - + Mali Màili - + Malta Malta - + Marshall Islands Eileanan Mharshall - + Martinique Mairtinic - + Mauritania Moratàinea - + Mauritius Na h-Eileanan Mhoiriseas - + Mayotte Mayotte - + Mexico Meagsago - + Micronesia, Federated States Of Na Meanbh-Eileanan, Stàitean Feadarail - + Moldova, Republic Of A' Mholdobha, Poblachd - + Monaco Monaco - + Mongolia Dùthaich nam Mongol - + Montserrat Montsarat - + Morocco Moroco - + Mozambique Mòsaimbic - + Myanmar Miànmar - + Namibia An Namaib - + Nauru Nauru - + Nepal Neapàl - + Netherlands Na Tìrean Ìsle - + Netherlands Antilles Eileanan Aintilia nan Tìrean Ìsle - + New Caledonia Cailleann Nuadh - + New Zealand Sealainn Nuadh - + Nicaragua Niocaragua - + Niger Nìgeir - + Nigeria Nigèiria - + Niue Niue - + Norfolk Island Eilean Norfolk - + Northern Mariana Islands Na h-Eileanan Mairianach a Tuath - + Norway An Nirribhidh - + Oman Omàn - + Pakistan Pagastàn - + Palau Palabh - + Palestinian Territory, Occupied A' phalastain, Ranntair fo fhor-ghlacadh - + Panama Panama - + Papua New Guinea Gini Nuadh Phaputhach - + Paraguay Paraguaidh - + Peru Pearù - + Philippines Na h-Eileanan Filipineach - + Pitcairn Peit a' Chàirn - + Poland A' Phòlainn - + Portugal A' Phortagail - + Puerto Rico Porto Rìceo - + Qatar Catar - + Reunion Réunion - + Romania Romàinia - + Russian Federation An Co-nasgadh Ruiseach - + Rwanda Rubhanda - + Saint Helena Eilean Naomh Eilidh - + Saint Kitts And Nevis Naomh Crìstean is Nibheis - + Saint Lucia Naomh Lùisea - + Saint Pierre And Miquelon Saint Pierre is Miquelon - + Saint Vincent And The Grenadines Naomh Bhionsant agus Eileanan Greanadach - + Samoa Samotha - + San Marino San Marino - + Sao Tome And Principe São Tomé is Príncipe - + Saudi Arabia Aràibia nan Sabhd - + Senegal Seanagal - + Serbia And Montenegro An t-Sèirb is am Monadh Negrach - + Seychelles Na h-Eileanan Sheiseall - + Sierra Leone Siarra Leòmhann - + Singapore Singeapòr - + Slovakia An t-Slòbhac - + Slovenia An t-Slòbhain - + Solomon Islands Eileanan Sholaimh - + Somalia Somàilia - + South Africa Afraga a Deas - + South Georgia And The South Sandwich Islands Seòrsea a Deas is na h-Eileanan Sandwich a Deas - + Spain An Spàinn - + Sri Lanka Sri Lanca - + Sudan Sudàn - + Suriname Suranam - + Svalbard And Jan Mayen Svalbard is Jan Mayen - + Swaziland Dùthaich nan Suasaidh - + Sweden An t-Suain - + Switzerland An Eilbheis - + Syrian Arab Republic Siridhea, Poblachd Arabach - + Taiwan, Province Of China Taidh-Bhàn, Mòr-roinn na Sìne - + Tajikistan Taidigeastàn - + Tanzania, United Republic Of An Tansan, Poblachd Aonaichte - + Thailand Dùthaich nan Tàidh - + Timor-Leste Tìomor an Ear - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trianaid is Tobago - + Tunisia Tuinisea - + Turkey An Tuirc - + Turkmenistan Turcmanastàn - + Turks And Caicos Islands Na h-Eileanan Turcach is Caiceo - + Tuvalu Tubhalu - + Uganda Uganda - + Ukraine An Ucràin - + United Arab Emirates Na h-Iomaratan Arabach Aonaichte - + United Kingdom An Rìoghachd Aonaichte - + United States Na Stàitean Aonaichte - + United States Minor Outlying Islands Meanbh-Eileanan Iomallach nan Stàitean Aonaichte - + Uruguay Uruguaidh - + Uzbekistan Usbagastan - + Vanuatu Vanuatu - + Venezuela A' Bheiniseala - + Viet Nam Bhiet-Nam - + Virgin Islands, British Eileanan Breatannach na Maighdinn - + Virgin Islands, U.S. Eileanan na Maighdinn aig na Stàitean Aonaichte - + Wallis And Futuna Uallas agus Futuna - + Western Sahara Sathara an Iar - + Yemen An Eaman - + Zambia Sàimbia - + Zimbabwe An t-Sìombab - + Are you sure you want to report the game name: "%1" as inappropriate? A bheil thu cinnteach gu bheil thu airson ainm a' gheama: "%1" aithris mar mhì-iomchaidh? + + + Are you sure you want to close the game: +"%1"? + + + + + Are you sure you want to total kickban the player: "%1"? + + gameTable @@ -3323,273 +3376,273 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a PokerTH 0.6-beta - An t-einnsean Open-Source Texas Holdem - + Hands Làmhan - + Chat Cabadaich - + Save Sàbhail - + Log Loga - + Away Air falbh - + Manual Action (default) Gnìomhachd a làimh (bun-roghainn) - + Auto-Check / Auto-Fold Fèin-"check" / Fèin-phaisg ("fold") - + Auto-Check / Auto-Call-Any Fèin-"check" / Fèin-"call" fear sam bith - + Speed: Astar: - - + + Start Local Game ... Tòisich air geama ionadail ... - - + + Ctrl+N Ctrl+N - - + + Quit Fàg an-seo - - + + Ctrl+Q Ctrl+Q - - + + About PokerTH ... Mu dheidhinn PokerTH ... - - + + Settings ... Roghainnean ... - - + + Create Network Game ... Cruthaich geama lìonraidh ... - - + + Ctrl+O Ctrl+R - - + + Join Network Game ... Gabh ann an geama lìonraidh ... - - + + Ctrl+J Ctrl+G - - - + + + Fullscreen Làn-sgrìn - - + + Ctrl+F Ctrl+S - - + + Show/Hide Chat Window Seall/falaich uinneag na cabadaich - - + + Ctrl+T Ctrl+C - - - - - - + + + + + + Show/Hide Hands Window Seall/falaich uinneag nan làmhan - - + + Ctrl+H Ctrl+L - - + + Show/Hide Log Window Seall/falaich uinneag an loga - - + + Ctrl+L Ctrl+O - - + + Internet Game ... Geama eadar-lìn ... - - + + Ctrl+I Ctrl+E - - + + Show/Hide Away Window Seall/falaich uinneag air falbh - - + + Ctrl+A Ctrl+A - + Kick Thoir a' bhròg - + Vote Timeout: Falbhaidh an ùine air a' bhòtadh: - + Yes Tha - + No Chan eil - + Player info Fiosrachadh a' chluicheadair - + Chance Seans - + Configure PokerTH ... Rèitich PokerTH ... - - + + Close Dùin - - + + Ctrl+X Ctrl+X - + Vote started by: Bhòt air a thòiseachadh le: - - + + Show/Hide Chance Window Seall/falaich uinneag an t-seans - - + + Ctrl+C Ctrl+U - + &View &Sealladh - + &Settings &Roghainnean - + Shortcut: <Shift> Ath-ghoirid: <Shift> - + Settings Roghainnean - + Configure PokerTH Rèitich PokerTH @@ -3597,142 +3650,147 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stad - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1- An t-einnsean Open-Source Texas Holdem - - - - - - - - + + + + + + + + Start Tòisich - - - - - + + + + + Lobby Lobaidh - - + + Chat Cabadaich - + Closing PokerTH during network game A' dùnadh PokerTH rè geama lìonraidh - + You are the hosting server. Do you want to close PokerTH anyway? 'S e an t-òstair a th' annad. A bheil thu airson PokerTH a dhùnadh co-dhiù? - + Really want to exit? A bheil thu cinnteach gu bheil thu airson fàgail? - + PokerTH - Close Table? PokerTH - A bheil thu airson am bòrd a dhùnadh? - + PokerTH - Internet Game Message PokerTH - Brath a' gheama eadar-lìn - + Attention! Do you really want to leave the current game and go back to the lobby? An aire! A bheil thu cinnteach gu bheil thu airson an geama seo fhàgail is tilleadh dhan lobaidh? - - + + Chat is only available to registered players. Chan eil a' chabadaich ri làimh ach airson chluicheadairean a' chlàraich. - - + + Spectators + + + + + Chance Seans - - + + Kick Thoir a' bhròg - - + + Do you want to kick <b>%1</b><br>from this game? A bheil thu airson a' bhròg a thoirt dha <b>%1</b><br>on gheama seo? - - - - + + + + <b>%1</b> secs left <b>%1</b> diog air fhàgail - + vote bhòta - + votes bhòtaichean - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Tha <b>%2</b> %3 an aghaidh cluicheadair <b>%1</b>.<br>Tha <b>%4</b> bhòta(ichean) a dhìth gus a' bhròg a thoirt dha. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Tha <b>%1</b> %2 nad aghaidh.<br>Tha <b>%3</b> bhòta(ichean) a dhìth gus am faigh thu a' bhròg. @@ -3931,56 +3989,66 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error A' luchdadh pròifil an fhrithealaiche-Mearachd fhaidhle - - - - Could not load server-profiles-file: - Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a luchdadh: + Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a luchdadh: - + + + + + Could not load server-profiles-file: +%1 + + + + Save Server Profile Error Sàbhail a' mhearachd aig pròifil an fhrithealaiche - + A profile with the name: %1 already exists. Would you like to overwrite ? Tha pròifil ann air a bheil: %1 mu thràth. A bheil thu airson sgrìobhadh thairis air? - + Read Server-Profile List Error A' leughadh liosta pròifil nam frithealaiche-Mearachd fhaidhle - + Could not read server-profiles list Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a leughadh - - + + Save Server-Profile-File Error A' sàbhaladh pròifil an fhrithealaiche-Mearachd fhaidhle - - + + + Could not save server-profiles-file: +%1 + + + Could not save server-profiles-file: - Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a shàbhaladh: + Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a shàbhaladh: @@ -4044,12 +4112,12 @@ A bheil thu airson sgrìobhadh thairis air? manualBlindsOrderDialogImpl - + Manual Blinds Order Òrdugh nam blinds a làimh - + You cannot set more than 30 manual blinds. Chan urrainn dhut barrachd air 30 blinds a làimh a shuidheachadh. @@ -4089,49 +4157,49 @@ A bheil thu airson sgrìobhadh thairis air? Roghainnean a' gheama ionadail - + Number of players: Àireamh dhe chluicheadairean: - + Start Cash: Airgead tòiseachaidh: - + $ £ - + Blinds Blinds - - + + Use saved blinds settings Cleachd roghainnean nam blinds air an sàbhaladh - + OK Ceart ma-thà - - + + Change blinds settings ... Atharraich roghainnean nam blinds ... - - + + Game Speed: Luaths a' gheama: @@ -4172,38 +4240,38 @@ A bheil thu airson sgrìobhadh thairis air? selectAvatarDialogImpl - - - + + + Avatar File Error Mearachd le faidhle an avatar - + Please select an avatar from the list! Feuch an tagh thu avatar on liosta! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Tha meud an fhaidhle aig an dealbh a thagh thu ro mhòr. (30KB air a char as motha) Feuch an tagh thu dealbh nas lugha! - + The entered avatar picture doesn't exist. Please enter an valid picture! Chan eil dealbh an avatar a chuir thu a-steach ann. Feuch an cuir thu a-steach dealbh dligheach! - + Select external avatar picture Tagh dealbh avatar bho thaobh a-muigh - + Images (*.png *.jpg *.gif) Dealbhan (*.png *.jpg *.gif) @@ -4224,399 +4292,429 @@ Feuch an cuir thu a-steach dealbh dligheach! Eadar-aghaidh - - + + Language: Cànan: - - + + Show fade-out animation for non-winning cards Seall beòthachadh crìonaidh airson cairtean nach do bhuannaich - - + + Show flip-card animation Seall beòthachadh air tionndadh nan cairtean - - + + Show buttons for small blind and big blind Seall putanan airson small blind is big blind - - + + Show own cards only on mouse click Na seall na cairtean agam ach le briogadh na luchaige - + Reverse order of F-Keys (F1 - F4) Òrdugh contrarra nan iuchraichean F (F1 - F4) - - + + Network / Internet Game Geama lìonraidh / eadar-lìn - - + + Switch keyboard focus to bet-input-field if it's your turn Cuir fòcas a' mheur-chlàir air raon cur a-steach "geall" mas e an turas agadsa a th' ann - + Sound Fuaim - + Factory Settings Roghainnean an fhactaraidh - - + + + Common + + + + + Disable splashscreen on startup Cuir sgrìn-aithneachaidh aig toiseach a' gheama à comas - - + + Show country flag in the corner of avatar Seal bratach na dùthcha air oisean an avatar - - + + Activate the "accidentally call after big raise" blocker Gnìomhaich am bacadair "'call' le mearachd an dèidh togail ('raise') mhòir" - - + + + Do not hide avatars of players which are on the ignore list + + + + + + Disable emoticons in the chat + + + + + Game Table Bòrd a' gheama - - - - + + + + Description Tuairisgeul - - - - + + + + Maintainer Neach-glèidhidh - - - + + + State Staid - - + + Card Deck Paca chairt - - + + Card Back Cùlaibh nan cairtean - - + + Use card back from card style Cleachd cùlaibh nan cairtean aig stoidhle nan cairtean - - + + Use custom card back picture: Cleachd dealbh gnàthaichte mar chùlaibh nan cairtean: - - + + Play sound effects Cluich èifeachdan fuaime - - + + Sound Volume: Àirde fuaime: - - + + 10 10 - - + + Sound Categories Roinnean-seòrsa nam fuaimean - - + + Play game actions sounds like "check", "call", "raise" Cluich fuaimean airson gnìomhan a' gheama mar "check", "call", "raise" - - + + Play lobby chat notifications Cluich brathan aig cabadaich an lobaidh - - + + Play network/internet game notifications like "player joined the game" Cluich brathan aig geama lìonraidh/eadar-lìn mar "ghabh cluicheadair sa gheama" - + Local Game Settings Roghainnean a' gheama ionadail - - + + Number of players: Àireamh dhe chluicheadairean: - - - - + + + + Start Cash: Airgead tòiseachaidh: - - - - - - - - + + + + + + + + $ £ - - - - + + + + First small blind: A' chiad small blind: - - - - + + + + Raise blinds: Tog ("raise") blinds: - - - - - - - - + + + + + + + + Every: Gach: - - - - + + + + hands làmh - - - - + + + + minutes mionaid - - - - + + + + Raise mode: Dòigh na togail ("raise"): - - - - + + + + Always double blinds Blinds dùbailte an-còmhnaidh - - - - + + + + Manual blinds order: Òrdugh nam blinds a làimh: - - - - + + + + Edit ... Deasaich ... - - + + Game Speed: Luaths a' gheama: - - + + Pause between hands (press "start" button to go on) Stad eadar làmhan (briog air "tòisich" gus leantainn air adhart) - - + + Show game settings dialog on every new game Seall còmhradh airson roghainnean a' gheama le toiseach gach geama ùir - + + + Server Password: + + + + + + Allow spectators to watch the game + + + + OK Ceart ma-thà - + Network Game Settings Roghainnean a' gheama lìonraidh - - + + Maximum number of players: An àireamh as motha dhe chluicheadairean: - - + + Timeout for player action: Crìochan ùine airson gnìomhachd a' chluicheadair: - - + + Reset all settings to default ... Ath-shuidhich na h-uile roghainn dhan bhun-roghainn ... - - + + Note: You can not reset all settings to default during a running game! An aire: chan urrainn dhut na h-uile roghainn ath-shuidheachadh dhan bhun-roghainn nuair a bhios geama a' ruith! - - - - + + + + s diog - - + + Network Server Settings Roghainnean an fhrithealaiche lìonraidh - - - - + + + + Server Port: Port an fhrithealaiche: - - - - + + + + Use SCTP Cleachd SCTP - - - - + + + + Use IPv6 Cleachd IPv6 - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://en.wikipedia.org/wiki/Ipv6">Dè th' ann?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Dè th' ann?</a> - + Internet Game Settings Roghainnean a' gheama eadar-lìn - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4627,61 +4725,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: thèid </span><span style=" font-weight:600; font-style:italic;">Roghainnean a' gheama</span><span style=" font-style:italic;"> bunaiteach mar "An àireamh as motha dhe chluicheadairean", "Airgead tòiseachaidh" is "Small Blind" a chleachdadh </span><span style=" font-weight:600; font-style:italic;">bho Roghainnean a' gheama lìonraidh.</span></p></body></html> - - + + Server Address: Seòladh an fhrithealaiche: - - + + Use password for private game: Cleachd facal-faire airson geama phrìobhaideach: - - + + Computer Engine Einnsean coimpiutair - - + + Opponent 6: Co-fharpaisiche 6: - - + + Opponent 5: Co-fharpaisiche 5: - - + + Opponent 4: Co-fharpaisiche 4: - - + + Opponent 3: Co-fharpaisiche 3: - - + + Opponent 2: Co-fharpaisiche 2: - - + + Opponent 1: Co-fharpaisiche 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4692,111 +4790,111 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: gheibh thu an càileachd as fhearr aig an avatar le co-mheas deilbh mar </span><span style=" font-weight:600; font-style:italic;">leud=50, àirde=50.</span></p></body></html> - - + + Enable/Disable Logging Cuir logadh an comas/à comas - - + + Log File Directory: Pasgan aig an fhaidhle logaidh: - - + + Write log after every: Sgrìobh loga an dèidh gach: - - + + action (high frequent disc access) gnìomhachd (inntrigeadh dhan diosga gu tric) - - + + hand (medium disc access) làmh (inntrigeadh dhan diosga meadhanach) - - + + game (low disc access) geama (inntrigeadh dhan diosga ainneamh) - + Log Messages Logaich teachdaireachdan - + Player Nicks/Avatars Far-ainmean/avataran nan cluicheadairean - + Show right toolbox Seall am bogsa-inneal taobh deas - + Show left toolbox Seall am bogsa-inneal taobh clì - - + + Play blind raise notification Cluich brath air togail ("raise") a' blind - - + + Automatic Server Configuration URL URL fèin-rèiteachaidh an fhrithealaiche - - + + Serverlist Address: Seòladh aig liosta nam frithealaichean: - - + + Manual Server Configuration Rèiteachaidh an fhrithealaiche a làimh - + Human Player: Cluicheadair daonna: - + (This nick will also be used for the online game login) (Logaidh tu a-steach leis an fhar-ainm seo dha gheamannan air loidhne cuideachd) - + Note: Best avatar quality with image ratio like width=50, height=50. An aire: gheibh thu an càileachd as fhearr aig an avatar le co-mheas deilbh mar leud=50, àirde=50. - - + + Store log files for: Sàbhail faidhlichean logaidh fad: - - + + Day(s) Là(ithean) @@ -4825,62 +4923,62 @@ p, li { white-space: pre-wrap; } Far-ainmean/avataran - - + + Show cards chance monitor Seall monatair air seans nan cairtean - + Note: Best quality with image ratio like width=48, height=76. An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar leud=48, àirde=76. - - + + Avatar Server: Frithealaiche an avatar: - + Style Stoidhle - - + + Don't translate poker strings like check, call, raise from game table style Na eadar-theangaich sreangan poker mar "check", "call", "raise" o stoidhle aig bòrd a' gheama - - - - + + + + Add ... Cuir ris ... - - - - + + + + Remove Thoir air falbh - - - - + + + + Preview - Information: Ro-shealladh - Fiosrachadh: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4893,8 +4991,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Faigh stoidhlichean ùra a' bhùird gheama aig PokerTH ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4907,7 +5005,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Faigh stoidhlichean ùra airson pacannan chairt aig PokerTH ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4926,96 +5024,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar </span><span style=" font-weight:600; font-style:italic;">leud=48, àirde=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Dàil eadar làmhan: - - + + Server Frithealaiche - - + + Game Geama - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. An aire: Thèid roghainnean bunaiteach a' gheama mar "An àireamh as motha dhe chluicheadairean", "Airgead tòiseachaidh" is "Small Blind" a chleachdadh bho "Roghainnean a' gheama lìonraidh". - - + + Default game name: Ainm bunaiteach a' gheama: - - + + Default game type: Seòrsa bunaiteach a' gheama: - - + + Standard Àbhaisteach - - + + Registered players only Cluicheadairean a chlàraich a-mhàin - - + + Invited players only Cluicheadairean a fhuair cuireadh a-mhàin - - + + Ranking game Geama rangachaidh - - + + Show lobby chat Seall cabadaich an lobaidh - - + + Automatically leave the table after the game finished Fàg am bòrd gu fèin-obrachail nuair a thig crìoch air a' gheama - - + + Ignored Players Cluicheadairean air an liosta neo-shuime - - + + Player Cluicheadair - - + + Remove Player Thoir an cluicheadair air falbh - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5028,20 +5126,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cluicheadair daonna:<br /><span style=" font-style:italic;">(Logaidh tu a-steach leis an fhar-ainm seo dha gheamannan air loidhne cuideachd)</span></p></body></html> - - + + Opponent 7: Co-fharpaisiche 7: - - + + Opponent 8: Co-fharpaisiche 8: - - + + Opponent 9: Co-fharpaisiche 9: @@ -5049,65 +5147,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Mearachd leis na roghainnean - + The entered flipside picture doesn't exist. Please enter an valid picture! Chan eil an dealbh cùlaibh a chuir thu a-steach ann. Feuch an cuir thu a-steach dealbh dligheach! - - + + The log file directory doesn't exist. Please select an valid directory! Chan eil am pasgan airson an fhaidhle loga ann. Feuch an tagh thu pasgan dligheach! - + Language Changed Cànan air atharrachadh - + You have changed application language to %1. Please restart PokerTH to load new language! Dh'atharraich thu cànan an aplacaid gu %1. Feuch an ath-thòisich thu PokerTH gus an cànan ùr a luchdadh! - + Select your flipside picture Tagh an dealbh cùlaibh agad - + Images (*.png *.jpg *.gif) Dealbhan (*.png *.jpg *.gif) - + Open Directory Fosgail pasgan - - + + Blinds Error Mearachd le blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5116,7 +5214,7 @@ nas lugha na a' chiad small blind! Thèid luach a' chiad small blind seo a shuidheachadh air an luach ceadaichte as motha. - + The entered server list address is not a valid URL. Please enter a valid server list address! Chan eil an seòladh aig liosta nam frithealaichean a chuir thu a-steach 'na URL dligheach. @@ -5174,236 +5272,246 @@ Feuch an cuir thu a-steach seòladh aig liosta nam frithealaichean dligheach! + Galician + + + + German Gearmailtis - + Greek Greugais - + Hungarian Ungairis - + Italian Eadailtis - + Japanese Seapanais - + Lithuania Liotuainis - + Norwegian Nirribhis - + Polish Pòlainnis - + Portuguese-Brazilian Portagailis Bhraisileach - + Portuguese-Portuguese Portagailis na Portagaile - + Russian Ruisis - + Scottish Gaelic Gàidhlig na h-Alba - + Slovak Slòbhacais - + Spanish Spàinntis - + Swedish Suainis - + Tamil Taimilis - + Turkish Turcais - + + Vietnamese + + + + The opponent names are not unique. Please choose different names for each Opponent! Chan eil ainm fa leth aig gach co-fharpaisiche. Feuch an tagh thu ainm eadar-dhealaichte airson gach co-fharpaisiche! - + Settings Information Fiosrachadh nan roghainnean - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Ah'dhatharraich thu pasgan am faidhle loga. Feuch an ath-thòisich thu PokerTH gus am pasgan ùr airson nam faidhlichean loga a chleachdadh! - - + + Maintainer Name Ainm an neach-glèidhidh - - + + Maintainer EMail Post-d an neach-glèidhidh - - + + Create Date Ceann-latha a' chruthachaidh - + Windows Behaviour Giùlan Windows - + scaleable gabhaidh e sgèileadh - + fixed suidhichte - + Minimum Size Meud as lugha - + Maximum Size Meud as motha - + Fixed Size Meud suidhichte - + State Staid - + Please select your game table style Tagh stoidhle aig bòrd a' gheama - + PokerTH game table styles (*.xml) Stoidhlean bòrd a' gheama aig PokerTH (*.xml) - + Game Table Style Error Mearachd le stoidhle bòrd a' gheama - + Selected game table style file is already in the list. Please select another one to add! Tha an stoidhle bùird a thagh thu air an liosta mu thràth. Feuch an tagh thu tè eile airson cur ris! - + Game Table Style File Error Mearachd le faidhle airson stoidhle bòrd a' gheama - + Could not load game table style file correctly. Style will not be placed into list! Cha b' urrainn dhuinn am faidhle airson stoidhle bòrd a' gheama a luchdadh mar bu chòir. Cha tèid an stoidhle a cur ris an liosta! - + Please select your card deck style Tagh an stoidhle airson a' phaca cairt agad - + PokerTH card deck styles (*.xml) Stoidhle paca chairt aig PokerTH (*.xml) - + Card Deck Style Error Mearachd le stoidhle airson paca chairt - + Selected card deck style file is already in the list. Please select another one to add! Tha am faidhle airson stoidhle paca chairt air an liosta mu thràth. Feuch an tagh thu fear eile airson cur ris! - + Card Deck Style File Error Mearachd le faidhle airson stoidhle paca chairt - + Could not load card deck style file correctly. Style will not be placed into list! Cha b' urrainn dhuinn am faidhle airson stoidhle paca chairt a luchdadh mar bu chòir. Cha tèid an stoidhle a chur ris an liosta! - + PokerTH - Settings PokerTH - Roghainnean - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? An aire: sguabaidh seo às dha na roghainnean pearsanta agad uile is dùinidh e PokerTH! @@ -5469,12 +5577,12 @@ A bheil thu cinnteach gu bheil thu airson roghainnean an fhactaraidh ath-shuidhe startNetworkGameDialogImpl - + Server Error Mearachd an fhrithealaiche - + You should not kick yourself from this game! Cha bu chòir dhut a' bhròg a thoirt dhut fhèin! @@ -5633,106 +5741,106 @@ A bheil thu cinnteach gu bheil thu airson roghainnean an fhactaraidh ath-shuidhe startWindowImpl - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Network Error Mearachd lìonraidh - + Server address was not set. Cha deach seòladh an fhrithealaiche a shuidheachadh. - + An invalid port was set (ports 0-1023 are not allowed). Chaidh post mì-dhligheach a shuidheachadh (chan eil na puirt 0-1023 ceadaichte). - + Could not create a socket for TCP communication. Cha b' urrainn dhuinn socaid airson conaltradh TCP a chruthachadh. - + Could not set the IP address. Cha b' urrainn dhuinn an seòladh IP a shuidheachadh. - + Could not set the port for this type of address. Cha b' urrainn dhuinn am port airson an t-seòrsa seo dhe sheòladh a shuidheachadh. - + The server name could not be resolved. Cha b' urrainn dhuinn ainm an fhrithealaiche fhuasgladh. - + Bind failed - please choose a different port. Dh'fhàillig leis a' cheangal - feuch an tagh thu port eile. - + Internal network error: "listen" failed. Mearachd lìonraidh taobh a-staigh: dh'fhàillig leis an "listen". - + Server execution was terminated. Chaidh giullachd an fhrithealaiche a chrìochnachadh. - + Could not connect to the server. Cha b' urrainn dhuinn ceangal a dhèanamh ris an fhrithealaiche. - + Connection timed out. Please check the server address. @@ -5743,319 +5851,350 @@ Feuch an dearbhaich thu seòladh an fhrithealaiche. Ma tha am frithealaiche taobh thall rùtair NAT, dèan cinnteach gu bheil port forwarding air a chur air taobh an fhrithealaiche. - + Internal network error: "select" failed. Mearachd lìonraidh taobh a-staigh: dh'fhàillig leis an "select". - + Internal network error: "send" failed. Mearachd lìonraidh taobh a-staigh: dh'fhàillig leis an "send". - + Internal network error: Duplicate TCP connection. Mearachd lìonraidh taobh a-staigh: Ceangal TCP dùblaichte. - + An invalid network packet was received. Please make sure that all players use the same version of PokerTH. Fhuaras pacaid lìonraidh mì-dhligheach. Dèan cinnteach gun cleachd na h-uile cluicheadair an aon tionndadh aig PokerTH. - + Internal state error. Please make sure that all players use the same version of PokerTH. Mearachd staide taobh a-staigh. Dèan cinnteach gun cleachd na h-uile cluicheadair an aon tionndadh aig PokerTH. - + Invalid server list URL. Please correct the address in the settings. URL liosta nam frithealaichean mì-dhligheach. Feuch an ceartaich thu an seòladh sna roghainnean. - + The PokerTH internet server list contains invalid data. If you use a custom server list, please make sure its format is correct. Tha dàta mì-dhligheach air liosta nam frithealaichean eadar-lìn aig PokerTH. Ma chleachdas tu liosta nam frithealaichean gnàthaichte, dèan cinnteach gu bheil a fòrmat mar bu chòir. - + Could not unzip the PokerTH internet server list. Cha b' urrainn dhuinn liosta nam frithealaichean eadar-lìn aig PokerTH dì-dhùmhlachadh. - + Could not download the PokerTH internet server list. Please make sure you are directly connected to the internet. Cha b' urrainn dhuinn liosta nam frithealaichean eadar-lìn aig PokerTH a luchdadh a-nuas. Dèan cinnteach gu bheil thu ceangailte ris an eadar-lìn gu dìreach. - + Could not open the target file when downloading the server list. Cha b' urrainn dhuinn am faidhle-uidhe fhosgladh nuair a luchdaich sinn a-nuas liosta nam frithealaichean. - + The PokerTH server does not support this version of the game.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Cha chuir am frithealaiche PokerTH taic dhan tionndadh seo dhen gheama.<br>Feuch an tadhail thu air <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> is an luchdaich thu an tionndadh as ùire a-nuas. - + Sorry, this server is already full. Tha sinn duilich, ach tha am frithealaiche seo làn mar-thà. - + Invalid login. Please check your username and password. Logadh a-steach mì-dhligheach. Feuch an dearbhaich thu an t-ainm cleachdaiche is am facal-faire agad. - + Your account is blocked indefinitely. Chaidh an cunntas agad a bhacadh gun chrìch. - + You cannot login at this time. Please try again in a few seconds. Chan urrainn dhut logadh a-steach an-dràsta. am feuch thu ris a-rithist an ceann greis? - + You cannot join this game, because another player in that game has your network address. Chan urrainn dhut gabhail sa gheama seo oir tha an seòladh lìonraidh agad aig cluicheadair eile sa gheama seo. - + Your connection to the server is very slow, the game had to start without you. Cha an ceangal agad dhan fhrithealaiche glè shlaodach, bha aig a' gheama tòiseachadh às d' aonais. - + This game is of type invite-only. You cannot join this game without being invited. Tha an geama seo dhen t-seòrsa le cuireadh a-mhàin. Chan urrainn dhut gabhail sa gheama seo gun chuireadh fhaighinn. - + Invalid password when joining the game. Please reenter the password and try again. Facal-faire mì-dhligheach le gabhail sa gheama. Cuir am facal-faire a-steach turas eile is feuch ris a-rithist. - + The avatar report was accepted by the server. Thank you. Ghabh am frithealaiche ris an aithris air avatar. Mòran taing. - + This avatar was already reported by another player. Chaidh an t-avatar seo aithris le cluicheadair eile mu thràth. - + An error occurred while reporting the avatar. Thachair mearachd le aithris air an avatar. - + The game name report was accepted by the server. Thank you. Ghabh am frithealaiche ris an aithris air ainm a' gheama. Mòran taing. - + This game name was already reported by another player. Chaidh ainm a' gheama seo aithris le cluicheadair eile mu thràth. - + An error occurred while reporting the game name. Thachair mearachd le aithris air ainm a' gheama. - + + The game was closed. + + + + + The game could not be closed. + + + + + The player was kicked and banned permanently. + + + + + The player was kicked, but could not be banned because it was a guest player. + + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + + + + + The player could not be found. + + + + The password is too long. Please choose another one. Tha am facal-faire ro fhada. Feuch an tagh thu fear eile. - + Rejoin possible! Faodaidh tu gabhail ann a-rithist! - + There is an existing session with a previous game. Tha seisean ann le geama a chluich thu roimhe. - + Do you want to rejoin this game? A bheil thu airson gabhail sa gheama seo a-rithist? - - + + Start Network Game Tòisich air geama lìonraidh - + The connection to the server was lost. Chaidh an ceangal dhan fhrithealaiche air chall. - + The game name is either too short or too long. Please choose another one. Tha ainm a' gheama ro ghoirid no ro fhada. Feuch an tagh thu fear eile. - + The game could not be found. Cha deach an geama a lorg. - + The chat text is invalid. Tha teacsa na cabadaich mì-dhligheach. - + The server referred to an unknown player. Aborting. Rinn am frithealaiche iomradh air cluicheadair neo-aithnichte. A' sgur dheth. - + Internal error: The current player could not be found. Mearachd taobh a-staigh: Cha deach an cluicheadair làithreach a lorg. - + Internal error: The current player is not active. Mearachd taobh a-staigh: Chan eil an cluicheadair làithreach gnìomhach. - + You were kicked from the server. Fhuair thu a' bhròg on fhrithealaiche. - + You were temporarily banned from the server. Chaidh do thoirmeasg on fhrithealaiche gu sealach. - + Your server connection timed out due to inactivity. You are very welcome to reconnect! Dh'fhalbh an ùine air a' cheangal agad dhan fhrithealaiche le dìth gnìomhachd. Tha thu làn di-beathte ceangal ris a-rithist! - + The client player count is invalid. Tha àireamh nan cluicheadairean cliaint mì-dhligheach. - + Too many manual blinds were set. Please reconfigure the manual blinds. Chaidh cus blinds a shuidheachadh. Feuch an ath-rèitich thu na blinds a làimh. - + An invalid avatar file was configured. Please choose a different avatar. Chaidh faidhle avatar mì-dhligheach a shuidheachadh. Feuch an tagh thu avatar eile. - + The selected avatar file is too large. Please choose a different avatar. Chaidh faidhle avatar a tha ro mhòr a thaghadh. Feuch an tagh thu avatar eile. - + An internal avatar error occured. Please report this to an admin in the lobby chat. Thachair mearachd avatar taobh a-staigh. An aithris thu seo dha rianaire ann an cabadaich an lobaidh? - + Could not start game: Synchronization failed. Cha b' urrainn dhuinn an geama a thòiseachadh: Dh'fhàillig leis an t-sioncronachadh. - + The server is down for maintenance. Please try again later. Tha am frithealaiche far loidhne airson obrach-glèidhidh. Am feuch thu ris a-rithist an ceann greis? - + An internal error occured. Thachair mearachd taobh a-staigh. - - - - - - - - - - - - + + + + + + + + + + + + Network Notification Brath lìonraidh - + You were kicked from the game. Fhuair thu a' bhròg on gheama. - + Sorry, this game is already full. Tha sinn duilich, ach tha an geama seo làn mar-thà. - + Unable to join - the server has already started the game. Chan urrainn dhut gabhail ann - tha am frithealaiche air an geama a thòiseachadh. - + Your admin state timed out due to inactivity. Feel free to create a new game! Dh'fhalbh an ùine air an staid rianaire agad le dìth gnìomhachd. Tha thu làn di-beathte geama ùr a chruthachadh! - + You cannot join this type of game as guest. Chan urrainn dhut gabhail san seòrsa dhe gheama seo mar aoigh. - + The settings are invalid for this type of game. Tha na roghainnean mì-dhligheach airson an seòrsa dhe gheama seo. - + A new release of PokerTH is available.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Tha foillseachadh ùr aig PokerTH ri làimh.<br>Feuch an tadhail thu air <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> is an luchdaich thu an tionndadh as ùire a-nuas. - + This beta release of PokerTH is outdated.<br>Please go to <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> and download the latest version. Tha am foillseachadh beta seo aig PokerTH ro shean.<br>Feuch an tadhail thu air <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> is an luchdaich thu an tionndadh as ùire a-nuas. - - + + Server Message Brath an fhrithealaiche diff --git a/ts/pokerth_gl.ts b/ts/pokerth_gl.ts index ce992580..a52c070b 100644 --- a/ts/pokerth_gl.ts +++ b/ts/pokerth_gl.ts @@ -193,22 +193,22 @@ Considere poñerse en contacto co autor do estilo de taboleiro a través do ende Erro do estilo de taboleiro — O estilo está obsoleto - + Everything OK! Está todo correcto. - + Some pictures are missing, please contact style maintainer for this issue. Faltan algunhas imaxes. Considere poñerse en contacto co mantedor do estilo para informalo do problema. - + Some style fields are missing, please contact style maintainer for this issue. Faltan algúns campos do estilo. Considere poñerse en contacto co mantedor do estilo para informalo do problema. - + This style is outdated, please contact style maintainer for this issue. O estilo está obsoleto. Considere poñerse en contacto co mantedor do estilo para informalo do problema. @@ -1563,50 +1563,50 @@ p, li { white-space: pre-wrap; } - + Invite %1 Convidar a %1 - + Ignore %1 Ignorar a %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 convidou a %1 a unirse a %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 rexeitou a invitación para %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 non pode unirse a %2 porque está ocupado.</span> - - + + The game will start in<br><b>%1</b> seconds. A partida comeza en <br><b>%1</b> segundos. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Uniuse a unha partida privada, á que só se pode acceder previa invitación. Para convidar a outros xogadores, prema co botón secundario a súa entrada na lista de xogadores dispoñíbeis, e use o menú de contexto. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? <b>%2</b> convidouno á partida <b>%1</b>.<br>Quere unirse? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Non volverá recibir mensaxes de conversa ou invitacións a partidas deste usuario.<br>Está seguro de que quere poñer a <b>%1</b> na súa lista de xogadores ignorados? @@ -1695,1274 +1695,1274 @@ Para convidar a outros xogadores, prema co botón secundario a súa entrada na l Buscar un xogador… - + Chat is only available to registered players. Só os xogadores rexistrados poden participar a conversa. - + Invite player ... Convidar… - + Ignore player ... Ignorar… - + %1 is playing in "%2". %1 está a xogar en «%2». - + %1 is not playing at the moment. %1 non está a xogar. - - + + PokerTH - Info Message PokerTH — Mensaxe de información - - - - + + + + PokerTH - Question PokerTH — Pregunta - + Afghanistan Afganistán - + ALand Islands Åland - + Albania Albania - + Algeria Alxeria - + American Samoa Samoa Americana - + Andorra Andorra - + Angola Angola - + Anguilla Anguila - + Antarctica Antártida - + Antigua And Barbuda Antiga e Barbuda - + Argentina Arxentina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Acerbaixán - + Bahamas Bahamas - + Bahrain Bahrein - + Bangladesh Bangladesh - + Barbados Barbados - + Belarus Bielorrusia - + Belgium Bélxica - + Belize Belice - + Benin Benín - + Bermuda Bermuda - + Bhutan Bután - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia e Hercegovina - + Botswana Botsuana - + Bouvet Island Illa Bouvet - + Brazil Brasil - + British Indian Ocean Territory Territorio Británico do Océano Índico - + Brunei Darussalam Brunei - + Bulgaria Bulgaria - + Burkina Faso Burquina Faso - + Burundi Burundi - + Cambodia Camboxa - + Cameroon Camerún - + Canada Canadá - + Cape Verde Cabo Verde - + Cayman Islands Illas Caimán - + Central African Republic República Centroafricana - + Chad Chad - + Chile Chile - + China China - + Christmas Island Illa de Nadal - + Cocos (Keeling) Islands Illas Cocos (Keeling) - + Colombia Colombia - + Comoros Comores - + Congo Congo - + Congo, The Democratic Republic Of The República democrática do Congo - + Cook Islands Illas Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Costa do Marfil - + Croatia Croacia - + Cuba Cuba - + Cyprus Chipre - + Czech Republic República Checa - + Denmark Dinamarca - + Djibouti Xibutí - + Dominica Dominica - + Dominican Republic República Dominicana - + Ecuador Ecuador - + Egypt Exipto - + El Salvador O Salvador - + Equatorial Guinea Guinea Ecuatorial - + Eritrea Eritrea - + Estonia Estonia - + Ethiopia Etiopía - + Falkland Islands (Malvinas) Illas Malvinas (Falkland) - + Faroe Islands Illas Feroe - + Fiji Fidxi - + Finland Finlandia - + France Francia - + French Guiana Güiana Francesa - + French Polynesia Polinesia Francesa - + French Southern Territories Terras Austrais e Antárticas Francesas - + Gabon Gabón - + Gambia Gambia - + Georgia Xeorxia - + Germany Alemaña - + Ghana Gana - + Gibraltar Xibraltar - + Greece Grecia - + Greenland Grenlandia - + Grenada Granada - + Guadeloupe Guadalupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bisau - + Guyana Güiana - + Haiti Haití - + Heard Island And Mcdonald Islands Illa Heard e Illas McDonald - + Holy See (Vatican City State) Cidade do Vaticano - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Hungría - + Iceland Islandia - + India India - + Indonesia Indonesia - + Iran, Islamic Republic Of Irán - + Iraq Iraq - + Ireland Irlanda - + Isle Of Man Illa de Man - + Israel Israel - + Italy Italia - + Jamaica Xamaica - + Japan Xapón - + Jersey Xersei - + Jordan Xordania - + Kazakhstan Casaquistán - + Kenya Quenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Corea do Norte - + Korea, Republic Of Corea do Sur - + Kuwait Kuwait - + Kyrgyzstan Quirguicistán - + Lao People'S Democratic Republic Laos - + Latvia Letonia - + Lebanon Líbano - + Lesotho Lesoto - + Liberia Liberia - + Libyan Arab Jamahiriya Libia - + Liechtenstein Liechtenstein - + Lithuania Lituania - + Luxembourg Luxemburgo - + Macao Macau - + Macedonia, The Former Yugoslav Republic Of Macedonia - + Madagascar Madagascar - + Malawi Malaui - + Malaysia Malaisia - + Maldives Maldivas - + Mali Malí - + Malta Malta - + Marshall Islands Illas Marshall - + Martinique Martinica - + Mauritania Mauritania - + Mauritius Mauricio - + Mayotte Mayotte - + Mexico México - + Micronesia, Federated States Of Micronesia - + Moldova, Republic Of Moldavia - + Monaco Mónaco - + Mongolia Mongolia - + Montserrat Montserrat - + Morocco Marrocos - + Mozambique Mozambique - + Myanmar Birmania - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Países Baixos - + Netherlands Antilles Antillas Neerlandesas - + New Caledonia Nova Caledonia - + New Zealand Nova Zelandia - + Nicaragua Nicaragua - + Niger Níxer - + Nigeria Nixeria - + Niue Niue - + Norfolk Island Illa Norfolk - + Northern Mariana Islands Marianas do Norte - + Norway Noruega - + Oman Omán - + Pakistan Paquistán - + Palau Palau - + Palestinian Territory, Occupied Territorios palestinos ocupados - + Panama Panamá - + Papua New Guinea Papúa Nova Guinea - + Paraguay Paraguai - + Peru Perú - + Philippines Filipinas - + Pitcairn Pitcairn - + Poland Polonia - + Portugal Portugal - + Puerto Rico Porto Rico - + Qatar Qatar - + Reunion Reunión - + Romania Romanía - + Russian Federation Rusia - + Rwanda Ruanda - + Saint Helena Santa Helena - + Saint Kitts And Nevis Saint Kitts e Nevis - + Saint Lucia Santa Lucía - + Saint Pierre And Miquelon San Pedro e Miguelón - + Saint Vincent And The Grenadines San Vicente e Granadinas - + Samoa Samoa - + San Marino San Mariño - + Sao Tome And Principe San Tomé e Príncipe - + Saudi Arabia Arabia Saudí - + Senegal Senegal - + Serbia And Montenegro Serbia e Montenegro - + Seychelles Seixeles - + Sierra Leone Serra Leoa - + Singapore Singapur - + Slovakia Eslovaquia - + Slovenia Eslovenia - + Solomon Islands Illas Salomón - + Somalia Somalia - + South Africa Sudáfrica - + South Georgia And The South Sandwich Islands Illas Xeorxias do Sur e Sandwich do Sur - + Spain España - + Sri Lanka Sri Lanka - + Sudan Sudán - + Suriname Suriname - + Svalbard And Jan Mayen Svalbard e Jan Mayen - + Swaziland Suacilandia - + Sweden Suecia - + Switzerland Suíza - + Syrian Arab Republic Siria - + Taiwan, Province Of China Taiwán - + Tajikistan Taxiquistán - + Tanzania, United Republic Of Tanzania - + Thailand Tailandia - + Timor-Leste Timor-Leste - + Togo Togo - + Tokelau Toquelau - + Tonga Tonga - + Trinidad And Tobago Trindade e Tobago - + Tunisia Tunisia - + Turkey Turquía - + Turkmenistan Turcomenistán - + Turks And Caicos Islands Turks e Caicos - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ucraína - + United Arab Emirates Emiratos Árabes Unidos - + United Kingdom Reino Unido - + United States Estados Unidos de América - + United States Minor Outlying Islands Illas ultramariñas dos Estados Unidos de América - + Uruguay Uruguai - + Uzbekistan Usbequistán - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Vietnam - + Virgin Islands, British Illas Virxes Británicas - + Virgin Islands, U.S. Illas Virxes Estadounidenses - + Wallis And Futuna Wallis-e-Futuna - + Western Sahara Sáhara Occidental - + Yemen Iemen - + Zambia Zambia - + Zimbabwe Cimbabue - + Are you sure you want to report the game name: "%1" as inappropriate? Está seguro de que quere informar de que o nome da partida «%1» non é axeitado? - + Are you sure you want to close the game: "%1"? Estás seguro de que queres pechar a partida: «%1»? - + Are you sure you want to total kickban the player: "%1"? Estás seguro de que queres expulsar completamente o xogador «%1»? @@ -3249,146 +3249,146 @@ Para convidar a outros xogadores, prema co botón secundario a súa entrada na l gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Deter - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 — O motor libre de Texas Hold’em - - - - - - - - + + + + + + + + Start Comezar - - - - - + + + + + Lobby Sala de espera - - + + Chat Conversa - + Closing PokerTH during network game Pechar PokerTH durante unha partida de rede - + You are the hosting server. Do you want to close PokerTH anyway? A súa máquina está a aloxar a partida de rede. Está seguro de que quere pechar PokerTH? - + Really want to exit? Está seguro de que quere saír? - + PokerTH - Close Table? PokerTH — Pechar o taboleiro - + PokerTH - Internet Game Message PokerTH — Mensaxe dunha partida por internet - + Attention! Do you really want to leave the current game and go back to the lobby? Atención: está seguro de que quere saír da partida actual e volver á sala de espera? - - + + Chat is only available to registered players. Só os xogadores rexistrados poden participar na conversa. - + Spectators - - + + Chance Probabilidade - - + + Kick Expulsar - - + + Do you want to kick <b>%1</b><br>from this game? Está seguro de que quere expulsar<br>a<b>%1</b>da partida? - - - - + + + + <b>%1</b> secs left Restan <b>%1</b> segundos. - + vote voto - + votes votos - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Hai <b>%2</b> %3 contra o xogador <b>%1</b>.<br>Necesítanse <b>%4</b> votos para expulsalo. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Hai <b>%1</b> %2 contra vostede.<br>Faltan <b>%3</b> votos para que o expulsen. @@ -3756,48 +3756,48 @@ Would you like to overwrite ? Configuración da partida local - + Number of players: Límite de xogadores: - + Start Cash: Cartos iniciais: - + $ - + Blinds Apostas obrigatorias - + Use saved blinds settings Empregar a configuración local. - + OK Aceptar - + Change blinds settings ... Cambiar a configuración… - + Game Speed: Velocidade da partida: diff --git a/ts/pokerth_gr.ts b/ts/pokerth_gr.ts index 3a3b96f4..8b7fce98 100644 --- a/ts/pokerth_gr.ts +++ b/ts/pokerth_gr.ts @@ -167,22 +167,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -1753,38 +1753,38 @@ p, li { white-space: pre-wrap; } - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. @@ -1804,12 +1804,12 @@ Feel free to invite other players by right-clicking on their nick in the availab - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -1859,1273 +1859,1273 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3424,19 +3424,19 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Παύση @@ -3449,7 +3449,7 @@ Feel free to invite other players by right-clicking on their nick in the availab Ctrl+N - Νέο Παιχνίδι - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - The Open-Source Texas Holdem Engine @@ -3468,23 +3468,23 @@ Please choose another one. F1 - Όλα Μέσα | F2 - Ποντάρω/Ρελάνς | F3 - Ντούκου/Μέσα | F4 - Πάσο - - - - - - - - + + + + + + + + Start Έναρξη - - - - - + + + + + Lobby Lobby @@ -3695,104 +3695,104 @@ Please choose a different name. Αυτόματο: Ντούκου ή Πάσο. - - + + Chat Chat - + Closing PokerTH during network game Κλείσιμο PokerTH κατα τη διάρκεια παιχνιδιού σε δίκτυο - + You are the hosting server. Do you want to close PokerTH anyway? Φιλοξενείτε τον server. Θέλετε να κλείσετε το PokerTH? - + PokerTH - Internet Game Message PokerTH - Μήνυμα Παιχνιδιού Internet - + Attention! Do you really want to leave the current game and go back to the lobby? Προσοχή! Θέλετε σίγουρα να φύγετε απ' το παιχνίδι και να επιστρέψετε στο lobby? - - + + Chance - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. - + Spectators @@ -4577,48 +4577,48 @@ and go back to the lobby? Επιλογές Τοπικού Παιχνιδιού - + Number of players: Αριθμός παιχτών: - + Start Cash: Αρχικό Ποσό: - + $ $ - + Blinds Blinds - + Use saved blinds settings Αποθηκευμένες επιλογές για τα blinds - + OK - + Change blinds settings ... Αλλαγή επιλογών για τα blinds ... - + Game Speed: Ταχύτητα: diff --git a/ts/pokerth_hu.ts b/ts/pokerth_hu.ts index dd661305..54cf3615 100644 --- a/ts/pokerth_hu.ts +++ b/ts/pokerth_hu.ts @@ -241,22 +241,22 @@ Kérlek vedd fel a kapcsolatot a készítővel: „%4”. Pókerasztal stílus hiba – Elavult - + Everything OK! Minden rendben! - + Some pictures are missing, please contact style maintainer for this issue. Néhány kép hiányzik, vedd fel a kapcsolatot a stílus készítőjével. - + Some style fields are missing, please contact style maintainer for this issue. Néhány mezőadat hiányzik, vedd fel a kapcsolatot a stílus készítőjével. - + This style is outdated, please contact style maintainer for this issue. Ez a stílus elavult, vedd fel a kapcsolatot a stílus készítőjével. @@ -2294,1234 +2294,1234 @@ p, li { white-space: pre-wrap; } Csatlakozott játékosok – max. %1 - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania litván - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3578,50 +3578,50 @@ p, li { white-space: pre-wrap; } nyitott játékok: %1 - + Invite %1 %1 meghívása - + Ignore %1 %1 tiltása - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 meghívta %1 nevű játékost a(z) %2 játékba.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 elutasította a meghívást a(z) %2 játékba.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 nem tud csatlakozni a(z) %2 játékba, mert elfoglalt.</span> - - + + The game will start in<br><b>%1</b> seconds. A játék <br><b>%1</b> másodperc múlva indul. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Csatlakoztál egy „csak meghívásos” játékhoz. Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gombbal és meghívás. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? <b>%1</b> meghívott a(z) <b>%2</b> nevű játékba.<br>Szeretnél csatlakozni? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Többé nem fogod megkapni az üzeneteket és a játék meghívásokat ettől a felhasználótól. <br> Biztosan tiltani szeretnéd <b>%1</b> nevű felhasználót? @@ -3654,41 +3654,41 @@ Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gomb játékos keresése … - + Chat is only available to registered players. A csevegés csak regisztrált játékosoknak érhető el. - + Invite player ... Játékos meghívása … - + Ignore player ... Játékos tiltása … - + %1 is playing in "%2". %1 a következő szobában játszik: %2. - + %1 is not playing at the moment. %1 jelenleg nem játszik. - - + + PokerTH - Info Message PokerTH – Információk - - - - + + + + PokerTH - Question PokerTH – Kérdés @@ -4141,31 +4141,31 @@ Kérlek válassz egy másik nevet. Cmd+N – új játék indítása - - - - - - - - + + + + + + + + Start Indítás - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Leállítás @@ -4195,8 +4195,8 @@ Ha a szerver NAT router mögött van, akkor bizonyosodj meg róla hogy a port to A kliens játékos száma érvénytelen. - - + + Chat Csevegés @@ -4221,100 +4221,100 @@ Ha a szerver NAT router mögött van, akkor bizonyosodj meg róla hogy a port to F1 - All-In | F2 -Emel/Ráemel | F3 - Passz/Tart | F4 - Eldob - + Closing PokerTH during network game PokerTH bezárása hálózati játék alatt - + You are the hosting server. Do you want to close PokerTH anyway? Te vagy a hálózati kiszolgáló. Biztosan bezárod az alkalmazást? - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - A nyílt forrású Texas Holdem motor - - - - - + + + + + Lobby Társalgó - + PokerTH - Internet Game Message PokerTH – Internetes játék üzenetei - + Attention! Do you really want to leave the current game and go back to the lobby? Figyelem! Biztosan elhagyod az aktuális játékot, és kilépsz a társalgóba? - - + + Chance Esélyek - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Kidobás - - + + Do you want to kick <b>%1</b><br>from this game? Ki akarod dobni <b>%1</b>-t<br>a játékból? - - - - + + + + <b>%1</b> secs left <b>%1</b> mp. maradt - + vote szavazat - + votes szavazat - - + + Chat is only available to registered players. A csevegés csak regisztrált játékosok számára érhető el. - + Spectators @@ -4341,14 +4341,14 @@ Ha hosszabbtávon nem vagy gépközelben használd a „távol” kapcsolót.<b>%1</b> %2 gyűlt össze ellened.<br><b>%3</b> szavazat kell a kidobáshoz. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. <b>%1</b> játékos elllen <b>%2</b> %3<br>gyűlt össze. <b>%4</b> szavat kell a kidobáshoz. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. <b>%1</b> %2 gyűlt össze ellened.<br><b>%3</b> szavazat kell a kidobáshoz. @@ -4760,13 +4760,13 @@ Would you like to overwrite ? Helyi játék beállításai - + Game Speed: Játék sebessége: - + Start Cash: Kezdő zseton: @@ -4776,7 +4776,7 @@ Would you like to overwrite ? Kis vak: - + Number of players: Játékosok száma: @@ -4786,30 +4786,30 @@ Would you like to overwrite ? Vakemelés előtti körök száma: - + Blinds Vaktétek - + Use saved blinds settings Elmentett vakbeállítások használata - + OK - + Change blinds settings ... Vaktétek beállítása… - + $ $ diff --git a/ts/pokerth_it.ts b/ts/pokerth_it.ts index 349ae391..ac8843f7 100644 --- a/ts/pokerth_it.ts +++ b/ts/pokerth_it.ts @@ -1,6 +1,6 @@ - + CardDeckStyleReader @@ -259,22 +259,22 @@ Per favore, contatta il responsabile dello stile via "%4".Errore sullo Stile del Tavolo da Gioco - Obsoleto - + Everything OK! Tutto OK! - + Some pictures are missing, please contact style maintainer for this issue. Mancano alcune immagini, per favore contatta il responsabile dello stile. - + Some style fields are missing, please contact style maintainer for this issue. Mancano alcuni campi, per favore contatta il responsabile dello stile. - + This style is outdated, please contact style maintainer for this issue. Questo stile è obsoleto, si prega di contattare il responsabile dello stile. @@ -1970,7 +1970,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -1991,7 +1991,7 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -3532,7 +3532,7 @@ p, li { white-space: pre-wrap; } Join &any game - Entr&a in una partita casuale + Entr&a in una partita casuale @@ -3799,7 +3799,7 @@ p, li { white-space: pre-wrap; } Connected players - max. %1 - Giocatori connessi - max. %1 + Giocatori connessi - max. %1 @@ -3829,7 +3829,7 @@ p, li { white-space: pre-wrap; } Connected players - Max. %1 - Giocatori connessi - Max. %1 + Giocatori connessi - Max. %1 @@ -3839,7 +3839,7 @@ p, li { white-space: pre-wrap; } Connected players - Giocatori connessi + Giocatori connessi @@ -3852,1287 +3852,1287 @@ p, li { white-space: pre-wrap; } Ricerca giocatore ... - + Chat is only available to registered players. La chat è disponibile solamente ai giocatori registrati. - + Invite %1 Invita %1 - + Ignore %1 Ignora %1 - + %1 is playing in "%2". %1 sta giocando in "%2". - + %1 is not playing at the moment. %1 non sta giocando in questo momento. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 è stato invitato a %2 da %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 ha rifiutato l'invito a %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 non può partecipare %2 perchè risulta occupato.</span> - - + + The game will start in<br><b>%1</b> seconds. La partita inizierà tra<br><b>%1</b> secondi. - + Afghanistan - + ALand Islands Isole ALand - + Albania - + Algeria - + American Samoa Samoa Americane - + Andorra - + Angola - + Anguilla - + Antarctica Antartide - + Antigua And Barbuda Antigua e Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus Bielorussia - + Belgium Belgio - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina Bosnia Herzegovina - + Botswana - + Bouvet Island Isola Bouvet - + Brazil Brasile - + British Indian Ocean Territory Territorio britannico dell'oceano Indiano - + Brunei Darussalam Sultanato del Brunei - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia Cambogia - + Cameroon Camerun - + Canada - + Cape Verde Capo Verde - + Cayman Islands Isole Cayman - + Central African Republic Repubblica Centrafricana - + Chad Ciad - + Chile Cile - + China Cina - + Christmas Island Isola di Natale - + Cocos (Keeling) Islands Isole Cocos e Keeling - + Colombia - + Comoros Comore - + Congo - + Congo, The Democratic Republic Of The Repubblica Democratica del Congo - + Cook Islands Isole Cook - + Costa Rica - + Cote D'Ivoire Costa D'Avorio - + Croatia Croazia - + Cuba - + Cyprus Cipro - + Czech Republic Repubblica Ceca - + Denmark Danimarca - + Djibouti Gibuti - + Dominica Dominica - + Dominican Republic Repubblica Dominicana - + Ecuador - + Egypt Egitto - + El Salvador - + Equatorial Guinea Guinea Equatoriale - + Eritrea - + Estonia - + Ethiopia Etiopia - + Falkland Islands (Malvinas) Isole Falkland (Malvine) - + Faroe Islands Isole Faroe - + Fiji - + Finland Finlandia - + France Francia - + French Guiana Guiana Francese - + French Polynesia Polinesia Francese - + French Southern Territories Territori Francesi del Sud - + Gabon - + Gambia - + Georgia - + Germany Germania - + Ghana - + Gibraltar Gibilterra - + Greece Grecia - + Greenland Groenlandia - + Grenada - + Guadeloupe Guadalupa - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands Isole Heard e McDonald - + Holy See (Vatican City State) Santa Sede (Città Del Vaticano) - + Honduras - + Hong Kong - + Hungary Ungheria - + Iceland Islanda - + India - + Indonesia - + Iran, Islamic Republic Of Iran - + Iraq - + Ireland Irlanda - + Isle Of Man Isola di Man - + Israel Israele - + Italy Italia - + Jamaica - + Japan Giappone - + Jersey - + Jordan Giordania - + Kazakhstan Kazakistan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of Corea del Nord - + Korea, Republic Of Corea del Sud - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic Laos - + Latvia Lettonia - + Lebanon Libano - + Lesotho - + Liberia - + Libyan Arab Jamahiriya Libia - + Liechtenstein - + Lithuania Lituania - + Luxembourg Lussemburgo - + Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia - + Madagascar - + Malawi - + Malaysia Malesia - + Maldives Maldive - + Mali - + Malta - + Marshall Islands Isole Marshall - + Martinique Martinica - + Mauritania - + Mauritius - + Mayotte - + Mexico Messico - + Micronesia, Federated States Of Micronesia - + Moldova, Republic Of Moldavia - + Monaco - + Mongolia - + Montserrat - + Morocco Marocco - + Mozambique Mozambico - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands Olanda - + Netherlands Antilles Antille Olandesi - + New Caledonia Nuova Caledonia - + New Zealand Nuova Zelanda - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island Isole Norfolk - + Northern Mariana Islands Isole Marianne Settentrionali - + Norway Norvegia - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied Palestina - + Panama - + Papua New Guinea Papua Nuova Guinea - + Paraguay - + Peru Perù - + Philippines Filippine - + Pitcairn - + Poland Polonia - + Portugal Portogallo - + Puerto Rico Porto Rico - + Qatar - + Reunion Riunione - + Romania - + Russian Federation Federazione Russa - + Rwanda Ruanda - + Saint Helena Sant'Elena - + Saint Kitts And Nevis Saint Kitts e Nevis - + Saint Lucia Santa Lucia - + Saint Pierre And Miquelon Saint-Pierre e Miquelon - + Saint Vincent And The Grenadines Saint Vincent e Grenadine - + Samoa - + San Marino - + Sao Tome And Principe Sao Tome e Principe - + Saudi Arabia Arabia Saudita - + Senegal - + Serbia And Montenegro Serbia E Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia Slovacchia - + Slovenia - + Solomon Islands Isole Salomone - + Somalia - + South Africa Sudafrica - + South Georgia And The South Sandwich Islands Georgia del Sud e isole Sandwich meridionali - + Spain Spagna - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen Svalbard e Jan Mayen - + Swaziland - + Sweden Svezia - + Switzerland Svizzera - + Syrian Arab Republic Siria - + Taiwan, Province Of China Taiwan - + Tajikistan Tagikistan - + Tanzania, United Republic Of Tanzania - + Thailand Thailandia - + Timor-Leste Timor Est - + Togo - + Tokelau Tokelau - + Tonga - + Trinidad And Tobago Trinidad e Tobago - + Tunisia - + Turkey Tuchia - + Turkmenistan - + Turks And Caicos Islands Turks e Caicos - + Tuvalu - + Uganda - + Ukraine Ucraina - + United Arab Emirates Emirati Arabi Uniti - + United Kingdom Regno Unito - + United States Stati Uniti - + United States Minor Outlying Islands Isole minori esterne degli Stati Uniti d'America - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British Isole Vergini britanniche - + Virgin Islands, U.S. Isole Vergini americane - + Wallis And Futuna Wallis e Futuna - + Western Sahara Sahara Occidentale - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Sei sicuro di voler segnalare il nome della partita: "%1" come offensivo? - + Are you sure you want to close the game: "%1"? Sei sicuro di voler chiudere la partita: "%1"? - + Are you sure you want to total kickban the player: "%1"? Sei sicuro di voler effettuare un kickban totale del giocatore: "%1"? - + Invite player ... Invita giocatore ... @@ -5174,38 +5174,38 @@ p, li { white-space: pre-wrap; } Spettatori (%1) - + Ignore player ... Ignora giocatore ... - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Sei entrato in una partita "su invito". Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickname nella lista dei giocatori disponibili. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Sei stato invitato alla partita <b>%1</b> da <b>%2</b>.<br>Desideri partecipare alla partita? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Non riceverai più messaggi di chat o inviti a partite da questo utente.<br>Vuoi veramente inserire l'utente <b>%1</b> nella lista degli utenti ignorati? - - + + PokerTH - Info Message PokerTH - Informazione - - - - + + + + PokerTH - Question PokerTH - Domanda @@ -5595,7 +5595,7 @@ Assicurarsi che tutti i giocatori abbiano la stessa versione di PokerTH.E' stata specificata una porta non valida (le porte 0-1023 non sono permesse). - + Attention! Do you really want to leave the current game and go back to the lobby? Attenzione! Vuoi veramente abbandonare la partita corrente @@ -5614,13 +5614,13 @@ e tornare al prepartita? Bind fallito - selezionare una porta diversa. - - + + Chat Chat - + Closing PokerTH during network game Si sta chiudendo PokerTH durante una partita in rete @@ -5719,11 +5719,11 @@ Please reenter the password and try again. Reinserire la password e riprovare. - - - - - + + + + + Lobby Prepartita @@ -5740,12 +5740,12 @@ Reinserire la password e riprovare. Notifica in Rete - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Il Motore Texas Holdem Open-Source - + PokerTH - Internet Game Message PokerTH - Messaggio partita su Internet @@ -5766,31 +5766,31 @@ Reinserire la password e riprovare. Spiacente, il server è già al completo. - - - - - - - - + + + + + + + + Start Inizio - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Ferma @@ -5880,7 +5880,7 @@ Visitare l'URL <a href="http://www.pokerth.net/" target=" Impossibile partecipare - la partita è già iniziata. - + You are the hosting server. Do you want to close PokerTH anyway? Stai facendo da server. Vuoi comunque chiudere PokerTH? @@ -5959,64 +5959,64 @@ Assicurarsi di essere connessi direttamente ad internet. Impossibile aprire il file di destinazione durante il download della lista server. - + PokerTH %1 PokerTH %1 - - + + Chance Probabilità - + Really want to exit? Desideri veramente uscire? - + PokerTH - Close Table? PokerTH - Chiudere il tavolo? - - + + Kick Espelli - - + + Do you want to kick <b>%1</b><br>from this game? Vuoi espellere <b>%1</b><br>da questa partita? - - - - + + + + <b>%1</b> secs left <b>%1</b> sec. rimasti - + vote voto - + votes voti - - + + Chat is only available to registered players. La chat è disponibile solamente ai giocatori registrati. - + Spectators Spettatori @@ -6043,14 +6043,14 @@ Se sei temporaneamente assente, puoi utilizzare l'apposito strumento " Hai <b>%1</b> %2 contro di te.<br><b>%3</b> voti necessari per essere espulso. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Il giocatore <b>%1</b> ha <b>%2</b> %3<br>contro di lui. <b>%4</b> voto/i necessari all'espulsione. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Hai <b>%1</b> %2 contro di te.<br><b>%3</b> voto/i necessari all'espulsione. @@ -6300,7 +6300,7 @@ Desideri sovrascriverlo? Could not load server-profiles-file: - Impossibile caricare il file dei profili server: + Impossibile caricare il file dei profili server: @@ -6311,7 +6311,7 @@ Desideri sovrascriverlo? Could not save server-profiles-file: - Impossibile salvare il profilo server: + Impossibile salvare il profilo server: @@ -6468,31 +6468,31 @@ Desideri sovrascriverlo? newGameDialog - + $ $ - + Blinds blind - + Change blinds settings ... Cambia le impostazioni dei blind... - + Game Speed: Velocità: - + OK OK @@ -6506,7 +6506,7 @@ Desideri sovrascriverlo? Impostazioni locali - + Number of players: Numero di giocatori: @@ -6516,7 +6516,7 @@ Desideri sovrascriverlo? Small Blind: - + Start Cash: Contante iniziale: @@ -6528,7 +6528,7 @@ Desideri sovrascriverlo? Inizia una partita locale - + Use saved blinds settings Utilizza impostazioni dei blind salvate diff --git a/ts/pokerth_jp.ts b/ts/pokerth_jp.ts index d4a2bfa8..ce6078c7 100644 --- a/ts/pokerth_jp.ts +++ b/ts/pokerth_jp.ts @@ -208,22 +208,22 @@ Please contact the game table style builder via "%4". ゲームテーブルスタイルエラー - 対応外 - + Everything OK! 全てOK! - + Some pictures are missing, please contact style maintainer for this issue. いくつかの画像が見つかりません、ゲームテーブルスタイルの作者にこの問題を報告してください。 - + Some style fields are missing, please contact style maintainer for this issue. いくつかのフィールド見つかりません、ゲームテーブルスタイルの作者にこの問題を報告してください。 - + This style is outdated, please contact style maintainer for this issue. このスタイルは対応外です。ゲームテーブルスタイルの作者にこの問題を報告してください。 @@ -1649,51 +1649,51 @@ p, li { white-space: pre-wrap; } - + Invite %1 招待 %1 - + Ignore %1 無視 %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 は %2 に %3 によって招待されています。</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 は %2 への招待を拒否しました。</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 は busy のため %2 に参加できません。</span> - - + + The game will start in<br><b>%1</b> seconds. <br><b>%1</b> 秒後にゲームが開始されます。 - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. 招待専用のゲームに参加しています。 右クリックでプレイヤーリストからニックネームを選択して他のプレイヤーを招待しましょう。 - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? ゲーム "<b>%1</b>" に "<b>%2</b>"より招待されています。<br> このゲームに参加しますか? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? 以後、このプレイヤーからのチャットメッセージとゲームの招待を受けることができなくなります <br> 本当にプレイヤー %1 を無視リストに入れますか? @@ -1782,1273 +1782,1273 @@ Feel free to invite other players by right-clicking on their nick in the availab プレイヤー検索... - + Chat is only available to registered players. チャットは登録したプレイヤーのみ使用することができます。 - + Invite player ... プレイヤーを招待... - + Ignore player ... プレイヤーを無視... - + %1 is playing in "%2". %1 は "%2" でゲームしています。 - + %1 is not playing at the moment. %1 は現在プレイ中ではありません。 - - + + PokerTH - Info Message PokerTH - 情報メッセージ - - - - + + + + PokerTH - Question PokerTH - 質問 - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3335,99 +3335,99 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop 停止 - + PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - - - - + + + + + + + + Start 開始 - - - - - + + + + + Lobby ロビー - - + + Chat チャット - + Closing PokerTH during network game ネットワークゲーム中に PokerTH を閉じる - + You are the hosting server. Do you want to close PokerTH anyway? あなたはサーバーをホストしています。本当に PokerTH を閉じますか? - + Really want to exit? 本当に退出しますか? - + PokerTH - Close Table? PokerTH - テーブルを閉じますか? - + PokerTH - Internet Game Message PokerTH - インターネットゲームメッセージ - + Attention! Do you really want to leave the current game and go back to the lobby? 注意! 本当にこのゲームを離れ、ロビーに戻ってもよろしいですか? - - + + Chat is only available to registered players. チャットは登録したプレイヤーのみ使用することができます。 - + Spectators @@ -3446,51 +3446,51 @@ If you are temporarily away, you can use the "away" tools in the tool 一時的な離席の場合、右ツールボックスの一時退席ツールを使用できます。 - - + + Chance チャンス - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? <b>%1</b><br>をこのゲームから kick しますか? - - - - + + + + <b>%1</b> secs left 残り <b>%1</b> 秒 - + vote 投票 - + votes 投票 - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. I dont know what %1-%4 will display... - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. I dont know what %1-%4 will display... @@ -3876,48 +3876,48 @@ Would you like to overwrite ? ローカルゲーム設定 - + Number of players: プレイヤー数: - + Start Cash: 開始金額: - + $ - + Blinds ブラインド - + Use saved blinds settings 保存されたブラインド設定を使用 - + OK - + Change blinds settings ... ブラインド設定を変更... - + Game Speed: ゲームスピード: diff --git a/ts/pokerth_lt.ts b/ts/pokerth_lt.ts index 05db5091..a0c8db49 100644 --- a/ts/pokerth_lt.ts +++ b/ts/pokerth_lt.ts @@ -210,22 +210,22 @@ Prašome susisiekti su žaidimo stalo stiliaus kūrėju, kaip "%4".Žaidimo stalo stiliaus klaida - pasenęs - + Everything OK! Viskas GERAI! - + Some pictures are missing, please contact style maintainer for this issue. Trūksta kai kurių paveikslėlių, prašome susisiekti su stiliaus prižiūrėtoju dėl šios laidos. - + Some style fields are missing, please contact style maintainer for this issue. Trūksta kai kurių stiliaus laukų, prašome susisiekti su stiliaus prižiūrėtoju dėl šios laidos. - + This style is outdated, please contact style maintainer for this issue. Šis stilius yra pasenęs, prašome susisiekti su stiliaus prižiūrėtoju dėl šios laidos. @@ -1964,50 +1964,50 @@ p, li { white-space: pre-wrap; } - + Invite %1 Pakviesti %1 - + Ignore %1 Ignoruoti %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 buvo pakviestas į %2 nuo %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 atmetė pakvietimą į %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 negali jungtis %2, nes yra užimta(s).</span> - - + + The game will start in<br><b>%1</b> seconds. Žaidimas prasidės po<br><b>%1</b> sekundžių. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Jūs atsidūrėte žaidimo su "tik su pakvietimais" tipu. Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant jų slapyvardžių prieinamame žaidėjų sąraše. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Jūs buvote pakviestas į žaidimą <b>%1</b> nuo <b>%2</b>.<br>Ar norite jungtis prie žaidimo? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Jūs nebegausite daugiau pokalbio žinučių arba žaidimo pakvietimų iš šio naudotojo.<br>Ar tikrai norite patalpinti žaidėją <b>%1</b> į ignoravimo sąrašą? @@ -2101,1273 +2101,1273 @@ Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant j ieškoti žaidėjo ... - + Chat is only available to registered players. Pokalbis yra prieinamas tik užsiregistravusiems žaidėjams. - + Invite player ... Pakviesti žaidėją ... - + Ignore player ... Ignoruoti žaidėją ... - + %1 is playing in "%2". %1 žaidžia "%2". - + %1 is not playing at the moment. %1 šiuo metu nežaidžia. - - + + PokerTH - Info Message PokerTH - Informacinė žinutė - - - - + + + + PokerTH - Question PokerTH - Klausimas - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Lietuvių - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3654,99 +3654,99 @@ Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant j gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stabdyti - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - atviro kodo Texas Holdem varikliukas - - - - - - - - + + + + + + + + Start Pradėti - - - - - + + + + + Lobby Fojė - - + + Chat Pokalbis - + Closing PokerTH during network game Uždaromas PokerTH per tinklo žaidimą - + You are the hosting server. Do you want to close PokerTH anyway? Jūs esate prieglobos serveris. Ar norite vistiek uždaryti PokerTH? - + Really want to exit? Ar tikrai norite išeiti? - + PokerTH - Close Table? PokerTH - užverti lentelę? - + PokerTH - Internet Game Message PokerTH - žaidimo internetu žinutė - + Attention! Do you really want to leave the current game and go back to the lobby? Dėmesio! Ar tikrai norite palikti esamą žaidimą ir grįžti į fojė? - - + + Chat is only available to registered players. Pokalbis yra prieinamas tik užsiregistravusiems žaidėjams. - + Spectators @@ -3765,50 +3765,50 @@ Po %1 papildomo skirtojo laiko, reikia serveriui pašalinti Jus, kad užtikrint Jei esate laikinai atsitraukęs, galite panaudoti "išėjęs" priemonę, priemonių komplekte, kuris yra dešinėje. - - + + Chance Keisti - - + + Kick Pašalinti - - + + Do you want to kick <b>%1</b><br>from this game? Ar norite pašalinti <b>%1</b><br>iš šio žaidimo? - - - - + + + + <b>%1</b> secs left <b>%1</b> sek. liko - + vote balsavimas - + votes balsai - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Žaidėjas <b>%1</b> yra <b>%2</b> %3<br>prieš jį. <b>%4</b> balso ar balsų reikia pašalinimui. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Jūs turite <b>%1</b> %2 prieš tave.<br><b>%3</b> balso ar balsų reikia pašalinimui. @@ -4195,48 +4195,48 @@ Galbūt norėtumėte pakeisti ? Vietinio žaidimo nuostatos - + Number of players: Žaidėjų skaičius: - + Start Cash: Pradiniai pinigai: - + $ $ - + Blinds Statymai - + Use saved blinds settings Naudoti įrašytas statymų nuostatas - + OK - + Change blinds settings ... Keisti statymų nuostatas ... - + Game Speed: Žaidimo greitis: diff --git a/ts/pokerth_nl.ts b/ts/pokerth_nl.ts index 6336932f..57e1e0fe 100644 --- a/ts/pokerth_nl.ts +++ b/ts/pokerth_nl.ts @@ -243,22 +243,22 @@ De maker van de speeltafelstijl is te bereiken via %4. Speeltafelstijlfout - te oud - + Everything OK! Alles in orde - + Some pictures are missing, please contact style maintainer for this issue. Er ontbreken afbeeldingen, hier kan contact over worden opgenomen met de maker van de stijl. - + Some style fields are missing, please contact style maintainer for this issue. Er ontbreken stijlvelden, hier kan contact over worden opgenomen met de maker van de stijl. - + This style is outdated, please contact style maintainer for this issue. De stijl is te oud, hier kan contact over worden opgenomen met de maker van de stijl. @@ -3734,1285 +3734,1285 @@ p, li { white-space: pre-wrap; } Speler zoeken ... - + Chat is only available to registered players. Alleen geregistreerde spelers kunnen chatten. - + Invite %1 %1 uitnodigen - + Ignore %1 %1 negeren - + %1 is playing in "%2". %1 speelt in "%2". - + %1 is not playing at the moment. %1 speelt momenteel niet. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 is uitgenodigd voor %2 door %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 heeft de uitnodiging voor %2 afgeslagen.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 is bezig en kan niet meedoen met %2.</span> - - + + The game will start in<br><b>%1</b> seconds. Het spel begint over<br><b>%1</b> seconden. - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Litouws - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - + Invite player ... Speler uitnodigen ... @@ -5030,38 +5030,38 @@ p, li { white-space: pre-wrap; } - + Ignore player ... Speler negeren ... - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Er wordt meegedaan aan een spel van het type "alleen op uitnodiging". Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de lijst Aanwezige spelers. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Uitnodiging ontvanger van <b>%2</b> voor spel <b>%1</b>.<br>Meedoen met dit spel? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Er zullen geen chatberichten of speluitnodigingen meer worden ontvangen van deze gebruiker. <br>Speler <b>%1</b> werkelijk op de lijst Genegeerde spelers zetten? - - + + PokerTH - Info Message PokerTH - Infobericht - - - - + + + + PokerTH - Question PokerTH - Vraag @@ -5578,31 +5578,31 @@ Kies een andere naam. Cmd+N om een nieuw spel te starten - - - - - - - - + + + + + + + + Start Start - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop @@ -5665,8 +5665,8 @@ Als de server zich achter een NAT-router bevindt, controleer dan daar of port fo F1 - Betten/Raisen | F2 - Checken/Callen | F3 - Folden/All-In - - + + Chat Chat @@ -5750,12 +5750,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Deze bètarelease van PokerTH is te oud.Ga naar <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> en download de nieuwste versie. - + Closing PokerTH during network game PokerTH afsluiten tijdens netwerkspel - + You are the hosting server. Do you want to close PokerTH anyway? U bent de server van dit spel. Wilt u PokerTH toch sluiten? @@ -5772,28 +5772,28 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Deze bètarelease van PokerTH is te oud.<br>Ga naar <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/</a> en download de nieuwste versie. - - - - - + + + + + Lobby Lobby - + PokerTH - Internet Game Message PokerTH - Bericht van internetspel - + Attention! Do you really want to leave the current game and go back to the lobby? Opgelet! Wilt u werkelijk het huidige spel verlaten en teruggaan naar de lobby? - + PokerTH %1 - The Open-Source Texas Holdem Engine PokertTH %1 - De Open-Source Texas Hold'em-simulator @@ -5856,64 +5856,64 @@ Zorg ervoor dat u een directe verbinding met internet hebt. Kan het doelbestand niet openen bij het downloaden van de serverlijst. - + PokerTH %1 PokerTH %1 - - + + Chance Kansen - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Verwijderen - - + + Do you want to kick <b>%1</b><br>from this game? Wilt u <b>%1</b><br>uit dit spel verwijderen? - - - - + + + + <b>%1</b> secs left nog <b>%1</b> sec. - + vote stem - + votes stemmen - - + + Chat is only available to registered players. Alleen geregistreerde spelers kunnen chatten. - + Spectators @@ -5940,14 +5940,14 @@ Als u tijdelijk afwezig bent, kunt u de hulpmiddelen gebruiken in de toolbox Afw U heeft <b>%1</b> %2 tegen zich.<br><b>%3</b> stemmen zijn nodig voor verwijdering. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. <b>%2</b> %3 uitgebracht tegen <b>%1</b>.<br>Nog <b>%4</b> stem(men) nodig voor verwijderen. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. U heeft <b>%1</b> %2 tegen zich.<br> Nog <b>%3</b> stem(men) nodig voor verwijderen. @@ -6378,13 +6378,13 @@ Wilt u dat profiel overschrijven? Instellingen van lokaal spel - + Game Speed: Speelsnelheid: - + Start Cash: Startgeld: @@ -6394,7 +6394,7 @@ Wilt u dat profiel overschrijven? Kleine blind: - + Number of players: Aantal spelers: @@ -6408,30 +6408,30 @@ Wilt u dat profiel overschrijven? Rondes voordat de blinds stijgen: - + Blinds Blinds - + Use saved blinds settings Opgeslagen instellingen gebruiken voor de blinds - + OK - + Change blinds settings ... Instellingen van de blinds wijzigen ... - + $ $ diff --git a/ts/pokerth_no.ts b/ts/pokerth_no.ts index c1ca8d77..d445ae3e 100644 --- a/ts/pokerth_no.ts +++ b/ts/pokerth_no.ts @@ -156,22 +156,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -1895,1234 +1895,1234 @@ p, li { white-space: pre-wrap; } - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3227,49 +3227,49 @@ p, li { white-space: pre-wrap; } - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -3298,41 +3298,41 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question @@ -3675,31 +3675,31 @@ Feel free to invite other players by right-clicking on their nick in the availab F1 - Kast/Sats allt | F2 - Pass/Syn | F3 - Sats/Høyne - - - - - - - - + + + + + + + + Start Start - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stopp @@ -3836,117 +3836,117 @@ Hvis tjeneren er bak en NAT-ruter, forsikre deg om at videresending er satt opp Ugyldig antall spillere. - - + + Chat Prat - + Closing PokerTH during network game - + You are the hosting server. Do you want to close PokerTH anyway? - + PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - + + + + + Lobby - + PokerTH - Internet Game Message - + Attention! Do you really want to leave the current game and go back to the lobby? - - + + Chance - + PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Kast ut - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. - + Spectators @@ -4330,13 +4330,13 @@ Would you like to overwrite ? Innstillinger for lokalt spill - + Game Speed: Spill-hastighet: - + Start Cash: Startkapital: @@ -4346,7 +4346,7 @@ Would you like to overwrite ? Small Blind: - + Number of players: Antall spillere: @@ -4356,30 +4356,30 @@ Would you like to overwrite ? Antall henter før "Small Blind" økes: - + Blinds - + Use saved blinds settings - + OK - + Change blinds settings ... - + $ diff --git a/ts/pokerth_pl.ts b/ts/pokerth_pl.ts index 0a68a9ef..11b4e2e5 100644 --- a/ts/pokerth_pl.ts +++ b/ts/pokerth_pl.ts @@ -1,6 +1,6 @@ - + CardDeckStyleReader @@ -236,22 +236,22 @@ Proszę skontaktuj się z autorem skórki pod adresem "%4".Błąd skórki stołu - przestarzała - + Everything OK! Wszystko działa! - + Some pictures are missing, please contact style maintainer for this issue. Brakuje niektórych obrazków, skontaktuj się z autorem skórki w tej sprawie. - + Some style fields are missing, please contact style maintainer for this issue. Skórka nie posiada wszystkich informacji, skontaktuj się z autorem skórki w tej sprawie. - + This style is outdated, please contact style maintainer for this issue. Ta skórka jest przestarzała, skontaktuj się z autorem skórki w tej sprawie. @@ -735,7 +735,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -752,7 +752,7 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -1894,7 +1894,7 @@ p, li { white-space: pre-wrap; } Join &any game - Dołącz do do&wolnej gry + Dołącz do do&wolnej gry @@ -2078,7 +2078,7 @@ p, li { white-space: pre-wrap; } Connected players - Połączeni gracze + Połączeni gracze @@ -2213,1237 +2213,1237 @@ p, li { white-space: pre-wrap; } Connected players - max. %1 - Połączeni gracze - max. %1 + Połączeni gracze - max. %1 - + Afghanistan Afganistan - + ALand Islands Wyspy Alandzkie - + Albania Albania - + Algeria Algieria - + American Samoa Samoa Amerykańskie - + Andorra Andora - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarktyda - + Antigua And Barbuda Antigua i Barbuda - + Argentina Argentyna - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Azerbejdżan - + Bahamas Bahamy - + Bahrain Bahrain - + Bangladesh Bangladesz - + Barbados Barbados - + Belarus Białoruś - + Belgium Belgia - + Belize Belize - + Benin Benin - + Bermuda Bermudy - + Bhutan Bhutan - + Bolivia Boliwia - + Bosnia And Herzegovina Bośnia i Hercegowina - + Botswana Botswana - + Bouvet Island Wyspa Bouveta - + Brazil Brazylia - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria Bułgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodża - + Cameroon Kamerun - + Canada Kanada - + Cape Verde - + Cayman Islands - + Central African Republic Republika Środkowoafrykańska - + Chad Czad - + Chile Chile - + China Chiny - + Christmas Island Wyspy Bożego Narodzenia - + Cocos (Keeling) Islands - + Colombia Kolumbia - + Comoros - + Congo Kongo - + Congo, The Democratic Republic Of The Demokratyczna Republika Konga - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia Chorwacja - + Cuba Kuba - + Cyprus Cypr - + Czech Republic Czechy - + Denmark Dania - + Djibouti - + Dominica - + Dominican Republic - + Ecuador Ekwador - + Egypt Egipt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia Estonia - + Ethiopia Etiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland Finlandia - + France Francja - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia Gruzja - + Germany Niemcy - + Ghana Ghana - + Gibraltar - + Greece Frecja - + Greenland Grenlandia - + Grenada - + Guadeloupe - + Guam - + Guatemala Gwatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Węgry - + Iceland Islandia - + India Indie - + Indonesia Indonezja - + Iran, Islamic Republic Of Iran - + Iraq Irak - + Ireland Irlandia - + Isle Of Man - + Israel Izrael - + Italy Włochy - + Jamaica Jamajka - + Japan Japonia - + Jersey - + Jordan - + Kazakhstan Kazachstan - + Kenya Kenia - + Kiribati - + Korea, Democratic People'S Republic Of Korea Północna - + Korea, Republic Of Korea Południowa - + Kuwait Kuwejt - + Kyrgyzstan Kirgistan - + Lao People'S Democratic Republic - + Latvia Łotwa - + Lebanon Liban - + Lesotho Lesotho - + Liberia Liberia - + Libyan Arab Jamahiriya - + Liechtenstein Liechtenstein - + Lithuania Litwa - + Luxembourg Luksemburg - + Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia - + Madagascar Madagaskar - + Malawi - + Malaysia Malezja - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico Meksyk - + Micronesia, Federated States Of - + Moldova, Republic Of Mołdawia - + Monaco Monaco - + Mongolia Mogolia - + Montserrat - + Morocco Maroko - + Mozambique Mozambik - + Myanmar - + Namibia Namibia - + Nauru - + Nepal Nepal - + Netherlands Holandia - + Netherlands Antilles - + New Caledonia - + New Zealand Nowa Zelandia - + Nicaragua Nikaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island - + Northern Mariana Islands - + Norway Norwegia - + Oman Oman - + Pakistan Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama Panama - + Papua New Guinea Papua Nowa Gwinea - + Paraguay Paragwaj - + Peru Peru - + Philippines Filipiny - + Pitcairn - + Poland Polska - + Portugal Portugalia - + Puerto Rico Puerto Rico - + Qatar Katar - + Reunion - + Romania Rumunia - + Russian Federation Rosja - + Rwanda Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe - + Saudi Arabia Arabia Saudyjska - + Senegal Senegal - + Serbia And Montenegro Serbia i Czarnogóra - + Seychelles - + Sierra Leone - + Singapore Singapur - + Slovakia Słowacja - + Slovenia Słowenia - + Solomon Islands - + Somalia Somalia - + South Africa Republika Południowej Afryki - + South Georgia And The South Sandwich Islands - + Spain Hiszpania - + Sri Lanka Sri Lanka - + Sudan Sudan - + Suriname Surinam - + Svalbard And Jan Mayen - + Swaziland - + Sweden Szwecja - + Switzerland Szwajcaria - + Syrian Arab Republic Syria - + Taiwan, Province Of China Tajwan - + Tajikistan Tadżykistan - + Tanzania, United Republic Of Tanzania - + Thailand Tajlandia - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago Trinidad i Tobago - + Tunisia Tunezja - + Turkey Turcja - + Turkmenistan Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda Uganda - + Ukraine Ukraina - + United Arab Emirates Zjednoczone Emiraty Arabskie - + United Kingdom Wielka Brytania - + United States Stany Zjednoczone - + United States Minor Outlying Islands - + Uruguay Urugwaj - + Uzbekistan Uzbekistan - + Vanuatu - + Venezuela Wenezuela - + Viet Nam Wietnam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara Sahara Zachodnia - + Yemen Jemen - + Zambia Zambia - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Czy na pewno chcesz zgłosić nieodpowiednią nazwę gracza: "%1"? - + Are you sure you want to close the game: "%1"? Czy na pewno chcesz zamknąć grę: "%1"? - + Are you sure you want to total kickban the player: "%1"? Czy na pewno chcesz całkowicie zablokować gracza: "%1"? @@ -3470,7 +3470,7 @@ p, li { white-space: pre-wrap; } Connected players - Max. %1 - Połączeni gracze - max. %1 + Połączeni gracze - max. %1 @@ -3485,50 +3485,50 @@ p, li { white-space: pre-wrap; } otwarte gry : %1 - + Invite %1 Zaproś %1 - + Ignore %1 Ignoruj %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 został zaproszony do %2 przez %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 odrzucił zaproszenie do %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 nie może dołączyć do %2 ponieważ jest zajęty.</span> - - + + The game will start in<br><b>%1</b> seconds. Gra rozpocznie się za <br><b>%1</b> sekund. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Dołączyłeś do gry "tylko dla zaproszonych". Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście dostepnych graczy. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Zostałeś zaproszony do gry <b>%1</b> przez <b>%2</b>.<br>Chcesz dołączyć do tej gry? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Nie będziesz otrzymywał żadnych informacji ani zaproszeń do gry od tego gracza.<br>Czy na pewno chcesz dodać gracza <b>%1</b> do listy ignorowanych? @@ -3561,41 +3561,41 @@ Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście d szukaj gracza... - + Chat is only available to registered players. Chat jest dostępny tylko dla zarejestrowanych graczy. - + Invite player ... Zaproś gracza... - + Ignore player ... Ignoruj gracza... - + %1 is playing in "%2". %1 gra w "%2". - + %1 is not playing at the moment. %1 nie gra w tej chwili. - - + + PokerTH - Info Message PokerTH - Informacja - - - - + + + + PokerTH - Question PokerTH - Pytanie @@ -3926,19 +3926,19 @@ p, li { white-space: pre-wrap; } gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop @@ -3951,14 +3951,14 @@ p, li { white-space: pre-wrap; } Ctrl+N aby rozpocząć nową grę - - - - - - - - + + + + + + + + Start Start @@ -4109,8 +4109,8 @@ Proszę wybrać inny nick. Niestety ten serwer jest w tej chwili pełny. - - + + Chat Chat @@ -4195,26 +4195,26 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Proszę wejdź na stronę <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> i śćiągnij ostatnią wersję. - + Closing PokerTH during network game Zamknięcie PokerTH podczas gry siecowej - + You are the hosting server. Do you want to close PokerTH anyway? Jesteś gospodarzem. Chcesz naprawdę zamknąć PokerTH? - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Open-Source'owa gra Texas Holdem - - - - - + + + + + Lobby Chat @@ -4235,88 +4235,88 @@ Proszę wejdź na stronę <a href="http://www.pokerth.net/" target= Ta wersja beta PokerTH jest przestarzała.<br>Proszę odwiedzić stronę <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> i zainstalować najnowszą wersję. - + PokerTH - Internet Game Message PokerTH - Komunikat serwera gier online - + Attention! Do you really want to leave the current game and go back to the lobby? Uwaga! Czy na pewno chcesz opuścić tę grę i powrócić do chatu? - - + + Chance Szanse - + PokerTH %1 PokerTH %1 - + Really want to exit? Na pewno wyjść? - + PokerTH - Close Table? PokerTH - Zamknąć stół? - - + + Kick Wyrzuć - - + + Do you want to kick <b>%1</b><br>from this game? Czy chcesz wyrzucić gracza %1 z tej gry? - - - - + + + + <b>%1</b> secs left pozostało <b>%1</b> sekund - + vote głos - + votes głosy(-ów) - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Gracz <b>%1</b> zebrał <b>%2</b> %3<br>przeciwko sobie. <b>%4</b> głosów potrzebnych do wyrzucenia. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Zebrałeś <b>%1</b> %2 przeciwko sobie.<br><b>%3</b> głosów potrzebnych do wyrzucenia. - - + + Chat is only available to registered players. Chat jest dostępny dla zarejestrowanych graczy. - + Spectators Oglądający @@ -4567,7 +4567,7 @@ p, li { white-space: pre-wrap; } Could not load server-profiles-file: - Błąd ładowania listy serwerów z pliku: + Błąd ładowania listy serwerów z pliku: @@ -4612,7 +4612,7 @@ p, li { white-space: pre-wrap; } Could not save server-profiles-file: - Błąd zapisywania listy serwerów do pliku: + Błąd zapisywania listy serwerów do pliku: @@ -4732,48 +4732,48 @@ Chzesz go prezepisać ? Ustawienia gier lokalnych - + Game Speed: Szybkość gry: - + Number of players: Liczba graczy: - + Start Cash: Początkowe żetony: - + Blinds Ciemne - + Use saved blinds settings Używaj zapisanych ustawień ciemnych - + OK OK - + Change blinds settings ... Zmień ustawienia ciemnych ... - + $ $ diff --git a/ts/pokerth_ptbr.ts b/ts/pokerth_ptbr.ts index 36960197..e3100492 100644 --- a/ts/pokerth_ptbr.ts +++ b/ts/pokerth_ptbr.ts @@ -1,6 +1,6 @@ - + CardDeckStyleReader @@ -1740,7 +1740,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">(new line) + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">(new line) <html><head><meta name="qrichtext" content="1" /><style type="text/css">(new line) p, li { white-space: pre-wrap; }(new line) </style></head><body style=" font-family:'Nimbus Sans L'; font-size:8pt; font-weight:400; font-style:normal;">(new line) @@ -1811,7 +1811,7 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -2712,7 +2712,7 @@ Por favor escolha outro! Join &any game - Entrar &em qualquer jogo + Entrar &em qualquer jogo &Create Game @@ -2885,7 +2885,7 @@ p, li { white-space: pre-wrap; } Connected players - Jogadores conectados + Jogadores conectados hands @@ -2949,7 +2949,7 @@ p, li { white-space: pre-wrap; } Connected players - max. %1 - Jogadores conectados - max. %1 + Jogadores conectados - max. %1 T @@ -2957,7 +2957,7 @@ p, li { white-space: pre-wrap; } Connected players - Max. %1 - Jogadores conectados - Max. %1 + Jogadores conectados - Max. %1 running games: %1 @@ -4975,7 +4975,7 @@ p, li { white-space: pre-wrap; } Could not load server-profiles-file: - Não foi possível carregar servidor-perfil-arquivo: + Não foi possível carregar servidor-perfil-arquivo: @@ -4985,7 +4985,7 @@ p, li { white-space: pre-wrap; } Could not save server-profiles-file: - Não foi possível salvar servidor-perfil-arquivo: + Não foi possível salvar servidor-perfil-arquivo: diff --git a/ts/pokerth_ptpt.ts b/ts/pokerth_ptpt.ts index 11ee9149..87524ba8 100644 --- a/ts/pokerth_ptpt.ts +++ b/ts/pokerth_ptpt.ts @@ -211,22 +211,22 @@ Por favor, contacte o criador do mesa via %4. Erro no estilo da mesa de jogo - desatualizado - + Everything OK! Tudo correto! - + Some pictures are missing, please contact style maintainer for this issue. Faltam algumas imagens, contacte o programador deste estilo e reporte este assunto. - + Some style fields are missing, please contact style maintainer for this issue. Faltam alguns campos do estilo,contacte o programador deste estilo e reporte este assunto. - + This style is outdated, please contact style maintainer for this issue. Este estilo está desatualizado, contacte o programador deste estilo e reporte este assunto. @@ -1993,50 +1993,50 @@ p, li { white-space: pre-wrap; } - + Invite %1 Convidar %1 - + Ignore %1 Ignorar %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 foi convidado para %2 por %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 rejeitou o convite para %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 não pode entrar em %2. De momento, está ocupado.</span> - - + + The game will start in<br><b>%1</b> seconds. O jogo vai iniciar dentro de <br><b>%1</b> segundos. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Entrou num jogo disponível por convite. Sinta-se à vontade para convidar outros jogadores através da lista dos "nicks" disponíveis. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Foi convidado por <b>%2</b> para o jogo <b>%1</b>.<br> Pretende entra neste jogo? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? A partir de agora, não receberá mais mensagens de "chat" ou convites deste utilizador.<br>Pretende colocar o jogador <b>%1</b> na lista de ignorados? @@ -2130,1273 +2130,1273 @@ Sinta-se à vontade para convidar outros jogadores através da lista dos "n pesquisar pelo jogador... - + Chat is only available to registered players. O "chat" só está disponível para jogadores registados. - + Invite player ... Convidar jogador... - + Ignore player ... Ignorar jogador... - + %1 is playing in "%2". %1 está a jogar em "%2". - + %1 is not playing at the moment. De momento, %1 não está a jogar. - - + + PokerTH - Info Message Poket TH - Informações - - - - + + + + PokerTH - Question PokerTH - Pergunta - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Lituanês - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3683,99 +3683,99 @@ Sinta-se à vontade para convidar outros jogadores através da lista dos "n gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Parar - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - - - - + + + + + + + + Start Iniciar - - - - - + + + + + Lobby Sala - - + + Chat "Chat" - + Closing PokerTH during network game Fechando Poker TH durante um jogo de rede - + You are the hosting server. Do you want to close PokerTH anyway? Você está a funcionar como servidor. Tem acerteza que quer fechar? - + Really want to exit? Tem a certeza que quer sair? - + PokerTH - Close Table? PokerTH - Fechar mesa? - + PokerTH - Internet Game Message Poket TH - Mensagem do jogo em rede - + Attention! Do you really want to leave the current game and go back to the lobby? Atenção! Pretende sair do jogo atual e voltar para a sala? - - + + Chat is only available to registered players. O "chat" só está disponível para jogadores registados. - + Spectators @@ -3794,50 +3794,50 @@ Após %1 interrupções o servidor precisa de o expulsar para manter o fluxo de Se vai ficar ausente, utilize o botão "ausente" na caixa de ferramentas à direita. - - + + Chance Hipóteses - - + + Kick Expulsar - - + + Do you want to kick <b>%1</b><br>from this game? Deseja expulsar o jogador <b>%1</b><br> deste jogo? - - - - + + + + <b>%1</b> secs left faltam <b>%1</b> segundos - + vote voto - + votes votos - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. O jogador <b>%1</b> tem <b>%2</b> %3<br>contra ele. <b>%4</b> voto(s) precisos para a expulsão. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Você tem <b>%1</b> %2 contra si.<br><b>%3</b> voto(s) precisos para a expulsão. @@ -4223,48 +4223,48 @@ Pretende sobrescrevê-lo? Definições do jogo local - + Number of players: Número de jogadores: - + Start Cash: Dinheiro inicial: - + $ $ - + Blinds "Blinds" - + Use saved blinds settings Utilizar definições de "blinds" gravadas - + OK - + Change blinds settings ... Alterar definições de "blinds"... - + Game Speed: Velocidade do jogo: diff --git a/ts/pokerth_ru.ts b/ts/pokerth_ru.ts index aedc64e5..495f6020 100644 --- a/ts/pokerth_ru.ts +++ b/ts/pokerth_ru.ts @@ -221,22 +221,22 @@ Please contact the game table style builder via "%4". Ошибка стиля игрового стола - Устаревшая версия - + Everything OK! Все в порядке. - + Some pictures are missing, please contact style maintainer for this issue. Некоторые изображения отсутствуют, по этой проблеме свяжитесь c разработчиком. - + Some style fields are missing, please contact style maintainer for this issue. Некоторые поля стиля отсутствуют, по этой проблеме свяжитесь c разработчиком. - + This style is outdated, please contact style maintainer for this issue. Этот стиль устарел, по этой проблеме свяжитесь c разработчиком. @@ -2581,1234 +2581,1234 @@ p, li { white-space: pre-wrap; } сек (задержка партий) - + Afghanistan Афганистан - + ALand Islands Аландские острова - + Albania Албания - + Algeria Алжир - + American Samoa Американское Самоа - + Andorra Андорра - + Angola Ангола - + Anguilla Ангилья - + Antarctica Антарктида - + Antigua And Barbuda Антигуа и Барбуда - + Argentina Аргентина - + Armenia Армения - + Aruba Аруба - + Australia Австралия - + Austria Австрия - + Azerbaijan Азербайджан - + Bahamas Багамские острова - + Bahrain Бахрейн - + Bangladesh Бангладеш - + Barbados Барбадос - + Belarus Беларусь - + Belgium Бельгия - + Belize Белиз - + Benin Бенин - + Bermuda Бермудские острова - + Bhutan Бутан - + Bolivia Боливия - + Bosnia And Herzegovina Босния и Герцеговина - + Botswana Ботсвана - + Bouvet Island Буве - + Brazil Бразилия - + British Indian Ocean Territory Британская территория Индийского океана - + Brunei Darussalam Бруней-Даруссалам - + Bulgaria Болгария - + Burkina Faso Буркина-Фасо - + Burundi Бурунди - + Cambodia Камбоджа - + Cameroon Камерун - + Canada Канада - + Cape Verde Кабо-Верде - + Cayman Islands Каймановы острова - + Central African Republic Центрально-Африканская Республика - + Chad Чад - + Chile Чили - + China Китай - + Christmas Island Остров Рождества - + Cocos (Keeling) Islands Кокосовые (Килинг) острова - + Colombia Колумбия - + Comoros Коморские острова - + Congo Конго - + Congo, The Democratic Republic Of The Демократическая Республика Конго - + Cook Islands острова Кука - + Costa Rica Коста-Рика - + Cote D'Ivoire Кот-д'Ивуар - + Croatia Хорватия - + Cuba Куба - + Cyprus Кипр - + Czech Republic Чешская Республика - + Denmark Дания - + Djibouti Джибути - + Dominica Доминика - + Dominican Republic Доминиканская Республика - + Ecuador Эквадор - + Egypt Египет - + El Salvador Сальвадор - + Equatorial Guinea Экваториальная Гвинея - + Eritrea Эритрея - + Estonia Эстония - + Ethiopia Эфиопия - + Falkland Islands (Malvinas) Фолклендские (Мальвинские) острова - + Faroe Islands Фарерские острова - + Fiji Фиджи - + Finland Финляндия - + France Франция - + French Guiana Французская Гвиана - + French Polynesia Французская Полинезия - + French Southern Territories Французские Южные территории - + Gabon Габон - + Gambia Гамбия - + Georgia Грузия - + Germany Германия - + Ghana Гана - + Gibraltar Гибралтар - + Greece Греция - + Greenland Гренландия - + Grenada Гренада - + Guadeloupe Гваделупа - + Guam Гуам - + Guatemala Гватемала - + Guernsey Гернси - + Guinea Гвинея - + Guinea-Bissau Гвинея-Бисау - + Guyana Гайана - + Haiti Гаити - + Heard Island And Mcdonald Islands острова Херд и Макдональд - + Holy See (Vatican City State) Святой Престол (Государство-город Ватикан) - + Honduras Гондурас - + Hong Kong Гонконг - + Hungary Венгрия - + Iceland Исландия - + India Индия - + Indonesia Индонезия - + Iran, Islamic Republic Of Исламская Республика Иран - + Iraq Ирак - + Ireland Ирландия - + Isle Of Man Остров Мэн - + Israel Израиль - + Italy Италия - + Jamaica Ямайка - + Japan Япония - + Jersey Джерси - + Jordan Иордания - + Kazakhstan Казахстан - + Kenya Кения - + Kiribati Кирибати - + Korea, Democratic People'S Republic Of Корейская Народно-Демократическая Народная Республика - + Korea, Republic Of Республика Корея - + Kuwait Кувейт - + Kyrgyzstan Киргизия - + Lao People'S Democratic Republic Лаосская Народно-Демократическая Республика - + Latvia Латвия - + Lebanon Ливан - + Lesotho Лесото - + Liberia Либерия - + Libyan Arab Jamahiriya Ливийская Арабская Джамахирия - + Liechtenstein Лихтенштейн - + Lithuania Литва - + Luxembourg Люксембург - + Macao Макао - + Macedonia, The Former Yugoslav Republic Of Македония - + Madagascar Мадагаскар - + Malawi Малави - + Malaysia Малайзия - + Maldives Мальдивы - + Mali Мали - + Malta Мальта - + Marshall Islands Маршалловы острова - + Martinique Мартиника - + Mauritania Мавритания - + Mauritius Маврикий - + Mayotte Майотта - + Mexico Мексика - + Micronesia, Federated States Of Федеративные Штаты Микронезия - + Moldova, Republic Of Молдова - + Monaco Монако - + Mongolia Монголия - + Montserrat Монтсеррат - + Morocco Марокко - + Mozambique Мозамбик - + Myanmar Мьянма - + Namibia Намибия - + Nauru Науру - + Nepal Непал - + Netherlands Нидерланды - + Netherlands Antilles Нидерландские Антильские острова - + New Caledonia Новая Каледония - + New Zealand Новая Зеландия - + Nicaragua Никарагуа - + Niger Нигер - + Nigeria Нигерия - + Niue Ниуэ - + Norfolk Island Остров Норфолк - + Northern Mariana Islands Северные Марианские острова - + Norway Норвегия - + Oman Оман - + Pakistan Пакистан - + Palau Палау - + Palestinian Territory, Occupied Палестина - + Panama Панама - + Papua New Guinea Папуа-Новая Гвинея - + Paraguay Парагвай - + Peru Перу - + Philippines Филиппины - + Pitcairn Питкэрн - + Poland Польша - + Portugal Португалия - + Puerto Rico Пуэрто-Рико - + Qatar Катар - + Reunion Реюньон - + Romania Румыния - + Russian Federation Российская Федерация - + Rwanda Руанда - + Saint Helena Остров Святой Елены - + Saint Kitts And Nevis Сент-Китс и Невис - + Saint Lucia Сент-Люсия - + Saint Pierre And Miquelon Сен-Пьер и Микелон - + Saint Vincent And The Grenadines Сент-Винсент и Гренадины - + Samoa Самоа - + San Marino Сан-Марино - + Sao Tome And Principe Сан-Томе и Принсипи - + Saudi Arabia Саудовская Аравия - + Senegal Сенегал - + Serbia And Montenegro Сербия и Черногория - + Seychelles Сейшельские острова - + Sierra Leone Сьерра-Леоне - + Singapore Сингапур - + Slovakia Словакия - + Slovenia Словения - + Solomon Islands Соломоновы Острова - + Somalia Сомали - + South Africa ЮАР - + South Georgia And The South Sandwich Islands Южная Джорджия и Южные Сандвичевы острова - + Spain Испания - + Sri Lanka Шри Ланка - + Sudan Судан - + Suriname Суринам - + Svalbard And Jan Mayen Шпицберген и Ян-Майен - + Swaziland Свазиленд - + Sweden Швеция - + Switzerland Швейцария - + Syrian Arab Republic Сирийская Арабская Республика - + Taiwan, Province Of China Тайвань - + Tajikistan Таджикистан - + Tanzania, United Republic Of Объединенная Республика Танзания - + Thailand Таиланд - + Timor-Leste Тимор-Лешти - + Togo Того - + Tokelau Токелау - + Tonga Тонга - + Trinidad And Tobago Тринидад и Тобаго - + Tunisia Тунис - + Turkey Турция - + Turkmenistan Туркменистан - + Turks And Caicos Islands Острова Теркс и Кайкос - + Tuvalu Тувалу - + Uganda Уганда - + Ukraine Украина - + United Arab Emirates Объединенные Арабские Эмираты - + United Kingdom Великобритания - + United States Соединенные Штаты Америки - + United States Minor Outlying Islands Соединенные Штаты Америки Внешние малые острова - + Uruguay Уругвай - + Uzbekistan Узбекистан - + Vanuatu Вануату - + Venezuela Венесуэла - + Viet Nam Вьетнам - + Virgin Islands, British Виргинские острова, Британия - + Virgin Islands, U.S. Виргинские острова, США - + Wallis And Futuna Уоллис и Футуна - + Western Sahara Западная Сахара - + Yemen Йемен - + Zambia Замбия - + Zimbabwe Зимбабве - + Are you sure you want to report the game name: "%1" as inappropriate? Вы действительно хотите сообщить что имя игры "%1" недопустимое? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3850,50 +3850,50 @@ p, li { white-space: pre-wrap; } Открытых игр: %1 - + Invite %1 Пригласить %1 - + Ignore %1 Игнорировать %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 был приглашен %3 в %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 отклонил приглашение в %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 не может присоединиться к %2, потому что он занят.</span> - - + + The game will start in<br><b>%1</b> seconds. Игра начнётся через<br><b>%1</b> секунд. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Вы вошли в игру типа "только приглашенные". Не стесняйтесь приглашать других игроков нажав правой кнопкой мыши на их ​​имя в списке доступных игроков. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Вы были приглашены <b>%2</b> в игру <b>%1</b>.<br>Хотите присоединиться к этой игре? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Вы больше не будете получать сообщения из чата или приглашений в игру от данного пользователя. <br>Вы действительно хотите поместить игрока <b>%1</b> в список игнорирования? @@ -3926,41 +3926,41 @@ Feel free to invite other players by right-clicking on their nick in the availab поиск игрока... - + Chat is only available to registered players. Чат доступен только для зарегистрированных игроков. - + Invite player ... Пригласить игрока... - + Ignore player ... Игнорировать игрока... - + %1 is playing in "%2". %1 играет в "%2". - + %1 is not playing at the moment. %1 не играет в данный момент. - - + + PokerTH - Info Message PokerTH - Информационное сообщение - - - - + + + + PokerTH - Question PokerTH - Вопрос @@ -4339,19 +4339,19 @@ p, li { white-space: pre-wrap; } gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Стоп @@ -4368,14 +4368,14 @@ p, li { white-space: pre-wrap; } F1 - Сбросить/Ва-банк | F2 - Пропуск/Ответить | F3 - Ставка/Повысить - - - - - - - - + + + + + + + + Start Старт @@ -4544,8 +4544,8 @@ Please choose a different name. F1 - Ставка/Повысить | F2 - Пропуск/Ответить | F3 - Сбросить/Ва-банк - - + + Chat Чат @@ -4630,12 +4630,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Зайдите на <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> и скачайте самую новую версию. - + Closing PokerTH during network game Закрытие PokerTH во время сетевой игры - + You are the hosting server. Do you want to close PokerTH anyway? Вы являетесь сервером игры. Вы точно хотите закрыть PokerTH? @@ -4652,16 +4652,16 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Эта бета-версия PokerTH устарела.<br>Зайдите на <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> и скачайте самую свежую версию. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Покер Texas Holdem c открытым кодом - - - - - + + + + + Lobby Общая комната @@ -4670,88 +4670,88 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Произошла ошибка при обработке аватары. Пожалуйста, сообщите об этом администратору в общей комнате. - + PokerTH - Internet Game Message PokerTH - Сообщение игры в интернете - + Attention! Do you really want to leave the current game and go back to the lobby? Внимание! Вы действительно хотите покинуть текущую игру и вернуться в общую комнату? - - + + Chance Шансы - + PokerTH %1 PokerTH %1 - + Really want to exit? Действительно хотите выйти? - + PokerTH - Close Table? PokerTH - Покинуть стол? - - + + Kick Отключить - - + + Do you want to kick <b>%1</b><br>from this game? Вы действительно хотите исключить <b>%1</b><br>из игры? - - - - + + + + <b>%1</b> secs left <b>%1</b>сек. осталось - + vote голос - + votes голосов - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Игрок <b>%1</b> проголосовал против <b>%2</b> %3<br>. <b>%4</b> голоса(ов) необходимо для отключения. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. У вас <b>%1</b> %2 против вас.<br><b>%3</b> голоса(ов) необходимо для отключения. - - + + Chat is only available to registered players. Чат доступен только для зарегистрированных игроков. - + Spectators @@ -5182,25 +5182,25 @@ Would you like to overwrite ? Настройки локальной игры - + Game Speed: Скорость игры: - + Number of players: Количество игроков: - + Start Cash: Начальная сумма: - + OK @@ -5217,25 +5217,25 @@ Would you like to overwrite ? Количество партий для повышения ставки: - + Blinds Ставки - + Use saved blinds settings Использовать сохраненные настройки ставок - + Change blinds settings ... Изменить настройки ставок... - + $ $ diff --git a/ts/pokerth_sk.ts b/ts/pokerth_sk.ts index 7d8a853d..5cc9b37a 100644 --- a/ts/pokerth_sk.ts +++ b/ts/pokerth_sk.ts @@ -243,22 +243,22 @@ Prosím, kontaktujte autora štýlu herného stola na "%4".Chyba štýlu herného stola - Neaktuálny - + Everything OK! Všetko je OK! - + Some pictures are missing, please contact style maintainer for this issue. Nejaké obrázky chýbajú, prosím, kontaktujte správcu štýlu pre vyriešenie tohto problému. - + Some style fields are missing, please contact style maintainer for this issue. Nejaké polia štýlu chýbajú, prosím, kontaktujte správcu štýlu kvôli tomuto problému. - + This style is outdated, please contact style maintainer for this issue. Tento štýl nie je aktuálny, prosím, kontaktujte správcu štýlu. @@ -2604,1234 +2604,1234 @@ p, li { white-space: pre-wrap; } Pripojení hráči - max. %1 - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Litovština - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3888,50 +3888,50 @@ p, li { white-space: pre-wrap; } otvorené hry: %1 - + Invite %1 Pozvať %1 - + Ignore %1 Ignorovať %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 bol(a) pozvaný(á) k %2 užívateľom %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 odmietol pozvanie k %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 sa nemôže pridať k %2, pretože je zaneprázdnený.</span> - - + + The game will start in<br><b>%1</b> seconds. Hra sa začne o <br><b>%1</b> sekúnd. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Pridali ste sa k hre, ktorej typ je "len na pozvánku". Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich priezvisko v zozname dostupných hráčov. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Prišla vám pozvánka ku hre <b>%1</b> od <b>%2</b>.<br>Želáte si pridať sa k tejto hre? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Od tohto užívateľa už neobdržíte správy v chate alebo pozvánky do hry.<br>Naozaj si prajete pridať hráča <b>%1</b> do zoznamu ignorovaných? @@ -3964,41 +3964,41 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie hľadanie hráča... - + Chat is only available to registered players. Chat je dostupný len registrovaným hráčom. - + Invite player ... Pozvať hráča... - + Ignore player ... Ignorovať hráča... - + %1 is playing in "%2". %1 hrá v "%2". - + %1 is not playing at the moment. %1 momentálne nehrá. - - + + PokerTH - Info Message PokerTH - Informačná správa - - - - + + + + PokerTH - Question PokerTH - Otázka @@ -4341,19 +4341,19 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Zastaviť @@ -4370,14 +4370,14 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie F1 - Zložiť karty/Vsadiť všetko | F2 - Zdržať sa/Dorovnať | F3 - Stávka/Zvýšiť - - - - - - - - + + + + + + + + Start Štart @@ -4538,8 +4538,8 @@ Prosím, vyberte si iné meno. Ľutujem, táto hra je už plná. - - + + Chat Chat @@ -4624,12 +4624,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Prosím navštívte <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> a stiahnite najnovšiu verziu. - + Closing PokerTH during network game Zatváram PokerTH počas sieťovej hry - + You are the hosting server. Do you want to close PokerTH anyway? Vy ste hosťujúci server. Chcete ukončiť PokerTH i napriek tomu? @@ -4646,16 +4646,16 @@ Prosím navštívte <a href="http://www.pokerth.net/" target=" Táto betaverzia PokerTH je zastaralá.<br>Prosím navštívte <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> a stiahnite si najnovšiu verziu. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Open-Source Texas Holdem Engine - - - - - + + + + + Lobby Lobby @@ -4664,12 +4664,12 @@ Prosím navštívte <a href="http://www.pokerth.net/" target=" Došlo k internej chybe avatara. Prosím nahláste ju adminovi v lobby chate. - + PokerTH - Internet Game Message PokerTH - Správa hry na internete - + Attention! Do you really want to leave the current game and go back to the lobby? Upozornenie! Určite chcete opustiť momentálnu hru @@ -4730,64 +4730,64 @@ Uistite sa, prosím, že ste pripojený priamo na internet. Nepodarilo sa otvoriť cieľový súbor pri sťahovaní zoznamu serverov. - + PokerTH %1 PokerTH %1 - - + + Chance Šanca - + Really want to exit? Naozaj chcete ukončiť? - + PokerTH - Close Table? PokerTH - Uzatvoriť stôl? - - + + Kick Vykopnúť - - + + Do you want to kick <b>%1</b><br>from this game? Želáte si vykopnúť <b>%1</b><br>z tejto hry? - - - - + + + + <b>%1</b> secs left zostáva <b>%1</b> sekúnd - + vote hlas - + votes hlasy(ov) - - + + Chat is only available to registered players. Chat je dostupný len registrovaným hráčom. - + Spectators @@ -4814,14 +4814,14 @@ Ak ste dočasne mimo, môžete použiť nástroje "preč" v nástrojov Proti vám bol(o) <b>%1</b> %2.<br><b>%3</b> hlasov je treba na vykopnutie. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Hráč <b>%1</b> má <b>%2</b> %3<br>proti. Na vykopnutie je potrebných <b>%4</b> hlasy(ov). - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Je proti vám <b>%1</b> %2. <br><b>Na vykopnutie je potrebných <b>%3</b> hlasy(ov). @@ -5240,25 +5240,25 @@ Prajete si ho prepísať? Nastavenia lokálnej hry - + Game Speed: Rýchlosť hry: - + Number of players: Počet hráčov: - + Start Cash: Úvodná hotovosť: - + OK @@ -5271,25 +5271,25 @@ Prajete si ho prepísať? Počet rozdaní pred zvýšením malej stávky naslepo: - + Blinds Stávky - + Use saved blinds settings Použiť uložené nastavenia stávok - + Change blinds settings ... Zmeniť nastavenia stávok... - + $ $ diff --git a/ts/pokerth_sv.ts b/ts/pokerth_sv.ts index 0f5c2f23..ef813056 100644 --- a/ts/pokerth_sv.ts +++ b/ts/pokerth_sv.ts @@ -167,22 +167,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -1755,38 +1755,38 @@ p, li { white-space: pre-wrap; } - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. @@ -1806,12 +1806,12 @@ Feel free to invite other players by right-clicking on their nick in the availab - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -1861,1273 +1861,1273 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3426,19 +3426,19 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Sluta @@ -3451,7 +3451,7 @@ Feel free to invite other players by right-clicking on their nick in the availab Ctrl+N för att starta ett nytt spel - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Den öppna pokermotorn för Texas Hold'em @@ -3470,23 +3470,23 @@ Välj ett nytt namn. F1 - "All in" (Satsa allt) | F2 - Satsa/Höj | F3 - Pass/Syn | F4 - Lägg - - - - - - - - + + + + + + + + Start Starta - - - - - + + + + + Lobby Lobby @@ -3697,104 +3697,104 @@ Vänligen välj ett nytt namn. Automatiskt läge valt: Pass eller Lägg. - - + + Chat Chatt - + Closing PokerTH during network game Stänger PokerTH under nätverksspel - + You are the hosting server. Do you want to close PokerTH anyway? Du är värdserver för spelet, vill du stänga ner i alla fall? - + PokerTH - Internet Game Message PokerTH - Internetspels-meddelande - + Attention! Do you really want to leave the current game and go back to the lobby? OBS! Vill du verkligen lämna det nuvarande spelet och återvända till lobbyn? - - + + Chance - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. - + Spectators @@ -4168,48 +4168,48 @@ Vill du skriva över den? Inställningar för Lokalt Spel - + Number of players: Antal spelare: - + Start Cash: Inköp: - + $ SEK - + Blinds Mörkar - + Use saved blinds settings Använd tidigare mörkar - + OK - + Change blinds settings ... Ändra mörkar ... - + Game Speed: Hastighet: diff --git a/ts/pokerth_ta.ts b/ts/pokerth_ta.ts index 6d892d62..b57ac4ff 100644 --- a/ts/pokerth_ta.ts +++ b/ts/pokerth_ta.ts @@ -191,22 +191,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -1751,1291 +1751,1291 @@ p, li { white-space: pre-wrap; } - + Invite %1 - + Ignore %1 - + %1 is playing in "%2". - + %1 is not playing at the moment. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -3089,7 +3089,7 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Chat is only available to registered players. @@ -3098,7 +3098,7 @@ Feel free to invite other players by right-clicking on their nick in the availab %1 என்ற விளையாட்டு வீரரை அழையுங்கள் - + Invite player ... விளையாட்டு வீரரை அழையுங்கள் ... @@ -3107,7 +3107,7 @@ Feel free to invite other players by right-clicking on their nick in the availab %1 என்ற விளையாட்டு வீரரை புறக்கணிக்கவும் - + Ignore player ... விளையாட்டு வீரரை புறக்கணிக்கவும் ... @@ -3118,8 +3118,8 @@ You can invite other players with right-click on their nick in the left availabl மற்றவர்களை அழைக்க இடது பக்கமுள்ள வீரர்களின் பட்டியலில் மௌசின் வலது பொத்தானை அழுத்தி விளையாட அழையுங்கள். - - + + PokerTH - Info Message போகர்டேஹோ - செய்தி தகவல் @@ -3144,10 +3144,10 @@ You can invite other players with right-click on their nick in the left availabl இனிமேல் இந்த நபரிடமிருந்து உரையாடல் செய்தியோ விளையாட்டு அழைப்பிதலோ பெற முடியாது.<br>நீங்கள் இந்த விளையாட்டு வீரரை <b>%1</b> புறக்கணிப்பு பட்டியலில் போட விரும்புகிறீர்களா? - - - - + + + + PokerTH - Question போகர்டேஹோ - வினா @@ -3434,147 +3434,147 @@ You can invite other players with right-click on their nick in the left availabl gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop நிறுத்து - + PokerTH %1 போகர்டேஹோ %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine போகர்டெஹோ %1 - சுதந்திர-மூலநிரல் டெக்சாஸ் ஹோல்தேம் பொறி - - - - - - - - + + + + + + + + Start ஆரம்பி - - - - - + + + + + Lobby வரவேற்ப்பறை - - + + Chat உரையாடல் - + Closing PokerTH during network game விளையாட்டு வலையில் போகர்டேஹோ வை மூடும் பொழுது - + You are the hosting server. Do you want to close PokerTH anyway? நீங்கள்தான் இந்த விளையாட்டை ஆரம்பித்தீர்கள். நீங்கள் போகர்டேஹோ வை நிச்சயம் மூட வேண்டுமா? - + Really want to exit? - + PokerTH - Close Table? - + PokerTH - Internet Game Message போகர்டேஹோ - இணையதள விளையாட்டு செய்தி - + Attention! Do you really want to leave the current game and go back to the lobby? கவனிக்க! தற்சமயம் விளையாடும் விளையாட்டிலிருந்து நிச்சயம் நீங்கள் விலகி வரவேர்ப்பரைக்கு திரும்பி செல்ல விரும்புகிறீர்களா? - - + + Chat is only available to registered players. - + Spectators - - + + Chance ஜெயிக்கும் வாய்ப்பு - - + + Kick துரத்து - - + + Do you want to kick <b>%1</b><br>from this game? நீங்கள் <b>%1</b>என்பவரை <br>விளையாட்டிலிருந்து துரத்த விரும்புகிறீர்களா? - - - - + + + + <b>%1</b> secs left <b>%1</b> நொடிகள் மீதமுள்ளது - + vote ஒட்டு - + votes ஒட்டுகள் - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. விளையாட்டு வீரர் <b>%1</b> என்பவருக்கு எதிராக <b>%2</b> %3<br>உள்ளது. அவரை துரத்த <b>%4</b> ஓட்டுகள் தேவை. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. உங்களுக்கு எதிராக <b>%1</b> %2 உள்ளது.<br>உங்களை வெளியேற்ற <b>%3</b> ஓட்டுகள் தேவை. @@ -3958,48 +3958,48 @@ Would you like to overwrite ? உள்ளக கணினி விளையாட்டின் அமைப்பு - + Number of players: விளையாட்டு வீரர்களின் எண்ணிக்கை: - + Start Cash: பணம் செலுத்த ஆரம்பி: - + $ - + Blinds பந்தயத்தொகை - + Use saved blinds settings முன்பு பயன்படுத்திய பந்தயத்தொகை அமைப்பை உபயோகி - + OK - + Change blinds settings ... பந்தயத்தொகை அமைப்பை மாற்றுக ... - + Game Speed: விளையாட்டின் வேகம்: diff --git a/ts/pokerth_tr.ts b/ts/pokerth_tr.ts index 28f7766c..37ff02a1 100644 --- a/ts/pokerth_tr.ts +++ b/ts/pokerth_tr.ts @@ -167,22 +167,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -2088,1234 +2088,1234 @@ p, li { white-space: pre-wrap; } - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3353,49 +3353,49 @@ p, li { white-space: pre-wrap; } açık oyunlar: %1 - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -3428,41 +3428,41 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question @@ -3805,31 +3805,31 @@ Feel free to invite other players by right-clicking on their nick in the availab F1 - Katla/Hepsini | F2 - Denetle/Çağır | F3 - Bahis/Yükselt - - - - - - - - + + + + + + + + Start Başlat - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Dur @@ -4002,8 +4002,8 @@ Eğer sunucu bir NAT-Router arkasındaysa, sunucu tarafındaki bağlantı noktas Oto kip ayarlı: denetleyin veya katlayın. - - + + Chat Sohbet @@ -4076,12 +4076,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Lütfen <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> adresinden son sürümü indiriniz. - + Closing PokerTH during network game Ağ oyunu sırasında PokerTH kapatılıyor - + You are the hosting server. Do you want to close PokerTH anyway? Siz ana sunucusunuz. Yinede PokerTH programını kapatmak istiyor musunuz? @@ -4098,16 +4098,16 @@ Lütfen <a href="http://www.pokerth.net/" target="_blank" PokerTH ara sürümü artık geçersiz.<br>Lütfen <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> adresinden son sürümü indiriniz. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Açık-Kaynak Texas Holdem Motoru - - - - - + + + + + Lobby Kulis @@ -4116,88 +4116,88 @@ Lütfen <a href="http://www.pokerth.net/" target="_blank" İçsel bir simge hatası algılandı. Lütfen bunu kulis söyleşisinde yöneticiye iletin. - + PokerTH - Internet Game Message PokerTH - Internet Oyunu Mesajı - + Attention! Do you really want to leave the current game and go back to the lobby? Dikkat! Bu oyunu gerçekten bırakmak ve lobiye dönmek istiyormusunuz? - - + + Chance Şans - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Tekmele - - + + Do you want to kick <b>%1</b><br>from this game? <b>%1</b><br> kişisini oyundan atmak istiyormusunuz? - - - - + + + + <b>%1</b> secs left <b>%1</b> saniye kaldı - + vote oy - + votes oylar - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. - + Spectators @@ -4598,13 +4598,13 @@ Would you like to overwrite ? Yerel Oyun Ayarları - + Game Speed: Oyun Hızı: - + Start Cash: Ödemeyi Başlat: @@ -4614,7 +4614,7 @@ Would you like to overwrite ? Small Blind: - + Number of players: Oyuncu Sayısı: @@ -4624,30 +4624,30 @@ Would you like to overwrite ? Antall henter før "Small Blind" økes: - + Blinds Teklifler - + Use saved blinds settings Kayıtlı teklif ayarlarını kullan - + OK - + Change blinds settings ... Teklif ayarlarını değiştir ... - + $ $ diff --git a/ts/pokerth_vi.ts b/ts/pokerth_vi.ts index 397110eb..d4d9ee5e 100644 --- a/ts/pokerth_vi.ts +++ b/ts/pokerth_vi.ts @@ -210,22 +210,22 @@ Xin vui lòng liên hệ tác giả đã tạo ra kiểu họa tiết bàn chơi Lỗi về họa tiết bàn chơi bài - Quá cũ so với phiên bản hiện tại - + Everything OK! Tất cả mọi thiết lập đều hợp lệ! - + Some pictures are missing, please contact style maintainer for this issue. Một vài hình ảnh bị thiếu, vui lòng liên hệ tác giả đã thiết kế phần này để hoàn thiện phần thông tin thiếu nói trên. - + Some style fields are missing, please contact style maintainer for this issue. Một vài thông tin về kiểu họa tiết bị thiếu, xin vui lòng liên hệ tác giả của phần họa tiết đó để hoàn thiện thông tin bị thiếu. - + This style is outdated, please contact style maintainer for this issue. Kiểu họa tiết này đã quá cũ, xin vui lòng liên hệ tác giả của kiểu họa tiết này để hoàn thiện phần họa tiết trên. @@ -1815,50 +1815,50 @@ p, li { white-space: pre-wrap; } - + Invite %1 Mời %1 - + Ignore %1 Bỏ qua %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 được mời tới %2 bởi %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 đã từ chối lời mời đến %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 không thể tham gia %2 vì đang tham gia vào một màn chơi khác.</span> - - + + The game will start in<br><b>%1</b> seconds. Màn chơi sẽ bắt đầu trong vòng<br><b>%1</b> giây nữa. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Bạn đã tham gia vào màn chơi dạng "chỉ dành cho khách mời/mật khẩu". Hãy mời những người chơi khác bằng cách chọn chuột phải vào tên của các người chơi trong danh sách các người chơi đang kết nối. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Bạn đã được mời tham gia màn chơi <b>%1</b> bởi <b>%2</b>.<br>Bạn có muốn tham gia màn chơi này không? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Trong tương lai bạn sẽ không còn nhận được các tin nhắn tán gẫu hoặc lời mời chơi từ người dùng này.<br>Bạn có chắc rằng sẽ cho người dùng <b>%1</b> vào danh sách bỏ qua hay không? @@ -1947,1274 +1947,1274 @@ Hãy mời những người chơi khác bằng cách chọn chuột phải vào tìm kiếm người chơi... - + Chat is only available to registered players. Tính năng tán gẫu/chat chỉ được kích hoạt với những người chơi đã đăng ký. - + Invite player ... Mời người chơi... - + Ignore player ... Bỏ qua người chơi... - + %1 is playing in "%2". %1 đang chơi ở "%2". - + %1 is not playing at the moment. %1 không chơi bàn nào ở thời điểm này. - - + + PokerTH - Info Message PokerTH - Thông báo - - - - + + + + PokerTH - Question PokerTH - Xác nhận - + Afghanistan Afghanistan - + ALand Islands ALand Islands - + Albania Albania - + Algeria Algeria - + American Samoa American Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarctica - + Antigua And Barbuda Antigua And Barbuda - + Argentina Argentina - + Armenia Armenia - + Aruba Aruba - + Australia Úc - + Austria Áo - + Azerbaijan Azerbaijan - + Bahamas Bahamas - + Bahrain Bahrain - + Bangladesh Bangladesh - + Barbados Barbados - + Belarus Belarus - + Belgium Bỉ - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia And Herzegovina - + Botswana Botswana - + Bouvet Island Bouvet Island - + Brazil Brazil - + British Indian Ocean Territory British Indian Ocean Territory - + Brunei Darussalam Brunei Darussalam - + Bulgaria Bulgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Cam-pu-chia - + Cameroon Cameroon - + Canada Canada - + Cape Verde Cape Verde - + Cayman Islands Cayman Islands - + Central African Republic Central African Republic - + Chad Chad - + Chile Chile - + China Cẩu Chó - Ba Tàu - Tàu Khựa - + Christmas Island Christmas Island - + Cocos (Keeling) Islands Cocos (Keeling) Islands - + Colombia Colombia - + Comoros Comoros - + Congo Congo - + Congo, The Democratic Republic Of The Congo, The Democratic Republic Of The - + Cook Islands Cook Islands - + Costa Rica Costa Rica - + Cote D'Ivoire Cote D'Ivoire - + Croatia Croatia - + Cuba Cuba - + Cyprus Síp - + Czech Republic Czech Republic - + Denmark Đan Mạch - + Djibouti Djibouti - + Dominica Dominica - + Dominican Republic Dominican Republic - + Ecuador Ecuador - + Egypt Ai Cập - + El Salvador El Salvador - + Equatorial Guinea Equatorial Guinea - + Eritrea Eritrea - + Estonia Estonia - + Ethiopia Ethiopia - + Falkland Islands (Malvinas) Falkland Islands (Malvinas) - + Faroe Islands Faroe Islands - + Fiji Fiji - + Finland Phần Lan - + France Pháp - + French Guiana French Guiana - + French Polynesia French Polynesia - + French Southern Territories French Southern Territories - + Gabon Gabon - + Gambia Gambia - + Georgia Georgia - + Germany Đức - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Hy Lạp - + Greenland Greenland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bissau - + Guyana Guyana - + Haiti Haiti - + Heard Island And Mcdonald Islands Heard Island And Mcdonald Islands - + Holy See (Vatican City State) Holy See (Vatican City State) - + Honduras Honduras - + Hong Kong Hồng Khựa - Ba Tàu - + Hungary Hungary - + Iceland Iceland - + India Ấn Độ - + Indonesia Indonesia - + Iran, Islamic Republic Of Iran - + Iraq Iraq - + Ireland Ireland - + Isle Of Man Isle Of Man - + Israel Israel - + Italy Ý - + Jamaica Jamaica - + Japan Nhật - + Jersey Jersey - + Jordan Jordan - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Triều Tiên Ủn - + Korea, Republic Of Hàn Quốc - + Kuwait Kuwait - + Kyrgyzstan Kyrgyzstan - + Lao People'S Democratic Republic Lào - + Latvia Latvia - + Lebanon - + Lesotho Lesotho - + Liberia Liberia - + Libyan Arab Jamahiriya Libyan Arab Jamahiriya - + Liechtenstein Liechtenstein - + Lithuania Lithuania - + Luxembourg Luxembourg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia, The Former Yugoslav Republic Of - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malaysia - + Maldives Maldives - + Mali Mali - + Malta Malta - + Marshall Islands Marshall Islands - + Martinique Martinique - + Mauritania Mauritania - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Mexico - + Micronesia, Federated States Of Micronesia, Federated States Of - + Moldova, Republic Of Moldova, Republic Of - + Monaco Monaco - + Mongolia Mongolia - + Montserrat Montserrat - + Morocco Morocco - + Mozambique Mozambique - + Myanmar Myanmar - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Netherlands - + Netherlands Antilles Netherlands Antilles - + New Caledonia New Caledonia - + New Zealand New Zealand - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Norfolk Island - + Northern Mariana Islands Northern Mariana Islands - + Norway Na Uy - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Palestinian Territory, Occupied - + Panama Panama - + Papua New Guinea Papua New Guinea - + Paraguay Paraguay - + Peru Peru - + Philippines Philippines - + Pitcairn Pitcairn - + Poland Ba Lan - + Portugal Bồ Đào Nha - + Puerto Rico Puerto Rico - + Qatar Qatar - + Reunion Reunion - + Romania Romania - + Russian Federation Russian Federation - + Rwanda Rwanda - + Saint Helena Saint Helena - + Saint Kitts And Nevis Saint Kitts And Nevis - + Saint Lucia Saint Lucia - + Saint Pierre And Miquelon Saint Pierre And Miquelon - + Saint Vincent And The Grenadines Saint Vincent And The Grenadines - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe Sao Tome And Principe - + Saudi Arabia Saudi Arabia - + Senegal Senegal - + Serbia And Montenegro Serbia And Montenegro - + Seychelles Seychelles - + Sierra Leone Sierra Leone - + Singapore Singapore - + Slovakia Slovakia - + Slovenia Slovenia - + Solomon Islands Solomon Islands - + Somalia Somalia - + South Africa Nam Phi - + South Georgia And The South Sandwich Islands Canada - + Spain Tây Ban Nha - + Sri Lanka Canada - + Sudan Canada - + Suriname Canada - + Svalbard And Jan Mayen Canada - + Swaziland Canada - + Sweden Thụy Điển - + Switzerland Thụy Sĩ - + Syrian Arab Republic Canada - + Taiwan, Province Of China Đài Loan - Tàu Khựa - + Tajikistan Canada - + Tanzania, United Republic Of Canada - + Thailand Thái - + Timor-Leste Canada - + Togo Canada - + Tokelau Canada - + Tonga Canada - + Trinidad And Tobago Canada - + Tunisia Canada - + Turkey Thổ Nhĩ Kỳ - + Turkmenistan Canada - + Turks And Caicos Islands Canada - + Tuvalu Canada - + Uganda Canada - + Ukraine Canada - + United Arab Emirates Liên Đoàn Ả Rập - + United Kingdom Anh Quốc - + United States Hợp Chủng Quốc Hoa Kỳ - + United States Minor Outlying Islands Canada - + Uruguay Canada - + Uzbekistan Canada - + Vanuatu Canada - + Venezuela Canada - + Viet Nam tiếng Việt - Việt Nam - + Virgin Islands, British Canada - + Virgin Islands, U.S. Virgin Islands, U.S. - + Wallis And Futuna Wallis And Futuna - + Western Sahara Western Sahara - + Yemen Yemen - + Zambia Zambia - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Bạn có chắc rằng bạn muốn tố cáo tên màn game : "%1" vì lý do không hợp lệ hay không? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3501,147 +3501,147 @@ Hãy mời những người chơi khác bằng cách chọn chuột phải vào gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Dừng lại - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - - - - + + + + + + + + Start Bắt đầu - - - - - + + + + + Lobby Phòng chờ hệ thống - - + + Chat Tán gẫu - + Closing PokerTH during network game Đóng lại chương trình sau khi chơi xong màn chơi online - + You are the hosting server. Do you want to close PokerTH anyway? Bạn đang là người chủ của màn chơi này. Bạn có muốn thoát chương trình không? - + Really want to exit? Bạn có thật sự muốn thoát? - + PokerTH - Close Table? PokerTH - Đóng lại màn chơi này? - + PokerTH - Internet Game Message PokerTH - Thông báo của màn chơi online - + Attention! Do you really want to leave the current game and go back to the lobby? Chú ý! Bạn có thật sự muốn thoát ra khỏi màn chơi này và quay lại phòng chờ của hệ thống không? - - + + Chat is only available to registered players. Phần tán gẫu/chat chỉ dành riêng cho các người chơi đã đăng ký. - + Spectators - - + + Chance Cơ hội - - + + Kick Đuổi - - + + Do you want to kick <b>%1</b><br>from this game? Bạn có thật sự muốn đuổi <b>%1</b><br> khỏi màn chơi này không? - - - - + + + + <b>%1</b> secs left còn lại <b>%1</b> giây nữa - + vote bỏ phiếu - + votes bỏ phiếu - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Người chơi <b>%1</b> đã <b>%2</b> %3<br>muốn đuổi người chơi này. <b>%4</b> bình chọn để đuổi người chơi. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Bạn nhận được <b>%1</b> %2 yêu cầu đuổi bạn.<br><b>%3</b> phiếu cần để đuổi. @@ -4026,48 +4026,48 @@ Bạn có muốn ghi đè lên hồ sơ này không? Thiết lập màn chơi đơn - + Number of players: Số lượng người chơi: - + Start Cash: Số tiền ban đầu: - + $ $ - + Blinds Tiền cược - + Use saved blinds settings Sử dụng thiết lập về tiền cược lần trước - + OK - + Change blinds settings ... Thay đổi thiết lập tỉ lệ tiền cược... - + Game Speed: Tốc độ màn chơi: diff --git a/ts/pokerth_zhcn.ts b/ts/pokerth_zhcn.ts index 9ab949b9..da35eeda 100644 --- a/ts/pokerth_zhcn.ts +++ b/ts/pokerth_zhcn.ts @@ -212,22 +212,22 @@ Please contact the game table style builder via "%4". 赌桌款式出错 - 已过期 - + Everything OK! 没问题! - + Some pictures are missing, please contact style maintainer for this issue. 一些图片缺失了. 请联系赌桌款式维护人员以解决此问题. - + Some style fields are missing, please contact style maintainer for this issue. 一些款式字段缺失了. 请联系赌桌款式维护人员以解决此问题. - + This style is outdated, please contact style maintainer for this issue. 这个赌桌款式过期了. 请联系赌桌款式维护人员以解决此问题. @@ -1705,50 +1705,50 @@ p, li { white-space: pre-wrap; } - + Invite %1 邀请 %1 - + Ignore %1 无视 %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 邀请 %1 加入 %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 拒绝了加入 %2 的邀请.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 正忙, 无法加入 %2.</span> - - + + The game will start in<br><b>%1</b> seconds. 游戏将于 <br><b>%1</b> 秒钟后开局. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. 你已加入了一个 "仅限受邀者" 类型的游戏. 你可以按自己的意愿, 右击在线玩家列表中的玩家名以邀请其他玩家. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? <b>%2</b> 向你发出了加入游戏 <b>%1</b> 的邀请. 你想加入这个游戏吗? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? 你将不会再收到来自这名玩家的消息及游戏邀请.<br>你确定要将玩家 <b>%1</b> 置于无视名单之中吗? @@ -1837,1273 +1837,1273 @@ Feel free to invite other players by right-clicking on their nick in the availab 查找玩家... - + Chat is only available to registered players. 聊天功能仅供已注册玩家使用. - + Invite player ... 邀请玩家... - + Ignore player ... 无视玩家... - + %1 is playing in "%2". %1 正在游戏 "%2" 中玩着. - + %1 is not playing at the moment. %1 目前没在玩. - - + + PokerTH - Info Message PokerTH - 信息提示 - - - - + + + + PokerTH - Question PokerTH - 问题 - + Afghanistan 阿富汗 - + ALand Islands 奥兰群岛 - + Albania 阿尔巴尼亚 - + Algeria 阿尔及利亚 - + American Samoa 美属萨摩亚 - + Andorra 安道尔 - + Angola 安哥拉 - + Anguilla 安圭拉 - + Antarctica 南极洲 - + Antigua And Barbuda 安提瓜和巴布达 - + Argentina 阿根廷 - + Armenia 亚美尼亚 - + Aruba 阿鲁巴 - + Australia 澳大利亚 - + Austria 奥地利 - + Azerbaijan 阿塞拜疆 - + Bahamas 巴哈马 - + Bahrain 巴林 - + Bangladesh 孟加拉国 - + Barbados 巴巴多斯 - + Belarus 白俄罗斯 - + Belgium 比利时 - + Belize 伯利兹 - + Benin 贝宁 - + Bermuda 百慕大 - + Bhutan 不丹 - + Bolivia 玻利维亚 - + Bosnia And Herzegovina 波斯尼亚 - 黑塞哥维那 - + Botswana 博茨瓦纳 - + Bouvet Island 布维岛 - + Brazil 巴西 - + British Indian Ocean Territory 英属印度洋领地 - + Brunei Darussalam 文莱达鲁萨兰国 - + Bulgaria 保加利亚 - + Burkina Faso 布基纳法索 - + Burundi 布隆迪 - + Cambodia 柬埔寨 - + Cameroon 喀麦隆 - + Canada 加拿大 - + Cape Verde 佛得角 - + Cayman Islands 开曼群岛 - + Central African Republic 中非共和国 - + Chad 乍得 - + Chile 智利 - + China 中国 - + Christmas Island 圣诞岛 - + Cocos (Keeling) Islands 科科斯 (基林) 群岛 - + Colombia 哥伦比亚 - + Comoros 科摩罗 - + Congo 刚果 - + Congo, The Democratic Republic Of The 刚果民主共和国 - + Cook Islands 库克群岛 - + Costa Rica 哥斯达黎加 - + Cote D'Ivoire 科特迪瓦 - + Croatia 克罗地亚 - + Cuba 古巴 - + Cyprus 塞浦路斯 - + Czech Republic 捷克共和国 - + Denmark 丹麦 - + Djibouti 吉布提 - + Dominica 多米尼加 - + Dominican Republic 多米尼加共和国 - + Ecuador 厄瓜多尔 - + Egypt 埃及 - + El Salvador 萨尔瓦多 - + Equatorial Guinea 赤道几内亚 - + Eritrea 厄立特里亚 - + Estonia 爱沙尼亚 - + Ethiopia 埃塞俄比亚 - + Falkland Islands (Malvinas) 福克兰群岛 (马尔维纳斯) - + Faroe Islands 法罗群岛 - + Fiji 斐济 - + Finland 芬兰 - + France 法国 - + French Guiana 法属圭亚那 - + French Polynesia 法属波利尼西亚 - + French Southern Territories 法属南半球和南极领地 - + Gabon 加蓬 - + Gambia 冈比亚 - + Georgia 格鲁吉亚 - + Germany 德国 - + Ghana 加纳 - + Gibraltar 直布罗陀 - + Greece 希腊 - + Greenland 格陵兰 - + Grenada 格林纳达 - + Guadeloupe 瓜德罗普 - + Guam 关岛 - + Guatemala 危地马拉 - + Guernsey 根西岛 - + Guinea 几内亚 - + Guinea-Bissau 几内亚比绍 - + Guyana 圭亚那 - + Haiti 海地 - + Heard Island And Mcdonald Islands 赫德岛和麦克唐纳岛 - + Holy See (Vatican City State) 梵蒂冈 - + Honduras 洪都拉斯 - + Hong Kong 香港 - + Hungary 匈牙利 - + Iceland 冰岛 - + India 印度 - + Indonesia 印度尼西亚 - + Iran, Islamic Republic Of 伊朗伊斯兰共和国 - + Iraq 伊拉克 - + Ireland 爱尔兰 - + Isle Of Man 马恩岛 - + Israel 以色列 - + Italy 意大利 - + Jamaica 牙买加 - + Japan 日本 - + Jersey 泽西岛 - + Jordan 约旦 - + Kazakhstan 哈萨克斯坦 - + Kenya 肯尼亚 - + Kiribati 基里巴斯 - + Korea, Democratic People'S Republic Of 朝鲜民主主义人民共和国 - + Korea, Republic Of 大韩民国 - + Kuwait 科威特 - + Kyrgyzstan 吉尔吉斯斯坦 - + Lao People'S Democratic Republic 老挝人民民主共和国 - + Latvia 拉脱维亚 - + Lebanon 黎巴嫩 - + Lesotho 莱索托 - + Liberia 利比里亚 - + Libyan Arab Jamahiriya 阿拉伯利比亚民众国 - + Liechtenstein 列支敦士登 - + Lithuania 立陶宛 - + Luxembourg 卢森堡 - + Macao 澳门 - + Macedonia, The Former Yugoslav Republic Of 前南斯拉夫的马其顿共和国 - + Madagascar 马达加斯加 - + Malawi 马拉维 - + Malaysia 马来西亚 - + Maldives 马尔代夫 - + Mali 马里 - + Malta 马耳他 - + Marshall Islands 马绍尔群岛 - + Martinique 马提尼克 - + Mauritania 毛里塔尼亚 - + Mauritius 毛里求斯 - + Mayotte 马约特 - + Mexico 墨西哥 - + Micronesia, Federated States Of 密克罗尼西亚联邦 - + Moldova, Republic Of 摩尔多瓦共和国 - + Monaco 摩纳哥 - + Mongolia 蒙古 - + Montserrat 蒙特塞拉特 - + Morocco 摩洛哥 - + Mozambique 莫桑比克 - + Myanmar 缅甸 - + Namibia 纳米比亚 - + Nauru 瑙鲁 - + Nepal 尼泊尔 - + Netherlands 荷兰 - + Netherlands Antilles 荷属安的列斯 - + New Caledonia 新喀里多尼亚 - + New Zealand 新西兰 - + Nicaragua 尼加拉瓜 - + Niger 尼日尔 - + Nigeria 尼日利亚 - + Niue 纽埃 - + Norfolk Island 诺福克岛 - + Northern Mariana Islands 北马里亚纳 - + Norway 挪威 - + Oman 阿曼 - + Pakistan 巴基斯坦 - + Palau 帕劳 - + Palestinian Territory, Occupied 巴勒斯坦国 - + Panama 巴拿马 - + Papua New Guinea 巴布亚新几内亚 - + Paraguay 巴拉圭 - + Peru 秘鲁 - + Philippines 菲律宾 - + Pitcairn 皮特凯恩群岛 - + Poland 波兰 - + Portugal 葡萄牙 - + Puerto Rico 波多黎各 - + Qatar 卡塔尔 - + Reunion 留尼旺 - + Romania 罗马尼亚 - + Russian Federation 俄罗斯联邦 - + Rwanda 卢旺达 - + Saint Helena 圣赫勒拿 - + Saint Kitts And Nevis 圣基茨和尼维斯 - + Saint Lucia 圣卢西亚 - + Saint Pierre And Miquelon 圣皮埃尔和密克隆 - + Saint Vincent And The Grenadines 圣文森特和格林纳丁斯 - + Samoa 萨摩亚 - + San Marino 圣马力诺 - + Sao Tome And Principe 圣多美和普林西比 - + Saudi Arabia 沙特阿拉伯 - + Senegal 塞内加尔 - + Serbia And Montenegro 塞尔维亚和黑山 - + Seychelles 塞舌尔 - + Sierra Leone 塞拉利昂 - + Singapore 新加坡 - + Slovakia 斯洛伐克 - + Slovenia 斯洛文尼亚 - + Solomon Islands 所罗门群岛 - + Somalia 索马里 - + South Africa 南非 - + South Georgia And The South Sandwich Islands 南乔治亚岛和南桑德韦奇岛 - + Spain 西班牙 - + Sri Lanka 斯里兰卡 - + Sudan 苏丹 - + Suriname 苏里南 - + Svalbard And Jan Mayen 斯瓦尔巴岛和扬马延岛 - + Swaziland 斯威士兰 - + Sweden 瑞典 - + Switzerland 瑞士 - + Syrian Arab Republic 阿拉伯叙利亚共和国 - + Taiwan, Province Of China 台湾 - + Tajikistan 塔吉克斯坦 - + Tanzania, United Republic Of 坦桑尼亚联合共和国 - + Thailand 泰国 - + Timor-Leste 东帝汶 - + Togo 多哥 - + Tokelau 托克劳 - + Tonga 汤加 - + Trinidad And Tobago 特立尼达和多巴哥 - + Tunisia 突尼斯 - + Turkey 土耳其 - + Turkmenistan 土库曼斯坦 - + Turks And Caicos Islands 特克斯和凯科斯群岛 - + Tuvalu 图瓦卢 - + Uganda 乌干达 - + Ukraine 乌克兰 - + United Arab Emirates 阿拉伯联合酋长国 - + United Kingdom 大不列颠及北爱尔兰联合王国 - + United States 美利坚合众国 - + United States Minor Outlying Islands 美国本土外小岛屿 - + Uruguay 乌拉圭 - + Uzbekistan 乌兹别克斯坦 - + Vanuatu 瓦努阿图 - + Venezuela 委内瑞拉 - + Viet Nam 越南 - + Virgin Islands, British 英属维尔京群岛 - + Virgin Islands, U.S. 美属维尔京群岛 - + Wallis And Futuna 瓦利斯和富图纳 - + Western Sahara 西撒哈拉 - + Yemen 也门 - + Zambia 赞比亚 - + Zimbabwe 津巴布韦 - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3394,99 +3394,99 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop 停止 - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - 开源德州扑克引擎 - - - - - - - - + + + + + + + + Start 开始 - - - - - + + + + + Lobby 大厅 - - + + Chat 聊天 - + Closing PokerTH during network game 在网络游戏过程中关闭 PokerTH - + You are the hosting server. Do you want to close PokerTH anyway? 你现在是主机. 你还是希望关闭 PokerTH 么? - + Really want to exit? 真的想退出吗? - + PokerTH - Close Table? PokerTH - 关闭赌桌? - + PokerTH - Internet Game Message PokerTH - 因特网游戏消息 - + Attention! Do you really want to leave the current game and go back to the lobby? 注意! 你真的想离开当前的游戏 并返回大厅吗? - - + + Chat is only available to registered players. 聊天功能仅供已注册玩家使用. - + Spectators @@ -3505,51 +3505,51 @@ If you are temporarily away, you can use the "away" tools in the tool 如果你只是暂时离开, 可以使用右下角工具框提供的 "离开" 工具. - - + + Chance 几率 - - + + Kick 踢出 - - + + Do you want to kick <b>%1</b><br>from this game? 你希望把 <b>%1</b> 踢出这场游戏吗? - - - - + + + + <b>%1</b> secs left <b>%1</b> 秒剩余 - + vote 投票 - + votes 投票 - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. "%3" = ( vote == 1 ) ? vote : votes; 已有 %2 票反对玩家 %1, 将其踢出游戏还需要 %4 票. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. "%2" = ( vote == 1 ) ? vote : votes; 已有 %1 票反对你, 再有 %3 人投出反对票的话你就要被踢出游戏了. @@ -3936,48 +3936,48 @@ Would you like to overwrite ? 本地游戏设置 - + Number of players: 玩家数: - + Start Cash: 入场金额: - + $ - + Blinds 盲注 - + Use saved blinds settings 使用已保存的盲注设置 - + OK - + Change blinds settings ... 更改盲注设置... - + Game Speed: 游戏速度: From c204383adc7d9a41c8bfe0079d853c604f94566c Mon Sep 17 00:00:00 2001 From: doitux Date: Wed, 4 Dec 2013 23:13:55 +0100 Subject: [PATCH 111/128] next step for translation files --- ts/pokerth_af.ts | 668 ++++++++++++++++++++++----------------------- ts/pokerth_bg.ts | 668 ++++++++++++++++++++++----------------------- ts/pokerth_ca.ts | 668 ++++++++++++++++++++++----------------------- ts/pokerth_cz.ts | 18 +- ts/pokerth_de.ts | 684 +++++++++++++++++++++++----------------------- ts/pokerth_dk.ts | 668 ++++++++++++++++++++++----------------------- ts/pokerth_es.ts | 686 +++++++++++++++++++++++------------------------ ts/pokerth_fi.ts | 668 ++++++++++++++++++++++----------------------- ts/pokerth_fr.ts | 686 +++++++++++++++++++++++------------------------ 9 files changed, 2707 insertions(+), 2707 deletions(-) diff --git a/ts/pokerth_af.ts b/ts/pokerth_af.ts index 8beb7265..202bfdf4 100644 --- a/ts/pokerth_af.ts +++ b/ts/pokerth_af.ts @@ -210,22 +210,22 @@ Kontak asseblief die speltafelstyl-bouer via "%4". Speltafelstyl-fout: verouderd - + Everything OK! Alles is oukei! - + Some pictures are missing, please contact style maintainer for this issue. Sommige prente word vermis. Kontak asseblief die styl se onderhouer oor hierdie probleem. - + Some style fields are missing, please contact style maintainer for this issue. Sommige stylvelde word vermis. Kontak asseblief die styl se onderhouer oor hierdie probleem. - + This style is outdated, please contact style maintainer for this issue. Hierdie styl is verouderd. Kontak asseblief die styl se onderhouer oor hierdie probleem. @@ -2035,50 +2035,50 @@ p, li { white-space: pre-wrap; } - + Invite %1 Nooi %1 - + Ignore %1 Ignoreer %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 het %1 uitgenooi na %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 het die uitnodiging na %2 van die hand gewys.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 kan nie by %2 aansluit nie want hy of sy is besig.</span> - - + + The game will start in<br><b>%1</b> seconds. Die spel begin oor<br><b>%1</b> sekondes. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Jy het by 'n spel aangesluit met die tipe "nooi-alleen". Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers te regskliek. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Jy is deur <b>%2</b> na die spel <b>%1</b> genooi.<br>Wil jy by daardie spel aansluit? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Jy sal nie meer kletsboodskappe of speluitnodigings van hierdie gebruiker kry nie.<br>Wil jy regtig speler <b>%1</b> op jou ignoreerlys sit? @@ -2147,1273 +2147,1273 @@ Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers t soek vir speler... - + Chat is only available to registered players. Klets werk net vir geregistreerde spelers. - + Invite player ... Nooi speler... - + Ignore player ... Ignoreer speler... - + %1 is playing in "%2". %1 speel in "%2". - + %1 is not playing at the moment. %1 speel nie op die oomblik nie. - - + + PokerTH - Info Message PokerTH - Inligtingsboodskap - - - - + + + + PokerTH - Question PokerTH - Vraag - + Afghanistan Afghanistan - + ALand Islands Alandeilande - + Albania Albanië - + Algeria Algerië - + American Samoa Amerikaanse Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarktika - + Antigua And Barbuda Antigua en Barbuda - + Argentina Argentinië - + Armenia Armenië - + Aruba Aruba - + Australia Australië - + Austria Oostenryk - + Azerbaijan Azerbeidjans - + Bahamas Bahamas - + Bahrain Bahrein - + Bangladesh Bangladesj - + Barbados Barbados - + Belarus Belarus - + Belgium België - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhoetan - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnië en Herzegowina - + Botswana Botswana - + Bouvet Island Bouveteiland - + Brazil Brasilië - + British Indian Ocean Territory Britse Indiese Oseaangebied - + Brunei Darussalam Broenei Darussalam - + Bulgaria Bulgarye - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodja - + Cameroon Kameroen - + Canada Kanada - + Cape Verde Kaap Verde - + Cayman Islands Kaaimaneilande - + Central African Republic Sentraal-Afrikaanse Republiek - + Chad Tsjad - + Chile Chili - + China Sjina - + Christmas Island Christmaseiland - + Cocos (Keeling) Islands Kokoseilande - + Colombia Colombia - + Comoros Comore - + Congo Kongo - + Congo, The Democratic Republic Of The Kongo, Demokratiese Republiek van die - + Cook Islands Cookeilande - + Costa Rica Costa Rica - + Cote D'Ivoire Ivoorkus - + Croatia Kroasië - + Cuba Kuba - + Cyprus Ciprus - + Czech Republic Tsjeggiese Republiek - + Denmark Denemarke - + Djibouti Djiboeti - + Dominica Dominica - + Dominican Republic Dominikaanse Republiek - + Ecuador Ecuador - + Egypt Egipte - + El Salvador El Salvador - + Equatorial Guinea Ekwatoriaal-Guinee - + Eritrea Eritrea - + Estonia Estland - + Ethiopia Etiopië - + Falkland Islands (Malvinas) Falklandeilande - + Faroe Islands Faroër-eilande - + Fiji Fidji - + Finland Finland - + France Frankryk - + French Guiana Frans-Guinee - + French Polynesia Frans-Polinesië - + French Southern Territories Franse Suidelike Gebiede - + Gabon Gaboen - + Gambia Gambië - + Georgia Georgië - + Germany Duitsland - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Griekeland - + Greenland Groenland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinee - + Guinea-Bissau Guinee-Bissau - + Guyana Guyana - + Haiti Haïti - + Heard Island And Mcdonald Islands Heard- en McDonald-eilande - + Holy See (Vatican City State) Vatikaanstad - + Honduras Honduras - + Hong Kong Hongkong - + Hungary Hongarye - + Iceland Ysland - + India Indië - + Indonesia Indonesië - + Iran, Islamic Republic Of Iran, Islamitiese Republiek van - + Iraq Irak - + Ireland Ierland - + Isle Of Man Eiland Man - + Israel Israel - + Italy Italië - + Jamaica Jamaika - + Japan Japan - + Jersey Jersey - + Jordan Jordanië - + Kazakhstan Kazakhstan - + Kenya Kenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Korea, Demokratiese Volksrepubliek van - + Korea, Republic Of Korea, Republiek van - + Kuwait Koeweit - + Kyrgyzstan Kirgisistan - + Lao People'S Democratic Republic Lao Volks- Demokratiese Republiek - + Latvia Letland - + Lebanon Libanon - + Lesotho Lesotho - + Liberia Liberië - + Libyan Arab Jamahiriya Libië - + Liechtenstein Liechtenstein - + Lithuania Litaue - + Luxembourg Luxemburg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Masedonië (FYROM) - + Madagascar Madagaskar - + Malawi Malawi - + Malaysia Maleisië - + Maldives Maledive - + Mali Mali - + Malta Malta - + Marshall Islands Marshalleilande - + Martinique Martinique - + Mauritania Mauritanië - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Meksiko - + Micronesia, Federated States Of Mikronesië, Federale State van - + Moldova, Republic Of Moldowa, Republiek van - + Monaco Monaco - + Mongolia Mongolië - + Montserrat Montserrat - + Morocco Marokko - + Mozambique Mosambiek - + Myanmar Birma - + Namibia Namibië - + Nauru Nauru - + Nepal Nepal - + Netherlands Nederland - + Netherlands Antilles Nederlandse Antille - + New Caledonia Nieu-Caledonië - + New Zealand Nieu-Seeland - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigerië - + Niue Niue - + Norfolk Island Norfolkeiland - + Northern Mariana Islands Noordelike Marianaeilande - + Norway Noorweë - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Palesteinse Gebied, Besette - + Panama Panama - + Papua New Guinea Papoea-Nieu-Guinee - + Paraguay Paraguay - + Peru Peru - + Philippines Filippyne - + Pitcairn Pitcairn - + Poland Pole - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Katar - + Reunion Reunion - + Romania Roemenië - + Russian Federation Russiese Federasie - + Rwanda Rwanda - + Saint Helena Sint Helena - + Saint Kitts And Nevis Sint Kitts en Nevis - + Saint Lucia Sint Lucia - + Saint Pierre And Miquelon Sint Pierre en Miquelon - + Saint Vincent And The Grenadines Sint Vincent en die Grenadine - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe Sao Tome en Principe - + Saudi Arabia Saoedi-Arabië - + Senegal Senegal - + Serbia And Montenegro Serwië en Montenegro - + Seychelles Seychelle - + Sierra Leone Sierra Leone - + Singapore Singapoer - + Slovakia Slowakye - + Slovenia Slowenië - + Solomon Islands Salomonseilande - + Somalia Somalië - + South Africa Suid-Afrika - + South Georgia And The South Sandwich Islands Suid-Georgië en die Suid-Sandwich-eilande - + Spain Spanje - + Sri Lanka Sri Lanka - + Sudan Soedan - + Suriname Suriname - + Svalbard And Jan Mayen Svalbard en Jan Mayen - + Swaziland Swaziland - + Sweden Swede - + Switzerland Switserland - + Syrian Arab Republic Sirië, Arabiese Republiek van - + Taiwan, Province Of China Taiwan (Republiek van Sjina) - + Tajikistan Tadjikistan - + Tanzania, United Republic Of Tanzanië, Verenigde Republiek van - + Thailand Thailand - + Timor-Leste Oos-Timor - + Togo Togo - + Tokelau Tokelau - + Tonga Tongaans - + Trinidad And Tobago Trinidad en Tobago - + Tunisia Tunisië - + Turkey Turkye - + Turkmenistan Turkmenistan - + Turks And Caicos Islands Turkse en Caicos-eilande - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Oekraïne - + United Arab Emirates Verenigde Arabiese Emirate - + United Kingdom Verenigde Koninkryk - + United States Verenigde State - + United States Minor Outlying Islands Verenigde State se Klein Buite-eilande - + Uruguay Uruguay - + Uzbekistan Oesbekistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Viëtnam - + Virgin Islands, British Britse Maagde-eilande - + Virgin Islands, U.S. Amerikaanse Maagde-eilande - + Wallis And Futuna Wallis en Futuna - + Western Sahara Wes-Sahara - + Yemen Jemen - + Zambia Zambië - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Is jy seker jy wil die spelnaam van "%1" as onvanpas rapporteer? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3716,147 +3716,147 @@ p, li { white-space: pre-wrap; } gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Die oopbron-Texas Holdem-enjin - - - - - - - - + + + + + + + + Start Begin - - - - - + + + + + Lobby Voorkamer - - + + Chat Klets - + Closing PokerTH during network game PokerTH tydens netwerkspel toemaak - + You are the hosting server. Do you want to close PokerTH anyway? Jy is die gasheerbediener. Wil jy nog steeds PokerTH toemaak? - + Really want to exit? Wil jy regtig verlaat? - + PokerTH - Close Table? PokerTH - maak tafel toe? - + PokerTH - Internet Game Message PokerTH - Internetspelboodskap - + Attention! Do you really want to leave the current game and go back to the lobby? Let op! Wil jy regtig die huidige spel verlaat en na die voorkamer terugkeer? - - + + Chat is only available to registered players. Klets werk net vir geregistreerde spelers. - + Spectators - - + + Chance Kans - - + + Kick Skop - - + + Do you want to kick <b>%1</b><br>from this game? Wil jy <b>%1</b><br> uit hierdie spel skop? - - - - + + + + <b>%1</b> secs left <b>%1</b> sek oor - + vote stem - + votes stemme - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Speler <b>%1</b> het <b>%2</b> %3<br> teen hom. <b>%4</b> stem(e) nodig om te skop. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Jy het <b>%1</b> %2 teen jou.<br><b>%3</b> stem(e) nodig om te skop. @@ -4243,48 +4243,48 @@ Wil jy dit oorheenskryf? Plaaslikespel-instellings - + Number of players: Getal spelers: - + Start Cash: Begingeld: - + $ $ - + Blinds Blindes - + Use saved blinds settings Gebruik gestoorde blindesinstellings - + OK - + Change blinds settings ... Verander blindesinstellings... - + Game Speed: Spelspoed: diff --git a/ts/pokerth_bg.ts b/ts/pokerth_bg.ts index c6b3c93e..27c46052 100644 --- a/ts/pokerth_bg.ts +++ b/ts/pokerth_bg.ts @@ -167,22 +167,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -1725,38 +1725,38 @@ p, li { white-space: pre-wrap; } - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. @@ -1776,12 +1776,12 @@ Feel free to invite other players by right-clicking on their nick in the availab - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -1831,1273 +1831,1273 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3396,19 +3396,19 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Спри @@ -3421,7 +3421,7 @@ Feel free to invite other players by right-clicking on their nick in the availab Ctrl+N за да започнете нова игра - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Тексас Холдем покер мотора с отворен код @@ -3440,23 +3440,23 @@ Please choose another one. F1 - Всичко вътре | F2 - Заложи/Наддай | F3 - Приеми/Орговори | F4 - Оттегли се - - - - - - - - + + + + + + + + Start Започни - - - - - + + + + + Lobby Лоби @@ -3663,104 +3663,104 @@ Please choose a different name. Автоматичен метод е настроен: Приемай или се оттегляй. - - + + Chat Чат - + Closing PokerTH during network game Затваряне на PokerTH по време на игра в мрежа - + You are the hosting server. Do you want to close PokerTH anyway? Вие сте сървъра домакин. Искате ли да затворите PokerTH все пак ? - + PokerTH - Internet Game Message PokerTH - Съобщение от интернет игра - + Attention! Do you really want to leave the current game and go back to the lobby? Внимание! Наистина ли искате да напуснете играта и да се върнете в лобите ? - - + + Chance - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. - + Spectators @@ -4539,48 +4539,48 @@ and go back to the lobby? Настройки за локална игра - + Number of players: Брой играчи: - + Start Cash: Първоначални пари: - + $ $ - + Blinds Вход - + Use saved blinds settings Използвай запазените настройки за вход - + OK - + Change blinds settings ... Промени настройките за Входа... - + Game Speed: Скорост на играта: diff --git a/ts/pokerth_ca.ts b/ts/pokerth_ca.ts index 6a5f0c1d..e3066da7 100644 --- a/ts/pokerth_ca.ts +++ b/ts/pokerth_ca.ts @@ -209,22 +209,22 @@ Si us plau, contacteu l'autor de l'estil de taula via "%4".< Error d'estil de taula - Obsolet - + Everything OK! Tot està bé! - + Some pictures are missing, please contact style maintainer for this issue. Manquen algunes fotos, si us plau contacteu l'autor de l'estil per resoldre això. - + Some style fields are missing, please contact style maintainer for this issue. Manquen alguns camps d'estil, si us plau contacteu l'autor de l'estil per resoldre això. - + This style is outdated, please contact style maintainer for this issue. Aquest estil és obsolet, si us plau contacteu l'autor de l'estil per resoldre això. @@ -2115,1293 +2115,1293 @@ p, li { white-space: pre-wrap; } - + Invite %1 Invita a en %1 - + Ignore %1 Ignora a en %1 - + %1 is playing in "%2". %1 està jugant a "%2". - + %1 is not playing at the moment. %1 no està jugant al moment. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 ha estat invitat a %2 per %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 ha rebutjat l'invitació a %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 no pot unir-se a %2 perquè està ocupat.</span> - - + + The game will start in<br><b>%1</b> seconds. La partida començarà en<br><b>%1</b> segons. - + Afghanistan Afghanistan - + ALand Islands Illes Åland - + Albania Albània - + Algeria Algèria - + American Samoa Samoa nord-americana - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antàrtida - + Antigua And Barbuda Antigua i Barbuda - + Argentina Argentina - + Armenia Armènia - + Aruba Aruba - + Australia Austràlia - + Austria Àustria - + Azerbaijan Azerbaidjan - + Bahamas Bahames - + Bahrain Bahrain - + Bangladesh Bangla Desh - + Barbados Barbados - + Belarus Bielorússia - + Belgium Bèlgica - + Belize Belize - + Benin Benin - + Bermuda Bermudes - + Bhutan Bhutan - + Bolivia Bolívia - + Bosnia And Herzegovina Bòsnia i Hercegovina - + Botswana Botswana - + Bouvet Island Illa Bouvet - + Brazil Brasil - + British Indian Ocean Territory Territori Britànic de l'Oceà Índic - + Brunei Darussalam Brunei - + Bulgaria Bulgària - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Cambodja - + Cameroon Camerun - + Canada Canadà - + Cape Verde Cap Verd - + Cayman Islands Illes Cayman - + Central African Republic República Centreafricana - + Chad Txad - + Chile Xile - + China Xina - + Christmas Island Illa Christmas - + Cocos (Keeling) Islands Illes Cocos (Keeling) - + Colombia Colòmbia - + Comoros Comores - + Congo Congo - + Congo, The Democratic Republic Of The Congo, República Democràtica del - + Cook Islands Illes Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Costa d'Ivori - + Croatia Croàcia - + Cuba Cuba - + Cyprus Xipre - + Czech Republic República Txeca - + Denmark Dinamarca - + Djibouti Djibouti - + Dominica Dominica - + Dominican Republic República Dominicana - + Ecuador Equador - + Egypt Egipte - + El Salvador El Salvador - + Equatorial Guinea Guinea Equatorial - + Eritrea Eritrea - + Estonia Estònia - + Ethiopia Etiòpia - + Falkland Islands (Malvinas) Illes Malvines (Falkland) - + Faroe Islands Illes Fèroe - + Fiji Fiji - + Finland Finlàndia - + France Frància - + French Guiana Guaiana Francesa - + French Polynesia Polinèsia Francesa - + French Southern Territories Territoris Francesos del Sud - + Gabon Gabon - + Gambia Gàmbia - + Georgia Geòrgia - + Germany Alemanya - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grècia - + Greenland Grenlàndia - + Grenada Grenada - + Guadeloupe Guadalupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea Bissau - + Guyana Guyana - + Haiti Haití - + Heard Island And Mcdonald Islands Illes Heard i McDonald - + Holy See (Vatican City State) Santa Seu (Estat de la Ciutat del Vaticà) - + Honduras Hondures - + Hong Kong Hong Kong - + Hungary Hongria - + Iceland Islàndia - + India Índia - + Indonesia Indonèsia - + Iran, Islamic Republic Of Iran, República Islàmica de l' - + Iraq Iraq - + Ireland Irlanda - + Isle Of Man Illa de Man - + Israel Israel - + Italy Itàlia - + Jamaica Jamaica - + Japan Japó - + Jersey Jersey - + Jordan Jordània - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Corea, República Popular Democràtica de - + Korea, Republic Of Corea, República de - + Kuwait Kuwait - + Kyrgyzstan Kirguizistan - + Lao People'S Democratic Republic Laos, República Popular Democràtica de - + Latvia Letònia - + Lebanon Líban - + Lesotho Lesotho - + Liberia Libèria - + Libyan Arab Jamahiriya Líbia - + Liechtenstein Liechtenstein - + Lithuania Lituània - + Luxembourg Luxemburg - + Macao Macau - + Macedonia, The Former Yugoslav Republic Of Macedònia, Exrepública Iugoslava de - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malàisia - + Maldives Maldives - + Mali Mali - + Malta Malta - + Marshall Islands Illes Marshall - + Martinique Martinica - + Mauritania Mauritània - + Mauritius Maurici - + Mayotte Mayotte - + Mexico Mèxic - + Micronesia, Federated States Of Micronèsia, Estats Federats de - + Moldova, Republic Of Moldàvia, Principat de - + Monaco Mònaco - + Mongolia Mongòlia - + Montserrat Montserrat - + Morocco Marroc - + Mozambique Moçambic - + Myanmar Myanmar - + Namibia Namíbia - + Nauru Nauru - + Nepal Nepal - + Netherlands Països Baixos - + Netherlands Antilles Antilles Neerlandeses - + New Caledonia Nova Caledònia - + New Zealand Nova Zelanda - + Nicaragua Nicaragua - + Niger Níger - + Nigeria Nigèria - + Niue Niue - + Norfolk Island Illa Norfolk - + Northern Mariana Islands Illes Mariannes Septentrionals - + Norway Noruega - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Territoris Palestins Ocupats - + Panama Panamà - + Papua New Guinea Papua Nova Guinea - + Paraguay Paraguai - + Peru Perú - + Philippines Filipines - + Pitcairn Illes Pitcairn - + Poland Polònia - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Qatar - + Reunion Illa de la Reunió - + Romania Romania - + Russian Federation Federació Russa - + Rwanda Rwanda - + Saint Helena Santa Helena - + Saint Kitts And Nevis Saint Christopher i Nevis - + Saint Lucia Saint Lucia - + Saint Pierre And Miquelon Saint-Pierre i Miquelon - + Saint Vincent And The Grenadines Saint Vincent i les Grenadines - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe São Tomé i Príncipe - + Saudi Arabia Aràbia Saudita - + Senegal Senegal - + Serbia And Montenegro Sèrbia i Montenegro - + Seychelles Seychelles - + Sierra Leone Sierra Leone - + Singapore Singapur - + Slovakia Eslovàquia - + Slovenia Eslovènia - + Solomon Islands Illes Salomó - + Somalia Somàlia - + South Africa Sud-àfrica - + South Georgia And The South Sandwich Islands Illes Geòrgia del Sud i Sandwich del Sud - + Spain Espanya - + Sri Lanka Sri Lanka - + Sudan Sudan - + Suriname Surinam - + Svalbard And Jan Mayen Svalbard i Jan Mayen - + Swaziland Swazilàndia - + Sweden Suècia - + Switzerland Suïssa - + Syrian Arab Republic República Àrab Siriana - + Taiwan, Province Of China Taiwan (República de la Xina) - + Tajikistan Tadjikistan - + Tanzania, United Republic Of Tanzània, República Unida de - + Thailand Tailàndia - + Timor-Leste Timor Oriental - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinidad i Tobago - + Tunisia Tunísia - + Turkey Turquia - + Turkmenistan Turkmenistan - + Turks And Caicos Islands Illes Turks i Caicos - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ucraïna - + United Arab Emirates Emirats Àrabs Units - + United Kingdom Regne Unit - + United States Estats Units d'Amèrica - + United States Minor Outlying Islands Illes Perifèriques Menors dels Estats Units d'Amèrica - + Uruguay Uruguai - + Uzbekistan Uzbekistan - + Vanuatu Vanuatu - + Venezuela Veneçuela - + Viet Nam Vietnam - + Virgin Islands, British Illes Verges Britàniques - + Virgin Islands, U.S. Illes Verges Nord-americanes - + Wallis And Futuna Wallis i Futuna - + Western Sahara Sàhara Occidental - + Yemen Iemen - + Zambia Zàmbia - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Esteu segur que voleu reportar el nom de joc: "%1" com a no apropriat? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Heu entrat a una partida on s'uneix només per invitació. Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llista de jugadors disponibles. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Heu estat invitat a la partida <b>%1</b> per <b>%2</b>.<br>Voleu unir-vos a la partida? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? No rebreu més missatges del xat o invitacions de partides d'aquest usuari.<br>Realment voleu posar el jugador <b>%1</b> a la llista per ignorar? @@ -3455,7 +3455,7 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist Cerqueu jugadors ... - + Chat is only available to registered players. El xat només està disponible per a jugadors registrats. @@ -3464,7 +3464,7 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist Invita el jugador %1 - + Invite player ... Invita el jugador... @@ -3473,7 +3473,7 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist Ignora el jugador %1 - + Ignore player ... Ignora el jugador... @@ -3484,8 +3484,8 @@ You can invite other players with right-click on their nick in the left availabl Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llista de jugadors disponibles que es troba a l'esquerra. - - + + PokerTH - Info Message PokerTH - Missatge d'informació @@ -3510,10 +3510,10 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist No rebreu més missatges del xat o invitacions de partides d'aquest usuari.<br>Realment voleu posar el jugador <b>%1</b> a la llista per ignorar? - - - - + + + + PokerTH - Question PokerTH - Pregunta @@ -3816,147 +3816,147 @@ p, li { white-space: pre-wrap; } gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Atura - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 -El motor de Texas Hold'em de codi font obert - - - - - - - - + + + + + + + + Start Comença - - - - - + + + + + Lobby Sala - - + + Chat Xat - + Closing PokerTH during network game S'està tancant el PokerTH durant la partida de xarxa - + You are the hosting server. Do you want to close PokerTH anyway? Sou l'ordinador central. Voleu sortir del PokerTH de totes maneres? - + Really want to exit? Realment voleu sortir? - + PokerTH - Close Table? PokerTH - Voleu tancar la taula? - + PokerTH - Internet Game Message PokerTH - Missatge de partida d'internet - + Attention! Do you really want to leave the current game and go back to the lobby? Atenció! Realment voleu abandonar la pardia actual i tornar a la sala? - - + + Chat is only available to registered players. El xat només està disponible per a jugadors registrats. - + Spectators - - + + Chance Probabilitat - - + + Kick Expulsa - - + + Do you want to kick <b>%1</b><br>from this game? Voleu expulsar a <b>%1</b><br>de la partida? - - - - + + + + <b>%1</b> secs left Queden<b>%1</b> segons - + vote vot - + votes vots - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. El jugador <b>%1</b> té <b>%2</b> %3<br>contra ell. Manquen<b>%4</b> vot(s) per expulsar-lo. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Teniu <b>%1</b> %2 en contra.<br>Manquen<b>%3</b> vot(s) per expulsar-vos. @@ -4359,48 +4359,48 @@ Voleu sobreescriure'l? Configuració local de partida - + Number of players: Nombre de jugadors: - + Start Cash: Diners inicials: - + $ $ - + Blinds Cegues - + Use saved blinds settings Utilitza la configuració desada de les cegues - + OK - + Change blinds settings ... Canvia la configuració de les cegues... - + Game Speed: Velocitat del joc: diff --git a/ts/pokerth_cz.ts b/ts/pokerth_cz.ts index 983edc46..114723ee 100644 --- a/ts/pokerth_cz.ts +++ b/ts/pokerth_cz.ts @@ -1,6 +1,6 @@ - + CardDeckStyleReader @@ -1096,7 +1096,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -1167,7 +1167,7 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -1984,7 +1984,7 @@ Vyberte, prosím, jiný! Join &any game - Připojit ke &kterékoliv hře + Připojit ke &kterékoliv hře &Create Game @@ -2241,7 +2241,7 @@ p, li { white-space: pre-wrap; } Connected players - max. %1 - Připojení hráči - max. %1 + Připojení hráči - max. %1 T @@ -2249,11 +2249,11 @@ p, li { white-space: pre-wrap; } Connected players - Max. %1 - Připojení hráči - max. %1 + Připojení hráči - max. %1 Connected players - Připojení hráči + Připojení hráči Invite player %1 @@ -3918,7 +3918,7 @@ p, li { white-space: pre-wrap; } Could not load server-profiles-file: - Nelze načíst soubor nastavení serveru: + Nelze načíst soubor nastavení serveru: @@ -3946,7 +3946,7 @@ Chcete jej přepsat? Could not save server-profiles-file: - Nelze uložit soubor nastavení serveru: + Nelze uložit soubor nastavení serveru: diff --git a/ts/pokerth_de.ts b/ts/pokerth_de.ts index fbe03396..d46fe332 100644 --- a/ts/pokerth_de.ts +++ b/ts/pokerth_de.ts @@ -1,6 +1,6 @@ - + CardDeckStyleReader @@ -261,22 +261,22 @@ Bitte kontaktieren Sie den Ersteller des Spieltisch-Stils "%4". - + Everything OK! Alles okay! - + Some pictures are missing, please contact style maintainer for this issue. Einige Bilder fehlen, bitte kontaktieren Sie den Stil-Betreuer über diesen Vorfall. - + Some style fields are missing, please contact style maintainer for this issue. Einige Stilfelder fehlen, bitte kontaktieren Sie den Stil-Betreuer über diesen Vorfall. - + This style is outdated, please contact style maintainer for this issue. Dieser Stil ist veraltet, bitte kontaktieren Sie den Stil-Betreuer über diesen Vorfall. @@ -1118,7 +1118,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -3026,7 +3026,7 @@ p, li { white-space: pre-wrap; } Join &any game - &Irgendeinem Spiel beitreten + &Irgendeinem Spiel beitreten @@ -3213,7 +3213,7 @@ p, li { white-space: pre-wrap; } Connected players - Verbundene Spieler + Verbundene Spieler @@ -3360,7 +3360,7 @@ p, li { white-space: pre-wrap; } Connected players - max. %1 - Verbundene Spieler - max. %1 + Verbundene Spieler - max. %1 sec (action) @@ -3371,1235 +3371,1235 @@ p, li { white-space: pre-wrap; } Sek. (Hand-Verzögerung) - + Afghanistan Afghanistan - + ALand Islands Åland - + Albania Albanien - + Algeria Algerien - + American Samoa Amerikanisch-Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarktika - + Antigua And Barbuda Antigua und Barbuda - + Argentina Argentinien - + Armenia Armenien - + Aruba Aruba - + Australia Australien - + Austria Österreich - + Azerbaijan Aserbaidschan - + Bahamas Bahamas - + Bahrain Bahrain - + Bangladesh Bangladesch - + Barbados Barbados - + Belarus Weißrussland - + Belgium Belgien - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivien - + Bosnia And Herzegovina Bosnien und Herzegowina - + Botswana Botsuana - + Bouvet Island Bouvetinsel - + Brazil Brasilien - + British Indian Ocean Territory Britisches Territorium im Indischen Ozean - + Brunei Darussalam Brunei - + Bulgaria Bulgarien - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodscha - + Cameroon Kamerun - + Canada Kanada - + Cape Verde Kap Verde - + Cayman Islands Kaimaninseln - + Central African Republic Zentralafrikanische Republik - + Chad Tschad - + Chile Chile - + China China - + Christmas Island Weihnachtsinsel - + Cocos (Keeling) Islands Kokosinseln - + Colombia Kolumbien - + Comoros Komoren - + Congo Kongo - + Congo, The Democratic Republic Of The Demokratische Republik Kongo - + Cook Islands Cookinseln - + Costa Rica Costa Rica - + Cote D'Ivoire Elfenbeinküste - + Croatia Kroatien - + Cuba Kuba - + Cyprus Zypern - + Czech Republic Tschechien - + Denmark Dänemark - + Djibouti Dschibuti - + Dominica Dominica - + Dominican Republic Dominikanische Republik - + Ecuador Ecuador - + Egypt Ägypten - + El Salvador El Salvador - + Equatorial Guinea Äquatorialguinea - + Eritrea Eritrea - + Estonia Estland - + Ethiopia Äthiopien - + Falkland Islands (Malvinas) Falklandinseln - + Faroe Islands Färöer - + Fiji Fidschi - + Finland Finnland - + France Frankreich - + French Guiana Französisch-Guayana - + French Polynesia Französisch-Polynesien - + French Southern Territories Französische Süd- und Antarktisgebiete - + Gabon Gabun - + Gambia Gambia - + Georgia Georgien - + Germany Deutschland - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Griechenland - + Greenland Grönland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bissau - + Guyana Guyana - + Haiti Haiti - + Heard Island And Mcdonald Islands Heard und McDonaldinseln - + Holy See (Vatican City State) Heiliger Stuhl (Staat Vatikanstadt) - + Honduras Honduras - + Hong Kong Hongkong - + Hungary Ungarn - + Iceland Island - + India Indien - + Indonesia Indonesien - + Iran, Islamic Republic Of Iran - + Iraq Irak - + Ireland Irland - + Isle Of Man Isle of Man - + Israel Israel - + Italy Italien - + Jamaica Jamaika - + Japan Japan - + Jersey Jersey - + Jordan Jordanien - + Kazakhstan Kasachstan - + Kenya Kenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Nordkorea - + Korea, Republic Of Südkorea - + Kuwait Kuwait - + Kyrgyzstan Kirgisistan - + Lao People'S Democratic Republic Laos - + Latvia Lettland - + Lebanon Libanon - + Lesotho Lesotho - + Liberia Liberia - + Libyan Arab Jamahiriya Libyen - + Liechtenstein Liechtenstein - + Lithuania Litauen - + Luxembourg Luxemburg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Mazedonien - + Madagascar Madagaskar - + Malawi Malawi - + Malaysia Malaysia - + Maldives Malediven - + Mali Mali - + Malta Malta - + Marshall Islands Marshallinseln - + Martinique Martinique - + Mauritania Mauretanien - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Mexiko - + Micronesia, Federated States Of Föderierte_Staaten_von_Mikronesien - + Moldova, Republic Of Moldawien - + Monaco Monaco - + Mongolia Mongolei - + Montserrat Montserrat - + Morocco Marokko - + Mozambique Mosambik - + Myanmar Myanmar - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Niederlande - + Netherlands Antilles Niederländische Antillen - + New Caledonia Neukaledonien - + New Zealand Neuseeland - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Norfolkinsel - + Northern Mariana Islands Nördliche Marianen - + Norway Norwegen - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Palästina - + Panama Panama - + Papua New Guinea Papua-Neuguinea - + Paraguay Paraguay - + Peru Peru - + Philippines Philippinen - + Pitcairn Pitcairninseln - + Poland Polen - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Katar - + Reunion Reunion - + Romania Rumänien - + Russian Federation Russland - + Rwanda Ruanda - + Saint Helena St. Helena - + Saint Kitts And Nevis St._Kitts_und_Nevis - + Saint Lucia St. Lucia - + Saint Pierre And Miquelon Saint-Pierre und Miquelon - + Saint Vincent And The Grenadines St. Vincent und die Grenadinen - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe São Tomé und Príncipe - + Saudi Arabia Saudi-Arabien - + Senegal Senegal - + Serbia And Montenegro Serbien und Montenegro - + Seychelles Seychellen - + Sierra Leone Sierra Leone - + Singapore Singapur - + Slovakia Slowakei - + Slovenia Slowenien - + Solomon Islands Salomonen - + Somalia Somalia - + South Africa Südafrika - + South Georgia And The South Sandwich Islands Südgeorgien und die Südlichen Sandwichinseln - + Spain Spanien - + Sri Lanka Sri Lanka - + Sudan Sudan - + Suriname Suriname - + Svalbard And Jan Mayen Spitzbergen und Jan Mayen - + Swaziland Swasiland - + Sweden Schweden - + Switzerland Schweiz - + Syrian Arab Republic Syrien - + Taiwan, Province Of China Taiwan - + Tajikistan Tadschikistan - + Tanzania, United Republic Of Tansania - + Thailand Thailand - + Timor-Leste Osttimor - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinidad und Tobago - + Tunisia Tunesien - + Turkey Türkei - + Turkmenistan Turkmenistan - + Turks And Caicos Islands Turks- und Caicosinseln - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ukraine - + United Arab Emirates Vereinigte Arabische Emirate - + United Kingdom Vereinigtes Königreich - + United States Vereinigte Staaten - + United States Minor Outlying Islands United States Minor Outlying Islands - + Uruguay Uruguay - + Uzbekistan Usbekistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Vietnam - + Virgin Islands, British Britische Jungferninseln - + Virgin Islands, U.S. Amerikanische Jungferninseln - + Wallis And Futuna Wallis und Futuna - + Western Sahara Westsahara - + Yemen Jemen - + Zambia Sambia - + Zimbabwe Simbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Sind Sie sicher, dass Sie den Spielnamen "%1" als unpassend melden möchten? - + Are you sure you want to close the game: "%1"? Sind Sie sicher, dass Sie das Spiel schließen möchten: "%1"? - + Are you sure you want to total kickban the player: "%1"? Sind Sie sicher, dass Sie den Spieler "%1" endgültig verbannen möchten? @@ -4665,7 +4665,7 @@ p, li { white-space: pre-wrap; } Connected players - Max. %1 - Verbundene Spieler - max. %1 + Verbundene Spieler - max. %1 @@ -4680,50 +4680,50 @@ p, li { white-space: pre-wrap; } Offene Spiele: %1 - + Invite %1 %1 einladen - + Ignore %1 %1 ignorieren - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 wurde zu %2 von %3 eingeladen.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 hat die Einladung zu %2 abgelehnt.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 kann %2 nicht beitreten, da er beschäftigt ist.</span> - - + + The game will start in<br><b>%1</b> seconds. Das Spiel startet in<br><b>%1</b> Sekunden. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Sie sind einem Spiel mit dem Typ "nur Einladungen" beigetreten. Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerliste mit der rechten Maustaste klicken. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Sie wurden von <b>%2</b> zu dem Spiel <b>%1</b> eingeladen.<br>Möchten Sie diesem Spiel beitreten? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Sie werden keine Chat-Nachrichten oder Spieleinladungen mehr von diesem Spieler erhalten.<br>Möchten Sie den Spieler <b>%1</b> wirklich auf Ihre Ignorier-Liste setzen? @@ -4756,41 +4756,41 @@ Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerli nach Spieler suchen... - + Chat is only available to registered players. Der Chat steht nur registrierten Spielern zur Verfügung. - + Invite player ... Spieler einladen... - + Ignore player ... Spieler ignorieren... - + %1 is playing in "%2". %1 spielt in "%2". - + %1 is not playing at the moment. %1 spielt derzeit nicht. - - + + PokerTH - Info Message PokerTH - Infomeldung - - - - + + + + PokerTH - Question PokerTH - Frage @@ -5219,31 +5219,31 @@ Bitte wählen Sie einen anderen Namen. ⌘N zum Start eines neuen Spiels - - - - - - - - + + + + + + + + Start Start - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop @@ -5305,8 +5305,8 @@ Wenn der Server hinter einem NAT-Router betrieben wird, stellen Sie sicher, dass F1 - Bet/Raise | F2 - Check/Call | F3 - Fold/All-In - - + + Chat Chat @@ -5391,12 +5391,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Bitte gehen Sie auf <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> und laden Sie die aktuelle Version herunter. - + Closing PokerTH during network game PokerTH während eines Netzwerkspiels beenden - + You are the hosting server. Do you want to close PokerTH anyway? Sie sind der Gastgeber dieses Spiels. Möchten Sie PokerTH trotzdem beenden? @@ -5413,16 +5413,16 @@ Bitte gehen Sie auf <a href="http://www.pokerth.net/" target=" Diese Beta-Version von PokerTH ist veraltet.<br>Bitte gehen Sie auf <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> und laden Sie die aktuelle Version herunter. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Die Open-Source Texas Holdem Engine - - - - - + + + + + Lobby Lobby @@ -5431,12 +5431,12 @@ Bitte gehen Sie auf <a href="http://www.pokerth.net/" target=" Ein interner Avatarfehler ist aufgetreten. Bitte informieren Sie hierüber einen Admin im Lobbychat. - + PokerTH - Internet Game Message PokerTH - Internetspiel-Meldung - + Attention! Do you really want to leave the current game and go back to the lobby? Vorsicht! Möchten Sie das aktuelle Spiel wirklich verlassen @@ -5497,65 +5497,65 @@ Bitte stellen Sie sicher, dass Sie mit dem Internet direkt verbunden sind.Beim Herunterladen der Serverliste konnte die Zieldatei nicht geöffnet werden. - + PokerTH %1 PokerTH %1 - - + + Chance Chance - + Really want to exit? Wirklich verlassen? - + PokerTH - Close Table? PokerTH - Tisch beenden? - - + + Kick Rauswurf - - + + Do you want to kick <b>%1</b><br>from this game? Möchten Sie <b>%1</b><br>aus diesem Spiel entfernen? - - - - + + + + <b>%1</b> secs left <b>%1</b> Sekunde(n) verbleiben - + vote Stimme - + votes Stimmen - - + + Chat is only available to registered players. Mehr Text passte nicht rein. Chat nur für registrierte Spieler. - + Spectators Zuschauer @@ -5582,14 +5582,14 @@ Wenn Sie temporär abwesend sind, können Sie die Abwesend-Funktionen in der rec Sie haben <b>%1</b> %2 gegen sich.<br>Noch <b>%3</b> Stimmen bis zum Rauswurf. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Spieler <b>%1</b> hat <b>%2</b> %3 gegen<br>sich. Noch <b>%4</b> Stimme(n), um ihn rauszuwerfen. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Sie haben <b>%1</b> %2 gegen sich.<br>Noch <b>%3</b> Stimme(n) bis zum Rauswurf. @@ -5840,7 +5840,7 @@ p, li { white-space: pre-wrap; } Could not load server-profiles-file: - Kann Serverprofil-Datei nicht laden: + Kann Serverprofil-Datei nicht laden: @@ -5889,7 +5889,7 @@ p, li { white-space: pre-wrap; } Could not save server-profiles-file: - Kann Serverprofil-Datei nicht speichern: + Kann Serverprofil-Datei nicht speichern: @@ -6022,13 +6022,13 @@ Möchten Sie es überschreiben? Lokales Spiel Einstellungen - + Game Speed: Spielgeschwindigkeit: - + Start Cash: Startgeld: @@ -6038,7 +6038,7 @@ Möchten Sie es überschreiben? Small Blind: - + Number of players: Anzahl der Spieler: @@ -6048,30 +6048,30 @@ Möchten Sie es überschreiben? Runden vor Erhöhung der Blinds: - + Blinds Blinds - + Use saved blinds settings Gespeicherte Blinds-Einstellungen benutzen - + OK OK - + Change blinds settings ... Blinds-Einstellungen ändern... - + $ $ diff --git a/ts/pokerth_dk.ts b/ts/pokerth_dk.ts index 106a548f..d509f656 100644 --- a/ts/pokerth_dk.ts +++ b/ts/pokerth_dk.ts @@ -227,22 +227,22 @@ Please contact the game table style builder via "%4". - + Everything OK! - + Some pictures are missing, please contact style maintainer for this issue. - + Some style fields are missing, please contact style maintainer for this issue. - + This style is outdated, please contact style maintainer for this issue. @@ -2069,38 +2069,38 @@ p, li { white-space: pre-wrap; } - + Invite %1 - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - - + + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. @@ -2120,12 +2120,12 @@ Feel free to invite other players by right-clicking on their nick in the availab - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -2175,1273 +2175,1273 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Chat is only available to registered players. - + Invite player ... - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - - - + + + + PokerTH - Question - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3732,19 +3732,19 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop @@ -3757,7 +3757,7 @@ Feel free to invite other players by right-clicking on their nick in the availab Ctrl+N for at starte et nyt spil - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - The Open-Source Texas Holdem Engine @@ -3770,23 +3770,23 @@ Feel free to invite other players by right-clicking on their nick in the availab F1 - All-In | F2 - Bet/Raise | F3 - Check/Call | F4 - Fold - - - - - - - - + + + + + + + + Start Start - - - - - + + + + + Lobby Lobby @@ -3803,68 +3803,68 @@ Feel free to invite other players by right-clicking on their nick in the availab Auto måde sat: Check eller fold. - - + + Chat Chat - + Closing PokerTH during network game Lukker PokerTH under et netværksspil - + You are the hosting server. Do you want to close PokerTH anyway? Du er vært for serveren. Ønsker du stadig at afslutte PokerTH? - + Really want to exit? - + PokerTH - Close Table? - + PokerTH - Internet Game Message PokerTH - Internet-spil besked - + Attention! Do you really want to leave the current game and go back to the lobby? Advarsel! Ønsker du virkelig at forlade spillet og gå tilbage til lobby'en? - - + + Chat is only available to registered players. - + Spectators - - + + Chance Chance - + PokerTH %1 PokerTH %1 - - + + Kick Smid ud @@ -3883,26 +3883,26 @@ ud fra dette spil? Spiller <b>%1</b> har %2 stemmer imod ham. - - + + Do you want to kick <b>%1</b><br>from this game? Ønsker du at smide <b>%1</b><br>ud fra dette spil? - - - - + + + + <b>%1</b> secs left <b>%1</b> sekunder tilbage - + vote Stem - + votes Stemmer @@ -3915,14 +3915,14 @@ ud fra dette spil? Du har <b>%1</b> %2 imod dig.<br><b>%3</b> stemmer nødvendige for udsmidning. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Spiller <b>%1</b> er <b>%2</b> %3<br>imod ham. <b>%4</b> stemme(r) nødvendige for udsmidning. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Du har <b>%1</b> %2 imod dig.<br><b>%3</b> stemme(r) nødvendige for udsmid. @@ -4299,48 +4299,48 @@ Would you like to overwrite ? Lokalt spil indstillinger - + Number of players: Antal spillere: - + Start Cash: Start beløb: - + $ kr - + Blinds Blinds - + Use saved blinds settings Brug gemte blind-indstillinger - + OK - + Change blinds settings ... Skift blinds-indstillinger ... - + Game Speed: Spilhastighed: diff --git a/ts/pokerth_es.ts b/ts/pokerth_es.ts index 0a0d6fc9..73241147 100644 --- a/ts/pokerth_es.ts +++ b/ts/pokerth_es.ts @@ -1,6 +1,6 @@ - + CardDeckStyleReader @@ -258,22 +258,22 @@ Póngase en contacto con el autor del estilo a través de "%4".Error en el estilo de mesa - Obsoleto - + Everything OK! Todo correcto. - + Some pictures are missing, please contact style maintainer for this issue. Faltan algunas imágenes. Por favor, informe al autor del estilo sobre este problema. - + Some style fields are missing, please contact style maintainer for this issue. Faltan algunos campos del estilo. Por favor, informe al autor del estilo sobre este problema. - + This style is outdated, please contact style maintainer for this issue. Este estilo es obsoleto. Por favor, informe al autor del estilo sobre este problema. @@ -746,7 +746,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -761,7 +761,7 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -3490,7 +3490,7 @@ p, li { white-space: pre-wrap; } Join &any game - Unirse a &cualquier partida + Unirse a &cualquier partida @@ -3670,7 +3670,7 @@ p, li { white-space: pre-wrap; } Connected players - Jugadores conectados + Jugadores conectados @@ -3771,7 +3771,7 @@ p, li { white-space: pre-wrap; } Connected players - max. %1 - Jugadores conectados - máx. %1 + Jugadores conectados - máx. %1 sec (action) @@ -3782,1236 +3782,1236 @@ p, li { white-space: pre-wrap; } seg (por mano) - + Afghanistan Afganistán - + ALand Islands Alandia - + Albania Albania - + Algeria Argelia - + American Samoa Samoa Americana - + Andorra Andorra - + Angola Angola - + Anguilla Anguila - + Antarctica Antártica - + Antigua And Barbuda Antigua y Barbuda - + Argentina Argentina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Azerbaiyán - + Bahamas Bahamas - + Bahrain Baréin - + Bangladesh Bangladés - + Barbados Barbados - + Belarus Bielorrusia - + Belgium Bélgica - + Belize Belice - + Benin Benín - + Bermuda Bermudas - + Bhutan Bután - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia y Herzegovina - + Botswana Botsuana - + Bouvet Island Isla Bouvet - + Brazil Brasil - + British Indian Ocean Territory Territorio británico del Océano Índico - + Brunei Darussalam Brunéi - + Bulgaria Bulgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Camboya - + Cameroon Camerún - + Canada Canadá - + Cape Verde Cabo Verde - + Cayman Islands Islas Caimán - + Central African Republic República Centroafricana - + Chad Chad - + Chile Chile - + China China - + Christmas Island Isla de Navidad - + Cocos (Keeling) Islands Islas Cocos - + Colombia Colombia - + Comoros Comoras - + Congo Congo - + Congo, The Democratic Republic Of The Congo, República Democrática del - + Cook Islands Islas Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Costa de Marfil - + Croatia Croacia - + Cuba Cuba - + Cyprus Chripe - + Czech Republic República Checa - + Denmark Dinamarca - + Djibouti Yibuti - + Dominica Dominica - + Dominican Republic República Dominicana - + Ecuador Ecuador - + Egypt Egipto - + El Salvador El Salvador - + Equatorial Guinea Guinea Ecuatorial - + Eritrea Eritrea - + Estonia Estonia - + Ethiopia Etiopía - + Falkland Islands (Malvinas) Islas Malvinas - + Faroe Islands Islas Feroe - + Fiji Fiji - + Finland Finlandia - + France Francia - + French Guiana Guayana Francesa - + French Polynesia Polinesia Francesa - + French Southern Territories Territorios Franceses del Sur - + Gabon Gabón - + Gambia Gambia - + Georgia Georgia - + Germany Alemania - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grecia - + Greenland Groenlandia - + Grenada Granada - + Guadeloupe Guadalupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bissau - + Guyana Guayana - + Haiti Haití - + Heard Island And Mcdonald Islands Islas Heard y McDonald - + Holy See (Vatican City State) Santa Sede (Ciudad Estado del Vaticano) - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Hungría - + Iceland Islandia - + India India - + Indonesia Indonesia - + Iran, Islamic Republic Of Irán, República Islámica de - + Iraq Irak - + Ireland Irlanda - + Isle Of Man Islan de Man - + Israel Israel - + Italy Italia - + Jamaica Jamaica - + Japan Japón - + Jersey Jersey - + Jordan Jordania - + Kazakhstan Kazajistán - + Kenya Kenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Corea, República Popular Democrática de - + Korea, Republic Of Corea, República de - + Kuwait Kuwait - + Kyrgyzstan Kirguistán - + Lao People'S Democratic Republic Lao, República Democrática Popular - + Latvia Letonia - + Lebanon Líbano - + Lesotho Lesoto - + Liberia Liberia - + Libyan Arab Jamahiriya Libia - + Liechtenstein Liechtenstein - + Lithuania Lituania - + Luxembourg Luxemburgo - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia, Antigua República Yugoslava de - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malasia - + Maldives Maldivas - + Mali Mali - + Malta Malta - + Marshall Islands Islas Marshall - + Martinique Martinica - + Mauritania Mauritania - + Mauritius Mauricio - + Mayotte Mayotte - + Mexico México - + Micronesia, Federated States Of Micronesia, Estados Federados de - + Moldova, Republic Of Moldavia, República de - + Monaco Mónaco - + Mongolia Mongolia - + Montserrat Montserrat - + Morocco Marruecos - + Mozambique Mozambique - + Myanmar Myanmar - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Holanda - + Netherlands Antilles Antillas Holandesas - + New Caledonia Nueva Caledonia - + New Zealand Nueva Zelanda - + Nicaragua Nicaragua - + Niger Níger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Isla Norfolk - + Northern Mariana Islands Islas Marianas del Norte - + Norway Noruega - + Oman Omán - + Pakistan Pakistán - + Palau Palaos - + Palestinian Territory, Occupied Palestina, Territorio Ocupado de - + Panama Panamá - + Papua New Guinea Papua Nueva Guinea - + Paraguay Paraguay - + Peru Perú - + Philippines Filipinas - + Pitcairn Pitcairn - + Poland Polonia - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Catar - + Reunion Reunión - + Romania Rumanía - + Russian Federation Federacíon Rusa - + Rwanda Ruanda - + Saint Helena Santa Helena - + Saint Kitts And Nevis San Cristóbal y Nieves - + Saint Lucia Santa Lucía - + Saint Pierre And Miquelon San Pedro y Miquelón - + Saint Vincent And The Grenadines San Vicente y las Granadinas - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe Santo Tomé y Príncipe - + Saudi Arabia Arabia Saudí - + Senegal Senegal - + Serbia And Montenegro Serbia y Montenegro - + Seychelles Seychelles - + Sierra Leone Sierra Leona - + Singapore Singapur - + Slovakia Eslovaquia - + Slovenia Eslovenia - + Solomon Islands Islas Salomón - + Somalia Somalia - + South Africa Sudáfrica - + South Georgia And The South Sandwich Islands Islas Georgias del Sur y Sandwich del Sur - + Spain España - + Sri Lanka Sri Lanka - + Sudan Sudán - + Suriname Surinam - + Svalbard And Jan Mayen Svalbard y Jan Mayen - + Swaziland Suazilandia - + Sweden Suecia - + Switzerland Suiza - + Syrian Arab Republic Siria, República Árabe - + Taiwan, Province Of China Taiwan, Provincia de China - + Tajikistan Tayikistán - + Tanzania, United Republic Of Tanzania, República Unida de - + Thailand Tailandia - + Timor-Leste Timor Oriental - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinidad y Tobago - + Tunisia Túnez - + Turkey Turquía - + Turkmenistan Turkmenistán - + Turks And Caicos Islands Islas Turcas y Caicos - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ucrania - + United Arab Emirates Emiratos Árabes Unidos - + United Kingdom Reino Unido - + United States Estados Unidos - + United States Minor Outlying Islands Islas Ultramarinas de Estados Unidos - + Uruguay Uruguay - + Uzbekistan Uzbekistán - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Vietnam - + Virgin Islands, British Islas Vírgenes Británicas - + Virgin Islands, U.S. Islas Vírgenes de los Estados Unidos - + Wallis And Futuna Wallis y Futuna - + Western Sahara Sáhara Occidental - + Yemen Yemen - + Zambia Zambia - + Zimbabwe Zimbabue - + Are you sure you want to report the game name: "%1" as inappropriate? ¿Está seguro de que desea informar de que el nombre "%1" es inapropiado? - + Are you sure you want to close the game: "%1"? ¿Seguro que desea cerrar la partida: "%1"? - + Are you sure you want to total kickban the player: "%1"? ¿Seguro que desea expulsar y bloquear al jugador: "%1"? @@ -5076,7 +5076,7 @@ p, li { white-space: pre-wrap; } Connected players - Max. %1 - Jugadores conectados - máx. %1 + Jugadores conectados - máx. %1 @@ -5091,50 +5091,50 @@ p, li { white-space: pre-wrap; } partidas abiertas: %1 - + Invite %1 Invitar a %1 - + Ignore %1 Ignorar a %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 ha sido invitado a %2 por %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 ha rechazado la invitación a %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 no se puede unir a %2 porque está ocupado.</span> - - + + The game will start in<br><b>%1</b> seconds. La partida comenzará en<br><b>%1</b> segundos. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Ha entrado en una partida sólo para invitados. Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en la lista de jugadores. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Ha sido invitado a la partida <b>%1</b> por <b>%2</b>.<br>¿Quiere unirse a esa partida? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Ya no recibirá más mensajes de charla o invitaciones de este usuario.<br>¿Seguro que desea añadir al usuario <b>%1</b>a la lista de ignorados? @@ -5167,41 +5167,41 @@ Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en buscar jugador ... - + Chat is only available to registered players. La charla sólo está disponible para usuarios registrados. - + Invite player ... Invitar jugador ... - + Ignore player ... Ignorar jugador ... - + %1 is playing in "%2". %1 está jugando en "%2". - + %1 is not playing at the moment. %1 no está jugando en este momento. - - + + PokerTH - Info Message PokerTH - Mensaje de información - - - - + + + + PokerTH - Question PokerTH - Pregunta @@ -5674,31 +5674,31 @@ Elija un nombre diferente. Cmd+N para iniciar una nueva partida - - - - - - - - + + + + + + + + Start Iniciar - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Detener @@ -5753,8 +5753,8 @@ Si el servidor está detrás de un enrutador NAT, asegúrese de que el puerto de Esta partida está llena. - - + + Chat Charla @@ -5817,12 +5817,12 @@ Seleccione otro. El servidor está desconectado por mantenimiento. Inténtelo de nuevo más tarde. - + Closing PokerTH during network game Cerrando PokerTH durante una partida en red - + You are the hosting server. Do you want to close PokerTH anyway? Usted está alojando la partida. ¿Seguro que desea cerrar PokerTH? @@ -5839,16 +5839,16 @@ Seleccione otro. El versión beta de PokerTH es obsoleta.<br>Visite <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> para descargar la última versión. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - El motor de Texas Holdem de código abierto - - - - - + + + + + Lobby Sala @@ -5857,12 +5857,12 @@ Seleccione otro. Ha ocurrido un error interno. Informe al administrador en la sala de charla. - + PokerTH - Internet Game Message PokerTH - Mensaje de partida en Internet - + Attention! Do you really want to leave the current game and go back to the lobby? ¿Seguro que desea abandonar la partida actual @@ -5923,64 +5923,64 @@ Asegúrese de que está conectado a Internet. No se puede abrir el archivo de destino al descargar la lista de servidores. - + PokerTH %1 PokerTH %1 - - + + Chance Probabilidad - + Really want to exit? ¿Seguro que desea salir? - + PokerTH - Close Table? PokerTH - ¿Cerrar mesa? - - + + Kick Expulsar - - + + Do you want to kick <b>%1</b><br>from this game? ¿Desea expulsar a <b>%1</b><br>de esta partida? - - - - + + + + <b>%1</b> secs left quedan <b>%1</b> segundos - + vote voto - + votes votos - - + + Chat is only available to registered players. La charla sólo está disponible para usuarios registrados. - + Spectators Espectadores @@ -6007,14 +6007,14 @@ Si está ausente temporalmente, puede utilizar el modo "ausente" en el Usted tiene <b>%1</b> %2 en contra.<br>Son necesarios <b>%3</b> para expulsarle. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. El jugador <b>%1</b> tiene <b>%2</b> %3<br>en contra. Son necesarios <b>%4</b> votos para la expulsión. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Tiene <b>%1</b> %2 en contra.<br>Son necesarios <b>%3</b> votos para la expulsión. @@ -6265,7 +6265,7 @@ p, li { white-space: pre-wrap; } Could not load server-profiles-file: - No se puede cargar el archivo de perfil: + No se puede cargar el archivo de perfil: @@ -6314,7 +6314,7 @@ p, li { white-space: pre-wrap; } Could not save server-profiles-file: - No se puede guardar el archivo de perfil: + No se puede guardar el archivo de perfil: @@ -6435,13 +6435,13 @@ Would you like to overwrite ? Opciones de la partida local - + Game Speed: Velocidad del juego: - + Start Cash: Dinero inicial: @@ -6451,7 +6451,7 @@ Would you like to overwrite ? Postura mínima: - + Number of players: Número de jugadores: @@ -6461,30 +6461,30 @@ Would you like to overwrite ? Manos antes de subir la postura mínima: - + Blinds Ciegas - + Use saved blinds settings Utilizar configuración guardada de ciegas - + OK Aceptar - + Change blinds settings ... Cambiar configuración de ciegas... - + $ $ diff --git a/ts/pokerth_fi.ts b/ts/pokerth_fi.ts index a66a7948..4caf84f7 100644 --- a/ts/pokerth_fi.ts +++ b/ts/pokerth_fi.ts @@ -244,22 +244,22 @@ Ota yhteyttä pelipöydän tyylin tekijään osoitteella "%4".Pelipöydän tyylivirhe - Vanhentunut - + Everything OK! Kaikki on OK! - + Some pictures are missing, please contact style maintainer for this issue. Joitakin kuvia puuttuu. Ota yhteyttä tyylin tekijään ilmoittaaksesi ongelmasta. - + Some style fields are missing, please contact style maintainer for this issue. Joitakin tyylikenttiä puuttuu. Ota yhteyttä tyylin tekijään ilmoittaaksesi ongelmasta. - + This style is outdated, please contact style maintainer for this issue. Tämä tyyli on vanhentunut. Ota yhteyttä tyylin tekijään ilmoittaaksesi ongelmasta. @@ -2224,38 +2224,38 @@ p, li { white-space: pre-wrap; } - + Invite %1 Kutsu %1 - + Ignore %1 Jätä %1 huomiotta - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 on kutsu peliin%2 pelaajan %3 toimesta.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 on hylännyt kutsun peliin %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 ei voi liittyä peliin %2, koska hän on kiireinen.</span> - - + + The game will start in<br><b>%1</b> seconds. Peli alkaa <br><b>%1</b> sekunnin kuluttua. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Olet liittynyt vain kutsutuille tarkoitettuun peliin. @@ -2276,12 +2276,12 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Sinut on kutsuttu peliin<b>%1</b> pelaajan <b>%2</b> toimesta.<br>Haluatko liittyä tähän peliin? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Et saa enää chat-viestejä tai pelikutsuja tältä käyttäjältä.<br>Haluatko varmasti jättää pelaajan<b>%1</b> huomiotta? @@ -2335,1273 +2335,1273 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid hae pelaajaa ... - + Chat is only available to registered players. Chat on vain rekistöröityneille pelaajille. - + Invite player ... Kutsu pelaaja ... - + Ignore player ... Jätä pelaaja huomiotta ... - + %1 is playing in "%2". %1 on pelissä "%2". - + %1 is not playing at the moment. %1 ei pelaa tällä hetkellä. - - + + PokerTH - Info Message PokerTH - Infoviesti - - - - + + + + PokerTH - Question PokerTH - Kysymys - + Afghanistan Afganistan - + ALand Islands Ahvenanmaa - + Albania Albania - + Algeria Algeria - + American Samoa Amerikan Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Etelämanner - + Antigua And Barbuda Antigua ja Barbuda - + Argentina Argentiina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Itävalta - + Azerbaijan Azerbaidžan - + Bahamas Bahama - + Bahrain Bahrain - + Bangladesh Bangladesh - + Barbados Barbados - + Belarus Valko-Venäjä - + Belgium Belgia - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia ja Hertsegovina - + Botswana Botswana - + Bouvet Island Bouvet'nsaari - + Brazil Brasilia - + British Indian Ocean Territory Brittiläinen Intian valtameren alue - + Brunei Darussalam Brunei - + Bulgaria Bulgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodža - + Cameroon Kamerun - + Canada Kanada - + Cape Verde Kap Verde - + Cayman Islands Caymansaaret - + Central African Republic Keski-Afrikan tasavalta - + Chad - + Chile - + China Kiina - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba Kuuba - + Cyprus - + Czech Republic - + Denmark Tanska - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt Egypti - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia Viro - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland Suomi - + France Ranska - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany Saksa - + Ghana - + Gibraltar - + Greece Kreikka - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary Unkari - + Iceland Islanti - + India Intia - + Indonesia - + Iran, Islamic Republic Of - + Iraq Irak - + Ireland Irlanti - + Isle Of Man - + Israel Israeli - + Italy Italia - + Jamaica Jamaika - + Japan Japani - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania liettua - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico Meksiko - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway Norja - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru Peru - + Philippines Filippiinit - + Pitcairn - + Poland Puola - + Portugal Portugali - + Puerto Rico - + Qatar - + Reunion - + Romania Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia Slovakia - + Slovenia Slovenia - + Solomon Islands - + Somalia Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain Espanja - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden Ruotsi - + Switzerland Sveitsi - + Syrian Arab Republic - + Taiwan, Province Of China Taiwan, Kiinan maakunta - + Tajikistan - + Tanzania, United Republic Of - + Thailand Thaimaa - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey Turkki - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States Yhdysvallat - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3900,19 +3900,19 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Pysäytä @@ -3925,7 +3925,7 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid Ctrl+N aloittaaksesi uusi peli - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Avoimen lähdekoodin Texas Holdem -alusta @@ -3944,23 +3944,23 @@ Valitse toinen nimi. F1 - All-In | F2 - Panosta/Korota | F3 - Passaa/Katso | F4 - Luovuta - - - - - - - - + + + + + + + + Start Aloita - - - - - + + + + + Lobby Aula @@ -4171,28 +4171,28 @@ Valitse toinen nimi. Auto-tila asetettu: Passaa tai luovuta. - - + + Chat Chat - + Closing PokerTH during network game Suljetaan PokerTH verkkopelin aikana - + You are the hosting server. Do you want to close PokerTH anyway? Ylläpidät palvelinta. Haluatko silti sulkea PokerTH:n? - + PokerTH - Internet Game Message PokerTH - Internet-peliviesti - + Attention! Do you really want to leave the current game and go back to the lobby? Huomio! Haluatko todella jättää nykyisen pelin @@ -4253,64 +4253,64 @@ Varmista, että olet yhdistetty suoraan internetiin. Ei voitu avata kohdetiedostoa ladattaessa palvelinlistaa. - + PokerTH %1 PokerTH %1 - - + + Chance Todennäköisyys - + Really want to exit? Haluatko varmasti poistua? - + PokerTH - Close Table? PokerTH - Sulje pöytä? - - + + Kick Potkaise - - + + Do you want to kick <b>%1</b><br>from this game? Haluatko potkaista <b>%1</b><br>tästä pelistä? - - - - + + + + <b>%1</b> secs left <b>%1</b> sekunttia jäljellä - + vote ääni - + votes ääntä - - + + Chat is only available to registered players. Chat on saatavilla vain rekistöröityneille pelaajille. - + Spectators @@ -4323,14 +4323,14 @@ Varmista, että olet yhdistetty suoraan internetiin. Sinulla on <b>%1</b> %2 itseäsi vastaan. <br><b>%3</b> ääntä tarvitaan potkaisuun. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Pelaajalla <b>%1</b> on <b>%2</b> %3<br>häntä vastaan. <b>%4</b> ääntä tarvitaan potkaisuun. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Sinulla on <b>%1</b> %2 itseäsi vastaan.<br><b>%3</b> ääntä tarvitaan potkaisuun. @@ -4725,48 +4725,48 @@ Korvataanko vanha? Paikallispelin asetukset - + Number of players: Pelaajien määrä: - + Start Cash: Aloitusraha: - + $ - + Blinds Sokkopanokset - + Use saved blinds settings Käytä tallennettuja sokkopanosasetuksia - + OK - + Change blinds settings ... Muuta sokkopanosasetuksia ... - + Game Speed: Pelin nopeus: diff --git a/ts/pokerth_fr.ts b/ts/pokerth_fr.ts index 82a6c9a4..957d67c5 100644 --- a/ts/pokerth_fr.ts +++ b/ts/pokerth_fr.ts @@ -1,6 +1,6 @@ - + CardDeckStyleReader @@ -257,22 +257,22 @@ Veuillez contacter l'auteur de ce style de table de jeu via "%4". Erreur de style de table de jeu - Obsolète - + Everything OK! Tout fonctionne ! - + Some pictures are missing, please contact style maintainer for this issue. Certaines images sont manquantes, veuillez contacter l'auteur pour lui demander de corriger ce problème. - + Some style fields are missing, please contact style maintainer for this issue. Certains champs sont manquants, veuillez contacter l'auteur pour lui demander de corriger ce problème. - + This style is outdated, please contact style maintainer for this issue. Ce style est obsolète, veuillez contacter l'auteur pour lui demander de le mettre à jour. @@ -741,7 +741,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-weight:400; font-style:normal;"> @@ -759,7 +759,7 @@ Guillaume Delacour - <a href="mailto: gui@iroqwa.org"><span s p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -3438,7 +3438,7 @@ p, li { white-space: pre-wrap; } Join &any game - Joindre &aléatoirement + Joindre &aléatoirement @@ -3614,7 +3614,7 @@ p, li { white-space: pre-wrap; } Connected players - Joueurs connectés + Joueurs connectés @@ -3715,7 +3715,7 @@ p, li { white-space: pre-wrap; } Connected players - max. %1 - Joueurs dans la partie - Max : %1 + Joueurs dans la partie - Max : %1 sec (action) @@ -3726,1236 +3726,1236 @@ p, li { white-space: pre-wrap; } sec (durée de la main) - + Afghanistan Afghanistan - + ALand Islands Iles d'Aland - + Albania Albanie - + Algeria Algérie - + American Samoa Samoa Américaines - + Andorra Andorre - + Angola Angola - + Anguilla Anguilla - + Antarctica Antartique - + Antigua And Barbuda Antigua et Barduda - + Argentina Argentine - + Armenia Arménie - + Aruba Aruba - + Australia Australie - + Austria Autriche - + Azerbaijan Azerbaïdjan - + Bahamas Bahamas - + Bahrain Bahreïn - + Bangladesh Bangladesh - + Barbados Barbade - + Belarus Biélorussie - + Belgium Belgique - + Belize Belize - + Benin Bénin - + Bermuda Bermudes - + Bhutan Bhoutan - + Bolivia Bolivie - + Bosnia And Herzegovina Bosnie-Herzégovine - + Botswana Botswana - + Bouvet Island Ile Bouvet - + Brazil Brésil - + British Indian Ocean Territory Territoire britannique de l'océan indien - + Brunei Darussalam Brunei Darussalam - + Bulgaria Bulgarie - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Cambodge - + Cameroon Cameroun - + Canada Canada - + Cape Verde Cap Vert - + Cayman Islands Iles Caïmans - + Central African Republic République Centrale d'Afrique - + Chad Tchad - + Chile Chili - + China Chine - + Christmas Island Ile Christmas - + Cocos (Keeling) Islands Iles Cocos - + Colombia Colombie - + Comoros Comores - + Congo Congo - + Congo, The Democratic Republic Of The République Démocratique du Congo - + Cook Islands Iles Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Côte d'Ivoire - + Croatia Croatie - + Cuba Cuba - + Cyprus Chypre - + Czech Republic République Tchèque - + Denmark Danemark - + Djibouti Djibouti - + Dominica Dominique - + Dominican Republic République Dominicaine - + Ecuador Equateur - + Egypt Egypte - + El Salvador El Salvador - + Equatorial Guinea Guinée Equatoriale - + Eritrea Erythrée - + Estonia Estonie - + Ethiopia Ethiopie - + Falkland Islands (Malvinas) Iles Malouines - + Faroe Islands Iles Féroé - + Fiji Fidji - + Finland Finlande - + France France - + French Guiana Guinée Française - + French Polynesia Polynésie Française - + French Southern Territories Territoire Français du Sud - + Gabon Gabon - + Gambia Gambie - + Georgia Géorgie - + Germany Allemagne - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grèce - + Greenland Groenland - + Grenada Grenade - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernesey - + Guinea Guinée - + Guinea-Bissau Guinée-Bissau - + Guyana Guyane - + Haiti Haïti - + Heard Island And Mcdonald Islands Iles Heard et MacDonald - + Holy See (Vatican City State) Saint-Siège (Etat du Vatican) - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Hongrie - + Iceland Islande - + India Inde - + Indonesia Indonésie - + Iran, Islamic Republic Of République Islamique d'Iran - + Iraq Irak - + Ireland Irelande - + Isle Of Man Ile de Man - + Israel Israël - + Italy Italie - + Jamaica Jamaïque - + Japan Japon - + Jersey Jersey - + Jordan Jordanie - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of République Démocratique Populaire de Corée - + Korea, Republic Of République de Corée - + Kuwait Koweït - + Kyrgyzstan Kirghizistan - + Lao People'S Democratic Republic République Démocratique Populaire du Laos - + Latvia Lettonie - + Lebanon Liban - + Lesotho Lesotho - + Liberia Libéria - + Libyan Arab Jamahiriya Jamahiriya Arabe Libyenne - + Liechtenstein Liechtenstein - + Lithuania Lituanien - + Luxembourg Luxembourg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Ex-République Yougoslave de Macédoine - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malaysie - + Maldives Maldives - + Mali Mali - + Malta Malte - + Marshall Islands Iles Marshall - + Martinique Martinique - + Mauritania Mauritanie - + Mauritius Ile Maurice - + Mayotte Mayotte - + Mexico Mexique - + Micronesia, Federated States Of Etats Fédérés de Micronésie - + Moldova, Republic Of République de Moldavie - + Monaco Monaco - + Mongolia Mongolie - + Montserrat Montserrat - + Morocco Maroc - + Mozambique Mozambique - + Myanmar Birmanie - + Namibia Namibie - + Nauru Nauru - + Nepal Népal - + Netherlands Pays Bas - + Netherlands Antilles Antilles néerlandaises - + New Caledonia Nouvelle Calédonie - + New Zealand Nouvelle Zélande - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Ile Norfolk - + Northern Mariana Islands Iles Mariannes du Nord - + Norway Norvège - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Territoire Palestinien Occupé - + Panama Panama - + Papua New Guinea Papouasie-Nouvelle-Guinée - + Paraguay Paraguay - + Peru Pérou - + Philippines Philippines - + Pitcairn Iles Pitcairn - + Poland Pologne - + Portugal Portugal - + Puerto Rico Porto Rico - + Qatar Qatar - + Reunion Réunion - + Romania Roumanie - + Russian Federation Fédération de Russie - + Rwanda Rwanda - + Saint Helena Saint-Hélène - + Saint Kitts And Nevis Saint-Christophe-et-Niévès - + Saint Lucia Sainte-Lucie - + Saint Pierre And Miquelon Saint-Pierre-et-Miquelon - + Saint Vincent And The Grenadines Saint-Vincent-et-les-Grenadines - + Samoa Samoa - + San Marino Saint-Marin - + Sao Tome And Principe Sao Tome et Principe - + Saudi Arabia Arabie Saoudite - + Senegal Sénégal - + Serbia And Montenegro Serbie-et-Monténégro - + Seychelles Seychelles - + Sierra Leone Sierra Leone - + Singapore Singapour - + Slovakia Slovaquie - + Slovenia Slovénie - + Solomon Islands Iles Solomon - + Somalia Somalie - + South Africa Afrique du Sud - + South Georgia And The South Sandwich Islands Iles de la Géorgie du Sud et Sandwich du Sud - + Spain Espagne - + Sri Lanka Sri Lanka - + Sudan Soudan - + Suriname Suriname - + Svalbard And Jan Mayen Svalbard et Jan Mayen - + Swaziland Swaziland - + Sweden Suède - + Switzerland Suisse - + Syrian Arab Republic République Arabe Syrienne - + Taiwan, Province Of China Taïwan, Province de Chine - + Tajikistan Tadjikistan - + Tanzania, United Republic Of République Unie de Tanzanie - + Thailand Thaïlande - + Timor-Leste Timor-Leste - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinité et Tobago - + Tunisia Tunisie - + Turkey Turquie - + Turkmenistan Turkménistan - + Turks And Caicos Islands Iles Turques-et-Caïques - + Tuvalu Tuvalu - + Uganda Ouganda - + Ukraine Ukraine - + United Arab Emirates Emirats Arabes Unis - + United Kingdom Royaume Uni - + United States Etats-Unis - + United States Minor Outlying Islands Iles Mineures Eloignées des Etats-Unis - + Uruguay Uruguay - + Uzbekistan Ouzbékistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Viêt Nam - + Virgin Islands, British Iles Vierges Britanniques - + Virgin Islands, U.S. Iles Vierges des Etats-Unis - + Wallis And Futuna Wallis et Futuna - + Western Sahara Sahara Occidental - + Yemen Yémen - + Zambia Zambie - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Etes-vous sûr de vouloir signaler le nom de partie : "%1" comme inapproprié ? - + Are you sure you want to close the game: "%1"? Voulez-vous vraiment fermer la partie : "%1" ? - + Are you sure you want to total kickban the player: "%1"? Voulez-vous vraiment bannir le joueur : "%1" ? @@ -5020,7 +5020,7 @@ p, li { white-space: pre-wrap; } Connected players - Max. %1 - Joueurs dans la partie - Max : %1 + Joueurs dans la partie - Max : %1 @@ -5048,33 +5048,33 @@ p, li { white-space: pre-wrap; } Spectateurs (%1) - + Invite %1 Inviter %1 - + Ignore %1 Ignorer %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 a été invité dans la partie %2 par %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 a décliné l'invitation de %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 ne peut pas joindre la partie de %2 car il est occupé.</span> - - + + The game will start in<br><b>%1</b> seconds. La partie va démarrer dans <br><b>%1</b> seconde(s). @@ -5087,14 +5087,14 @@ p, li { white-space: pre-wrap; } %1 ne joue pas actuellement. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Vous êtes entré dans une partie où seuls les joueurs invités sont admis. Invitez d'autres joueurs en faisant un clic droit sur leurs pseudos dans la liste des Joueurs disponibles - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Vous avez été invité dans la partie <b>%1</b> par <b>%2</b>.<br>Voulez-vous joindre cette partie? @@ -5107,7 +5107,7 @@ Invitez d'autres joueurs en faisant un clic droit sur leurs pseudos dans la <span style='color:red;'>%1 ne peut pas joindre la partie de %2 car il est occupé.</span> - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Vous êtes sur le point de mettre le joueur <b>%1</b> dans la liste de joueurs ignorés. Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joueur, continuer ? @@ -5128,7 +5128,7 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue Rechercher un joueur ... - + Chat is only available to registered players. Le tchat n'est accessible qu'aux joueurs enregistrés. @@ -5137,7 +5137,7 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue Inviter le joueur %1 - + Invite player ... Inviter le joueur ... @@ -5146,23 +5146,23 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue Ignorer le joueur %1 - + Ignore player ... Ignorer le joueur ... - + %1 is playing in "%2". %1 joue actuellement dans la partie "%2" - + %1 is not playing at the moment. %1 ne joue pas actuellement - - + + PokerTH - Info Message PokerTH - Message d'information @@ -5171,10 +5171,10 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue <span style='color:blue;'>%1 a été invité dans la partie %2 par %3.</span> - - - - + + + + PokerTH - Question PokerTH - Question @@ -5635,31 +5635,31 @@ Veuillez choisir un nom différent. ⌘N pour démarrer une nouvelle partie - - - - - - - - + + + + + + + + Start Démarrer - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Pause @@ -5714,8 +5714,8 @@ Si le serveur est derrière un pare-feu, vérifiez que le port a été ouvert et Désolé, la partie est déjà complète. - - + + Chat Tchat @@ -5778,12 +5778,12 @@ Veuillez choisir un autre pseudonyme. Le serveur est arrêté pour maintenance. Veuillez réessayer plus tard. - + Closing PokerTH during network game Fermer PokerTH durant la partie en réseau - + You are the hosting server. Do you want to close PokerTH anyway? Vous hébergez le serveur. Voulez-vous quand même fermer PokerTH ? @@ -5800,16 +5800,16 @@ Veuillez choisir un autre pseudonyme. Cettet version béta de PokerTH est obsolète. <br>Merci d'aller sur <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> et de télécharger la dernière version. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Le moteur de Texas Holdem Open-Source - - - - - + + + + + Lobby Fermer @@ -5818,12 +5818,12 @@ Veuillez choisir un autre pseudonyme. Une erreur interne est survenue. Merci de la signaler à un administrateur sur le chat. - + PokerTH - Internet Game Message PokerTH - Message Partie sur Internet - + Attention! Do you really want to leave the current game and go back to the lobby? Attention ! Voulez-vous vraiment quitter la partie en cours @@ -5884,64 +5884,64 @@ Veuillez vérifier que vous êtes directement connectés à internet.Impossible d'ouvrir le fichier cible lors du téléchargement de la liste de serveurs. - + PokerTH %1 PokerTH %1 - - + + Chance Chance - + Really want to exit? Voulez-vous vraiment quitter ? - + PokerTH - Close Table? PokerTH - Fermer la table ? - - + + Kick Expulser - - + + Do you want to kick <b>%1</b><br>from this game? Voulez-vous expulser <b>%1</b><br>de cette partie ? - - - - + + + + <b>%1</b> secs left <b>%1</b> secondes restantes - + vote vote - + votes votes - - + + Chat is only available to registered players. Le tchat n'est accessible qu'aux joueurs enregistrés. - + Spectators Spectateurs @@ -5968,14 +5968,14 @@ Si vous êtes temporairement occupé, vous pouvez utiliser les options d'ab Vous avez <b>%1</b> %2 contre vous.<br><b>%3</b> votes requis pour l'expulser. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Le joueur <b>%1</b> a <b>%2</b> %3<br> contre lui. <b>%4</b> vote(s) requis pour l'expulsion. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Vous avez <b>%1</b> %2 contre vous.<br><b>%3</b> vote(s) requis pour l'expulsion. @@ -6226,7 +6226,7 @@ p, li { white-space: pre-wrap; } Could not load server-profiles-file: - Impossible de charger le fichier de profil du serveur : + Impossible de charger le fichier de profil du serveur : @@ -6275,7 +6275,7 @@ p, li { white-space: pre-wrap; } Could not save server-profiles-file: - Impossible d'enregistrer les profils du serveur : + Impossible d'enregistrer les profils du serveur : @@ -6396,13 +6396,13 @@ Voulez-vous l'écraser ? Paramètres partie solo - + Game Speed: Vitesse : - + Start Cash: Bourse initiale : @@ -6412,7 +6412,7 @@ Voulez-vous l'écraser ? Petite Blind initiale: - + Number of players: Nombre de joueurs : @@ -6422,30 +6422,30 @@ Voulez-vous l'écraser ? Nb de mains avant l'augmentation de la petite blind: - + Blinds Blinds - + Use saved blinds settings Utiliser les préférences pour les blinds - + OK OK - + Change blinds settings ... Modifier les paramètres de blinds ... - + $ $ From a7ef60b7509b0d5939197c6bd4d2414f66c8f680 Mon Sep 17 00:00:00 2001 From: doitux Date: Wed, 4 Dec 2013 23:14:34 +0100 Subject: [PATCH 112/128] bugfix for #242 Menu on gametable is not clickable sometimes --- src/gui/qt/gametable/gametableimpl.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp index 7980b0b7..dd1bb98e 100755 --- a/src/gui/qt/gametable/gametableimpl.cpp +++ b/src/gui/qt/gametable/gametableimpl.cpp @@ -3545,6 +3545,7 @@ void gameTableImpl::localGameModification() //let the SoundEventHandler know that there is a new game mySoundEventHandler->newGameStarts(); spectatorIcon->hide(); + spectatorNumberLabel->hide(); } void gameTableImpl::networkGameModification() From 5b1354bdfae1e108a18c6058ce45fedcdbd4c13f Mon Sep 17 00:00:00 2001 From: doitux Date: Thu, 5 Dec 2013 09:50:06 +0100 Subject: [PATCH 113/128] translation file update to avoid conflicts in github pull requests --- data/translations/pokerth_gd.qm | Bin 155352 -> 163372 bytes ts/pokerth_START_HERE.ts | 72 ++++++++-------- ts/pokerth_af.ts | 72 ++++++++-------- ts/pokerth_bg.ts | 72 ++++++++-------- ts/pokerth_ca.ts | 72 ++++++++-------- ts/pokerth_de.ts | 72 ++++++++-------- ts/pokerth_dk.ts | 72 ++++++++-------- ts/pokerth_es.ts | 72 ++++++++-------- ts/pokerth_fi.ts | 72 ++++++++-------- ts/pokerth_fr.ts | 72 ++++++++-------- ts/pokerth_gd.ts | 147 ++++++++++++++++++-------------- ts/pokerth_gl.ts | 72 ++++++++-------- ts/pokerth_gr.ts | 72 ++++++++-------- ts/pokerth_hu.ts | 72 ++++++++-------- ts/pokerth_it.ts | 72 ++++++++-------- ts/pokerth_jp.ts | 72 ++++++++-------- ts/pokerth_lt.ts | 72 ++++++++-------- ts/pokerth_nl.ts | 72 ++++++++-------- ts/pokerth_no.ts | 72 ++++++++-------- ts/pokerth_pl.ts | 72 ++++++++-------- ts/pokerth_ptpt.ts | 72 ++++++++-------- ts/pokerth_ru.ts | 72 ++++++++-------- ts/pokerth_sk.ts | 72 ++++++++-------- ts/pokerth_sv.ts | 72 ++++++++-------- ts/pokerth_ta.ts | 72 ++++++++-------- ts/pokerth_tr.ts | 72 ++++++++-------- ts/pokerth_vi.ts | 72 ++++++++-------- ts/pokerth_zhcn.ts | 72 ++++++++-------- 28 files changed, 1017 insertions(+), 1002 deletions(-) diff --git a/data/translations/pokerth_gd.qm b/data/translations/pokerth_gd.qm index 26c18447a84d5bd4cf0d8a2448873dea94fbf0e5..43d86fa85c8bc235d4443f331a9bbd2c3b2046ee 100644 GIT binary patch delta 10308 zcmb7}30zF;-@t#*Gw00AIkRO+3N<3qB3TnkLe@kSU0lZ6xyTMczFkN90er1M zjs()+IRK3ZSQl>M_M-wx+!_E;Zy@nc0d(vzARUtckTeh<;IjiCoF$M1mjd_)0&z8w z295;yIU9)ES%EaD7f}COczq8Om&OVt!NDemSDP3Y2+Y!jK%4>u(tt_8Y)$~UH5PQt z=DGMo7Jh+rKW1XRmp~eD37Gw}0q)%b<`xI=U?(soT>u_h3M2=n0rSTiAfvtj^J*r* z;~Ze6c>Rluz}jp;!8e%LtFu5F*bLY%l|ZE@fpu#K@IFrm?0_yn0=5C`cO2l$1Ykpw zQH6(qjam&*{|(s0Rrq@eu)iz^68IaiOBf)XZV9Bk6R>M@fpiv|7+5Tjj*bO({{$d? zS_69+$8Q`2?D2=l`ydV<1+X^?#7Vb-oYx%z$;5L&>>Gllcqfp)u^@Nz0Mg_zs3z0` z*}Dxam(>8wN`Pi&Xy?1*LEZR0!1qpIn|cRefjzW(jWafcfgRNXX_y9%H?IJ3xB#wM zFMzbm12-KC*v1^(Q|*9EUI9L9asXn7!hj8UpYDnq49KYm$X^ZvtL*>^XCu9k7hq6V z)IjWFfyAlG#F0H0EI}=NMA=W7b;Fo1E za}tJO->opav;s)mU`WwjL``8Nj+qW{@;EF$f^mQI4J@&5jM4BB(#|(VO;y7(3`2M= z0{vBtwgxV+N_QV0+{heO8R@{mhOjUoz1P4Vm-c9iI@lAm1>i<4?45_de_snn7oP;U zpADI9P-DA-;baItaAQk>WalS1ndS=6xg0Kr8Gv-HfPxc|0M}1IG3x=4(iKYFar~WI z;Bm%h)VL4mp1j3O_jx3|)Sm-5lL+s&VRowd0-qu*0ZJai=hk@R+C=!g+!vt77Q)vn z@w!F=NxQK`xqcnMsWM{LbPJF%vBd0>7Z7PIX}BK+Y3xTVT+)HsTp`w}T>!QW6-ek~ z6LV5@q~+H+0Ev%DtG=k(PQk=&#v7o1t%=*2LqI!UBRzes0UZ00UN<%a?Y^0K_HhOB zdk50L8;0SVvm{_z65jWLjQxUwe^^Yk&LSW$yh(yfOCYS4Bz~*}I5CVQ9Z+JPh$GA2 zq+p(TM%GF3+(B1MHaFG+tO_98mEP~rjla&^FT^Ill%QpVEIz=a1$n+vOmeA zL^Rp#a#HoGClK8;HTnFw2%x)~sy5;bn>$eZnfoxMPNyy%P67P((8S$^0?8dY?a;Ur zK->q~E2seA&^hXnjk&#eJ@t$$#acoI(!gJ+uQ8K)Kc@k+ya5i3rJ7O@zNf-#! zk+4`Ae82jTr<)B zoQTuuMqx4GMJ;yW1A6Tj+3}w+e4<6|;(dX3>nn0CtOUXj6b&qS4CJ$iXoTe=Al<42 z(lLpm$T#x=EG4z)LKe=Y=)k z%PLW-?ls1v=OEGY$+hTQGes*l4+psTRT+E$>=#ePf|yZJ!6G+?@#W8>20BjeWeD3D4krh9c7z?d?|z4><_ zHj|m&Y%3rK*XbDVd+5CmHca2{7^lTMnBkVim?D2?#@D|AI(9n~Ip!w7$1BX_V;E)+ zESR`+1waRUXW~boKn;FjW@TuBtj%I(S2V(Ms%KKh)nGUE%*3Y6n3Ov7iMkYK?z5Hv zmzFcBqBNkEt(ep^Se!QK4lzqySuDT4%(8q8mupf+&!7g@dz!ezQXq-&XI4*c3-IJ2 zv(^U(yeVbY4m<;}dZvl%lTF+aD3J6mH}TtNX6^E?n1ZJ>>so7pD#tPF@-Phd6=1`) z8spz-k?FvFjzAi)j@j}AZ8YdHvtw8R=KLqjuD;_jX9qKT{EYSfCbQ>!5|B6xW`9}@ zkoHbU4A=H!kspvtkafs2$WO>BfmFO3i8$bV(ZmGj+7#MG6$S6UpO8!aY3~}GRob=(BaI%;mJTQb4+?lAYNA` zkW9S998Su{+QKl`^YStN7j`ioV4Nm1h0ig}tjd|9Mp`t%6%%)C5lABDGsR~c0BI4% z+^fa-Z`g<_aYI{|7cnJ6=Am<{nG#ef{BFyXT)=RC;>nccpvEeiF=d-u1KF)*9_Ue^ z$_vc%(|FyZEasJqjt7#S&Qvi+04j7$l>}{jDW9pT^TP9brsg|Vw=H`F5>Yo3bM7+l z8{>UvIHVQwC!_hUMAq$d`EiK_r^u%y*_v=Z_hzu0Qk5 zn7O{RWZ_yp(3YcE@t&<1mVT_{gfCEco|V=pu?6eM^7GN@UZ$|}br`O%=CI01H-I!f z$TnGo&RaEzwQPi{z4D%IY3PncW(;fh%OfCrq^$iJ)YRKytWybtRkJ(mRBMeHvx3#R z*_Q&md&;_%mIHO^&-Q$a4M*)MwpUYJm`Ea*wgzLlyzqF`4yFYzX9gD%;-& zulw+x4cLSo&DV+Sn1WnvuhZCwUK)U>yV!^UuGqe}V57qAFkeh!qkFvr(tkS}x9k#- zOUv0rdu-{*9UYt40d4g1Av-NWi77XWowf;QZd)OclDq8UT8wk~eRfHId_e9)K38cpjc0=o@SWTC)8#m&Eu8d(f&BgK94(z7Am;u*Z zWw$-R?~nY#ZjYLQHAc6X-F138=5$|ybo3i`_w2dYet%;RoSF<;4k)$>~?_t z!`brs0-&xV*oQ-70GwL0kDGtSgtaiibdc#MkQ`{rR!qXw`saDJau%k{=br4-t{%8# zs$pL|#|C1;7xtAKk2zjp;(xQ`-NaIi4q{g-Zq(8N z`-qt)?w(@e=_G+VGO34fKyKxTt$hw*IrS7s$PBT~&f@@cJjCktD1fb-*r7YlRNPJM zJPpHVZl<_v&*1=f_K15AZV6D@O5FbdCL-~B@!;$6m?^i2eZw)TK01pd?%806Bo1l z;!e{!*>zK#;CvCAS0bJfjNx>(Ks?LoI5sYe#dEOFrvvYcQ|vJ+Zmkzc+^fV(-M!Hn z)#9bWsIdl5#D+ZGW?Z|Ki`Uj-VlZ#W?^oow!&xZ99g8qximOIZ(6P;s<9@;_mh0$}96-e1aiMpXR zfRvHg4#vFEK2&1=74yR>wLk)6B|4V^^zNZ<64&B-0NV!=uX7@_sf%R5f)M~sQw5R= zgJejV74`*A0!dCw$*_490Dt65{8-Ejx4KJ41{}nN$`DDwQCvYiO_GfE%f%|$M>6JK zC-jYQ$@s0Pi34>KO|BcZbkP!R;X{C&)jG+PIfsC@>nNFW8oS-J!;++sjzBK9mQ3%D z&h`66$*gkxe&Z(-vm}za2QLCCKOk8+F%(Gn3dtJTpV;fYmuwo_9-yB@vdb02Z|e!k z{w0+_{J%;LKJ&nJehbNofhgKO~i01E9l`B$b%?U~iV>X*ov0n-IzCdJe1GX-Q4G3P{f&$=9ps z-Ot8KMLV$(xg97~j-7`o`jXTld^5Im_EM{iWK7X>r7boF;re2jK%zT3RBFBDEs$2L zr0R4O;G05fKNrL1Vyv{C9KHK}Td5;Oul|-Gb>!aT`DCf{Rpal6r7jx|VRaiV?Us)j z?bAzX_wgElf(6o^D+`eMQjcL6zI9aE=N$?lE0y-I?+xH$E*+2+0pwEOtVpo2^P z(h&;mR^yzdAq#Nh%C%G)TF?x0{dH+*1#+iaIp27)=io)s0)yhr=`<= zdxski{?cUQ2E)}IQr-M>$nVmWDMpT!&VTa)YrskA0$n9Q-dyRzpK(j(@HT0hgDXHb zFI~3V7vo=jQmW6v8D0J;HT;1CKCP7=n7#rxlj@`y&ToJm50ai7y9G%1q0&nWQ*fXh z>7_^Cuw_$7vrChKwq7I68~hm0^Q8G%IL?)$((8UoAdIi{`lm90uHU8Q<4_ZOn@g+a z6#?z_D@R;YaA|gelRnm^0jxaFsm7v2e-?9Q$*V9AtmN8dq7!vX7D)LIT(366vGKUX z4Zeyq`IN#9HEvAocHo93r$8s9Ho`Rm! zT*vBaewPc;$x-5Ky}1x$5n&c{;pexa*N1Y^3Fj~$jNsy?jzVXu)$jGVZsGyU-ULKE-2;bul?fV^h7WXl&=ZgGF}E{=C?Ha9!YA1BzAo3A^HTQgMx zsY4K_Tj1b@DReuxU|JluMDg6BIT$VvPH<~hP6wEOQ6LE^f|268Qw+xQ%F{1HoT z<44@LvHZ?$8IBn<^|L?{(v;f<_@J9<+)if?fGNJ*saZil#?9bz_G9C5@@FpREc%l4 z3YY8G4I7+eI_~o2@jx<{a(OdQV#kpJ>8Lm^F9)5cpdXjNr9F^WAGw?UI{=u8+^uSK zwnP{1_D&4jjvu+A3d{#FvE2PdsNz57bN7#q$2#xEy_mTdNOZo5Pjp<>nsR_{-rU=Q zPFRdyaMcYllRnp3an(bLaK?39jVq>D>m2UmdhBrC9^~o*7$9R8aGzV^j4f3>Bw{($ z`tY0?CM-`WuRMY?^gqKlA7+bXxf5>_f#JEUMj$!H@UHF9r;6Y49V@$_&HrNiGQQK8 z0$fyk^WDaYu>Q{&z;{1C2T1+}-lLTr_V>=bhtXR%j5cwn3qK%Z8<3xqcwcW!)t%n+ ze#U*^g%1UiP(2^GsTDRDm-x{iaCMyWh!6UV-tX!lkV^aWA#>2T=Yf^B(Ae$_6#ZW$L5UTh}41cN&ZJySTzaSnDwDC`TuG=+SV65e@%s0n8GKarvKwBSb#@~Js z0+6(fFN*31(Ca*Z|FG^VZYcKQU;R1=SEFA1Yq1ijssUdej04|K;cFi@LfdQkPxaP7 zyNu+&bgRMLu}%WX(+B*QF`KbHzbm61>@d7m%0yvpaobHRV;B_p^lcd%cMdl;F3ZGS z&H>q%FO#%ximPS|fs}14Yo+rk1RC_StSv-Dju=6RI&UipaZ?_CVW~%a-;* z758f+Tk3NXHx^dP^bY7$;yJR_skkEAbjQT!7X*^@HZnt58IbJJvUTO?LmyLQ>!;() zdz;Dj&%kP0S|mFXUJkThPuXeE0#(P#vfEVRCUlZcmdl}cHt8hGos@$Ks7{urMw5IB zljU{J#g68TEN@&pT#EIO-AFzKq-egZ;NEy3D^p~pslEV%?PU+{TLHQIyX>Lkc-%d^ zBYX5H8EBshSw%QH?UWs|7b&$su4l_WT3G`%x0TDIJ@LK32zi4lWJldz;ed`dmp8Fi z0`(Qit(VmT^xZGF{uGMzk=x+b40*Otu5OFVY1k{beOd@m^aY8&P&7hrH@zMgtv|`_ zXPM(Vpjz%|Qx7oni`=o(c6?(pMDDyqgPl>j+%>xx7p*1oj>hHsaVqcH6?;M5y$kZ5 zi|w#8`7HOau|qG_2&9r;at}Xzaa1#1-g_EG!~FgNNr=Y8ZF;#^Pn=Pklky?Q&H2rlL7NYe|FiNl+W*W@$ruE4cn6M;J7$qNV6 zk(JNOLZ`9XDqrrs8n@4@ghWAr$v)r(<9B9u@ z^7RV|P)8s6hF9pkR#x)e!)$O98|3>#kKp~iIyL| zVif!y%t+IADJ(MahXkdmM8{{(4*In5J(QCE5?tv#gy%?(9Wm; z@>{MVb_mx0WsG8)9=*G(L^0df1E^Ow#iA2)v2$9jSUYJHw(*$)Dc41D+~FLM6Y~@& zbd@+j?gmBXj%-||UR9jRv;;`#tho3a#&gXnMedm*^ln#0?(>V-Astd&UWzJxxKDBU zI%d3OLlk*D4jkYrkV+mZ@+>~1;9~^RG3AOpHyrO_ts?&&K5)Q1#f{+M0Om?XaRU^z zeG7%|{&%#wRIYf~32o_Bqj>w|98kX!#izvW_|~deX|b*n;9yr}GcVklWv!I0T9;r8 z=ArCx3kUGos_a<388;FcWjDL+==H8jH*Nut8=I6vE?~ksc~Cj*js>ooZIpq)0&H_q zji}yc!tt?xBVYqFsvi!FLxJm7#eA~wX;8=z7!|W5d zq3NwM%fU?AHA!Vwpu|=$U)6YhJ=Xs>(^M8N*dTB^Rm+CBmMc)H99_`6I}{0|k_9T~ zXOTe8`KUV9ptDvFP<6V6n)sHg>ijefsMR}F_m6J?&d*WxUV*+8JyPXYfvT=Jt_ldi zaUIXA0%|?6-9D-MDGxUuys}jDW~Shtk*g}r|0CA_E^}0AH*kh4464stcJ);iUWXq>6&jB1YqrtCK3ROb)-09a+HF3l97k9=0;l$7FqwyMj+ z&*Bb$U45YHL0~K{FhKPZ-xI*pEvm1ccQ_yy)>I|RcAw-{kNvd~Fw$iWFg=SdBeN?$L#y9gCh=*{9LTd33Kcz;o#Q1ME zG9ofAR6Ru#myo26iVTj|Pl+_oP|a~{J5&wc5QZ0r;(sKBKm@4qC>m)zkAsjOgV=gS zMa4{0$4?0hNzf$3#Ko%8#(IYp!pW zch^=4UjK1K-v3`?>0K{d>tjyz)~~s2o-rW5j_K6~d~gy~5F^~FMoA)3BIC4-GKQj* z?Tvpwq%-phjgHi+H6aO+F;IF3z1OoAp#JvlODa_V*T&^aSjxGN;4~RFc=tnFvV~3FSmSmrS*wRi0&xs^h zKS*tcixf22kNLMXWQP$uYUgUG2_>yEWfRF8VyJ0F+Z&cWA*~I5;Uv%ut^Dt|90~u& zEuX@Pu1}AE|KR$eg5&?U5Wrc62s1aTP6!sg?xdaie+vl1k)xzp<}drmO={N|pJmit zg5bW!F)&7d%t-7V6CI6iyW$LKn(1?p+$8;i@P?^^vW+S>MWivbBhmLwLTJGm4WKo8 z5niE2BbdaD#;c6yc$eXPKhnf-Gk|iIE&4{rYl5S~)M3#v36UW&+ITgF3kI%1ahJ3( zG)X6iEtY^U-m8X*_-T5UkPi&XJmO}kRuT!DU{sG`s|)F9P#z;(j~;zv)Y_N?bwp%n zm|BylNzhrT1HJd28qH#E3QEHf{slL^+Mp3vX0 z!iicM>>`NT(*1{C%>2XR62s!uewz6BX)$qz*++?0W}5=?ho#yK^Mg?vQJ5p*jT-oI zlhj8O6&Yesza}=Bisyv4aA*pBQ0_=HT>|RNI7g$7{&^1{5E+)B)kGU^y~MjLzLP6G z$q1tpy6DS3nsqZO#i;gALIN@#{hfGPjQlJ4sY7C>MuiIM2o6&l6N=%nJ#C&@-h&2F z1Aa;kC;AYj;d2ja=I}p_*7(P0(=_pa4`Oihp!uYaq0o+Yu`)^%h29j0=Kos`YrNCo z+lF?wS%j`*O5et(7=5`deg@-l9K6GnQ|L^Z=@0*GW@-HS@7y1U7nwXsV{rAOmi@xf z0gd-f#Sygsc#^YGMw5jx|Hlj2E-X~7(T1uq>1pwBN?2U9MjNJ0h)OclI8iG_$v;Ih zTy!RmD1a?zO6I6r0|_V2hK_#JN@pxOYLwXM!eRKY5#lENubG(UVVsW;LI03y=zo;T zNgX^j;omLumyE$-A)2X}^CJ_4NodsJQ^VpD)MC@bjAC0V3G;uIyD7_~oLW7xYo?1v z>5L&1ht6hnGcCHCQQp6;W(sL7eiM%_`A)bp6azQ`G(X%p^#3;>CpG`qjGTnBqs0>R p@AIA*GZigl3VL-YhH9_|>rHGU47;L%)Xbo2Laj49c+x#K{{;!2RM-Fj delta 8004 zcmXY$d0b5U|Ht2-Gw00AnUyT5+!C^d3Xv_@DN-WKrF-q!x|h(k)F5j}Nu{z}dt@zX zRivav_BL*oWJyxU{>|^z%dD3x8aUC-z!|SVTVgL_K-{Zd15P4pj3nZGiGuLg z#Jv;rWHXY9Bu>PNR zBLl0N>B%{G5g)gKD94-lJ0em3VB$;di3%_3$@b#P;rQ>xq`FC$nZb zMAtr3yOtlZu>xwp)5!0g9*G81P5o&F%_ zxlgc>Omb1~BbHlBF8Scih2&BPo#vjQ@vFU{qP{dfFo?+R1bCe&_7jbNjdgDolk56Z zM0dbV38Z7c@%j&(!!B~&kw&b*jNF`Y;s;B~Z3|RUT0(BI{lO{Zo`d`4v&my>6tS)k z$YW+BF}nitSgj*^GL<|64@0MsG^y#u0oQ2KP8{In44QOf9T-NF{+9(6uP4uqo1x+= z^1N|aN1XkBnzC>WblZ!j1Z^aG|B|L{awqzfOVbxXGT-xP`jQdEF4xiYz@NlQBWQXo zY@%li@Ho-W9(uB5Ujs`!()3hp{O4Sneib55F{j_>-i7Xez(G`9;ap9=MXK7A^$~iKieGIQ1+Zyi>nlWb6BEr-=rD}Fd7BX3@T2b?@x$#K>3fJP(ZEAY(Wt?5)_Ss5sZ0|cMHJVQHEVN-*vN3! zEDOffaF!XxVIwWwn6b@y;-nGGe2YEN?rH<;e$$hk8OtnxLe&f2=~#ym5N+?-%wcUU zaduakL;5-5%%a&KS92okk!;8?J7U>e*{FVSyT_B6r{8Kk|C!DBfepXtz} zt+25q`f!@9`cg@BqK2(Lqd{D_!$N8UiQWXTC^@c;J=npPaMR7R*%4J6VlrI;yYP5A z(b{`@vbbIB(gmD&z*v^^S0|#%5LVETO6>eiR=CcGxIXjQ9pMPk=PP=$*L_&A`9NZc zg{-(sCb6sT?9oU_;9DMhasUA)%Y{8%1ywDtW;JgI5xeEUzCU|N)W034-G7ic9rumv z;(wah(1V|Y^s$c^dNqJ@suP&*P%I4f<_Xt z*n?=PR&sDkFtN7zlJiE(h&?fpobT;HY`>G_@~@FZr}j&3tilUC-Wzx%T~fRgUSeA= zDUUcv?9*mRO>-|TqB z%=W}QbNJ>C(3MG+fi)xf&d;G+sT*%^wUwCVUwq$IC`j5*<{jF^6U*<#4`};~m@W$ZWC4g!7sjagxGZ-9lt!I zh`4SsyzfM8q_H!OKJY7a|I&=#^b-Ca@62zJ zKw`f>@LSTu5fNSZopu7UX)k_vKD;5hh7aR$@}S2C?!Bxho4Aq>U)-7Kp3aZoHyR73 z*YNwsrW0-1Zr~0x1NVN?li6_wzR2VEh5STl_2Q#CVxtY+`KUa&S1(rkz(QW0cl0)>GbMJ+5+AzZhBY_<^aoE9JDvvS zgT`PvxDc$y^S&Tda4d)a>Vbe%Rl)zSDImR05vZV%IC)1w8haQu+_fwd}cI(gGq)EDsG>`_lFQ*CJKYwATTv>!tilH z#CClUhOaUr_Hwc?YBauou|x1YfP&;rqoA8sl!MY}u;4v-7SVl2!F!Ay(c45}$pS0H zgPp?C!5>h;9-2Ec>tC#af8zScSB>TiCxJFFJ1_ z9M}Yrepn(LIE9mLeIOipjQdfJ!qFvbkt>c0C(_oS(mA6iHy}tjxnUEk=4Zm$)C`nZ z`-ON1AL7j43n>$8i5uKrNDs{;#@!LpZ=xTNlnPg{KI3&Qh1?ypP{9ll@;O&zsd2(X zlOaTo*+R*Tqwwomp`x*fxHgu;lktBMb?+!VYx^D6zTUu-@APD06~gmHJ&8Rk5h~XQ z6Fn>us`@&j)43|Vd5t>2&@4U7xblTDgwV6vIieDpbF!yyLNCP^)hCldKOOWQ>|5+}-}-TFgjJpZiyWzUi3KX0VbVpc zmdH#eU6f}*tjAjE;uBuPd^$;&{>Vn88=xoGFI4I~)R}0Poq-X1^kg9>(iJ_fp~#Gq zuAL2UxnLz--#rm^#!=};l;NDUpER&bfDT<~K+^{_pU%=<1BS!shDmqL#*4ltNF(zO zqP41)?rR7@Jzpk`syL0>PL#$Zt6+p4(qp9o#94Vr%^;joOeQ=j3<+e2aDXv=% zm0taVq$HUxy|KCj(aAscWL4Lsx!P95rjay%m<~F=uvL0{$uwd!)zXJ*7*8{uwAk+` zu~YTZM?)%zeK{>v^vF+I8{&SyIna5Tng#;mW*h_ zU$SPApK#)8S@V_ih*ke4Yf(3kD8f=tR`ai{osl__oR_uNxga3)oGa_{^E#5lCz(wV zthVO^nO$)sQTxZTp&1gQtGTi<+fb6V*`g=QJ1-koZi;;FpeKuaC7ZDMIgD<$%uRs5 zCxyr+d7ef8U@P;CM`KeMDx2zt4PNOan^w{ry8k8fIt&Ty&5-G4ljvH{LGqA%ydHJ2|a3w9cU*{ znQ;iir#N}m_CPEYE6;lRKd@eYy$o)soF~t7d4`hftUNy%>m)|V3*Df~`XG7Xw{oJs zzvLA&A&ICIk=X?jyQ&uD&w}Cqfd!&=h8@v!AF)}$Uc~O9V%H>WsKa9e>vP1xo!rs4 zw-a4%;smeE#POI5u#gqvga9lU(@gYqFh!FoF)-q@o-8`Rz?TK$pF7~T3j)Mhc%HqQ zEzT;$)Q#&U&Qa;G)0B?loTg+`pDQlN1oMB2OIKvT?=8g@&ppxM#2J{zi7V}|!=HbM zEB)PYzrnz?k)ppha>#?WVt~mTV!hjmx(8S%WuCZUxd&{dNZhK6$3*0-o?P>;; zQ7;S>x9R+rqmogIK^q;><*LPqJ!^>mxuqu?|3i#9J)Bs4nz;WpYQud`#Qk3;p%M8d z9&$${{70%M8$UoiLU_@Y<>K)kjzqH#iK*+S6C3ldm>q|D;nYtt`$~6&bcvYb)(?Gw zk$B^V7qLSgqAqVOc5ECkHj(S65%aQPEa_dv{6jqvtF_{7k7GpqeDO{ljBCL_@!oOh zwAUB$;dA)?v@r2e5JX#aNPHCUg)}`veB*zL*pwOr3nImuhzg>9!^QVSz0qM=iFHOf z#BTQz>&89AfhXw1dOL(rAx!)djS8hWNBruE>U8v3@w+8XEG$*fDrCi}3l(BB1g3V! z6m2K8C+0j^Vc`w;iwxG2#pEmOy26ICgA~0g;T5m0>B+S^rRY7ah}epGiheUCL`xP5E~n#a2<|NY?`HTn*x!qd8;RLO;k)d z&;jlBABw4;`(U(EqnQ3(gGuK$1K+n&%-IOte+yE~U5MwdZB)#2c>y<#PkHwz}Nlc3nB%tL84S+VJCM^vx34gBGvCrc_< z>>d_~P@JL&4}$ULSSs}HI;2$b@00|h`Syy#eXw3dfZ`}-KP<&l5jzbBv5i-pbNmi3 z*{>(-wMLO}r2_T;+P@UZ&JbOqha$BcI@GxJ;7rA%3piQnbj90s&iG!YcqfHK8lEcZW@FtvGeyIb7EooO z;#;FRacw&&e)Oxy1`C>~LnQm8P=?a_lR43}#Y&q+kSHImv>yZa ztPqp~Jz-1FXDWyF)}nqmpqw~F7m6}kuJnkXM^rmhIm^8YjYbFMtSne3%TUgZx`;_= zvT}jvaSRp?D;N90m@M1q$qjH&{)5fri@;L6I-59#;rxx%U!CxxS#?y zQL0QM=uqaQyxysj=x%dmj)<(sg(`CvWg~usDD&Du1yB8zd3~Uw>K)3wnO&i>`^sAZ zsl?JNltm>_>AK^}vMsJeE?tz5ADQBQAEoYzwHI-cBg&^w1BmMwpnSf-j@a}Y$~S=x z#4edCznGfC7V1^1r9&`sU8QPX16s)RtP^to>i@~TGL2Onxg8mz7@)ESDnh*qLJt?naaBNQ5ee$RgaysP`QMu z?5<;Q@N288S5sHK|E8*MUzBK>#;QR(tWY@QsT?i9h|UJqs#K0{3oyVmQaSl`KxCY# zCmSDV;7(K3&_U+Jskf=dUCJOjw?XAvym>$sDj5!AzNFea z1S0O8s|vTdihiPpDtbG^)T^~B<}Hj=`j6`51PkQt3S7MD*Rp%B$ z)80H?p*aH+GAy4RBJuiWK-44A`j&MmxZd2C^k7eTeZ-INA_E$7TlUd^PgJQ zqLx_HcD17YT@;rxwIUV)#yehZoP_&cwrbzsclxl{ibwPkC_;T+VH)eEMleF z%d0)Hi=k?twa+nDe5GDC4rzLQGqqnBjJa*GdV{MY=Kt;QtAj3YLYLZBy>HQEl-2$Q z*754ZZW+W5x~MN#Vu7=>)Jey1vX8tvHOYi%o|F38zo7^`_tZJ*4~eC1Q|G+Ch5}}f z`o=Cu^wu!-jY0&p^;6Y(3amS9vVpbd)Op6=G2Tl8b>9&{)~NFwu;8s->iiFQVV_g# zTeIDXT4~h9&9T##HR?yds?bi4Q9tQjL0pGj>h~`)i0idN{cY7z{2!o?#yF~y=)irA z+0ZW-R+(x#bSy<>)LvtI2fyz+SktTSAX>8fntoPCiF^iY9K>z#u1}hAx~qsxhkZ2@ z?i&*~C`~hk1n4SHGt;6kQSnR7>~@Ysoi}Ud*TAh(wVJ=v_h3kMTeEE4M|jOo&9XgE zMZ#9iTIn~W;b$8E1D}W%574adfTTl$X3JQ3$)rmL*3Z(D8<42kIr$c|WWh z(Q%#T^M=c)#~*2%Wg~R*_8lkmHoUgUEF-O|% zZD8#bZI71=(O9Upz3O4C|2@_Az5_|THP`m33MP(S)As*TOLRV3>l6xGnzBmk_8gMF zqZ_aF^t6Xx25W!MLw`RsS-aUk5RqxOHrV3}V*OKX@GYEd<56vRC5-888}0rkFS++a zdu-`QqPnlz*lq~LMrqp23!{ll6SP_W5~72V+U(LYJeR7y;eG|vu?T_eYIsz zVOwwCYadTpMr2H+t;QIg=ErG&4!Mt3YsNz2oB|S@Ev|Ybq-^-CP52brt#iVzlxG%U zNo5bh3Nl9|C?BbXgjG*NxrE9}3zqP+%3hV=|6xs!B#(A1SCw?K2kRzFYH!aft&@h# zV*5;zir2DQmXsU7bi=~-p7=d!P!?OkCB4gLw^^iTF1wIaca!~To|O5Dy)sFvVw}P_ q$-#un9TZtJm6In$dvX)G$f?t~{K&2gxn_~Jww!s=CND15;{N~uMgA@T diff --git a/ts/pokerth_START_HERE.ts b/ts/pokerth_START_HERE.ts index b2e0c0c5..500f3879 100644 --- a/ts/pokerth_START_HERE.ts +++ b/ts/pokerth_START_HERE.ts @@ -3183,57 +3183,57 @@ Feel free to invite other players by right-clicking on their nick in the availab - - - + + + Lobby - - + + Chat - + Closing PokerTH during network game - + You are the hosting server. Do you want to close PokerTH anyway? - + Really want to exit? - + PokerTH - Close Table? - + PokerTH - Internet Game Message - + Attention! Do you really want to leave the current game and go back to the lobby? - - + + Chat is only available to registered players. - + Spectators @@ -3244,44 +3244,44 @@ and go back to the lobby? - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. @@ -3631,48 +3631,48 @@ Would you like to overwrite ? - + Number of players: - + Start Cash: - + $ - + Blinds - + Use saved blinds settings - + OK - + Change blinds settings ... - + Game Speed: diff --git a/ts/pokerth_af.ts b/ts/pokerth_af.ts index 202bfdf4..dbaa75ed 100644 --- a/ts/pokerth_af.ts +++ b/ts/pokerth_af.ts @@ -3757,58 +3757,58 @@ p, li { white-space: pre-wrap; } - - - + + + Lobby Voorkamer - - + + Chat Klets - + Closing PokerTH during network game PokerTH tydens netwerkspel toemaak - + You are the hosting server. Do you want to close PokerTH anyway? Jy is die gasheerbediener. Wil jy nog steeds PokerTH toemaak? - + Really want to exit? Wil jy regtig verlaat? - + PokerTH - Close Table? PokerTH - maak tafel toe? - + PokerTH - Internet Game Message PokerTH - Internetspelboodskap - + Attention! Do you really want to leave the current game and go back to the lobby? Let op! Wil jy regtig die huidige spel verlaat en na die voorkamer terugkeer? - - + + Chat is only available to registered players. Klets werk net vir geregistreerde spelers. - + Spectators @@ -3819,44 +3819,44 @@ en na die voorkamer terugkeer? Kans - - + + Kick Skop - - + + Do you want to kick <b>%1</b><br>from this game? Wil jy <b>%1</b><br> uit hierdie spel skop? - - - - + + + + <b>%1</b> secs left <b>%1</b> sek oor - + vote stem - + votes stemme - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Speler <b>%1</b> het <b>%2</b> %3<br> teen hom. <b>%4</b> stem(e) nodig om te skop. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Jy het <b>%1</b> %2 teen jou.<br><b>%3</b> stem(e) nodig om te skop. @@ -4243,48 +4243,48 @@ Wil jy dit oorheenskryf? Plaaslikespel-instellings - + Number of players: Getal spelers: - + Start Cash: Begingeld: - + $ $ - + Blinds Blindes - + Use saved blinds settings Gebruik gestoorde blindesinstellings - + OK - + Change blinds settings ... Verander blindesinstellings... - + Game Speed: Spelspoed: diff --git a/ts/pokerth_bg.ts b/ts/pokerth_bg.ts index 27c46052..8bfe86eb 100644 --- a/ts/pokerth_bg.ts +++ b/ts/pokerth_bg.ts @@ -3454,9 +3454,9 @@ Please choose another one. - - - + + + Lobby Лоби @@ -3663,28 +3663,28 @@ Please choose a different name. Автоматичен метод е настроен: Приемай или се оттегляй. - - + + Chat Чат - + Closing PokerTH during network game Затваряне на PokerTH по време на игра в мрежа - + You are the hosting server. Do you want to close PokerTH anyway? Вие сте сървъра домакин. Искате ли да затворите PokerTH все пак ? - + PokerTH - Internet Game Message PokerTH - Съобщение от интернет игра - + Attention! Do you really want to leave the current game and go back to the lobby? Внимание! Наистина ли искате да напуснете играта @@ -3702,65 +3702,65 @@ and go back to the lobby? PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. - + Spectators @@ -4539,48 +4539,48 @@ and go back to the lobby? Настройки за локална игра - + Number of players: Брой играчи: - + Start Cash: Първоначални пари: - + $ $ - + Blinds Вход - + Use saved blinds settings Използвай запазените настройки за вход - + OK - + Change blinds settings ... Промени настройките за Входа... - + Game Speed: Скорост на играта: diff --git a/ts/pokerth_ca.ts b/ts/pokerth_ca.ts index e3066da7..65114bbb 100644 --- a/ts/pokerth_ca.ts +++ b/ts/pokerth_ca.ts @@ -3857,58 +3857,58 @@ p, li { white-space: pre-wrap; } - - - + + + Lobby Sala - - + + Chat Xat - + Closing PokerTH during network game S'està tancant el PokerTH durant la partida de xarxa - + You are the hosting server. Do you want to close PokerTH anyway? Sou l'ordinador central. Voleu sortir del PokerTH de totes maneres? - + Really want to exit? Realment voleu sortir? - + PokerTH - Close Table? PokerTH - Voleu tancar la taula? - + PokerTH - Internet Game Message PokerTH - Missatge de partida d'internet - + Attention! Do you really want to leave the current game and go back to the lobby? Atenció! Realment voleu abandonar la pardia actual i tornar a la sala? - - + + Chat is only available to registered players. El xat només està disponible per a jugadors registrats. - + Spectators @@ -3919,44 +3919,44 @@ i tornar a la sala? Probabilitat - - + + Kick Expulsa - - + + Do you want to kick <b>%1</b><br>from this game? Voleu expulsar a <b>%1</b><br>de la partida? - - - - + + + + <b>%1</b> secs left Queden<b>%1</b> segons - + vote vot - + votes vots - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. El jugador <b>%1</b> té <b>%2</b> %3<br>contra ell. Manquen<b>%4</b> vot(s) per expulsar-lo. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Teniu <b>%1</b> %2 en contra.<br>Manquen<b>%3</b> vot(s) per expulsar-vos. @@ -4359,48 +4359,48 @@ Voleu sobreescriure'l? Configuració local de partida - + Number of players: Nombre de jugadors: - + Start Cash: Diners inicials: - + $ $ - + Blinds Cegues - + Use saved blinds settings Utilitza la configuració desada de les cegues - + OK - + Change blinds settings ... Canvia la configuració de les cegues... - + Game Speed: Velocitat del joc: diff --git a/ts/pokerth_de.ts b/ts/pokerth_de.ts index d46fe332..04a770dd 100644 --- a/ts/pokerth_de.ts +++ b/ts/pokerth_de.ts @@ -5305,8 +5305,8 @@ Wenn der Server hinter einem NAT-Router betrieben wird, stellen Sie sicher, dass F1 - Bet/Raise | F2 - Check/Call | F3 - Fold/All-In - - + + Chat Chat @@ -5391,12 +5391,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Bitte gehen Sie auf <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> und laden Sie die aktuelle Version herunter. - + Closing PokerTH during network game PokerTH während eines Netzwerkspiels beenden - + You are the hosting server. Do you want to close PokerTH anyway? Sie sind der Gastgeber dieses Spiels. Möchten Sie PokerTH trotzdem beenden? @@ -5420,9 +5420,9 @@ Bitte gehen Sie auf <a href="http://www.pokerth.net/" target=" - - - + + + Lobby Lobby @@ -5431,12 +5431,12 @@ Bitte gehen Sie auf <a href="http://www.pokerth.net/" target=" Ein interner Avatarfehler ist aufgetreten. Bitte informieren Sie hierüber einen Admin im Lobbychat. - + PokerTH - Internet Game Message PokerTH - Internetspiel-Meldung - + Attention! Do you really want to leave the current game and go back to the lobby? Vorsicht! Möchten Sie das aktuelle Spiel wirklich verlassen @@ -5508,54 +5508,54 @@ Bitte stellen Sie sicher, dass Sie mit dem Internet direkt verbunden sind.Chance - + Really want to exit? Wirklich verlassen? - + PokerTH - Close Table? PokerTH - Tisch beenden? - - + + Kick Rauswurf - - + + Do you want to kick <b>%1</b><br>from this game? Möchten Sie <b>%1</b><br>aus diesem Spiel entfernen? - - - - + + + + <b>%1</b> secs left <b>%1</b> Sekunde(n) verbleiben - + vote Stimme - + votes Stimmen - - + + Chat is only available to registered players. Mehr Text passte nicht rein. Chat nur für registrierte Spieler. - + Spectators Zuschauer @@ -5582,14 +5582,14 @@ Wenn Sie temporär abwesend sind, können Sie die Abwesend-Funktionen in der rec Sie haben <b>%1</b> %2 gegen sich.<br>Noch <b>%3</b> Stimmen bis zum Rauswurf. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Spieler <b>%1</b> hat <b>%2</b> %3 gegen<br>sich. Noch <b>%4</b> Stimme(n), um ihn rauszuwerfen. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Sie haben <b>%1</b> %2 gegen sich.<br>Noch <b>%3</b> Stimme(n) bis zum Rauswurf. @@ -6022,13 +6022,13 @@ Möchten Sie es überschreiben? Lokales Spiel Einstellungen - + Game Speed: Spielgeschwindigkeit: - + Start Cash: Startgeld: @@ -6038,7 +6038,7 @@ Möchten Sie es überschreiben? Small Blind: - + Number of players: Anzahl der Spieler: @@ -6048,30 +6048,30 @@ Möchten Sie es überschreiben? Runden vor Erhöhung der Blinds: - + Blinds Blinds - + Use saved blinds settings Gespeicherte Blinds-Einstellungen benutzen - + OK OK - + Change blinds settings ... Blinds-Einstellungen ändern... - + $ $ diff --git a/ts/pokerth_dk.ts b/ts/pokerth_dk.ts index d509f656..d21ae05f 100644 --- a/ts/pokerth_dk.ts +++ b/ts/pokerth_dk.ts @@ -3784,9 +3784,9 @@ Feel free to invite other players by right-clicking on their nick in the availab - - - + + + Lobby Lobby @@ -3803,51 +3803,51 @@ Feel free to invite other players by right-clicking on their nick in the availab Auto måde sat: Check eller fold. - - + + Chat Chat - + Closing PokerTH during network game Lukker PokerTH under et netværksspil - + You are the hosting server. Do you want to close PokerTH anyway? Du er vært for serveren. Ønsker du stadig at afslutte PokerTH? - + Really want to exit? - + PokerTH - Close Table? - + PokerTH - Internet Game Message PokerTH - Internet-spil besked - + Attention! Do you really want to leave the current game and go back to the lobby? Advarsel! Ønsker du virkelig at forlade spillet og gå tilbage til lobby'en? - - + + Chat is only available to registered players. - + Spectators @@ -3863,8 +3863,8 @@ og gå tilbage til lobby'en? PokerTH %1 - - + + Kick Smid ud @@ -3883,26 +3883,26 @@ ud fra dette spil? Spiller <b>%1</b> har %2 stemmer imod ham. - - + + Do you want to kick <b>%1</b><br>from this game? Ønsker du at smide <b>%1</b><br>ud fra dette spil? - - - - + + + + <b>%1</b> secs left <b>%1</b> sekunder tilbage - + vote Stem - + votes Stemmer @@ -3915,14 +3915,14 @@ ud fra dette spil? Du har <b>%1</b> %2 imod dig.<br><b>%3</b> stemmer nødvendige for udsmidning. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Spiller <b>%1</b> er <b>%2</b> %3<br>imod ham. <b>%4</b> stemme(r) nødvendige for udsmidning. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Du har <b>%1</b> %2 imod dig.<br><b>%3</b> stemme(r) nødvendige for udsmid. @@ -4299,48 +4299,48 @@ Would you like to overwrite ? Lokalt spil indstillinger - + Number of players: Antal spillere: - + Start Cash: Start beløb: - + $ kr - + Blinds Blinds - + Use saved blinds settings Brug gemte blind-indstillinger - + OK - + Change blinds settings ... Skift blinds-indstillinger ... - + Game Speed: Spilhastighed: diff --git a/ts/pokerth_es.ts b/ts/pokerth_es.ts index 73241147..eff087b0 100644 --- a/ts/pokerth_es.ts +++ b/ts/pokerth_es.ts @@ -5753,8 +5753,8 @@ Si el servidor está detrás de un enrutador NAT, asegúrese de que el puerto de Esta partida está llena. - - + + Chat Charla @@ -5817,12 +5817,12 @@ Seleccione otro. El servidor está desconectado por mantenimiento. Inténtelo de nuevo más tarde. - + Closing PokerTH during network game Cerrando PokerTH durante una partida en red - + You are the hosting server. Do you want to close PokerTH anyway? Usted está alojando la partida. ¿Seguro que desea cerrar PokerTH? @@ -5846,9 +5846,9 @@ Seleccione otro. - - - + + + Lobby Sala @@ -5857,12 +5857,12 @@ Seleccione otro. Ha ocurrido un error interno. Informe al administrador en la sala de charla. - + PokerTH - Internet Game Message PokerTH - Mensaje de partida en Internet - + Attention! Do you really want to leave the current game and go back to the lobby? ¿Seguro que desea abandonar la partida actual @@ -5934,53 +5934,53 @@ Asegúrese de que está conectado a Internet. Probabilidad - + Really want to exit? ¿Seguro que desea salir? - + PokerTH - Close Table? PokerTH - ¿Cerrar mesa? - - + + Kick Expulsar - - + + Do you want to kick <b>%1</b><br>from this game? ¿Desea expulsar a <b>%1</b><br>de esta partida? - - - - + + + + <b>%1</b> secs left quedan <b>%1</b> segundos - + vote voto - + votes votos - - + + Chat is only available to registered players. La charla sólo está disponible para usuarios registrados. - + Spectators Espectadores @@ -6007,14 +6007,14 @@ Si está ausente temporalmente, puede utilizar el modo "ausente" en el Usted tiene <b>%1</b> %2 en contra.<br>Son necesarios <b>%3</b> para expulsarle. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. El jugador <b>%1</b> tiene <b>%2</b> %3<br>en contra. Son necesarios <b>%4</b> votos para la expulsión. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Tiene <b>%1</b> %2 en contra.<br>Son necesarios <b>%3</b> votos para la expulsión. @@ -6435,13 +6435,13 @@ Would you like to overwrite ? Opciones de la partida local - + Game Speed: Velocidad del juego: - + Start Cash: Dinero inicial: @@ -6451,7 +6451,7 @@ Would you like to overwrite ? Postura mínima: - + Number of players: Número de jugadores: @@ -6461,30 +6461,30 @@ Would you like to overwrite ? Manos antes de subir la postura mínima: - + Blinds Ciegas - + Use saved blinds settings Utilizar configuración guardada de ciegas - + OK Aceptar - + Change blinds settings ... Cambiar configuración de ciegas... - + $ $ diff --git a/ts/pokerth_fi.ts b/ts/pokerth_fi.ts index 4caf84f7..c6dba456 100644 --- a/ts/pokerth_fi.ts +++ b/ts/pokerth_fi.ts @@ -3958,9 +3958,9 @@ Valitse toinen nimi. - - - + + + Lobby Aula @@ -4171,28 +4171,28 @@ Valitse toinen nimi. Auto-tila asetettu: Passaa tai luovuta. - - + + Chat Chat - + Closing PokerTH during network game Suljetaan PokerTH verkkopelin aikana - + You are the hosting server. Do you want to close PokerTH anyway? Ylläpidät palvelinta. Haluatko silti sulkea PokerTH:n? - + PokerTH - Internet Game Message PokerTH - Internet-peliviesti - + Attention! Do you really want to leave the current game and go back to the lobby? Huomio! Haluatko todella jättää nykyisen pelin @@ -4264,53 +4264,53 @@ Varmista, että olet yhdistetty suoraan internetiin. Todennäköisyys - + Really want to exit? Haluatko varmasti poistua? - + PokerTH - Close Table? PokerTH - Sulje pöytä? - - + + Kick Potkaise - - + + Do you want to kick <b>%1</b><br>from this game? Haluatko potkaista <b>%1</b><br>tästä pelistä? - - - - + + + + <b>%1</b> secs left <b>%1</b> sekunttia jäljellä - + vote ääni - + votes ääntä - - + + Chat is only available to registered players. Chat on saatavilla vain rekistöröityneille pelaajille. - + Spectators @@ -4323,14 +4323,14 @@ Varmista, että olet yhdistetty suoraan internetiin. Sinulla on <b>%1</b> %2 itseäsi vastaan. <br><b>%3</b> ääntä tarvitaan potkaisuun. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Pelaajalla <b>%1</b> on <b>%2</b> %3<br>häntä vastaan. <b>%4</b> ääntä tarvitaan potkaisuun. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Sinulla on <b>%1</b> %2 itseäsi vastaan.<br><b>%3</b> ääntä tarvitaan potkaisuun. @@ -4725,48 +4725,48 @@ Korvataanko vanha? Paikallispelin asetukset - + Number of players: Pelaajien määrä: - + Start Cash: Aloitusraha: - + $ - + Blinds Sokkopanokset - + Use saved blinds settings Käytä tallennettuja sokkopanosasetuksia - + OK - + Change blinds settings ... Muuta sokkopanosasetuksia ... - + Game Speed: Pelin nopeus: diff --git a/ts/pokerth_fr.ts b/ts/pokerth_fr.ts index 957d67c5..117bc28e 100644 --- a/ts/pokerth_fr.ts +++ b/ts/pokerth_fr.ts @@ -5714,8 +5714,8 @@ Si le serveur est derrière un pare-feu, vérifiez que le port a été ouvert et Désolé, la partie est déjà complète. - - + + Chat Tchat @@ -5778,12 +5778,12 @@ Veuillez choisir un autre pseudonyme. Le serveur est arrêté pour maintenance. Veuillez réessayer plus tard. - + Closing PokerTH during network game Fermer PokerTH durant la partie en réseau - + You are the hosting server. Do you want to close PokerTH anyway? Vous hébergez le serveur. Voulez-vous quand même fermer PokerTH ? @@ -5807,9 +5807,9 @@ Veuillez choisir un autre pseudonyme. - - - + + + Lobby Fermer @@ -5818,12 +5818,12 @@ Veuillez choisir un autre pseudonyme. Une erreur interne est survenue. Merci de la signaler à un administrateur sur le chat. - + PokerTH - Internet Game Message PokerTH - Message Partie sur Internet - + Attention! Do you really want to leave the current game and go back to the lobby? Attention ! Voulez-vous vraiment quitter la partie en cours @@ -5895,53 +5895,53 @@ Veuillez vérifier que vous êtes directement connectés à internet.Chance - + Really want to exit? Voulez-vous vraiment quitter ? - + PokerTH - Close Table? PokerTH - Fermer la table ? - - + + Kick Expulser - - + + Do you want to kick <b>%1</b><br>from this game? Voulez-vous expulser <b>%1</b><br>de cette partie ? - - - - + + + + <b>%1</b> secs left <b>%1</b> secondes restantes - + vote vote - + votes votes - - + + Chat is only available to registered players. Le tchat n'est accessible qu'aux joueurs enregistrés. - + Spectators Spectateurs @@ -5968,14 +5968,14 @@ Si vous êtes temporairement occupé, vous pouvez utiliser les options d'ab Vous avez <b>%1</b> %2 contre vous.<br><b>%3</b> votes requis pour l'expulser. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Le joueur <b>%1</b> a <b>%2</b> %3<br> contre lui. <b>%4</b> vote(s) requis pour l'expulsion. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Vous avez <b>%1</b> %2 contre vous.<br><b>%3</b> vote(s) requis pour l'expulsion. @@ -6396,13 +6396,13 @@ Voulez-vous l'écraser ? Paramètres partie solo - + Game Speed: Vitesse : - + Start Cash: Bourse initiale : @@ -6412,7 +6412,7 @@ Voulez-vous l'écraser ? Petite Blind initiale: - + Number of players: Nombre de joueurs : @@ -6422,30 +6422,30 @@ Voulez-vous l'écraser ? Nb de mains avant l'augmentation de la petite blind: - + Blinds Blinds - + Use saved blinds settings Utiliser les préférences pour les blinds - + OK OK - + Change blinds settings ... Modifier les paramètres de blinds ... - + $ $ diff --git a/ts/pokerth_gd.ts b/ts/pokerth_gd.ts index 218f7902..d653eba9 100644 --- a/ts/pokerth_gd.ts +++ b/ts/pokerth_gd.ts @@ -909,7 +909,11 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> @@ -927,7 +931,14 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">GunChleoc – fios@foramnagaidhlig.net</span></p></td></tr></table></body></html> @@ -945,7 +956,7 @@ p, li { white-space: pre-wrap; } Third party libs - + Tasglannan @@ -1474,7 +1485,7 @@ Feuch an tagh thu fear eile! Allow spectators to watch the game - + Ceadaich amhairc @@ -1629,13 +1640,13 @@ Feuch an tagh thu fear eile! Players - Cluicheadairean + Cluicheadairean Spectators - + Amhairc @@ -1819,7 +1830,7 @@ p, li { white-space: pre-wrap; } Spectate - + Amhairc @@ -1875,12 +1886,12 @@ p, li { white-space: pre-wrap; } Admin action ... - + Gnìomh rianachd ... Total kickban - + Toirmeasg slàn @@ -1890,7 +1901,7 @@ p, li { white-space: pre-wrap; } Close game - + Dùin an geama @@ -1970,14 +1981,14 @@ p, li { white-space: pre-wrap; } Players (%1) - + Cluicheadairean (%1) Spectators (%1) - + Amhairc (%1) @@ -3360,12 +3371,13 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a Are you sure you want to close the game: "%1"? - + A bheil thu cinnteach gu bheil thu airson an geama: +"%1" a dhùnadh? Are you sure you want to total kickban the player: "%1"? - + A bheil thu cinnteach gu bheil thu airson an cluicheadair: "%1" a thoirmeasg? @@ -3691,60 +3703,60 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a - - - + + + Lobby Lobaidh - - + + Chat Cabadaich - + Closing PokerTH during network game A' dùnadh PokerTH rè geama lìonraidh - + You are the hosting server. Do you want to close PokerTH anyway? 'S e an t-òstair a th' annad. A bheil thu airson PokerTH a dhùnadh co-dhiù? - + Really want to exit? A bheil thu cinnteach gu bheil thu airson fàgail? - + PokerTH - Close Table? PokerTH - A bheil thu airson am bòrd a dhùnadh? - + PokerTH - Internet Game Message PokerTH - Brath a' gheama eadar-lìn - + Attention! Do you really want to leave the current game and go back to the lobby? An aire! A bheil thu cinnteach gu bheil thu airson an geama seo fhàgail is tilleadh dhan lobaidh? - - + + Chat is only available to registered players. Chan eil a' chabadaich ri làimh ach airson chluicheadairean a' chlàraich. - + Spectators - + Amhairc @@ -3753,44 +3765,44 @@ is tilleadh dhan lobaidh? Seans - - + + Kick Thoir a' bhròg - - + + Do you want to kick <b>%1</b><br>from this game? A bheil thu airson a' bhròg a thoirt dha <b>%1</b><br>on gheama seo? - - - - + + + + <b>%1</b> secs left <b>%1</b> diog air fhàgail - + vote bhòta - + votes bhòtaichean - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Tha <b>%2</b> %3 an aghaidh cluicheadair <b>%1</b>.<br>Tha <b>%4</b> bhòta(ichean) a dhìth gus a' bhròg a thoirt dha. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Tha <b>%1</b> %2 nad aghaidh.<br>Tha <b>%3</b> bhòta(ichean) a dhìth gus am faigh thu a' bhròg. @@ -4008,7 +4020,8 @@ p, li { white-space: pre-wrap; } Could not load server-profiles-file: %1 - + Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a luchdadh: +%1 @@ -4043,7 +4056,8 @@ A bheil thu airson sgrìobhadh thairis air? Could not save server-profiles-file: %1 - + Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a shàbhaladh: +%1 Could not save server-profiles-file: @@ -4157,48 +4171,48 @@ A bheil thu airson sgrìobhadh thairis air? Roghainnean a' gheama ionadail - + Number of players: Àireamh dhe chluicheadairean: - + Start Cash: Airgead tòiseachaidh: - + $ £ - + Blinds Blinds - + Use saved blinds settings Cleachd roghainnean nam blinds air an sàbhaladh - + OK Ceart ma-thà - + Change blinds settings ... Atharraich roghainnean nam blinds ... - + Game Speed: Luaths a' gheama: @@ -4356,7 +4370,7 @@ Feuch an cuir thu a-steach dealbh dligheach! Common - + Coitcheann @@ -4380,13 +4394,13 @@ Feuch an cuir thu a-steach dealbh dligheach! Do not hide avatars of players which are on the ignore list - + Na falaich avataran nan cluicheadairean a tha air an liosta neo-shuime Disable emoticons in the chat - + Cuir samhlaidhean-gnùis à comas sa chabadaich @@ -4612,13 +4626,13 @@ Feuch an cuir thu a-steach dealbh dligheach! Server Password: - + Facal-faire an fhrithealaiche: Allow spectators to watch the game - + Ceadaich dha amhairc coimhead air a' gheama @@ -5273,7 +5287,7 @@ Feuch an cuir thu a-steach seòladh aig liosta nam frithealaichean dligheach! Galician - + Gailìsis @@ -5363,7 +5377,7 @@ Feuch an cuir thu a-steach seòladh aig liosta nam frithealaichean dligheach! Vietnamese - + Bhiet-Namais @@ -5992,33 +6006,34 @@ Cuir am facal-faire a-steach turas eile is feuch ris a-rithist. The game was closed. - + Chaidh an geama a dhùnadh. The game could not be closed. - + Cha b' urrainn dhuinn an geama a dhùnadh. The player was kicked and banned permanently. - + Chaidh a' bhròig a thoirt dhan chluidheadair is a thoirmeasg gu buan. The player was kicked, but could not be banned because it was a guest player. - + Chaidh a' bhròg a thoirt dhan chluicheadair ach dha b' urrainn dhuinn a thoirmeasg oir 's e aoigh a bh' ann. The player was kicked, but could not be banned, because the nick could not be found in the database - + Chaidh a' bhròg a thoirt dhan chluicheadair ach dha b' urrainn dhuinn a thoirmeasg +on nach deach am far-ainm a lorg san stòr-dàta The player could not be found. - + Cha deach an cluicheadair a lorg. diff --git a/ts/pokerth_gl.ts b/ts/pokerth_gl.ts index a52c070b..7ed066e7 100644 --- a/ts/pokerth_gl.ts +++ b/ts/pokerth_gl.ts @@ -3290,57 +3290,57 @@ Para convidar a outros xogadores, prema co botón secundario a súa entrada na l - - - + + + Lobby Sala de espera - - + + Chat Conversa - + Closing PokerTH during network game Pechar PokerTH durante unha partida de rede - + You are the hosting server. Do you want to close PokerTH anyway? A súa máquina está a aloxar a partida de rede. Está seguro de que quere pechar PokerTH? - + Really want to exit? Está seguro de que quere saír? - + PokerTH - Close Table? PokerTH — Pechar o taboleiro - + PokerTH - Internet Game Message PokerTH — Mensaxe dunha partida por internet - + Attention! Do you really want to leave the current game and go back to the lobby? Atención: está seguro de que quere saír da partida actual e volver á sala de espera? - - + + Chat is only available to registered players. Só os xogadores rexistrados poden participar na conversa. - + Spectators @@ -3351,44 +3351,44 @@ and go back to the lobby? Probabilidade - - + + Kick Expulsar - - + + Do you want to kick <b>%1</b><br>from this game? Está seguro de que quere expulsar<br>a<b>%1</b>da partida? - - - - + + + + <b>%1</b> secs left Restan <b>%1</b> segundos. - + vote voto - + votes votos - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Hai <b>%2</b> %3 contra o xogador <b>%1</b>.<br>Necesítanse <b>%4</b> votos para expulsalo. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Hai <b>%1</b> %2 contra vostede.<br>Faltan <b>%3</b> votos para que o expulsen. @@ -3756,48 +3756,48 @@ Would you like to overwrite ? Configuración da partida local - + Number of players: Límite de xogadores: - + Start Cash: Cartos iniciais: - + $ - + Blinds Apostas obrigatorias - + Use saved blinds settings Empregar a configuración local. - + OK Aceptar - + Change blinds settings ... Cambiar a configuración… - + Game Speed: Velocidade da partida: diff --git a/ts/pokerth_gr.ts b/ts/pokerth_gr.ts index 8b7fce98..508ae5cc 100644 --- a/ts/pokerth_gr.ts +++ b/ts/pokerth_gr.ts @@ -3482,9 +3482,9 @@ Please choose another one. - - - + + + Lobby Lobby @@ -3695,28 +3695,28 @@ Please choose a different name. Αυτόματο: Ντούκου ή Πάσο. - - + + Chat Chat - + Closing PokerTH during network game Κλείσιμο PokerTH κατα τη διάρκεια παιχνιδιού σε δίκτυο - + You are the hosting server. Do you want to close PokerTH anyway? Φιλοξενείτε τον server. Θέλετε να κλείσετε το PokerTH? - + PokerTH - Internet Game Message PokerTH - Μήνυμα Παιχνιδιού Internet - + Attention! Do you really want to leave the current game and go back to the lobby? Προσοχή! Θέλετε σίγουρα να φύγετε απ' το παιχνίδι @@ -3734,65 +3734,65 @@ and go back to the lobby? PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. - + Spectators @@ -4577,48 +4577,48 @@ and go back to the lobby? Επιλογές Τοπικού Παιχνιδιού - + Number of players: Αριθμός παιχτών: - + Start Cash: Αρχικό Ποσό: - + $ $ - + Blinds Blinds - + Use saved blinds settings Αποθηκευμένες επιλογές για τα blinds - + OK - + Change blinds settings ... Αλλαγή επιλογών για τα blinds ... - + Game Speed: Ταχύτητα: diff --git a/ts/pokerth_hu.ts b/ts/pokerth_hu.ts index 54cf3615..4abd61cd 100644 --- a/ts/pokerth_hu.ts +++ b/ts/pokerth_hu.ts @@ -4195,8 +4195,8 @@ Ha a szerver NAT router mögött van, akkor bizonyosodj meg róla hogy a port to A kliens játékos száma érvénytelen. - - + + Chat Csevegés @@ -4221,12 +4221,12 @@ Ha a szerver NAT router mögött van, akkor bizonyosodj meg róla hogy a port to F1 - All-In | F2 -Emel/Ráemel | F3 - Passz/Tart | F4 - Eldob - + Closing PokerTH during network game PokerTH bezárása hálózati játék alatt - + You are the hosting server. Do you want to close PokerTH anyway? Te vagy a hálózati kiszolgáló. Biztosan bezárod az alkalmazást? @@ -4238,19 +4238,19 @@ Ha a szerver NAT router mögött van, akkor bizonyosodj meg róla hogy a port to - - - + + + Lobby Társalgó - + PokerTH - Internet Game Message PokerTH – Internetes játék üzenetei - + Attention! Do you really want to leave the current game and go back to the lobby? Figyelem! Biztosan elhagyod az aktuális játékot, @@ -4268,53 +4268,53 @@ and go back to the lobby? PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Kidobás - - + + Do you want to kick <b>%1</b><br>from this game? Ki akarod dobni <b>%1</b>-t<br>a játékból? - - - - + + + + <b>%1</b> secs left <b>%1</b> mp. maradt - + vote szavazat - + votes szavazat - - + + Chat is only available to registered players. A csevegés csak regisztrált játékosok számára érhető el. - + Spectators @@ -4341,14 +4341,14 @@ Ha hosszabbtávon nem vagy gépközelben használd a „távol” kapcsolót.<b>%1</b> %2 gyűlt össze ellened.<br><b>%3</b> szavazat kell a kidobáshoz. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. <b>%1</b> játékos elllen <b>%2</b> %3<br>gyűlt össze. <b>%4</b> szavat kell a kidobáshoz. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. <b>%1</b> %2 gyűlt össze ellened.<br><b>%3</b> szavazat kell a kidobáshoz. @@ -4760,13 +4760,13 @@ Would you like to overwrite ? Helyi játék beállításai - + Game Speed: Játék sebessége: - + Start Cash: Kezdő zseton: @@ -4776,7 +4776,7 @@ Would you like to overwrite ? Kis vak: - + Number of players: Játékosok száma: @@ -4786,30 +4786,30 @@ Would you like to overwrite ? Vakemelés előtti körök száma: - + Blinds Vaktétek - + Use saved blinds settings Elmentett vakbeállítások használata - + OK - + Change blinds settings ... Vaktétek beállítása… - + $ $ diff --git a/ts/pokerth_it.ts b/ts/pokerth_it.ts index ac8843f7..447db6aa 100644 --- a/ts/pokerth_it.ts +++ b/ts/pokerth_it.ts @@ -5595,7 +5595,7 @@ Assicurarsi che tutti i giocatori abbiano la stessa versione di PokerTH.E' stata specificata una porta non valida (le porte 0-1023 non sono permesse). - + Attention! Do you really want to leave the current game and go back to the lobby? Attenzione! Vuoi veramente abbandonare la partita corrente @@ -5614,13 +5614,13 @@ e tornare al prepartita? Bind fallito - selezionare una porta diversa. - - + + Chat Chat - + Closing PokerTH during network game Si sta chiudendo PokerTH durante una partita in rete @@ -5721,9 +5721,9 @@ Reinserire la password e riprovare. - - - + + + Lobby Prepartita @@ -5745,7 +5745,7 @@ Reinserire la password e riprovare. PokerTH %1 - Il Motore Texas Holdem Open-Source - + PokerTH - Internet Game Message PokerTH - Messaggio partita su Internet @@ -5880,7 +5880,7 @@ Visitare l'URL <a href="http://www.pokerth.net/" target=" Impossibile partecipare - la partita è già iniziata. - + You are the hosting server. Do you want to close PokerTH anyway? Stai facendo da server. Vuoi comunque chiudere PokerTH? @@ -5970,53 +5970,53 @@ Assicurarsi di essere connessi direttamente ad internet. Probabilità - + Really want to exit? Desideri veramente uscire? - + PokerTH - Close Table? PokerTH - Chiudere il tavolo? - - + + Kick Espelli - - + + Do you want to kick <b>%1</b><br>from this game? Vuoi espellere <b>%1</b><br>da questa partita? - - - - + + + + <b>%1</b> secs left <b>%1</b> sec. rimasti - + vote voto - + votes voti - - + + Chat is only available to registered players. La chat è disponibile solamente ai giocatori registrati. - + Spectators Spettatori @@ -6043,14 +6043,14 @@ Se sei temporaneamente assente, puoi utilizzare l'apposito strumento " Hai <b>%1</b> %2 contro di te.<br><b>%3</b> voti necessari per essere espulso. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Il giocatore <b>%1</b> ha <b>%2</b> %3<br>contro di lui. <b>%4</b> voto/i necessari all'espulsione. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Hai <b>%1</b> %2 contro di te.<br><b>%3</b> voto/i necessari all'espulsione. @@ -6468,31 +6468,31 @@ Desideri sovrascriverlo? newGameDialog - + $ $ - + Blinds blind - + Change blinds settings ... Cambia le impostazioni dei blind... - + Game Speed: Velocità: - + OK OK @@ -6506,7 +6506,7 @@ Desideri sovrascriverlo? Impostazioni locali - + Number of players: Numero di giocatori: @@ -6516,7 +6516,7 @@ Desideri sovrascriverlo? Small Blind: - + Start Cash: Contante iniziale: @@ -6528,7 +6528,7 @@ Desideri sovrascriverlo? Inizia una partita locale - + Use saved blinds settings Utilizza impostazioni dei blind salvate diff --git a/ts/pokerth_jp.ts b/ts/pokerth_jp.ts index ce6078c7..b4f9847b 100644 --- a/ts/pokerth_jp.ts +++ b/ts/pokerth_jp.ts @@ -3376,58 +3376,58 @@ Feel free to invite other players by right-clicking on their nick in the availab - - - + + + Lobby ロビー - - + + Chat チャット - + Closing PokerTH during network game ネットワークゲーム中に PokerTH を閉じる - + You are the hosting server. Do you want to close PokerTH anyway? あなたはサーバーをホストしています。本当に PokerTH を閉じますか? - + Really want to exit? 本当に退出しますか? - + PokerTH - Close Table? PokerTH - テーブルを閉じますか? - + PokerTH - Internet Game Message PokerTH - インターネットゲームメッセージ - + Attention! Do you really want to leave the current game and go back to the lobby? 注意! 本当にこのゲームを離れ、ロビーに戻ってもよろしいですか? - - + + Chat is only available to registered players. チャットは登録したプレイヤーのみ使用することができます。 - + Spectators @@ -3452,45 +3452,45 @@ If you are temporarily away, you can use the "away" tools in the tool チャンス - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? <b>%1</b><br>をこのゲームから kick しますか? - - - - + + + + <b>%1</b> secs left 残り <b>%1</b> 秒 - + vote 投票 - + votes 投票 - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. I dont know what %1-%4 will display... - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. I dont know what %1-%4 will display... @@ -3876,48 +3876,48 @@ Would you like to overwrite ? ローカルゲーム設定 - + Number of players: プレイヤー数: - + Start Cash: 開始金額: - + $ - + Blinds ブラインド - + Use saved blinds settings 保存されたブラインド設定を使用 - + OK - + Change blinds settings ... ブラインド設定を変更... - + Game Speed: ゲームスピード: diff --git a/ts/pokerth_lt.ts b/ts/pokerth_lt.ts index a0c8db49..aa93873b 100644 --- a/ts/pokerth_lt.ts +++ b/ts/pokerth_lt.ts @@ -3695,58 +3695,58 @@ Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant j - - - + + + Lobby Fojė - - + + Chat Pokalbis - + Closing PokerTH during network game Uždaromas PokerTH per tinklo žaidimą - + You are the hosting server. Do you want to close PokerTH anyway? Jūs esate prieglobos serveris. Ar norite vistiek uždaryti PokerTH? - + Really want to exit? Ar tikrai norite išeiti? - + PokerTH - Close Table? PokerTH - užverti lentelę? - + PokerTH - Internet Game Message PokerTH - žaidimo internetu žinutė - + Attention! Do you really want to leave the current game and go back to the lobby? Dėmesio! Ar tikrai norite palikti esamą žaidimą ir grįžti į fojė? - - + + Chat is only available to registered players. Pokalbis yra prieinamas tik užsiregistravusiems žaidėjams. - + Spectators @@ -3771,44 +3771,44 @@ Jei esate laikinai atsitraukęs, galite panaudoti "išėjęs" priemon Keisti - - + + Kick Pašalinti - - + + Do you want to kick <b>%1</b><br>from this game? Ar norite pašalinti <b>%1</b><br>iš šio žaidimo? - - - - + + + + <b>%1</b> secs left <b>%1</b> sek. liko - + vote balsavimas - + votes balsai - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Žaidėjas <b>%1</b> yra <b>%2</b> %3<br>prieš jį. <b>%4</b> balso ar balsų reikia pašalinimui. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Jūs turite <b>%1</b> %2 prieš tave.<br><b>%3</b> balso ar balsų reikia pašalinimui. @@ -4195,48 +4195,48 @@ Galbūt norėtumėte pakeisti ? Vietinio žaidimo nuostatos - + Number of players: Žaidėjų skaičius: - + Start Cash: Pradiniai pinigai: - + $ $ - + Blinds Statymai - + Use saved blinds settings Naudoti įrašytas statymų nuostatas - + OK - + Change blinds settings ... Keisti statymų nuostatas ... - + Game Speed: Žaidimo greitis: diff --git a/ts/pokerth_nl.ts b/ts/pokerth_nl.ts index 57e1e0fe..add35746 100644 --- a/ts/pokerth_nl.ts +++ b/ts/pokerth_nl.ts @@ -5665,8 +5665,8 @@ Als de server zich achter een NAT-router bevindt, controleer dan daar of port fo F1 - Betten/Raisen | F2 - Checken/Callen | F3 - Folden/All-In - - + + Chat Chat @@ -5750,12 +5750,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Deze bètarelease van PokerTH is te oud.Ga naar <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> en download de nieuwste versie. - + Closing PokerTH during network game PokerTH afsluiten tijdens netwerkspel - + You are the hosting server. Do you want to close PokerTH anyway? U bent de server van dit spel. Wilt u PokerTH toch sluiten? @@ -5774,19 +5774,19 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& - - - + + + Lobby Lobby - + PokerTH - Internet Game Message PokerTH - Bericht van internetspel - + Attention! Do you really want to leave the current game and go back to the lobby? Opgelet! Wilt u werkelijk het huidige spel verlaten @@ -5867,53 +5867,53 @@ Zorg ervoor dat u een directe verbinding met internet hebt. Kansen - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Verwijderen - - + + Do you want to kick <b>%1</b><br>from this game? Wilt u <b>%1</b><br>uit dit spel verwijderen? - - - - + + + + <b>%1</b> secs left nog <b>%1</b> sec. - + vote stem - + votes stemmen - - + + Chat is only available to registered players. Alleen geregistreerde spelers kunnen chatten. - + Spectators @@ -5940,14 +5940,14 @@ Als u tijdelijk afwezig bent, kunt u de hulpmiddelen gebruiken in de toolbox Afw U heeft <b>%1</b> %2 tegen zich.<br><b>%3</b> stemmen zijn nodig voor verwijdering. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. <b>%2</b> %3 uitgebracht tegen <b>%1</b>.<br>Nog <b>%4</b> stem(men) nodig voor verwijderen. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. U heeft <b>%1</b> %2 tegen zich.<br> Nog <b>%3</b> stem(men) nodig voor verwijderen. @@ -6378,13 +6378,13 @@ Wilt u dat profiel overschrijven? Instellingen van lokaal spel - + Game Speed: Speelsnelheid: - + Start Cash: Startgeld: @@ -6394,7 +6394,7 @@ Wilt u dat profiel overschrijven? Kleine blind: - + Number of players: Aantal spelers: @@ -6408,30 +6408,30 @@ Wilt u dat profiel overschrijven? Rondes voordat de blinds stijgen: - + Blinds Blinds - + Use saved blinds settings Opgeslagen instellingen gebruiken voor de blinds - + OK - + Change blinds settings ... Instellingen van de blinds wijzigen ... - + $ $ diff --git a/ts/pokerth_no.ts b/ts/pokerth_no.ts index d445ae3e..477910b0 100644 --- a/ts/pokerth_no.ts +++ b/ts/pokerth_no.ts @@ -3836,18 +3836,18 @@ Hvis tjeneren er bak en NAT-ruter, forsikre deg om at videresending er satt opp Ugyldig antall spillere. - - + + Chat Prat - + Closing PokerTH during network game - + You are the hosting server. Do you want to close PokerTH anyway? @@ -3859,19 +3859,19 @@ Hvis tjeneren er bak en NAT-ruter, forsikre deg om at videresending er satt opp - - - + + + Lobby - + PokerTH - Internet Game Message - + Attention! Do you really want to leave the current game and go back to the lobby? @@ -3888,65 +3888,65 @@ and go back to the lobby? - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Kast ut - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. - + Spectators @@ -4330,13 +4330,13 @@ Would you like to overwrite ? Innstillinger for lokalt spill - + Game Speed: Spill-hastighet: - + Start Cash: Startkapital: @@ -4346,7 +4346,7 @@ Would you like to overwrite ? Small Blind: - + Number of players: Antall spillere: @@ -4356,30 +4356,30 @@ Would you like to overwrite ? Antall henter før "Small Blind" økes: - + Blinds - + Use saved blinds settings - + OK - + Change blinds settings ... - + $ diff --git a/ts/pokerth_pl.ts b/ts/pokerth_pl.ts index 11b4e2e5..4c6ffae9 100644 --- a/ts/pokerth_pl.ts +++ b/ts/pokerth_pl.ts @@ -4109,8 +4109,8 @@ Proszę wybrać inny nick. Niestety ten serwer jest w tej chwili pełny. - - + + Chat Chat @@ -4195,12 +4195,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Proszę wejdź na stronę <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> i śćiągnij ostatnią wersję. - + Closing PokerTH during network game Zamknięcie PokerTH podczas gry siecowej - + You are the hosting server. Do you want to close PokerTH anyway? Jesteś gospodarzem. Chcesz naprawdę zamknąć PokerTH? @@ -4212,9 +4212,9 @@ Proszę wejdź na stronę <a href="http://www.pokerth.net/" target= - - - + + + Lobby Chat @@ -4235,12 +4235,12 @@ Proszę wejdź na stronę <a href="http://www.pokerth.net/" target= Ta wersja beta PokerTH jest przestarzała.<br>Proszę odwiedzić stronę <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> i zainstalować najnowszą wersję. - + PokerTH - Internet Game Message PokerTH - Komunikat serwera gier online - + Attention! Do you really want to leave the current game and go back to the lobby? Uwaga! Czy na pewno chcesz opuścić tę grę @@ -4258,65 +4258,65 @@ i powrócić do chatu? PokerTH %1 - + Really want to exit? Na pewno wyjść? - + PokerTH - Close Table? PokerTH - Zamknąć stół? - - + + Kick Wyrzuć - - + + Do you want to kick <b>%1</b><br>from this game? Czy chcesz wyrzucić gracza %1 z tej gry? - - - - + + + + <b>%1</b> secs left pozostało <b>%1</b> sekund - + vote głos - + votes głosy(-ów) - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Gracz <b>%1</b> zebrał <b>%2</b> %3<br>przeciwko sobie. <b>%4</b> głosów potrzebnych do wyrzucenia. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Zebrałeś <b>%1</b> %2 przeciwko sobie.<br><b>%3</b> głosów potrzebnych do wyrzucenia. - - + + Chat is only available to registered players. Chat jest dostępny dla zarejestrowanych graczy. - + Spectators Oglądający @@ -4732,48 +4732,48 @@ Chzesz go prezepisać ? Ustawienia gier lokalnych - + Game Speed: Szybkość gry: - + Number of players: Liczba graczy: - + Start Cash: Początkowe żetony: - + Blinds Ciemne - + Use saved blinds settings Używaj zapisanych ustawień ciemnych - + OK OK - + Change blinds settings ... Zmień ustawienia ciemnych ... - + $ $ diff --git a/ts/pokerth_ptpt.ts b/ts/pokerth_ptpt.ts index 87524ba8..f878218d 100644 --- a/ts/pokerth_ptpt.ts +++ b/ts/pokerth_ptpt.ts @@ -3724,58 +3724,58 @@ Sinta-se à vontade para convidar outros jogadores através da lista dos "n - - - + + + Lobby Sala - - + + Chat "Chat" - + Closing PokerTH during network game Fechando Poker TH durante um jogo de rede - + You are the hosting server. Do you want to close PokerTH anyway? Você está a funcionar como servidor. Tem acerteza que quer fechar? - + Really want to exit? Tem a certeza que quer sair? - + PokerTH - Close Table? PokerTH - Fechar mesa? - + PokerTH - Internet Game Message Poket TH - Mensagem do jogo em rede - + Attention! Do you really want to leave the current game and go back to the lobby? Atenção! Pretende sair do jogo atual e voltar para a sala? - - + + Chat is only available to registered players. O "chat" só está disponível para jogadores registados. - + Spectators @@ -3800,44 +3800,44 @@ Se vai ficar ausente, utilize o botão "ausente" na caixa de ferrament Hipóteses - - + + Kick Expulsar - - + + Do you want to kick <b>%1</b><br>from this game? Deseja expulsar o jogador <b>%1</b><br> deste jogo? - - - - + + + + <b>%1</b> secs left faltam <b>%1</b> segundos - + vote voto - + votes votos - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. O jogador <b>%1</b> tem <b>%2</b> %3<br>contra ele. <b>%4</b> voto(s) precisos para a expulsão. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Você tem <b>%1</b> %2 contra si.<br><b>%3</b> voto(s) precisos para a expulsão. @@ -4223,48 +4223,48 @@ Pretende sobrescrevê-lo? Definições do jogo local - + Number of players: Número de jogadores: - + Start Cash: Dinheiro inicial: - + $ $ - + Blinds "Blinds" - + Use saved blinds settings Utilizar definições de "blinds" gravadas - + OK - + Change blinds settings ... Alterar definições de "blinds"... - + Game Speed: Velocidade do jogo: diff --git a/ts/pokerth_ru.ts b/ts/pokerth_ru.ts index 495f6020..30056215 100644 --- a/ts/pokerth_ru.ts +++ b/ts/pokerth_ru.ts @@ -4544,8 +4544,8 @@ Please choose a different name. F1 - Ставка/Повысить | F2 - Пропуск/Ответить | F3 - Сбросить/Ва-банк - - + + Chat Чат @@ -4630,12 +4630,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Зайдите на <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> и скачайте самую новую версию. - + Closing PokerTH during network game Закрытие PokerTH во время сетевой игры - + You are the hosting server. Do you want to close PokerTH anyway? Вы являетесь сервером игры. Вы точно хотите закрыть PokerTH? @@ -4659,9 +4659,9 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& - - - + + + Lobby Общая комната @@ -4670,12 +4670,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Произошла ошибка при обработке аватары. Пожалуйста, сообщите об этом администратору в общей комнате. - + PokerTH - Internet Game Message PokerTH - Сообщение игры в интернете - + Attention! Do you really want to leave the current game and go back to the lobby? Внимание! Вы действительно хотите покинуть текущую игру @@ -4693,65 +4693,65 @@ and go back to the lobby? PokerTH %1 - + Really want to exit? Действительно хотите выйти? - + PokerTH - Close Table? PokerTH - Покинуть стол? - - + + Kick Отключить - - + + Do you want to kick <b>%1</b><br>from this game? Вы действительно хотите исключить <b>%1</b><br>из игры? - - - - + + + + <b>%1</b> secs left <b>%1</b>сек. осталось - + vote голос - + votes голосов - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Игрок <b>%1</b> проголосовал против <b>%2</b> %3<br>. <b>%4</b> голоса(ов) необходимо для отключения. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. У вас <b>%1</b> %2 против вас.<br><b>%3</b> голоса(ов) необходимо для отключения. - - + + Chat is only available to registered players. Чат доступен только для зарегистрированных игроков. - + Spectators @@ -5182,25 +5182,25 @@ Would you like to overwrite ? Настройки локальной игры - + Game Speed: Скорость игры: - + Number of players: Количество игроков: - + Start Cash: Начальная сумма: - + OK @@ -5217,25 +5217,25 @@ Would you like to overwrite ? Количество партий для повышения ставки: - + Blinds Ставки - + Use saved blinds settings Использовать сохраненные настройки ставок - + Change blinds settings ... Изменить настройки ставок... - + $ $ diff --git a/ts/pokerth_sk.ts b/ts/pokerth_sk.ts index 5cc9b37a..fdbdf066 100644 --- a/ts/pokerth_sk.ts +++ b/ts/pokerth_sk.ts @@ -4538,8 +4538,8 @@ Prosím, vyberte si iné meno. Ľutujem, táto hra je už plná. - - + + Chat Chat @@ -4624,12 +4624,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Prosím navštívte <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> a stiahnite najnovšiu verziu. - + Closing PokerTH during network game Zatváram PokerTH počas sieťovej hry - + You are the hosting server. Do you want to close PokerTH anyway? Vy ste hosťujúci server. Chcete ukončiť PokerTH i napriek tomu? @@ -4653,9 +4653,9 @@ Prosím navštívte <a href="http://www.pokerth.net/" target=" - - - + + + Lobby Lobby @@ -4664,12 +4664,12 @@ Prosím navštívte <a href="http://www.pokerth.net/" target=" Došlo k internej chybe avatara. Prosím nahláste ju adminovi v lobby chate. - + PokerTH - Internet Game Message PokerTH - Správa hry na internete - + Attention! Do you really want to leave the current game and go back to the lobby? Upozornenie! Určite chcete opustiť momentálnu hru @@ -4741,53 +4741,53 @@ Uistite sa, prosím, že ste pripojený priamo na internet. Šanca - + Really want to exit? Naozaj chcete ukončiť? - + PokerTH - Close Table? PokerTH - Uzatvoriť stôl? - - + + Kick Vykopnúť - - + + Do you want to kick <b>%1</b><br>from this game? Želáte si vykopnúť <b>%1</b><br>z tejto hry? - - - - + + + + <b>%1</b> secs left zostáva <b>%1</b> sekúnd - + vote hlas - + votes hlasy(ov) - - + + Chat is only available to registered players. Chat je dostupný len registrovaným hráčom. - + Spectators @@ -4814,14 +4814,14 @@ Ak ste dočasne mimo, môžete použiť nástroje "preč" v nástrojov Proti vám bol(o) <b>%1</b> %2.<br><b>%3</b> hlasov je treba na vykopnutie. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Hráč <b>%1</b> má <b>%2</b> %3<br>proti. Na vykopnutie je potrebných <b>%4</b> hlasy(ov). - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Je proti vám <b>%1</b> %2. <br><b>Na vykopnutie je potrebných <b>%3</b> hlasy(ov). @@ -5240,25 +5240,25 @@ Prajete si ho prepísať? Nastavenia lokálnej hry - + Game Speed: Rýchlosť hry: - + Number of players: Počet hráčov: - + Start Cash: Úvodná hotovosť: - + OK @@ -5271,25 +5271,25 @@ Prajete si ho prepísať? Počet rozdaní pred zvýšením malej stávky naslepo: - + Blinds Stávky - + Use saved blinds settings Použiť uložené nastavenia stávok - + Change blinds settings ... Zmeniť nastavenia stávok... - + $ $ diff --git a/ts/pokerth_sv.ts b/ts/pokerth_sv.ts index ef813056..c095bc6b 100644 --- a/ts/pokerth_sv.ts +++ b/ts/pokerth_sv.ts @@ -3484,9 +3484,9 @@ Välj ett nytt namn. - - - + + + Lobby Lobby @@ -3697,28 +3697,28 @@ Vänligen välj ett nytt namn. Automatiskt läge valt: Pass eller Lägg. - - + + Chat Chatt - + Closing PokerTH during network game Stänger PokerTH under nätverksspel - + You are the hosting server. Do you want to close PokerTH anyway? Du är värdserver för spelet, vill du stänga ner i alla fall? - + PokerTH - Internet Game Message PokerTH - Internetspels-meddelande - + Attention! Do you really want to leave the current game and go back to the lobby? OBS! Vill du verkligen lämna det nuvarande spelet @@ -3736,65 +3736,65 @@ och återvända till lobbyn? PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. - + Spectators @@ -4168,48 +4168,48 @@ Vill du skriva över den? Inställningar för Lokalt Spel - + Number of players: Antal spelare: - + Start Cash: Inköp: - + $ SEK - + Blinds Mörkar - + Use saved blinds settings Använd tidigare mörkar - + OK - + Change blinds settings ... Ändra mörkar ... - + Game Speed: Hastighet: diff --git a/ts/pokerth_ta.ts b/ts/pokerth_ta.ts index b57ac4ff..e52cc8eb 100644 --- a/ts/pokerth_ta.ts +++ b/ts/pokerth_ta.ts @@ -3475,58 +3475,58 @@ You can invite other players with right-click on their nick in the left availabl - - - + + + Lobby வரவேற்ப்பறை - - + + Chat உரையாடல் - + Closing PokerTH during network game விளையாட்டு வலையில் போகர்டேஹோ வை மூடும் பொழுது - + You are the hosting server. Do you want to close PokerTH anyway? நீங்கள்தான் இந்த விளையாட்டை ஆரம்பித்தீர்கள். நீங்கள் போகர்டேஹோ வை நிச்சயம் மூட வேண்டுமா? - + Really want to exit? - + PokerTH - Close Table? - + PokerTH - Internet Game Message போகர்டேஹோ - இணையதள விளையாட்டு செய்தி - + Attention! Do you really want to leave the current game and go back to the lobby? கவனிக்க! தற்சமயம் விளையாடும் விளையாட்டிலிருந்து நிச்சயம் நீங்கள் விலகி வரவேர்ப்பரைக்கு திரும்பி செல்ல விரும்புகிறீர்களா? - - + + Chat is only available to registered players. - + Spectators @@ -3537,44 +3537,44 @@ and go back to the lobby? ஜெயிக்கும் வாய்ப்பு - - + + Kick துரத்து - - + + Do you want to kick <b>%1</b><br>from this game? நீங்கள் <b>%1</b>என்பவரை <br>விளையாட்டிலிருந்து துரத்த விரும்புகிறீர்களா? - - - - + + + + <b>%1</b> secs left <b>%1</b> நொடிகள் மீதமுள்ளது - + vote ஒட்டு - + votes ஒட்டுகள் - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. விளையாட்டு வீரர் <b>%1</b> என்பவருக்கு எதிராக <b>%2</b> %3<br>உள்ளது. அவரை துரத்த <b>%4</b> ஓட்டுகள் தேவை. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. உங்களுக்கு எதிராக <b>%1</b> %2 உள்ளது.<br>உங்களை வெளியேற்ற <b>%3</b> ஓட்டுகள் தேவை. @@ -3958,48 +3958,48 @@ Would you like to overwrite ? உள்ளக கணினி விளையாட்டின் அமைப்பு - + Number of players: விளையாட்டு வீரர்களின் எண்ணிக்கை: - + Start Cash: பணம் செலுத்த ஆரம்பி: - + $ - + Blinds பந்தயத்தொகை - + Use saved blinds settings முன்பு பயன்படுத்திய பந்தயத்தொகை அமைப்பை உபயோகி - + OK - + Change blinds settings ... பந்தயத்தொகை அமைப்பை மாற்றுக ... - + Game Speed: விளையாட்டின் வேகம்: diff --git a/ts/pokerth_tr.ts b/ts/pokerth_tr.ts index 37ff02a1..91b58939 100644 --- a/ts/pokerth_tr.ts +++ b/ts/pokerth_tr.ts @@ -4002,8 +4002,8 @@ Eğer sunucu bir NAT-Router arkasındaysa, sunucu tarafındaki bağlantı noktas Oto kip ayarlı: denetleyin veya katlayın. - - + + Chat Sohbet @@ -4076,12 +4076,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Lütfen <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> adresinden son sürümü indiriniz. - + Closing PokerTH during network game Ağ oyunu sırasında PokerTH kapatılıyor - + You are the hosting server. Do you want to close PokerTH anyway? Siz ana sunucusunuz. Yinede PokerTH programını kapatmak istiyor musunuz? @@ -4105,9 +4105,9 @@ Lütfen <a href="http://www.pokerth.net/" target="_blank" - - - + + + Lobby Kulis @@ -4116,12 +4116,12 @@ Lütfen <a href="http://www.pokerth.net/" target="_blank" İçsel bir simge hatası algılandı. Lütfen bunu kulis söyleşisinde yöneticiye iletin. - + PokerTH - Internet Game Message PokerTH - Internet Oyunu Mesajı - + Attention! Do you really want to leave the current game and go back to the lobby? Dikkat! Bu oyunu gerçekten bırakmak @@ -4139,65 +4139,65 @@ ve lobiye dönmek istiyormusunuz? PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Tekmele - - + + Do you want to kick <b>%1</b><br>from this game? <b>%1</b><br> kişisini oyundan atmak istiyormusunuz? - - - - + + + + <b>%1</b> secs left <b>%1</b> saniye kaldı - + vote oy - + votes oylar - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. - - + + Chat is only available to registered players. - + Spectators @@ -4598,13 +4598,13 @@ Would you like to overwrite ? Yerel Oyun Ayarları - + Game Speed: Oyun Hızı: - + Start Cash: Ödemeyi Başlat: @@ -4614,7 +4614,7 @@ Would you like to overwrite ? Small Blind: - + Number of players: Oyuncu Sayısı: @@ -4624,30 +4624,30 @@ Would you like to overwrite ? Antall henter før "Small Blind" økes: - + Blinds Teklifler - + Use saved blinds settings Kayıtlı teklif ayarlarını kullan - + OK - + Change blinds settings ... Teklif ayarlarını değiştir ... - + $ $ diff --git a/ts/pokerth_vi.ts b/ts/pokerth_vi.ts index d4d9ee5e..8e1d391d 100644 --- a/ts/pokerth_vi.ts +++ b/ts/pokerth_vi.ts @@ -3542,58 +3542,58 @@ Hãy mời những người chơi khác bằng cách chọn chuột phải vào - - - + + + Lobby Phòng chờ hệ thống - - + + Chat Tán gẫu - + Closing PokerTH during network game Đóng lại chương trình sau khi chơi xong màn chơi online - + You are the hosting server. Do you want to close PokerTH anyway? Bạn đang là người chủ của màn chơi này. Bạn có muốn thoát chương trình không? - + Really want to exit? Bạn có thật sự muốn thoát? - + PokerTH - Close Table? PokerTH - Đóng lại màn chơi này? - + PokerTH - Internet Game Message PokerTH - Thông báo của màn chơi online - + Attention! Do you really want to leave the current game and go back to the lobby? Chú ý! Bạn có thật sự muốn thoát ra khỏi màn chơi này và quay lại phòng chờ của hệ thống không? - - + + Chat is only available to registered players. Phần tán gẫu/chat chỉ dành riêng cho các người chơi đã đăng ký. - + Spectators @@ -3604,44 +3604,44 @@ và quay lại phòng chờ của hệ thống không? Cơ hội - - + + Kick Đuổi - - + + Do you want to kick <b>%1</b><br>from this game? Bạn có thật sự muốn đuổi <b>%1</b><br> khỏi màn chơi này không? - - - - + + + + <b>%1</b> secs left còn lại <b>%1</b> giây nữa - + vote bỏ phiếu - + votes bỏ phiếu - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Người chơi <b>%1</b> đã <b>%2</b> %3<br>muốn đuổi người chơi này. <b>%4</b> bình chọn để đuổi người chơi. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Bạn nhận được <b>%1</b> %2 yêu cầu đuổi bạn.<br><b>%3</b> phiếu cần để đuổi. @@ -4026,48 +4026,48 @@ Bạn có muốn ghi đè lên hồ sơ này không? Thiết lập màn chơi đơn - + Number of players: Số lượng người chơi: - + Start Cash: Số tiền ban đầu: - + $ $ - + Blinds Tiền cược - + Use saved blinds settings Sử dụng thiết lập về tiền cược lần trước - + OK - + Change blinds settings ... Thay đổi thiết lập tỉ lệ tiền cược... - + Game Speed: Tốc độ màn chơi: diff --git a/ts/pokerth_zhcn.ts b/ts/pokerth_zhcn.ts index da35eeda..f8884451 100644 --- a/ts/pokerth_zhcn.ts +++ b/ts/pokerth_zhcn.ts @@ -3435,58 +3435,58 @@ Feel free to invite other players by right-clicking on their nick in the availab - - - + + + Lobby 大厅 - - + + Chat 聊天 - + Closing PokerTH during network game 在网络游戏过程中关闭 PokerTH - + You are the hosting server. Do you want to close PokerTH anyway? 你现在是主机. 你还是希望关闭 PokerTH 么? - + Really want to exit? 真的想退出吗? - + PokerTH - Close Table? PokerTH - 关闭赌桌? - + PokerTH - Internet Game Message PokerTH - 因特网游戏消息 - + Attention! Do you really want to leave the current game and go back to the lobby? 注意! 你真的想离开当前的游戏 并返回大厅吗? - - + + Chat is only available to registered players. 聊天功能仅供已注册玩家使用. - + Spectators @@ -3511,45 +3511,45 @@ If you are temporarily away, you can use the "away" tools in the tool 几率 - - + + Kick 踢出 - - + + Do you want to kick <b>%1</b><br>from this game? 你希望把 <b>%1</b> 踢出这场游戏吗? - - - - + + + + <b>%1</b> secs left <b>%1</b> 秒剩余 - + vote 投票 - + votes 投票 - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. "%3" = ( vote == 1 ) ? vote : votes; 已有 %2 票反对玩家 %1, 将其踢出游戏还需要 %4 票. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. "%2" = ( vote == 1 ) ? vote : votes; 已有 %1 票反对你, 再有 %3 人投出反对票的话你就要被踢出游戏了. @@ -3936,48 +3936,48 @@ Would you like to overwrite ? 本地游戏设置 - + Number of players: 玩家数: - + Start Cash: 入场金额: - + $ - + Blinds 盲注 - + Use saved blinds settings 使用已保存的盲注设置 - + OK - + Change blinds settings ... 更改盲注设置... - + Game Speed: 游戏速度: From 702d2921d23792078c30951831b1ba79e943bafa Mon Sep 17 00:00:00 2001 From: doitux Date: Fri, 6 Dec 2013 13:53:24 +0100 Subject: [PATCH 114/128] Fix Android packages for 1.1 final #243 --- src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp | 1 + .../changecompleteblindsdialogimpl.cpp | 4 +++- .../qt/changecontentdialog/changecontentdialogimpl.cpp | 4 +++- .../connecttoserverdialog/connecttoserverdialogimpl.cpp | 3 +++ .../createinternetgamedialogimpl.cpp | 7 +++---- .../createnetworkgamedialogimpl.cpp | 6 +++--- src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp | 8 +++----- src/gui/qt/gametable/gametableimpl.cpp | 5 +---- .../internetgamelogindialogimpl.cpp | 4 +++- .../joinnetworkgamedialog/joinnetworkgamedialogimpl.cpp | 8 ++++++-- src/gui/qt/logfiledialog/logfiledialog.cpp | 5 +++-- src/gui/qt/newlocalgamedialog/newgamedialogimpl.cpp | 3 +++ src/gui/qt/serverlistdialog/serverlistdialogimpl.cpp | 4 +++- .../manualblindsorderdialogimpl.cpp | 4 +++- .../selectavatardialog/selectavatardialogimpl.cpp | 4 +++- src/gui/qt/settingsdialog/settingsdialogimpl.cpp | 1 + .../startnetworkgamedialog/startnetworkgamedialogimpl.cpp | 4 +++- 17 files changed, 48 insertions(+), 27 deletions(-) diff --git a/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp b/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp index 71f38cdd..6e49cfb8 100755 --- a/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp +++ b/src/gui/qt/aboutpokerth/aboutpokerthimpl.cpp @@ -71,6 +71,7 @@ aboutPokerthImpl::aboutPokerthImpl(QWidget *parent, ConfigFile *c) #ifdef ANDROID int api = -2; + this->setWindowState(Qt::WindowFullScreen); #ifndef ANDROID_TEST JavaVM *currVM = (JavaVM *)QApplication::platformNativeInterface()->nativeResourceForIntegration("JavaVM"); JNIEnv* env; diff --git a/src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.cpp b/src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.cpp index c75dc6bf..c0c85304 100644 --- a/src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.cpp +++ b/src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.cpp @@ -43,11 +43,13 @@ changeCompleteBlindsDialogImpl::changeCompleteBlindsDialogImpl(QWidget *parent, #endif setupUi(this); this->installEventFilter(this); +#ifdef ANDROID + this->setWindowState(Qt::WindowFullScreen); +#endif connect( pushButton_add, SIGNAL( clicked() ), this, SLOT( addBlindValueToList() ) ); connect( pushButton_delete, SIGNAL( clicked() ), this, SLOT( removeBlindFromList() ) ); connect( spinBox_firstSmallBlind, SIGNAL( valueChanged(int) ), this, SLOT( updateSpinBoxInputMinimum(int) ) ); - } int changeCompleteBlindsDialogImpl::exec() diff --git a/src/gui/qt/changecontentdialog/changecontentdialogimpl.cpp b/src/gui/qt/changecontentdialog/changecontentdialogimpl.cpp index 8280734b..fd9075d5 100644 --- a/src/gui/qt/changecontentdialog/changecontentdialogimpl.cpp +++ b/src/gui/qt/changecontentdialog/changecontentdialogimpl.cpp @@ -43,6 +43,9 @@ changeContentDialogImpl::changeContentDialogImpl(QWidget *parent, ConfigFile *co #endif setupUi(this); this->installEventFilter(this); +#ifdef ANDROID + this->setWindowState(Qt::WindowFullScreen); +#endif switch (myType) { case CHANGE_HUMAN_PLAYER_NAME: { @@ -86,7 +89,6 @@ changeContentDialogImpl::changeContentDialogImpl(QWidget *parent, ConfigFile *co } connect(this, SIGNAL(accepted ()), this, SLOT(saveContent())); - } void changeContentDialogImpl::saveContent() diff --git a/src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.cpp b/src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.cpp index c4714d21..c9df8431 100644 --- a/src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.cpp +++ b/src/gui/qt/connecttoserverdialog/connecttoserverdialogimpl.cpp @@ -39,6 +39,9 @@ connectToServerDialogImpl::connectToServerDialogImpl(QWidget *parent) setWindowFlags(Qt::WindowSystemMenuHint | Qt::CustomizeWindowHint | Qt::Dialog); #endif setupUi(this); +#ifdef ANDROID + this->setWindowState(Qt::WindowFullScreen); +#endif } int connectToServerDialogImpl::exec() diff --git a/src/gui/qt/createinternetgamedialog/createinternetgamedialogimpl.cpp b/src/gui/qt/createinternetgamedialog/createinternetgamedialogimpl.cpp index 7254ab23..43b090fb 100644 --- a/src/gui/qt/createinternetgamedialog/createinternetgamedialogimpl.cpp +++ b/src/gui/qt/createinternetgamedialog/createinternetgamedialogimpl.cpp @@ -44,16 +44,16 @@ createInternetGameDialogImpl::createInternetGameDialogImpl(QWidget *parent, Conf #endif setupUi(this); this->installEventFilter(this); +#ifdef ANDROID + this->setWindowState(Qt::WindowFullScreen); +#endif spinBox_netDelayBetweenHands->installEventFilter(this); spinBox_netTimeOutPlayerAction->installEventFilter(this); - comboBox_gameType->setItemData(0, GAME_TYPE_NORMAL, Qt::UserRole); comboBox_gameType->setItemData(1, GAME_TYPE_REGISTERED_ONLY, Qt::UserRole); comboBox_gameType->setItemData(2, GAME_TYPE_INVITE_ONLY, Qt::UserRole); comboBox_gameType->setItemData(3, GAME_TYPE_RANKING, Qt::UserRole); - myChangeCompleteBlindsDialog = new changeCompleteBlindsDialogImpl; - startBlind = new QLabel(tr("First small blind: $%1").arg(RANKING_GAME_START_SBLIND)); raiseMode = new QLabel(tr("Double blinds every %1'th hand").arg(RANKING_GAME_RAISE_EVERY_HAND)); startBlind->hide(); @@ -68,7 +68,6 @@ createInternetGameDialogImpl::createInternetGameDialogImpl(QWidget *parent, Conf connect( pushButton_createGame, SIGNAL( clicked() ), this, SLOT( createGame() ) ); connect( checkBox_Password, SIGNAL( toggled(bool) ), this, SLOT( clearGamePassword(bool)) ); connect( comboBox_gameType, SIGNAL(currentIndexChanged(int)), this, SLOT( gameTypeChanged() ) ); - } diff --git a/src/gui/qt/createnetworkgamedialog/createnetworkgamedialogimpl.cpp b/src/gui/qt/createnetworkgamedialog/createnetworkgamedialogimpl.cpp index 634d2609..6857f10b 100644 --- a/src/gui/qt/createnetworkgamedialog/createnetworkgamedialogimpl.cpp +++ b/src/gui/qt/createnetworkgamedialog/createnetworkgamedialogimpl.cpp @@ -42,9 +42,10 @@ createNetworkGameDialogImpl::createNetworkGameDialogImpl(QWidget *parent, Config #endif setupUi(this); this->installEventFilter(this); - +#ifdef ANDROID + this->setWindowState(Qt::WindowFullScreen); +#endif myChangeCompleteBlindsDialog = new changeCompleteBlindsDialogImpl; - fillFormular(); connect( radioButton_changeBlindsSettings, SIGNAL( clicked(bool) ), this, SLOT( callChangeBlindsDialog(bool) ) ); @@ -52,7 +53,6 @@ createNetworkGameDialogImpl::createNetworkGameDialogImpl(QWidget *parent, Config connect( pushButton_cancel, SIGNAL( clicked() ), this, SLOT( cancel() ) ); #endif connect( pushButton_createGame, SIGNAL( clicked() ), this, SLOT( createGame() ) ); - } diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index 1c66ef45..f5e2ac65 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -55,10 +55,11 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) #elif _WIN32 // setWindowFlags(Qt::Dialog | Qt::WindowMinimizeButtonHint); #endif - setupUi(this); myAppDataPath = QString::fromUtf8(myConfig->readConfigString("AppDataDir").c_str()); - +#ifdef ANDROID + this->setWindowState(Qt::WindowFullScreen); +#endif //wait start game message waitStartGameMsgBox = new MyMessageBox(this); waitStartGameMsgBox->setText(tr("Starting game. Please wait ...")); @@ -130,7 +131,6 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) myGameListSortFilterProxyModel->setSourceModel(myGameListModel); myGameListSortFilterProxyModel->setDynamicSortFilter(true); treeView_GameList->setModel(myGameListSortFilterProxyModel); - myGameListSelectionModel = treeView_GameList->selectionModel(); QStringList headerList; @@ -252,9 +252,7 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) lineEdit_searchForPlayers->installEventFilter(this); lineEdit_ChatInput->installEventFilter(this); this->installEventFilter(this); - clearDialog(); - } int gameLobbyDialogImpl::exec() diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp index dd1bb98e..27ce8904 100755 --- a/src/gui/qt/gametable/gametableimpl.cpp +++ b/src/gui/qt/gametable/gametableimpl.cpp @@ -108,6 +108,7 @@ gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent) textLabel_handLabel->hide(); #ifdef ANDROID tabsDiag->setStyleSheet("QObject { font: 26px; } QDialog { background-image: url(:/android/android-data/gfx/gui/table/default_800x480/table_dark.png); background-position: bottom center; background-origin: content; background-repeat: no-repeat;}"); + this->setWindowState(Qt::WindowFullScreen); #endif tabs.label_chance->setMyStyle(myGameTableStyle); #else @@ -4293,9 +4294,6 @@ void gameTableImpl::saveGameTableGeometry() void gameTableImpl::restoreGameTableGeometry() { -#ifdef ANDROID - this->showFullScreen(); -#else if(myConfig->readConfigInt("GameTableFullScreenSave")) { #ifndef GUI_800x480 if(actionFullScreen->isEnabled()) this->showFullScreen(); @@ -4307,7 +4305,6 @@ void gameTableImpl::restoreGameTableGeometry() this->resize(myConfig->readConfigInt("GameTableWidthSave"), myConfig->readConfigInt("GameTableHeightSave")); } } -#endif } void gameTableImpl::netClientPlayerLeft(unsigned /*playerId*/) diff --git a/src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.cpp b/src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.cpp index 8b8552df..e24fab24 100644 --- a/src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.cpp +++ b/src/gui/qt/internetgamelogindialog/internetgamelogindialogimpl.cpp @@ -39,7 +39,9 @@ internetGameLoginDialogImpl::internetGameLoginDialogImpl(QWidget *parent, Config { setupUi(this); this->installEventFilter(this); - +#ifdef ANDROID + this->setWindowState(Qt::WindowFullScreen); +#endif //html stuff QString createAccount(QString("%1").arg(tr("Create new user account"))); label_createAnAccount->setText(createAccount); diff --git a/src/gui/qt/joinnetworkgamedialog/joinnetworkgamedialogimpl.cpp b/src/gui/qt/joinnetworkgamedialog/joinnetworkgamedialogimpl.cpp index d735bfbb..9560b30d 100644 --- a/src/gui/qt/joinnetworkgamedialog/joinnetworkgamedialogimpl.cpp +++ b/src/gui/qt/joinnetworkgamedialog/joinnetworkgamedialogimpl.cpp @@ -45,7 +45,9 @@ joinNetworkGameDialogImpl::joinNetworkGameDialogImpl(QWidget *parent, ConfigFile setWindowFlags(Qt::WindowSystemMenuHint | Qt::CustomizeWindowHint | Qt::Dialog); #endif setupUi(this); - +#ifdef ANDROID + this->setWindowState(Qt::WindowFullScreen); +#endif // QShortcut *connectKey = new QShortcut(QKeySequence(Qt::Key_Enter), this); // connect( connectKey, SIGNAL(activated() ), pushButton_connect, SLOT( click() ) ); @@ -305,12 +307,14 @@ void joinNetworkGameDialogImpl::deleteServerProfile() void joinNetworkGameDialogImpl::keyPressEvent ( QKeyEvent * event ) { - #ifndef ANDROID if (event->key() == 16777220) { pushButton_connect->click(); //ENTER } +#else + QDialog::keyPressEvent(event); #endif + } void joinNetworkGameDialogImpl::checkIp() diff --git a/src/gui/qt/logfiledialog/logfiledialog.cpp b/src/gui/qt/logfiledialog/logfiledialog.cpp index 1da92ecc..1a749e57 100644 --- a/src/gui/qt/logfiledialog/logfiledialog.cpp +++ b/src/gui/qt/logfiledialog/logfiledialog.cpp @@ -48,10 +48,11 @@ LogFileDialog::LogFileDialog(QWidget *parent, ConfigFile *c) : ui(new Ui::LogFileDialog) { ui->setupUi(this); - ui->label_animation->setMaximumWidth(0); ui->horizontalLayout_animation->setSpacing(0); - +#ifdef ANDROID + this->setWindowState(Qt::WindowFullScreen); +#endif connect( ui->pushButton_deleteLog, SIGNAL(clicked()), this, SLOT (deleteLogFile())); connect( ui->pushButton_exportLogHtml, SIGNAL(clicked()), this, SLOT (exportLogToHtml())); connect( ui->pushButton_exportLogTxt, SIGNAL(clicked()), this, SLOT (exportLogToTxt())); diff --git a/src/gui/qt/newlocalgamedialog/newgamedialogimpl.cpp b/src/gui/qt/newlocalgamedialog/newgamedialogimpl.cpp index 1d2d4f94..081f6023 100755 --- a/src/gui/qt/newlocalgamedialog/newgamedialogimpl.cpp +++ b/src/gui/qt/newlocalgamedialog/newgamedialogimpl.cpp @@ -79,6 +79,9 @@ int newGameDialogImpl::exec() myChangeCompleteBlindsDialog->spinBox_afterThisAlwaysRaiseValue->setValue(myConfig->readConfigInt("AfterMBAlwaysRaiseValue")); myChangeCompleteBlindsDialog->radioButton_afterThisStayAtLastBlind->setChecked(myConfig->readConfigInt("AfterMBStayAtLastBlind")); +#ifdef ANDROID + this->showFullScreen(); +#endif return QDialog::exec(); } diff --git a/src/gui/qt/serverlistdialog/serverlistdialogimpl.cpp b/src/gui/qt/serverlistdialog/serverlistdialogimpl.cpp index d99814aa..cd98ee1e 100644 --- a/src/gui/qt/serverlistdialog/serverlistdialogimpl.cpp +++ b/src/gui/qt/serverlistdialog/serverlistdialogimpl.cpp @@ -43,7 +43,9 @@ serverListDialogImpl::serverListDialogImpl(startWindowImpl *sw, QMainWindow *par setWindowFlags(Qt::WindowSystemMenuHint | Qt::CustomizeWindowHint | Qt::Dialog); #endif setupUi(this); - +#ifdef ANDROID + this->setWindowState(Qt::WindowFullScreen); +#endif connect( treeWidget_serverList, SIGNAL( itemDoubleClicked ( QTreeWidgetItem*, int) ), this, SLOT( connectToServer() )); connect( buttonBox, SIGNAL( accepted() ), this, SLOT( connectToServer() )); connect( buttonBox, SIGNAL( rejected() ), this, SLOT( closeNetworkClient() )); diff --git a/src/gui/qt/settingsdialog/manualblindsorderdialog/manualblindsorderdialogimpl.cpp b/src/gui/qt/settingsdialog/manualblindsorderdialog/manualblindsorderdialogimpl.cpp index b3e676e3..61d033ca 100644 --- a/src/gui/qt/settingsdialog/manualblindsorderdialog/manualblindsorderdialogimpl.cpp +++ b/src/gui/qt/settingsdialog/manualblindsorderdialog/manualblindsorderdialogimpl.cpp @@ -42,7 +42,9 @@ manualBlindsOrderDialogImpl::manualBlindsOrderDialogImpl(QWidget *parent, Config setWindowFlags(Qt::WindowSystemMenuHint | Qt::CustomizeWindowHint | Qt::Dialog); #endif setupUi(this); - +#ifdef ANDROID + this->setWindowState(Qt::WindowFullScreen); +#endif connect( pushButton_add, SIGNAL( clicked() ), this, SLOT( addBlindValueToList() ) ); connect( pushButton_delete, SIGNAL( clicked() ), this, SLOT( removeBlindFromList() ) ); diff --git a/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.cpp b/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.cpp index 75a132fc..89c915c7 100644 --- a/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.cpp +++ b/src/gui/qt/settingsdialog/selectavatardialog/selectavatardialogimpl.cpp @@ -43,7 +43,9 @@ selectAvatarDialogImpl::selectAvatarDialogImpl(QWidget *parent, ConfigFile *c) setWindowFlags(Qt::WindowSystemMenuHint | Qt::CustomizeWindowHint | Qt::Dialog); #endif setupUi(this); - +#ifdef ANDROID + this->setWindowState(Qt::WindowFullScreen); +#endif myAppDataPath = QString::fromUtf8(myConfig->readConfigString("AppDataDir").c_str()); pushButton_OpenAvatarFile->setIcon(QIcon(QPixmap(myAppDataPath+"gfx/gui/misc/fileopen16.png"))); diff --git a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp index 87d37efe..294f93af 100644 --- a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp +++ b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp @@ -55,6 +55,7 @@ settingsDialogImpl::settingsDialogImpl(QWidget *parent, ConfigFile *c, selectAva label_soundvol->hide(); label_soundVolume->hide(); horizontalSlider_soundVolume->hide(); + this->setWindowState(Qt::WindowFullScreen); #endif myManualBlindsOrderDialog = new manualBlindsOrderDialogImpl; diff --git a/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.cpp b/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.cpp index ba5005d2..6bc1d77d 100644 --- a/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.cpp +++ b/src/gui/qt/startnetworkgamedialog/startnetworkgamedialogimpl.cpp @@ -44,7 +44,9 @@ startNetworkGameDialogImpl::startNetworkGameDialogImpl(startWindowImpl *parent, setWindowFlags(Qt::WindowSystemMenuHint | Qt::CustomizeWindowHint | Qt::Dialog); #endif setupUi(this); - +#ifdef ANDROID + this->setWindowState(Qt::WindowFullScreen); +#endif myChat = new ChatTools(lineEdit_ChatInput, myConfig, LAN_LOBBY_CHAT, textBrowser_ChatDisplay); lineEdit_ChatInput->installEventFilter(this); From 06786bec5765d494a291f1444aef77d3c73d41a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Chaves=20Fern=C3=A1ndez=20=28Gallaecio=29?= Date: Fri, 6 Dec 2013 17:31:36 +0100 Subject: [PATCH 115/128] Updated the Galician (gl) translation --- ts/pokerth_gl.ts | 63 +++++++++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/ts/pokerth_gl.ts b/ts/pokerth_gl.ts index 7ed066e7..ef27817c 100644 --- a/ts/pokerth_gl.ts +++ b/ts/pokerth_gl.ts @@ -1,6 +1,6 @@ - + CardDeckStyleReader @@ -481,7 +481,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -496,7 +496,7 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -510,7 +510,11 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> @@ -528,7 +532,14 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">Adrián Chaves Fernández - adriyetichaves@gmail.com</span></p></td></tr></table></body></html> @@ -546,7 +557,7 @@ p, li { white-space: pre-wrap; } Third party libs - + Bibliotecas de terceiros @@ -1071,7 +1082,7 @@ Please choose another one! Allow spectators to watch the game - + Permitier espectadores na partida. @@ -1226,13 +1237,13 @@ Please choose another one! Players - Xogadores + Xogadores Spectators - + Espectadores @@ -1326,7 +1337,7 @@ p, li { white-space: pre-wrap; } Join &any game - Unirse a unha partida cal&quera + Unirse a unha partida cal&quera @@ -1416,7 +1427,7 @@ p, li { white-space: pre-wrap; } Spectate - + Espectar @@ -1504,7 +1515,7 @@ p, li { white-space: pre-wrap; } Connected players - max. %1 - Xogadores conectados (límite: %1) + Xogadores conectados (límite: %1) @@ -1530,7 +1541,7 @@ p, li { white-space: pre-wrap; } Connected players - Max. %1 - Xogadores conectados (límite: %1) + Xogadores conectados (límite: %1) @@ -1553,14 +1564,14 @@ p, li { white-space: pre-wrap; } Players (%1) - + Xogadores (%1) Spectators (%1) - + Espectadores (%1) @@ -1657,7 +1668,7 @@ Para convidar a outros xogadores, prema co botón secundario a súa entrada na l Connected players - Xogadores conectados + Xogadores conectados @@ -3342,7 +3353,7 @@ and go back to the lobby? Spectators - + Espectadores @@ -3597,7 +3608,7 @@ p, li { white-space: pre-wrap; } Could not load server-profiles-file: - Non foi posíbel cargar o ficheiro do perfil de servidor: + Non foi posíbel cargar o ficheiro do perfil de servidor: @@ -3607,7 +3618,8 @@ p, li { white-space: pre-wrap; } Could not load server-profiles-file: %1 - + Non foi posíbel cargar o ficheiro de perfís de servidores: +%1 @@ -3641,12 +3653,13 @@ Would you like to overwrite ? Could not save server-profiles-file: %1 - + Non foi posíbel cargar o ficheiro de perfís de servidores: +%1 Could not save server-profiles-file: - Non foi posíbel gardar o ficheiro do perfil de servidor: + Non foi posíbel gardar o ficheiro do perfil de servidor: @@ -3953,7 +3966,7 @@ Please enter an valid picture! Common - + Común @@ -3977,13 +3990,13 @@ Please enter an valid picture! Do not hide avatars of players which are on the ignore list - + Non ocultar os avatares dos xogadores da lista de ignorados. Disable emoticons in the chat - + Desactivar as emoticonas nas conversas. @@ -4090,7 +4103,7 @@ Please enter an valid picture! Allow spectators to watch the game - + Permitirlle observar a partida aos espectadores. From 0d60360fcadecaf736132d8a7b00df6d9eba9b30 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sun, 8 Dec 2013 12:20:51 +0100 Subject: [PATCH 116/128] Update server ping with each game action (#239). --- src/game_defs.h | 12 --------- src/gui/generic/serverguiwrapper.cpp | 4 +++ src/gui/generic/serverguiwrapper.h | 1 + src/gui/qt/guiwrapper.cpp | 4 +++ src/gui/qt/guiwrapper.h | 1 + src/gui/qt/startwindow/startwindowimpl.h | 3 ++- src/net/clientcallback.h | 2 ++ src/net/clientthread.h | 33 ++++++++++++++++++++++++ src/net/common/clientstate.cpp | 4 +++ src/net/common/clientthread.cpp | 12 +++++++++ src/serverdata.h | 14 +++++++++- 11 files changed, 76 insertions(+), 14 deletions(-) diff --git a/src/game_defs.h b/src/game_defs.h index e068d1eb..2dd70952 100644 --- a/src/game_defs.h +++ b/src/game_defs.h @@ -179,16 +179,4 @@ enum NetTimeoutReason { NETWORK_TIMEOUT_KICK_AFTER_AUTOFOLD }; -struct ServerStats { - ServerStats() - : numberOfPlayersOnServer(0), numberOfGamesOpen(0), totalPlayersEverLoggedIn(0), - totalGamesEverCreated(0), maxGamesOpen(0), maxPlayersLoggedIn(0) {} - unsigned numberOfPlayersOnServer; - unsigned numberOfGamesOpen; - unsigned totalPlayersEverLoggedIn; - unsigned totalGamesEverCreated; - unsigned maxGamesOpen; - unsigned maxPlayersLoggedIn; -}; - #endif diff --git a/src/gui/generic/serverguiwrapper.cpp b/src/gui/generic/serverguiwrapper.cpp index b0b1f535..27813677 100644 --- a/src/gui/generic/serverguiwrapper.cpp +++ b/src/gui/generic/serverguiwrapper.cpp @@ -156,6 +156,10 @@ void ServerGuiWrapper::SignalNetClientStatsUpdate(const ServerStats &stats) { if (myClientcb) myClientcb->SignalNetClientStatsUpdate(stats); } +void ServerGuiWrapper::SignalNetClientPingUpdate(unsigned minPing, unsigned avgPing, unsigned maxPing) +{ + if (myClientcb) myClientcb->SignalNetClientPingUpdate(minPing, avgPing, maxPing); +} void ServerGuiWrapper::SignalNetClientShowTimeoutDialog(NetTimeoutReason reason, unsigned remainingSec) { if (myClientcb) myClientcb->SignalNetClientShowTimeoutDialog(reason, remainingSec); diff --git a/src/gui/generic/serverguiwrapper.h b/src/gui/generic/serverguiwrapper.h index ebf23c28..2986c074 100644 --- a/src/gui/generic/serverguiwrapper.h +++ b/src/gui/generic/serverguiwrapper.h @@ -126,6 +126,7 @@ public: void SignalNetClientError(int errorID, int osErrorID); void SignalNetClientNotification(int notificationId); void SignalNetClientStatsUpdate(const ServerStats &stats); + void SignalNetClientPingUpdate(unsigned minPing, unsigned avgPing, unsigned maxPing); void SignalNetClientShowTimeoutDialog(NetTimeoutReason reason, unsigned remainingSec); void SignalNetClientRemovedFromGame(int notificationId); void SignalNetClientSelfJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin); diff --git a/src/gui/qt/guiwrapper.cpp b/src/gui/qt/guiwrapper.cpp index a8736112..20ef8b6e 100644 --- a/src/gui/qt/guiwrapper.cpp +++ b/src/gui/qt/guiwrapper.cpp @@ -341,6 +341,10 @@ void GuiWrapper::SignalNetClientStatsUpdate(const ServerStats &stats) { myStartWindow->signalNetClientStatsUpdate(stats); } +void GuiWrapper::SignalNetClientPingUpdate(unsigned minPing, unsigned avgPing, unsigned maxPing) +{ + // TODO +} void GuiWrapper::SignalNetClientShowTimeoutDialog(NetTimeoutReason reason, unsigned remainingSec) { myStartWindow->signalNetClientShowTimeoutDialog(reason, remainingSec); diff --git a/src/gui/qt/guiwrapper.h b/src/gui/qt/guiwrapper.h index 6a52e331..a3548f39 100644 --- a/src/gui/qt/guiwrapper.h +++ b/src/gui/qt/guiwrapper.h @@ -138,6 +138,7 @@ public: void SignalNetClientError(int errorID, int osErrorID); void SignalNetClientNotification(int notificationId); void SignalNetClientStatsUpdate(const ServerStats &stats); + void SignalNetClientPingUpdate(unsigned minPing, unsigned avgPing, unsigned maxPing); void SignalNetClientShowTimeoutDialog(NetTimeoutReason reason, unsigned remainingSec); void SignalNetClientRemovedFromGame(int notificationId); void SignalNetClientSelfJoined(unsigned playerId, const std::string &playerName, bool isGameAdmin); diff --git a/src/gui/qt/startwindow/startwindowimpl.h b/src/gui/qt/startwindow/startwindowimpl.h index c101dba1..d826902f 100644 --- a/src/gui/qt/startwindow/startwindowimpl.h +++ b/src/gui/qt/startwindow/startwindowimpl.h @@ -40,7 +40,8 @@ #include "ui_startwindow.h" #endif -#include "game_defs.h" +#include +#include #include #include "mymessagebox.h" diff --git a/src/net/clientcallback.h b/src/net/clientcallback.h index cc6d95af..4f57b28f 100644 --- a/src/net/clientcallback.h +++ b/src/net/clientcallback.h @@ -38,6 +38,7 @@ #include #include +#include class Game; @@ -51,6 +52,7 @@ public: virtual void SignalNetClientError(int errorID, int osErrorID) = 0; virtual void SignalNetClientNotification(int notificationId) = 0; virtual void SignalNetClientStatsUpdate(const ServerStats &stats) = 0; + virtual void SignalNetClientPingUpdate(unsigned minPing, unsigned avgPing, unsigned maxPing) = 0; virtual void SignalNetClientShowTimeoutDialog(NetTimeoutReason reason, unsigned remainingSec) = 0; virtual void SignalNetClientRemovedFromGame(int notificationId) = 0; diff --git a/src/net/clientthread.h b/src/net/clientthread.h index 39de5407..77758997 100644 --- a/src/net/clientthread.h +++ b/src/net/clientthread.h @@ -37,6 +37,8 @@ #include #include #include +#include +#include #include #include @@ -56,6 +58,33 @@ class Log; class QtToolsInterface; struct Gsasl; +#define SIZE_PING_BACKLOG 20 + +class PingData +{ +public: + PingData() : pingTimer(boost::posix_time::time_duration(0, 0, 0), boost::timers::portable::microsec_timer::manual_start) {} + + unsigned MinPing() {return *std::min_element(pingValues.begin(), pingValues.end());} + unsigned MaxPing() {return *std::max_element(pingValues.begin(), pingValues.end());} + unsigned AveragePing() {return std::accumulate(pingValues.begin(), pingValues.end(), 0) / (unsigned)pingValues.size();} + void StartPing() {pingTimer.start();} + void EndPing() + { + if (pingTimer.is_running()) { + pingValues.push_back((unsigned)pingTimer.elapsed().total_milliseconds()); + if (pingValues.size() > SIZE_PING_BACKLOG) { + pingValues.pop_front(); + } + pingTimer.reset(); + } + } + +private: + std::list pingValues; + boost::timers::portable::microsec_timer pingTimer; +}; + class ClientThread : public Thread, public boost::enable_shared_from_this, public SessionDataCallback { public: @@ -228,6 +257,7 @@ protected: void EndPetition(unsigned petitionId); void UpdateStatData(const ServerStats &stats); + void EndPing(); bool IsSessionEstablished() const; void SetSessionEstablished(bool flag); @@ -298,6 +328,9 @@ private: mutable boost::mutex m_curStatsMutex; ServerStats m_curStats; + mutable boost::mutex m_pingDataMutex; + PingData m_pingData; + boost::asio::deadline_timer m_stateTimer; boost::asio::deadline_timer m_avatarTimer; diff --git a/src/net/common/clientstate.cpp b/src/net/common/clientstate.cpp index f1bf33a0..e1b8e15c 100644 --- a/src/net/common/clientstate.cpp +++ b/src/net/common/clientstate.cpp @@ -1771,6 +1771,10 @@ ClientStateRunHand::InternalHandlePacket(boost::shared_ptr client, client->GetClientLog()->transformPlayerActionLog(PlayerAction(netActionDone.playeraction())), netActionDone.totalplayerbet() - tmpPlayer->getMySet() ); + if (tmpPlayer->getMyID() == 0) + { + client->EndPing(); + } } // Update last players turn only after the blinds. curGame->getCurrentHand()->setPreviousPlayerID(tmpPlayer->getMyID()); diff --git a/src/net/common/clientthread.cpp b/src/net/common/clientthread.cpp index 775bce70..fc0c4d6f 100644 --- a/src/net/common/clientthread.cpp +++ b/src/net/common/clientthread.cpp @@ -158,6 +158,10 @@ ClientThread::SendPlayerAction() { // Warning: This function is called in the context of the GUI thread. // Create a network packet containing the current player action. + { + boost::mutex::scoped_lock lock(m_pingDataMutex); + m_pingData.StartPing(); + } boost::shared_ptr packet(new NetPacket); packet->GetMsg()->set_messagetype(PokerTHMessage::Type_MyActionRequestMessage); MyActionRequestMessage *netMyAction = packet->GetMsg()->mutable_myactionrequestmessage(); @@ -1558,6 +1562,14 @@ ClientThread::UpdateStatData(const ServerStats &stats) GetCallback().SignalNetClientStatsUpdate(m_curStats); } +void +ClientThread::EndPing() +{ + boost::mutex::scoped_lock lock(m_pingDataMutex); + m_pingData.EndPing(); + GetCallback().SignalNetClientPingUpdate(m_pingData.MinPing(), m_pingData.AveragePing(), m_pingData.MaxPing()); +} + ServerStats ClientThread::GetStatData() const { diff --git a/src/serverdata.h b/src/serverdata.h index cb41dfe2..42dd1218 100644 --- a/src/serverdata.h +++ b/src/serverdata.h @@ -35,7 +35,6 @@ #include - struct ServerInfo { ServerInfo() : id(0), supportsSctp(false), port(0) {} unsigned id; @@ -49,5 +48,18 @@ struct ServerInfo { std::string avatarServerAddr; }; +struct ServerStats { + ServerStats() + : numberOfPlayersOnServer(0), numberOfGamesOpen(0), totalPlayersEverLoggedIn(0), + totalGamesEverCreated(0), maxGamesOpen(0), maxPlayersLoggedIn(0) {} + unsigned numberOfPlayersOnServer; + unsigned numberOfGamesOpen; + unsigned totalPlayersEverLoggedIn; + unsigned totalGamesEverCreated; + unsigned maxGamesOpen; + unsigned maxPlayersLoggedIn; +}; + + #endif From 8a085d419c870c30e638e5acc20dd249892005db Mon Sep 17 00:00:00 2001 From: doitux Date: Mon, 9 Dec 2013 08:28:36 +0100 Subject: [PATCH 117/128] Test for fixing #202 --- src/gui/qt/styles/gametablestylereader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/qt/styles/gametablestylereader.cpp b/src/gui/qt/styles/gametablestylereader.cpp index 5f19674f..a81870d4 100644 --- a/src/gui/qt/styles/gametablestylereader.cpp +++ b/src/gui/qt/styles/gametablestylereader.cpp @@ -40,7 +40,7 @@ GameTableStyleReader::GameTableStyleReader(ConfigFile *c, QWidget *w) //set fonts and font sizes #ifdef _WIN32 font1String = "font-family: \"Arial\";"; - font2String = "font-family: \"Nimbus Sans L\";"; + font2String = "font-family: \"DejaVu Sans\";"; cashFontSize = "11"; setLabelFontSize = "11"; playerNameLabelFontSize = "11"; From 7d7038f9bfbcc30875ff81b77deeef04e21c7c14 Mon Sep 17 00:00:00 2001 From: doitux Date: Tue, 10 Dec 2013 00:04:49 +0100 Subject: [PATCH 118/128] next try for #202 --- src/gui/qt/styles/gametablestylereader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/qt/styles/gametablestylereader.cpp b/src/gui/qt/styles/gametablestylereader.cpp index a81870d4..90dc6ac1 100644 --- a/src/gui/qt/styles/gametablestylereader.cpp +++ b/src/gui/qt/styles/gametablestylereader.cpp @@ -40,7 +40,7 @@ GameTableStyleReader::GameTableStyleReader(ConfigFile *c, QWidget *w) //set fonts and font sizes #ifdef _WIN32 font1String = "font-family: \"Arial\";"; - font2String = "font-family: \"DejaVu Sans\";"; + font2String = "font-family: \"Arial\";"; cashFontSize = "11"; setLabelFontSize = "11"; playerNameLabelFontSize = "11"; From b79dcf44371aff6889242bfd77c81781e4517bde Mon Sep 17 00:00:00 2001 From: doitux Date: Tue, 10 Dec 2013 10:49:12 +0100 Subject: [PATCH 119/128] update afrikaans translation --- data/translations/pokerth_af.qm | Bin 123332 -> 142485 bytes ts/pokerth_af.ts | 2516 +++++++++++-------------------- 2 files changed, 919 insertions(+), 1597 deletions(-) diff --git a/data/translations/pokerth_af.qm b/data/translations/pokerth_af.qm index 51e7e8f96df3432974da94f2ebc3427ab5594828..7cb8d3188809f208b5f0cee73ccb40508e651788 100644 GIT binary patch delta 16632 zcmb_@2Y6HE{{Qz)a^vO%B}$`Di}Z9^NHCM8KJWrYp06pj#( zy%c3iWy&hMY`ko^O!0!CED-_4|K~l22E14Ac>ceq&*gK@$$Q@SyVvpV-J_X#Uh8YJ zIiuX6d-G-)NWF(97VK#9jQ*}h&IKL>Rf%IE$I?6&vsJ% zV-~UK$)vh7oapOwBxtdI_jD2>=YnvnjHYf9D%3?J)W1P&_xmIy#Sk5y<0GMcePY#O zNl4j1^vx;~(nk>e?J@}taCt^U!k~}wdm0IYKO$DWDhX3m#MBLB+_Q*;+52$cU&iWv zBvfb)kg&2JvC@M`SO87HzG$qRrvuN4;ezy3MX{F zm1-S7K=gtrar14W-@+)#hxeW?rpDu=i8ZJ~?Pl#I>h+M?&&7MbWe2GJUabD?B6YYQ zO|+&xum#XZZ#94f-mWR*?-wLwRi4vZ8Q^5y3F>H=O>Dtx>UapaFp4_fhfcq`N}UV( z5^cUuoySZfidg{ML*yS#oo`{^tvxAu=?Na;eMo-`s{+pXB5*r87GOp?+NGGLGem{C(`uj(7rRW9RtEu#IQ#DA;*%F?J14kT_kmcN=Ez=T-V*5~$%}-4GD;?Wt zC;I$3oe`Q5WwoJmjj?~uLb_J?3=%(0zHjeUB|7;9eJ}1H`s5ltTr!L3P&7Tw3MVSu zPS2|1#i4EJ*+Dx^I!i05WW&Cv`Gkr3LXig>zF1L_ajq@ycH;nA^7*={E2q~4s z!V=aJJCnmA#={Lq4UzG@T|zeDiH}wO6*_-p?V#2YYHGdojb zC$ZUw*u^%G#C3sPnU8?;Nk4XV5LA}Q*xfr#i20U&%${94O_Z=(VV(yL|F&OIWB3;c zsTCCowYL(DJ|*MCUnOMX8Aa{TxMl@}lqS>Agh|SusXzo6bkh@+&g+{AL z=8-gMnWE>&Rzy=aD6Hpq6XjNykkw9+(8p@;QKYSEMhfF+ip+X&r}gm)$HPa&K5wcR zI1{>L84CA-Zpd5LUEQMlI_^9IJbWX zM72_JVNN}wYWa$5s!_z&)>Zt_?i-@|Hx<7WG$Oj;Q2cUmF*cl|c)D*NB4uACX*I;$ z=}P6)X2e#+Ds>qk)O1J2s5g~5Uk_y4k;+P+Vt>;XWwhS+6vp#N8RG!~-)ATjPr_KP zDwQ41T_d((ys}&PBx1U|5-PM`DeXU^1}GD)bnpOm^^ww11iV&P=`HSp5G%;I#jo_9 zy+CZzN6Ily)B+9qD95!x%>U-9a{Lc)zu-{iN7;{IOEJpnz6ID|QDfz-Dy4`Pf2f?5 zol0aKpj^;v8Zl*i#0sY?*VauXHe{r7{~#PtZ-b1!hsx8pl&}e{ z^2`)?ON?51Vb%g-`)?`lehp5~uTcIx;7g)kyC`1_FNVA7Rl=b{1h|_jpLFrOx%7a| z?xs?YfO}l?sPyke5o=gMRVoPt(AzTZ%urRo4qXbNs`}9rh-uPQ4a%TE(I%>r%B?51 z=qFX9`_qV$-&QrQ_&d>~v#K|RD#W~ns#a$a`F^viS~r4(zg(c|8h(aozsINQ`vU%M z$W+;TA16BAS(W|O5@K^ZsN6e_5qri|o^BxMyG5#zg-&ADDXLM|Lx?igtH!+dfJn7V z#?Tzqm|tKECp4dBW->~-$F&c=QmZ$x*S7n-=+Grbzj8h z{;CxzJg?tTt=L&Wtch8*a@qr8ObditvLxWoz%1Y|z}dj3z=JaG$_65~vtNM7mWmp{ z7r?h=+%+HgJMJf{R({Bk{}r313%2Vx5Ju#92toO)3s#bR$LF|J>)!H$=h@#6&$P#~5tt;4rc=E04Nbw<}9JhqbeM)um)-|GgD^#aL zobdnQ3-|@m_$Csvx-(U0w!<49YE)+*k3vb+LUk?)y516_I@f6&+-{xf92e=Pd8%`} zcA#K6sXDh85?fSBbzwnOVy?!jOCktboTj?W2)bH!1~4|&|#?L>{>zXTY(49Hwv1K$;5t8 z2-*iG6cP$SKLJL!r-NXe1ApCHTQChcO7z1*q3k4B@7~KocnCzhe6k4V^mv=BY` zDmdRJ)Yt||9k?OHo>RfSP7AS*5f8p?D33w{@tT*CAGtHM&pP}GbD;nS~&Ae6r= zp+cJ^d^Tz@a9DIGK915E``5e6)wLxM(k#3;Yw#0ydg!nR`D6E|4SKX zeI_CE^b@WRh=>2L8zn9<=*i$Qyo&dChCQWGEV$b#!u7|vigFI(|=J%v|EELDoW_1 za~0H)%Qv7R>8!SV0s_trP}gh(PA}Qjartl``y_RPCSB2R^iaRqu`+7H-_&haJ%Y_d zsyiO>AX28QlQX}BjT}&CorMiuF{uZzABoC7QV%GOL@~QmogIRzI=6{B`%^H`d9XTX z$pEPAvO4GaULR_(pZNtTgkrU)#an2J5@ejvUqa@bqxQxXp-Anm9-0Psnmj^1GIj$B zl&R{`sOQbaYJMp)

SgCf5PMukz25wS*spulTUQGxFyhr)Pn|?eudUv870<67Q}23G z1vX$*?=Jw(swpAcvR-|_T!vVqx73GP!Uh(cP#<^nM(94QJ{`1!D5yw%CVwfs!Jxj_ z{4%jaHPn~3gOJ)@^$p*)2x7g*ssC~FG_it#>hHHSBX;4j`iH4-v#S~EXQ7P9TTK(} z|B2X?a80Q^6cF3HX+rMXh$d(xWIMmsSV~6_skdpOIwEdV*J^6~x(AKONg2;p)Fd2( zaleSrB%XOeRH>(?#SSIW+7}vM`-!OSLU(I8vPGh%(}nUV3{oXz6V__FjJpowG-*-< z#D(b|P4}LwiN46!^jr^}F4bt>P645-dTDx}t&8TfsiyB@NWvShvF=MkDc4!!Jb8s^ z$t+Fo=rzPHx7Or-jiS~)PE(LxhuFAKpJqr~7}w_Nnvs|BgKxHs{+61ttBZ)ue@pX0 z{|sVviZrtfKcU8(rJ4V3JW->enokpxi47>LSvlnfu`0VXtG|Qf#$;+Xb`XedTdFx~ zgs3YW)SR95H)0-*=E4ON(b!_m#V|-}=vvL+*F+&A`sQe^-9SJYBx-KxN|8drG&d0W zXwqEG&C834t&Gw9@Ir^|c0luBtr>ym3(cD_S%$pf@unG4WE z=4;CrjzEuBQCn$VAM_C;BxHlY;|^lM!r!zBb0NA#-L(x5A);-lr)|{Nik@)3w#kfRz`tvob%FaH zpQLU15CrIT+O{v=gbgg$w%?qEM&x5{M?3akG(+1h2%-M%L)!F-m`}wV*Jd26fc)>c zuFbe!0fk3RZU2~9V%hDrSsiAg`P{GdzEz)C)jVzfqK8Bq!nGs#AmP&(t#85(V1MnH zT;TF6+6h12Mh-Zjo#?xP=eM;VypPdKerxTtnu$bfl+y10U<_)t813$>zXAJe_naRAuV}3;?syHg zTWRf~&Ddyp3+<5<==8!0?UAP!h~mSvm*0aVCJEZR<4zO1cUQ*}$Djq9sMB7XMl>i{ zXMPt19a*Fc9`P~az$IPGCLfGQHw72Ky&1Zu)w-ha=%?#=5S*NNqU($S1atnP>oNix zPma~~Oe#+_a=VNZj!DQ0)G}@zt?M^Af>=A!S+SmNeXO${fylrAUYBkJ!7C=~(s>TK za8sAL6S(PuF30EHL9BR<&Yjl-#JdZ_N6pL!=csf-`|(m@Nix6P}s+rvL6mefGTC8czCXI+L3r0VV+tBWMGQ+L1gK4Qy<=GA}tTNo~hv#}4gfcs6tzH+rhS-A!defKStbJpB z#V%1u$L;iySy(r*rG#uqd3|CGjOoi;`Z_n@C0{p_@%s1ry1kDPOC7Fn_@0ueU$MT? z&e4!)ReiH6(J1RP_071Ej;Ji7Z~P8@`@$u}Y8C2}TRDmSW4J!07ewwXFCj~~r|&ht z3i|gq^l$%M4>O!1eV=D0l;zK4Ec#iWJ{r2ec2J*T$GUYh^|p@R!fliESt$om`Lx$N z?Wl^w*6H1)Pa!V6t@qS`WP7LU3xcP?{~s6YNA|!-rIubl+E9!dZJ>Va>Z&LtTFCgV zN-uf=i+U9jy_2S2Tn`5o zN9dPg_{3&B)vxFc27f=HUmXlW=j`R^!yHf0uW9xS<#!zkS=n;>!tIxd^?66X`7MZe z*$e&F3(&bcO213pm)KFeeqYjI6e7d)2PTxk(0PXbpdY%<3(|jcI~|kpmip6o2b364|M-e8gy_d){nHl_#BOcYKX3Q|6z53D zmcFfj-g^Pc^8E%y?P$1FAA{0X9o_CMgGvR0Kj~l)+&fSg^fajJ1Km*uP1SPfmJKrQ zEMutB?j$L69z%5nR2-LPs9F9zhEw+q2?M4PJN4X9-`5^~y#8~;8$Drs8@Cx+)-|Ib zxov3ms0XpH?iso@pN>ML$dJ0;Ms#+$!P@mEX1(7Sth-M`^x=k#IbUK_JH?RMb2%m+ zenWQtF|_5O5-K!58U{P!F}4dgjIqQM`@7LFwdG|DBFh=3w%dY%#ZH4ytO*@mT4$I! z9v#rg?lKmwk&xxRF!(QAK;`nQVa{b3&vA|6lOf>rVKu|bp-7)!Ej4_Zi4A}L*zh$u zG3R?=*i-EWI;sy0`*bkMI~@%B2JD53N*jtTP{mi948`@Js_knG#qY%+^mp+Yj*i$$ zZ032xv9o=Ny))f#eta@f^Ld6#7t7;$FT<5ucz&vt;p){9#D3~)xSk1PZG6aZd(2~E z)3z9%l#d{GtfJAF(;T+6%vkC!P-r2cLNnD^Ho}C;=b|yKY@SW?(AzgE0~# z7`D{+#AvDh6r$~Ij2`j=U1=3#jgc^_yZ4Q?B5|MI#8|8DQW(oQW84%gDxXuv#66f? z+)^0p@OFI2ePe?LsP+8ojZG#;gEN(}StKy8vy4T|*eoRzHuZ(^&3ssW_EHI1{7o5s z18x{wGyw;fqK%!t+CemLg)zDIIp{de_|9~s(OG?s@Bg*|S?z|=eRvwN6NSd15M~Tta3(CF7MV#&Mf(f{|?FN3CWe%hfY}v>8UdVW)ArvK5T@JLAXAA=$9^ zjWZK=k&o)$Hu`5=#*pcT@skf2=5m#dbMK&8{P8>EXI&yOt=eW>nE@l)@T+lE$7B#t z-MGdMg6q^XuFd%#1SpK_?TF<&)W*&6u%#Nzxb>a~vz{Ue*^Y6>ubBs<*BLTSK4;ur zcMse*!nmhX1pGf_r18WqyfCJ#j2{e^kkwyg{O(vP((roYBUG&lY8xcfP$6x;A0(u3 z3C#=Ag#1WsaOEI<)Jb^3@gV(*LZbJU28C_H^QI?)!p@w+*Rria34`E%4L=BK-%Uix zbxlH+H#4YjUtbi;>Rmz3q1TDoTLlg5g#7M48k8?O(Q35|8kO9P*dt}oq>W=y8J!QB zJpgW5a9YOQML`>C?jSZSA!y?byg%_q(57YJ?2!xs`K1YL!7ELF%rbf`dZKsKS zd^~91ts(@pHbMKRLZVyF1?~48L1goU1QqMCadeT4MKgnn!=8ci<`OD&ilE{oY`C>d z(4mJouv}cw(X_4@ukQ~!QwoG$?-g|Mcj)|bM9`JGmqD-?bnn|8q+rgVr-PQ_1I1gW zusJt~ruH&bXz>J7vudU)RnMVRTWa#vK7kE>*=eeCe*p%CMpMIRypWbAlDX__9&jlxAs0RJnqw|6RD%=eefbZ8MObtCSa0FIt7Z z{b$p?mNkh!{@nEQsEw%S&zpnyZXt^En}d&mkc(B#p`X0KsHK!SETKLI6-smE(rD2> z++wbk5P|f(TE?Qb=D6?dmcX)K}(uH>aWh|K^gp(UTvE<`?-aW*OulL!Hyj-NkYJvc`UJ85hbTco@X@laknt4Ud#h4ddGw)p2j@nb% z9_HP{l`xKb=Dp|O_dC8d@9(-D0pyPP_-s(TAG6vbm^R~3{DrTSw$3U zhP?JDv0Gr@NKJwgrwRWwseqa zd9`yyT!BhDqF-XG*S7z#X4q?Yfy4Tg9G2m~Kbn;jZ^SSAHz$@8=hilbH2Bj~%ZaCJ zNBXzaXJ%2ASV1PCYGT9xhL$pldQsw4OT>&irFGe0*Gg{kiVq?e8&XnTIW~zok62Xa zEiUQ86OqfxRH#Z_koUdhARGQN$bu^uW#ZrO#Ru0yLPJ_Ot&ReZ&CdBt ziH*YiKWkZ}*fS}l@YDK}6>Vx#H|cd7HW);9oNJ*Rpa&b}Q8xbUI3|-ClOughi0u{sOzW4g`hwdCbG zT-FSa|L_4;Nvz)}#MkNnle*Vvq4Cjr%fS8z+)IOHlVS6rR zZV)B<;L`O%AF_NcxPwez>i85l_{|q zYsq!MbZwSFHn+Wh0e-Z4Ed{PTOO_Q&^WAo@&0y|E{<%xQ6doiKMTZv@+%gpge?61CbMvH zOMI{x*)Z7mx;wlwKu?O>#p$#=GbK03vIUs5xSSvz?AX#Q9-AAiTKdCpp<8{*pL1`8 zOUvfUx3gLXSsnHai!4t=`@qJMZ6sQ#CphQs{YuGy;5ncXb2mu^;wqSFcH?Ebnk7>6 zr|xG_ufj^%?x0q(La2&6w8QGov`MFh4~F4!NxNYzvcz8+x8F3GMYCA{$#pEGL{{zo z*}NNc=h`pXnp;H)b5RH8B-t8)E|2D38$Q7bUU z7=ZgcD3r%Z9@X4HZjy5JOOu{+qIndpOnQXv9IXC>sHBL<6Zz_^ksskG|-lZAG2Tce0L8iQkIy8<)vw) zXCX&(mvCF`Qp~Y=E$J?&6M@(6a#q&MZ*emzk(LMXw?Nv)V(%|GlVnbkWm=s^OP1H0 zYsq!H1{X*gP2&0MRZ!(2Lk=o`5KO>^N(T<)W>jc?W4fSFQDN7%|6r9mfu%G_@H~vz zUn(nA+Rr0)ZC^oChZ^9l!Q#O7ss5ZctaM@ZR$At-9K{+3MNu}fW)l{0HewK_f3->~#|IlXZn`w&~>It_9Mi@9w!it9R6(nK|DlIFG~_^-Ty z+N)XH(rn%TNLAs$_M*Zc7sWb>WjlVwj{djD#}ukMTbS6fO_UguoS{&@`0vj3{96f# zwOc2!-#H29f0BUMug(5HXL!wjad2VR_Jyx8dE_rnXcXY7FeZ5juTEM^ise~^mw~8? z5N_h2FRpTjq-^eU$W8%M35K(y$jr66y#*GBJ~hEUmJv&P=Q^wf2>4E$H{a#X zw!GZM*XK0>lrWfy9jsEGmiCgWw6vF1TmRR@;>KB?m*;a4dGTkJ9M8e&2ry9#eS<6j zx7C@=Lj*FAho{thGnbCr<^hEkFJ#6!YuZnu=~ayphjW~WY&>G}uprl@C1Ib(v3xvp zNEBPd@{cRD$%V^H^+|w+I&pF|x7eJSTowJ%&hT8A>&neTRb4wt zsmOYke@ROloXq!gfZx}o9Ju3Be`PMbO5tYHNDLhjSGQiAB^5k7Y%etc$=f`#S>)yN zYN8S1Xijb(>bN*pZm!E|bBe$Bh!R7(U1hDspSm>?M|BG=Y?bO(R|!Uh%){0;{OiWy zuPR1ui#%_Z%k62*i55TmDNbD2yR7*1ap}}(N_yhEq~+fRY5M^hb& z2?#5qB=JQjN`h+P%y7Gq_-nLC=@4BfhM!TVJl^B`3;;FRlIwAk@xU`)Q5A$*gjeQp zy-d`zc+EEjOL?Z^DO;}UxesUJUiMlqSmVs`JSS&Oxm(D_Q9PS+P4gav>q5?;d}S}` zIsV2K02+{5}y zyjTOAac|2FkW|6$w0rHS?0FQ)bX#+??CBnK${u^BQxYX-^3RXqy5%K57tMb!?pIFs z7orZ3R*#cbo6}~`uvud*ebRHDsiZgMjFQ||-PQNuOc2&HVVHYER){3iqA%&T?6+#^Ehvg{FYfj#0@xF^!vfM7^4xK;c)ozYB z{Y;s9++%q)T0q$Wf}&bD9IkweCl^j+^&%qi2$yg5re{gvHdAcwh%Pi|hiO<_vAR2v zRWI!2uB!hZDz`*Rf_wj;Rc?t%e^t5d8(gMv*sua+VXu+PSoQAzDv$`Hch&qPZ%0TM>oWo=8#R zq9+wtyjZG9c$svE3ym&MemoU5)<;DrMm6Ufu)+LYao!oNfAwCb6_35qQVg1u&IXh` zZptkouqCeKOvjIM;7+!e+(4hhgH!VW%}M<5NUzI_u#s&~&rY+--Kd-v8(U;DiY8Vr z^iJBN_q~lKi!;x&ivkbBqi}tH(y($~HE7g#+@+#vRQ>60DW2q6H7{hfTo=z(5pE{ap3!iUy z8N`o{tIG!*GH|f=rQwNeQAAP%TD?E>+J8RE{K{J8)4CQ$7CMSo3L$FjfYv>*y{fx? z#-d2kF3ElN;-g-cyhV(C+ZHo8r1zYJ&V(KL=@^zR4&sv0>dsIHMq6Bs_*0( z61v^M>!n(`oc-;Ye4_ZW6cH=m4k@g4Gt6MH;C)^P!o>Y8maYD=^IRmCO7^4cKpfa~l>c=Cm{xzV};S=I^Fr$^N&SFk@lJ z?}tsSn}4K<)%ABW!|gg&Ep66w`v@FX-QUo}q7~7J{vE-rir;5qb6EGl8;JRTTUnLx47ISu$P36MaKJ9-v zV_f6qsC{`Y+3U!1`zZ93bD zjZs7fBmVNH&L*{e(0G70bt_j+j=x1eR(?~TE^IDq)KY3fd5OuV3w*322S)xXFa3Fm z%4;YdcevRE;+3B{SV(xK)^?B7A7TpTwPT3l!AOON9)F~RRq{VhVIv!kq|TBz%Y!T4 zg7RvTJD;43ONJvQG3jNF7MtHKqr^J#UbC2FK697e4{-8EYnO!&yRuNwSgeDrUMmtb zhUIb$MpuFwGYeHPCg^f-My=_>ox|?&`nmEp<#lDL%35VX9rpOp zbYv}<)tgn=bg(;{tY(w^!O<)|QJxQSWi_Sx`2TA1N-PV^@^2Ndp1w+Ut^H}OSnbe! zdxkfwY5m%GOPOz1(WJmcgu03I0P{Pza1NdMAyY=OV(DHiPC*PbQB2IM_1+2yr0#%H(w zR^H*ZL%y}7+Pu6V#O&FgZL>s)_nhJWkd7?DKdd9GAPYJ59X3&wSm))J0XbaC!wufO z$-{DYKxTaS!PRfyRK6c;s|ksc=Erh|*caM*<)r}1t(`Yq@_TZ= z_5|KCr>48WtS1Yc+xYtf2eFEqYK>!QhH9aZq@C{IeO{~ZNel8@;7xr`yUpvg=J-#H z#feitV&7^lCaMN|;Z-}glvist)#~$4S{{GVTufjG&S3}Z{O@^YQ^ikMIc1pkUv^go zwnl7wc{H!ZUNa=Ew501i7QU(8d{&A@^8s;5OyG9Hhpewshq{{${UxTbAa_%n1#F>` z4f0=I%HHq?FJXHB^1aYUoh8g+VsDBW=Q~ukz-jrXhN3rw(i1=rj^ z>N6a@U>&Qi)6~Y$7YF)VoJ3e27+0>l!e91J%b!Sd0F=Q zOgWSf@;R+w!ea?+;dks~ds$M+(OUoAb`K%vhs1ujDHa8*`dN@acf7D)9 zUYH#?yZP&9^Ps{{>O4MU&vRr*K|9S>LTt%rPP_ar=kVhQK7}r;>pKFLVFdhBE$C4}ZyMtVLhKsyEA4-Qwi+`X2<+A2nCT z%j{{vf01wZ$wft`7J>T7&~4%h?7aJMyWfhktfM;*>_dR(#s94YIrPJe%$pv%LoPmVd)( T)?(97r`ZXEW+KW&1!MmY)XR<0 delta 8371 zcmbW6d0b6t9RI)Hd(XN1VjatnNG3~?EZMSTL}-yILZniWP?4CrC2JJTl`G1Yofs~z zt*lWY+t|rAgRvX3jmhuRy}$L}pLv=0bIv{IInQ_hK98JRiqog$hMot*8HzKfqbkZk=I6ic&Ck3dx!$?)$JB^SLWVNC*2;t$|lqEbH_|0uAM6F=Bk>`uZCEcVyKWDqVXiPGFi zxY?N~eX^C@brlIuR}j5wPQr_1qIr)XY}$_k=gfnbFQC9P>xqwiprB|(%Igjkl!3_D@Rml-^(WdgmVzUpk)37= zj_FVAmq)?r--svIq2R6Xf!o30CVaT?P0fJV|8E;(Hc;?ktbA813O?>gJZvV73cpNb z_J#8o6CD{s^1DJ4&YChzW} zv|EpePQ_8W!EgeqIYaYDLV|EdTD&KoXht3_ajFMzzerifz~%WwL3hqo z;QGvE1Fxxva2s@yH)t9X9X!Xs-wlQhf3}jn!nkBgD^*!vNm|23BQ@D;u! zZXnv`Y9-H_$=B_A5c?MMb*E#*Ba-;e&yaA(DZZbN{1B|?moIt}hY1pW-WuZUB#Be< zcA}Sty%LuWhmo#*Z491nB?rutbg1V>)G18jacU89;B-mvxLZioax1yGLgG`C*&K#Q z0#iMSLfT70Zy`GRO}Ft=o{gXNlJPq|h)++JM0VPQlW4wH);i$e zRg&aea28#ZBux+1|2x4-?jA2$Rt=|o<0M(#x;^TTgJf&Qb410DlIetn$+?D=#Q7T}7asW#Pb!t%VC0wN7|G2u#n4Ew9R>x@D(>{_8PoD$zQs{p*B&>X6cGa0YvU=rE7w+kTLV6yX#CNj@u*M z?Pdrd_GlnI@cn0^ute#Z8MmSO3s!RPXVTj%))3DvkiI+um94lT{Wx(Cip)D{b#fW< z#R)+yH^b&`HlBKDC68c1mI5!|;VP)cv>>W>6KcD|G^K@Ba`F+Ovm*q)cu?qKsE_)7 zX};jza4+$=aG`sX??gwFgg&AJvAeh6c>{^(j8y2~4Jw?yRq$_gooHFI5K{e`_>{8{ zJ@O(^Zjdl(-v-$9vk+HYLA<9-h#!Up>^>)?nq!H7G74#r>Js&MDx{BjhbE-jM#Ue3 zA^kIKy{fh__X*;4(i366G>dp?Jz@S)iICU4|qqv6Xy;rFCd zNDQxq^JV2|M2=g@UG@l>IB#fQ;pS;*YV3L8t`Q3vcSU%1BnR<7_qOoDMMd20 zgYZ(=Lo`2EcqxYsW9)^OpZlWGXd%4&o{I*wzl{actmJ`xg!lFEUY`?SW8%Id*ap|# z!0uo&xShD)NU$8gUj`Ar{py3yaXkq9iumuFDSQq<;>o=!{8y8B@{&Y4S53UUQj~4Q z_306!{D2Sf*4Luqoet$%BdQj_xiSMpO)kPPtGlS1c!B6ZU-5?wIBC{1u~A)Ubc&1U zIP(E|zeLgLC^VD(N^Ex%CR=u2Y*%H6zGIr`?qontU;ek~eyfsromTAmW-SuPRIyh> zB%UoRM9(1^D8ow8b4DHFq}t*DFZ{mJBnIXqEc17YBP&YKjOL0_y+Vl=MTt=ZU5VEA z5Mv@8(Ib8nC-?e?s4_u}TY8dsK$JMcsXsa-S8+xMm?APlOf)3uh_^V2iTRN9SeBJM z>zuf_3h}#BD=ryOLOgJnxGWaW>nYXT?~oe))&hqJ}5e!#A}Uu z6E)L_H%1o_jTtFcR#yms{;-{;XM3EjcsedlY@i&>G#@kOSWp$gkLHU;27~ICj zh}kxNYicF?Z;{z~?Lu+uVdMH+GW%5?#5smsS(|Q1D=^FJFBlxOygzc{b0k1 zeP!1Z3*fbS*`3~%#0&1o?iS%gc0RJlN9~B4Es;I_>l$${h3xqu58{?4AR3WsC8yMpw-|iX0B`<5?)2>x%IQKI*SC_p zRKN-MKasm$uO_NpB=1`+g_9nV4_r75eL`z1d7M-}8Ce_(b^#KP+&DARl?d4JP)Ihpab1Vt2JXw8R}Nd@ql^e4l8t zD4#lK7xC(N`P3taiTdZtlfpU@|J+bMYXE#?j;lPi68HV<+Bn`MpIdl>c=Q+fq6y(d zU$ycT>JR9g%<|2yKExfG%6BYzO!Oj9Uibu>@*E>SFi0exog%+r&{Pur6(YZ};woCK zKjpV?>xcsT$?r64Ml4Wyfnu_(N+TIOmtSXRU#^K!W7P>_> zBD0P#D8e7r4Av@eZKU2kipnvNbX1CxUDL7g=&Dpa%pw{%Ua23A1+3Vvtd)Y@?ryoV zwFL{g{Lo6C(@fc`l|KYKB2f-5#mZN+awxXT+^MtDHw6=p-lPn4Z;Y*(yNx5gtmK~g zHYSZxj$3R;td%Q6@jNG8Qih&~YRyZOVHzwn&RrQ+ld3lsC?k)7X@4pwCln)$LzM}S z0-accGEoRvJhhcY=TlsMX6nbHWVt-P-^{DBGLrYqCp0w9r2xxla& z=L0XSo3f{lRu+*=#KItdo^o)KXb?8rRdc%JQ|SEm6~y*B&7}>7MdV1~e8Ps=Tu| zglKTS^6zBBHlpu77;Hm}l%{-BfyA&aS^2gO%5L~`<=Y|GAW4Dpohu|VMkqh6LLV?` zy7F@%7V-}(zcxoS9LQJEjCYvltV&r6d1KpNRTE!??fc8BW>NTkrkB)%s4D$LORg5TU_gTUA>}V!@V` zs$Cvm;oOA=+n~}}WiF~DwjZxL=nWOc?ob`R4IB0EqB<@MAzs`>RpNdQCmr)uXBX7R zfn=Vl)C3c`Z&Y3RJB+Bybk&{TYXrEddL`2l&v#P29glfZJylir>%v5DRbQ&@aDb7n z`nT&lEGW@R9&adBOFB5htHagO2<%`ky-*7RRu)mL7UPOhE}N@mox#rE)ec^liBEJ> z|0IFxKfF}8X?zPB8K-Xh!H%f)6}8JmXzI6J>dpfZJ=4n6Jp$hmPdBOi;f#d=$d5Vv*I;kkQ|vsb7i12@5I}vLp`;z4OF~2R-H2+ZMy$O8y6q6lDp-oO}Ei@dyzV~ z5~j_qtzIVHb1dQW5}@vhP8BLv$lw^yHP^%#A>QC*^hvzT9~OD3L% z%A2Um?4jcL8|t!7Q2noq)MaB@BZZDsUr0Gj{L4ah#f=c+<}1~A?=;4>OntvCuCqU? zA3R7Q-g#U7DAJXfAF2ONuOjw|Qh#b}hyH)@MU7^1ZyX37($szlURYrz9}Cd@UoUU01%yp!9nd(=swT3OXq-~vBl~~Tv~7m# z?$b1F-3s6fk2KCpLeUSTX(=p3{OysdZ)1}Ku;-FAX&&7_Y%l9=N%|Q1* zZ8VI~c=$!aY4&OQBsw6Yb+qxLtCiegq^56AJL25onj!m&iK3cnd^+63R;#vVR5prH zpjI>Xzx_z*qcw5o;3HWRG_xD8LshKMBpd#KQ}pVpNv`3|)>d-9PBZV|U)cL;HOoA6 z(A$mGEISAZ4P}~asVAKEt!8=e#zglMG&wHE(UN6rR=>bT#yl zOtW*a4{_#g&8}!WqA#hMz0t^w3u|c(zlq1WLYT%-GvMU5nj?%G6;G|?!3#7e-A*Cg zoHVC~;Ke&RnoGy=`|$HN2EViM+d<8fiU6D+9M!x>tHuX)TG2^Bv5D4-el;2xtd-Y& zja+|Ft7>r>&V5VUz=CV(4Q+$#aK@{8gVtpR!l`<_cHl50ymz#f+^wB9B%}p0;1q4_ z>_@~d-r8wHAaVbP+C*b44wdR?(|kOLcNnx82j&vH`f68B`~}TujE$)Wvc((`oIAb=f$49;hujdX0E^iniq03AB2Kf3#;Zp{n#p+B4@vh<^S_Tc-L2|3VRD zB^zF9%NigbTv=`b-^KZ6Ww@w52E^WbQ4}8 zI^vt^rXKwb)vc#)+OO|%<`bx!_8U|_^k3a<*%uVG)w<;T52!H`U8=*Mi2pri-TXn0 zMBhTJtrFq#Ubnsn5>3B1Hh!M3+ij{Ko|C3CYw+BWblv{T zKjQ;+bjOB1#=aq6cf1l|8WFEMIUE|u=%zappGG9l(UrQSW1~`9L&X0~XAB_mtdY74 z(=b8U3El05Q0*^Ub(QPzFJ6rW-J5>ceM~!m?)9<0)@fwErmp&06pT6GMZ9dOzT2nQMA4n}eX<|HDL?4_9zoUfuj&H>F>$`1epJ~M96T=6&r5~``!DOW z0zRQ;G}mWcfMi~N`kcohL=!6Yc{Ne6$XUN}^3OyCf9kikSr6N%>yQ2Jg@)&-{$#Qg z0!8UhyWK?GE_|&&<6ne$&(vRBiIo{*^tT?ssn$-{-wm2Z_@n>U8~cO)>#+P1Z?meI zL~5*X7;g6ITc3>&oEw>w`^jvB0Ud(snm>9LNsNmJxtm*f4`Ab_AxDkPeK(pv4a*iK z(tVcuqxnaPIVw7iO&zAN%-CvD8@_GypY+~1DMWAj62@v{`-FDJOJg#*g)uFpHBYs@ zVvLF&VXmCgM`BzPc7_Z8pEu0y6Na$aG~FOEPn$WBjT4if@BpKKN;ji#(hue}DRDC6 z(0QK5oQ-wN>WnHje)Mc+9=D{PVBWQCm%xvVzc2mKI5WqGosE?TnwTHvY!ywDhp~g% zEANAh`x|=}xSFRFIH=4A%(JA99nc-d&~%EX1hS`4{1*$hqVbdjM&K%%B2CkVbA64@ zdrEYyeXG#eB>PCC-S#Ht4wj87S#cihFaL@7}i*DO~UcLjJGTb&Fu2b?;qGHWib zV`JLBZnCK{p-B;O#_Vr)+{F}nlUsJB?pWSrEO!#cW8_G#I5B@qWtLa@yin-fhx)-2;%Ynrst$+JYkVc1rs8glbrgaBkHaS{lh|OaEGu`%=q|dXi0Q9%xFom-Mw9x0h6?{|9m;X!rmC diff --git a/ts/pokerth_af.ts b/ts/pokerth_af.ts index dbaa75ed..187d7107 100644 --- a/ts/pokerth_af.ts +++ b/ts/pokerth_af.ts @@ -12,22 +12,22 @@ Everything OK! - Alles is oukei! + Alles is oukei! Some cards pictures are missing, please contact style maintainer for this issue. - + Sommige kaarte word vermis. Kontak asseblief die styl se onderhouer oor hierdie probleem. Some style fields are missing, please contact style maintainer for this issue. - Sommige stylvelde word vermis. Kontak asseblief die styl se onderhouer oor hierdie probleem. + Sommige stylvelde word vermis. Kontak asseblief die styl se onderhouer oor hierdie probleem. This style is outdated, please contact style maintainer for this issue. - Hierdie styl is verouderd. Kontak asseblief die styl se onderhouer oor hierdie probleem. + Hierdie styl is verouderd. Kontak asseblief die styl se onderhouer oor hierdie probleem. @@ -40,12 +40,20 @@ is/are missing. Anyway you can play with this deck, because the missing content will be filled up by PokerTH default card deck. Please contact the card deck style builder via "%3". - + Gekose kaartpakstyl "%1" is moontlik onvolledig of gebreek. + +Die waarde(s) van: +%2 +ontbreek. + +Jy kan egter wel met hierdie pak bly speel, want die vermiste inhoud sal deur PokerTH se verstek pak aangevul word. + +Kontak asseblief die kaartpakstyl-bouer via "%3". Card Deck Style Error - Fields content missing - + Kaartpakstyl-fout: veldinhoud word vermis @@ -54,12 +62,16 @@ Please contact the card deck style builder via "%3". %2 Please contact the card deck style builder via "%3". - + Kon een of meer prente uit die huidige kaartpakstyl "%1" nie vind nie: + +%2 + +Kontak asseblief die kaartpakstyl-bouer via "%3". Card Deck Style Error - Pictures missing - + Kaartpakstyl-fout: prente word vermis @@ -69,34 +81,17 @@ The current PokerTH card deck style version is "%2", but this deck has Anyway you can play with this deck, because the missing content will be filled up by PokerTH default card deck. Please contact the card deck style builder via "%4". - + Gekose kaartpakstyl "%1" is moontlik verouderd. +Die huidige PokerTH-kaartpakstyl is weergawe "%2", maar dié styl is weergawe "%3". + +Jy kan egter wel met hierdie pak bly speel, want die vermiste inhoud sal deur PokerTH se verstek pak aangevul word. + +Kontak asseblief die kaartpakstyl-bouer via "%4". Card Deck Style Error - Outdated - - - - Selected card deck style "%1" seems to be outdated. - The current PokerTH card deck style version is "%2", but this style has version "%3" set. - -Please contact the card deck style builder %4. - Gekose kaartpakstyl "%1" is moontlik verouderd. - Die huidige PokerTH-kaartpakstyl is weergawe "%2", maar dié styl is weergawe "%3". - -Kontak asseblief die kaartpakstyl-bouer %4. - - - Selected card deck style "%1" seems to be incomplete or defective. - -The value(s) of "%2" is/are missing. - -Please contact the card deck style builder %3. - Gekose kaartpakstyl "%1" is moontlik onvolledig of gebreek. - -Die waarde(s) "%2" ontbreek. - -Kontak asseblief die kaartpakstyl-bouer %3. + Kaartpakstyl-fout: verouderd @@ -106,16 +101,6 @@ Please check the style file or choose another style! Kon nie kaartpakstyl-lêer laai nie: %1 Kontroleer dus die styllêer, of kies 'n ander styl! - - - Selected card deck style "%1" seems to be incomplete or defective. -The card picture(s) "%2" is/are not available. - -Please contact the card deck style builder %3. - Gekose kaartpakstyl "%1" is moontlik onvolledig of gebreek. -Die kaartprent(e) "%2" is nie beskikbaar nie. - -Kontak asseblief die kaartpakstyl-bouer %3. @@ -252,159 +237,161 @@ Kies asseblief 'n speltafelstyl en probeer weer! Dialog - Dialoog + Dialoog Export as HTML - Voer uit as HTML + Voer uit as HTML Export as txt - Voer uit as TXT + Voer uit as TXT Save as ... - Stoor as... + Stoor as... Delete - Skrap + Skrap Preview: - Voorskou: + Voorskou: Game: - + Spel: Log File - Loglêer + Loglêer Analyse Logfile ... - - - - - PokerTH - Delete log files - PokerTH – Skrap loglêers + Ontleed loglêer... + PokerTH - Delete log files + PokerTH – Skrap loglêers + + + Do you really want to delete the selected log files? - Wil jy regtig die gekose loglêers skrap? + Wil jy regtig die gekose loglêers skrap? - + Remove log file - + Verwyder loglêer - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + PokerTH kan nie hierdie loglêer verwyder nie. Bevestig dat jy skryftoegang tot hierdie lêer het! - + Export PokerTH log file to HTML - Voer PokerTH-loglêer uit na HTML + Voer PokerTH-loglêer uit na HTML - + PokerTH HTML log (*.html) - PokerTH se HTML-log (*.html) + PokerTH se HTML-log (*.html) - + Export PokerTH log file to plain text - Voer PokerTH-loglêer uit na skoonteks + Voer PokerTH-loglêer uit na skoonteks - + PokerTH plain text log (*.txt) - PokerTH se skoonteks-log (*.txt) + PokerTH se skoonteks-log (*.txt) - + Save PokerTH log file - Stoor PokerTH-loglêer + Stoor PokerTH-loglêer - + PokerTH SQL log (*.pdb) - PokerTH-SQL-log (*.pdb) + PokerTH-SQL-log (*.pdb) - + No file received. - + Geen lêer ontvang nie. - + File rejected because of too many uploads. - + Lêer is verwerp weens te veel oplaaie. - + File rejected because of too many recent uploads. Please try again later. - + Lêer is verwerp weens te veel onlangse oplaaie. Probeer asseblief later weer. - + The file is too large. - + Die lêer is te groot. - + This file is not a valid and current PokerTH log file. - + Hierdie lêer is nie 'n geldige, huidige PokerTH-loglêer nie. - + Internal error. Please try again later. ID: - + Interne fout. Probeer asseblief later weer. ID: - - + + Uploading log file - + Oplaai van loglêer - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Kon nie oplaai nie. Kontroleer asseblief jou internetverbinding! +Om loglêers op te laai, kan misluk as jy 'n HTTP-instaanbediener gebruik. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - + Die webbediener kon nie die loglêer verwerk nie. +Bevestig asseblief dat jy 'n geldige PokerTH-loglêer oplaai. - - + + Failure reason: - + Rede vir mislukking: @@ -430,18 +417,18 @@ Please verify that you are uploading a valid PokerTH log file. Rapporteer onvanpaste avatar - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Jy sal nie meer kletsboodskappe of speluitnodigings van hierdie gebruiker kry nie.<br>Wil jy regtig speler <b>%1</b> op die ignoreerlys sit? - - + + PokerTH - Question PokerTH - Vraag - + Are you sure you want to report the avatar of "%1" as inappropriate? Is jy seker jy wil die avatar van "%1" as onvanpas rapporteer? @@ -475,36 +462,6 @@ Please verify that you are uploading a valid PokerTH log file. About Aangaande - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Singleplayer games with up to 9 computer-opponents</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-size:8pt;"> with result tables</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Poker-enjin vir die gewilde &quot;Texas Hold'em&quot;-poker</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Enkelspeler-spelle met tot 9 rekenaaropponente</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">- Multispeler-netwerkspelle<br />- Aanlyn spelle oor die internet<br />- Aanknip-GUI met aanlyn stylgalery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0057ae;">Aanlyn gradeer-webwerf</span></a><span style=" font-size:8pt;"> met resultaattabelle</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - @@ -525,7 +482,17 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> + + + + + Translation + Vertaling @@ -537,197 +504,14 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> +</style></head><body style=" font-family:'Liberation Sans'; font-size:9pt; font-weight:400; font-style:normal;"> <table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> <tr> <td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Project page: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Authors: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial idea, basic architecture, engine development</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - basic architecture, network development, windows package, MacOS package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Projekbladsy: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> </span><a href="http://www.pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> #pokerth (irc.freenode.net)</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Outeurs: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - aanvanklike idee, basiese argitektuur, GUI-werking, GUI-grafikawerk, Linux-pakket</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - aanvanklike idee, basiese argitektuur, enjinontwikkeling</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - basiese argitektuur, netwerkontwikkeling, Windows-pakket, MacOS-pakket</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-size:8pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-size:8pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - aanvanklike GUI-grafikaontwerp</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Samuel Murray, afrikaans[at]gmail[dot]com</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-size:8pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;"> - </span><span style=" font-size:8pt;">for different popular avatar picture resources</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - for people avatar pictures</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">ZeiZei</span><span style=" font-size:8pt;"> </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - for &quot;misc&quot; avatar pictures</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-size:8pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - for different gpl licensed sounds</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">doc_dos</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - for self recorded chip sounds</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - for different patches</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">kraut</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - for internet-game-server hosting and administration</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">danuxi</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - for startwindow background gfx and danuxi1 table background</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">heyn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - for moderating forum and organise bugtracker and feature requests</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">texas_outlaw</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - for new table sounds</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-size:8pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;"> - </span><span style=" font-size:8pt;">vir 'n verskeidenheid gewilde avatarprente</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - vir mensavatar-prente</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">ZeiZei</span><span style=" font-size:8pt;"> </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - vir &quot;diverse&quot; avatarprente</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-size:8pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - vir 'n verskeidenheid GPL-gelisensieerde klanke</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">doc_dos</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - vir selfopgeneemde skyfieklanke</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - vir 'n verskeidenheid pleisters</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">kraut</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - vir huisvesting en administrasie van internetspelbediener</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">danuxi</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - vir beginvenster-agtergrondprent en Danuxi1-tafel se agtergrond</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">heyn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - vir modereer van forum en hantering van foutopsporing en wenslys</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-weight:600;">texas_outlaw</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;"> - vir nuwe tafelklanke</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Project page: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> </span><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> #pokerth (irc.freenode.net)</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Authors: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" ">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" ">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - initial idea, basic architecture, engine development</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" ">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - basic architecture, network development, windows package, MacOS package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" ">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - initial gui graphics design</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Projekbladsy: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> </span><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> #pokerth (irc.freenode.net)</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; "></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Outeurs: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" ">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - aanvanklike idee, basiese argitektuur, GUI-werking, GUI-grafikawerk, Linux-pakket</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" ">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - aanvanklike idee, basiese argitektuur, enjinontwikkeling</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" ">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - basiese argitektuur, netwerkontwikkeling, Windows-pakket, MacOS-pakket</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" ">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - aanvanklike GUI-grafikaontwerp</span></p></body></html> - - - - - Translation - Vertaling - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" ">translator name - mail address</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" ">Samuel Murray, afrikaans[at]gmail[dot]com</span></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">Samuel Murray, afrikaans[at]gmail[dot]com</span></p></td></tr></table></body></html> @@ -735,52 +519,6 @@ p, li { white-space: pre-wrap; } Thanks to Dankie aan - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"> - </span><span style=" ">for different popular avatar picture resources</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - for people avatar pictures</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">ZeiZei</span><span style=" "> </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - for "misc" avatar pictures</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - for different gpl licensed sounds</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">doc_dos</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - for self recorded chip sounds</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - for different patches</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">kraut</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - for internet-game-server hosting and administration</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">danuxi</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - for startwindow background gfx and danuxi1 table background</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">heyn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - for moderating forum and organise bugtracker and feature requests</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"> - </span><span style=" ">vir 'n verskeidenheid gewilde avatarprente</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - vir mensavatar-prente</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">ZeiZei</span><span style=" "> </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - vir "diverse" avatarprente</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - vir 'n verskeidenheid GPL-gelisensieerde klanke</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">doc_dos</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - vir selfopgeneemde skyfieklanke</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - vir 'n verskeidenheid pleisters</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">kraut</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - vir huisvesting en administrasie van internetspelbediener</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">danuxi</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - vir beginvenster-agtergrondprent en Danuxi1-tafel se agtergrond</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">heyn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" "> - vir modereer van forum en hantering van foutopsporing en wenslys</span></p></body></html> - @@ -791,181 +529,13 @@ p, li { white-space: pre-wrap; } Third party libs - + Derdeparty-biblioteke Close Toemaak - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Poker engine for the popular "Texas Hold'em" Poker</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Singleplayer games with up to 9 computer-opponents</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">© 2006-2009, FHammer, FThauer, LMay</p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Poker-enjin vir die gewilde "Texas Hold'em"-poker</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Enkelspeler-spelle met tot 9 rekenaaropponente</p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Multispeler-netwerkspelle<br />- Aanlyn spelle oor die internet<br />- Aanknip-GUI met aanlyn stylgalery</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">© 2006-2009, FHammer, FThauer, LMay</p></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Poker engine for the popular &quot;Texas Hold'em&quot; Poker</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Singleplayer games with up to 9 computer-opponents</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Multiplayer network games<br />- Internet online games<br />- Changeable gui with online style gallery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Online ranking website</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> with result tables</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Poker-enjin vir die gewilde &quot;Texas Hold'em&quot;-poker</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Enkelspeler-spelle met tot 9 rekenaaropponente</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">- Multispeler-netwerkspelle<br />- Aanlyn spelle oor die internet<br />- Aanknip-GUI met aanlyn stylgalery<br />- </span><a href="http://online-ranking.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0057ae;">Aanlyn gradeer-webwerf</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> met resultaattabelle</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L'; font-size:14pt;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">© 2006-2011, Felix Hammer, Florian Thauer, Lothar May</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Project page: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Authors: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, gui implementation, gui graphics editing, linux package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial idea, basic architecture, engine development</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - basic architecture, network development, windows package, MacOS package</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - initial gui graphics design</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Projekbladsy: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span><a href="http://www.pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">IRC: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> #pokerth (irc.freenode.net)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Outeurs: </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Felix Hammer (</span><a href="mailto:doitux@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">doitux@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - aanvanklike idee, basiese argitektuur, GUI-werking, GUI-grafikawerk, Linux-pakket</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Florian Thauer (</span><a href="mailto:floty@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">floty@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - aanvanklike idee, basiese argitektuur, enjinontwikkeling</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Lothar May (</span><a href="mailto:lotodore@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">lotodore@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - basiese argitektuur, netwerkontwikkeling, Windows-pakket, MacOS-pakket</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> Oskar Lindqvist (</span><a href="mailto:tranberry@pokerth.net"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; text-decoration: underline; color:#0000ff;">tranberry@pokerth.net</span></a><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">)</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - aanvanklike GUI-grafikaontwerp</span></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></td></tr></table></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">for different popular avatar picture resources</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for people avatar pictures</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for &quot;misc&quot; avatar pictures</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different gpl licensed sounds</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for self recorded chip sounds</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for different patches</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for internet-game-server hosting and administration</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for startwindow background gfx and danuxi1 table background</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for moderating forum and organise bugtracker and feature requests</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - for new table sounds</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://commons.wikimedia.org/wiki/Main_Page"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">Wikimedia Commons</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;"> - </span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;">vir 'n verskeidenheid gewilde avatarprente</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - vir mensavatar-prente</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">ZeiZei</span><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> </span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - vir &quot;diverse&quot; avatarprente</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://kde-look.org/"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600; text-decoration: underline; color:#0000ff;">http://kde-look.org/</span></a></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - vir 'n verskeidenheid GPL-gelisensieerde klanke</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">doc_dos</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - vir selfopgeneemde skyfieklanke</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">thiger, dunkanx, BerndA, coldz</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - vir 'n verskeidenheid pleisters</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">kraut</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - vir huisvesting en administrasie van internetspelbediener</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">danuxi</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - vir beginvenster-agtergrondprent en Danuxi1-tafel se agtergrond</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">heyn</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - vir modereer van forum en hantering van foutopsporing en wenslys</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt; font-weight:600;">texas_outlaw</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:14pt;"> - vir nuwe tafelklanke</span></p></td></tr></table></body></html> - @@ -974,7 +544,11 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> @@ -986,135 +560,142 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:26px; font-weight:400; font-style:normal;"> +<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> +<tr> +<td style="border: none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:8pt;">Samuel Murray, afrikaans[at]gmail[dot]com</span></p></td></tr></table></body></html> aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 vir Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Aangaande PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - Wikimedia Commons: vir 'n verskeidenheid gewilde avatarprente - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: vir mensavatar-prente - + - ZeiZei: for misc avatar pictures - - ZeiZei: vir diverse avatar-prente + - ZeiZei: vir diverse avatarprente - + - kde-look.org: for different gpl licensed sounds - kde-look.org: vir 'n verskeidenheid GPL-gelisensieerde klanke - + - doc_dos: for self recorded chip sounds - doc_dos: vir selfopgeneemde skyfieklanke - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - thiger, dunkanx, BerndA, coldz, drull: vir 'n verskeidenheid pleisters - + - kraut: for internet-game-server hosting and administration - kraut: vir huisvesting en administrasie van internetspelbediener - + - danuxi: for startwindow background gfx and danuxi1 table background - danuxi: vir beginvenster-agtergrondprent en Danuxi1-tafel se agtergrond - + - heyn: for moderating forum and organise bugtracker and feature requests - heyn: vir modereer van forum en hantering van foutopsporing en wenslys - + - texas_outlaw: for new table sounds - texas_outlaw: vir nuwe tafelklanke - - - - Poker engine for the popular Texas Hold'em Poker - - - - Singleplayer games with up to 9 computer-opponents - + - Poker engine for the popular Texas Hold'em Poker + - Poker-enjin vir die gewilde Texas Holdem-poker - - Multiplayer network games - + - Singleplayer games with up to 9 computer-opponents + - Enkelspeler-spelle met tot 9 rekenaaropponente - - Internet online games - + - Multiplayer network games + - Multispeler-netwerkspelle - - Changeable gui with online style gallery - + - Internet online games + - Internetspelle aanlyn + - Changeable gui with online style gallery + - Aanknip-GUI met aanlyn stylgalery + + + - Online ranking website with result tables - + - Aanlyn gradeer-webwerf met resultaattabelle - + Project page: - + Projekbladsy: - + Authors: - + Outeurs: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + aanvanklike idee, basiese argitektuur, GUI-werking, GUI-grafikawerk, Linux-pakket - + initial idea, basic architecture, engine development - + aanvanklike idee, basiese argitektuur, enjinontwikkeling - + basic architecture, network development, windows package, MacOS package - + basiese argitektuur, netwerkontwikkeling, Windows-pakket, MacOS-pakket - + initial gui graphics design - + aanvanklike GUI-grafikaontwerp @@ -1218,23 +799,23 @@ p, li { white-space: pre-wrap; } OK - + Oukei Ctrl+S - + Ctrl+S changeCompleteBlindsDialogImpl - + Manual Blinds Order Handmatige blindesvolgorde - + You cannot set more than 30 manual blinds. Jy kan nie meer as 30 handmatige blindes opstel nie. @@ -1262,60 +843,54 @@ p, li { white-space: pre-wrap; } OK - + Oukei changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. - Jy kan nie met "Human Player" as kennaam by internet-spel-voorkamer aangesluit nie. + Jy kan nie met "Human Player" as kennaam by internetspel-voorkamer aangesluit nie. Kies asseblief 'n ander naam. - - - + + + Nick name: Kennaam: - + Your player name is already used by another player. Please choose a different name. Jou spelernaam word reeds deur 'n ander speler gebruik. Kies asseblief 'n ander naam. - + The player name is too short, too long or invalid. Please choose another one. Die spelernaam is te kort, te lank of ongeldig. Kies asseblief 'n ander naam. - + There is already a game with your chosen game name. Please choose another one! Daar is reeds 'n spel met jou gekose spelnaam. Kies asseblief 'n ander naam. - + There is a forbidden word in your chosen game name. Please choose another one! Daar is 'n verbode woord in jou gekose spelnaam. Kies asseblief 'n ander naam. - There is already a game with your choosen game name. -Please choose another one! - Daar is reeds 'n spel met jou gekose spelnaam. -Kies asseblief 'n ander naam. - - - - + + Game name: Spelnaam: @@ -1343,27 +918,27 @@ Kies asseblief 'n ander naam. connectToServerDialogImpl - + Resolving address... Los tans adres op... - + Connecting to server... Koppel tans aan bediener... - + Starting session... Begin tans sessie... - + Connection established! Gekoppel! - + Reading server list... Lees tans bedienerlys... @@ -1483,7 +1058,7 @@ Kies asseblief 'n ander naam. Allow spectators to watch the game - + Laat toeskouers toe om die spel te kyk @@ -1507,10 +1082,10 @@ Kies asseblief 'n ander naam. <i>Double blinds every %1'th hand</i> - <i>Dubbelblindes elke %1e hand</i> + <i>Dubbelblindes elke %1'e hand</i> - + %1's game %1 se spel @@ -1638,13 +1213,13 @@ Kies asseblief 'n ander naam. Players - Spelers + Spelers Spectators - + Toeskouers @@ -1682,11 +1257,11 @@ Kies asseblief 'n ander naam. p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Liberation Sans'; font-size:18px; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> - - - - Timeout for player action (sec): - Uittelling vir speleraksie (sek): + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Liberation Sans'; font-size:18px; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><br /></p></body></html> @@ -1736,10 +1311,6 @@ p, li { white-space: pre-wrap; } &Leave Game &Verlaat spel - - Join &any game - Sluit aan &by enige spel - @@ -1752,24 +1323,6 @@ p, li { white-space: pre-wrap; } &Join Game &Sluit by spel aan - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Click here to view the online rankings</span></a></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://online-ranking.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Kliek hier om die aanlyn graderings te bekyk</span></a></p></td></tr></table></body></html> - @@ -1812,85 +1365,74 @@ p, li { white-space: pre-wrap; } Lobby-Chat Voorkamer-klets - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://www.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">http://www.pokerth.net</span></a></p></body></html> - gameLobbyDialogImpl - + Starting game. Please wait ... Spel begin. Wag asseblief... - + Joining a private Game By 'n privaat spel aansluit - + You are about to join a private game. Please enter the password! Jy gaan nou by 'n privaat spel aansluit. Tik asseblief die wagwoord in! - + open maak oop - - - - + + + + Game Info Spelinfo + + + Spectate + Toeskou + - - + + Game Spel - - + + Players Spelers - - + + State Staat - - R - R - - - + + P P - - + + Available Players Beskikbare spelers @@ -1909,190 +1451,161 @@ p, li { white-space: pre-wrap; } Player infos ... Spelers se info... - - - - - Standard - Standaard - - - - - - Registered players only - Net geregistreerde spelers - - - - - - Invited players only - Net genooide spelers - - - - - - Ranking game - Gradeerspel - - - Connected players - max. %1 - Gekoppelde spelers: maks %1 - - - - - - T - T - - - - Click here to view the online rankings - - - - - Spectate - - - - - - - Time - - - - - - Admin action ... - - - - - Total kickban - - Report inappropriate game name Rapporteer onvanpaste spelnaam - - Close game - + + + + Standard + Standaard - - - + + + + Registered players only + Net geregistreerde spelers + + + + + + Invited players only + Net genooide spelers + + + + + + Ranking game + Gradeerspel + + + + + + T + T + + + + + sec (action) sek (aksie) - - - + + + sec (hand delay) sek (handvertraging) - Connected players - Max. %1 - Gekoppelde spelers: maks %1 - - - + running aan die gang - - + + running games: %1 spelle aan die gang: %1 - - + + open games: %1 oop spelle: %1 - - + + Players (%1) - + Spelers (%1) - - - + + + Spectators (%1) - + Toeskouers (%1) - + Invite %1 Nooi %1 - + Ignore %1 Ignoreer %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 het %1 uitgenooi na %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - <span style='color:red;'>%1 het die uitnodiging na %2 van die hand gewys.</span> + <span style='color:red;'>%1 het die uitnodiging na %2 van die hand gewys.</span>; - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - <span style='color:red;'>%1 kan nie by %2 aansluit nie want hy of sy is besig.</span> + <span style='color:red;'>%1 kan nie by %2 aansluit nie want hy of sy is besig.</span>; - - + + The game will start in<br><b>%1</b> seconds. Die spel begin oor<br><b>%1</b> sekondes. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Jy het by 'n spel aangesluit met die tipe "nooi-alleen". Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers te regskliek. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Jy is deur <b>%2</b> na die spel <b>%1</b> genooi.<br>Wil jy by daardie spel aansluit? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Jy sal nie meer kletsboodskappe of speluitnodigings van hierdie gebruiker kry nie.<br>Wil jy regtig speler <b>%1</b> op jou ignoreerlys sit? - - + + connected players: %1 gekoppelde spelers: %1 - + Waiting for the start of the next hand to rejoin the game ... Wag tans vir die begin van die volgende hand om weer by die spel aan te sluit... + + + Click here to view the online rankings + Kliek hier om die aanlyn graderings te bekyk + + + + + + Time + Tyd + @@ -2100,1322 +1613,1326 @@ Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers t Wys spelerstatistiek - sec (action) - sek (aksie) + + + Admin action ... + Adminhandeling... - sec (hand delay) - sek (handvertraging) + + Total kickban + Totale skopverban - Connected players - Gekoppelde spelers + + Close game + Maak spel toe - + hands hande - + minutes minute - + double blinds dubbelblindes - + manual blinds order handmatige blindesvolgorde - + Server Error Bedienerfout - + You should not kick yourself from this game! Jy moenie jouself uit hierdie spel skop nie! - + search for player ... soek vir speler... - + Chat is only available to registered players. Klets werk net vir geregistreerde spelers. - + Invite player ... Nooi speler... - + Ignore player ... Ignoreer speler... - + %1 is playing in "%2". %1 speel in "%2". - + %1 is not playing at the moment. %1 speel nie op die oomblik nie. - - + + PokerTH - Info Message PokerTH - Inligtingsboodskap - - - - + + + + PokerTH - Question PokerTH - Vraag - + Afghanistan Afghanistan - + ALand Islands Alandeilande - + Albania Albanië - + Algeria Algerië - + American Samoa Amerikaanse Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarktika - + Antigua And Barbuda Antigua en Barbuda - + Argentina Argentinië - + Armenia Armenië - + Aruba Aruba - + Australia Australië - + Austria Oostenryk - + Azerbaijan Azerbeidjans - + Bahamas Bahamas - + Bahrain Bahrein - + Bangladesh Bangladesj - + Barbados Barbados - + Belarus Belarus - + Belgium België - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhoetan - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnië en Herzegowina - + Botswana Botswana - + Bouvet Island Bouveteiland - + Brazil Brasilië - + British Indian Ocean Territory Britse Indiese Oseaangebied - + Brunei Darussalam Broenei Darussalam - + Bulgaria Bulgarye - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodja - + Cameroon Kameroen - + Canada Kanada - + Cape Verde Kaap Verde - + Cayman Islands Kaaimaneilande - + Central African Republic Sentraal-Afrikaanse Republiek - + Chad Tsjad - + Chile Chili - + China Sjina - + Christmas Island Christmaseiland - + Cocos (Keeling) Islands Kokoseilande - + Colombia Colombia - + Comoros Comore - + Congo Kongo - + Congo, The Democratic Republic Of The Kongo, Demokratiese Republiek van die - + Cook Islands Cookeilande - + Costa Rica Costa Rica - + Cote D'Ivoire Ivoorkus - + Croatia Kroasië - + Cuba Kuba - + Cyprus Ciprus - + Czech Republic Tsjeggiese Republiek - + Denmark Denemarke - + Djibouti Djiboeti - + Dominica Dominica - + Dominican Republic Dominikaanse Republiek - + Ecuador Ecuador - + Egypt Egipte - + El Salvador El Salvador - + Equatorial Guinea Ekwatoriaal-Guinee - + Eritrea Eritrea - + Estonia Estland - + Ethiopia Etiopië - + Falkland Islands (Malvinas) Falklandeilande - + Faroe Islands Faroër-eilande - + Fiji Fidji - + Finland Finland - + France Frankryk - + French Guiana Frans-Guinee - + French Polynesia Frans-Polinesië - + French Southern Territories Franse Suidelike Gebiede - + Gabon Gaboen - + Gambia Gambië - + Georgia Georgië - + Germany Duitsland - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Griekeland - + Greenland Groenland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinee - + Guinea-Bissau Guinee-Bissau - + Guyana Guyana - + Haiti Haïti - + Heard Island And Mcdonald Islands Heard- en McDonald-eilande - + Holy See (Vatican City State) Vatikaanstad - + Honduras Honduras - + Hong Kong Hongkong - + Hungary Hongarye - + Iceland Ysland - + India Indië - + Indonesia Indonesië - + Iran, Islamic Republic Of Iran, Islamitiese Republiek van - + Iraq Irak - + Ireland Ierland - + Isle Of Man Eiland Man - + Israel Israel - + Italy Italië - + Jamaica Jamaika - + Japan Japan - + Jersey Jersey - + Jordan Jordanië - + Kazakhstan Kazakhstan - + Kenya Kenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Korea, Demokratiese Volksrepubliek van - + Korea, Republic Of Korea, Republiek van - + Kuwait Koeweit - + Kyrgyzstan Kirgisistan - + Lao People'S Democratic Republic Lao Volks- Demokratiese Republiek - + Latvia Letland - + Lebanon Libanon - + Lesotho Lesotho - + Liberia Liberië - + Libyan Arab Jamahiriya Libië - + Liechtenstein Liechtenstein - + Lithuania - Litaue + Litaus - + Luxembourg Luxemburg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Masedonië (FYROM) - + Madagascar Madagaskar - + Malawi Malawi - + Malaysia Maleisië - + Maldives Maledive - + Mali Mali - + Malta Malta - + Marshall Islands Marshalleilande - + Martinique Martinique - + Mauritania Mauritanië - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Meksiko - + Micronesia, Federated States Of Mikronesië, Federale State van - + Moldova, Republic Of Moldowa, Republiek van - + Monaco Monaco - + Mongolia Mongolië - + Montserrat Montserrat - + Morocco Marokko - + Mozambique Mosambiek - + Myanmar Birma - + Namibia Namibië - + Nauru Nauru - + Nepal Nepal - + Netherlands Nederland - + Netherlands Antilles Nederlandse Antille - + New Caledonia Nieu-Caledonië - + New Zealand Nieu-Seeland - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigerië - + Niue Niue - + Norfolk Island Norfolkeiland - + Northern Mariana Islands Noordelike Marianaeilande - + Norway Noorweë - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Palesteinse Gebied, Besette - + Panama Panama - + Papua New Guinea Papoea-Nieu-Guinee - + Paraguay Paraguay - + Peru Peru - + Philippines Filippyne - + Pitcairn Pitcairn - + Poland Pole - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Katar - + Reunion Reunion - + Romania Roemenië - + Russian Federation Russiese Federasie - + Rwanda Rwanda - + Saint Helena Sint Helena - + Saint Kitts And Nevis Sint Kitts en Nevis - + Saint Lucia Sint Lucia - + Saint Pierre And Miquelon Sint Pierre en Miquelon - + Saint Vincent And The Grenadines Sint Vincent en die Grenadine - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe Sao Tome en Principe - + Saudi Arabia Saoedi-Arabië - + Senegal Senegal - + Serbia And Montenegro Serwië en Montenegro - + Seychelles Seychelle - + Sierra Leone Sierra Leone - + Singapore Singapoer - + Slovakia Slowakye - + Slovenia Slowenië - + Solomon Islands Salomonseilande - + Somalia Somalië - + South Africa Suid-Afrika - + South Georgia And The South Sandwich Islands Suid-Georgië en die Suid-Sandwich-eilande - + Spain Spanje - + Sri Lanka Sri Lanka - + Sudan Soedan - + Suriname Suriname - + Svalbard And Jan Mayen Svalbard en Jan Mayen - + Swaziland Swaziland - + Sweden Swede - + Switzerland Switserland - + Syrian Arab Republic Sirië, Arabiese Republiek van - + Taiwan, Province Of China Taiwan (Republiek van Sjina) - + Tajikistan Tadjikistan - + Tanzania, United Republic Of Tanzanië, Verenigde Republiek van - + Thailand Thailand - + Timor-Leste Oos-Timor - + Togo Togo - + Tokelau Tokelau - + Tonga Tongaans - + Trinidad And Tobago Trinidad en Tobago - + Tunisia Tunisië - + Turkey Turkye - + Turkmenistan Turkmenistan - + Turks And Caicos Islands Turkse en Caicos-eilande - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Oekraïne - + United Arab Emirates Verenigde Arabiese Emirate - + United Kingdom Verenigde Koninkryk - + United States Verenigde State - + United States Minor Outlying Islands Verenigde State se Klein Buite-eilande - + Uruguay Uruguay - + Uzbekistan Oesbekistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Viëtnam - + Virgin Islands, British Britse Maagde-eilande - + Virgin Islands, U.S. Amerikaanse Maagde-eilande - + Wallis And Futuna Wallis en Futuna - + Western Sahara Wes-Sahara - + Yemen Jemen - + Zambia Zambië - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - Is jy seker jy wil die spelnaam van "%1" as onvanpas rapporteer? + Is jy seker jy wil die spelnaam "%1" as onvanpas rapporteer? - + Are you sure you want to close the game: "%1"? - + Is jy seker jy wil die naam "%1" toemaak? - + Are you sure you want to total kickban the player: "%1"? - + Is jy seker jy wil die speler "%1" totaal skopverban? @@ -3425,22 +2942,6 @@ Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers t PokerTH 0.6-beta - The Open-Source Texas Holdem Engine PokerTH 0.6-beta - Die oopbron-Texas Holdem-enjin - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#ffffff;">*</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#ffffff;">*</span></p></body></html> - - - <a>&#9734;</a> - <a>&#9734;</a> - Hands @@ -3705,158 +3206,157 @@ p, li { white-space: pre-wrap; } Settings - Instellings + Instellings Configure PokerTH - + Stel PokerTH op gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop - + PokerTH %1 - PokerTH %1 + PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Die oopbron-Texas Holdem-enjin - - - - - - - - + + + + + + + + Start Begin - - - - - + + + + + Lobby Voorkamer - - + + Chat Klets - + Closing PokerTH during network game PokerTH tydens netwerkspel toemaak - + You are the hosting server. Do you want to close PokerTH anyway? Jy is die gasheerbediener. Wil jy nog steeds PokerTH toemaak? - + Really want to exit? Wil jy regtig verlaat? - + PokerTH - Close Table? PokerTH - maak tafel toe? - + PokerTH - Internet Game Message PokerTH - Internetspelboodskap - + Attention! Do you really want to leave the current game and go back to the lobby? - Let op! Wil jy regtig die huidige spel verlaat -en na die voorkamer terugkeer? + Let op! Wil jy regtig die huidige spel verlaat en na die voorkamer terugkeer? + - Chat is only available to registered players. Klets werk net vir geregistreerde spelers. - + Spectators - + Toeskouers - - + + Chance Kans - - + + Kick Skop - - + + Do you want to kick <b>%1</b><br>from this game? Wil jy <b>%1</b><br> uit hierdie spel skop? - - - - + + + + <b>%1</b> secs left <b>%1</b> sek oor - + vote stem - + votes stemme - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Speler <b>%1</b> het <b>%2</b> %3<br> teen hom. <b>%4</b> stem(e) nodig om te skop. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Jy het <b>%1</b> %2 teen jou.<br><b>%3</b> stem(e) nodig om te skop. @@ -3910,31 +3410,13 @@ en na die voorkamer terugkeer? Cancel Kanselleer - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Create new user account</span></a></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<table style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://create-gaming-account.pokerth.net"><span style=" text-decoration: underline; color:#0000ff;">Skep nuwe gebruikerrekening</span></a></p></td></tr></table></body></html> - internetGameLoginDialogImpl - + Create new user account - + Skep nuwe gebruikerrekening @@ -4032,7 +3514,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> <a href="http://en.wikipedia.org/wiki/Ipv6"><span style=" text-decoration: underline; color:#0000ff;">Wat is dit hierdie?</span></a></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> <a href="http://en.wikipedia.org/wiki/Ipv6"><span style=" text-decoration: underline; color:#0000ff;">Wat is dit hierdie?</span></a></p></body></html> @@ -4073,68 +3555,58 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Kon nie bedienerprofiellêer laai nie - Could not load server-profiles-file: - - Kon nie bedienerprofielelêer laai nie: - - - - - - - + + + + Could not load server-profiles-file: %1 - + Kon nie bedienerprofielelêer laai nie: +%1 - + Save Server Profile Error Kon nie bedienerprofiel stoor nie - + A profile with the name: %1 already exists. Would you like to overwrite ? 'n Profiel genaamd %1 bestaan reeds. Wil jy dit oorheenskryf? - + Read Server-Profile List Error Kon nie bedienerprofiellys lees nie - + Could not read server-profiles list Kon nie bedienerprofielelys lees nie - - + + Save Server-Profile-File Error Kon nie bedienerprofiellêer stoor nie - - + + Could not save server-profiles-file: %1 - - - - Could not save server-profiles-file: - - Kon nie bedienerprofielelêer stoor nie: - + Kon nie bedienerprofielelêer stoor nie: +%1 @@ -4192,18 +3664,18 @@ Wil jy dit oorheenskryf? OK - + Oukei manualBlindsOrderDialogImpl - + Manual Blinds Order Handmatige blindesvolgorde - + You cannot set more than 30 manual blinds. Jy kan nie meer as 30 handmatige blindes opstel nie. @@ -4275,7 +3747,7 @@ Wil jy dit oorheenskryf? OK - + Oukei @@ -4326,38 +3798,38 @@ Wil jy dit oorheenskryf? selectAvatarDialogImpl - - - + + + Avatar File Error Avatarlêer-fout - + Please select an avatar from the list! Kies asseblief 'n avatar uit die lys! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Die lêergrootte van die gekose prent is te groot. (maks 30 KB) Kies asseblief 'n kleiner prent! - + The entered avatar picture doesn't exist. Please enter an valid picture! Die ingetikte avatarprent bestaan nie. Tik asseblief 'n geldige prent in! - + Select external avatar picture Kies eksterne avatarprent - + Images (*.png *.jpg *.gif) Prente (*.png *.jpg *.gif) @@ -4442,7 +3914,7 @@ Tik asseblief 'n geldige prent in! Common - + Algemeen @@ -4466,13 +3938,13 @@ Tik asseblief 'n geldige prent in! Do not hide avatars of players which are on the ignore list - + Moenie avatars van spelers versteek wat op die ignoreerlys isnie Disable emoticons in the chat - + Deaktiveer emotikone in die klets @@ -4527,24 +3999,6 @@ Tik asseblief 'n geldige prent in! Use custom card back picture: Gebruik eie kaartagterkant-prent: - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Note: Best quality with image ratio like </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">width=48, height=76.</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Let wel: Beste avatargehalte met prentratio soos </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">width=48, height=76.</span></p></td></tr></table></body></html> - @@ -4587,6 +4041,23 @@ p, li { white-space: pre-wrap; } Play network/internet game notifications like "player joined the game" Speel netwerk/internetspel-berigte soos "speler het by spel aangesluit" + + + + Server Password: + Bedienerwagwoord: + + + + + Allow spectators to watch the game + Laat toeskouers toe om die spel te kyk + + + + OK + Oukei + Local Game Settings @@ -4712,23 +4183,6 @@ p, li { white-space: pre-wrap; } Show game settings dialog on every new game Wys spelinstellings-dialoog by elke nuwe spel - - - - Server Password: - - - - - - Allow spectators to watch the game - - - - - OK - - Network Game Settings @@ -4746,38 +4200,6 @@ p, li { white-space: pre-wrap; } Timeout for player action: Uittelling vir speleraksie: - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Note: Default </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Game Settings</span><span style=" font-size:12pt; font-style:italic;"> like &quot;Maximum number of players&quot;, &quot;Start Cash&quot; and &quot;Small Blind&quot; will be used </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">from Network Game Settings.</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Let wel: verstek-</span><span style=" font-size:12pt; font-weight:600; font-style:italic;">spelinstellings</span><span style=" font-size:12pt; font-style:italic;"> soos &quot;Maksimum getal spelers&quot;, &quot;Begingeld&quot; en &quot;Klein blinde&quot; sal gebruik word </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">uit die netwerkspel-instellings.</span></p></body></html> - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(This nick will also be used for the online game login)</span></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-weight:400; font-style:normal;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Mensspeler:<br /><span style=" font-size:11pt; font-style:italic;">(Hierdie kennaam sal ook gebruik word vir die aanlynspel-aanmeld)</span></p></body></html> - - - Preview: - Voorskou: - - - Export as HTML - Voer uit as HTML - @@ -4790,26 +4212,6 @@ p, li { white-space: pre-wrap; } Note: You can not reset all settings to default during a running game! Let wel: Jy kan nie tydens 'n aktiewe spel alle instellings terugstel na verstek nie! - - Export as html - Voer uit as HTML - - - Export as txt - Voer uit as TXT - - - Save as ... - Stoor as... - - - Delete - Skrap - - - Log File - Loglêer - @@ -4951,10 +4353,6 @@ p, li { white-space: pre-wrap; } Enable/Disable Logging Aktiveer/deaktiveer logskryf - - Store log files for - Stoor loglêers vir - @@ -5011,7 +4409,7 @@ p, li { white-space: pre-wrap; } Play blind raise notification - Berig dat spel se blinde verhoog + Speel blindeverhoog-berig @@ -5034,17 +4432,17 @@ p, li { white-space: pre-wrap; } Human Player: - + Mensspeler: (This nick will also be used for the online game login) - + (Hierdie kennaam sal ook gebruik word vir die aanlynspel-aanmeld) Note: Best avatar quality with image ratio like width=50, height=50. - + Let wel: Beste avatargehalte met prentratio soos wydte=50, hoogte=50. @@ -5091,7 +4489,7 @@ p, li { white-space: pre-wrap; } Note: Best quality with image ratio like width=48, height=76. - + Let wel: Beste avatargehalte met prentratio soos wydte=48, hoogte=76. @@ -5204,7 +4602,7 @@ p, li { white-space: pre-wrap; } Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + Let wel: Verstek-spelinstellings soos "Maksimum getal spelers", "Begingeld" en "Klein blinde" sal gebruik word uit die netwerkspel-instellings. @@ -5307,135 +4705,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - Dutch - Nederlands - - - - English - Engels - - - - French - Frans - - - - German - Duits - - - - Hungarian - Hongaars - - - - Italian - Italiaans - - - - Lithuania - Litaus - - - - Norwegian - Noors - - - - Portuguese-Brazilian - Portuguees (Brasiliaans) - - - - Portuguese-Portuguese - Portuguees (Portuguees) - - - - Russian - Russies - - - - Slovak - Slowaaks - - - - Spanish - Spaans - - - - Turkish - Turks - - - - - - - + + + + + Settings Error Instellingsfout - + The entered flipside picture doesn't exist. Please enter an valid picture! Die ingetikte omkeerkantprent bestaan nie. Tik asseblief 'n geldige prent in! - - + + The log file directory doesn't exist. Please select an valid directory! Die loglêer-gids bestaan nie. Kies asseblief 'n geldige gids! - + Language Changed Taal verander - + You have changed application language to %1. Please restart PokerTH to load new language! Jy het die program se taal na %1 verander. Herbegin asseblief PokerTH om nuwe taal te laai. - + Select your flipside picture Kies jou omkeerkantprent - + Images (*.png *.jpg *.gif) Prente (*.png *.jpg *.gif) - + Open Directory Maak gids oop - - + + Blinds Error Blindes-fout - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5444,291 +4772,309 @@ is kleiner as huidige eerste-klein-blinde! Hierdie eerste-klein-blinde-waarde sal na die maksimum toegelate waarde gestel word. - - Bulgarian - Bulgaars - - - - Polish - Pools - - - - Chinese - Sjinees - - - - Greek - Grieks - - - - Swedish - Sweeds - - - + The entered server list address is not a valid URL. Please enter a valid server list address! Die ingetikte bedienerlysadres is nie 'n geldige URL nie. Tik asseblief 'n geldige bedienerlysadres in. - - Finnish - Fins - - - + Afrikaans Afrikaans + Bulgarian + Bulgaars + + + Catalan Katalaans + Chinese + Sjinees + + + Czech Tsjeggies - + Danish Deens + + + Dutch + Nederlands + + + + English + Engels + + + + Finnish + Fins + + French + Frans + + + Galician - + Galisies + + + + German + Duits + + + + Greek + Grieks + + + + Hungarian + Hongaars + Italian + Italiaans + + + Japanese Japannees + + + Lithuania + Litaus + + + + Norwegian + Noors + + + + Polish + Pools + + + + Portuguese-Brazilian + Portuguees (Brasiliaans) + + + + Portuguese-Portuguese + Portuguees (Portuguees) + + Russian + Russies + + + Scottish Gaelic - + Skots-Gallies + + + + Slovak + Slowaaks + + + + Spanish + Spaans + Swedish + Sweeds + + + Tamil Tamil - Vietnamese - + Turkish + Turks - + + Vietnamese + Viëtnamees + + + The opponent names are not unique. Please choose different names for each Opponent! Die opponentname is nie uniek nie. Kies asseblief verskillende name vir die opponente! - + Settings Information Instellingsinligting - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Jy het die loglêer-gids verander. Herbegin asseblief PokerTH om die nuwe gids vir loglêers te laai! - - + + Maintainer Name Onderhouer se naam - - + + Maintainer EMail Onderhouer se posadres - - + + Create Date Skep datum - + Windows Behaviour Venstergedrag - + scaleable vergroot/kleinbaar - + fixed vasgestel - + Minimum Size Minimumgrootte - + Maximum Size Maksimumgrootte - + Fixed Size Vaste grootte - + State Staat - + Please select your game table style Kies asseblief jou speltafelstyl - + PokerTH game table styles (*.xml) PokerTH-speltafelstyle (*.xml) - + Game Table Style Error Speltafelstyl-fout - + Selected game table style file is already in the list. Please select another one to add! Gekose speltafelstyl-lêer is reeds in die lys. Kies asseblief 'n ander om by te voeg. - + Game Table Style File Error Speltafelstyl-lêerfout - + Could not load game table style file correctly. Style will not be placed into list! Kon nie speltafelstyl-lêer korrek laai nie. Styl sal nie by lys gevoeg word nie. - + Please select your card deck style Kies asseblief jou kaartpakstyl. - + PokerTH card deck styles (*.xml) PokerTH-kaartpakstyle (*.xml) - + Card Deck Style Error Kaartpakstyl-fout - + Selected card deck style file is already in the list. Please select another one to add! Gekose kaartpakstyl-lêer is reeds in die lys. Kies asseblief 'n ander om by te voeg. - + Card Deck Style File Error Kaartpakstyl-lêerfout - + Could not load card deck style file correctly. Style will not be placed into list! Kon nie kaartpakstyl-lêer korrek laai nie. Styl sal nie by lys gevoeg word nie. - PokerTH - Delete log files - PokerTH – Skrap loglêers - - - Do you really want to delete the selected log files? - Wil jy regtig die gekose loglêers skrap? - - - PokerTH - Log file - PokerTH - Loglêer - - - Do you really want to delete the selected log file? - Wil jy regtig die gekose loglêer skrap? - - - Export PokerTH log file to HTML - Voer PokerTH-loglêer uit na HTML - - - PokerTH HTML log (*.html) - PokerTH se HTML-log (*.html) - - - Export PokerTH log file to plain text - Voer PokerTH-loglêer uit na skoonteks - - - PokerTH plain text log (*.txt) - PokerTH se skoonteks-log (*.txt) - - - + PokerTH - Settings PokerTH - Instellings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Let op! Dit sal al jou persoonlike instellings skrap en PokerTH verlaat! Wil jy regtig terugstel na die fabrieksinstellings? - - Do you really want to delete the seleted log file? - Wil jy regtig die gekose loglêer skrap? - - - Save PokerTH log file - Stoor PokerTH-loglêer - - - PokerTH SQL log (*.pdb) - PokerTH-SQL-log (*.pdb) - - - Portuguese (Brazilian) - Portugees (Brasiliaans) - - - Portuguese (Portuguese) - Portugees (Portugees) - startNetworkGameDialog @@ -5789,22 +5135,18 @@ Wil jy regtig terugstel na die fabrieksinstellings? startNetworkGameDialogImpl - + Server Error Bedienerfout - + You should not kick yourself from this game! Jy moenie jouself uit hierdie spel skop nie! startWindow - - PokerTH 0.6.3 - The Open-Source Texas Holdem Engine - PokerTH 0.6.3 - Die oopbron-Texas Hold'em-enjin - &2 Internet Game @@ -5823,22 +5165,18 @@ Wil jy regtig terugstel na die fabrieksinstellings? &5 Logs - + &5 Logs Logs ... - + Logs... &1 Start Local Game &1 Begin plaaslike spel - - QPushButton { text-align:left; font-weight:bold; padding-left: 1px; padding-bottom: 3px; padding-top: 3px; padding-right: 3px;} - QPushButton { text-align:left; font-weight:bold; padding-left: 1px; padding-bottom: 3px; padding-top: 3px; padding-right: 3px;} - Network Game @@ -5878,38 +5216,38 @@ Wil jy regtig terugstel na die fabrieksinstellings? Create Network Game - Skep netwerkspel + Skep netwerkspel Join Network Game - Sluit by netwerkspel aan + Sluit by netwerkspel aan Start Local Game - Begin plaaslike spel + Begin plaaslike spel Configure PokerTH - + Stel PokerTH op Return - + Keer terug Internet Game - Internetspel + Internetspel Logs - + Logs @@ -6080,10 +5418,6 @@ As die bediener agter 'n NAT-roeteerder is, maak seker poortaanstuur is aan Internal network error: "send" failed. Interne netwerkfout: kom nie "stuur" nie. - - Connection was closed by the server. - Die verbinding is deur die bediener toegemaak. - Internal network error: Duplicate TCP connection. @@ -6109,18 +5443,6 @@ Maak asseblief dat alle spelers dieselfde weergawe van PokerTH gebruik. Ongeldige bedienerlys-URL. Korrigeer asseblief die adres in die instellings. - - - Could not open the server list MD5 file. -Please make sure that the server list URL is correct. - Kon nie die bedienerlys-MD5-lêer oopmaak nie. -Maak asseblief seker dat die bedienerlys-URL reg is. - - - Synchronization of the PokerTH internet server list has failed. -Please make sure that the server list URL is correct. - Kon nie met die PokerTH-internetbedienerlys sinchroniseer nie. -Maak asseblief seker dat die bedienerlys-URL reg is. @@ -6166,7 +5488,7 @@ Kontroleer asseblief jou gebruikernaam en wagwoord. Your account is blocked indefinitely. - Jou rekening is onbepaald geblokeer. + Jou rekening is onbepaald geblokkeer. @@ -6210,6 +5532,52 @@ Tik asseblief weer die wagwoord in, en probeer weer. An error occurred while reporting the avatar. 'n Interne fout het voorgekom toe avatar gerapporteer is. + + + The game name report was accepted by the server. Thank you. + Die spelnaamrapport is deur die bediener aanvaar. Dankie. + + + + This game name was already reported by another player. + Hierdie spelnaam is reeds deur 'n ander speler gerapporteer. + + + + An error occurred while reporting the game name. + 'n Interne fout het voorgekom toe spelnaam gerapporteer is. + + + + The game was closed. + Die spel is toegemaak. + + + + The game could not be closed. + Kon nie die spel toemaak nie. + + + + The player was kicked and banned permanently. + Die speler is geskop en permanent verban. + + + + The player was kicked, but could not be banned because it was a guest player. + Die speler is geskop, maar kon nie verban word nie want dit is 'n gasspeler. + + + + The player was kicked, but could not be banned, +because the nick could not be found in the database + Die speler is geskop, maar kon nie verban word nie want die kennaam was nie in die databasis nie. + + + + The player could not be found. + Kon nie die speler vind nie. + The password is too long. Please choose another one. @@ -6218,23 +5586,23 @@ Tik asseblief weer die wagwoord in, en probeer weer. Rejoin possible! - + Heraansluit is moontlik! There is an existing session with a previous game. - + Daar is 'n bestaande sessie met 'n vorige spel. Do you want to rejoin this game? - + Wil jy by daardie spel aansluit? Start Network Game - Begin netwerkspel + Begin netwerkspel @@ -6388,52 +5756,6 @@ Tik asseblief weer die wagwoord in, en probeer weer. Server Message Bedienerboodskap - - - The game name report was accepted by the server. Thank you. - Die spelnaamrapport is deur die bediener aanvaar. Dankie. - - - - This game name was already reported by another player. - Hierdie spelnaam is reeds deur 'n ander speler gerapporteer. - - - - An error occurred while reporting the game name. - 'n Fout het voorgekom toe die spelnaam gerapporteer is. - - - - The game was closed. - - - - - The game could not be closed. - - - - - The player was kicked and banned permanently. - - - - - The player was kicked, but could not be banned because it was a guest player. - - - - - The player was kicked, but could not be banned, -because the nick could not be found in the database - - - - - The player could not be found. - - PokerTH %1 @@ -6445,92 +5767,92 @@ because the nick could not be found in the database Start Local Game - Begin plaaslike spel + Begin plaaslike spel Hands - Hande + Hande Chat - Klets + Klets Kick - Skop + Skop Vote started by: - Stemming begin deur: + Stemming begin deur: Vote Timeout: - Stem vir uittelling: + Stem vir uittelling: Yes - Ja + Ja No - Nee + Nee Player info - Speler-info + Speler-info Save - Stoor + Stoor Log - Log + Log Away - Weg + Weg Manual Action (default) - Handmatige aksie (verstek) + Handmatige aksie (verstek) Auto-Check / Auto-Fold - Outo-inhou / outo-uitsit + Outo-inhou / outo-uitsit Auto-Check / Auto-Call-Any - Outo-inhou / outo-roep enige + Outo-inhou / outo-roep enige Chance - Kans + Kans Speed: - Spoed: + Spoed: Shortcut: <Shift> - Kortpad: <Shift> + Kortpad: <Shift> From 3285c83973b5c1ff5f769bd02730b5335fe4d5b7 Mon Sep 17 00:00:00 2001 From: lotodore Date: Tue, 10 Dec 2013 21:29:39 +0100 Subject: [PATCH 120/128] Disable rejoin-multi test for now as it fails sometimes for unknown reasons. --- tests/src/de/pokerth/test/AllTests.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/src/de/pokerth/test/AllTests.java b/tests/src/de/pokerth/test/AllTests.java index a4bdda2c..a458ce71 100644 --- a/tests/src/de/pokerth/test/AllTests.java +++ b/tests/src/de/pokerth/test/AllTests.java @@ -39,7 +39,7 @@ import org.junit.runners.Suite; BlockedPlayerTest.class, RunRankingGameTest.class, RejoinGameTest.class, - RejoinMultiGameTest.class, +// RejoinMultiGameTest.class, SeatStateTest.class, SpectatorJoinTest.class }) From e40dc258a09fda251b27605e5c01fbd9e7824c81 Mon Sep 17 00:00:00 2001 From: doitux Date: Wed, 11 Dec 2013 10:22:15 +0100 Subject: [PATCH 121/128] maybe final windows test for #202 --- data/fonts/DejaVuSans-Bold.ttf | Bin 672300 -> 693876 bytes src/gui/qt/styles/gametablestylereader.cpp | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/fonts/DejaVuSans-Bold.ttf b/data/fonts/DejaVuSans-Bold.ttf index 0f4d5e9d484c3b42f473956a1d5726c96357fc9a..08695f23a96350b49a69e270bcf3b9c5f37bd88b 100644 GIT binary patch delta 86586 zcmbSz2Yi&p^Y_j^&)uaFawX3JQc_5viXjD&5{mS0XrW6H2$0Z1=ja^-0vsaJM2aFU zKoAfS5gQ^PT?C{Fksl&WO0s#s`#iZ2Afo>lKKtxGyR$R1voo`^`|M@Iq%!w5lyxy; zjM?!}S*3dQ5}Nk%F7YvAR1LMo>(_m=Ub_RWTzGHC7%yMHMf0~xeX^_(W6C7PrtGQz zR_og4JB1f8HY1)fM^^K(od95d@AMndt83j~Kgat9X89?)ch7D; z_??zLnb*{dXpilU3ja-|6y`Op2;NKg?muLB{PErA@D2t#H%RI^Xu!}Zb8j=RYhbu^ z$$rV*yCw9xd0gloF@R6_|H#Fu{TbbnD-9P^tH?GVeYCj8%_GNgh0; zH~ZsL=Dnr?W7j994CmBVY%kBay@I_0$`$PunPPv{{v*nV?T1nR$^H|{N9;#X zK5G9NkjL%EQFFq60p*L11V)b5j*j&hcXZMQFw&B>;Y`s+Xdj@wOk0NXat-LT!`cay zPdZ;^DYbVl1TS`1%mww!`$s8=jACB=SvkKZkZ6K?t4TdaU z)uj+4$DFp>zj~mA3e%-jUT=w&E$I*ZuW?lhGX0`8+ELNo!M=xmVn6CgphB8Un@;nz znc7lXs(q$?NgK7Vw67>b%93_Et2^hV*ACxBs+_|4k>BcA(hfz2*z6S{^k;bAT4o8R zSmK^1akINR?qNFa2|DftI_?j2+{+~Hv~R0L6@V$-uX>2;GObn*Gcs*perz#CQ5C8| zb*T}xpf=Qz-lpC(fQHaW8b?!T7R{%{w2W5M$F!Mt&>q@P-_l_^PG{*NU89?HhaQsP zD)-?5T!Yq!@JL>fNAs#Yp4a0|cq`tHcji5KU!KBK`Di|YyQc9ud;wp=SMW7_1K-Mb z^1b{3|DGS=C;2&kiC^cp_&xquVTxJtQ*25RrKD0?DXUacVwGx2ZKZ+IOi54@m99!J zrJpiL8Lo^~CMh$NxymACsj^C0r)*TVDZ7+?%0cCja!fg`oL828mgD- zuR7FXYLFVPmRFtT9jE37uIJuR~skSW|Ds+mAJ~cC&V8?X115@30Qm{?`7i zlXakV5bJCkYa7qH+NRj%u^zSswhvi~ZJq5CHqN%ywwFz^?Xw+V^RyM(3bx2u%~_4X z55ZF$wjW8W`{rUl9zbhg$Qo3pa@w+*ucmGHF6^QZ45lJQQ&ozmdenqkQ9J5PJ*Y3G zP%4e42{eu7&;saMFKMI74BZ>}>Cdh5Nu%}WNc}nJ=~L0+`88Ri!Y70DeEoSwhv}j} zU7hvJcF3WCd;I=YhX~Y5P%7tA-+qr z0%lBt1o}*G*sedN3J{Ocp9U+fbkJUDLG?5j83Qz!znBm7xCCOAp+n&;f<>}&tURm4 zUSmCr~#^`7FR>mNVTFGtyZn1#;f(zCTc6So!VLLq4rf%)Kqn}IzgSL&QTYrOVkzW z8g+xZRo$uXRS&4&r*E`v-)pE+q%kdOgf7Nkr2zSt zdRc!yo$56I#+BoC$rfWejmgd}>r>8um92`m{xtM7cly&38&~vycIMM3HSW#R?ldiu z9?;CmsaIM^i=95oSe@D5dBtTsfSsUHiw1d6&VC~`aQ&=LbHkEbK-A`w_?4rx8 z8$F;0>}@#tN31(HabMPx7vk@*e!LG)V&Cxoyg&P1X{a=0KPc0bY3z`)L|MXqgtz^J z9ahb%g&k2VtCiU?%=8%cvsZVo?(BqDFRvta(rbX%0CvtR#VeKl>NUn|EW6@0!D|w` z<~7x8D!bwJgO}?N%hY|^P4Bzj_t*p9g}w{fL*Ea4SFlIEt9)0pY~QuMYl-=O?7NA` zcZcr|viR=u-9=u$dwstkZ{II{zan4XuYJEJf8TF>f1tv?hkcKd!}o;m2`XYuuqIGZ zYa44@DrRkO?M}t5J*|Bx!rIR|fXYjs>7rMq)1=pI6K#_yM!HUlldhBMNY_bk*|yjY zP+P~Zj`Nh{xajzc`a2#t{w9~>vEwm~cVsyPO~A}>njEMGdehXv;ejJ)cHpQ$7rh%e zK5#rOfWuu$3$>lvPI7Dewf(eMJER?=_oNFZT9S6sCo^qU>#a7;#|~rF+Au%fInO$( zD}ht|XZg?fU+llkf3^R|{#*Tb`tS8Wkj}LjdbO`D#g=LtZJPiOFb7;Ov8}MJv2B36 z-)Y-xJ7D|XcEonlcFuOmcHMT%b}#LAVpLi{2fy@?4zCjwyJN@Vs-l^0r=@l*@56VQ zZc7Wo>xzzTX-3+^jwwD$16j$hnQo`|>NJR_o$pd4J*&%SCZ!i@w)Tu97>3?$0lJ;; zH6>nIrFYn+j)I~O)SG(9r;@DKub1`w8@=3GFMpwz6Lt9AK-%%0ZbakqnZ{A9t8cRF z>;|i+8$|=%C>rYK&`39j#xR6BtSJnk5o?ia0?o1BCQt&kX6>+Gb%NS=p)RbeZVuh3 z7xjX^_o2S5JN2g&))T?dDAtEQrBB&Fx(u5bL=Rjriov>34AG4uRX2(;x>20gjp7&O zO{FzEr?gc%vHvMOl%DLK(nsmb9w21t&mJntN-}$_3{!@&C(2~3j9Ca@<`Rc@T}+BJ zB2p2|EG3ijp|XL@2x$&c06gtwdR4iuxc;Cwm3zt)YN!Y$hg!nnded8Ks2WP`)v{_i zN`%vmrH=5q@zhi8pmv~M@VcGp9fUUs@uW3UA9bcWladhNq)|V0t-6*5sO#1Bl&pTD zeo86u#OX9x-L7t@p=ySjL8;PuX_!|}uOt@@m*z_@X}&a0nlDY2=1bG1`O++}nO-w# zw%2a2FKCX}cV6F78VvdnE$}vZ`_Uq4&$LY1Gp&&JOe>{5(?_~JuhZ>$y>8E&bbH>c z+w&IPp3`-EcJ0s&Izu<;J-R{fD|E2XLHZJA-JSNsln2l;X~cBS*3{OD&f5}f33SEQ z#@2?e+S=JV(=}T+TQ~Zjt-Gx|-O}y+PuUMr#+Bqj_=iF-BY&*aMrJeJ#($0DL zL}}=}hBR~@FAbg7l7`OfN<-)Mq@nXB($IM`Y3TedY^PT81Zn8Jtu%DrPCKX_7)Qo8 z9djd`yU)cmx$z7FR2jgW$qQg)ILZATtL4rxAl`b9g|RAWzYUv|UNL!7VQP?me(Z9x zj<$_vg)yZIn3rv#Z6Pa?K4Dxsr*>(v6F)JHM#I9iOA{mLV4BaQ%E9L)1?(nO+dsq%^Rv16r8K|kp(bDqaHQ3p9-&~* znl@m1Q9YkAy}Ik9c1Am=UC=IRSGDWfAKESLFYTW8xAs`eb~2~pG&{YWe$K*9n={Z^ z#QBP|q%+uA+8N<2>#P8|lIbrqj!00d%}Q#gw6of;+C}ZMc1^pX-PHcn?r8V5huRZO zILWCxElwY2A!mTo?$n$`oyDD{oFNI$FlVH*oU`H!$WCj&Xy>)xv@6>0TBi0t?Y4GT zd!Rkiva}p0cbc4DPG6_L)9Q3Moz7y;63!rJs59JI##tT%Tr#5%Hk>um%rlb<&+?t^ zJID83-?P5IfJUG6Ni&y|g7`WuX!dvBvwYvhF$|j0@62w>m4mkL(mKv7k=A8yi1+tU z7!HLwoLi%%eLmOE`zI(6hXVbq*Zv8(<4`6JWjdV;=ap7-UNPm2?Ht~NT!lMe9!U8b zPjg_JER!GDxW-cKm+V*U*X-Brnf6=u+xC0*2lmHy;ouIl!^h$0@OK0_Y!1y)%u&)2 z;s|$?byRdjIbt1E9W@-a9rYZI9L*dp9IbGEFxj4B?``jhGlV(zuJ(TR9@;!@fqk5P zwC1+ECfTRi=i?ZmhO?%9j(wJWt~1_Q%f3ka(plSCNBhiK*ZHP>fwP{ozO#|Dsk4Ri zEoU2Ndu@WVqqB>Bi1TgxaA!|vZ~J0rl5>D_pna=zh<&MZn0>W#qhN+n97P<(9YK!L zjz~v&MQh(ZJEfzSEJQjn}5y2ig1DJ8QGGx%Rj11MI!DG;NW6f_<#^ zo_&gahO?owiL<%0m9w?8owI{B$=TW2&7SJ)VIS#y$Jy7u#M$4O;v8(>=1jFObB+kH zuW^pHuX4Jy&z%#TlbzF?GqvgV4bC~vdG^iPQu`ilUs~0)`mR6hf7$=GKe6XH6oWuJ)nM?)DMRUd}%D_niHl$<9Ic zbmvg}2hQOk_K%#S>?@sPwLQ-9&PmRx&KcS?`zOxX&bjtY+WYq1+81E6Rt18iRj_&2 zSP;}n)u4~25qb${gD7$A1^qNx9GfX?4R%Bs_%h3VH4AM`jj*ht{4v9$*RRiEYSSN7O ziz8KsqdnTMJKExT#nBqiOL;AcdP_UKrH$SK|DB5^7MQ$ntmwxatT+o{k@hh3Ysi}0 zCFWNevL^OW5Nd7@!Lx}y7|(|2Labq0=EBf&=fUep`#C&E*w5lQ+1lm z7MJxtgaF2l0A_hw?BdWs97=0Du^QWv@5c!-4j0feV6j$28>FS+Aa$TNR7=&8ot3m< z+7NBHwk&Pw;t1D49;|PC9^nAvk&J+}Z?tbgtq?+hrtB~7i^Gd9%2aG3Z+eG&AJDxp zcnK&8c8Ra$pU6cF?{ePqze9-6yz7fiKKLl3y|j*iLsd<-^Pd0Db}jTUt=D@|{sVH3 zvHLkbrMs3y;L5#555X)W2$8u*gB793p<}C-ushwrQKRG zuw_!&6=ipoeO#_sxzgnl$`32=st{J8XNBa7MJkr67*?@j)11{gYwE9Qx~Aotwrd8g znZ0J=T5WBqwdK~AOFejv3rr}Lp~@$u05GMGq-1M z$xO?fpE)n{-OM?eGczY=x-!RPj>;U7Svm97%nF&MGmB)}Zrr_b@y3N4zus7Vqxbbz z*PCB&aJ}qxzw5r&y{~&+w_G=0SFZEx?Dy>7vwnZ@`>(&B{{8sxhkrlx`{Li*{_cP6 z(X~IW{eJEIwL{nDUmJgI$hFvOuU)HfHRsB`0axx`8GNPBm9Cd}Ufz0n^W}91oc-(f zQ<8F$vXh=9{grew=}1!Nq{O6lNeM|UlA0woNs3R3ObSg3Npkf4I`r$37fPNl-l0fv zk-#DWMG6=3FH)$8UlHFT-bEDWdFMIjPtMN+KM(vguv=i)z|M}IjM4`#KSF8y1{6jJ zgnxcby6y;gSPa>T{c@FYlkj|kz7x`~SLSW8HgHZm70^eGC5k$wWAFOgq1QlYPqUo}#p1IVu%snFN>q85S_3iyM_yCU^L`CG=q z#xWMY6y;;cS0L@gm#{yP??VEYq|Qi&*o z1hE!=4S7=|6~^u)qB#ZKMGxV^FA9h6riABTi_wyi@x9cd2A z8<5XMnuqdMX46Yd|91RzcM^Bp(y`|JOyb8%14o>BB77{qzeUfl*!SFv7ARp*(i5rq`*llB~k8< zJO~Mh91|FUANms@{7IFR$T6R>tUw zX*e}_fKfich&2Rj55kb3vD#b60rvp&sU@bb{Oo zhYjbJ;mfs)|2ne}6%mFjFAz8H;X-Pr)Y<&@y}quQWg_-a%H6=G6>^`Eu4|HEQ8*KNB;N>&o zEyVd7kU@mOcFtwfS2`A$mo9?>>ZJ@!@idf~w`eB!$|g7o1iuTssVc~29Py_4zLIW_ zK#G(M&k3Z8TuXKD4WwwU4RPPYdogW@$ycY?5qv*1I|9P-xrYJsfQ)JyzRPoMsC$W1 zVoY_PbW#u5v04$TA`zw*k%)%6Hx!Ws&|ZW(%lg=&QZj=xIv2$!Svf)97o$ZI@aU0R92aU70(+43(Cn>Q#nn$b3y1surXr zt5=}~UfWEC{k$yYVAw$4kulRiOFy7bar3gq%tw{gXFj8MS(*|og>kzv#mYRg2{n`X z@Fo)N5ckd|gc|^>7B!XqQrwlAl2%Onh!qhRJ&b#0LQ|IMx;ez%Rd4_JAKC}${kgWr zy{@TLj8*OQ<)kj#CGTupplXMY7yknkhcHq_mLKCZGCEUZxKXJc-dhsTG`cmo80ib`c zKvrYSj>k8jQrxDdHW1wH2!O-QD7%$*b88=6pCK&ejM_E8Z0(!zU>mjY zE~X_b<8@2B34OXC^+`cE1AR))=(?8{*yXDB;3(AyD2DYYj)vOI%6c7D?qUixN_IE9 zL^EJY8D}rSBcZV9s`L?qOewmpz5&d)bj*mjoWyF%Hi-Y2nQj zZfoog_vIzIt%NEP4;ium$rj1Z0iJt<@CIsWKwzqS> z!gZ5k5YtF^=VT7Cj8rUqPhR_kocor}Y7?}Na?e3K*G9P4B;$%2^0FzC;0X7O6v^-i z_q7z2Mbgr8}@(o3gX5(6%#jiP&Mn*!QLyPKh%Yh&HLCUC?lGpMzg z3plK65b+qXN|~;-0-h1>jT3n3^4bWxDptvsoZpn`>SnZzq*zSC(;mljdyI68T*}Y1 z%YLTe=r`J3aiT%F-b9XNaE5!1{*FnS$Sa0`QV|vz5N_(M>){Axv1ou*>l5LpT9qA= zuG@c->_1A+UD{aQPUi#g;BSKP^XUq>a8pZ7t*>NM9V;1Dt{V*J9QImgZiJzXGTm2qLEyWL zfo8AsTBlqD9=rp7w3753{8-a{)3!YLB+mxMkNAnM}&jNmIcB;9Wt~=O|O5Ndm4Bc_xoW|!v zGjrc(0KSui7aPsh^r@Hd7HH&(>3nAZ;0CI`;0iV=Cnlr!4Box0t1E(pW#&1o7$SiH z797N^(YCnInBc%*)#_kzQ49-ym}XukqQx4qR5V$(>@U;Q?7HGLQjeS>Q(LmQ6+f|3 z#8Ngj+C|Z$o@DJ8iFd_PqHafre>*N43tsb_9MhMe5s3A{Y7PwnP8==-mZZv>D-N-E zaG=t6%#a*$;se?t?pel+7~BKbgo_d%RGK=R7343@pIf?(-cTHmdm&CF)h!xpC{JTAO+Qtxrs9wtkjk{%j!HEJ7|MmxU5Lc;~iRvb`?9e*t z+vA%y-4(Z7E3!=4cd+VkmXLGF+#X!|G92L`?gpQM4pupeg&A@Q2n*K5!c2B?e#vri zne3l#Aq&+L4aH8ePgLdQMYO4bc%2*+z<<3-7V$9icX5$IuZaDkHho65IZw~Z>Lk{H z9^u;wQ`1}+g&l{qPsdQ&8ZD=xC@HPqPv|~j#^>UH6hyu(hbpQyuTLF2a_7|Zg0xLk zS9~MRJlO|aKo*5#=HtLs6fgSzCOSMqhH{WeOf&|emOuojF4`cz>{#{9ww;b0!{zw8U7pwPWbx^aCYg3DUHB-L+Y2^koJ>J+VJ06HRD~Z7PQ%J?fK#e)8f!HrRlxzl< zkcqW&5aaXtz%dDP*G%I>Nt_ZwJi+rjK4cA*q&CVkh56!F^bY0LE8AnCXW6lc2FIBddnW69Hje7#`NnS{Xlf;JsOzR zN%>H`EB+QA5$raEN>ReOED`wxM{BG-Blx#DQhUO5CAR=~bZi+43=T2l6Ooi7biMEN z{(Xjs{g26uZf0jTYO%Z}?$tSn4?dh)Eo-uR<>b#WItxwu?(t=96zogVj!3xvN-tmsl>U z(XU{;8J!Tj2Abcjt+e|acl5-XY;i*@BAS?eO^jPS-^7dK{$3Z#6n62U_(jx>T56iF zE0zWeIcr`Z&6ph0Yd}39!II>JrC5VaXT|B9$KqSDkgunC-8#&L!ug#O>D2s+GW##r zldFJw812&Z==$mEw=Eh)D6nsa=PD>EaK@EL*}^OhA~^EWIzbP%dB$ zwwgBJ*yH%U9C3vBu2gcj95@h10`Vi28e$5@`UB@w{TMk9?ijIg(&A6{s4YdrlLNqS z5Ky;*fCDf7++rAqZY@|i;#74jwYvGMI4f>Y^%dQkOkKE#f_TitQ-1^H$jfRo*ON_O zuIKB&&X{#k-)wVmoTF~heF2sWY&6S}6{Z*FV8O74KyVwxl)khkY5$i4S5gD zFUWe8a;OAVQwOYlFMA%Jvi7vtA=chAuM{{Nkh=0AbY%scn4v2$U8o9tW`HX=CMqsG zLP}b?96TKyqK2|u!_co#xecFD5Y^AVgKbRdZ=Z-&q6WQ>UmA>~_uIGY&_-$dkh+NF z_r)zShlXc=Bj(;27ax?yBXITk6<#j;gt#jesy+@)!*N z)yCh8ud*Ldy#r9s!n_8(ku^;j#*2u{ymE~Jak5F+pkEt?G=J^I~64hJ>f z&TD7y9XI=R{l^(n%X7V$&UGxp4e7l|Du#JJ>Y3Axmuh|&Q(RJT?fm7*p}=^Gy- zR#E4$R-EczJ%!@m;=pdP-^G`nRBv`^Dds7y`fL!J#oc)#?zE^6_93!rIhWLZ=Hqk~jhe=iUiBk{7Y4J6#Uw?S59}J)g75zM!@yp>*3aE3iF!sP{W%OWJi>50R?R7e z7z{l>EFP|p;~!*&QH|&w?cbvs>Sj#Cw`P<0NSNQv`rKqry+(JWba1W3^b=M;j%b2W zu$_Vx3ic+f52V}^i$5gSUt-BdtZHdI5QBeg+MIpgG+!LaYDNRIFDh;L8(CS17KxRH z@^pbvq)*i3hirK)Csh!ZBbV@CGnTCVS4F0{uu&XRO401(PE%pZMK6g@h^X}?WujQg zTRj=G^aEPCn6HvJrBb`L04cOu#&qzs5+hCmOHk!NzB{hTO6YWr)hBLm;kK`)cF1aE zo+BcT?kIN`og3#|GF5>u2tnTfOprC)jzvYc!I;>v(lOEUOfE23nu=ypO;yCq?3-dK zzk6olwxRDYA!u5k3+}HDy2SVNMlG1%>-bnuQ~VDxMk6YIndr#Oncsc9W5-|9H;O6S z&n}%*Z^5{Ax)Z|nA2rEf8UbQBkC2-ci$g!3w<;AEJUHdOh3*z=_RcuDEH>ukzv9lq zii1Wd%?;mC7yU=)N-{uoNka}VT@=x=M4_+P>S*yxW3eX@+FoO5^vFtmFu{Grl{1d) z6}*e{7zOjN>@%B2^1<791pNAISpPGiq~2HqqaY0gR)Mg$=x~(4m+q9{mC7OF!GDK2 zR34tjzCkk1igATYIVpcvtVx}!Hm#q1AfyFv8XD0+>B{e)?t~bB&*eSe-TC84l6aqb z(&7EbvrHS?HyYJ!SyWc9*L(J?TC?dErTFq2>;Kp?`z}A1zTofm*GKI>b3~U^4|qu* z^?QAK1A>FBalsZ_*fA`QRF1c5ywg07yuki#DB#BUb( z9`UKvVu`4vc_Bh)8Kee8n5_YoqY!2V$-QE198QE|f;HTjHCt4Eap|fxi>ZbvD~j*^ zJV0rEQAj0Mg}4qeBX;%dI4reRy#Qa;;0DMQIchj2v-jh(2O2M;sR$fj5(Cm#)Wbi2ye|CII6{Bx~|ruxZl*EMB6L zC{>gOFQpQ^idk$mZJXC=;;DXv7c8J1YrBs+O~-gssxNkl4K8YweVRwjYS53wc~NWG zPvTCC<#cf0z{)Oaahw-cQ^y)}DZ-S8>JYgAgszmQAd;s zqu3HlrcFyJC%!FBD``)Ns873z#F0;ElhR`Dcyaz3eIW4VoiNBS)#U@Euwfl(9FWFo z)hV_d#Z=ZLZi~~v?XYMHG^VC_MWZ;!;>Env{&|zZWU%*yqc7rIZQc~0tmAFPOFa5;z; zl_>+JWgpT-jJ;$@5Dkzdm0+7SAjleE50)Aeq?Sw;yIrYb{}8b|Hcr{an_~C69WKZp zsw)0&=V;^Y%wzm)+TQEY^Oyc|Abm@pf2w;q<{%7?k6t!59;qLF8NKG zfDKc9`l_Y)rpS+ZXgqTm|{=CscOrv3a``|ge zhq!T4oaxqIj7!0%~)GbmcBFWstDXZSd=kM_|9rE@Xv`e==Kj~qTCkT>Mz$$oXwtjd+C zznEqangETB#QN=}M>hcxi2HI~Ur`Fs_ppKTB!K_%LCyAQtEjptjf1d>bX3H5?cJKT z^Dt_mMB>=&6uq6jmvWRUG~{+0@n^6u^_(1YDHoKZINoeh`#8jn^W(@XpwueM2>|=Z;GgN9olx@f||WEfga^c#j%o z5W+fOo~hH35;4{RYk<@o7uJK)F~JU1Dvz-yIH;PP7PwQ+Y?_QMtqeLtk^{&aEcHn?P6H=|;#P{#mMOjJZ{L`)cdGKM3> z2q<@r!i$$4PZov0CH|e_njsz3jlW@+4JOKU@%`ve`Vj{#nstQYKaF~55Ai7Lm`UuT!)l}T{jss!C%_3CLeJs{$ z%@Sxc?>2MkGk>SPcU`FZ;-0$U$YuAcb>F9Tpr!2%*%_E;Fgd^5-;v^<^ z&AOgzcP4jDjQoU;>d??8D&QQjHcvq8f1Jv5FB&>X)V#lZ==e6D-TisYD%|S42e5-cm1_)6& z4#G0yz$y?U;}=VC1cvK^g{aox*a)-bN$1pU8T9$C-ci#M>ARg`b8yUjES!xa{c*r>G1j+m6hDrLUJ>*e# z?tEii!{E#jGK2}{I2o3wNm&0yoCwvZPI0~>Ek04yPN04hM|7=C(WOO0+V=UyO+20I zmg2PU^#8R zYwV8Z3G+Xk4_Dk$;5UUw+BbE**@s5CC~Eh|oth3wp&3foB4+V{*mg2RMDp^yfyqYE ztvgri-MdD0pO#c@G9dWhfWdBnF!eOr%GptL%= z7%be}sxLHLx=#2toZXZpb>ykL**CJUCQ!q!7cP?POO?A*NgNtsKQx}?cqk?}Uqf+*#dGgp+>FnChXl}gA@wr=_E z!WC4RWXz7Mg>O-1WpJojq=^;uN<{W~9?##RBK%d%4De0DuK7)Ub&Lc)xiG@Rgy5=~ zT(M!Q5!j%ZE#VPzm2~Bb4zy_Jv<*!f)lC$Ka5OikTf*!SyP}B34pS0ZcdS9DvvWiT ztV2(z%g5_^2u?#Qju|5kwDhT7;~k=Rdc?+xH6^ou$o_(Rg9$?cL$T=K@Es0Q?tC<- zO`5hM?F^?q(Mm;%h;d=^9F+rAjI=WSi9Zm-g`lBRMMY7b!YHmJEm}Y+HEVJ6JGC*^ z8DyTB{l_WiWtjTc(9a!Y7T>Sg`UUaDPevCR-R~E|p9X1dNWtT_4XFl1gy&nj<;ji8 z|Cm>&n+w`lT~x-x6x|$FhdV9py(vsg#3?~?_GVsHP0s$YIO!vbf(s2&SL-@qiGVq2 zYD7#_th|F_4~sJ)2Gg}dUYxP0LDRBZ-y%gcdi4E=#OJ*CjaWW`npTaQHFIU_K}mGy z#PakpU)@PZ2-zTMvZW)9-*|Cb%c%0_UW;GU_A@Cy%%Km?fu(UtT{f0foK%KF@nZA< zJt`)=bVTmTjro+Tca(^#56>y;n7v^_GZ_54*cri>Zfzs(TW z$fll{PMpBs%8~K8{wdNKt6=dU9M0;-r(uAVt)(N(CLCX+(Sk+d#_0Mt=mh;lBZk)< zFHVnpPu$|w#r593s2H`&8X3Eb-r!ZU4}S2tV-<0*>)eGMa+T5ti<69^4XL_-HVRR+ z9G+&4G2wtY3|~hr7*knMsVLPCCHI1f`;$+K`{G+=-2DgoK4;gXhre9h^b4KFUxKLV zw~_{h2(Nj4?n}ipG~XNMhwZD!^_t@(4XGZQ-E5Jub0E|{P7AZT;Qj+uZ|oP#6{8xj z(0lV2f3b3YNb?$Se<6Ra+Dav14_q#}d+$H~RXu%r?**b)y>NQIlxCet|C~sk9vxZI zPhaO1-Iojlak<5kx}%#{R17(A-T-q)oGiUc7;Z31=MrRf1y&9WMdIhy&wGElI5=

nRHAIN`0UHqKXBj8 z{)tX})wlN#bdpC=k4L9PHo*?JmM9~dUOdVV-NVwb@q)@L@LJ=>>7p*J4g%3&oD>)X z3&qKk3?htutKDHT>keCPkJLfgH?Zo|C$e{*N`*|~uALUSXc8B@vOhmj1lt8JLhzHS zDyNnW9GX)8jSl!=y#3O_^*@Tohw-Lt2ZRes$~KL0x{;(00Iy7CJ@wexeBNCuSW zxzi7FX!0A9{t40)&4PpQ*}^0Z0j3`jCMnsY<4V)wfxV5>51iKFFSOvRZkQ;ad-_3z zi{apQIG-eT@E$n+DE;}!B`a3Cf5!K(T|bL%i(Er!_v>~a<044yJ3q0d09hf84soC!PD@ zoRT9ID@uvxi3l_b>tFkWlmHV#@aQ*ing$hf%E@-%Fscz*35TDz9zGE_Yh{kY9~Dc* zb;EN4M<4a5`~I<2mLJLZ{3|J8{i3-EzokTo%DmlIPjg(NN_8im;k9MH?2NpAlI-4b zMqbHE&Ct$rGXnKgcgbJyC&f^)=oemFkrijp8$C*1FnYvZke9boGv;65z0f1s{rDmm z67cbFyl*ir6_>VCZDw<}eotl*b~bkXUTLy>>?L`-D>Z{(=2%L9$mn~8FVRVwukk_X zXikR!$Mbi2E7|d9z2o>7IySn8Kk5dG z%kE*Q5`*n;qr+P|i%awl3DDCy9$}(gb~yI8!D7`%TwW$mb>Dg{NvFCOJ<;=w8d>~p z9pfs&>q!<4=oo*{F>V0HoLr1NN1x}6dO14A?Hd(?_0C+8^X=Znm1UA*qN1GFDOEKo z17yR;MxIg33_vMXT>&gO3xjlwi{SF6cB*@hm$FE92=~_WjJ@9Yi!8Dt(N`HO^Rq^t zk?5x!#0|$(cZgN#Eb|Gu`6a8OPvCx=!Ba^)z8!$4RJ(Fa&X~JVGi8pv1AVrcf@^xI zZlC7LJ+7@=)Iuqa%w4jDQlywBf5#+wYX=?k!RW*B=bz+Vp|$Q7EtC{_qjG->rH1Uz zTk7;P-fpRsrt;cH;;7ycewd%Mw85Z05-Y@SxLtkM7%a4Xpf1jojIFJdHW*xr+b6+b zrD}rGL*iVKpzP(^r|zz;72FW~l-ZtMV)kl}8}T?>2QQzv=j!dBFh$7QQTiokuc3ME z>)iYF_I1o89u&~N)_oi84sC62`yR~nbb~c_u{H)rjdJsmZ6rr9i?&KHRXQwo?+QHhvV+jNSsPDJC!O0t+i3PP64Lu-Fbmz|DX4 z3VThqtIJ7V*wR%&A0kW!^&h&Av{!JxIMB@#rDz7ZdnZZ)DelFIN;}EWokU~$TXit< ztsP|h;EYQhlq=A*ja{G4W1RU32-npSZ**VmEM>b1)0#Wa>Nn=>y!K7*fG&!&==Sb; z&8DuF#(B-#-SJ&y_sxy-+SRWuMe^D=yHmO-Fr}^X>H)?DH9~uEUi((}5xsx;9Y9ti0yU z?jz{VwappVyD4&|*yz6fwoWf6NAF-LsHA5o@FsUqciFxP?UJ6+F6kNV+ubd?OM1+b zue+pYG;el~LwC?~FYd0y>n7b@PW~XbPYY1ZA&uW%_5SBo|GxQ%X7}nd9N#!M zi+g*kJmB|7457PXf4fnG-fKTe3X@Xqa=#lxXQ` z3-?=|QC3w)nIbmpTx{mIbi5_St3EZ%UIF3wIUH==Pp=2%%^8Qh)$JD7GF%T>jrwK$ zf>?t3WjX7Gv51XiD@;X96=Yk^dJhb8z)+oBm=SCx{gw-}&S=Y7C*Id7|5JY*pFxXX zD3Xil4EHnrV)6r<2x}z?cM+S~wB|DAm3>EYz`SUp%#~Hy*+!0cvjm0=&gASy=LYEf zr9Q@G*d%-*kz}m4sSABD#-lt5zCS1z+6w5uBo;cwdt*^Sy*{cF*}lMbDyI(G_vKQn zF589P&b)XW+E1YUY;OAs9+$6O&9092Z`o1HPBl{Y&v__*z($`1(K&-e&O?Uj1JKt1 z+HC-t#!DbDd%lEPShH+0AT#b&R_6ucSBet)C^z%hmFXDpvW!Iy)lr3A%lIf`sC*P} zCzu5!We{gAd5j*-cA5g)r?bwOBmX|_l4#IZvEz>$Nv<$biAatnmt|cFdCcet zfI^8-A|)jcJI^sAr6pMgl$4n2`1`a@hwaKy%qO5Bpo8;0t9!>R)$NN|31ZJ8D}M5~ zdA3?2W9V$Pj=wu#sp=K0q#UIr`jC>29>oXrPGX^YLZq)*gRfWH2!C~O6(t=zhK9~! z;jv@5z2(~1wd+1H-o4~~wN$9hB+uJQ+n-0#k*LX$yC%Wa<^f4P|3{;NCXtXk?7H0ObN z&=_F9y88kk0sy(xJlLKC)7y1yMGG6ic{np3o>i~bY%Uqn8Re5bj3`ZW8POTcSKkcv z5{m&ZJ-Qs&1m$V{uNmcEF@3rsw6l4Px<=n4ayg4?dtN>vl=Ain=EIT=qGfPKu1I z-KN+5OYM{R3h(2^b%S3m?x?rSwt(=$(mPrTf0>c+y(!qsl|kiItO+pF^7wPqd(?6; zOVn}QdmDB5{Y8YV!{z;F+Sp{ihigV1gHcKxvhI2K{B6Lmz<>!^HVEd{>F@@FPun{D@;8P$r`6&VhMaWM$e;Wwv{a*$H z1`2?2Ns&Dz;z3j}Fv1>;$e1FO^QP#T{yLNS+nyEqbNyUT=T_&=BPI_5$(#p)XLR}7 zJmU2*UJ#6@|MP>Ac(4)qZxS$w8WJ#w%4ssD#KTbj`8F7OISd$*^Z#-n&&Uk!Uxdv+ zeHeX#`0~Se@ENeKmm|z4vj2?u<$aV%k{QEnQFi6o?TbqE)HI*!0FYax#PYX2uLA|a zfFK4Sr~29cu>WTW7YHO_{z-}cg^>dA84}3VAy=Lf{WGGcQ&bR)A?}yMc;@^?SeM6b zK9$1rN>mV055oTfYY^2%4{1EdsO#U&@5N3zh6s%*kq+hAIel?T3x<*XUB+T#n9aW< zk_*#6!+LbYBbEPv&m}cdA7Mej9)t$bry?u}wg4;eC|?2iJxb^@h#T`+u$Z1jtj}Ko z2%q($2E+dW)>!`~6Hi6^UzqVo?Z3blpsaZV!2B2NOr96{|Ao+h?JH8aYmbbEXJBTNCx^^dUmq!5ui7<_1b zX6~OKv4_*AwqFp##*}!>_vI1<6ZvTB^Z)$n_FoWr7%Ldoqaz*(K1)YJoRnOGCtdAc5<#A&um_9fEj`(@+R)P-uyF+$2yGo|6fPvk&P);8__@8}|E16K((}+k{QsgN{hR1LoeSz~%&~5U|0-4BG3MVR-hW2; zRGcq^Etv6_G2?pb`#s|PzYzE@eG1TeT{1cymmYro->2Z;nS5#mFN1YGE3*IA$iHs~Ve9GUJPsv_rD?s#lFnQ~LK3|{LXoTa>5RQ=Hnjx`&WZ)lR3Sh)I z|9cjpAprweSIB>1=;bgTrNq<~fJa~dJ&Qq}R^}Z_R%BNKS2;-58XT%gy zFTg&_;8Qa#i1_n(4Mq|F7fj#>!~reCHj1;ae6BhSO+?*BYu zdzQoJfsIf+pQqHBhSdIXo;~qO+zYNwRiRb#ba+lwN=M@O`Q5l^Jo{nc3e=5EI(ucpF>;M0M2<6k_ zmoRBeficC;2cl@pzyEu7Bn1HHiv^z5nU}*pi`TQ>7=3cj|6bH!4*`#4JoENn=J>z# z$;Iz_VfFieoLvWe6vg+SncdqvAV7LTXbEY6^pHX?0wN$Cq=eoA(xnI35F%ZO3S2}$ zx|9$?4FXD+Dxx3)f}%eW1XM&ixyk=Kv$x4z2&jMfd^fjmX5M@Arta+Qy#FF7e-RX% zw%}G^#Lb=m6foMuc2Gyd~x&V*i`hN)0o{m#X(p9Xv)0EFNVWI`|8nyg zx%zJc{y7bv|4lQxoA18~`Y&mXB6fD!V*dX!v%0s6g5$c^8FMTsIIfvlvj}q6|I8c| zq>L%RH0R6W<`?h}X^iz>Q-I0%9}>B(|C%}Z?`cI5=dJ(#%Z|mY7yr)8hEgv{^WyRU zMPtFs%hj~pzo|E(sQzjG|BqJ5Z}xvH*!etQJpccHn7BL_{G*blQigS0E$DpzFP2=~ zE1{fh{!7MrMfJRZyyYABvBJs!-?jg|q4s40+%xd+(&StJGjsCq5*uwjuXevoIrn}c zH;tVC|D&1nH=}tG_hnWw1)9b1@-#1a{{MH0MMsjq z-^gn@FBfd2)y(pD&*^_;BA)~DD(k-z?0j~}UH>z?$p4bqjQjsd>&&qE{P+LU-Ylm7 zzXC4nfBzpQh6VD9>p%0T^^&!mmov-i%q_(W1!Rh6BIoxc_-m27p7CADWUH24I1U?` zFVSr-pJm_+1o2shpy&TwLt)0}8f3j=XVwI7jh2UZjrg3&>W^w~c{o-`EKcUKDq563 zPSdt37ICYEmMcj^tYJ|xR&^&oUc#ru!G(}feC|Ls;p8Nw zT$mn-GX#wTacf4z`rw2&ixT34+{V_hs>x;6^3VCnJN%*ttziAQ@7%0SK{bOq_2PfG z<40!GdL?O>Ls#+T{+`*HS*Jc;*R_22!K0?fKU+o#p!otC^_%u+}LxW4wm~fl{6k4tUjk0RkuOAatqcjbTjwnujV#5?AspQVP zk&Q|&r-g%QbeU89w{5(4tp>q#fm;5ZDr;EbhlLBj-gwQ?J}bAfdZVo|bik`hg&l#x zC;5c+hfA&N*^kbr`cK_xl&@drth$XV)q8DYg>aup{zaj3d@{bmChd4-^#;lVA0N;V z#Ya{EX#y0uq8{c4I}9j2c;>mj{P0J#ZfV-$)Gwuzd1dw{OUg)htW&mUpk%Y1Cho|q zSOqU^h|kBX1}YG0REWV}y~DS68d@TuxBhfGKe>}O3ZbuGJsCjz9{n~TjekC^#Gv^{ z-r`m8t#VREMs~K^YxCyJ%*^a|ikgw(NP$X;uE$P|MPF$g%D?8AV;4p`@#n+5kP@p)RJW|(E z!x0u``3b#5!qo3;@slHITxr_-=y$;|T{_QVtG8sZ&qW40@~Y}@nm!Xb5XWv9CPeMC zpzX;fh+G(Dwz%wwzJIn19JP8Y^&Q6d_TUF^o(o+4I&E3AH0^ZaT%afv-Z^9c1;-MW zbYP3}Kc+eUJeDbHep^`SC)5Y0m2jc}tW+bGIxQ0usiQ3zl}%I-G>uuM1}C3yUSi;^ zuV`U@Ae8TXv@fK4=^;}tPvJ**(0Zk5#|vMTq%H3pEv;yqaGqh*(xrU&{%`0()+wE_ zjoDAtUYVJqN{Tiwn%aiWpj!p}$-bLA7c{+dV z!GvLKvZKz5h7C3C8SAm`txGM2eZ8t_gBAz)xfzfwip!!xk&>>(6^T=*g9C7^nK%|o zSUcFN4(7+F1P=aqdkR0Xr5wG2jNw?GQHO9!PmlSuxHL8zMBF(#d1Yd)MyqigI4lhT z9drJaO%H_`Zg!zK=}GpaG2)M~c{!yOUwZKy|E07}QmKSx2a2ihO^kTtXiQ^d;zX@DI z>*_%xmhPG=7=Drd*%sv>m@u|k33#^B;K8eCM_`FEU>Kq+vFL_leNY01s;Gdniuj;f zDB4GSSF7Uu3BPo*RHN_qZt!nG8%FsKs*ynBdK7JZ`QuTOXp;mS8N_U@?FZ@3k#_nW z|9QbU#c{UhJhp>nI3ly>LnajOob!kED+n!(8^PM_jdY{C%NulRD4oZ4qfOiR({3le z4NT()k^&RbKS2{M$+uqo#%CF=Gc9y5EOQhN5&^v|~_hqG^HNGttr zDFR{WQH^Y%%9{lc`^RkBZSb_9gc;u@()xRJema1E=lCX2?ZYA*-(~-nu~+eUwqna6 z)L%w=@-X#hnA<8lRHuyKl%#FHyii$mYmV71m%n8 zm`RqeS&@tkh^FfkiE{A?(aLiB7svhidKCFm+Auk2^t}DkY1|CI_+^Ka!sx5M^M>)= z$i)`JC>cs1OtVGtzr$~24|aSYP63IBtc|+t9DIZ)SPYD^6GitBgX2{d4Yd~?g%%oV zh4Esw5Mvq=f{p^GN-OUd8?k)L8$lyyo>9U}j2?5TdEmQ?mf=*W!$G$f#}(?t_cRPT z##f%NG>gUt;RZrr(JlOwEn6zr;dSU|M-S2J zN~5j#$MJb3+AT)3b0|xEkQ@#*d@NRUS4y}n*KiCiAwCwh*C4*9-K)G&BtNo%HfT?G zH||7VZ5llFh2dQ7UeXzXdmX?5;^I80Fr^0H z`t3J?AJV$XK?(1jN~Ce`*5Qr$$DLl^MBA+0Z7|)U1Z2MlZyi^+i$N3C?8YlwG+5II zH{v)jAKj%bqJFbtV|wt6mRnoUy7h|Fb|)?ce#lQv4NO?2sE)>t8%$H*Hb4ti37VTVCM2c^4&F8fHh*Ssb1LcVWt@@ubJ#jsyQG7byHtHV z*H4ZqF>3JtCYD*rFRWg*jnSw-)skB?DL?H9VxObAG&;5(Qp9QJe^{D8bE`avTMi__ zu{2a+7EIv0aeSjsl(LL>4t%xjdo-v7vko3!$d4%kKD- zyPrN^npSXJD4ixI6y1+}JXz7wGaRLPQTmPAd+XK=%%EC>gg(kBf^hY36m2kWLSl{n zFD5`74W&iK`bPzeu}IW$Ym6mEQIGJGk!7cJe9&!;o&M>V@Z0S&SFh9l);rse@|>-- ze(Afk`ghe?=(UVZj!T0n4xb#rXp3Jb|8Z)#T6gOBushqKS|oYMRN6O6j?D(W3| zwj4bC1BegidJ2wS5}&z-FzOGdH<6l8hqxs>iVd(XYP1(=Xo?G>;8IHvn2Nisq?9APLqq9M82<|k5`gn)nfF%4Dk0cmo zSCs5B?bku{F@K-eIaZOTXJpJQQ-^lCa3Y{9KY^(j-Q?Kd&{=2o0DX1a9=BRPSI=0OY$YrNl{N$q8^Jo}Ko&I?Gi6OYcUaZYl^pH)qKegN{i;E;X-LU-{&44$ zOflfiNT2an7!E-@gNLw^_cwn^A1vw9=SKFLadqlu3+20`Xr3BvTlAEMjhxSMFq7JK z0#9$l`0DSztTczlO)fh#;rq8+>$GM46vsy9H&ph!*^f7}L+m<>cA)bWOgr%^mI*LB zI*jm;STPXf%@iO-{gR*Z9zTSC)?)VD{g`{yp60tir{yNnI?dj$@7T^P%|u6ZWx-}R z)xkf8huuG|>DnxO-7B6ORI9FNco0K_vsx5sm6&iZ7NW{InYCPiS9manR^BeCNg!QQ zO1Z~R3@$Z*e>Sj!!;@dA*r^ozjnNbI1Imxn@hOZRp-~l;t*?B>leTU9o-I0A$Pcv% z_F^Rt)}rm<%<}U$0=m=Td`~3524zO&{4Z;2ZLP3(p!u*47k9?l3gRLDykn<*Rx53d z9#9=0{Kt4|;;;B_neWr^B{h5`;?x*P$6q&kO(#7jA078Her!Iv$=^MGgplWH4bWvW zHvuLicfk<>pd*1)%PqbsAUap@bY#F3fb&hVV_f1#2oB&QQ{}*a`|~+QkXr&n)2Mum zB6BT=5V!b-0N5d)U|23+2BuqdVQSN)(A9-eWB_uM&!i$}kpVJKD6;$(Li~IJjG{F8 z=T{Ue;stg<{+vYwAmF8p+y&=lAiw1dK2B5TTH53<)Y8qeG0F@%gJ79&7fYCBpTDj| z2-Wjtz?IL7iok`x?yT)H>T|6iLKF=I&S0XqwJrzs8KYobVE_y$iefq)Tr(G za}X(7fvgiy%xNKmkzwlR`51y_4RDKZSh_l1VCAc&Ms0U75e{e&&B;iB{N;;p!SI&3UD=%sJ&(xn+eS3Y8H)a&W!kmCGuM?Lewf0r7InBbqFxZ_<7SA z^cN}Q%E%CG2yj)@HDk~77x8tgQKD{TW0bvX0)vquz?E(YHWYncA%jo;4CECJLa>2P zoLyy^jYBpxak!}4JtANz>4@+UoXk|1c#8#wU>t@SCOrMX-BURYPBbhbj%hgR{3}d7 zN^@~|=eHv#O&aOAb=$$TXN~E~VaIW}mcdu6CFMlQdvW5EK133rI|k$;AiM=ZRv|_n zauQ;B>*)%d;5&`prJ?G!XRT#I9ByTKYPk!AE9NpDCHY_t6bHN<0-y0xVZn!nz%>ro zSui7q>#RoXtLz)_bJU(rVgKeEG$w_^uuB{U>Bej29s*8F$p3W}G4BHZtV({RL( zhaf|6J$VmHs;8tPaPVQ|*tjopgxI_9p&`Yb#GhoOs`jb>qk+0c5^Tsqk6K% z-3ATp0#Aj7S@hFazPPaP^UB`(G`gO@JF>k{3x?Msg-ixZ=jbj3Qp?oa@=z-EioA!5 z4a;$1ha%@>LG3|4>sjuJr5fsV?~UT}jDgn+wchLNI`)g_`gLmU^_68VpWh{ZjGi5# zJfvQ?YeG0IW&1$#t}S^-q6^ZPB-9av930YP`BC22g)l`pm$mee7V(k~7EYUZDdrF9 zH#|(#7-=HK+P!Db?%)1AX6%@;KRb3$o`q%4icEKWj_0%A2C~L&Tfc!bzuCKe`}OHV zXF6`^VTazmc>d`t`@S0Xq0}hXJYpW_YA&yS@?Mm(QGoIcAhHl0_snF#kG^|92_l-5`DPe1puwuKf@hKQ zvUa@%o;Rf}14PlG{R%HQ6o!k8&{?!_yaPk3gXY|M^7waFgb(5AeEayp198Y2ZHxbl z@l?9t){j5jNtsN+5Mj>y(wU;I2!>^pdZ;6)$38d>+=6DZ zSecbQfd$h9o~G2x*~_OuIT4roAnu=eafQ=A8CS$t{>-_;curQ?4%$GCF163-3ilYx zvetFgA~iZ8>r5~0b|JjZ5H({e%m=eVT$ER+pV_&Ih*SEJgF9Byb9lFMEEO)V-6im==!!PEaZwG1B6cXHy5$$fooCEHB6T6a)|+asDaqh}Mhl(`;Ryciu!m&e6&{Xx|A znY3b5sZg3UVB@3d9j6udq~*|_(1LSr@n)8@>O`#6R}&o!JXrbp`r$D;LcW?ZR5TpQ z!pVv}_)pYwxZ8xgODGtPXK(Qk9uv#^8jx zO;{dwh;QQi1|R9yb4T~gHN0-|pt^65tY4QYc9sj!ew7QPd{2u>ba0m^EiC(gX#?~m;wtd?LLV22V3uTTzUOXk@aAu4o0pS4_ z{DD7!Xqa{%h7lCG?x^07jcUY;vLIfDciqJG_Zod;`PT8HDES75u7BjXO;<Ck&?x(GdOwV}qX$p}w)E#qmW3bEe6zQT3J~$pv>Ci6O(@H=E>)ja zPnJJ4JuWr%7f<3oA=G({B8F<=y#U&VM|xQTqW94Z+UN&53@Y;W{MfJj1N@>tkEMTO z6&OuX&Y`4QpHA8fRd;UBeIeZ|b)!EQ_b{1d%g# zu#hb_C^V9GZk;lM&0W*C$M|+B)u+{RbQ?iG3hHADqH@DgDjw+JOv^{Ux$~oNMCXU2+(o&tRy1NxRPf)89IRRM1!COf1I4%* zJ+WqRQJz8@L?^7mGQlZ!5~anw`-RnPdA-eo_+DZZKB=vm6vaEir8Fw26O!a;IvKs&iY^@t|LY@xrn+>A(Xp| z>a?XsHtVsuyN3@DD>tZs7#A*~SyvS~70gASU6z7BnuYPEInqn_S4B&y3AX{3NYS)n zF-NPRs;3ffCCo|bI(86yyAeO?=QS9Pea_9ti;M-d$mFRry3gw4*x86yDpo9k(qLLF zk*bz;{77tEtG0Dt4fH#Fy>D@^f%_i)g*Mo<)f*jKH)~bKZ`bu69z_Rl`|)nLp`3aN z85hqnuG;yFR$}Ux+mMBN5s`+1hA%%g;Oz^&2KH;&r$Lnp^vf{*u#A5%{+K@<@%xmw zei}1)$m_!zREp%Uhf~G3c<=k!{VuEZ_}yyNqM~1^QlyY(T`;Y^r+3>;+jr=pq13Zx z&Dyo9RV`}Mth1-J^C;SG?Y4Bh2!fVlP+_{E!iYf+-G1(WQBcC86Wp)SU^L`7F?)3! z=X#rp!9F>pUr#iLW31LwocZdQseV<;t8UddHg#$zN3C=mZuo`T+gnqvKt|Syx3&AU z-ccMWdRhkeWeIGjic=lEzsRM<(3IC1u4O=UMd>8pii#JRmvu;9!h4_>%|n-(hCq z*5qgKT#T`#l;9ewDe@@(aJWDdPW&*Kg!rOaVE2QM(&X$hcKmBv|Jl!Uks1pZa&Nvi z)I#56Yz2KqzKP!WcwVgyzeP*TF3#aw}k_zwI4IIG@LRQjIUkqfHakZly_vSiIhm>V8BSsBM;E#Kp zQqf)%ngA^T#<9ZusSrDs2suqbI1tbW_^2*(-rsCVKj+rOBV z<2yX*HF}+1g0}=teff^_?23|u)gJ5;CC`2?N!x^-_55{th`QGQJe!9GT zS2m@Qv)RYHR?&5s1`02**J0|yaIhH(f%Q@SaPB|)R_VsirLghT6%j3RC3K?eDh{l# zOrGGw)Qfj+T%|1?7aZp+R^CW=(L<_2@0MZPaXP+hdq^3UYtJra&Em(-iAXbbc?5+W!K5bcdxm z!mwoh25SQMM~j*_a{M67jp=g-2=|9*;pGSp5QGB0-T@&@NJKGqn8-KH`smo}uk#Jb ztQh@?J%+E0xA5x2PLKZe7q4@i&&;B;=?E&`HGLNDnSM%g zJqn_RP{%#TUtY9zi4$K>T-kHqQ+o96g9q`Fy(pu!7~lRiJ(m9DDg9Hwd3oqBZ%^eH zjmpBApkRa-D8mz!AN*j!Ycm|V`FZKm<(+t9lC8ww8-4{h@DpY9$p@esXw1I~ks&{b>s$yw9+3A%on-;oS`7z;!Z)~N94lXLv< zQ^OnIqkG2FCo@x1XL7IJJ9uY$VrL!7*7J#U=KlTSx}IkbJ;X2cv9WSGueqTczbmvh zI+G;n&9yX)9T6$~n22%~Mn-2+1HJ{}N=S4jUdkJD>R$Q&7>(i@TrhdmUUM)@;YaCB zMwDsg=(BWq{qry6xXV0Oqd-DN?q+yJFrBwE1q(QimQ$viqhAMU(gTJL78o~Gd_X#qqP68kLeL!nm+vIqJuZs%&2v1 z;s?~W!ZGUTpf~t6r;usdr$%dlkPsA532K2GmT)gMGA10(2B$fGhcoln4xi^2t~f@~ zUX1aTYAN~?C#*eRNsB7`OC>JhgBVrW`zdn6|TZ!=h9bJoowI;QGJ>vaD5X$b&{8&Kb)mC zGwJlc&5R5+LxvVW2~jV+F%FBq23~ALgAWkxA5(s8ClEIEQWsEeb^M@~r=4T|x1Y9w zW84d@->EYnwCcYQUd|nkUuiac^?q{su(E!{M4mzW54yKx2_Gc{$>ytVgP=m9+i~`i z5JWX>SSTkPU1BSsn0*U*_=8qghU!+-92G??`=?+pxV2J>?%cd*z4AW8arNK!_<=8_ z9hb*9UA*;`WsN`F{90?zVw49ta_C>zCQR8vFVWlIs(&2V$5)*_%R8RuU)^5au*b^L zhi)~vey?rJxJEn+#>jkf(R(B(~$3 z6o8TWDlAc%5Im2Inrn2w{sDge7(!5)MBgjwwq7p4PrNmkE{!4mr|#1+*ZBM7)JbQv zA5pr8&${`^c77^jGo`fa_!e~EYkV-vocj5%SKo-Cf%J!FOifRJ_@vv9Jc&;JVeiWC zcrAMT!kY73=ePZfPvE?If=cJ2c#K>pX{mApmgpZ)4}=d);g=8v0LO%wG8LpXdM|xQ7{B+ij)A)jKol4EU-NSn&?CXbojf6~4Oze3sS=zz&|*nzGlh*!xuQOU81lx;(eMJcBV) zK)XbvK!*_G7c7fP8Z^9;{*-^+qs#gzl#Am>ZlPEB zBN{b?23Mfx>410MxhG1h>7%mL@z)H;udImCPpIo)MGbWX^B=fJiwrFn5*mO_7Cu6R zaP5kILy>OMqOi9liheP0ZRN3p*^h_IFCE$(&GJz=?HWT5U1;+jkEN%TP};ui9d+H% zZ@>MC&)_P3a^UwX*WrP?Ic>LWnbA3!-MV49npk>}b4XoGE<_&>r-T^ozm59v(s7LT zc;2E7mQ=?;|J_fNMq`fnfWlk&7p%HEiDMVIW528qHDJA7u%75zt>IRTu4;%^Fe-uJ zmJsgBt)gr7FHY57iTq$^TA6Q!%iZX?^vh)z`FlD|&>O{cJ9%|&yRi*AD5tKjSUK+e ziAU7dw9ovIo^<@SA9s%*rc`~}amr=qLxq_8PlG@?N;-#M(V=31$9O5m`RJNrcNlz~ z!VjBpD{PL&Up2jPzG<^xZ&c&oeEKOHJHyT<&7+&S9?cr_Eth9g%Nva;wf0W@o4=pj zzvG1A{YJIdHJ2;W~=SkILd8;y}eN(_yb9k+0V=;z7abNof?e{-Vx$vu@+ zOV#7Y$~U~(=Vz$WJOu=oIy+Af*w`! zch>DfLc#?$?&{TN8-kzWsbvm()$u8x#P{crK>pX^!?H*GNk?;9liMX?6HeY^RG5$9 zk&xkeMon_u!GlV(V<*#oZ%V_0_}hG!T53izwb6~Jfj160K3#M85<2V^p4aHvKzuE+ zuul?y2<_#xY(6X~W&omg8#1Ed0op4H&H}Kz5?{zSn5$I`w1QkZS?Wn?|1H`Lr6}M)ESi+-Mc#ry~mc!HCXc#Bb&tnVZsHW z=%hj;M24cNCtQ!hgoX=3JP}L(gJNkOJ_x;(*DfDAagO&tbotx~_MK>5XU;HBR&4t8 z>1;Fm^G=rX3LGJJTAN+AG1m32K1>`BPtv#e;GX=iFLIqL=lsvw7J>_jmyKeiB(VJI8K3<(|Z7;O+Q? z(!XfQzjXZ<+UyH8jRq(`^BK3$V_F>F6bmcC-~4-*QvW*t?RS3vF;joviOoGU6WeGr zc8c~c_O@2BW?(OrutX?SGB%#a$}Q)jhtn(=|FjTY>>?9;2jz~|4BnyS>j7z_ci|n> zred#^OqsrxO%Ha2_u!xQaPZ&GRqPtZuC}2u&1pHx&R12=w_eW&XB^CEmOwXVyzV%0 ztvpxRv_sf#ShQ$$&yXPv`PYS%>9rd*;vIDE z>*q%wzA@CZUf|o^xjp4D|8C%i`}X&bzKXYSeY!U7oWAwyg+WxqGc&(0OpDy0*Yni^ zU}P*=i5E(;UPDg|fX+3mpIEYEsuCq!=7!MP<=B#i`~%vA(g9k)#q25Y_FlWCTLSrsw-*gpwc8iKF84%`3lIY zVsG5VY=^6$FOsBtaie&KVQv=$i?LuOO1y7+zI2qqfsXlsy91|9_k&aC=c~Xl%y7HU zpO43-NUEC^A-8yBa|u_OtY9TwDwuq3@i&G7=_5SY>z>SpCmKP8a2iv3$*fr;U*X5Y zF!Jw1MSJ=&##%U`@_-OwFqx48gs@Z;%E27g zzd$iv`JShzUML6LhYLa0U|BR}rKG%C=7X;_JgEit!x26RV5G=xclz z|C=9PPa~2UhOj)wU137WSQJ%0#xPoAe&`V!m&aK!M&USWzlbxegy%nKEX)+>YNmY5 zl_h!RY3?q-tjgD3A|xkAt01is?6itEmfyUX@dT)2RF=;V7?I^OIDH~aq*jBw?^zfO zC(h?z&!0p&pL3LcdT79qy);Xht1Mnn9mAxiERFpDk49BLz^;wEd@GH{9uEJ+L|6?K zPYO1AQ!y8Cc5zrB$rE1_KEU0?D|%j6heewgE8*;79ku>R6Vctm0#+Z{0*c62k$JtX z9^$UgOVp7)uUh8CI$3>;9(dG6$H)JmmFSK|vB>r>%LSFn%`o{D*(oa6LuKHL#mm~( z@?Q!Ty{MSP>$%q9hBw%^vg9xqXf)(xWT7c}cwIJ@v`4OfM1YT2Z9>m#(4=y;do{p@F) zpWTq5EPu5P2F}s1VglMXApzrv(Ibx4jEbp?H`8X#G{*Uth%YTi{L%9I>r0hzR?nxq zU!n=Dpz5-#9BYkm*3L?K>R9sT0xwaidY(#rp0rN0mnmkAFze{EB0@F&1y*v7f@3w& z>&fDA4p3OCdSUUfOgyT7^^j$~OaoC(pPn?$q8Cs?vda~f13jZnY_-cj*1uQ-<&arX z{prw`YT>M^`je5SDg|j`jAUcAgIFxU>!(5#pQ42pa!xs3tOh$wOI%5_U&WTdgqLb@ zupDoT9YmQ=O1)T%tTE%Y_dRw0DT<>ZiL?qQq9mf?UCNr4+vUA!HJS3M8b37!K% zr|okz(34C$Jjc4yr^&a;;A8CxJ`tAr*v)12pR8E(@s|`Qe{4Y&0)|LNlgZ@*1(@`L z1x$TTfTXx(z~DdidH%W-Yz8<57l2gNp8`glfKTIQ_6 zSt;&{xzbI=&e+y#Es*g&vgi^m57a#}<3|g91bU>uq<~MdQ3cS`EHUWxdvy=!(f64DxALVa1$UY1qhf*zqjnj6_Ce&Dk~xB2LEN;!*WO&h<)9b zZZZc`lr-`=1c-o(%0SNuUu?L9#iuBYz;mytdlsuwPZS*+D(arEV&qK5ccrT`15N?C z{3j{Fq{egnaWL^DwmRpA5Rl{P6flY2&+*I?0QyBK*rXRMU@`;<7sL58Fqw_ROKjH+ zOa^~v2GFQv&I|!&K*0j0LcrPr1WaXf$Y3`CQ}YD4@i*xP|0(>u5uB_4WhLdg|V?})l8C@^?2d*64pDhz+$e^)!C`_?f^7?sShopimucB)n;$n5=P-{#hZ*hi;oyL8`{ zhIvp7@$5d#(n{tsHRrgNqFs>1GRo2n+P!7ctusN7@Wm1ma+$~wnycJU&|y|VCoL^k za+MQwnAL@jVpn^sqdo1Pyr+dQ-`4h%?`ex`__lQ_lkOa0CXvfL9c769Hi8*XcMf4D zeRtOT?`ty|{lgx#NQ=au#*4HV!ETaqy9&3tTxGYfqIaEa^sXjXX&P7hZhPUyTD) zFH3ltv-_RM%8n8y&F$cqIs4y<%%H1TEKN(NE&M@Hg%@ebQ(Xz&Bn3&CQEM=`SygzI z7OY@(gespHRnu}&($NzNy8ZEo+Kf{E6X^!Y&*uw8+2Qo8{Ic+ z`7$ktwfCQB=_NQ@`ih8R(pQ)p5)Ha9*1(Ls;EnYqBk#(q5Lhyo{?LtHDy#4c4NFP> z6V(yQt6+&&I<~dwSYb9nLDF(&QZ2`zD;p#o>(@?EKf2MwvVL6&mS``SRjdTdvFJ?Z z!m^?y8bDjk7pw6`QgwqRR?tOE&|k@=ry23-BN@Mvpreb#^uuC7^)%);6SdLm2ua8M z26XTd6jbwM#Mg~3a)}YZy2t=yf+Oc2PWoa=Pmu!N;>|U9d4+%lMuSvts#780EzF5q zC|^OqB;}@33j)wYof#1EMMM2woeKI4lWw_C%m}~)N(9WzN?xPwP(}4zEh-C{3ZAc_ zD1}j0vqW@i>&>*R6N)H8bVs5Z(lG)y;)-)*K6Q8wevsSDy^Brp6mZjBazLV_tvb03~ zDs0ir)9Nd%-9@I|NNa1!YGK1~G_7rfQKOM;r1cP1#0W#pHPZEPrmJJ56TE0&!+SNw z*aSU|bl_=*NqIS4_)y>`^FveDpgdZJ)N1!%XDw2F=VpmBSs24 zxF{%95G)PRZc65!>Eq^7~H@eGQrDA>&4tT8B@7w6hwWmNXyf^F<%>LMH* zWx3HLSK&teHESy#=LErE>8_=FM5CplnoE<@U^i15Lfz|P!SRGF*LYFT(a_wDq0FgE zn=+C(W7^y9*Zhl_c0&Oom-e%tYrgi(!&=c;nH{0L>XvUI#pLLoR>VZd0j?#T)lr(w zJ-MqjAkt~I=f&iUXJ*97(JhnDSxphA1{f^!Ma*Y5BhQB3u4U_*N1-I{SC|}K;|UoE zH`}bCh>(o0ZQP9ZT*QBCTth&?nL%YX+L9~=x0sk0PvUG`Onpnns zo~64brA17hdHI$#06cZGQ#VZKu7XqaOBkA}yg*4BT!6{lEN(VOvt%SgBzplvQJ+Pb zyD%3PXnQ&TAmWyav zVmLK=u9r%1n&ml7Os!3RqJ-p7P_S@AVbd@!qVp-~9#0yufXo0scC`Sn9{)YoCX$=P>&1H-5Fx`0&aO+EM`q+1gD$=b#=yZ$sEj9 zfG}s(c9yC$)r;drB8DzUQunBCRnZXYtY|NdCo1Vb#}h(@OlQo(c`UOo9@W0~p{KJp zUedmz^ibBM?=_v#d09`dY9CWNGi%9@T7%og{c+-J6;cylN!KThNi+MTFRkJBlRsKL zD$@{85=<=OYi$J|oBQMAmrzS|s6R_?SEqLS_OCgc`vWMBdu3AGXQ(yIa zzQ~cy7qV?#TCJJ2rWNyOUaG$%ct9y7r%pShlhNhh@9iPit!0Af5YDkhc*u`MD$;PA zQPz!rU-85C{deykn05N3bvlj+#g2j^`0@)6?iBm|LIClX+DBbg1Bzic+s0?-v2k#o za^UH5``1_05D#VEO#E|PpE;9Gv{%1x4Yq&wgSBv0o6FYW%%d1~Lxq#-_?9P<+S~nP zt!iV7YAJ(iWzVp$_{mz+nx04(C(^xk?W$VYo_WRkq>_bf%o$?ctPO`6{!pVT!RjEb z8530l-@|L)}J+eOd(Yl;fvgKyJI6fT@0O!i6 zDosgeVL%*kEk3-q;^SX@)=KSFzPCo(lYX*#`6%B`^bBlvq*s`#-C9R`s8)*{XfOm)2(Xk+-bH zuunl2i+%lVtDjvtW36VtbKB}wDo-s@J-o5)tOAKfxx9*!G1L&L?eG0$eN`m&r~ZZv zkvOaJ4QnZ_bY8Jqk+U+`Yl-hpi6}~6t(<-Gm)5FiN(`;_sSO|E%NJw)BA=hUJ!CHBO-*0Ms6;6nUn%ONdW4$0mwYbjHuN&$tqub{T1 z>tt2UYW}Y)REU6J|X-~anjVfmyn!xYJCs2?0e1D(nQbnbSJ?V%S!3txIJsJ-T*D%gT%{5#L2`viESq6%C~rAjFfbPPob=uH zRbIB9SR#^(wh>~P8Y@b3*nPfAtSIsGY>He3o6~0h)i_s_;e2X|aGr_T|K3;fINyUS!l_wIoRT zA5buN@fY-qZgk__m0a<){0c?!Hqg@6WNc zQMm?2r)gc3N4BnD0vhY*X(gk`K8mIV-;G9?ctbGGKHtw4)Y*TedXotcXnE;t%JgFq zXSAA}FKn9DAG}4_NOhn9vdF#v=^r=@=Piq%-7CkUV928TP8y&oa_B0_omH{IN(kQY*(M zVg`YXBT&8W7C2gKhd?td+BVN6A(*m-PJ#8Is0bSirftDAFKnn*UyYH*FvFxVWxCb~ z^Dx3}&V-}wwF7KHWei59V9OZWe$Pm@M;p#Wn|#|oI>0uU?y>U#+i2alzKA9p`ghhN zsQ-G-Dw>Mw*1)7IUEJsm1syBE4qGK`ZVr(82PU2Y#^G-`qsm(?< zLmUq0EoYc)hI}lg$_eqjW#`ehlJu&*evB=&w3w7js#{7Nj)s(1?SDkuLaQQ*lfg@( zI^!U&Ju})?!plsQ%Rg&=j18YQINx8-p`Catj5dX@a(k~mkzNiBTuH$@LxihAX1Fa*hGW0$^Wla7_J@-{EMj>eEG4!w zSfeFf@Wtke$;vV_z!oP11jAgq!ANc;FceM1yDg!p8$%gxD2jKIMz||q8Ez=*7Ou;N zg4bs3IyA-WGBBQGd0^(y>M!YdT_))4+g$oXNiXF}7m60IQgLitv5Km;)d{&2$E&$pn?03C4>A$l0nwA7RcBAzr0{(M08@ z(-P;^C6YefptF(2t_FVIashPI8bLAVDh40%MoscTsHTs``>=crWdy-cBp+pjyE2yH zDFua-WXF0pMJFq78H!^2g{z_%R}DpV$7QFcl9a2de8;C!Xo`1xLP2$^@|M#=|Lq+j z-W96Pa`}j&%;keURiT(9xb3zQvz&aJt+EEzwXLJN*s20e=4cIbIea1u9ZyYy&i3Wf z#a0+|Plc0CuxA5%GX%Z1kt3y6-rfvtH0TDOiL`0n-V8~vE92|V0Fvrh@5X4d*(}5s z7Z-&l)24Y_TwD}#(sTFXm|JDsGUl>X#+d;*Z&O{jvY0tT?R497lh;nqyKjjx6~f*n zS3Z*rx}lJ*CI-Z%GRG*Z+$}Vp*mM!F%m{GZTO$(~n|H9SMI<1p{0D2CbvaCmky}(A zOAV{ds64Ebq+{e3blS?KV+0rRF>>e84L*Xu;3H;EiE5^)5$h%c3`U9Mq)Au0NV>tu zNhhh<*Q{}}2n>ZLv(=8vLLspmRMHJTlSziz6)RmN-QY8soX*k3w$iED$K-432=RJa zcKWrlj|q*%OKZsxdtS_k4s6hf5PM!^j-0QpIrhG|g=5a27Y_azZv5x4)!7*af88lS zJf(=O48~K+a{}a3iZdKfDG}nK!c~BH&yKghMg~L|+Q8t8`N9ylEh7hADFYxcGW|O+0ceR`*dRc5+4pWcdCYiLvUmx`VX=1ras;k3Ee>E9+O1eR@{_03z zI*>qWYAf(pgpDTsZE5&BPa;`M!Cz-O9PA|M$(AMfyO-3}zQ*54q`!7|2f8H%X(#oEt%?Xka$Z135MU24i+1E6Mx&;8j+5c{iHnpcCu6@Z7rQi zNBnM!4K;6KPg`4C3xtm%9jyV9-q|u9_X9{z+iSRQLgH<)h?_vVA$~`Z7U*VqjdZs3 zB3*55CB2(vHtA_;M!Nai`pLj{7|+3!BfSW*}$qP<53YEfjL7L{{It%qUaM>0_2OXO=j;sMr&2;YX^g2!RrHFz~2}^m}aQNImTp5@|V=a|be0opBl!b~0Pco+9#>5US%ZppGTpQ0Of@ z6D@H2yYwx~;hbA4VD--#V{bLrmZYn{qKpAcEz;i_i{DSl08v*guammg^0?2E zwEl(O0F41ENw$WO;W7=rGPVvdXqNjhyEkcuGVE^=^u|Vf^)cvHl7ey`DAMCT8LdY0 zQQsqa4fP3bJWxS}BEJClaNi3IcA(Z*CGluE!%+zf#z@dzu^9JGXlZ14eyIOLxEnNs zkac>lt)YkAmS&q}Z5C9k{Xb&nLeH>V!r?32oUCV%Un%Rl?2 zrU&H}-=QJWSMqvQT&bT(OanwRT2fv^Bt2AKs|!lu$07rTvvFNWJaby(8j-UG*BbH~ zmvaTbo6Bo^dF>*v@p{e_1k9F^7Ru`)d0i~8c6m*c*Cjb85c4CMY^l61lh@_)x=~&? z$!og2ZkE>_^14%Acgbs(yzZ9QJvqA2Yp=Z7C$FE$>*w;iUn+M{UXM#9&dBRk5lVe? zmf-3qe^-;&>f&1XF^Rx68`nk1@d;ep%j-sY-6XH+^13_y-%A>%O8kBbAam@*Dw{$tGmRP~bQrGm&=Y1mFN6vsw`{8|h}(1nv?t#|8ugh&LDU=lKF> zu}t=E93k(5IKLy%A2?6Q0tjCKCaI}}yypp&2O0tp_I__*2O%F+0wC;z-GnT}?}aM} zS%kQY(g|4%!HXASErtLifg`{*;4vX-4S}{m0+56U(zG-n6MzzFh?Is%A9?~1`eAdR zH!ur8oDa_ecL`a7@Fj6TTOa{Q0>EcUCU6`8pC#b)kqrn25cea*{RnYCLfnrKcPZ#g zb!fKq3UHs0WgY-DUxwT->j(@5Qh=oZa=Z-jmLcA9#9NMd%Moum;w|4t$j4CV`Y(~0_ zg}@a;w!mUrpit&gLbkR=`ETtFoF-)3P(rqY`F0500R}su-4ClLPx=qH;1I|w+zV-96gTd`t=0hCL!O{1nv-W4noei0ub?AfxCoU zhyxOU-GqD>1|ZHwq`jC5ApBBW;0Pg?k?t}CUk2^_2>=9t51v=b0|>ivmXNCrflNYv zXoB+p(U*`PuMu)Bm5`qT0Vwh_e*e!CXbT{R|GP`bFEH6JV067Xup78f$gg1ZD+K%s z`i(9C(%m=@`~qYXa?=AS1t8wd2>^Kg2HI~40OJ0(8|D8Sgx|6O5OC`VAnqaXwkJ>x zXa)2Jl7OWE;@n1@+fd*R(%q>9v;`&uX@vY<6Tt63An1>wg#5V>fI@eJfsVimU>_lW zAJTMYS2M!SO zpc>Ew=mJ222axdqd>@?6$D1V{z05oT)$;J57;!U`n-Hwi0@^o554nS>Py29U1EX~I0> zfQ5t=wE-Q0rG)84!MIo@U=08!#cKkH>0!SZpm*}iyJYgl%2`hz2r7{UC zO@N^QlqrL-G6x7N8wRW(EEv`Zo(E(T7J{&lYlM}n3m|^EeZU>ULLoR5ful&AzHDqR8Y6IR&+2m|T@9f6@h3a}K|0h|VY0kR3J;tNy)ngH=YCU6|M z1|Tz4JprVziu6@Ms|s2*@T>+}wG?81*{9-tA3NP8UzRgssYV`-T(wfc>rMm z6pBLPC?t+b2aXU{Qw2%^5MFZ(Fweg4imi$seV(xBJA}m`JO<%0HGx(@3a}5j0^BDo z))%M*v;`7?Bw!7III-Xn3m$Rc5eFV|;1LHNas7eGz(OD$I0ArQ+rM~lGQ>6 zYOMec5LO#js9heI0Hgxf09c}qr+wj7Tcn;sSY7a_hbZ;HyB>Jg+YOv0tUmbF4+H7~ zNM0Yw>#qmEw*E!nE@2I9Krj#ov;`7?Bp?mQ1dam`*)R}@2S9HKdc!+}HBwOv8a2d^ zF2G0t8EOP&8X-fCkfFvNCf5jS3jR%J5!MWfG^++Q2YRCyXf^>qQi1ir0RV}c-6iZb8xRb{0d0W1xyAO0!M%=z=5?fb9cf-in%C2SOyD?h4R}mg3s0atdVv-VfiA#E zU>2|fK+al#Vaq@u9ssQ+61GIbR&fBBw}RkS>A+pW-he`HK%qB4djqsLpipZl+PVpV zw5@j&*2Wj81f&23}#L`va%30|g3nY6a{7aNimCopIke9oPp5+Alyh)=hnZNcY`9`z_2?Qb_bvC;L{!Hx+7gY;>Uv)zZBR3 zJSMD%C(sr^rh2R)tS3SF_e7+gh|u#F!g@6XCIG3xdf)&6rFz{ZthWsa2I7E@z+@m3 zKv*Bp`XB>+z^Bhm!upm6Mgm8GY{L4r1@;lvzXH;JH5HK_hfI>rW5;n{ifUse`fu%q?0Kvmf z16K$ej<~}o6E?yVI8WF}9Y01w$jF6+jj{m<95oL>g3(Z5bShzQgZ?&@d%HXU1>Q~r zb_2(OyM$qa!Nx$~n32GG0JO0~0fdizOxQT28;3OGa6j%B!o~*zZ2`pB$0Nb`i-b+E z0r7-QMBqd)n+OFa-Y0BQU0?$6n6ShY;0j@r_YpP)%1r@%${oU{b_Bp!A46D@3P4~I zcqCmTY+5T|4PnV1Kyx4oK-}qwGd%_6KOK=$x&R1xCk#jckb@aeX2ucVA^;&X3E&GL z;Y=tsa|N&iI8GRzt=TNZpOps336+4Mz*)lP!~qDOi?F%iF|QhcT+h2t*tvUDutv>5qGC>xfzB0&DA95JQAw>!!pKBYCV81jh)7HGu@NI8w-9 z95Z6MuMiZu&x;_!=s*H#j9@}6>uo572lZ$|JK`X2{V2C={ghZX5V(QB4Fql=a07uG z2;4y6h7>Xw$BbCwg>b@)Aj0TC0%?q3LM->ID25AuG@%`Fq>#Zl_y7JGu{=-+CrJ80 z5MgwHqz|Mqf(fx~BZ`W@Sq+|ATSX}3K@)JMl25%!U->e2%`fDq%ndCu{^Az7%uqHh*or=2ZIyVtLdFFM=THqa8>f4U#@OA(kE$#UN>qAB|`QNqc%Qh*3<5W-pL@T<`gF%d9N-VuLl){60G@%`Fq%ba) zCmmQ9`O@l%uzMT3x3PO0yPsnBQ|x|<-A@G&Mh6l|V+0doNvSA?3w|`B62IH6! z%l1Mz;RA8oiQ7)x_8vY7whwYJiYc)?Z9^%l5JVUqNFa?Yi0dP+kGMV$>d}OD#L{88G8hLrpCjjU#US=MFM?=7JBWX-hfjj%(ij1oo|_R%x)4sVAap$gFGl+IrybUuAc2mv(TMc5s(=aF=#)mv&5xWv~!Vco9Sxq!^^!ASnhj z7{`oQULp1sVqYQlm3ol(74p6kLlOhXVp1$Sttf$;&)=Os4jRCQoov|2hMffef1}W= zf-;c*)lQK2RhoE}wISw*n)&=4>g8ZWEU$UMi}Odi`(qWj%GXOlQ?E1sI-6gg5KG37 z;Q!ehyh3lX=gl!pi{&jl+^9n{x-iP;?=VG%0|&22~f0q64mw-mz9}&w3ZDRRQK(P<&K+K0JOp0aH$NeAWr5tSrosH7%C>uxVaForX zbU8XBmX8Wh3OD>{Kp0WP(ThQ3F(H&xyFe&)EDqiN*;W9|LoLwxS+v$~iG4majlDi*`zA}c|KGci70VAa@k1Aq7!b=8SMfJHLZGQ1DgNWISpLrWv>zF< z{3D2NvHY_PIkEgJ&cCBpfF7~@yI(B-!GA-dNJ5l(E)0ue;csTNOp2m-5s8YT3JOpn zie?21T0I&?(OX3^d|)GwEtUC&qAak%Ey^Bk7!k!rjBQ$!JsI~L6=kndbc(WfF$P2_ zC_@7hAZ{VY3)#Dn^TFf2-OohS#jp%cU(EGWS+e?Rde7D~!6Cd#2K999Zm z{=?dl!ni1;fEWS z5cMFDo2HMYiDNlFHYdt)WnkZN6gX~Ll;d6C{P+~6MDcL$A&-YfS5kasT$B?8VebD4 zba|o;bx4R()e0J_Vq>)%oL6T>Sw)dmQ82&SfgpN71732}G@uJJ{FN%bqO7678uqLq zm#-7V@nB0idAB4oqMTC5{Xd07r?BWR1dD#U^i$;25;UO=y~4ly0nSfr7v=NaN}oGEcOiuluo$w#4d$<)kt^yELspb4Y3fQE;xUeL)wn24Axw&L zbt&2~D9T!n*K)j;<7-q9e+>;Z+Ytou*ES%<{lAVbu4@LxudhQ!lrT-*-~{tGq(r&V zjRDMvaudflbzn@C7S{PcV3eD8kDT8^bGLAO%cv+n^C6B&QCgX6W#m6hP<~FHTg$-u zttsyRtprEtGD6}Afsq)}qO?Utxy>WW?KTi|2d_pubH8X3g(ob^uL>|D3QtayUz6p1Jig42!bC4URWVh!XdJrsGM>h;n}&X!?N=h}}r+#&&Sr z?L%6W2ffIMvWXg-T0wK0>$(4%TR0%`W`Z_ToL}XYL`sy03gAFol!pajjEb^_Vq1De zN!ri`3U9T899su5Bg!M}dxSiXG@}bsqC8p%Hv(uy0vYcAqb%~TzqVS8Vk{T6dyANq_h1++Z^D1qh5#{MJ(B#wP>Jt=$ zy?q_%L1bK%ehT!Hh+pxP{wA>4-;10m&s3oWUC4;?EOE~U!Q8VXeRfim=VC~Tk}d&p z{F0@-;1uP>QBhtd-;NnkcB-NbHHh+BR+P+yC~r~gZQ>$tb4716vC9gQ@1o$YASkel zWV>i&R|Yim4oTjj$U7bc5Jps#5zgOrVg$s!J0r@U>~NtD#QiCb0gQ|Cp1=V=_y4^R z2VG!emW3>dv;CsHKPAcst)hHL(a}MSiSm&RZ2YJm%^>MVX-tapF>4>YKtX=cR6Zu> z#}xc{RFqGwC5V%!o2Z(lIYcI@SRi7|V+CDM>$N)29^wEQ(1{KF^6V zPT?;CpvV^!qWqb?f9?jkzH9`^zoc+ZMGzyRd_|3~T9E|jUkf5-d;+ANPT7In`ikYmrBsC%VF-Md}Xf?_bYutn5;szlva<=+R`cSux|6O$l*&QlK{ z=|L1dXk65TNpdiAi@YGNBp~V`-J%{kDC%Jipm=E#td-_OJ=_Whd0wpm61Ys4f>q zL|sO*Wi++COVkyGqPn?=<3geyPYw_JR=zo;jUiCUEvwK^c`D&|-5^Pjr94O60e zV<4c0^I9L`pyM@@qWai$k{w}ie6kxfb@GU)r%=f65cSjoQBN-xwN6C+2~C_)#lNgt zCThJ`)U${=+b8NzZK4Lqb55P8=O#ssoJWx$$%34m-yrG*K~XPc?xGS=FV2a2NxP_x zBxvjr^-|(4tw$@muzPM0qoQ6$vCG;-yv%+ApR={gqYJXp5-7E)ez35mEWW4D~K2_y2bjqW->1 z)IWGIB@;@GN@PP*ShN3>f*xM@VlOE8>HXjIjstoO5JynOKsM|y6 z5%p=BdYZj_gHik1M1963>T^hkMSUS5>OhsKI|@X7%_iy}*^}uP^$lvg=@s=Ynu!d@ zMcq{_>N`x1jEVXur>O7IVV1<%W@JTupCs>-?EL|ZVp`M>XzByjKVbbsl8q8GN`oH} z^RWkMQ9mJejPp;)`Dq-)er5-;pEaS2`~MjMpXEgTybvsW&cf%zqK)`Vcip0XPx2oMMExsQJ=G%W-x@{zu}##!)4+60)PIbL`ma(^ zXX-&i|4xefpDt1V>%c@rG#M6cUY%$bk7$ZRG`_NFY8irvB873$G>)}iWJS}RXhRa5 z8&){b3i25x;%kE3ryMD{*oVKr50M5$zBwiowQ1*mwvV59vZbNPH;khnB(z8ap(G zG;*RHRtV+~YeW=1$YMscQU}Oa%6uvFrCIL(;VRr^G7g$M1+MSY2ZjV z*l;9?j--L5R#0H64-{C+{89=m&57oufRlMA^G@cSgP0cWDB_O_paVmg5bbC?yl6oJ zS<#NMf&IsXx&Ox`IpB);E~l0G5d{g$ttf^YbX-n?@-Fm)_zKo5D98f`t)dAr&|pPQ zv`QMRWWKTyQS=~-8PQx0kk7@utB3pVVquvIH`u_#2yIzLwB=S%V7U(zSkC-%3M|iw z#|OQdUPWv+Q~F?ieN-Ee*-2&JJpRa z_+oP^F{hP)BB#;tY2-MK!l##_RkXS)(RfOtok4SFkn4=y_y0^L&!n6Be$mc~iFURF z)1v*9%>fFX(b$h(gu<@Hi8Y8wu*L{4Fp~`B--V4dU*#p4yo{?3t7>wCfVea=1L@_E_mlG8F19N|1yw{ITjEJ_b7!+E^zI82N&$^gs zu{MzBJ{x>sem%$QBV5gT3T@zJ+)xkB`Jq#bm!bj9VD5e=y0H70MEBFk0}im~fnL!z zQefkZXx(uPi}oPN9}Hniv`y^WT!u!3MN7Cqa|xP=B-or76YZg9u=(LCu<_v`Fuz4W zGh4i1ehVA7bRvlXWHBjP(uxweQ3qmqJfrc`u9ob@5XLYq+SUR%P{sY<8sMNAQFNmp z!^nyDh`^3A_|SkBbRvlXWHBk)qgIr_jXH$Th8TJ=gfUEu)>8lns<{6>0W>3uZuDaq zInf>y*ii-_8qfk_AB%y6k4=j9IB`59(jIq%xX0VjiEi{_0K*sq@lOZ}u>0q~C(6J* zdV+iVL<)l#5v`YiUe>x8_L~xIItO)RQ#zftLv{5TaGFk-+jfT*QZlo}TQA~>V5wRc9z(<3kee4GFpSVEmSSfaoQ{4Yg zN%R@PpEYAxw9jee^Q36wf+$8r`+~;47!d8xAqLE~SIiS{-5 zzGnY7cCeqPXWB#~*!L~*-}Z?17Y{i9u8aHs-Gpe9Y?@@^dpi4`P2Y0`KQQ-0TC~5G zApsIiF*n7l@;B!G#`vQjgQESN@$Zb&b;ybKk4BL9pUvR>U+kX=g5!T@MEg%nwEvcf zE_}<>=UFi#x}{TerBQS>h%k~E5M3)k3%W5Sy6yw(dOs#bH|oH;!G421#t?F%TLpHM zfj!m+5N9RM+5_Su)-eudM4w*>C%mA6`4pJnfdtYR!G!1wR20JnKWKPCE4nZ#`W{x4 zz>PYD(1sX#LD4;^xyQ8VwgQRhHU|e)2%s5JbfX``$cetEz>YHb(0~?nB8dTHF)8|9 zR+PYvI)u=M7?4pbq4W<=4AehecgdV#=>GWgJd7IcExg}iDD>%ptB zkXK_Nug1b23}O^hqVHovDLf!{pC<65lD-eY`xbyk_N@Yq?Awes(F-YB$b6w2bqHbi zd~2*(Bz^_ zUIB9eSrBg**ii-_8o2*Q1Tqg-a`kF#iZzmF?X092>n!2@ z?<9efNhb-MyC+F-lnrb;n$1Tu&y#Tdm_qbo2xFKQy{rHZRDsyCW<=2q*2^3I7ua7> z0-pcr6$7GI79$9X^H^QyL4oe#m3U{6sc-J6cnlADyvmc zq?#ht6se|2^)RMIUqz8seuP1hRTNo8k<}DgU4;-RvO0}%(Y@60Qo~CPFEzZq$a4RA zP@va1Q4fmLP^5+;H592Wfe#en4 zWRb(P=oeUFhXZc-5I_hmh$4n0`Z0toa+ntVLM!ZWzzrV)2%!a0#E|6vU)ayV5VFW& zTJ#1h>~O#h9|8!W1yRJ1L_da*MGn)VUu1iWrjI|BL!L7(x~~OpAW8 z6?Qn_h7SRR(1IvpNTMG@$RdYn(J$eaUNS6tBcBhA6QW=02630wp+oe``5XupgFpY# zLmv1ML=*TN2oV&DqX%h__=*xRcV$5It4Q2L5uWGh*YHW&>;Z+Z#q}=H!@Z*4NUoL! z(Qhsm{T93EKVwfTP2JiidRwdLw-a+mgaYj(|7A$@XsPITQluj&`dtKes-pj{MfBgh zMgIdy*ENfN--PJ#ZqXkg;l>fsA4H-+^oKh{-|7>+hejTo5xtka+x()ZSnrF8{w#Z* zCnvvE=`WD$gU=sPGpNboClqVKec{wjt@_}ZZ8ueXW*Mp$%yo6+BL ziayMqx5q_)hotYuMSqXP*^KBPSVjLZD*8uW(LbpY{nJ*_Kc5u+i&D}5OcS|!(Z44D zM2F~qnHK$fp8x58WpQdu^dCv`4~qVa1po1hG0!cAWkw856~pk0F@IPLTbCGnw~Mh) zN(_EtGWN}gQJ55Czl0b?jbfN}V%S4s>|ZFx0X{Jf42n_A-h%{LF%Iq*V^LU)5~mo4 zkoOS&CkEqCCJ*ZtgKxve;cQskA;yxp7>=kIN6^HPHsr)uN{q7%V`3cDE5^}PVjLr2 ztt=!)d9xT50WtVyW>nIUi)MJRZ7k~)V>vnaW@W4x6~jFx#<3YOjvEof6CuFE$q8&a z(Jw|73921ptm2%n<;Lm>F}x(Gjfrtmn;54g#W;0HjMH#Be$pTYf6i;1St3S#DW=6Z z+a<le^KXlBcBjJxW@=}YC3YQ6!~*CQ<39G?*CEFGLIlx+QIK~7c{cb!tqpOoH_mxH!2OSh#JIl%DKQ@K zU|NigRZ7NffW4pbq4W<)`Q-NbbdBPYg#0z2Fw?!gwsFeJvNIz-y| zFd@cfD|neUlW;TLZzgba7kZHa$r8Mri4xFcf@Fy>I>D7DNSGKG;~@$@R16m=@K6U5 zVm!?J!*-OxhX%B93m)#~pkItFY}(=k$+!5?2pZTz(k(M$Bn!b>vI$YJFUh{-FlcV8 zfC5`7z!xH8YX}tI+9SpztUVG$FNl4#6ahrJ|BnuEFeye)F(};A0y^#?anH0EkCEuH zQ86B8?eR9GKob7M+~7%>(M!SJM#Pa3<4KA=S%omjz0C%SZ6oJ4>OAE_1G+H4{ZF}( z5@Wj)B-&2kb_zaC;-@<>CPrT&{AdHQeI)8HMHEwFJVSwJI*}3MSrtK~#dyvRFIqs} z=dxm?$(8nDSd8Z*1U^45#tQ|gLKET`5#vP?y~x~)6n&9o0~`-f;H7%7=Vg-aAZ7Ts%cHhP((Oj1DA_#t8R+h=i{Z_?ioTG@=z< z=)oXHLEIm0=ojO42T1ZdNnRhpgcunW#UM|HJQ?z2$de&YhCCVaWXO{t&l}`ufRGeUh}Tw{5V+ zZTH(Aux+$;+a8qlwoP)Md}rHiOV}Q=J#5=zOWL-|L$*h3kJ@_V9@}HK$8As8dTmeI zw%MMtrEJ@6Puu!z{Ssf-cHR8ts%=EJtb6vl`Odv;-^ksz3EQ`}zX*TfVc*ns^BXMc zUW??JzQ7IhpSAWC-8#Q+o+<|qM4$97yYN`zowY; zOpB?Qs;QZ}X_!`XzPZ5M!?c-untPdhn+4`Vb02eGv(Vg+e>221?dJaG0p@{bv3Zag zIoMoemY9c_hnk0(rRL%0VsnY;xb#5}`1)2uho zGS4=DY6i@6%yZ52%%FLG#Js?~&}=X-GA}kSF&oWG&CATo&5(J8d8K)k*<@aAt~IYQ zo6T#@>&)xTuz7=dqj{6rV%}`tV*bo*HGgj2YDUa9^EUH#^A5A!{Dt{T^H*ln{Iz+f z`5Uvt{H=MHdAHeV{?5E-{`HrILpL{vE?sL>UwzRf*Il#LxajJ>?|wPI>MYBu>b@gJ z=MOGju)Ny1VeJ(a)yr4)eQ7LsT#1yG%}#jB%JXAIeyq%ouKc(xKQ7OYEApc|KOUPO z=L&esR^`uE=SOdTtjUkHvtz_to^PN$-#~f3f%1F<<@pB6^9_{e8z|2=P@Zp~Jl{Zh zzJc<51LgS!%JU7B=Nl-WZNORKt;jb}k#C?P-#|safr@+s70deW-ebYed6x3pzSH+y zaFiwD^3HCpc6n#FGR|&goZZSeyOnXacgES?8E1QEob8=)ws*$a-Wg|mXPoVwakh8H z+1?pvdyiDRYVr-#Ged;>N425RyR)Z`ne$v04wZ=fdMKux}Z zntTH_yBmmHQSGYDH&B~zpf=w?ZN7opd;_)l25R#S)aDzg%{Ne+Z=g2cKyAK(+I$1G z`37q94b;*=-_3h3xY{y*u7ee>@^zmqT=3%=)%o-4xsFy;&vmq-dak1t)pH%KsGjR+ zMfF@qE2`%@T2VdM(TeK1j#gAx_r0~x0@u8VYwoR5>zaG3FwSOXoXyNQo0)MoGvjP# z#@Wn_vzZxZGc(R!E9307GR|Hr)>ihSXU*(Q5??3x4*ihE;RJ>bb!?H`L4xwd+n= ny5I=wT$YLz>zbA>aLlimTdb&EclXi-ht6~LJ-T$kZAJeB)JN1| delta 67088 zcmbR|2S5}@*Yjrg?m*hzF1IKu(wl%twIZToS42c?h>ECS!G_&Sj9r5T_0-s6O*JM& z&#tj+jIk#%#y@sNV>B8&%l~GVqbQbqF>^D!^X9!bug#m;T^@ZE_|@b969Gbqh(A0D zjgL=i+vQQ>1wxg!qy& zviq3^b)#AL3Hgr40blj&H9VW>@E`dO0f>FSfnzd$8S#JT@OmfF<(}=|w^#bJ`3DaZ zo5qNgMD@oTj^DVo$Lk|_?cIOSh|wNfCj5=pcM0h>I;-!n!J%KbK0|DlrxW72Z{UzV zz1pYEcu8#b`eXn2LA^|)v#Wb)gNbd`wTQrdaIZmqhq--n4X=^ohLPDrhL6zH`1K00 zO?gSk}z8i|~%wZZWo( z*dY$PZ|%OrcD~(@*gkG|9NRw$qX`IOgvo>oQ-mqlo+?ZwoG?xFAt3sSzJwF~L_ci% zi~iUS5Ni@D28lsTeb{+96Y=13&AA=X0joS$rcNh;4&Unyx8`}lO0&L%rst}M| zB@e<$p3*pMkC(<{dxG=_ih^eo&7Z^#pr-j`DbeCBAd`ygvsk0N=(6Jagi=$kyEc_* z7^IyeBEZ^yyjr_oQSWYoRqMJ@O0B8)Ya?x=sj-#Y-$E%Ph5k{5Dx@al z(hTX3{8-=Zz%%XT$$m!^GE?b)?SJmAX@38brfr9U4QM(pEHqCe!Y; zH|0Bn4&E;_8xk=n~E|*)7|3O?=nwQe7i-{5g z@g@z?2AYx{#Fd;Rr$_`ehQ=hy=D5vq5^c-b+LJnlo`y6MXXs-{Cru5RhD;J~7;G3q znhV~7A89EB3DKmjP)}%1x(IEA_N1SXEOaJWLKmS286-`YrjubPNs2z@uh?59q^HL_ zB=1`M%n@$B5&=k69N{bu$!=kU$h<#WNG6JL z7QN%FoQT8iNE?zu{vr<{m<9?VLM@@T@h(zE@1VajTFj?p7dFB%%02{tvxz-Senocg z6dkveTg9#CzT&>)T5sica|gI%+)3^{cagio-Qw_zZp^Ka3yEPvj@_Gx@pvqWs4JlW3lMa(G@*8@oJx+i=k4H*L#9 zUb}Xc^M3Qkbbs_z(8W*($#oc^BG+V zCgz8AY6hlcB9dwd%@kcpQM5PtjC@XF$anZJmTbp=jTP0$k#qR3DT?tg(u_RBfAQow z{%a0S;6z%05saiI1Vb=sr5H(TXa%iE8^C|0Ep&hmq#bmHuB1Kmf?gy6(jlF6Fu`ER zCW(*(IiwR@g{vePz2PzG3{T-1Nue5QN4io6I*9b*T5>JPJ~YzlWIsxJDLKFuaCgW- z6sV3I=EM1La+Dv>Pawx^`q=a#$89ofvdB+1gKY+rGd9^aIpnO(1e=NEcbiEzlgS@8 z(`=@ZKW$7uq9I>a4Ed_FS`YH3&`Jg%j{N?`*xq&ts#%>*4wQoPwYOo+en_; zZMNG?WV>y4+ene!F1y`mTYK&H0ku0|cK|eYhwP4l*6t^}lVE3e*6u7g89Ep`fZov2 zkOT%pvY`iv%w3?Wp|>Fesv8EF3|ZjG`~`fNzkr_*AOu29<~0z^yawtruYu-5C!q(l zc8+w8f+XiU&MhI?xt()+=j@gbmjuRaxJI-{Ro8Kz93e>t{xMjF!cw~4k5J4;03xZHtaKkAC3ZX)j z&_IY2S_tigB%!O2CS(W$^YlH#@nxIv-KznSf*kb~;heXl=lAsfsT?+I-gX;-BNe{&~Qy~K~ zNKY65nIsJcp@H^>5ipu$z&IF3vfyj@nhaEobr3u@p|uWHtaXTDtwR-S9nCf4I+5SF z&Rh>tfI+q|dB6?eGRZ@3AUBBo%MIa%kSE+IZWMXSP2pyeXWU$FE-B&`bBlp6>jvPK zam#>mYq+m~<2G`~!GSx$U4cRH@+M6;ZylkNauU=y`e926Ug9a@w1>mKcCNo0sIDj17z`^^Pj^&{!9LA z7{q_a=R-EXncob1 z6-V2sINBz~(ef2X`(AN0(>BG^b~zk$I0(DZ-+I6v#mA1Lk7dCL#kqbpJTyFo3x?;0 z=kTZDrQs!9Hpl`GR|K7)gWH0wU<(C`1Kv>_@NdNdA1Dr3$Q+Q`p)L2IPRs#m73P4n zDsw;@oWwkk)?yw=LzxHCaOQzDl6fGl&pePeWFAQ4jCYKG(I(6TX*}~l+FTMOfwqv0 zl0;jgH&&*tnKRNhc}=q;m7J)Sk`qNKIZ>>V6Xj+vp-$9!F-z9;v4&g3ht$dYVZ!9^ zMt5 zLxfdKs}tUrD{A7qG^Edha~%Ier`_ zjd|_nR8i{8ISoyol8@vs)s#Y{+ERoRE!C46O0iNCDPC$RwUOFOiBcyiMd~J{O1-3X zsh^Z74U)2@;Zlw?1|mtv&GQd6n9)JkeA zB}g5mWT}hPUFs?ImikKlr7UT1k~CBrA&rv8zJ|c2Wl^N$MG^xwh$L1;o0O=#$Rb0cn;FcLeen}BE?^O>Z%gZQg;{y)|Rdn9^;WQ+C0 z24ajDE5?cOVhgd2*iK9olf|xLs@Pjh7c<2EVx~A)946+7W5tQ$Byp-ZQ_L0Ti;Kji z;tFxKxL*8B`~s8pQ^FBpukbx4>=%Ts!U18Y@ekvl!mq+vlkuu>QTS6Rz?^-iG)uT4 zToZ0dv!#!Pdy<2cE6u^|ey%i6xGT+<@}x!55^0&VQd%voGoFw>lfD#=OB;og(znw0 z!hOjiZI^b5m88AGBWb_zQaU6&m5xd}>A3W>bXqzm5|K*3O23O*;|a7nl#EtD2ZpGYgDPo=fe2IEQT3+Zd>SRG zE#*sFgny)M(oSiQXfN#(9!m#31z9>GJePiyY^4*@De0{Ai}9SuOBbX+L>uER(OI(3 zb6?Wj)I@A4wii2!oyBfqPccgzA`TZviQ`0*_>nkGoF&c?^F*`wiMUc+BRYv+8jl-K z3rB??gw4iZjlT=qgoDB^<0a!|;Wy!&@tW|5a9LU)nWd%Da%q*cMp|$DS^8Z1O880o zMmQyXCv6rUNL!^H(r(dC`a$?tI^Zc3N{5AK(lN~RK3g{59N-V za)-wZSWhHUO=8!h6u2CTjUOQ~e8bUd867rel;oZ#FZDEu`M7t9XRL_d7q=)%X))fx zjXxsv#*k!#Cl}7*x7Z&meuKXa#INy}1uL}&Pam*nlhU(M>0vt}6-z4xOC8+1+Y@I@ z)jf&7FabxlB<+Rqq&91`5yl}P>LjCIBq zkYp^S_b2AvUDmS6ah$6+sm~zo*fbdoZ-=tPZ6IrXhyDJfmeQV&Z2`9>Z1RqHzQe9k z?96$im%BMT^g|HP)WBb@wViizc|hKo<$<=9aY+^>N8_D5?FuhrWju#L7O9A}BNp5! zVo%Hpsj_jmaVMT%>@xmf+-KY&jW_N$?lm4T7UT_F;b#)4hmvDI!+qv6wx&y>0L7^XjG6XxNq=~kjf!GAt7z^I(#aL zjW)F2&~ZcO4gEHJv>|uHybVQvSIPh2(>YLeLg2>0XEjO98Z|oxr3H-%4pqi^;<&we zVQYN2=YNy@v^CYiw4=aM@O{Cig82pW3g#B%7JOVVvtV+;#Deh!V+%$XgcXDo1QmD{ zxD*&}|8x8QZeO~6@%EbA{cd%*)$UgFTLHK1ZdJNvb4zzidrNbR-h!J&H(%a-ar57s z7jOP@^UTekZvJ@Fd^7o`!;Pmm3U1uE@yCrHZ%n)~^hWrNkQ;&5UtW7~?S9&|*lW>O z=Ukn7b>jZNvOdpRm$fGA(=2n=_^g~PK8s|^na?vHW&V?SKl57V@yx@ShcZ*WQmf{> zjBy#{(%+?@ONL8dmvomtF1=j3xkR}{xcIpk@js38Hs`I*Tf|)i@`tWF1y1%%?DpyG z7sag0PuVa>W7yM|L z#KR6tOKdO0y0u#DaGXawwbP-VdDgrpApestgouYVIS7l)#9)p>sxAZIDjV@o>;sP{vg(ASO#GG zFd;r45aNqca6n1=uEMev50dX;y%!7OaMEFYMJ-Ntgy4xW{$K*ibmNC7pMJL3)?>}C z{jiNv@e9Dx8rz{*w^fT%N37dpNyPg}SSPE+36J~zSiy5Dr!H9c!h*AQO2Zl@>Gut` z@!IcOEW5F7!rA-bEc_1P#dfU!R0~E1;&%hf9lXB_>-&WG7hxM`5rB*a;7s&qutv`f zz?tars6QYUOJi)K?F4*;WiqyZ!y2U2poud4P1ryaZKPwEXc5-2G-B8V80=VkeZ06rYp8Xu*SZc-q>!5 zHA<`|O3Hvz3rfQ>3fmn}|3PE$0@Yv`Ku9o(IJhsiv#}nc7Q=c%LMp4pumNk-eTWaj zprM5z5mpQ+#kPB~po9$gRAqfrEX}d~7uIdCpxO)%uuj0z0oxC;MrPJ`W`zI6MsF;G zv5hlXKNHKxxLZOouSZ?2Ux;lK^9CC%61Gt~8>(W#*$J#hhBn}|1$V4*0vj4(8^yUH z9!qO%*TcFU7L4z6Bu>JrG>PpWFLSWH2x~lE z{^c^ZPhx!+3)+=4GI1Z1m-~6xzJ~QGEF1BW9^$$GEf&*myugg;{tsAw#&%zy!DC>RUQ-1rgJwUt7QQ?SNaU?Ik-1P@WM=&?NwYs{%0J7e37wWJhcT#7X&I#`JD z6Rcg8LX67@BtFLd^kWpAaXHrRSWt9E&MuxBuZ zhIjzIoqS08kiqsVAj$r?{mi_e%^rrThueF=-TI^%XrP&Mcd)cAvWW_5;fpZQRANM{3s z-0V5klHej!LU=Sm<-Mlym;(d%>1`mT*WVpejk|s?y zJb5CUu;?}CE*RP;g&Vz$&Ms1YFnDRTyxY$#(Uvmz#Y~h~yNJqxteaq91FcTHH*F3os zgbYN)9hvnNVR+SyQOv)cLU=DXSamMBr#3@#U+;%<=vs6imvMA5WHd$Ysqy2-vHN6; zavzs5yr03~b?xR z<4$dNn1CbjKbtDLEL77@b6|=J(KUrh_kek>a$R8FtJDX~_lvLHyD+!|<^-iKFn>^d zy{Y*6&*E!+R|Z#Lj#cUd=4|!avZ^b5fsw^36kKUFf+7^mJTNBgwWN241|0LC)jgS2 z-!t2!K}eACUyQuUEKz-ax=>UPN&^S{OE~!wlZqOma4!4Iz0=qn?pqe8!P96{(N$f4 z%?c8Xn{NV!5b*NUX_=YV0NzD1I`hod{fz84(!i|U!{A|zijE2olOR%Zk;22GA|w2K z(fA-TBHF`%Bg1vohoA46Q9I1nr&lAW(xs>TRDM2W)QEA#&VgzfS}kzw%RU!gUdu|z z9y($`rnlFSMt|?s$h*;p_=fWR(9kNbku_ah>}>s8Cw!Uzy+QEwM<0UUnG4DLCIz@9 zyS-dfH^SAmUfs~jlB12=>UCc3vJX0&rT!8OtM~}~D-^{etuyf=5pSIt&Zu}khO+bV z_4Czyj`JAe|LQ!(%1a@`EnbOa zB0Cq2Dw=K3(djSbXTC)DEmis~wesOIUkTsUAY_XkG`-f) z&vIisB-pwdcW@sn&UY8>?EjdZahOt}+3c_+9DoHPTkCH80x^15T&1F6q@d+6Uqo{% zUSiRlc9>&s!Ax`>%duM+pqLlkFJJ*qapj!@qBTnFc5E;3u@A?>^eS(q6h9U=M>lLgXlzd z?Hf$dJ9e0HiN=*`hxtOV3RfwFrn2kI5O%%ayi}=on2&|fxp?2wy%znonXB<2H(CB! zuhrx#Johfz&nNP(D5pc_b|Wc@@nr^bWkMI-4XR=egf zf(OlGa~Q)1&F6FId5UlwN72*ldeUeWPCJIKX4hYg!8cE^zBGp6Ib?Y}hT`LG<3Y>z zadbB}4q3)dpi5EdM>!MsPbmwsy)Kn5M;4BnL#9!wQZb8u#`ETOcFQuXqLx@S<{}ySj<8WTqafdZMm2qYJ-RO1f$89j;JEZwn!Pl4}bW;YZ9f$cBoI4_% zizkE!S>mTjR|XvBflI{u`AkLHSiFw`1Q8uJpPfmMF&kSoi%OY{QGOz0n7gGiTy(l3x>LPh_*pslBlKJ` zBb#h$>zX6ux6PM6rqz0vP?%Jt_V{X!C=?Fypk0d;CdsRn5heGnm~g5LllA^lF0qt? zO+?B4!{+X}G$avq9;UNl9Ltxqu}c3yh0bAqlR{_i%RjYsl^Lq{kI*%R7Z848VUD(e zVmr7gX0}6jsULAI7^MV0&>ki1< ze0o^ig1M8!K`-C$vgknO(1UrMlJX7?3p1HIF0MB`t0w`1jA*7JBe;vz7#uM-2|=2S z5l60s2jnT-z|CqfsowA-3p>?}?^X+vnha>+>(jV%c&#q+fe`d_Yq~rtGI7oiLwbBN zX>e%#>=~2lN2NCN_io%Jiuyda$oFubWU#zcGahNV<0%Fp(uff1rOZ`w(Xr$vhKAu{ zg&lkkc~q6ah^p1<23L;^d)OhR-K5XAtQpq=#$aMlmEY+W;U`JHk#1Fz8?5Q_d7Cba zhcs$5WO0|5NrmTdC8KOo+GbiUKCTKyx)C9~rz3BjjgK?c@+Kzm5_!9E8e@&R3B8An zAKE*iPK{=xR&`HXof8M4!;i}MSM=MxVMgz$hFN)?pFS16pj&*nT%WsvkWN2*j(JQ;mmGKn8D&E1U zM<;y0f)GWEn9#b>uo&=hcBIUNkOL1x3^1aadVX;!wX?^2HR_y^5(iz97ah4~I+T|r zH>3BW$JHBobU_j<9NeRs-?TB&J)8UcH(!*!e_qFq^Y&+R5uh(z;94W$<9#aO1k~#{ zNLV0#I8US)9l<=LAw)#tWC62h55ZCFkNUbw;Uv6Sz?!KX1D>;OoES%#}J#p^-QbrCTBYH&|ib9*OL0F>oIi^*%=M5Ya#bB-xNvt; z1-R+nvB|xY8~e&oDoLL7`p`r3lQ7^9{qX3_7723?y}aoXSl_FsIkT>* zPMRs6(&6VIc*n5QTNY;4tCzWO%jsd0{!Fboq(!`s5bTc!^~kmoN&!WON8z|oFdO2D2iG0fO%f`R1^K8i7U=~U0cXv|Ib#b|80 zb*pwtoG;W$Y}fv;6`0SwY)p+q59f8_9!ICe2guYXu3OZ=oo(B-qVg5_uC`m!`~z$z zlqAS)wTHA429{#0R#$K}x+!yuWTqVv0-k8Zih;AthR2lvEnDXXnk5}__n3wZ-2HI} zmbv8Yo7ozIn~nb>J+MuEFVQ_9&|mM-K6PlEn(EXaXx@5uSk5n&h5hTUZ`+057~q^E*#urLBBdrY-%)&bobF$((9bus|s}oEZA~-ING(624Q=cTu^5bKDB4- z2Mb2_CVXE$tel|G1#v}oqxFGJ0;Pv%mP|=Xh+wPOlIYYATZ&@K4^yKHQ=MCVm>Lz8 z`e7?)?&tJx?#&YAlg=|Ae3y~&-GiCXdDgve(z&^9rl!{`^sU=_GVG|^XX?_)z3V{c zw1O{t%WI&AsrT2nr%lI;^o{tKM|CqzHge{K7s~pLDVI?>3Nr8?Jd=NtT?=ocJKa`R zXwC)hT%h5FKd}YbYFyr=N^x{kG*TShkaJvL6rG19HS&_rbjUq0Z0KQAUZ>W4*Qg#W zdiIEVv7YZbc;CFFqvssH_@1TeDJJCNRdHFDK_)M+MxAO0CN~R`&p>eGhxLc- zpO@4cS0xPmuJyV%DeS84R(Llw9365<;Q%(Xgrbi%R}m*$U?Q2(E8(1_Az@0A=jBce zdg2iljdJ5R)o5XA)6Qp)eB%7@;pZW2&!`8pr$qKo?dVZN0c=u=5>v6nMUu+-HDYSl}h(pt`-ZZG9a@)>%#^_28_{A`aPSG$6Urak8M zjXWTSos$P^yG5nr1{%fO71!~lnB~UdMTz}btp#^VA>db%Q1dPxrMVaH;>Pg{Sx!0d zpt&2q9Ul_Vv`c91PK~^pG*8*ywOPL=9v$Z&8XiAwbb8AGke@|#=p7Q?CDx~Yx1m{G zT_XA?MZ&R(hi0@$UHg9@wiw$rtXfR(X8s+esGCLRfTbrr>`HXhW)d$Z}3p#f1|OHEF42HGw#~SvEERN zdp!7u+{BP@*(BdX%R3U)v2Jz0rro2ct5yG+(TJfNyq+_0r7uJZj7 z0+>s9<12myl=Y_6^l@QVHni&EWGYTNqcDMCdlVN<2-R9wGJ0?P{`ncP)ziQEYx>lC z-}bZhY0>CmU}$A+RH|wIgdUNRJtnklJt;LRw0`L5c5$YDEh@=RY~4J)^@2wgy}pVE zKd4sXkPl`xoqp@{wBBFdoD$QcTfgQzLh9A3<<)jlT2y4ukJ_2qjO$!0rtgPMn~w|) z3h-_}zH`;+D3Lly9-hG~%+F_jqH-rmdK->K`WQO%aa zX&%JzDA#cRDl8S6S=qx_smbt9QUowAi^*&s?BXBgMyIM7kcsJ9iSJ5AqSa|xhM;JK zp~amkK7uI%P;vl$s)dr15de(P~Lc4t0=iBxZeG2!}7@>3B z_TQ&r(7zGdC7`XpU#kqoI5|c~N$(snHnhN5c`A9WNe%f*tWdIVHCJH^uMs1Lv0TiG z^uT|(4x^snYGf0^J;>F?x0;@6MUN2Is==P(1lJI>`p~%H%eqZ~&hqE=`c7-ten#JV z_4>|eA0zLFhD~!;Y*{uu4rVnDuNvYhik_yBsw3zhHKP1om@VZReZt+ke%vSGqr$dr zKI&DcPOp#Jv>uyW>!XLcotF%2(saa9rjGQYTfC0%LyUMKc(@xPqBUBhK0M42;pZLc zA-V9p4rG5hqB-a)FIwG6K8)*iOK1+KWeExf4ewd2a}i?sB4*paO9M>!Ca8)KAD`$5 zDjf7)o}4~B3iKZCoZu4~g-?S#@KH~7;OXfl%jwD`5GjYr!IVNj7`qF?T5f?xR0j>@ zALZQuF@=9nZ`j!@b&{v|!E}AiYyD@T4IvGA0DjyOfHW{P`$YJ8>YT&FeDo&dU+{^F zj=*P8E;`>xM$}m+aehA>gMG&!TGq;h((27%rJ3h{^M|?kjHBD1aZl;PPZF(8);4T8Z`mlw zm6@(ktXaGb5@4H_vIH7JR85Es4~t}iMLLRP4JcV1uaz6gHR^!i`}GQ#V2X_$H)j!0 zuhS!7D;)gsM_N~23ovO)YPYDw6{AecukG49r$N-pIg=nq?s2zC+GfmN6$8{7QI}5Y zLd$4`M~Ql!FIrBRVwC!5l_Uz5wlrl^I&tWXPZzt}*gv5=bVf2J(Tz z%QS$xT)$2gkrr*kuN4FEyIOQFjUPkrX`n7TW<2h^mdZQhla?)|39aRWa0X7%8uE~H z`*NWwxZ!&Q1-biv#i#r11D1Gs0C$^rVf!E-#+~A(sCzslVyeMssUDH;CIfz(pyO_X z93V&516$+rb?aKS`dD5;KjDx3f(LhfVEM3K{o?|*ZuLETn$A3ROK!d}tKW~R?x)&B zAftG6t0^&U#k@tTF(7^~PovJuuS})a@S=yWk5&h5Ka>~2)-9Q)r0siB+8>228jy!} zo4U&Wn#25DyQ_Aqr%@05N?AT#r|{1FDSdlxf$4BFf7h;j*-aid5=iv^7st+>JA3xr zxgU$d{-;PwZ{j4~aXcgPQw3fvZd}jjHq-e)QVaWr1kE1u1e@!>80FyhqSXH>b zJb##c6kr|vO5tzlC?A*ifM?+|>P@S6Jh^NE^pj^I^065C+%!+n2Jpo=1-U+20u*i) zpaB@LJ*z{sJH2K8{)llP)GH!i%0m_LP9H%((s zq%k)tI-qq$Q8LpiHYuy@40;!1N!-x77T&)wey`1LyFC+sD|`T3uD9s?Gki@Aa;v!y zn}a=s-PpeUhI~SP)b8O@$fuQe>`+!v)nlC5%fE^&thQh zsC@aW$G69WXX3+Rod-U>k2Gi`BhJpMV?Sd3qLDd290Dr z{!xI-vJvi3*@M=a2`%OPsfEW2@m)V^4=(`f}5d(=G6d$$ zlr!Z}IC?H=#5TaMTaRp^wZK`vC8GrQ$&)BVcUao>!^7~;5&1XS2LSHDb7Us*!l2Ih z)}k_N9jXZ5R>ak=G~%(<&ew>3?}AC3V%zOOQ*EIIV4LYf`69agR;Zy&G%2T1LVcWQ zbwD}8m9`YuH3ji>Z8ePjxSDIqt>PHw3{if?uBtU)d}E8buMVn&C1bv|YPj@7IvA>5O2Vba#emn<@!hisFCE4RmbYNs zT=6vkuH5c&oLmjAuTJi9DSPUSWsN)MVva)XpFWj;Py;7ip_$-ya83J!)$tD&E|l5E zm7*7&;ob1mOsk}N5nd)1GJP;FFz9t`sq@nsG3~}F(mk6eJptD-^7hAL7j2O*Qur9= z^J~BR-4vADW$FMt2%7&q_&R=-%~Sfk@Kb&z-~-%ZNqvEV#~m*at&!P5q+WE6Sgc^xCLrZmJY*_?ch#%blmOo zNr=YKV5C8&1pHeyl#D?{)s&aWDmJM?r#5qn)p};U=?I9TzEg;lF)uDY?FT;46UiY3YmqfZ&fVXs?7vc$s&l_I&|TZvjHz+4~N?D8K2UE&*1YF@X{prh83BkNBOkavhBn45%qYApVX%S z>?}MXnc6;U>KRcpJx4W;n|xJ;Atp}D=9Cl*#mRzgG>>cc#_uru2f4Of6TCLTN$QAK z7+jHXqr%^*5BG23@$OJ;2mSeK{1s)-s7?tT#W`Avj39o|J_ZejSdGEQ#U$|0>I)rtc_6IF`l4sAq-_8{>;|t1^CF@87_gH!H;@Y^ zwpe}&=`q7Y722Q**#kL7FcLR!XmCodg;bSz8yVpp8Sc!EfAMuUTxV@$6Q-gNz35Z_ z&sX~Uf4)3WZuK1gnUR;f7_#NjuygL*UzRT13EdJ7r?>0zNBFMAiZ+ZYetF!z%bh&xRrtsJf)o#VZ{p$wC<9dr zXvKU@mO1%Qjk_UQ!!~veL2>jbQG=&$K6(^4ucMguN4P_EC||$d~2wCT_y@ z>nzKKwNu;&S+=>|JrB@Hm<5As$Ua+4Ppm{T72Tq9DhrE8X&N17U{P3ObZ6T35h>f@ z=$KbPoh8fHj32Z96WppA2Um}CF0<52zQ_+_z*VGGp85dz|?Tz zSIL(dL3M{ST-gyjDF%hh7c(Ysjt<9YtOX^k={5LLFbg&A1|xf67!Qojte?Mhg?wcG zy5&phK$gV8(RJ(OXna6(df>o;xLp{Lw}guv4f!Vk}06DMd+P{?6Aw?sr zU=FznCiZJLZhSxg$PUm&o^^9}tJA;yQn!gYi_sf{-cyZl#h!l<5f6HBPaNULqN|Ue zLdXNfDvp7O)r+9-a6n0}UcC_TJRn>S0A3?IZz`NL_2O!Iw``;hwrtLq2f#w6I%f5m z`1g6D@lP3eARRYw!6$<_5yeIIY!)t24Z*|6<`@wbZSsbd(7SK9e)|v02k}VbxxDFF z;%IzfSMDK?Y2Qx1M*F4@cXA$)diO4#pM=PlH}x5p!9nBEqvhYAY3khYp-7YkpLyH^ zlpgNMeRP=O;aY0-Gp){too*QQE)q9m{Rce~5^mQ|Nl8Lm*v@&&riaE)mMz-jGk^Nb zkA``+`z04n$O$Vt56ZZEUA_>)o=kG>FnMH38Vt;U7sN7>hkvVgGouyc*BnKV!eF z(Du-(&=>!v&w2bSDoh%K={EY2)(M}I;S&MtDVO!RA{XYCKygQa@jW8k!{}p#1NzF< z94b{YIyp&I?d+?%IQ48Xu(_A~NPhAUc*sY&r!_)qIO*L(J-nm51i?2NYP-htYa{Oi zXaw~y&Y^ROx!><}3VUh!-tRQd)woYn19Akdc8l_M*iQWTW1jMw^$v5Zi|n1peU>jS zQe0_qz;}Pp9Cjn{5{*+{dmenbEQTuzhDC@Ws~E$v%j|8*eHPy>V_GLG-qAZCQF- z1*CWAb_H)S`{5b_~C@~NDmwHqv_fN>KlDYZm!b?6wc!HlHu-6uq&k&S3 zsql};>N4@bv)?3GUO2g@<2^l?-^O3{YN7*UV7NaHn}=iaMoB#kFG> zZa16Si7s4fCH&xJHjGp(A*w5fU(!4^kLb!NA2F@ys*JOo=*lHQ9De214m#r8c4};> z2}!G8$S_%?;GFRr9{w7s&H8b>!(O#ij7*UUIx*h=+nnAVA7kOSK8w0D+3q&K?9K@6 zGzazIQW!&1d#DC=qqvSwW&L|BIjP(=YBD}gD^+~7_5~8gmm3iA^PTLQgj~SD`2>=9D#<`0mee}quv~ThlZ-@!$p|z%b%Kb3`%wne^B|N zfVt?0io{jtd`=9C#Bs^upC}SnUGs%d!jPttB5@V|MbR}y;s~#qV8bM?z)N6T3O`Jd zID-$@p~&SD0+(%=#8m<>@eNh0*;i5|t`c}@8K2H+0c`~Tt2XR=(T3B7<4~F0-7$+;gXScR%(1y?*NbcKuns+q|(qi>A9QF$1{S zdKT`EkKy*R8@Xe-K#XDdk>NOQE$c`d&rN36H^y^k@!GO;0$0z^lDdwY)~vCF8BdU2 z$NoNod{*Hwt>~FHS#weEXK!S8u+Ig8P~1$M=|$7D37QGmhw#cc$>Mv53kRQA1lWzR z%@8iG81`R;bwXHlPo=N1W#V1VVsGnGjMr$1dB*+h04vOnI^G3VSbTN-I1T$F0*L4v ziaJJ;ZgQkkHC}5OFwXI}q8&K61rFY;%yBuUrh6C?%PJ$k zuoBMk6wT6WiF+}$0iho-Ebt5Mk1-$bE3-ORXouK-DQbfKdyAdYp1ifUqOIUT1?m5!q+jCne)@G}K=HPz}; z5!TlpPc0Z;1ri}Nc(RGORu^s5rD`sh^dN-BN5xTe%8KK4n4(iEjK+t-SZ3pQb)cJF z%d_zs}G(ukb;yxTt0_ZSC3uYJH(ggDO$)khX=cn{FW-yj|eRvlGP)p(n-b;dW zmYkXRrv>2;OUP`#CpDeMZ%Dit4$V-RXzOYH^*V-h9xl5fnLBVkoLoNCqyT{=0p05Mm!{1x@t97`o z_L)jLOKw*<2*GiX;%Q|NvN664m9>u(sk1^%VX8s~6f7k)#Me2yXMQ|~|5Eo4V%0gk zuzWU`Pj|HC^csBVf)D1*LqFq1?Yi|F)d&ZfPqAP}uT$CTtHJX$$<)7r*m9?Dc5;tIc!o$*ts8mZUwJx{fvWFnmsXXf>ufvR3|wzo!-S zzD|3U`+F^4{iN}*F>w&YZ(&#T{UxzKLKAe4p_{zdq@u{$;w<9bgviC;(_A%UK z#*FH=*fy2;?dwKV>YAlCfXH=BVrBbYwSkIYkRVQgsk;1l^#5{%D+FRNZ!)5HFj4_N zRRYB}WGXSDHzO)lQAIGSxZe(A)%okNCTrL%mBOn=R1r}t!uNqyi7KK;X}rRy>D})4 z`k*3JgsMtdKq;@&*Hv0E3>$A!7aP@W-i?SYOmBv@+K5#u?}5+6EK-?aMZi{sD$!CA zRs>st7g&w20{m7ZG^xZ@eO4@{@`x4vRe-R36jd314_I~mXH1le_I;SKO6`4MD=^lQ z384Nf4koXP{J#)--?4HwHSJ{C5Su;w(_L&a!ke#UFlGD7*u>k$Sta@!O!-KN>wj6~ z<#lZhm*ru~FrW}YRlG*zRXk-RQXbZnZ4Eruz)+T$wNJ_Ykl5Q{${1aFA|*7ecuH-} zgnE4=a2X?eBTNOx^+wn-Qt&IDjOmTQR>TzydTorV607^ZU4n?O%y>orudZ(IgQ!%5 z0N)_>_`nQVr%?L}y`8L>!8CSyj8<@clz^qnj73Y5;@IGU#_+M3la&1!5um7%s zcQaXPcyEI>l^5Cj4YH20BDUIt^|~T8TF0ocCF)f6e~ND2XRuY={|mv2$D;qgja!we z(x~>o5PmC;*Y%Ho)eDznH7jOqYgSxt4bZXlscc^vBYUl{0@0Vil&t?{Vtq-cnvRzv z?8g=+Rbp>s;Ega9FruFSl}D&bKm}F|@*NDl9mZ-`sJaU9DC@s|dqk1EZRVvmQTgCl0 zd{(I-49ow^8`7%?%K*OyTb{vEH?4^Ht9VsLG5@caz-vbMo)Rb*L0@Co%7jWBVNGul zzZLjZ(Y{S()-l#ey$e=3|FIHy-$4~^D&9qijj_^EXRk=UfWwQq*Rzjsl8FpR(w{;z6Q(o|K&L>HOSY1OSWkhin0P` zDmLP>cuV4cc?pzSaarJ3*Mkx(E;iz~!CEEp${17e@>{W95uq|Gb#TS%D9?DQ^xkI- z{iHbl|1X5fSn*q!R8^p=_|-%d`^xVB%Fm<%;4-;Dd7F7VYk1zQPN zC1cgw`{?+6#uVc>y|()O7ecS9pyII=dw~jDlK)j~fL0^2))f;_###v%<0w72GbCH{V}Ru$oxvg`lb#i!2dzY%!%7~KC`XIox;|BcXp8LO(eIApW@ z|7~I|?-dopmbV$}T2L{pb+T3!l$`%rXHXF{RsvRWz76(O0`C~3p8r}2SP{QtP=#l@ z|9vb|aq0Q*dj=M(UA&)|Ri@rD=FRK>o7RH2>(wf`_puwMs(0o8@07}`Vt-%4#rpwu z|Np-rDYGwlCzDpDROytJVDa<+vd?U+I(r?s!lM|4`1_10zg8&8te^CL{$IM(zKy9j zdC}X(ymJ0$HM;jBsQP-Tb-#^J`M6LrM#=x*sXwcD->k=XtES?ynE#bseyv=pGb!Pc zZBpLJq)MPvaupMNg`PG4dy@zJ7sCGw4wGs$)@W92mH%l`di$92M)?{Y7XM#QtE_6U ziqxuqYyCE(O>0z2khMdj$!ZWb zZKGlZQ9+Or1VIosb|d{h@4Yi=l6Lp={d^zaKc08)ocB4ebKdXwojWt{o6L0^=A-#n z&Z8{`e`n3fts-LQaf00+u`iuu=eeb`Y?3{yKhZzQ%*X4T-+Lo$LV~E!#KcK6uoGaF zHNiic!2a)1vjfZMKs3Rvlk}5J1$3;aZQFc1=`l^?5=4dgU@)oBXkzOl!i zKWPRdH>m^5be}oY(IKVQaf#>5phuI2)a==u8CIW|vdJTa|D*)=R7UkD7fOld*WJlI zOPWE$e-)aTczXvXkDRR&8R~H(WZTWMe9^hL=Zv0_*y{JVk%-Ry$u6A6z?*s692~?RKF)y9YZSrS{Q2xd(I1SAlg* zFnEy>vW4s+-BHI*Y#jj;{OysxWqd{E!4f^%#|=^B<-u?F?r;Y%%h59WxSn{^U-4@XdwNhp4s;QRM2=K zJF%T$e4*nH#vS!de=c{8KdS8jd+x^v*mgU?c)Ok0E_BC&Y@Nv+*giG1G!6;}6KQy#Y)ATaq+bK;CEj6}HX&QdO(3PVv;J+3-thu~MDOO(4_)oIw zi^gmVxUbt+maTBiwm<)*Gh*2;3@ofMjyU?_v8MG%+@&TWf$Z-=TNa5IEE}>B+X5uM zvTTKcXHAJ>BsNcSM>gWV9*MhR25s4qBHIs%7cASN!0d;RxN5A5?dr%zs~B@fHX^Ye z+g;LP$_5^O$k?}O@3qDQZl8HKtLR;koK^OHtV|342mOYbn*Z{0DQEJpaNOT2<_ybj z4WMb~zpuyJ-?U2QCP~))u#(JMc=5l$-2G~jzGaE%bEU>iaD^q*E+6hRLDatU1l&Gr zQUc2|p#!%5<{kBYR^n(wB!P8Pu}bdhWB0(i-xn``ZZ_tu(kji7uQ^btd~E*zN7wW<`7vo0Gp5?a!asr39hh&D0HU@qV_ifH*GKu@r{dnTEEae zM?YoTYQB+7ENr|zT9|$Rspx&Cth-QIb#0ikV*Gun_V|Z=Xz;&<%WZqiN9O&i_IS&( z`v&-jw=H&qvX|A+X&)Pr8(c*bShua3kRWm+s~r+-j`_&E!Br%|cKyxDUY6a~kK7ZD z^I_zMOs}g!d6@)eLpL`|ONu?$Iw)UP72#k1&0|k@s7ISqr<9n-UhH{x&n*A(_5!N| z(VMPC^{rd7?V#`Do?*)4+rBarY;#8vY>XM&=H8wFd$*N1YTtQ+cGY7RxK>k92?+mDMvlL9}7#2{w~p%}x?*R_>O|CnVUsJ;4P1sNL4TWwcB6nfH@RGVd?P z!M%~68SNqg4cc1M9(&P5d*m*2+x@whoaw)9tG1SJ9^3uL?A%@M=`sCH=Dq2n{-!80eW1-4zEhMjw_nHDDM(!kW$jYAY3 z7rt)1=8OHaePnRVujhthMr=*wkdEHq>@`d8YmHwMq8#(aXD8aXL^CaJWBTA&{FAnw z8$DwmuRFmW(U05^O*QW?cvx%tVEGJqiq}b{X@+ZOq%|SZI5})9B<3M-m?EX z-fk6U->Yq7;1l%HBYKfLvu)$GH9>EqoMLdtHp@O z+9)56Hc-@VQG4VaFKTx;E&PXZrxJ5g;I&R;4iDdS8VgLh*>776_DeOpiacAw)DXrGyf z#f}Lk*zE+9PuCmNm9jqxCchnQ;3LE<=HW8BGIF-wpzOQE9MZA(gO!ofH8=dT>;+9v zziTwaoNV6#Fsi9NMs4;z0S)u5#y$jfhsLiem{J^qw5m@=?A?~#K2L54gx)jmNZ_8B zPif|_GT7%oOV6}W%0+?Ww-|mrl=sx#QQ#ofr>Rd`8L{ATY11cLj2YY$eUskE?F#| zP6uwq{!X+5`j%;S1E0UlhIgCh_8N_vdAL4q9z5L8(&hLAQ)v#$uA$vj+R&Nk=8%%$dAcDHSBO8&w)N%iqb=k8JS#}PQloGHrxn8lbD1pm)xQ>%cb z+dkuF&C@tf-n?xJKN(}hu8rD_ITP%S*!hX8EGytX>%=-m{uK={?F5Xsn*rM-Z*&(u zks~H4c5Ptp*Tz0dY-7{OUmMe=DzR;WbAL9DQDWZ-EdSZK+1Ep#PjWkAKOv6asv`F3 zn1#ktZL0m-5itwxwix@x@N~@4wC!TIafI4&=SSj>vg1sxn2YS+l!(cQw3%^eM%%1> z#Bl^!KS{BaUwW~AtU~1vMa-X`i1EAapP;aQ2txCZ^Rs{OVY2s*ev>_{=bGOxdembT z<}-f}!%ogfkTe?fe@Jdhn!iC2GrmZxr=uQQ509vB#M2%X`X5P7kE1=uIf>y3xeaq1 zqK^O7kK_~l?D%MZ$5NYvKI$1al5?h+zY=059Q!p8a}2B+RqI%YjLx_rkB(8a*Ax8a znBy?6BUWlt(M~;~NUJU08k%U3HHdb<1FqkUS%%$(z+=A}aaney+cVhCJ5!GKCMs)3 z8q^RtebkuYvsKMrkVb2iMuGDlJK??h_cAZ)LAlHa7k`VW55T)SHRz{!#h z^b8q$??P`W)fy$sz;En4jXg6Ov%Tx&`VaciF~-B{w&@v|_lq$jaMf?dw7~ler7zN5 z>oqavG&T_vyJbzK-6ZTkIGVLbdKXO)@tiQg z(E{xw>^~21)bGNmqd5-$yI{10ofK)mxW>jZk~;R2Kxow1^C;_;H`eGdd!p=c!sL(` zJ0>H2#WQd!XXZHTz_L{)N}H!iE07+T!?&aK*s$%?bK>wtdJ!EJBBF}_$?pOQMP@LP zdV-@Z6n$~d+1{&3{kQux*89lYi`jc~_;#lbYXBmz1kC>5jlH7g?W*Qj?GSg6*}Srp5Kfq4r`k2aL@ehab`6W>$YB+){$nuQ1J|z17YgV^qJLdx9t!c?d1;9 z|Gm#`a}nQ?C4>v_S`-4lH6XB zIf7#+y6xs2`fkfbX8phVZ6CvEDGt+rXJyg_Q*qbOSkG{6^2a#dj*W?LI%5yVTQM=y znr3tBFD2%lrqz2n9*v2)qv`lrj$^-Vy3OIdez&H3_H-^*0?*BK4m2%EaPAWmxNIM1 zchjC8=YvYq2m3omw5Av4Iuneh8|OQ#^ri!jboR{JJ+kb>tINF5VZ^$drl09tr5r#0 zYngRf%dG7Igj`EG9?TULo&r{GG9`V;k`ANgu$Uq;}9 z3YQUl6V_*}>kD>+vB&o1lWx7k{AR_k@}|?FaZ4I{v1R|B0>@TKSoZIpU@x#d z{w0O7%C6@|b$sTC=?;CV)v$`i*NH;o?URKz#SCd@MTN%cY*LcU9!HmLtb$CPsC}G{ zcINiQn&@?b3Crq{B?Fdg5Qwg#pJxxHd3|7~?FCJ<&vo7%GoPOeZ;7$KG{)R!#}R=oLJ%P(t7C$-&X6rpXl zwP+<~o2BiFXh+*#4xC!xoN4}~>lHlu_GqP!i8(Gbj?-pZHNK?1Z2erbRjZ|Qym66s zxbrHrM&fRuHsWJStu{N(&R=F}TJcuf3C6{`*LgK@ui$?jaV^GdIKege6iNguUaqk_Z@8<|GsUj zW2!ma0%o{rSMw*>?Tf-oM}K#ws85^z^8N4E_To#_!CC=i85`jk&*(7-UmCb*k@FfQc6HO1Mb3ZEn#bD#KXGZl`)=mr4bSym z&0^(g< zIg1b3SMXprjY(Kd=C4^=o;^*Ulsk`!@kOo$ZHYN^w3?c38C^Z$8qtQBFU&KdZP)+F z0I}4<)LVA*vV(n5$6hPd%OdSubLN`RXJ(vv4avSHWSwC*$1Kp}7+7oElqCL7gOl#> z)?(GA)(l1)NTCKtv&{kBsog9gUXmxatLrFjBUg{imDF)@)=KJTRsd&4?e>bSx{eE# z=2EQLBfW<(hq;0nc@J3aIGl5QlDQ;nwyPB^sMD^^jJ7+|t@e_gwc81l?<4w*i2jRp z`HKslj>9dxsmq1Rc6DX6!I^F~n1W;Wv9;r9p_^FfH4B{}NDrfhvW9QBkJq)@?LsHC z`&lVFn;qn=?4Su4;sO1sq1VV?J52iI4O3SFWR7mBMm_-!1{9}0&Xw^=-KKiEBKs|WUebC zv_b8Uj6|2V+_JN*Y}ysCedTYoOW%T>qsFvEKcCn-tP0yYv>Lu^SR9@tXgQdIX801j zeY~*M&Ig_y+hytR^%DwhSFf}S3-$f}VWd*aG*+p#;H||_DGS|Zf!eL= zm5~wpzb&Y{Gg z1@4Glsz*O@q&rqIq`X_32ai7A;j|AP4dqPBZtJwmv(Zzr zns3={op$Ni=HqV{7R*xdr zaLfzC6WaNlzr7v(XD8@yQ63+8*4Fn$5}4mi%({?R+yyGQUWSPhehj z;u4A70Y+3g*4E`y$`uo?-%_|eWqbfKulLT2UhqYbTSMWWchkeOmdshSTgET4uM>mF z>(#OQL>~iMrE`HYqGF3 zEH>8iIG@K<=#j;ay(L#W2HWnD=V|O8AWIz!CD&MnO#?F)n`NINxem}j!FHr&Tdb$p z?Z)Y}rL(`gEY*hOT+`oJD89vx*|J!Bi-tiSzq1_d{SqnCu7oxzGVb8f2Y$eAtg;`q zd^yP(jM$gTO~$S4n=$KUzENY@%XBmL8Df_5h=y^SWw*7Ko+@Sfw20w0xzP&tOPQ7E zdhG9kDQIFA^gaS_OOd_@`+oc>PCJw5WwKTINftM0k2{NEn@ZL>V`nto+2LFo6L{<& z&QF^v-g3spH08hTOp6KByyGkjq`&L*H??#*GhKnYt{jOz*OYT)k@IYM8ukx( zwmSE0dUva{NpsD9Sz`3|c#)}7!%Yu=>HON`n=QMI_Dr8G?$LMI?mqfD+r76{v)#wq zCT_cs{Uc-^+pN)HwkM4avdy-(XIR@ax9yANENegC+CSIY7Hr!U`%+6`nYFF3wzpf` zJIt+*dkPfb^tdHmXYH@Cwoh2wC#`M$whVlpvJyPKErtDOto;US|1Z|Iaa$(#7cBca zYro0bHe1^lt(5Dx9gRqmc(1u_G5D!vxgZRv!@vrGt1iU zXW93+wuhRQsl#RmrjD>(H2sEco2M7D4Nkw1?Xu|?u`Qc^v1Px++Fr^wIQ_EeH)PXX zY(2T$YPizcmROdn*e;vC*xJ9^vM;f=*RU;{el6Q&(@WU~r(ZYyhNjTeDbHxWe34S# zd9O==G$?@(@G0ZEev#`1QXv~?yPl6n*VjS|^uUP74RMeTxljy#2tpXzMamMPSL8BX|qJw-k!p>V_&BC!B6US&q&M zfq1}o1->irU4ickd~31Sn!lD?+XVw6D>b0 zsD^rIg>D!WS?vT5q(d$g!-&Y^6;KNlS(gaCB5UeIoP~@pBXcu`p83sk3AyEUP(}3e&(gB~p^ou-O1zjS4WyJnU zLE##a=dzjq=klRV(u{xekjURi^dfERHE0!S zDFb|7Lj2_{$O96;f?g}dww8*#S`19#YXu^I&jeq!NLwNVMK&Y@&KnTl=m7*bc8F{e z@QbuN0sq(We;xbg3}_H}qY%18IVQJtq<}X=BLBz);{VYq@>Uwui*)8d8}t8m zvdG(B=oNV<1^PtZB}rEn;P{?NzsQzUD1@-c`w4(gH?iH7K>G*T&?537aUYWSLu?;; zfy5u7+2aA)dfG)kPKSDtPcoSQPhBFPc8l~jh-{_0&op5Fb3{I`fnkw8?0p1$K@ne6 z!HCG0huYRZqyII&Uym^V-y}i~klbV34TLLvB}4TeRAu@7S(E&&3Eo1tIi zHx1$e|KF-01QhaHC!qPS94Kz`%$VYs=Bp7!<)f=w4BV8K4{!>fp%gs>nxR(|qX-5> zad@Fm6lc9CQ=Cu^*r(<|qbR%3?!wN^vJ_VkXxkOruINq6gjP{@O9nLE=({U~O`3l4^=QE%AN@9iC=swV2ej*FZ}kRkeL)QvjWhX zMfv6XigG6vzR54kX!u*ynnn2oRs!0(5LHx(6iyMIV$8bmpK+ z2muGWau9(jZb$}_rXZM70VGXnhh7*K`?~p3!f&o$HVV{S69{Nf18rh+Uc@&YF4!KYaeh5Ms+5?_BQ|6vD-zCcYM92UN zonHd&&@0Me*bc*X82*Q0I}BSIwlr*M_@&XIG!mvY27+^@9O7Hx7G(i>7LaEFc@_}2 zfVd-^;DJIYgJ$T2eo@ksArtb!3zZN8eA4kr$A`Z@SB{K_RLBN&jx2*}sE1xr7RJj# z%EEMZa={A-Eo^``=n>^8M2qkO8I84A`@q3k2oV z05LhlwQzzdbo3&W!PPc9ULAA&HzIz|Cd$eH9ilN@K# z0pFQDqMSv;SyXe@kSJ%nfS#O<)7h<}4$sfw`MFMr2W;nNLOyt* z5<<`nozO4Jd1*i~=TSfbF$JlR&HNV>vQq|#7SuzlDCcL3ash>0fZzoPUVzXA2rVLT z5rK>FUxaPZuqcIY$b%AS0D5(y0G+xJpNnX}C=+U-3kF2FSc3#eWBxDBfg&h}8VEzT zC`B%ytq5BYJ-7s+OR}H>Iz+kD1NqP(%4P8o5~Y|##ih_H%H_0Q9%Q*G5wKlB%#|8Y zNC~-0=xhmp6Qx{*@KyBqDiSTug+^!-46!r$G@ki&9QoIa;?+0N;R> zTY}90EnTAAng_j9LofXCKy`lXw`D_El%)tS?G$BMA&_txA{7}>&wcF#ilGjAxCV*u z9r)bQE6Sbt+}Q}&EB(;Mf2PubyC~*v518|RH%aa;051@DcMwKIxyKEOK$3e1xMxU| zs!C`V<=zyi5#>JG@1yO0H14kgdR?6h#8i{?fjGzll0Psg%7genNUjIVMftM}d(7y)Z1w zD*RTZLoVRA3cpqOt-@~=eyi|Xh2NuY=Ks-Tb}}I!yif@tXogPcxBgB?3B~i63fWKy zWl#fDeFnUD`&sDuzSLnjQ1vIf63J{;HJxCX~HIIh8Q4UTJY zT!Z79eo>wfh=)|jhC(QVYN&@+=oRHj{GP<`$#lqtV(>!{!q5(;->@k4Zb)YS>oeKO z2QO4Y2%4c2`bBw4ARba78w#Nes-YfQp&JH8dD;mcNQX*5;~5^G2|^g!p%;clX>da_ z^WTukPCj@6=Y|k81HldbqWnc59#SD23ZV?Dp&nYH8wN#r)(IX+hg>LzN(ezSbV9!< ze-(%a^JD2>v!M{mpc?9-6}n+il&}*#kPi5Vi@^^;2tzyc!mudMxdUbMr=0L7B%Vj& zc_f}kVl5JDkywkwS|rvYu@;H7NUTL-EfQ;ySc^oX8#18+YN0XUK5WXKK28WPaOQZS z6gV-kR-(Mn0=(E?;3Tn*6zfQ_juh)iv5pk$NU@F->l&dG`bB9Hh=)|jhC(QVYN&@+ z=!QX2nq80#nS6+D&S%F9l|b@l9Gh`$#_?}X@IX4`LNWNEHqdj}lvzGZFJgKT(~Cg} zLp$`suqf-}AO+~-diuDYKCY*a>q)boKCY*a>*-^Q1__V`Xtto)f@VuCG(rdT!H6g? z#Q~Zxq3L_6fSppPhI(iPYJX`^l$TwQ44HuF%ZR>Q2Kc@lf@WxkUcmnqC&WW45c5ht zc%c&Te+BZN%v!M{mpc?9-6}n+ilvkbLfpo})V(>!{!q5)AFf7Vz zZb*hq$OkV}LI|3n6Z%E@yFh%P{O~Ee`O4U>hI(j)ZWt7$%?Tbzhg>KIKLjBR__pEO zhFsgQC>!wIkP6vQ2xU+W^?>gNd^g~`QNRt!U{1nDCSfC!u(1m2paqz*jm+3aW^5BP zwuu?rg!866@Iobopcy&=;Y}3Lj&M7|?U|4d__pKQj&FMy&}~PzeMpqoHAr9*UQc5u z2a2E^YM>4%gcUyJbpl=|U~|I%50Gbb0aO9{n+JHOc?01$DB=wo-=N`*4pBN>kP1Oj z-ekz$q_{V0fnNT@4;1wl_P27o#pB9*Rkz}D3(%6l4kpcrZaKb9z!Eflqd1Y2^U652(1-wD{>$M$|P42jYm z4`s}McNIGbet^RVB>A8k21NM~hYyROOO%gXK=A*WFfqjU5Z_ZS%EuJ)aVqqP@<{?OFDB75_p1pH6~_0R&H&te!%`i9kfHgD1&ZD2Z|r82Omj(Wap;}7!l>?I8la@ zp+l5k%AgV`>X$}QejO5J*aZd9EXr>b^;?@L|Kj<-Gl2p|=*UQoD8G~V_a0G3t3}zS zL5P15Xb?39lmb!Jpr~51s6MStR6P;;L^aZ(9EL=7Xuu7}9V4PTu{*ONU(_jHQKx1A zal536>T-&@t3ZmV(@LRT)ZOseZ9r5vkM2(HSRM}*qE2^1qo}cokOzFzP+5Ca<9HHB za9j`&*rQ0)892{qhG9|nq~bj(B%UPkIZy&M&h{kT17q82?(7^<7w=lM%!r&=V>I#je|lcg*s7B&jy~KUMA`p8ib(}Nc2B7qUO0E z8R$eF+Gkb(J}fS&XVH&m)UG>IL{L5}gAa*BI*@9zoHWAp&e+u(gi7iy+j}zs-Q#Et0?NKLQxmzK)0w@7eJq=-gqd5 zW>J^0zl8lI=Kip#*WiB*1zhW5{;$mi0!s6s9w_3vB4`)&`YdP_^#+P6^8ofTd~T$e z8yjIz)SKA9$q!wkvZkWmJS1v4kL5hSh2m~u|CUZsZ_R*e=wsNi`FQmEsM?RvZHa)x zZHV87^KDeQ6yc>fF0F#FsLRSltwBL7-#zWdpIk`&!r;5%vB|!1;cvuO?|VLJ#2ZKm&A(`d}R7z<{WKCh?zX zuStUfsDTbqStd~*;`u{W&;s~AoCoYbO#8z*218up)8>2#|i-7)%dcApsr^B z@eBxyT9*#I|Ep_Avc?Nk_XNZ8L}36kf=`;L#L=ulkDj_ zQJ)bg1rj&70F8!b7!>s{#Qg=GzZ5|w^oz>ZV)a>H3Y#48LJ(Sk#=p8D6)Hpx)5ev0 zHH=u8BEuu1K8N6Q*q>_?^?7`s&xS@(*T#$5)G2Cn2802RY{{zC*Gu9J}ZdpK#T# z5mDbm{5=xBmkT6#53%IW{s_5pey zp!Wg3A5<{^AB3P0DCC2FQ9slGfe$O77KTLqC{NU$YEeI?ppWtYv=B)2X+2QzrzGel zL2o+bLlw}*2U4|nK-8^qfF>V8)vaYfC$_eNkH*iOkOsMc=x0Gd^s`=3KS%WQWT1f0 zO99c(iRr`di$tgr^~(xTzasHhL!$PRq`wk~{TkcXH83LTH#tE3H?@G@w^y==UwqC+ZI#!0!iQe?V|B1$aK#00W}_ z$nziB|B1(+c>I~ipYxy`>X`qZJJ}f!btoRvpg`1La)5-tdPUuqEt(PsIS>|26)1vX z(X=+v^lBIq%?OI->=JF4D!}f_0Q`4#iZ-oSG`9w5xc#E-o+sM$1Zeb$7K<^?4c(&c zQ7hVvLechOpAU)JtTNFO5cQDMQ!d(mi0p@LzaG(M<2QRyw8V7L4k&?8$6IH+JOzC&8-yeAl?WxK96Y!r$DP{hvbSjkBaA!WM02$sT7fl^P$)d zrMUUo5Ekt)gbr&KEiE28MLV3t3-X~uv?EFYt#pbyG6fn$TSzC47C_?|;*KRIvrjbN z@nxc&;DtfavS>K5LbQ|Op-Qwrqyp{PJkRbG?T=|d!6#RWb_y}4ghk770sA?fqWy`Y z{!}8`sU$kJRkYLUMLWGwv@?RD{SQUtb&GapyJ&po(DL!g?-ieRPMv7yB6MEAXy<2& zb^%E)Kx`5Fi-tuj91`s!Y!^3+c8OoKOA`Qr%d!B!%LYU%j)N4yR$Kt3K(fo@p;ojj zYDBvdy^?&2#gak?%C5WGGCMnt=zPqeZQ(QYgd?WSDOZY~$C z9N}AvMY}Z-Dj7Z!`fEj7njqRTk}M;>A`cowyWI)I-j2o{X@K9I963+C~Jq(NPb7hI{qR}-V z`mXHn+AR9C0%(L0(RagnHy+*i?4BVyr%io2KCykG@4@~a_{|{kj509y`$gXq`<`g+ zSppSM3qzvEQ|w-D=oWoum*}%9#HaJsS>HPkY5?OtsX*X9RJhNO==;*6eH$XsqkZw& zcTjYX1|G~aV}8w`rR ze;i~&31Hv95eVF$z(hBsKrSGhNPA)n^oo7}g&mLzdEkczFzq9vCwU+XyifzaRyGLo zeO{kK!yFps)Iui^kc?1r5rlvOlCdY_f1n#E;J{pSd=65SZ_ROrS@+%jxs` zMCYAOKMcXcLeL1EK*4DUq@_SE;Gaf&8VS>SML%4FRG`4a{Xl_-oAwdW7kD5GyimjZ zFK7h>kD%cQ8jhghh+60b0@4vmFM<$|AiY=gBS~;1_9IDfq#sCdBz6`l^o7_L7C<%N zzi?3WqY|MIDj*C!qG!0lm%+vhb%4OpF31FWbTp1f_lbUt2M|0a1PC63-?18`0tFoF z2MRbAdnWcw?3wsyRs;T-gQ6do2!&7qVdxS4csKKZdap-yag85Ne@U^lbFAGXec<)_?SD0{`d% z68td)U80}t282$oh7QqB;rS_fK>H~JqUWT8A1LNeLD5ewfnm{4tAI|?b6vp6CKsRF zW+2Du6nr`wr<3^f7SYd$1J-}^{|SqpM|F9KotXvQqVu;m`q{an=chue=;u_6elEf1 zk*Giee9lMc0uOYEz9<740AW6~=!L`;mI2Q%#Q#Eyxe$#DiMxms+r_k9+%9^Nk1C1~ zxP(eC=@tD_gf69!%LurvNAzM67UOt%GE~8U=vT0RMG-W>kmy&YLpk7A;s*Tql%ro& zC;DRa7Sn;NosbKSqI=2dEdlJlB?K=Ci+)Xw=+{zJX{PAc;d~v=*9C#1t|#I3UT7Bm z283@&g94}kVsD_(GGfZGmmyq6;<9ehZ*)U8P~466&?Wj!0_fe850%XSO^DvqFZ#_C za5MWi4~br$4uwz!?JywvEd5n4|2<#|9s%L!aw0}apyJuoEt3Kt|o2H?A*1S+5w8leOFU_|uV zI7opkD1cI^0>1z0wJq#)!GP#1HAsLo$blj#hZ<;rHt2yN(O0=35i%eTN}vL2p%FTu z4@N|PG!9ZA3kskVs-TYff3yXO_Am3z&|_80yuG)@s^T z4~qUc_QyL#uVX6f$^qTF5z*IVf*+U`K9cKCFda`cKnM6pT2F%de$k&o;3>qOBJgR1 zpY}jDc!A)jTcJ<%XIwym&lCXu&(uRZpw&QJ18og?;D-k27X2?8#6uy3pi}f`h53Ir zhn+^z|C#|f{*^+)m4GeWCi-*9Krfyz6MbzWkg(AM#X!OrvVgdC#INfCZ0qoEqKKvf zr~!1Ea{)gVpUj_6)nBBIzc%pc>k(MrD|$;2P}NJRPz#8>Op=!==H)sV6#bQS$ObPo zLq80Q-b!q12#9&r1sPBQt`si{6<5)j<2(0_hM0+TTXtZDQVWLn>rLA(R0z@6-c+ z@8I{&km&E?_ii#|K>;uozIUnoT?%-Y1n+hMm3L{70BMi|MNkekK*220>0Lddzn2cV zPz-(uLKxbi7luXOLeecH-I59U;Dt&EK{NBerIVe0(cc${hg8UhLMVf3sE1bQhC$K0 zo#26V$c19?LlDBy4!tle`Uh@EhD^u@FH}MZnwkF(I-y_m4+Y{O6|$ia%AgwRp%uCT z-;Wrzk7|L@_=wT?h|&0HNc0{TBtiz{K?zg4Ou|kr?h`s53SJs{|(>xz+O%C-V`W>7U+b27!iGIDv)?< zK6rs%ZKYRR!$5&s>D5+7fW=JxGY{bZSvC|x8B{|(Q0!+E``MuATygj5pX2;_I^+V* zp9difh<@G+!=m@OAsI3uAG}ZrA!vq9=okG9fp|!TY{2)6LD9b~0JOdw7X2$Xp!F46 zU*$6YUxlF^aQF)6{v0TRa;OshYl6Q<{2O}A@~Qp}^Y{((_)QThiUjN z2MSSTjW|e!eDFg9bis%i4gwvyPzDG(+F?)(X97@w6G3MX5Ok7kiW}0Q5UPOU zru2w0)d}R7N{*@Im|73MPBtXjgmnB)gDg7m~Q*ArnZ#GL7MC0g~)Wl3hu% zD@k^(gfNg~ng%IAl4&HFMv`gdm^LiNZXO`VZlzEQrFb2hn}##XgAcn+o{s z+bV{K*!|Lh{n=U2A;$g*&@VqqVNi^@0&eg?D)T=#lbu{B1TXlZ8bT0;R_KIY7!>0m z0XKLc6*3_g3c(A0sD==Pp%prz7Y4;h5paVCQknmhOm=di5WL`rY6w9XTA>qqVNi^N z1>E3)RLBJ8^pJSqc$k+4e&N*&LFf|WP>zB5MNkSAPy={E5ta8#2IjOxfsU`i;>wV#_{!HoKPf2R-qUt67vU& z%5E3qE8s?Ms+j_;QAf^({O4=&XsvH*Mu0}EL zChmUhN{pu}#dxMojAzru_-lz6VTyRZR*XjU*L8{Uw@fkC4~g*-ZLcJY z@hTdB=lZX)0fBY|-tdd@Ce^-`BgWe`VszoKrALepI>hK15rdCR#wR5GWKfJx2gK-Y z5MwLipM}Nvyg-b;YB9d36XQ!_zseS)-y_D?0xe>2<4jRh{MPchl71*kvOK*h-0cRB#vFY;&5Tu zwNM<>(f|Q>uQ+1c#j(erIO5&n*b8RXi(^)$I1-A*v3H3$_Q@2-zUAWZVB3$_**xE$ z1T0KD4#*QnQZjUkV-D@f+2S~mLJk}f$J_yN@G^9ykjHm$y*Lgj6~{bCg+qBhzgZlI zRf!|bD~<&v;y5B-9O*nBNrHvgkAkDI9TOBsW;_gthHVdsrO#xj^7KDbNTb;^5WbIJX=SJ{O^L`^9k{ z$(7y*@U>;wW@OGEiY5 zj)h*Rgb*}CH{f?+JfuT042t6-4=@@R)k7Qf0>xj9-^FQ=3nhTo#dXjM6nQaPMRDLu zWkXMk5G<+y5*D>U7m(nR6vzVXmo!5s^o!$C0S{zCJ`i(h2OxgwfH*GGfC4T<^RilK z1lo#SkPO5X6Xz@TvO{&nAs|6935rQ@xf4i!c@EHa`G`2K$OU|_XoF#KT$v1oPz^0W z;*xlv;1YC8g5tOeovX@$w#6RE12h&7iR0=b=KpFEda2f%0VO~(Z?8C(!~x<<8h~Wi zAbJgnuIUoTwE}5C`?cNTD9wWoaa@Pab@*LJ!t2nzJ_Y>H2m|7{!2|f-fX)qV;wVdI z{>y5B1UIHa3Dm)eIBqI{X6O^g&GCTn&1Hbt&Hdsi_X2*mR6rPd#c`_(GN2UDxfPp_ zq&~EK?EBI84~gS8VwR%0)Q8hjk}T~J$1;IL$OasjQROm{E$bFX1;bd816AUdf!`hI-H`=FP!2WF03Cpj?@pIE?!@WN3_$G85~u*g?nLZP z9PjLd5ph(;K?-C+0hB@w;8)oN1LC+#g9J!}94LZv!0)aGaon8`?c%rxje821|9eW= zse(Fa0fg>Bs0yJfgsKo?3Dr@BP!&Q|2vs3e)doEi4*WxMfs=FN~a@Hl+TzmP|i#_uXIqa~e?vg3hN1DGV zcEuA@F5Od;s$JTex?Y;HI_4}1x*m1~TtTUKJ>pvKTH&g7t#qw&J?aX{a@S+>i2UGM z?Rwl*=UU@>!u6!9Ue>stay{*OMjmuExc=gL*7a9c*!7(2dDmK3qw59NI#-j_x|#zW zuS{8>$&;?GfYCZ7Wt!aY`qnkz`c7)(A=md!nXOX_6;1v&ZQrK4*QUJa)TC8jZMxu% zDY-FC&v#5Ibu``g-jp-XZ2ETY)Rzxx`rBDk>(! Date: Wed, 11 Dec 2013 15:54:29 +0100 Subject: [PATCH 122/128] gui part for #239 server ping state display --- src/config/configfile.cpp | 4 +- src/gui/qt/gametable/gametableimpl.cpp | 7 +- src/gui/qt/gametable/gametableimpl.h | 2 + src/gui/qt/gametable/myavatarlabel.cpp | 50 +++++++++++++- src/gui/qt/gametable/myavatarlabel.h | 6 ++ .../qt/gui_800x480/settingsdialog_800x480.ui | 67 ++++++++++--------- src/gui/qt/guiwrapper.cpp | 3 +- src/gui/qt/settingsdialog.ui | 19 ++++-- .../qt/settingsdialog/settingsdialogimpl.cpp | 2 + 9 files changed, 117 insertions(+), 43 deletions(-) diff --git a/src/config/configfile.cpp b/src/config/configfile.cpp index 3d9d1e74..701199f5 100644 --- a/src/config/configfile.cpp +++ b/src/config/configfile.cpp @@ -64,7 +64,7 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly) myConfigState = OK; // !!!! Revisionsnummer der Configdefaults !!!!! - configRev = 103; + configRev = 104; //standard defaults logOnOffDefault = "1"; @@ -150,9 +150,9 @@ ConfigFile::ConfigFile(char *argv0, bool readonly) : noWriteAccess(readonly) configList.push_back(ConfigInfo("AppDataDir", CONFIG_TYPE_STRING, myQtToolsInterface->getDataPathStdString(myArgv0))); #endif configList.push_back(ConfigInfo("Language", CONFIG_TYPE_INT, myQtToolsInterface->getDefaultLanguage())); - /*configList.push_back(ConfigInfo("InternetServerAddressIRCChannelUpdateDone", CONFIG_TYPE_INT, "1"));*/ //HACK configList.push_back(ConfigInfo("ShowLeftToolBox", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("ShowCountryFlagInAvatar", CONFIG_TYPE_INT, "1")); + configList.push_back(ConfigInfo("ShowPingStateInAvatar", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("ShowRightToolBox", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("ShowFadeOutCardsAnimation", CONFIG_TYPE_INT, "1")); configList.push_back(ConfigInfo("ShowFlipCardsAnimation", CONFIG_TYPE_INT, "1")); diff --git a/src/gui/qt/gametable/gametableimpl.cpp b/src/gui/qt/gametable/gametableimpl.cpp index 27ce8904..8110035c 100755 --- a/src/gui/qt/gametable/gametableimpl.cpp +++ b/src/gui/qt/gametable/gametableimpl.cpp @@ -681,7 +681,7 @@ gameTableImpl::gameTableImpl(ConfigFile *c, QMainWindow *parent) connect(this, SIGNAL(signalNetClientPlayerLeft(unsigned)), this, SLOT(netClientPlayerLeft(unsigned))); connect(this, SIGNAL(signalNetClientSpectatorLeft(unsigned)), this, SLOT(netClientSpectatorLeft(unsigned))); connect(this, SIGNAL(signalNetClientSpectatorJoined(unsigned)), this, SLOT(netClientSpectatorJoined(unsigned))); - + connect(this, SIGNAL(signalNetClientPingUpdate(unsigned, unsigned, unsigned)), this, SLOT(pingUpdate(unsigned, unsigned, unsigned))); #ifdef GUI_800x480 connect( tabsButton, SIGNAL( clicked() ), this, SLOT( tabsButtonClicked() ) ); @@ -4496,3 +4496,8 @@ void gameTableImpl::refreshSpectatorsDisplay() } } +void gameTableImpl::pingUpdate(unsigned minPing, unsigned avgPing, unsigned maxPing) +{ + label_Avatar0->refreshPing(minPing, avgPing, maxPing); +} + diff --git a/src/gui/qt/gametable/gametableimpl.h b/src/gui/qt/gametable/gametableimpl.h index 5bbe874e..c46193a9 100755 --- a/src/gui/qt/gametable/gametableimpl.h +++ b/src/gui/qt/gametable/gametableimpl.h @@ -175,6 +175,7 @@ signals: void signalNetClientPlayerLeft(unsigned playerId); void signalNetClientSpectatorLeft(unsigned playerId); void signalNetClientSpectatorJoined(unsigned playerId); + void signalNetClientPingUpdate(unsigned minPing, unsigned avgPing, unsigned maxPing); public slots: @@ -375,6 +376,7 @@ public slots: void tabsButtonClose(); #endif void refreshSpectatorsDisplay(); + void pingUpdate(unsigned, unsigned, unsigned); private: diff --git a/src/gui/qt/gametable/myavatarlabel.cpp b/src/gui/qt/gametable/myavatarlabel.cpp index 793bce28..2c08f1eb 100644 --- a/src/gui/qt/gametable/myavatarlabel.cpp +++ b/src/gui/qt/gametable/myavatarlabel.cpp @@ -42,7 +42,7 @@ using namespace std; MyAvatarLabel::MyAvatarLabel(QGroupBox* parent) - : QLabel(parent), voteRunning(false), transparent(false), myUniqueId(0) + : QLabel(parent), voteRunning(false), transparent(false), myUniqueId(0), myPingState(0), myAvgPing(0), myMinPing(0), myMaxPing(0) { myContextMenu = new QMenu; @@ -398,10 +398,54 @@ void MyAvatarLabel::paintEvent(QPaintEvent*) boost::shared_ptr mySession = myW->myStartWindow->getSession(); if(!playerIsOnIgnoreList(QString::fromUtf8(mySession->getClientPlayerInfo(myUniqueId).playerName.c_str()))) { painter.drawPixmap(0,0,myPixmap); - return; } else if(myW->getMyConfig()->readConfigInt("DontHideAvatarsOfIgnored")) { painter.drawPixmap(0,0,myPixmap); - return; + } + + if(myW->getMyConfig()->readConfigInt("ShowPingStateInAvatar")) { + //paint ping state color for network clients + if(mySession->isNetworkClientRunning() && myId == 0) { + QColor pingColor; + if(myAvgPing > 0 && myAvgPing <= 1000) { + pingColor.setNamedColor("green"); + } + else if(myAvgPing > 1000 && myAvgPing <= 2000 ) { + pingColor.setNamedColor("yellow"); + } + else if(myAvgPing > 2000) { + pingColor.setNamedColor("red"); + } + else { + pingColor.setNamedColor("white"); + } + QColor pen = pingColor.darker(200); + // pen.setAlpha(130); + painter.setPen(pen); + QColor brush = pingColor; + // brush.setAlpha(130); + painter.setBrush(brush); + painter.setRenderHint(QPainter::Antialiasing); + painter.drawEllipse(1, 1, 10, 10); + } + } +} + +void MyAvatarLabel::refreshPing(unsigned minPing, unsigned avgPing, unsigned maxPing) +{ + myMinPing = minPing; + myAvgPing = avgPing; + myMaxPing = maxPing; + this->update(); + + if(myW->getMyConfig()->readConfigInt("ShowPingStateInAvatar")) { + QString toolTip = ""+tr("Server response times")+""; + toolTip.append("
"+tr("Average: ")+QString("%1").arg(myAvgPing)+tr("ms")); + toolTip.append("
"+tr("Minimum: ")+QString("%1").arg(myMinPing)+tr("ms")); + toolTip.append("
"+tr("Maximum: ")+QString("%1").arg(myMaxPing)+tr("ms")); + this->setToolTip(toolTip); + } + else { + this->setToolTip(""); } } diff --git a/src/gui/qt/gametable/myavatarlabel.h b/src/gui/qt/gametable/myavatarlabel.h index fcf61647..14e0d993 100644 --- a/src/gui/qt/gametable/myavatarlabel.h +++ b/src/gui/qt/gametable/myavatarlabel.h @@ -86,6 +86,8 @@ public slots: void setPlayerRating(QString); void refreshTooltips(); void refreshStars(); + void refreshPing(unsigned, unsigned, unsigned); + private: gameTableImpl *myW; @@ -103,6 +105,10 @@ private: bool transparent; int myId; int myUniqueId; + unsigned myPingState; + unsigned myAvgPing; + unsigned myMinPing; + unsigned myMaxPing; }; #endif diff --git a/src/gui/qt/gui_800x480/settingsdialog_800x480.ui b/src/gui/qt/gui_800x480/settingsdialog_800x480.ui index f0acae58..7b695e9f 100644 --- a/src/gui/qt/gui_800x480/settingsdialog_800x480.ui +++ b/src/gui/qt/gui_800x480/settingsdialog_800x480.ui @@ -291,42 +291,14 @@ Network / Internet Game - - - - Show country flag in the corner of avatar - - - - - - - Switch keyboard focus to bet-input-field if it's your turn - - - - - - - Activate the "accidentally call after big raise" blocker - - - - + Do not hide avatars of players which are on the ignore list - - - - Disable emoticons in the chat - - - - + Qt::Vertical @@ -339,6 +311,41 @@ + + + + Disable emoticons in the chat + + + + + + + Switch keyboard focus to bet-input-field if it's your turn + + + + + + + Activate the "accidentally call after big raise" blocker + + + + + + + Show country flag in the corner of avatar + + + + + + + Show multicolor network state display in the avatar + + + diff --git a/src/gui/qt/guiwrapper.cpp b/src/gui/qt/guiwrapper.cpp index 20ef8b6e..cd0a1f74 100644 --- a/src/gui/qt/guiwrapper.cpp +++ b/src/gui/qt/guiwrapper.cpp @@ -343,7 +343,7 @@ void GuiWrapper::SignalNetClientStatsUpdate(const ServerStats &stats) } void GuiWrapper::SignalNetClientPingUpdate(unsigned minPing, unsigned avgPing, unsigned maxPing) { - // TODO + myW->signalNetClientPingUpdate(minPing, avgPing, maxPing); } void GuiWrapper::SignalNetClientShowTimeoutDialog(NetTimeoutReason reason, unsigned remainingSec) { @@ -533,3 +533,4 @@ void GuiWrapper::SignalRejectedGameInvitation(unsigned gameId, unsigned playerId { myStartWindow->signalRejectedGameInvitation(gameId, playerIdWho, reason); } + diff --git a/src/gui/qt/settingsdialog.ui b/src/gui/qt/settingsdialog.ui index de3ec349..225429e4 100644 --- a/src/gui/qt/settingsdialog.ui +++ b/src/gui/qt/settingsdialog.ui @@ -289,7 +289,7 @@ Network / Internet Game - + Qt::Vertical @@ -309,41 +309,48 @@ - + Show lobby chat - + Switch keyboard focus to bet-input-field if it's your turn - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat + + + + Show multicolor network state display in the corner of the avatar + + + diff --git a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp index 294f93af..29a2ddcb 100644 --- a/src/gui/qt/settingsdialog/settingsdialogimpl.cpp +++ b/src/gui/qt/settingsdialog/settingsdialogimpl.cpp @@ -287,6 +287,7 @@ void settingsDialogImpl::prepareDialog() checkBox_showFlipCardsAnimation->setChecked(myConfig->readConfigInt("ShowFlipCardsAnimation")); checkBox_showBlindButtons->setChecked(myConfig->readConfigInt("ShowBlindButtons")); checkBox_showCountryFlagInAvatar->setChecked(myConfig->readConfigInt("ShowCountryFlagInAvatar")); + checkBox_showPingStateInAvatar->setChecked(myConfig->readConfigInt("ShowPingStateInAvatar")); checkBox_antiPeekMode->setChecked(myConfig->readConfigInt("AntiPeekMode")); checkBox_enableBetInputFocusSwitch->setChecked(myConfig->readConfigInt("EnableBetInputFocusSwitch")); checkBox_cardsChanceMonitor->setChecked(myConfig->readConfigInt("ShowCardsChanceMonitor")); @@ -738,6 +739,7 @@ void settingsDialogImpl::isAccepted() myConfig->writeConfigInt("ShowCardsChanceMonitor", checkBox_cardsChanceMonitor->isChecked()); myConfig->writeConfigInt("AntiPeekMode", checkBox_antiPeekMode->isChecked()); myConfig->writeConfigInt("ShowCountryFlagInAvatar", checkBox_showCountryFlagInAvatar->isChecked()); + myConfig->writeConfigInt("ShowPingStateInAvatar", checkBox_showPingStateInAvatar->isChecked()); myConfig->writeConfigInt("DontTranslateInternationalPokerStringsFromStyle", checkBox_dontTranslatePokerStrings->isChecked()); myConfig->writeConfigInt("DisableSplashScreenOnStartup", checkBox_disableSplashscreen->isChecked()); myConfig->writeConfigInt("EnableBetInputFocusSwitch", checkBox_enableBetInputFocusSwitch->isChecked()); From 70bf285fc44ef3601db8c9d67a58a8ad1e9d30d9 Mon Sep 17 00:00:00 2001 From: doitux Date: Thu, 12 Dec 2013 00:31:42 +0100 Subject: [PATCH 123/128] Implement #56 unignore player from context menu --- .../gamelobbydialog/gamelobbydialogimpl.cpp | 39 ++++++++++++++----- .../qt/gamelobbydialog/gamelobbydialogimpl.h | 2 + src/gui/qt/gametable/myavatarlabel.cpp | 35 +++++++++++++++-- src/gui/qt/gametable/myavatarlabel.h | 2 + .../qt/mymessagedialog/mymessagedialogimpl.h | 6 +-- 5 files changed, 67 insertions(+), 17 deletions(-) diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp index f5e2ac65..02dae737 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp @@ -199,6 +199,8 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) nickListContextMenu->addAction(nickListInviteAction); nickListIgnorePlayerAction = new QAction(QIcon(":/gfx/im-ban-user.png"), tr("Ignore player"), nickListContextMenu); nickListContextMenu->addAction(nickListIgnorePlayerAction); + nickListUnignorePlayerAction = new QAction(QIcon(":/gfx/dialog_ok_apply.png"), tr("Unignore player"), nickListContextMenu); + nickListContextMenu->addAction(nickListUnignorePlayerAction); nickListPlayerInfoSubMenu = nickListContextMenu->addMenu(QIcon(":/gfx/dialog-information.png"), tr("Player infos ...")); nickListPlayerInGameInfo = new QAction(nickListContextMenu); nickListPlayerInfoSubMenu->addAction(nickListPlayerInGameInfo); @@ -242,6 +244,7 @@ gameLobbyDialogImpl::gameLobbyDialogImpl(startWindowImpl *parent, ConfigFile *c) connect( treeView_GameList, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT( showGameListContextMenu(QPoint) ) ); connect( nickListInviteAction, SIGNAL(triggered()), this, SLOT( invitePlayerToCurrentGame() )); connect( nickListIgnorePlayerAction, SIGNAL(triggered()), this, SLOT( putPlayerOnIgnoreList() )); + connect( nickListUnignorePlayerAction, SIGNAL(triggered()), this, SLOT( removePlayerFromIgnoreList() )); connect( nickListOpenPlayerStats1, SIGNAL(triggered()), this, SLOT( openPlayerStats1() )); connect( connectedPlayersListOpenPlayerStats, SIGNAL(triggered()), this, SLOT( openPlayerStats2() )); connect( lineEdit_searchForPlayers, SIGNAL(textChanged(QString)),this, SLOT(searchForPlayerRegExpChanged())); @@ -1646,7 +1649,6 @@ void gameLobbyDialogImpl::showNickListContextMenu(QPoint p) unsigned playerUid = myNickListSelectionModel->currentIndex().data(Qt::UserRole).toUInt(); if(inGame && mySession->getClientGameInfo(mySession->getClientCurrentGameId()).data.gameType == GAME_TYPE_INVITE_ONLY && playerUid != mySession->getClientUniquePlayerId() && !mySession->getClientPlayerInfo(playerUid).isGuest) { - nickListInviteAction->setEnabled(true); nickListInviteAction->setText(tr("Invite %1").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerUid).playerName.c_str()))); @@ -1655,16 +1657,22 @@ void gameLobbyDialogImpl::showNickListContextMenu(QPoint p) nickListInviteAction->setEnabled(false); } - if(playerUid != mySession->getClientUniquePlayerId() && !mySession->getClientPlayerInfo(playerUid).isGuest) { - + if(playerUid != mySession->getClientUniquePlayerId() && !mySession->getClientPlayerInfo(playerUid).isGuest && !playerIsOnIgnoreList(playerUid)) { nickListIgnorePlayerAction->setEnabled(true); nickListIgnorePlayerAction->setText(tr("Ignore %1").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerUid).playerName.c_str()))); } else { - nickListIgnorePlayerAction->setEnabled(false); nickListIgnorePlayerAction->setText(tr("Ignore player ...")); } + if(playerUid != mySession->getClientUniquePlayerId() && !mySession->getClientPlayerInfo(playerUid).isGuest && playerIsOnIgnoreList(playerUid)) { + nickListUnignorePlayerAction->setEnabled(true); + nickListUnignorePlayerAction->setText(tr("Unignore %1").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerUid).playerName.c_str()))); + } else { + nickListUnignorePlayerAction->setEnabled(false); + nickListUnignorePlayerAction->setText(tr("Unignore player ...")); + } + unsigned gameIdOfPlayer = mySession->getGameIdOfPlayer(playerUid); QString playerInGameInfoString; if(gameIdOfPlayer) { @@ -1794,21 +1802,32 @@ bool gameLobbyDialogImpl::playerIsOnIgnoreList(unsigned playerId) void gameLobbyDialogImpl::putPlayerOnIgnoreList() { - if(myNickListSelectionModel->currentIndex().isValid()) { - unsigned playerId = myNickListSelectionModel->currentIndex().data(Qt::UserRole).toUInt(); - if(!playerIsOnIgnoreList(playerId)) { - myMessageDialogImpl dialog(myConfig, this); - if(dialog.exec(INGNORE_PLAYER_QUESTION, tr("You will no longer receive chat messages or game invitations from this user.
Do you really want to put player %1 on your ignore list?").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerId).playerName.c_str())), tr("PokerTH - Question"), QPixmap(":/gfx/im-ban-user_64.png"), QDialogButtonBox::Yes|QDialogButtonBox::No, false ) == QDialog::Accepted) { - + if(dialog.exec(IGNORE_PLAYER_QUESTION, tr("You will no longer receive chat messages or game invitations from this user.
Do you really want to put player %1 on your ignore list?").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerId).playerName.c_str())), tr("PokerTH - Question"), QPixmap(":/gfx/im-ban-user_64.png"), QDialogButtonBox::Yes|QDialogButtonBox::No, false ) == QDialog::Accepted) { list playerIgnoreList = myConfig->readConfigStringList("PlayerIgnoreList"); playerIgnoreList.push_back(QString("%1").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerId).playerName.c_str())).toUtf8().constData()); myConfig->writeConfigStringList("PlayerIgnoreList", playerIgnoreList); myConfig->writeBuffer(); + myChat->refreshIgnoreList(); + } + } + } +} +void gameLobbyDialogImpl::removePlayerFromIgnoreList() +{ + if(myNickListSelectionModel->currentIndex().isValid()) { + unsigned playerId = myNickListSelectionModel->currentIndex().data(Qt::UserRole).toUInt(); + if(playerIsOnIgnoreList(playerId)) { + myMessageDialogImpl dialog(myConfig, this); + if(dialog.exec(UNIGNORE_PLAYER_QUESTION, tr("You will receive chat messages and game invitations from this user again!
Do you really want to remove player %1 from your ignore list?").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerId).playerName.c_str())), tr("PokerTH - Question"), QPixmap(":/gfx/dialog_ok_apply.png"), QDialogButtonBox::Yes|QDialogButtonBox::No, false ) == QDialog::Accepted) { + list playerIgnoreList = myConfig->readConfigStringList("PlayerIgnoreList"); + playerIgnoreList.remove(QString("%1").arg(QString::fromUtf8(mySession->getClientPlayerInfo(playerId).playerName.c_str())).toUtf8().constData()); + myConfig->writeConfigStringList("PlayerIgnoreList", playerIgnoreList); + myConfig->writeBuffer(); myChat->refreshIgnoreList(); } } diff --git a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h index a564a349..b3717b07 100644 --- a/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h +++ b/src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h @@ -149,6 +149,7 @@ public slots: void chatInfoPlayerInvitation(unsigned gameId, unsigned playerIdWho, unsigned playerIdFrom); void chatInfoPlayerRejectedInvitation(unsigned gameId, unsigned playerIdWho, DenyGameInvitationReason reason); void putPlayerOnIgnoreList(); + void removePlayerFromIgnoreList(); bool playerIsOnIgnoreList(unsigned playerid); void searchForPlayerRegExpChanged(); void showAutoStartTimer(); @@ -205,6 +206,7 @@ private: QMenu *nickListContextMenu; QAction *nickListInviteAction; QAction *nickListIgnorePlayerAction; + QAction *nickListUnignorePlayerAction; QMenu *nickListPlayerInfoSubMenu; QMenu *nickListAdminSubMenu; QAction *nickListAdminTotalKickBan; diff --git a/src/gui/qt/gametable/myavatarlabel.cpp b/src/gui/qt/gametable/myavatarlabel.cpp index 2c08f1eb..ced1d4d9 100644 --- a/src/gui/qt/gametable/myavatarlabel.cpp +++ b/src/gui/qt/gametable/myavatarlabel.cpp @@ -52,11 +52,14 @@ MyAvatarLabel::MyAvatarLabel(QGroupBox* parent) myContextMenu->addAction(action_VoteForKick); action_IgnorePlayer = new QAction(QIcon(":/gfx/im-ban-user.png"), tr("Ignore Player"), myContextMenu); myContextMenu->addAction(action_IgnorePlayer); + action_UnignorePlayer = new QAction(QIcon(":/gfx/dialog_ok_apply.png"), tr("Unignore Player"), myContextMenu); + myContextMenu->addAction(action_UnignorePlayer); action_ReportBadAvatar = new QAction(QIcon(":/gfx/emblem-important.png"), tr("Report inappropriate avatar"), myContextMenu); myContextMenu->addAction(action_ReportBadAvatar); connect( action_VoteForKick, SIGNAL ( triggered() ), this, SLOT ( sendTriggerVoteOnKickSignal() ) ); connect( action_IgnorePlayer, SIGNAL ( triggered() ), this, SLOT ( putPlayerOnIgnoreList() ) ); + connect( action_UnignorePlayer, SIGNAL ( triggered() ), this, SLOT ( removePlayerFromIgnoreList() ) ); connect( action_ReportBadAvatar, SIGNAL ( triggered() ), this, SLOT ( reportBadAvatar() ) ); connect( action_EditTip, SIGNAL( triggered() ), this, SLOT ( startEditTip() ) ); } @@ -92,6 +95,7 @@ void MyAvatarLabel::contextMenuEvent ( QContextMenuEvent *event ) } action_IgnorePlayer->setEnabled(true); + action_UnignorePlayer->setDisabled(true); action_EditTip->setEnabled(true); int j=0; for (it_c=seatList->begin(); it_c!=seatList->end(); ++it_c) { @@ -114,6 +118,11 @@ void MyAvatarLabel::contextMenuEvent ( QContextMenuEvent *event ) } else { action_ReportBadAvatar->setVisible(false); } + + if(playerIsOnIgnoreList(QString::fromUtf8((*it_c)->getMyName().c_str()))) { + action_UnignorePlayer->setEnabled(true); + action_IgnorePlayer->setDisabled(true); + } } j++; } @@ -466,7 +475,6 @@ bool MyAvatarLabel::playerIsOnIgnoreList(QString playerName) void MyAvatarLabel::putPlayerOnIgnoreList() { - QStringList list; PlayerListConstIterator it_c; PlayerList seatList = myW->getSession()->getCurrentGame()->getSeatsList(); @@ -475,15 +483,34 @@ void MyAvatarLabel::putPlayerOnIgnoreList() } if(!playerIsOnIgnoreList(list.at(myId))) { - myMessageDialogImpl dialog(myW->getMyConfig(), this); - if(dialog.exec(INGNORE_PLAYER_QUESTION, tr("You will no longer receive chat messages or game invitations from this user.
Do you really want to put player %1 on ignore list?").arg(list.at(myId)), tr("PokerTH - Question"), QPixmap(":/gfx/im-ban-user_64.png"), QDialogButtonBox::Yes|QDialogButtonBox::No, false ) == QDialog::Accepted) { - + if(dialog.exec(IGNORE_PLAYER_QUESTION, tr("You will no longer receive chat messages or game invitations from this user.
Do you really want to put player %1 on ignore list?").arg(list.at(myId)), tr("PokerTH - Question"), QPixmap(":/gfx/im-ban-user_64.png"), QDialogButtonBox::Yes|QDialogButtonBox::No, false ) == QDialog::Accepted) { std::list playerIgnoreList = myW->getMyConfig()->readConfigStringList("PlayerIgnoreList"); playerIgnoreList.push_back(list.at(myId).toUtf8().constData()); myW->getMyConfig()->writeConfigStringList("PlayerIgnoreList", playerIgnoreList); myW->getMyConfig()->writeBuffer(); + myW->getMyChat()->refreshIgnoreList(); + } + } +} + +void MyAvatarLabel::removePlayerFromIgnoreList() +{ + QStringList list; + PlayerListConstIterator it_c; + PlayerList seatList = myW->getSession()->getCurrentGame()->getSeatsList(); + for (it_c=seatList->begin(); it_c!=seatList->end(); ++it_c) { + list << QString::fromUtf8((*it_c)->getMyName().c_str()); + } + + if(playerIsOnIgnoreList(list.at(myId))) { + myMessageDialogImpl dialog(myW->getMyConfig(), this); + if(dialog.exec(UNIGNORE_PLAYER_QUESTION, tr("You will receive chat messages and game invitations from this user again!
Do you really want to remove player %1 from your ignore list?").arg(list.at(myId)), tr("PokerTH - Question"), QPixmap(":/gfx/dialog_ok_apply.png"), QDialogButtonBox::Yes|QDialogButtonBox::No, false ) == QDialog::Accepted) { + std::list playerIgnoreList = myW->getMyConfig()->readConfigStringList("PlayerIgnoreList"); + playerIgnoreList.remove(list.at(myId).toUtf8().constData()); + myW->getMyConfig()->writeConfigStringList("PlayerIgnoreList", playerIgnoreList); + myW->getMyConfig()->writeBuffer(); myW->getMyChat()->refreshIgnoreList(); } } diff --git a/src/gui/qt/gametable/myavatarlabel.h b/src/gui/qt/gametable/myavatarlabel.h index 14e0d993..5c26b85f 100644 --- a/src/gui/qt/gametable/myavatarlabel.h +++ b/src/gui/qt/gametable/myavatarlabel.h @@ -78,6 +78,7 @@ public slots: } void paintEvent(QPaintEvent*); void putPlayerOnIgnoreList(); + void removePlayerFromIgnoreList(); bool playerIsOnIgnoreList(QString playerName); void reportBadAvatar(); void startEditTip(); @@ -94,6 +95,7 @@ private: QMenu *myContextMenu; QAction *action_VoteForKick; QAction *action_IgnorePlayer; + QAction *action_UnignorePlayer; QAction *action_ReportBadAvatar; QAction *action_EditTip; diff --git a/src/gui/qt/mymessagedialog/mymessagedialogimpl.h b/src/gui/qt/mymessagedialog/mymessagedialogimpl.h index 3fdf62ef..60717c47 100644 --- a/src/gui/qt/mymessagedialog/mymessagedialogimpl.h +++ b/src/gui/qt/mymessagedialog/mymessagedialogimpl.h @@ -42,15 +42,15 @@ enum MESSAGE_CONTENT { BACKTO_LOBBY_QUESTION, //1: leave lobby during online game: Question(Do you really wanna leave?) INFO_AFTER_JOIN_INVITE_GAME, //2: join invite only game: Info(You can invite people with right click ...) JOIN_INVITE_GAME_QUESTION, //3: reciev invite to game: Question(You've been invited to the game %1 by %2.
Do you want to join this game?) - INGNORE_PLAYER_QUESTION, //4: click ignore player: Question(Do you really want to put this player on ignore List?) + IGNORE_PLAYER_QUESTION, //4: click ignore player: Question(Do you really want to put this player on ignore List?) GT_VALUES_MISSING, //5: Selected game table style \"%1\" seems to be incomplete or defective. \n\nThe value(s) of: \n%2 \nis/are missing. CLOSE_GAMETABLE_QUESTION, //6: close gametable: Do you really wanna quit? GT_PICS_MISSING, //7: One or more pictures from current game table style \"%1\" were not found: GT_OUTDATED, //8: Selected game table style \"%1\" seems to be outdated. \nThe current PokerTH game table style version is CD_VALUES_MISSING, //9: CD_PICS_MISSING, //10: - CD_OUTDATED //11: - + CD_OUTDATED, //11: + UNIGNORE_PLAYER_QUESTION //12: click unignore player: Question(Do you really want to remove this player from ignore List?) }; class ConfigFile; From fae5932dfc1f0cd297a4d4659d38a957e0fa8ee3 Mon Sep 17 00:00:00 2001 From: lotodore Date: Tue, 17 Dec 2013 15:41:28 +0100 Subject: [PATCH 124/128] Updating asio to latest revision. --- .../websocketpp/websocketpp/base64/base64.cpp | 123 ------- .../websocketpp/websocketpp/base64/base64.h | 4 - .../websocketpp/websocketpp/base64/base64.hpp | 12 +- .../websocketpp/websocketpp/close.hpp | 20 ++ .../websocketpp/websocketpp/config/core.hpp | 12 +- .../websocketpp/config/core_client.hpp | 12 +- .../websocketpp/websocketpp/config/debug.hpp | 12 +- .../websocketpp/websocketpp/connection.hpp | 104 +++++- .../websocketpp/websocketpp/endpoint.hpp | 85 ++++- .../websocketpp/http/constants.hpp | 2 +- .../websocketpp/http/impl/parser.hpp | 4 +- .../websocketpp/websocketpp/http/parser.hpp | 7 + .../websocketpp/impl/connection_impl.hpp | 101 +++--- .../websocketpp/impl/endpoint_impl.hpp | 11 + .../websocketpp/websocketpp/sha1/sha1.cpp | 185 ---------- .../websocketpp/websocketpp/sha1/sha1.h | 49 --- .../websocketpp/transport/asio/base.hpp | 123 +++++++ .../websocketpp/transport/asio/connection.hpp | 322 +++++++++++++----- .../websocketpp/transport/asio/endpoint.hpp | 238 ++++++++++--- .../transport/asio/security/tls.hpp | 28 +- .../websocketpp/transport/base/connection.hpp | 7 +- .../websocketpp/websocketpp/uri.hpp | 17 +- 22 files changed, 908 insertions(+), 570 deletions(-) delete mode 100644 src/third_party/websocketpp/websocketpp/base64/base64.cpp delete mode 100644 src/third_party/websocketpp/websocketpp/base64/base64.h delete mode 100644 src/third_party/websocketpp/websocketpp/sha1/sha1.cpp delete mode 100644 src/third_party/websocketpp/websocketpp/sha1/sha1.h diff --git a/src/third_party/websocketpp/websocketpp/base64/base64.cpp b/src/third_party/websocketpp/websocketpp/base64/base64.cpp deleted file mode 100644 index 87388022..00000000 --- a/src/third_party/websocketpp/websocketpp/base64/base64.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/* - base64.cpp and base64.h - - Copyright (C) 2004-2008 René Nyffenegger - - This source code is provided 'as-is', without any express or implied - warranty. In no event will the author be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this source code must not be misrepresented; you must not - claim that you wrote the original source code. If you use this source code - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original source code. - - 3. This notice may not be removed or altered from any source distribution. - - René Nyffenegger rene.nyffenegger@adp-gmbh.ch - -*/ - -#include "base64.h" -#include - -static const std::string base64_chars = - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz" - "0123456789+/"; - - -static inline bool is_base64(unsigned char c) { - return (isalnum(c) || (c == '+') || (c == '/')); -} - -std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { - std::string ret; - int i = 0; - int j = 0; - unsigned char char_array_3[3]; - unsigned char char_array_4[4]; - - while (in_len--) { - char_array_3[i++] = *(bytes_to_encode++); - if (i == 3) { - char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; - char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); - char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); - char_array_4[3] = char_array_3[2] & 0x3f; - - for(i = 0; (i <4) ; i++) - ret += base64_chars[char_array_4[i]]; - i = 0; - } - } - - if (i) - { - for(j = i; j < 3; j++) - char_array_3[j] = '\0'; - - char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; - char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); - char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); - char_array_4[3] = char_array_3[2] & 0x3f; - - for (j = 0; (j < i + 1); j++) - ret += base64_chars[char_array_4[j]]; - - while((i++ < 3)) - ret += '='; - - } - - return ret; - -} - -std::string base64_decode(std::string const& encoded_string) { - size_t in_len = encoded_string.size(); - int i = 0; - int j = 0; - int in_ = 0; - unsigned char char_array_4[4], char_array_3[3]; - std::string ret; - - while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { - char_array_4[i++] = encoded_string[in_]; in_++; - if (i ==4) { - for (i = 0; i <4; i++) - char_array_4[i] = static_cast(base64_chars.find(char_array_4[i])); - - char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); - char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; - - for (i = 0; (i < 3); i++) - ret += char_array_3[i]; - i = 0; - } - } - - if (i) { - for (j = i; j <4; j++) - char_array_4[j] = 0; - - for (j = 0; j <4; j++) - char_array_4[j] = static_cast(base64_chars.find(char_array_4[j])); - - char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); - char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); - char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; - - for (j = 0; (j < i - 1); j++) ret += char_array_3[j]; - } - - return ret; -} diff --git a/src/third_party/websocketpp/websocketpp/base64/base64.h b/src/third_party/websocketpp/websocketpp/base64/base64.h deleted file mode 100644 index 65d5db8b..00000000 --- a/src/third_party/websocketpp/websocketpp/base64/base64.h +++ /dev/null @@ -1,4 +0,0 @@ -#include - -std::string base64_encode(unsigned char const* , unsigned int len); -std::string base64_decode(std::string const& s); diff --git a/src/third_party/websocketpp/websocketpp/base64/base64.hpp b/src/third_party/websocketpp/websocketpp/base64/base64.hpp index e0e9c4e7..6572c495 100644 --- a/src/third_party/websocketpp/websocketpp/base64/base64.hpp +++ b/src/third_party/websocketpp/websocketpp/base64/base64.hpp @@ -38,7 +38,9 @@ #include -static const std::string base64_chars = +namespace websocketpp { + +static std::string const base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789+/"; @@ -50,7 +52,7 @@ static inline bool is_base64(unsigned char c) { (c >= 97 && c <= 122)); // a-z } -inline std::string base64_encode(unsigned char const* bytes_to_encode, unsigned +inline std::string base64_encode(unsigned char const * bytes_to_encode, unsigned int in_len) { std::string ret; @@ -100,11 +102,11 @@ inline std::string base64_encode(unsigned char const* bytes_to_encode, unsigned return ret; } -inline std::string base64_encode(const std::string & data) { +inline std::string base64_encode(std::string const & data) { return base64_encode(reinterpret_cast(data.data()),data.size()); } -inline std::string base64_decode(std::string const& encoded_string) { +inline std::string base64_decode(std::string const & encoded_string) { size_t in_len = encoded_string.size(); int i = 0; int j = 0; @@ -149,4 +151,6 @@ inline std::string base64_decode(std::string const& encoded_string) { return ret; } +} // namespace websocketpp + #endif // _BASE64_HPP_ diff --git a/src/third_party/websocketpp/websocketpp/close.hpp b/src/third_party/websocketpp/websocketpp/close.hpp index d0e87663..eee44f61 100644 --- a/src/third_party/websocketpp/websocketpp/close.hpp +++ b/src/third_party/websocketpp/websocketpp/close.hpp @@ -51,6 +51,26 @@ namespace status { /// A blank value for internal use. static value const blank = 0; + /// Close the connection without a WebSocket close handshake. + /** + * This special value requests that the WebSocket connection be closed + * without performing the WebSocket closing handshake. This does not comply + * with RFC6455, but should be safe to do if necessary. This could be useful + * for clients that need to disconnect quickly and cannot afford the + * complete handshake. + */ + static value const omit_handshake = 1; + + /// Close the connection with a forced TCP drop. + /** + * This special value requests that the WebSocket connection be closed by + * forcibly dropping the TCP connection. This will leave the other side of + * the connection with a broken connection and some expensive timeouts. this + * should not be done except in extreme cases or in cases of malicious + * remote endpoints. + */ + static value const force_tcp_drop = 2; + /// Normal closure, meaning that the purpose for which the connection was /// established has been fulfilled. static value const normal = 1000; diff --git a/src/third_party/websocketpp/websocketpp/config/core.hpp b/src/third_party/websocketpp/websocketpp/config/core.hpp index 69744a19..e400da50 100644 --- a/src/third_party/websocketpp/websocketpp/config/core.hpp +++ b/src/third_party/websocketpp/websocketpp/config/core.hpp @@ -91,6 +91,11 @@ struct core { /// RNG policies typedef websocketpp::random::none::int_generator rng_type; + /// Controls compile time enabling/disabling of thread syncronization + /// code Disabling can provide a minor performance improvement to single + /// threaded applications + static bool const enable_multithreading = true; + struct transport_config { typedef type::concurrency_type concurrency_type; typedef type::elog_type elog_type; @@ -98,6 +103,11 @@ struct core { typedef type::request_type request_type; typedef type::response_type response_type; + /// Controls compile time enabling/disabling of thread syncronization + /// code Disabling can provide a minor performance improvement to single + /// threaded applications + static bool const enable_multithreading = true; + /// Default timer values (in ms) /// Length of time to wait for socket pre-initialization @@ -179,7 +189,7 @@ struct core { websocketpp::log::alevel::all ^ websocketpp::log::alevel::devel; /// - static const size_t connection_read_buffer_size = 512; + static const size_t connection_read_buffer_size = 16384; /// Drop connections immediately on protocol error. /** diff --git a/src/third_party/websocketpp/websocketpp/config/core_client.hpp b/src/third_party/websocketpp/websocketpp/config/core_client.hpp index b7329756..328bcc86 100644 --- a/src/third_party/websocketpp/websocketpp/config/core_client.hpp +++ b/src/third_party/websocketpp/websocketpp/config/core_client.hpp @@ -92,6 +92,11 @@ struct core_client { typedef websocketpp::random::random_device::int_generator rng_type; + /// Controls compile time enabling/disabling of thread syncronization code + /// Disabling can provide a minor performance improvement to single threaded + /// applications + static bool const enable_multithreading = true; + struct transport_config { typedef type::concurrency_type concurrency_type; typedef type::elog_type elog_type; @@ -99,6 +104,11 @@ struct core_client { typedef type::request_type request_type; typedef type::response_type response_type; + /// Controls compile time enabling/disabling of thread syncronization + /// code Disabling can provide a minor performance improvement to single + /// threaded applications + static bool const enable_multithreading = true; + /// Default timer values (in ms) /// Length of time to wait for socket pre-initialization @@ -180,7 +190,7 @@ struct core_client { websocketpp::log::alevel::all ^ websocketpp::log::alevel::devel; /// - static const size_t connection_read_buffer_size = 512; + static const size_t connection_read_buffer_size = 16384; /// Drop connections immediately on protocol error. /** diff --git a/src/third_party/websocketpp/websocketpp/config/debug.hpp b/src/third_party/websocketpp/websocketpp/config/debug.hpp index 0f2fc65c..691229a6 100644 --- a/src/third_party/websocketpp/websocketpp/config/debug.hpp +++ b/src/third_party/websocketpp/websocketpp/config/debug.hpp @@ -92,6 +92,11 @@ struct debug_core { /// RNG policies typedef websocketpp::random::none::int_generator rng_type; + /// Controls compile time enabling/disabling of thread syncronization + /// code Disabling can provide a minor performance improvement to single + /// threaded applications + static bool const enable_multithreading = true; + struct transport_config { typedef type::concurrency_type concurrency_type; typedef type::elog_type elog_type; @@ -99,6 +104,11 @@ struct debug_core { typedef type::request_type request_type; typedef type::response_type response_type; + /// Controls compile time enabling/disabling of thread syncronization + /// code Disabling can provide a minor performance improvement to single + /// threaded applications + static bool const enable_multithreading = true; + /// Default timer values (in ms) /// Length of time to wait for socket pre-initialization @@ -180,7 +190,7 @@ struct debug_core { websocketpp::log::alevel::all; /// - static const size_t connection_read_buffer_size = 512; + static const size_t connection_read_buffer_size = 16384; /// Drop connections immediately on protocol error. /** diff --git a/src/third_party/websocketpp/websocketpp/connection.hpp b/src/third_party/websocketpp/websocketpp/connection.hpp index c8f1bc60..c8be3633 100644 --- a/src/third_party/websocketpp/websocketpp/connection.hpp +++ b/src/third_party/websocketpp/websocketpp/connection.hpp @@ -149,6 +149,10 @@ typedef lib::function validate_handler; */ typedef lib::function http_handler; +// +typedef lib::function read_handler; +typedef lib::function write_frame_handler; + // constants related to the default WebSocket protocol versions available #ifdef _WEBSOCKETPP_INITIALIZER_LISTS_ // simplified C++11 version /// Container that stores the list of protocol versions supported @@ -278,7 +282,21 @@ public: explicit connection(bool is_server, std::string const & ua, alog_type& alog, elog_type& elog, rng_type & rng) : transport_con_type(is_server,alog,elog) + , m_handle_read_frame(lib::bind( + &type::handle_read_frame, + this, + lib::placeholders::_1, + lib::placeholders::_2 + )) + , m_write_frame_handler(lib::bind( + &type::handle_write_frame, + this, + lib::placeholders::_1 + )) , m_user_agent(ua) + , m_open_handshake_timeout_dur(config::timeout_open_handshake) + , m_close_handshake_timeout_dur(config::timeout_close_handshake) + , m_pong_timeout_dur(config::timeout_pong) , m_state(session::state::connecting) , m_internal_state(session::internal_state::USER_INIT) , m_msg_manager(new con_msg_manager_type()) @@ -437,6 +455,79 @@ public: m_message_handler = h; } + ///////////////////////// + // Connection timeouts // + ///////////////////////// + + /// Set open handshake timeout + /** + * Sets the length of time the library will wait after an opening handshake + * has been initiated before cancelling it. This can be used to prevent + * excessive wait times for outgoing clients or excessive resource usage + * from broken clients or DoS attacks on servers. + * + * Connections that time out will have their fail handlers called with the + * open_handshake_timeout error code. + * + * The default value is specified via the compile time config value + * 'timeout_open_handshake'. The default value in the core config + * is 5000ms. A value of 0 will disable the timer entirely. + * + * To be effective, the transport you are using must support timers. See + * the documentation for your transport policy for details about its + * timer support. + * + * @param dur The length of the open handshake timeout in ms + */ + void set_open_handshake_timeout(long dur) { + m_open_handshake_timeout_dur = dur; + } + + /// Set close handshake timeout + /** + * Sets the length of time the library will wait after a closing handshake + * has been initiated before cancelling it. This can be used to prevent + * excessive wait times for outgoing clients or excessive resource usage + * from broken clients or DoS attacks on servers. + * + * Connections that time out will have their close handlers called with the + * close_handshake_timeout error code. + * + * The default value is specified via the compile time config value + * 'timeout_close_handshake'. The default value in the core config + * is 5000ms. A value of 0 will disable the timer entirely. + * + * To be effective, the transport you are using must support timers. See + * the documentation for your transport policy for details about its + * timer support. + * + * @param dur The length of the close handshake timeout in ms + */ + void set_close_handshake_timeout(long dur) { + m_close_handshake_timeout_dur = dur; + } + + /// Set pong timeout + /** + * Sets the length of time the library will wait for a pong response to a + * ping. This can be used as a keepalive or to detect broken connections. + * + * Pong responses that time out will have the pong timeout handler called. + * + * The default value is specified via the compile time config value + * 'timeout_pong'. The default value in the core config + * is 5000ms. A value of 0 will disable the timer entirely. + * + * To be effective, the transport you are using must support timers. See + * the documentation for your transport policy for details about its + * timer support. + * + * @param dur The length of the pong timeout in ms + */ + void set_pong_timeout(long dur) { + m_pong_timeout_dur = dur; + } + ////////////////////////////////// // Uncategorized public methods // ////////////////////////////////// @@ -1034,7 +1125,7 @@ public: * @param ec A status code from the transport layer, zero on success, * non-zero otherwise. */ - void handle_write_frame(bool terminate, lib::error_code const & ec); + void handle_write_frame(lib::error_code const & ec); protected: void handle_transport_init(lib::error_code const & ec); @@ -1190,8 +1281,12 @@ private: */ void log_fail_result(); + // internal handler functions + read_handler m_handle_read_frame; + write_frame_handler m_write_frame_handler; + // static settings - const std::string m_user_agent; + std::string const m_user_agent; /// Pointer to the connection handle connection_hdl m_connection_hdl; @@ -1208,6 +1303,11 @@ private: validate_handler m_validate_handler; message_handler m_message_handler; + /// constant values + long m_open_handshake_timeout_dur; + long m_close_handshake_timeout_dur; + long m_pong_timeout_dur; + /// External connection state /** * Lock: m_connection_state_lock diff --git a/src/third_party/websocketpp/websocketpp/endpoint.hpp b/src/third_party/websocketpp/websocketpp/endpoint.hpp index 3c72b504..2df806a3 100644 --- a/src/third_party/websocketpp/websocketpp/endpoint.hpp +++ b/src/third_party/websocketpp/websocketpp/endpoint.hpp @@ -91,6 +91,9 @@ public: : m_alog(config::alog_level, &std::cout) , m_elog(config::elog_level, &std::cerr) , m_user_agent(::websocketpp::user_agent) + , m_open_handshake_timeout_dur(config::timeout_open_handshake) + , m_close_handshake_timeout_dur(config::timeout_close_handshake) + , m_pong_timeout_dur(config::timeout_pong) , m_is_server(is_server) { m_alog.set_channels(config::alog_level); @@ -269,6 +272,82 @@ public: m_message_handler = h; } + ///////////////////////// + // Connection timeouts // + ///////////////////////// + + /// Set open handshake timeout + /** + * Sets the length of time the library will wait after an opening handshake + * has been initiated before cancelling it. This can be used to prevent + * excessive wait times for outgoing clients or excessive resource usage + * from broken clients or DoS attacks on servers. + * + * Connections that time out will have their fail handlers called with the + * open_handshake_timeout error code. + * + * The default value is specified via the compile time config value + * 'timeout_open_handshake'. The default value in the core config + * is 5000ms. A value of 0 will disable the timer entirely. + * + * To be effective, the transport you are using must support timers. See + * the documentation for your transport policy for details about its + * timer support. + * + * @param dur The length of the open handshake timeout in ms + */ + void set_open_handshake_timeout(long dur) { + scoped_lock_type guard(m_mutex); + m_open_handshake_timeout_dur = dur; + } + + /// Set close handshake timeout + /** + * Sets the length of time the library will wait after a closing handshake + * has been initiated before cancelling it. This can be used to prevent + * excessive wait times for outgoing clients or excessive resource usage + * from broken clients or DoS attacks on servers. + * + * Connections that time out will have their close handlers called with the + * close_handshake_timeout error code. + * + * The default value is specified via the compile time config value + * 'timeout_close_handshake'. The default value in the core config + * is 5000ms. A value of 0 will disable the timer entirely. + * + * To be effective, the transport you are using must support timers. See + * the documentation for your transport policy for details about its + * timer support. + * + * @param dur The length of the close handshake timeout in ms + */ + void set_close_handshake_timeout(long dur) { + scoped_lock_type guard(m_mutex); + m_close_handshake_timeout_dur = dur; + } + + /// Set pong timeout + /** + * Sets the length of time the library will wait for a pong response to a + * ping. This can be used as a keepalive or to detect broken connections. + * + * Pong responses that time out will have the pong timeout handler called. + * + * The default value is specified via the compile time config value + * 'timeout_pong'. The default value in the core config + * is 5000ms. A value of 0 will disable the timer entirely. + * + * To be effective, the transport you are using must support timers. See + * the documentation for your transport policy for details about its + * timer support. + * + * @param dur The length of the pong timeout in ms + */ + void set_pong_timeout(long dur) { + scoped_lock_type guard(m_mutex); + m_pong_timeout_dur = dur; + } + /*************************************/ /* Connection pass through functions */ /*************************************/ @@ -415,13 +494,17 @@ private: validate_handler m_validate_handler; message_handler m_message_handler; + long m_open_handshake_timeout_dur; + long m_close_handshake_timeout_dur; + long m_pong_timeout_dur; + rng_type m_rng; // static settings bool const m_is_server; // endpoint state - mutex_type m_mutex; + mutable mutex_type m_mutex; }; } // namespace websocketpp diff --git a/src/third_party/websocketpp/websocketpp/http/constants.hpp b/src/third_party/websocketpp/websocketpp/http/constants.hpp index 3edc3eb0..be3006aa 100644 --- a/src/third_party/websocketpp/websocketpp/http/constants.hpp +++ b/src/third_party/websocketpp/websocketpp/http/constants.hpp @@ -53,7 +53,7 @@ namespace http { static char const header_delimiter[] = "\r\n"; /// Literal value of the HTTP header separator - static char const header_separator[] = ": "; + static char const header_separator[] = ":"; /// Literal value of an empty header static std::string const empty_header = ""; diff --git a/src/third_party/websocketpp/websocketpp/http/impl/parser.hpp b/src/third_party/websocketpp/websocketpp/http/impl/parser.hpp index 0ceac2ed..d1d90813 100644 --- a/src/third_party/websocketpp/websocketpp/http/impl/parser.hpp +++ b/src/third_party/websocketpp/websocketpp/http/impl/parser.hpp @@ -147,8 +147,8 @@ inline void parser::process_header(std::string::iterator begin, throw exception("Invalid header line",status_code::bad_request); } - append_header(std::string(begin,cursor), - std::string(cursor+sizeof(header_separator)-1,end)); + append_header(strip_lws(std::string(begin,cursor)), + strip_lws(std::string(cursor+sizeof(header_separator)-1,end))); } inline std::string parser::raw_headers() const { diff --git a/src/third_party/websocketpp/websocketpp/http/parser.hpp b/src/third_party/websocketpp/websocketpp/http/parser.hpp index 0bb52c2b..771c5397 100644 --- a/src/third_party/websocketpp/websocketpp/http/parser.hpp +++ b/src/third_party/websocketpp/websocketpp/http/parser.hpp @@ -367,6 +367,13 @@ InputIterator extract_parameters(InputIterator begin, InputIterator end, return cursor; } +inline std::string strip_lws(std::string const & input) { + std::string::const_iterator begin = extract_all_lws(input.begin(),input.end()); + std::string::const_reverse_iterator end = extract_all_lws(input.rbegin(),input.rend()); + + return std::string(begin,end.base()); +} + /// Base HTTP parser /** * Includes methods and data elements common to all types of HTTP messages such diff --git a/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp b/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp index 980e2ecc..0449e746 100644 --- a/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp +++ b/src/third_party/websocketpp/websocketpp/impl/connection_impl.hpp @@ -163,15 +163,17 @@ void connection::ping(const std::string& payload, lib::error_code& ec) { m_ping_timer->cancel(); } - m_ping_timer = transport_con_type::set_timer( - config::timeout_pong, - lib::bind( - &type::handle_pong_timeout, - type::get_shared(), - payload, - lib::placeholders::_1 - ) - ); + if (m_pong_timeout_dur > 0) { + m_ping_timer = transport_con_type::set_timer( + m_pong_timeout_dur, + lib::bind( + &type::handle_pong_timeout, + type::get_shared(), + payload, + lib::placeholders::_1 + ) + ); + } if (!m_ping_timer) { // Our transport doesn't support timers @@ -270,8 +272,8 @@ void connection::pong(const std::string& payload) { } template -void connection::close(const close::status::value code, - const std::string & reason, lib::error_code & ec) +void connection::close(close::status::value const code, + std::string const & reason, lib::error_code & ec) { m_alog.write(log::alevel::devel,"connection close"); @@ -288,8 +290,8 @@ void connection::close(const close::status::value code, } template -void connection::close(const close::status::value code, - const std::string & reason) +void connection::close(close::status::value const code, + std::string const & reason) { lib::error_code ec; close(code,reason,ec); @@ -850,11 +852,11 @@ void connection::handle_read_frame(const lib::error_code& ec, } // Boundaries checking. TODO: How much of this should be done? - if (bytes_transferred > config::connection_read_buffer_size) { + /*if (bytes_transferred > config::connection_read_buffer_size) { m_elog.write(log::elevel::fatal,"Fatal boundaries checking error"); this->terminate(make_error_code(error::general)); return; - } + }*/ size_t p = 0; @@ -942,12 +944,13 @@ void connection::handle_read_frame(const lib::error_code& ec, 1, m_buf, config::connection_read_buffer_size, - lib::bind( + /*lib::bind( &type::handle_read_frame, type::get_shared(), lib::placeholders::_1, lib::placeholders::_2 - ) + )*/ + m_handle_read_frame ); } @@ -1253,14 +1256,16 @@ void connection::send_http_request() { "Raw Handshake request:\n"+m_handshake_buffer); } - m_handshake_timer = transport_con_type::set_timer( - config::timeout_open_handshake, - lib::bind( - &type::handle_open_handshake_timeout, - type::get_shared(), - lib::placeholders::_1 - ) - ); + if (m_open_handshake_timeout_dur > 0) { + m_handshake_timer = transport_con_type::set_timer( + m_open_handshake_timeout_dur, + lib::bind( + &type::handle_open_handshake_timeout, + type::get_shared(), + lib::placeholders::_1 + ) + ); + } transport_con_type::async_write( m_handshake_buffer.data(), @@ -1429,7 +1434,7 @@ void connection::handle_close_handshake_timeout( } template -void connection::terminate(const lib::error_code & ec) { +void connection::terminate(lib::error_code const & ec) { if (m_alog.static_test(log::alevel::devel)) { m_alog.write(log::alevel::devel,"connection terminate"); } @@ -1459,6 +1464,8 @@ void connection::terminate(const lib::error_code & ec) { return; } + // TODO: choose between shutdown and close based on error code sent + transport_con_type::async_shutdown( lib::bind( &type::handle_terminate, @@ -1471,7 +1478,7 @@ void connection::terminate(const lib::error_code & ec) { template void connection::handle_terminate(terminate_status tstat, - const lib::error_code& ec) + lib::error_code const & ec) { if (m_alog.static_test(log::alevel::devel)) { m_alog.write(log::alevel::devel,"connection handle_terminate"); @@ -1540,8 +1547,8 @@ void connection::write_frame() { m_write_flag = true; } - const std::string& header = m_current_msg->get_header(); - const std::string& payload = m_current_msg->get_payload(); + std::string const & header = m_current_msg->get_header(); + std::string const & payload = m_current_msg->get_payload(); m_send_buffer.push_back(transport::buffer(header.c_str(),header.size())); m_send_buffer.push_back(transport::buffer(payload.c_str(),payload.size())); @@ -1563,25 +1570,28 @@ void connection::write_frame() { } } + transport_con_type::async_write( m_send_buffer, - lib::bind( + /*lib::bind( &type::handle_write_frame, type::get_shared(), m_current_msg->get_terminal(), lib::placeholders::_1 - ) + )*/ + m_write_frame_handler ); } template -void connection::handle_write_frame(bool terminate, - const lib::error_code& ec) +void connection::handle_write_frame(lib::error_code const & ec) { if (m_alog.static_test(log::alevel::devel)) { m_alog.write(log::alevel::devel,"connection handle_write_frame"); } + bool terminate = m_current_msg->get_terminal(); + m_send_buffer.clear(); m_current_msg.reset(); @@ -1791,16 +1801,19 @@ void connection::process_control_frame(typename template lib::error_code connection::send_close_ack(close::status::value code, - const std::string &reason) + std::string const & reason) { return send_close_frame(code,reason,true,m_is_server); } template lib::error_code connection::send_close_frame(close::status::value code, - const std::string &reason, bool ack, bool terminal) + std::string const & reason, bool ack, bool terminal) { m_alog.write(log::alevel::devel,"send_close_frame"); + + // check for special codes + // If silent close is set, respect it and blank out close information // Otherwise use whatever has been specified in the parameters. If // parameters specifies close::status::blank then determine what to do @@ -1861,14 +1874,16 @@ lib::error_code connection::send_close_frame(close::status::value code, // Start a timer so we don't wait forever for the acknowledgement close // frame - m_handshake_timer = transport_con_type::set_timer( - config::timeout_close_handshake, - lib::bind( - &type::handle_close_handshake_timeout, - type::get_shared(), - lib::placeholders::_1 - ) - ); + if (m_close_handshake_timeout_dur > 0) { + m_handshake_timer = transport_con_type::set_timer( + m_close_handshake_timeout_dur, + lib::bind( + &type::handle_close_handshake_timeout, + type::get_shared(), + lib::placeholders::_1 + ) + ); + } bool needs_writing = false; { diff --git a/src/third_party/websocketpp/websocketpp/impl/endpoint_impl.hpp b/src/third_party/websocketpp/websocketpp/impl/endpoint_impl.hpp index e30c0d9d..0dd14c5d 100644 --- a/src/third_party/websocketpp/websocketpp/impl/endpoint_impl.hpp +++ b/src/third_party/websocketpp/websocketpp/impl/endpoint_impl.hpp @@ -40,6 +40,7 @@ endpoint::create_connection() { return connection_ptr(); }*/ + //scoped_lock_type guard(m_mutex); // Create a connection on the heap and manage it using a shared pointer connection_ptr con(new connection_type(m_is_server,m_user_agent,m_alog, m_elog, m_rng)); @@ -63,6 +64,16 @@ endpoint::create_connection() { con->set_http_handler(m_http_handler); con->set_validate_handler(m_validate_handler); con->set_message_handler(m_message_handler); + + if (m_open_handshake_timeout_dur == config::timeout_open_handshake) { + con->set_open_handshake_timeout(m_open_handshake_timeout_dur); + } + if (m_close_handshake_timeout_dur == config::timeout_close_handshake) { + con->set_close_handshake_timeout(m_close_handshake_timeout_dur); + } + if (m_pong_timeout_dur == config::timeout_pong) { + con->set_pong_timeout(m_pong_timeout_dur); + } lib::error_code ec; diff --git a/src/third_party/websocketpp/websocketpp/sha1/sha1.cpp b/src/third_party/websocketpp/websocketpp/sha1/sha1.cpp deleted file mode 100644 index 661562a3..00000000 --- a/src/third_party/websocketpp/websocketpp/sha1/sha1.cpp +++ /dev/null @@ -1,185 +0,0 @@ -/* - Copyright (c) 2011, Micael Hildenborg - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Micael Hildenborg nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY Micael Hildenborg ''AS IS'' AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL Micael Hildenborg BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - Contributors: - Gustav - Several members in the gamedev.se forum. - Gregory Petrosyan - */ - -#include "sha1.h" - -namespace sha1 -{ - namespace // local - { - // Rotate an integer value to left. - inline const unsigned int rol(const unsigned int value, - const unsigned int steps) - { - return ((value << steps) | (value >> (32 - steps))); - } - - // Sets the first 16 integers in the buffert to zero. - // Used for clearing the W buffert. - inline void clearWBuffert(unsigned int* buffert) - { - for (int pos = 16; --pos >= 0;) - { - buffert[pos] = 0; - } - } - - void innerHash(unsigned int* result, unsigned int* w) - { - unsigned int a = result[0]; - unsigned int b = result[1]; - unsigned int c = result[2]; - unsigned int d = result[3]; - unsigned int e = result[4]; - - int round = 0; - - #define sha1macro(func,val) \ - { \ - const unsigned int t = rol(a, 5) + (func) + e + val + w[round]; \ - e = d; \ - d = c; \ - c = rol(b, 30); \ - b = a; \ - a = t; \ - } - - while (round < 16) - { - sha1macro((b & c) | (~b & d), 0x5a827999) - ++round; - } - while (round < 20) - { - w[round] = rol((w[round - 3] ^ w[round - 8] ^ w[round - 14] ^ w[round - 16]), 1); - sha1macro((b & c) | (~b & d), 0x5a827999) - ++round; - } - while (round < 40) - { - w[round] = rol((w[round - 3] ^ w[round - 8] ^ w[round - 14] ^ w[round - 16]), 1); - sha1macro(b ^ c ^ d, 0x6ed9eba1) - ++round; - } - while (round < 60) - { - w[round] = rol((w[round - 3] ^ w[round - 8] ^ w[round - 14] ^ w[round - 16]), 1); - sha1macro((b & c) | (b & d) | (c & d), 0x8f1bbcdc) - ++round; - } - while (round < 80) - { - w[round] = rol((w[round - 3] ^ w[round - 8] ^ w[round - 14] ^ w[round - 16]), 1); - sha1macro(b ^ c ^ d, 0xca62c1d6) - ++round; - } - - #undef sha1macro - - result[0] += a; - result[1] += b; - result[2] += c; - result[3] += d; - result[4] += e; - } - } // namespace - - void calc(const void* src, const int bytelength, unsigned char* hash) - { - // Init the result array. - unsigned int result[5] = { 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 }; - - // Cast the void src pointer to be the byte array we can work with. - const unsigned char* sarray = (const unsigned char*) src; - - // The reusable round buffer - unsigned int w[80]; - - // Loop through all complete 64byte blocks. - const int endOfFullBlocks = bytelength - 64; - int endCurrentBlock; - int currentBlock = 0; - - while (currentBlock <= endOfFullBlocks) - { - endCurrentBlock = currentBlock + 64; - - // Init the round buffer with the 64 byte block data. - for (int roundPos = 0; currentBlock < endCurrentBlock; currentBlock += 4) - { - // This line will swap endian on big endian and keep endian on little endian. - w[roundPos++] = (unsigned int) sarray[currentBlock + 3] - | (((unsigned int) sarray[currentBlock + 2]) << 8) - | (((unsigned int) sarray[currentBlock + 1]) << 16) - | (((unsigned int) sarray[currentBlock]) << 24); - } - innerHash(result, w); - } - - // Handle the last and not full 64 byte block if existing. - endCurrentBlock = bytelength - currentBlock; - clearWBuffert(w); - int lastBlockBytes = 0; - for (;lastBlockBytes < endCurrentBlock; ++lastBlockBytes) - { - w[lastBlockBytes >> 2] |= (unsigned int) sarray[lastBlockBytes + currentBlock] << ((3 - (lastBlockBytes & 3)) << 3); - } - w[lastBlockBytes >> 2] |= 0x80 << ((3 - (lastBlockBytes & 3)) << 3); - if (endCurrentBlock >= 56) - { - innerHash(result, w); - clearWBuffert(w); - } - w[15] = bytelength << 3; - innerHash(result, w); - - // Store hash in result pointer, and make sure we get in in the correct order on both endian models. - for (int hashByte = 20; --hashByte >= 0;) - { - hash[hashByte] = (result[hashByte >> 2] >> (((3 - hashByte) & 0x3) << 3)) & 0xff; - } - } - - void toHexString(const unsigned char* hash, char* hexstring) - { - const char hexDigits[] = { "0123456789abcdef" }; - - for (int hashByte = 20; --hashByte >= 0;) - { - hexstring[hashByte << 1] = hexDigits[(hash[hashByte] >> 4) & 0xf]; - hexstring[(hashByte << 1) + 1] = hexDigits[hash[hashByte] & 0xf]; - } - hexstring[40] = 0; - } -} // namespace sha1 diff --git a/src/third_party/websocketpp/websocketpp/sha1/sha1.h b/src/third_party/websocketpp/websocketpp/sha1/sha1.h deleted file mode 100644 index 96d8ce4d..00000000 --- a/src/third_party/websocketpp/websocketpp/sha1/sha1.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - Copyright (c) 2011, Micael Hildenborg - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of Micael Hildenborg nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY Micael Hildenborg ''AS IS'' AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL Micael Hildenborg BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef SHA1_DEFINED -#define SHA1_DEFINED - -namespace sha1 -{ - - /** - @param src points to any kind of data to be hashed. - @param bytelength the number of bytes to hash from the src pointer. - @param hash should point to a buffer of at least 20 bytes of size for storing the sha1 result in. - */ - void calc(const void* src, const int bytelength, unsigned char* hash); - - /** - @param hash is 20 bytes of sha1 hash. This is the same data that is the result from the calc function. - @param hexstring should point to a buffer of at least 41 bytes of size for storing the hexadecimal representation of the hash. A zero will be written at position 40, so the buffer will be a valid zero ended string. - */ - void toHexString(const unsigned char* hash, char* hexstring); - -} // namespace sha1 - -#endif // SHA1_DEFINED diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/base.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/base.hpp index 35c80ef2..28ac933c 100644 --- a/src/third_party/websocketpp/websocketpp/transport/asio/base.hpp +++ b/src/third_party/websocketpp/websocketpp/transport/asio/base.hpp @@ -34,6 +34,10 @@ #include +#include +#include +#include + #include namespace websocketpp { @@ -45,6 +49,110 @@ namespace transport { */ namespace asio { +// + +// Class to manage the memory to be used for handler-based custom allocation. +// It contains a single block of memory which may be returned for allocation +// requests. If the memory is in use when an allocation request is made, the +// allocator delegates allocation to the global heap. +class handler_allocator + : private boost::noncopyable +{ +public: + handler_allocator() + : in_use_(false) + { + } + + void* allocate(std::size_t size) + { + if (!in_use_ && size < storage_.size) + { + in_use_ = true; + return storage_.address(); + } + else + { + return ::operator new(size); + } + } + + void deallocate(void* pointer) + { + if (pointer == storage_.address()) + { + in_use_ = false; + } + else + { + ::operator delete(pointer); + } + } + +private: + // Storage space used for handler-based custom memory allocation. + boost::aligned_storage<1024> storage_; + + // Whether the handler-based custom allocation storage has been used. + bool in_use_; +}; + +// Wrapper class template for handler objects to allow handler memory +// allocation to be customised. Calls to operator() are forwarded to the +// encapsulated handler. +template +class custom_alloc_handler +{ +public: + custom_alloc_handler(handler_allocator& a, Handler h) + : allocator_(a), + handler_(h) + { + } + + template + void operator()(Arg1 arg1) + { + handler_(arg1); + } + + template + void operator()(Arg1 arg1, Arg2 arg2) + { + handler_(arg1, arg2); + } + + friend void* asio_handler_allocate(std::size_t size, + custom_alloc_handler* this_handler) + { + return this_handler->allocator_.allocate(size); + } + + friend void asio_handler_deallocate(void* pointer, std::size_t /*size*/, + custom_alloc_handler* this_handler) + { + this_handler->allocator_.deallocate(pointer); + } + +private: + handler_allocator& allocator_; + Handler handler_; +}; + +// Helper function to wrap a handler object to add custom allocation. +template +inline custom_alloc_handler make_custom_alloc_handler( + handler_allocator& a, Handler h) +{ + return custom_alloc_handler(a, h); +} + + + + + + + // Forward declaration of class endpoint so that it can be friended/referenced // before being included. template @@ -53,6 +161,21 @@ class endpoint; typedef lib::function socket_shutdown_handler; +typedef lib::function async_read_handler; + +typedef lib::function async_write_handler; + +typedef lib::function pre_init_handler; + +// handle_timer: dynamic parameters, multiple copies +// handle_proxy_write +// handle_proxy_read +// handle_async_write +// handle_pre_init + + /// Asio transport errors namespace error { enum value { diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/connection.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/connection.hpp index c69ea604..f0aefa57 100644 --- a/src/third_party/websocketpp/websocketpp/transport/asio/connection.hpp +++ b/src/third_party/websocketpp/websocketpp/transport/asio/connection.hpp @@ -109,15 +109,47 @@ public: return socket_con_type::is_secure(); } - /// Sets the tcp init handler + /// Sets the tcp pre init handler /** - * The tcp init handler is called after the tcp connection has been - * established. + * The tcp pre init handler is called after the raw tcp connection has been + * established but before any additional wrappers (proxy connects, TLS + * handshakes, etc) have been performed. * - * @param h The handler to call on tcp init. + * @since 0.4.0-alpha1 + * + * @param h The handler to call on tcp pre init. + */ + void set_tcp_pre_init_handler(tcp_init_handler h) { + m_tcp_pre_init_handler = h; + } + + /// Sets the tcp pre init handler (deprecated) + /** + * The tcp pre init handler is called after the raw tcp connection has been + * established but before any additional wrappers (proxy connects, TLS + * handshakes, etc) have been performed. + * + * @deprecated Use set_tcp_pre_init_handler instead + * + * @param h The handler to call on tcp pre init. */ void set_tcp_init_handler(tcp_init_handler h) { - m_tcp_init_handler = h; + set_tcp_pre_init_handler(h); + } + + /// Sets the tcp post init handler + /** + * The tcp post init handler is called after the tcp connection has been + * established and all additional wrappers (proxy connects, TLS handshakes, + * etc have been performed. This is fired before any bytes are read or any + * WebSocket specific handshake logic has been performed. + * + * @since 0.4.0-alpha1 + * + * @param h The handler to call on tcp post init. + */ + void set_tcp_post_init_handler(tcp_init_handler h) { + m_tcp_post_init_handler = h; } /// Set the proxy to connect through (exception free) @@ -264,15 +296,21 @@ public: ) ); - new_timer->async_wait( - m_strand->wrap(lib::bind( - &type::handle_timer, - get_shared(), + if (config::enable_multithreading) { + new_timer->async_wait(m_strand->wrap(lib::bind( + &type::handle_timer, get_shared(), new_timer, callback, lib::placeholders::_1 - )) - ); + ))); + } else { + new_timer->async_wait(lib::bind( + &type::handle_timer, get_shared(), + new_timer, + callback, + lib::placeholders::_1 + )); + } return new_timer; } @@ -288,8 +326,8 @@ public: * @param callback The function to call back * @param ec The status code */ - void handle_timer(timer_ptr t, timer_handler callback, const - boost::system::error_code& ec) + void handle_timer(timer_ptr t, timer_handler callback, + boost::system::error_code const & ec) { if (ec) { if (ec == boost::asio::error::operation_aborted) { @@ -333,11 +371,12 @@ protected: // TODO: pre-init timeout. Right now no implemented socket policies // actually have an asyncronous pre-init + m_init_handler = callback; + socket_con_type::pre_init( lib::bind( &type::handle_pre_init, get_shared(), - callback, lib::placeholders::_1 ) ); @@ -379,34 +418,57 @@ protected: // do we need to store or use the io_service at this level? m_io_service = io_service; - m_strand.reset(new boost::asio::strand(*io_service)); + if (config::enable_multithreading) { + m_strand.reset(new boost::asio::strand(*io_service)); + + m_async_read_handler = m_strand->wrap(lib::bind( + &type::handle_async_read, get_shared(), + lib::placeholders::_1, lib::placeholders::_2 + )); + + m_async_write_handler = m_strand->wrap(lib::bind( + &type::handle_async_write, get_shared(), + lib::placeholders::_1, lib::placeholders::_2 + )); + } else { + // TODO: goal: not have this line here + //m_strand.reset(new boost::asio::strand(*io_service)); + + m_async_read_handler = lib::bind( + &type::handle_async_read, get_shared(), + lib::placeholders::_1, lib::placeholders::_2 + ); + + m_async_write_handler = lib::bind(&type::handle_async_write, + get_shared(), lib::placeholders::_1, lib::placeholders::_2); + } return socket_con_type::init_asio(io_service, m_strand, m_is_server); } - void handle_pre_init(init_handler callback, const lib::error_code& ec) { + void handle_pre_init(lib::error_code const & ec) { if (m_alog.static_test(log::alevel::devel)) { m_alog.write(log::alevel::devel,"asio connection handle pre_init"); } - if (m_tcp_init_handler) { - m_tcp_init_handler(m_connection_hdl); + if (m_tcp_pre_init_handler) { + m_tcp_pre_init_handler(m_connection_hdl); } if (ec) { - callback(ec); + m_init_handler(ec); } // If we have a proxy set issue a proxy connect, otherwise skip to // post_init if (!m_proxy.empty()) { - proxy_write(callback); + proxy_write(); } else { - post_init(callback); + post_init(); } } - void post_init(init_handler callback) { + void post_init() { if (m_alog.static_test(log::alevel::devel)) { m_alog.write(log::alevel::devel,"asio connection post_init"); } @@ -418,7 +480,7 @@ protected: &type::handle_post_init_timeout, get_shared(), post_timer, - callback, + m_init_handler, lib::placeholders::_1 ) ); @@ -428,7 +490,7 @@ protected: &type::handle_post_init, get_shared(), post_timer, - callback, + m_init_handler, lib::placeholders::_1 ) ); @@ -477,10 +539,14 @@ protected: m_alog.write(log::alevel::devel,"asio connection handle_post_init"); } + if (m_tcp_post_init_handler) { + m_tcp_post_init_handler(m_connection_hdl); + } + callback(ec); } - void proxy_write(init_handler callback) { + void proxy_write() { if (m_alog.static_test(log::alevel::devel)) { m_alog.write(log::alevel::devel,"asio connection proxy_write"); } @@ -488,7 +554,7 @@ protected: if (!m_proxy_data) { m_elog.write(log::elevel::library, "assertion failed: !m_proxy_data in asio::connection::proxy_write"); - callback(make_error_code(error::general)); + m_init_handler(make_error_code(error::general)); return; } @@ -505,25 +571,37 @@ protected: lib::bind( &type::handle_proxy_timeout, get_shared(), - callback, + m_init_handler, lib::placeholders::_1 ) ); // Send proxy request - boost::asio::async_write( - socket_con_type::get_next_layer(), - m_bufs, - m_strand->wrap(lib::bind( - &type::handle_proxy_write, - get_shared(), - callback, - lib::placeholders::_1 - )) - ); + if (config::enable_multithreading) { + boost::asio::async_write( + socket_con_type::get_next_layer(), + m_bufs, + m_strand->wrap(lib::bind( + &type::handle_proxy_write, get_shared(), + m_init_handler, + lib::placeholders::_1 + )) + ); + } else { + boost::asio::async_write( + socket_con_type::get_next_layer(), + m_bufs, + lib::bind( + &type::handle_proxy_write, get_shared(), + m_init_handler, + lib::placeholders::_1 + ) + ); + } } - void handle_proxy_timeout(init_handler callback, const lib::error_code & ec) { + void handle_proxy_timeout(init_handler callback, lib::error_code const & ec) + { if (ec == transport::error::operation_aborted) { m_alog.write(log::alevel::devel, "asio handle_proxy_write timer cancelled"); @@ -539,11 +617,12 @@ protected: } } - void handle_proxy_write(init_handler callback, const - boost::system::error_code& ec) + void handle_proxy_write(init_handler callback, + boost::system::error_code const & ec) { if (m_alog.static_test(log::alevel::devel)) { - m_alog.write(log::alevel::devel,"asio connection handle_proxy_write"); + m_alog.write(log::alevel::devel, + "asio connection handle_proxy_write"); } m_bufs.clear(); @@ -581,25 +660,37 @@ protected: return; } - boost::asio::async_read_until( - socket_con_type::get_next_layer(), - m_proxy_data->read_buf, - "\r\n\r\n", - m_strand->wrap(lib::bind( - &type::handle_proxy_read, - get_shared(), - callback, - lib::placeholders::_1, - lib::placeholders::_2 - )) - ); + if (config::enable_multithreading) { + boost::asio::async_read_until( + socket_con_type::get_next_layer(), + m_proxy_data->read_buf, + "\r\n\r\n", + m_strand->wrap(lib::bind( + &type::handle_proxy_read, get_shared(), + callback, + lib::placeholders::_1, lib::placeholders::_2 + )) + ); + } else { + boost::asio::async_read_until( + socket_con_type::get_next_layer(), + m_proxy_data->read_buf, + "\r\n\r\n", + lib::bind( + &type::handle_proxy_read, get_shared(), + callback, + lib::placeholders::_1, lib::placeholders::_2 + ) + ); + } } - void handle_proxy_read(init_handler callback, const - boost::system::error_code& ec, size_t bytes_transferred) + void handle_proxy_read(init_handler callback, + boost::system::error_code const & ec, size_t bytes_transferred) { if (m_alog.static_test(log::alevel::devel)) { - m_alog.write(log::alevel::devel,"asio connection handle_proxy_read"); + m_alog.write(log::alevel::devel, + "asio connection handle_proxy_read"); } // Timer expired or the operation was aborted for some reason. @@ -667,7 +758,7 @@ protected: m_proxy_data.reset(); // Continue with post proxy initialization - post_init(callback); + post_init(); } } @@ -685,93 +776,114 @@ protected: m_alog.write(log::alevel::devel,s.str()); } - if (num_bytes > len) { + if (!m_async_read_handler) { + m_alog.write(log::alevel::devel, + "async_read_at_least called after async_shutdown"); + handler(make_error_code(transport::error::action_after_shutdown), 0); + return; + } + + // TODO: safety vs speed ? + // maybe move into an if devel block + /*if (num_bytes > len) { m_elog.write(log::elevel::devel, "asio async_read_at_least error::invalid_num_bytes"); handler(make_error_code(transport::error::invalid_num_bytes), size_t(0)); return; - } + }*/ + + m_read_handler = handler; boost::asio::async_read( socket_con_type::get_socket(), boost::asio::buffer(buf,len), boost::asio::transfer_at_least(num_bytes), - m_strand->wrap(lib::bind( - &type::handle_async_read, - get_shared(), - handler, - lib::placeholders::_1, - lib::placeholders::_2 - )) + make_custom_alloc_handler( + m_read_handler_allocator, + m_async_read_handler + ) ); } - void handle_async_read(read_handler handler, const - boost::system::error_code& ec, size_t bytes_transferred) + void handle_async_read(const boost::system::error_code& ec, + size_t bytes_transferred) { if (!ec) { - handler(lib::error_code(), bytes_transferred); + m_read_handler(lib::error_code(), bytes_transferred); return; } // translate boost error codes into more lib::error_codes if (ec == boost::asio::error::eof) { - handler(make_error_code(transport::error::eof), + m_read_handler(make_error_code(transport::error::eof), bytes_transferred); } else if (ec.value() == 335544539) { - handler(make_error_code(transport::error::tls_short_read), + m_read_handler(make_error_code(transport::error::tls_short_read), bytes_transferred); } else { log_err(log::elevel::info,"asio async_read_at_least",ec); - handler(make_error_code(transport::error::pass_through), + m_read_handler(make_error_code(transport::error::pass_through), bytes_transferred); } } void async_write(const char* buf, size_t len, write_handler handler) { - m_bufs.push_back(boost::asio::buffer(buf,len)); + if (!m_async_write_handler) { + m_alog.write(log::alevel::devel, + "async_write (single) called after async_shutdown"); + handler(make_error_code(transport::error::action_after_shutdown)); + return; + } + + m_bufs.push_back(boost::asio::buffer(buf,len)); + + m_write_handler = handler; boost::asio::async_write( socket_con_type::get_socket(), m_bufs, - m_strand->wrap(lib::bind( - &type::handle_async_write, - get_shared(), - handler, - lib::placeholders::_1 - )) + make_custom_alloc_handler( + m_write_handler_allocator, + m_async_write_handler + ) ); } void async_write(const std::vector& bufs, write_handler handler) { + if (!m_async_write_handler) { + m_alog.write(log::alevel::devel, + "async_write (vector) called after async_shutdown"); + handler(make_error_code(transport::error::action_after_shutdown)); + return; + } std::vector::const_iterator it; for (it = bufs.begin(); it != bufs.end(); ++it) { m_bufs.push_back(boost::asio::buffer((*it).buf,(*it).len)); } + m_write_handler = handler; + boost::asio::async_write( socket_con_type::get_socket(), m_bufs, - m_strand->wrap(lib::bind( - &type::handle_async_write, - get_shared(), - handler, - lib::placeholders::_1 - )) + make_custom_alloc_handler( + m_write_handler_allocator, + m_async_write_handler + ) ); } - void handle_async_write(write_handler handler, const - boost::system::error_code& ec) + void handle_async_write(boost::system::error_code const & ec, + size_t bytes_transferred) { m_bufs.clear(); if (ec) { log_err(log::elevel::info,"asio async_write",ec); - handler(make_error_code(transport::error::pass_through)); + m_write_handler(make_error_code(transport::error::pass_through)); } else { - handler(lib::error_code()); + m_write_handler(lib::error_code()); } } @@ -792,12 +904,20 @@ protected: * This needs to be thread safe */ lib::error_code interrupt(interrupt_handler handler) { - m_io_service->post(m_strand->wrap(handler)); + if (config::enable_multithreading) { + m_io_service->post(m_strand->wrap(handler)); + } else { + m_io_service->post(handler); + } return lib::error_code(); } lib::error_code dispatch(dispatch_handler handler) { - m_io_service->post(m_strand->wrap(handler)); + if (config::enable_multithreading) { + m_io_service->post(m_strand->wrap(handler)); + } else { + m_io_service->post(handler); + } return lib::error_code(); } @@ -811,6 +931,13 @@ protected: m_alog.write(log::alevel::devel,"asio connection async_shutdown"); } + // Reset cached handlers now that we won't be reading or writing anymore + // These cached handlers store shared pointers to this connection and will leak + // the connection if not destroyed. + m_async_read_handler = 0; + m_async_write_handler = 0; + m_init_handler = 0; + timer_ptr shutdown_timer; shutdown_timer = set_timer( config::timeout_socket_shutdown, @@ -926,7 +1053,18 @@ private: std::vector m_bufs; // Handlers - tcp_init_handler m_tcp_init_handler; + tcp_init_handler m_tcp_pre_init_handler; + tcp_init_handler m_tcp_post_init_handler; + + handler_allocator m_read_handler_allocator; + handler_allocator m_write_handler_allocator; + + read_handler m_read_handler; + write_handler m_write_handler; + init_handler m_init_handler; + + async_read_handler m_async_read_handler; + async_write_handler m_async_write_handler; }; diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/endpoint.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/endpoint.hpp index e91dc58a..2728c66b 100644 --- a/src/third_party/websocketpp/websocketpp/transport/asio/endpoint.hpp +++ b/src/third_party/websocketpp/websocketpp/transport/asio/endpoint.hpp @@ -84,10 +84,13 @@ public: typedef lib::shared_ptr resolver_ptr; /// Type of timer handle typedef lib::shared_ptr timer_ptr; + /// Type of a shared pointer to an io_service work object + typedef lib::shared_ptr work_ptr; // generate and manage our own io_service explicit endpoint() : m_external_io_service(false) + , m_listen_backlog(0) , m_state(UNINITIALIZED) { //std::cout << "transport::asio::endpoint constructor" << std::endl; @@ -119,6 +122,7 @@ public: : m_io_service(src.m_io_service) , m_external_io_service(src.m_external_io_service) , m_acceptor(src.m_acceptor) + , m_listen_backlog(0) , m_state(src.m_state) { src.m_io_service = NULL; @@ -132,11 +136,13 @@ public: m_io_service = rhs.m_io_service; m_external_io_service = rhs.m_external_io_service; m_acceptor = rhs.m_acceptor; + m_listen_backlog = rhs.m_listen_backlog m_state = rhs.m_state; rhs.m_io_service = NULL; rhs.m_external_io_service = false; rhs.m_acceptor = NULL; + rhs.m_listen_backlog = 0; rhs.m_state = UNINITIALIZED; } return *this; @@ -216,6 +222,72 @@ public: m_external_io_service = false; } + /// Sets the tcp pre init handler + /** + * The tcp pre init handler is called after the raw tcp connection has been + * established but before any additional wrappers (proxy connects, TLS + * handshakes, etc) have been performed. + * + * @since 0.4.0-alpha1 + * + * @param h The handler to call on tcp pre init. + */ + void set_tcp_pre_init_handler(tcp_init_handler h) { + m_tcp_pre_init_handler = h; + } + + /// Sets the tcp pre init handler (deprecated) + /** + * The tcp pre init handler is called after the raw tcp connection has been + * established but before any additional wrappers (proxy connects, TLS + * handshakes, etc) have been performed. + * + * @deprecated Use set_tcp_pre_init_handler instead + * + * @param h The handler to call on tcp pre init. + */ + void set_tcp_init_handler(tcp_init_handler h) { + set_tcp_pre_init_handler(h); + } + + /// Sets the tcp post init handler + /** + * The tcp post init handler is called after the tcp connection has been + * established and all additional wrappers (proxy connects, TLS handshakes, + * etc have been performed. This is fired before any bytes are read or any + * WebSocket specific handshake logic has been performed. + * + * @since 0.4.0-alpha1 + * + * @param h The handler to call on tcp post init. + */ + void set_tcp_post_init_handler(tcp_init_handler h) { + m_tcp_post_init_handler = h; + } + + /// Sets the maximum length of the queue of pending connections. + /** + * Sets the maximum length of the queue of pending connections. Increasing + * this will allow WebSocket++ to queue additional incoming connections. + * Setting it higher may prevent failed connections at high connection rates + * but may cause additional latency. + * + * For this value to take effect you may need to adjust operating system + * settings. + * + * New values affect future calls to listen only. + * + * A value of zero will use the operating system default. This is the + * default value. + * + * @since 0.4.0-alpha1 + * + * @param backlog The maximum length of the queue of pending connections + */ + void set_listen_backlog(int backlog) { + m_listen_backlog = backlog; + } + /// Retrieve a reference to the endpoint's io_service /** * The io_service may be an internal or external one. This may be used to @@ -231,20 +303,6 @@ public: return *m_io_service; } - /// Sets the tcp init handler - /** - * The tcp init handler is called after the tcp connection has been - * established. - * - * @see WebSocket++ handler documentation for more information about - * handlers. - * - * @param h The handler to call on tcp init. - */ - void set_tcp_init_handler(tcp_init_handler h) { - m_tcp_init_handler = h; - } - /// Set up endpoint for listening manually (exception free) /** * Bind the internal acceptor using the specified settings. The endpoint @@ -268,7 +326,11 @@ public: m_acceptor->open(ep.protocol()); m_acceptor->set_option(boost::asio::socket_base::reuse_address(true)); m_acceptor->bind(ep); - m_acceptor->listen(); + if (m_listen_backlog == 0) { + m_acceptor->listen(); + } else { + m_acceptor->listen(m_listen_backlog); + } m_state = LISTENING; ec = lib::error_code(); } @@ -494,6 +556,34 @@ public: return m_io_service->stopped(); } + /// Marks the endpoint as perpetual, stopping it from exiting when empty + /** + * Marks the endpoint as perpetual. Perpetual endpoints will not + * automatically exit when they run out of connections to process. To stop + * a perpetual endpoint call `end_perpetual`. + * + * An endpoint may be marked perpetual at any time by any thread. It must be + * called either before the endpoint has run out of work or before it was + * started + * + * @since 0.4.0-alpha1 + */ + void start_perpetual() { + m_work.reset(new boost::asio::io_service::work(*m_io_service)); + } + + /// Clears the endpoint's perpetual flag, allowing it to exit when empty + /** + * Clears the endpoint's perpetual flag. This will cause the endpoint's run + * method to exit normally when it runs out of connections. If there are + * currently active connections it will not end until they are complete. + * + * @since 0.4.0-alpha1 + */ + void stop_perpetual() { + m_work.reset(); + } + /// Call back a function after a period of time. /** * Sets a timer that calls back a function after the specified period of @@ -572,15 +662,27 @@ public: m_alog->write(log::alevel::devel, "asio::async_accept"); - m_acceptor->async_accept( - tcon->get_raw_socket(), - tcon->get_strand()->wrap(lib::bind( - &type::handle_accept, - this, - callback, - lib::placeholders::_1 - )) - ); + if (config::enable_multithreading) { + m_acceptor->async_accept( + tcon->get_raw_socket(), + tcon->get_strand()->wrap(lib::bind( + &type::handle_accept, + this, + callback, + lib::placeholders::_1 + )) + ); + } else { + m_acceptor->async_accept( + tcon->get_raw_socket(), + lib::bind( + &type::handle_accept, + this, + callback, + lib::placeholders::_1 + ) + ); + } } /// Accept the next connection attempt and assign it to con. @@ -683,18 +785,33 @@ protected: ) ); - m_resolver->async_resolve( - query, - tcon->get_strand()->wrap(lib::bind( - &type::handle_resolve, - this, - tcon, - dns_timer, - cb, - lib::placeholders::_1, - lib::placeholders::_2 - )) - ); + if (config::enable_multithreading) { + m_resolver->async_resolve( + query, + tcon->get_strand()->wrap(lib::bind( + &type::handle_resolve, + this, + tcon, + dns_timer, + cb, + lib::placeholders::_1, + lib::placeholders::_2 + )) + ); + } else { + m_resolver->async_resolve( + query, + lib::bind( + &type::handle_resolve, + this, + tcon, + dns_timer, + cb, + lib::placeholders::_1, + lib::placeholders::_2 + ) + ); + } } void handle_resolve_timeout(timer_ptr dns_timer, connect_handler callback, @@ -767,18 +884,33 @@ protected: ) ); - boost::asio::async_connect( - tcon->get_raw_socket(), - iterator, - tcon->get_strand()->wrap(lib::bind( - &type::handle_connect, - this, - tcon, - con_timer, - callback, - lib::placeholders::_1 - )) - ); + if (config::enable_multithreading) { + boost::asio::async_connect( + tcon->get_raw_socket(), + iterator, + tcon->get_strand()->wrap(lib::bind( + &type::handle_connect, + this, + tcon, + con_timer, + callback, + lib::placeholders::_1 + )) + ); + } else { + boost::asio::async_connect( + tcon->get_raw_socket(), + iterator, + lib::bind( + &type::handle_connect, + this, + tcon, + con_timer, + callback, + lib::placeholders::_1 + ) + ); + } } void handle_connect_timeout(transport_con_ptr tcon, timer_ptr con_timer, @@ -857,7 +989,8 @@ protected: ec = tcon->init_asio(m_io_service); if (ec) {return ec;} - tcon->set_tcp_init_handler(m_tcp_init_handler); + tcon->set_tcp_pre_init_handler(m_tcp_pre_init_handler); + tcon->set_tcp_post_init_handler(m_tcp_post_init_handler); return lib::error_code(); } @@ -877,13 +1010,18 @@ private: }; // Handlers - tcp_init_handler m_tcp_init_handler; + tcp_init_handler m_tcp_pre_init_handler; + tcp_init_handler m_tcp_post_init_handler; // Network Resources io_service_ptr m_io_service; bool m_external_io_service; acceptor_ptr m_acceptor; resolver_ptr m_resolver; + work_ptr m_work; + + // Network constants + int m_listen_backlog; elog_type* m_elog; alog_type* m_alog; diff --git a/src/third_party/websocketpp/websocketpp/transport/asio/security/tls.hpp b/src/third_party/websocketpp/websocketpp/transport/asio/security/tls.hpp index d7da561e..2a743112 100644 --- a/src/third_party/websocketpp/websocketpp/transport/asio/security/tls.hpp +++ b/src/third_party/websocketpp/websocketpp/transport/asio/security/tls.hpp @@ -228,15 +228,25 @@ protected: m_ec = socket::make_error_code(socket::error::tls_handshake_timeout); // TLS handshake - m_socket->async_handshake( - get_handshake_type(), - m_strand->wrap(lib::bind( - &type::handle_init, - get_shared(), - callback, - lib::placeholders::_1 - )) - ); + if (m_strand) { + m_socket->async_handshake( + get_handshake_type(), + m_strand->wrap(lib::bind( + &type::handle_init, get_shared(), + callback, + lib::placeholders::_1 + )) + ); + } else { + m_socket->async_handshake( + get_handshake_type(), + lib::bind( + &type::handle_init, get_shared(), + callback, + lib::placeholders::_1 + ) + ); + } } /// Sets the connection handle diff --git a/src/third_party/websocketpp/websocketpp/transport/base/connection.hpp b/src/third_party/websocketpp/websocketpp/transport/base/connection.hpp index 1db6310d..70e1ec50 100644 --- a/src/third_party/websocketpp/websocketpp/transport/base/connection.hpp +++ b/src/third_party/websocketpp/websocketpp/transport/base/connection.hpp @@ -169,7 +169,10 @@ enum value { tls_short_read, /// Timer expired - timeout + timeout, + + /// read or write after shutdown + action_after_shutdown }; class category : public lib::error_category { @@ -198,6 +201,8 @@ class category : public lib::error_category { return "TLS Short Read"; case timeout: return "Timer Expired"; + case action_after_shutdown: + return "A transport action was requested after shutdown"; default: return "Unknown"; } diff --git a/src/third_party/websocketpp/websocketpp/uri.hpp b/src/third_party/websocketpp/websocketpp/uri.hpp index b0c7f38f..5471031a 100644 --- a/src/third_party/websocketpp/websocketpp/uri.hpp +++ b/src/third_party/websocketpp/websocketpp/uri.hpp @@ -282,7 +282,22 @@ public: return s.str(); } - // get query? + /// Return the query portion + /** + * Returns the query portion (after the ?) of the URI or an empty string if + * there is none. + * + * @return query portion of the URI. + */ + std::string get_query() const { + std::size_t found = m_resource.find('?'); + if (found != std::string::npos) { + return m_resource.substr(found + 1); + } else { + return ""; + } + } + // get fragment // hi <3 From 678d81bb97f6591cba43ed103a0d3d908093aecf Mon Sep 17 00:00:00 2001 From: doitux Date: Wed, 18 Dec 2013 23:21:35 +0100 Subject: [PATCH 125/128] final position for network state display --- src/gui/qt/gametable/myavatarlabel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/qt/gametable/myavatarlabel.cpp b/src/gui/qt/gametable/myavatarlabel.cpp index ced1d4d9..e7a88d82 100644 --- a/src/gui/qt/gametable/myavatarlabel.cpp +++ b/src/gui/qt/gametable/myavatarlabel.cpp @@ -434,7 +434,7 @@ void MyAvatarLabel::paintEvent(QPaintEvent*) // brush.setAlpha(130); painter.setBrush(brush); painter.setRenderHint(QPainter::Antialiasing); - painter.drawEllipse(1, 1, 10, 10); + painter.drawEllipse(1, 39, 10, 10); } } } From 416b37f657d9d2801143613d63021c76c292936c Mon Sep 17 00:00:00 2001 From: doitux Date: Wed, 18 Dec 2013 23:23:23 +0100 Subject: [PATCH 126/128] fixed strings for network state display config options --- src/gui/qt/gui_800x480/settingsdialog_800x480.ui | 2 +- src/gui/qt/settingsdialog.ui | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/qt/gui_800x480/settingsdialog_800x480.ui b/src/gui/qt/gui_800x480/settingsdialog_800x480.ui index 7b695e9f..cfa76c6e 100644 --- a/src/gui/qt/gui_800x480/settingsdialog_800x480.ui +++ b/src/gui/qt/gui_800x480/settingsdialog_800x480.ui @@ -342,7 +342,7 @@ - Show multicolor network state display in the avatar + Show network state color on the avatar diff --git a/src/gui/qt/settingsdialog.ui b/src/gui/qt/settingsdialog.ui index 225429e4..37c922b5 100644 --- a/src/gui/qt/settingsdialog.ui +++ b/src/gui/qt/settingsdialog.ui @@ -347,7 +347,7 @@ - Show multicolor network state display in the corner of the avatar + Show network state color in the corner of the avatar From 2aa0617d18f36ce98e5ed8cf8676c743d668f3ec Mon Sep 17 00:00:00 2001 From: doitux Date: Wed, 18 Dec 2013 23:31:51 +0100 Subject: [PATCH 127/128] string freeze for 1.1 final - translations welcome ;-) --- ts/pokerth_START_HERE.ts | 1843 ++++++++++++++++++++------------------ ts/pokerth_af.ts | 1351 +++++++++++++++------------- ts/pokerth_bg.ts | 1833 +++++++++++++++++++------------------ ts/pokerth_ca.ts | 1703 ++++++++++++++++++----------------- ts/pokerth_cz.ts | 52 ++ ts/pokerth_de.ts | 1695 ++++++++++++++++++----------------- ts/pokerth_dk.ts | 1833 +++++++++++++++++++------------------ ts/pokerth_es.ts | 1695 ++++++++++++++++++----------------- ts/pokerth_fi.ts | 1703 ++++++++++++++++++----------------- ts/pokerth_fr.ts | 1697 ++++++++++++++++++----------------- ts/pokerth_gd.ts | 1703 ++++++++++++++++++----------------- ts/pokerth_gl.ts | 1721 ++++++++++++++++++----------------- ts/pokerth_gr.ts | 1833 +++++++++++++++++++------------------ ts/pokerth_hu.ts | 1695 ++++++++++++++++++----------------- ts/pokerth_it.ts | 1687 +++++++++++++++++----------------- ts/pokerth_jp.ts | 1831 +++++++++++++++++++------------------ ts/pokerth_lt.ts | 1835 +++++++++++++++++++------------------ ts/pokerth_nl.ts | 1695 ++++++++++++++++++----------------- ts/pokerth_no.ts | 1821 +++++++++++++++++++------------------ ts/pokerth_pl.ts | 1699 ++++++++++++++++++----------------- ts/pokerth_ptbr.ts | 52 ++ ts/pokerth_ptpt.ts | 1835 +++++++++++++++++++------------------ ts/pokerth_ru.ts | 1707 ++++++++++++++++++----------------- ts/pokerth_sk.ts | 1703 ++++++++++++++++++----------------- ts/pokerth_sv.ts | 1833 +++++++++++++++++++------------------ ts/pokerth_ta.ts | 1703 ++++++++++++++++++----------------- ts/pokerth_tr.ts | 1813 +++++++++++++++++++------------------ ts/pokerth_vi.ts | 1703 ++++++++++++++++++----------------- ts/pokerth_zhcn.ts | 1703 ++++++++++++++++++----------------- 29 files changed, 24472 insertions(+), 22505 deletions(-) diff --git a/ts/pokerth_START_HERE.ts b/ts/pokerth_START_HERE.ts index 500f3879..e34fdd66 100644 --- a/ts/pokerth_START_HERE.ts +++ b/ts/pokerth_START_HERE.ts @@ -246,106 +246,106 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -369,22 +369,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + + PokerTH - Question - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -507,127 +545,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 - + About PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -744,12 +782,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order - + You cannot set more than 30 manual blinds. @@ -783,44 +821,44 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. - - - + + + Nick name: - + Your player name is already used by another player. Please choose a different name. - + The player name is too short, too long or invalid. Please choose another one. - + There is already a game with your chosen game name. Please choose another one! - + There is a forbidden word in your chosen game name. Please choose another one! - - + + Game name: @@ -848,27 +886,27 @@ Please choose another one! connectToServerDialogImpl - + Resolving address... - + Connecting to server... - + Starting session... - + Connection established! - + Reading server list... @@ -1015,7 +1053,7 @@ Please choose another one! - + %1's game @@ -1295,70 +1333,70 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... - + Joining a private Game - + You are about to join a private game. Please enter the password! - + open - - - - + + + + Game Info - + Spectate - - + + Game - - + + Players - - + + State - - + + P - - + + Available Players @@ -1373,91 +1411,91 @@ p, li { white-space: pre-wrap; } - + Player infos ... - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - + + T - - - + + + sec (action) - - - + + + sec (hand delay) - + running - - - - running games: %1 - - + running games: %1 + + + + + open games: %1 - - + + Players (%1) - - - + + + Spectators (%1) @@ -1467,129 +1505,134 @@ p, li { white-space: pre-wrap; } - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? - - + + connected players: %1 - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - - + + Time - - - Show player stats + + Unignore player - + + Show player stats + + + + + Admin action ... - + Total kickban - + Close game - + hands - + minutes - + double blinds - + manual blinds order - + Server Error - + You should not kick yourself from this game! - + search for player ... - + Chat is only available to registered players. @@ -1599,1263 +1642,1279 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Ignore player ... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + - + + PokerTH - Question - - Afghanistan - - - - - ALand Islands - - - - - Albania - - - - - Algeria - - - - - American Samoa - - - - - Andorra - - - - - Angola - - - - - Anguilla - - - - - Antarctica - - - - - Antigua And Barbuda - - - - - Argentina - - - - - Armenia - - - - - Aruba - - - - - Australia - - - - - Austria - - - - - Azerbaijan - - - - - Bahamas + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? - Bahrain + Afghanistan - Bangladesh + ALand Islands - Barbados + Albania - Belarus + Algeria - Belgium + American Samoa - Belize + Andorra - Benin + Angola - Bermuda + Anguilla - Bhutan + Antarctica - Bolivia + Antigua And Barbuda - Bosnia And Herzegovina + Argentina - Botswana + Armenia - Bouvet Island + Aruba - Brazil + Australia - British Indian Ocean Territory + Austria - Brunei Darussalam + Azerbaijan - Bulgaria + Bahamas - Burkina Faso + Bahrain - Burundi + Bangladesh - Cambodia + Barbados - Cameroon + Belarus - Canada + Belgium - Cape Verde + Belize - Cayman Islands + Benin - Central African Republic + Bermuda - Chad + Bhutan - Chile + Bolivia - China + Bosnia And Herzegovina - Christmas Island + Botswana - Cocos (Keeling) Islands + Bouvet Island - Colombia + Brazil - Comoros + British Indian Ocean Territory - Congo + Brunei Darussalam - Congo, The Democratic Republic Of The + Bulgaria - Cook Islands + Burkina Faso - Costa Rica + Burundi - Cote D'Ivoire + Cambodia - Croatia + Cameroon - Cuba + Canada - Cyprus + Cape Verde - Czech Republic + Cayman Islands - Denmark + Central African Republic - Djibouti + Chad - Dominica + Chile - Dominican Republic + China - Ecuador + Christmas Island - Egypt + Cocos (Keeling) Islands - El Salvador + Colombia - Equatorial Guinea + Comoros - Eritrea + Congo - Estonia + Congo, The Democratic Republic Of The - Ethiopia + Cook Islands - Falkland Islands (Malvinas) + Costa Rica - Faroe Islands + Cote D'Ivoire - Fiji + Croatia - Finland + Cuba - France + Cyprus - French Guiana + Czech Republic - French Polynesia + Denmark - French Southern Territories + Djibouti - Gabon + Dominica - Gambia + Dominican Republic - Georgia + Ecuador - Germany + Egypt - Ghana + El Salvador - Gibraltar + Equatorial Guinea - Greece + Eritrea - Greenland + Estonia - Grenada + Ethiopia - Guadeloupe + Falkland Islands (Malvinas) - Guam + Faroe Islands - Guatemala + Fiji - Guernsey + Finland - Guinea + France - Guinea-Bissau + French Guiana - Guyana + French Polynesia - Haiti + French Southern Territories - Heard Island And Mcdonald Islands + Gabon - Holy See (Vatican City State) + Gambia - Honduras + Georgia - Hong Kong + Germany - Hungary + Ghana - Iceland + Gibraltar - India + Greece - Indonesia + Greenland - Iran, Islamic Republic Of + Grenada - Iraq + Guadeloupe - Ireland + Guam - Isle Of Man + Guatemala - Israel + Guernsey - Italy + Guinea - Jamaica + Guinea-Bissau - Japan + Guyana - Jersey + Haiti - Jordan + Heard Island And Mcdonald Islands - Kazakhstan + Holy See (Vatican City State) - Kenya + Honduras - Kiribati + Hong Kong - Korea, Democratic People'S Republic Of + Hungary - Korea, Republic Of + Iceland - Kuwait + India - Kyrgyzstan + Indonesia - Lao People'S Democratic Republic + Iran, Islamic Republic Of - Latvia + Iraq - Lebanon + Ireland - Lesotho + Isle Of Man - Liberia + Israel - Libyan Arab Jamahiriya + Italy - Liechtenstein + Jamaica - Lithuania + Japan - Luxembourg + Jersey - Macao + Jordan - Macedonia, The Former Yugoslav Republic Of + Kazakhstan - Madagascar + Kenya - Malawi + Kiribati - Malaysia + Korea, Democratic People'S Republic Of - Maldives + Korea, Republic Of - Mali + Kuwait - Malta + Kyrgyzstan - Marshall Islands + Lao People'S Democratic Republic - Martinique + Latvia - Mauritania + Lebanon - Mauritius + Lesotho - Mayotte + Liberia - Mexico + Libyan Arab Jamahiriya - Micronesia, Federated States Of + Liechtenstein - Moldova, Republic Of + Lithuania - Monaco + Luxembourg - Mongolia + Macao - Montserrat + Macedonia, The Former Yugoslav Republic Of - Morocco + Madagascar - Mozambique + Malawi - Myanmar + Malaysia - Namibia + Maldives - Nauru + Mali - Nepal + Malta - Netherlands + Marshall Islands - Netherlands Antilles + Martinique - New Caledonia + Mauritania - New Zealand + Mauritius - Nicaragua + Mayotte - Niger + Mexico - Nigeria + Micronesia, Federated States Of - Niue + Moldova, Republic Of - Norfolk Island + Monaco - Northern Mariana Islands + Mongolia - Norway + Montserrat - Oman + Morocco - Pakistan + Mozambique - Palau + Myanmar - Palestinian Territory, Occupied + Namibia - Panama + Nauru - Papua New Guinea + Nepal - Paraguay + Netherlands - Peru + Netherlands Antilles - Philippines + New Caledonia - Pitcairn + New Zealand - Poland + Nicaragua - Portugal + Niger - Puerto Rico + Nigeria - Qatar + Niue - Reunion + Norfolk Island - Romania + Northern Mariana Islands - Russian Federation + Norway - Rwanda + Oman - Saint Helena + Pakistan - Saint Kitts And Nevis + Palau - Saint Lucia + Palestinian Territory, Occupied - Saint Pierre And Miquelon + Panama - Saint Vincent And The Grenadines + Papua New Guinea - Samoa + Paraguay - San Marino + Peru - Sao Tome And Principe + Philippines - Saudi Arabia + Pitcairn - Senegal + Poland - Serbia And Montenegro + Portugal - Seychelles + Puerto Rico - Sierra Leone + Qatar - Singapore + Reunion - Slovakia + Romania - Slovenia + Russian Federation - Solomon Islands + Rwanda - Somalia + Saint Helena - South Africa + Saint Kitts And Nevis - South Georgia And The South Sandwich Islands + Saint Lucia - Spain + Saint Pierre And Miquelon - Sri Lanka + Saint Vincent And The Grenadines - Sudan + Samoa - Suriname + San Marino - Svalbard And Jan Mayen + Sao Tome And Principe - Swaziland + Saudi Arabia - Sweden + Senegal - Switzerland + Serbia And Montenegro - Syrian Arab Republic + Seychelles - Taiwan, Province Of China + Sierra Leone - Tajikistan + Singapore - Tanzania, United Republic Of + Slovakia - Thailand + Slovenia - Timor-Leste + Solomon Islands - Togo + Somalia - Tokelau + South Africa - Tonga + South Georgia And The South Sandwich Islands - Trinidad And Tobago + Spain - Tunisia + Sri Lanka - Turkey + Sudan - Turkmenistan + Suriname - Turks And Caicos Islands + Svalbard And Jan Mayen - Tuvalu + Swaziland - Uganda + Sweden - Ukraine + Switzerland - United Arab Emirates + Syrian Arab Republic - United Kingdom + Taiwan, Province Of China - United States + Tajikistan - United States Minor Outlying Islands + Tanzania, United Republic Of - Uruguay + Thailand - Uzbekistan + Timor-Leste - Vanuatu + Togo - Venezuela + Tokelau - Viet Nam + Tonga - Virgin Islands, British + Trinidad And Tobago - Virgin Islands, U.S. + Tunisia - Wallis And Futuna + Turkey - Western Sahara + Turkmenistan - Yemen + Turks And Caicos Islands - Zambia + Tuvalu + Uganda + + + + + Ukraine + + + + + United Arab Emirates + + + + + United Kingdom + + + + + United States + + + + + United States Minor Outlying Islands + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Viet Nam + + + + + Virgin Islands, British + + + + + Virgin Islands, U.S. + + + + + Wallis And Futuna + + + + + Western Sahara + + + + + Yemen + + + + + Zambia + + + + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3142,146 +3201,146 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop - + PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - - - - + + + + + + + + Start - - - - - + + + + + Lobby - - + + Chat - + Closing PokerTH during network game - + You are the hosting server. Do you want to close PokerTH anyway? - + Really want to exit? - + PokerTH - Close Table? - + PokerTH - Internet Game Message - + Attention! Do you really want to leave the current game and go back to the lobby? + - Chat is only available to registered players. - + Spectators - - + + Chance - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. @@ -3339,7 +3398,7 @@ and go back to the lobby? internetGameLoginDialogImpl - + Create new user account @@ -3474,52 +3533,52 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error - - - - + + + + Could not load server-profiles-file: %1 - + Save Server Profile Error - + A profile with the name: %1 already exists. Would you like to overwrite ? - + Read Server-Profile List Error - + Could not read server-profiles list - - + + Save Server-Profile-File Error - - + + Could not save server-profiles-file: %1 @@ -3586,12 +3645,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order - + You cannot set more than 30 manual blinds. @@ -3714,36 +3773,36 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error - + Please select an avatar from the list! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! - + The entered avatar picture doesn't exist. Please enter an valid picture! - + Select external avatar picture - + Images (*.png *.jpg *.gif) @@ -3805,7 +3864,7 @@ Please enter an valid picture! - + Switch keyboard focus to bet-input-field if it's your turn @@ -3813,14 +3872,14 @@ Please enter an valid picture! - + Sound - + Factory Settings @@ -3837,356 +3896,366 @@ Please enter an valid picture! - + Show country flag in the corner of avatar - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Game Table - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State - - + + Card Deck - - + + Card Back - - + + Use card back from card style - - + + Use custom card back picture: - - + + Play sound effects - - + + Sound Volume: - - + + 10 - - + + Sound Categories - - - - Play game actions sounds like "check", "call", "raise" - - - Play lobby chat notifications + Play game actions sounds like "check", "call", "raise" + Play lobby chat notifications + + + + + Play network/internet game notifications like "player joined the game" - - + + Server Password: - - + + Allow spectators to watch the game - + OK - + Local Game Settings - - + + Number of players: - - - - + + + + Start Cash: - - - - - - - - + + + + + + + + $ - - - - + + + + First small blind: - - - - + + + + Raise blinds: - - - - - - - - + + + + + + + + Every: - - - - + + + + hands - - - - + + + + minutes - - - - + + + + Raise mode: - - - - + + + + Always double blinds - - - - + + + + Manual blinds order: - - - - + + + + Edit ... - - + + Game Speed: - - - - Pause between hands (press "start" button to go on) - - + Pause between hands (press "start" button to go on) + + + + + Show game settings dialog on every new game - + Network Game Settings - - + + Maximum number of players: - - + + Timeout for player action: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! - - - - + + + + s - - + + Network Server Settings - - - - + + + + Server Port: - - - - - - Use SCTP - - - - - - - - Use IPv6 - - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - - + Use SCTP + + + + + + + + Use IPv6 + + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4194,61 +4263,61 @@ p, li { white-space: pre-wrap; } - - + + Server Address: - - + + Use password for private game: - - + + Computer Engine - - + + Opponent 6: - - + + Opponent 5: - - + + Opponent 4: - - + + Opponent 3: - - + + Opponent 2: - - + + Opponent 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4256,50 +4325,50 @@ p, li { white-space: pre-wrap; } - - + + Enable/Disable Logging - - + + Log File Directory: - - + + Write log after every: - - + + action (high frequent disc access) - - + + hand (medium disc access) - - + + game (low disc access) - + Log Messages - + Player Nicks/Avatars @@ -4314,53 +4383,53 @@ p, li { white-space: pre-wrap; } - - + + Play blind raise notification - - + + Automatic Server Configuration URL - - + + Serverlist Address: - - + + Manual Server Configuration - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -4395,20 +4464,20 @@ p, li { white-space: pre-wrap; } - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: - + Style @@ -4418,33 +4487,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style - - - - - - Add ... - - + Add ... + + + + + + + Remove - - - - + + + + Preview - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4453,8 +4522,8 @@ p, li { white-space: pre-wrap; } - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4463,7 +4532,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4475,96 +4544,96 @@ p, li { white-space: pre-wrap; } - - + + Delay between hands: - - + + Server - - + + Game - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4573,20 +4642,20 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: - - + + Opponent 8: - - + + Opponent 9: @@ -4594,359 +4663,359 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error - + The entered flipside picture doesn't exist. Please enter an valid picture! - - + + The log file directory doesn't exist. Please select an valid directory! - + Language Changed - + You have changed application language to %1. Please restart PokerTH to load new language! - + Select your flipside picture - + Images (*.png *.jpg *.gif) - + Open Directory - - + + Blinds Error - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. - + The entered server list address is not a valid URL. Please enter a valid server list address! - + Afrikaans - + Bulgarian - + Catalan - + Chinese - + Czech - + Danish - + Dutch - + English - + Finnish - + French - + Galician - + German - + Greek - + Hungarian - + Italian - + Japanese - + Lithuania - + Norwegian - + Polish - + Portuguese-Brazilian - + Portuguese-Portuguese - + Russian - + Scottish Gaelic - + Slovak - + Spanish - + Swedish - + Tamil - + Turkish - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5011,12 +5080,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error - + You should not kick yourself from this game! diff --git a/ts/pokerth_af.ts b/ts/pokerth_af.ts index 187d7107..ba35d571 100644 --- a/ts/pokerth_af.ts +++ b/ts/pokerth_af.ts @@ -413,22 +413,60 @@ Bevestig asseblief dat jy 'n geldige PokerTH-loglêer oplaai. + Unignore Player + + + + Report inappropriate avatar Rapporteer onvanpaste avatar - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Jy sal nie meer kletsboodskappe of speluitnodigings van hierdie gebruiker kry nie.<br>Wil jy regtig speler <b>%1</b> op die ignoreerlys sit? - - + + + PokerTH - Question PokerTH - Vraag - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? Is jy seker jy wil die avatar van "%1" as onvanpas rapporteer? @@ -1374,25 +1412,25 @@ p, li { white-space: pre-wrap; } Spel begin. Wag asseblief... - + Joining a private Game By 'n privaat spel aansluit - + You are about to join a private game. Please enter the password! Jy gaan nou by 'n privaat spel aansluit. Tik asseblief die wagwoord in! - + open maak oop - - - - + + + + Game Info Spelinfo @@ -1403,36 +1441,36 @@ p, li { white-space: pre-wrap; } - - + + Game Spel - - + + Players Spelers - - + + State Staat - - + + P P - - + + Available Players Beskikbare spelers @@ -1447,145 +1485,145 @@ p, li { white-space: pre-wrap; } Ignoreer speler - + Player infos ... Spelers se info... - + Report inappropriate game name Rapporteer onvanpaste spelnaam - - - + + + Standard Standaard - - - + + + Registered players only Net geregistreerde spelers - - - + + + Invited players only Net genooide spelers - - - + + + Ranking game Gradeerspel - - + + T T - - - + + + sec (action) sek (aksie) - - - + + + sec (hand delay) sek (handvertraging) - + running aan die gang - - + + running games: %1 spelle aan die gang: %1 - - + + open games: %1 oop spelle: %1 - - + + Players (%1) Spelers (%1) - - - + + + Spectators (%1) Toeskouers (%1) - + Invite %1 Nooi %1 - + Ignore %1 Ignoreer %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 het %1 uitgenooi na %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 het die uitnodiging na %2 van die hand gewys.</span>; - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 kan nie by %2 aansluit nie want hy of sy is besig.</span>; - - + + The game will start in<br><b>%1</b> seconds. Die spel begin oor<br><b>%1</b> sekondes. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Jy het by 'n spel aangesluit met die tipe "nooi-alleen". Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers te regskliek. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Jy is deur <b>%2</b> na die spel <b>%1</b> genooi.<br>Wil jy by daardie spel aansluit? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Jy sal nie meer kletsboodskappe of speluitnodigings van hierdie gebruiker kry nie.<br>Wil jy regtig speler <b>%1</b> op jou ignoreerlys sit? - - + + connected players: %1 gekoppelde spelers: %1 @@ -1601,75 +1639,80 @@ Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers t - - + + Time Tyd - - + + Unignore player + + + + + Show player stats Wys spelerstatistiek - - + + Admin action ... Adminhandeling... - + Total kickban Totale skopverban - + Close game Maak spel toe - + hands hande - + minutes minute - + double blinds dubbelblindes - + manual blinds order handmatige blindesvolgorde - + Server Error Bedienerfout - + You should not kick yourself from this game! Jy moenie jouself uit hierdie spel skop nie! - + search for player ... soek vir speler... - + Chat is only available to registered players. Klets werk net vir geregistreerde spelers. - + Invite player ... Nooi speler... @@ -1679,1258 +1722,1274 @@ Nooi gerus ander spelers uit deur op hul kenname in die lys beskikbare spelers t Ignoreer speler... - + + Unignore %1 + + + + + Unignore player ... + + + + %1 is playing in "%2". %1 speel in "%2". - + %1 is not playing at the moment. %1 speel nie op die oomblik nie. - - + + PokerTH - Info Message PokerTH - Inligtingsboodskap - - - - + + + + + PokerTH - Question PokerTH - Vraag - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Afghanistan Afghanistan - + ALand Islands Alandeilande - + Albania Albanië - + Algeria Algerië - + American Samoa Amerikaanse Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarktika - + Antigua And Barbuda Antigua en Barbuda - + Argentina Argentinië - + Armenia Armenië - + Aruba Aruba - + Australia Australië - + Austria Oostenryk - + Azerbaijan Azerbeidjans - + Bahamas Bahamas - + Bahrain Bahrein - + Bangladesh Bangladesj - + Barbados Barbados - + Belarus Belarus - + Belgium België - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhoetan - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnië en Herzegowina - + Botswana Botswana - + Bouvet Island Bouveteiland - + Brazil Brasilië - + British Indian Ocean Territory Britse Indiese Oseaangebied - + Brunei Darussalam Broenei Darussalam - + Bulgaria Bulgarye - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodja - + Cameroon Kameroen - + Canada Kanada - + Cape Verde Kaap Verde - + Cayman Islands Kaaimaneilande - + Central African Republic Sentraal-Afrikaanse Republiek - + Chad Tsjad - + Chile Chili - + China Sjina - + Christmas Island Christmaseiland - + Cocos (Keeling) Islands Kokoseilande - + Colombia Colombia - + Comoros Comore - + Congo Kongo - + Congo, The Democratic Republic Of The Kongo, Demokratiese Republiek van die - + Cook Islands Cookeilande - + Costa Rica Costa Rica - + Cote D'Ivoire Ivoorkus - + Croatia Kroasië - + Cuba Kuba - + Cyprus Ciprus - + Czech Republic Tsjeggiese Republiek - + Denmark Denemarke - + Djibouti Djiboeti - + Dominica Dominica - + Dominican Republic Dominikaanse Republiek - + Ecuador Ecuador - + Egypt Egipte - + El Salvador El Salvador - + Equatorial Guinea Ekwatoriaal-Guinee - + Eritrea Eritrea - + Estonia Estland - + Ethiopia Etiopië - + Falkland Islands (Malvinas) Falklandeilande - + Faroe Islands Faroër-eilande - + Fiji Fidji - + Finland Finland - + France Frankryk - + French Guiana Frans-Guinee - + French Polynesia Frans-Polinesië - + French Southern Territories Franse Suidelike Gebiede - + Gabon Gaboen - + Gambia Gambië - + Georgia Georgië - + Germany Duitsland - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Griekeland - + Greenland Groenland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinee - + Guinea-Bissau Guinee-Bissau - + Guyana Guyana - + Haiti Haïti - + Heard Island And Mcdonald Islands Heard- en McDonald-eilande - + Holy See (Vatican City State) Vatikaanstad - + Honduras Honduras - + Hong Kong Hongkong - + Hungary Hongarye - + Iceland Ysland - + India Indië - + Indonesia Indonesië - + Iran, Islamic Republic Of Iran, Islamitiese Republiek van - + Iraq Irak - + Ireland Ierland - + Isle Of Man Eiland Man - + Israel Israel - + Italy Italië - + Jamaica Jamaika - + Japan Japan - + Jersey Jersey - + Jordan Jordanië - + Kazakhstan Kazakhstan - + Kenya Kenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Korea, Demokratiese Volksrepubliek van - + Korea, Republic Of Korea, Republiek van - + Kuwait Koeweit - + Kyrgyzstan Kirgisistan - + Lao People'S Democratic Republic Lao Volks- Demokratiese Republiek - + Latvia Letland - + Lebanon Libanon - + Lesotho Lesotho - + Liberia Liberië - + Libyan Arab Jamahiriya Libië - + Liechtenstein Liechtenstein - + Lithuania Litaus - + Luxembourg Luxemburg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Masedonië (FYROM) - + Madagascar Madagaskar - + Malawi Malawi - + Malaysia Maleisië - + Maldives Maledive - + Mali Mali - + Malta Malta - + Marshall Islands Marshalleilande - + Martinique Martinique - + Mauritania Mauritanië - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Meksiko - + Micronesia, Federated States Of Mikronesië, Federale State van - + Moldova, Republic Of Moldowa, Republiek van - + Monaco Monaco - + Mongolia Mongolië - + Montserrat Montserrat - + Morocco Marokko - + Mozambique Mosambiek - + Myanmar Birma - + Namibia Namibië - + Nauru Nauru - + Nepal Nepal - + Netherlands Nederland - + Netherlands Antilles Nederlandse Antille - + New Caledonia Nieu-Caledonië - + New Zealand Nieu-Seeland - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigerië - + Niue Niue - + Norfolk Island Norfolkeiland - + Northern Mariana Islands Noordelike Marianaeilande - + Norway Noorweë - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Palesteinse Gebied, Besette - + Panama Panama - + Papua New Guinea Papoea-Nieu-Guinee - + Paraguay Paraguay - + Peru Peru - + Philippines Filippyne - + Pitcairn Pitcairn - + Poland Pole - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Katar - + Reunion Reunion - + Romania Roemenië - + Russian Federation Russiese Federasie - + Rwanda Rwanda - + Saint Helena Sint Helena - + Saint Kitts And Nevis Sint Kitts en Nevis - + Saint Lucia Sint Lucia - + Saint Pierre And Miquelon Sint Pierre en Miquelon - + Saint Vincent And The Grenadines Sint Vincent en die Grenadine - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe Sao Tome en Principe - + Saudi Arabia Saoedi-Arabië - + Senegal Senegal - + Serbia And Montenegro Serwië en Montenegro - + Seychelles Seychelle - + Sierra Leone Sierra Leone - + Singapore Singapoer - + Slovakia Slowakye - + Slovenia Slowenië - + Solomon Islands Salomonseilande - + Somalia Somalië - + South Africa Suid-Afrika - + South Georgia And The South Sandwich Islands Suid-Georgië en die Suid-Sandwich-eilande - + Spain Spanje - + Sri Lanka Sri Lanka - + Sudan Soedan - + Suriname Suriname - + Svalbard And Jan Mayen Svalbard en Jan Mayen - + Swaziland Swaziland - + Sweden Swede - + Switzerland Switserland - + Syrian Arab Republic Sirië, Arabiese Republiek van - + Taiwan, Province Of China Taiwan (Republiek van Sjina) - + Tajikistan Tadjikistan - + Tanzania, United Republic Of Tanzanië, Verenigde Republiek van - + Thailand Thailand - + Timor-Leste Oos-Timor - + Togo Togo - + Tokelau Tokelau - + Tonga Tongaans - + Trinidad And Tobago Trinidad en Tobago - + Tunisia Tunisië - + Turkey Turkye - + Turkmenistan Turkmenistan - + Turks And Caicos Islands Turkse en Caicos-eilande - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Oekraïne - + United Arab Emirates Verenigde Arabiese Emirate - + United Kingdom Verenigde Koninkryk - + United States Verenigde State - + United States Minor Outlying Islands Verenigde State se Klein Buite-eilande - + Uruguay Uruguay - + Uzbekistan Oesbekistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Viëtnam - + Virgin Islands, British Britse Maagde-eilande - + Virgin Islands, U.S. Amerikaanse Maagde-eilande - + Wallis And Futuna Wallis en Futuna - + Western Sahara Wes-Sahara - + Yemen Jemen - + Zambia Zambië - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Is jy seker jy wil die spelnaam "%1" as onvanpas rapporteer? - + Are you sure you want to close the game: "%1"? Is jy seker jy wil die naam "%1" toemaak? - + Are you sure you want to total kickban the player: "%1"? Is jy seker jy wil die speler "%1" totaal skopverban? @@ -3891,7 +3950,7 @@ Tik asseblief 'n geldige prent in! Netwerk-/internetspel - + Switch keyboard focus to bet-input-field if it's your turn Skakel sleutelbordfokus oor na wed-intikveld as dit jou beurt is @@ -3899,14 +3958,14 @@ Tik asseblief 'n geldige prent in! - + Sound Klank - + Factory Settings Fabrieksinstellings @@ -3923,356 +3982,366 @@ Tik asseblief 'n geldige prent in! Deaktiveer splatskerm aan begin - + Show country flag in the corner of avatar Wys landsvlag in hoek van avatar - + Activate the "accidentally call after big raise" blocker Aktiveer die blokker vir "per abuis roep ná groot verhoging" - + Do not hide avatars of players which are on the ignore list Moenie avatars van spelers versteek wat op die ignoreerlys isnie - + Disable emoticons in the chat Deaktiveer emotikone in die klets - - + + Show network state color on the avatar + + + + + Game Table Speltafel - - - - + + + + Description Beskrywing - - - - + + + + Maintainer Onderhouer - - - + + + State Staat - - + + Card Deck Kaartpak - - + + Card Back Kaartagterkant - - + + Use card back from card style Gebruik kaartagterkant van kaartstyl - - + + Use custom card back picture: Gebruik eie kaartagterkant-prent: - - + + Play sound effects Speel klankeffekte - - + + Sound Volume: Klankvolume: - - + + 10 10 - - + + Sound Categories Klankkategorieë - - + + Play game actions sounds like "check", "call", "raise" Speel spelaksieklanke soos "inhou", "roep", "verhoog" - - + + Play lobby chat notifications Speel voorkamerklets-berigte - - + + Play network/internet game notifications like "player joined the game" Speel netwerk/internetspel-berigte soos "speler het by spel aangesluit" - - + + Server Password: Bedienerwagwoord: - - + + Allow spectators to watch the game Laat toeskouers toe om die spel te kyk - + OK Oukei - + Local Game Settings Plaaslikespel-instellings - - + + Number of players: Getal spelers: - - - - + + + + Start Cash: Begingeld: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Eerste klein blinde: - - - - + + + + Raise blinds: Verhoog blindes: - - - - - - - - + + + + + + + + Every: Elke: - - - - + + + + hands hande - - - - + + + + minutes minute - - - - + + + + Raise mode: Verhoogmodus: - - - - + + + + Always double blinds Blindes altyd verdubbel - - - - + + + + Manual blinds order: Handmatige blindesvolgorde: - - - - + + + + Edit ... Redigeer... - - + + Game Speed: Spelspoed: - - + + Pause between hands (press "start" button to go on) Wag tussen hande (druk "begin"-knop om voort te gaan) - - + + Show game settings dialog on every new game Wys spelinstellings-dialoog by elke nuwe spel - + Network Game Settings Netwerkspel-instellings - - + + Maximum number of players: Maksimum getal spelers: - - + + Timeout for player action: Uittelling vir speleraksie: - - + + Reset all settings to default ... Stel alle instellings terug na verstek... - - + + Note: You can not reset all settings to default during a running game! Let wel: Jy kan nie tydens 'n aktiewe spel alle instellings terugstel na verstek nie! - - - - + + + + s s - - + + Network Server Settings Netwerkbediener-instellings - - - - + + + + Server Port: Bedienerpoort: - - - - - - Use SCTP - Gebruik SCTP - - - - - - - Use IPv6 - Gebruik IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">Wat is dit?</a> - + Use SCTP + Gebruik SCTP + + + + + + + Use IPv6 + Gebruik IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">Wat is dit?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Wat is dit?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings Internetspel-instellings - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4283,61 +4352,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Let wel: verstek-</span><span style=" font-weight:600; font-style:italic;">spelinstellings</span><span style=" font-style:italic;"> soos "Maksimum getal spelers", "Begingeld" en "Klein blinde" sal gebruik word </span><span style=" font-weight:600; font-style:italic;">uit die netwerkspel-instellings.</span></p></body></html> - - + + Server Address: Bedieneradres: - - + + Use password for private game: Gebruik wagwoord vir private spel: - - + + Computer Engine Rekenaarenjin - - + + Opponent 6: Opponent 6: - - + + Opponent 5: Opponent 5: - - + + Opponent 4: Opponent 4: - - + + Opponent 3: Opponent 3: - - + + Opponent 2: Opponent 2: - - + + Opponent 1: Opponent 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4348,50 +4417,50 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Let wel: Beste avatargehalte met prentratio soos </span><span style=" font-weight:600; font-style:italic;">width=50, height=50.</span></p></body></html> - - + + Enable/Disable Logging Aktiveer/deaktiveer logskryf - - + + Log File Directory: Loglêer-gids: - - + + Write log after every: Skryf loglêer na elke: - - + + action (high frequent disc access) aksie (baie gereelde skyftoegang) - - + + hand (medium disc access) hand (medium skyftoegang) - - + + game (low disc access) spel (min skyftoegang) - + Log Messages Logboodskappe - + Player Nicks/Avatars Speler-kenname/avatars @@ -4406,53 +4475,53 @@ p, li { white-space: pre-wrap; } Wys linker nutskas - - + + Play blind raise notification Speel blindeverhoog-berig - - + + Automatic Server Configuration URL URL vir outomatiese bedieneropstelling - - + + Serverlist Address: Bedienerlys-adres: - - + + Manual Server Configuration Handmatige bedieneropstelling - + Human Player: Mensspeler: - + (This nick will also be used for the online game login) (Hierdie kennaam sal ook gebruik word vir die aanlynspel-aanmeld) - + Note: Best avatar quality with image ratio like width=50, height=50. Let wel: Beste avatargehalte met prentratio soos wydte=50, hoogte=50. - - + + Store log files for: Stoor loglêers vir: - - + + Day(s) Dag(e) @@ -4487,20 +4556,20 @@ p, li { white-space: pre-wrap; } Wys kaartkansmonitor - + Note: Best quality with image ratio like width=48, height=76. Let wel: Beste avatargehalte met prentratio soos wydte=48, hoogte=76. - - + + Avatar Server: Avatarbediener: - + Style Styl @@ -4510,33 +4579,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style Moenie pokerwoorde soos check, call en raise op die speltafelstyl vertaal nie - - - - - - Add ... - Byvoeg... - + Add ... + Byvoeg... + + + + + + Remove Verwyder - - - - + + + + Preview - Information: Voorskou - inligting: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4549,8 +4618,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Kry nuwe PokerTH-speltafelstyle...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4563,7 +4632,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Kry nuwe PokerTH-kaartpakstyle...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4582,96 +4651,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Let wel: Beste avatargehalte met prentratio soos </span><span style=" font-weight:600; font-style:italic;">width=48, height=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Wagtyd tussen hande: - - + + Server Bediener - - + + Game Spel - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Let wel: Verstek-spelinstellings soos "Maksimum getal spelers", "Begingeld" en "Klein blinde" sal gebruik word uit die netwerkspel-instellings. - - + + Default game name: Verstek spelnaam: - - + + Default game type: Verstek speltipe: - - + + Standard Standaard - - + + Registered players only Net geregistreerde spelers - - + + Invited players only Net genooide spelers - - + + Ranking game Gradeerspel - + Show lobby chat Wys voorkamerklets - - + + Automatically leave the table after the game finished Verlaat tafel outomaties sodra spel afgehandel is - - + + Ignored Players Geïgnoreerde spelers - - + + Player Speler - - + + Remove Player Verwyder speler - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4684,20 +4753,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Mensspeler:<br /><span style=" font-style:italic;">(Hierdie kennaam sal ook gebruik word vir die aanlynspel-aanmeld)</span></p></body></html> - - + + Opponent 7: Opponent 7: - - + + Opponent 8: Opponent 8: - - + + Opponent 9: Opponent 9: @@ -4705,65 +4774,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Instellingsfout - + The entered flipside picture doesn't exist. Please enter an valid picture! Die ingetikte omkeerkantprent bestaan nie. Tik asseblief 'n geldige prent in! - - + + The log file directory doesn't exist. Please select an valid directory! Die loglêer-gids bestaan nie. Kies asseblief 'n geldige gids! - + Language Changed Taal verander - + You have changed application language to %1. Please restart PokerTH to load new language! Jy het die program se taal na %1 verander. Herbegin asseblief PokerTH om nuwe taal te laai. - + Select your flipside picture Kies jou omkeerkantprent - + Images (*.png *.jpg *.gif) Prente (*.png *.jpg *.gif) - + Open Directory Maak gids oop - - + + Blinds Error Blindes-fout - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -4772,7 +4841,7 @@ is kleiner as huidige eerste-klein-blinde! Hierdie eerste-klein-blinde-waarde sal na die maksimum toegelate waarde gestel word. - + The entered server list address is not a valid URL. Please enter a valid server list address! Die ingetikte bedienerlysadres is nie 'n geldige URL nie. @@ -4924,152 +4993,152 @@ Tik asseblief 'n geldige bedienerlysadres in. Viëtnamees - + The opponent names are not unique. Please choose different names for each Opponent! Die opponentname is nie uniek nie. Kies asseblief verskillende name vir die opponente! - + Settings Information Instellingsinligting - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Jy het die loglêer-gids verander. Herbegin asseblief PokerTH om die nuwe gids vir loglêers te laai! - - + + Maintainer Name Onderhouer se naam - - + + Maintainer EMail Onderhouer se posadres - - + + Create Date Skep datum - + Windows Behaviour Venstergedrag - + scaleable vergroot/kleinbaar - + fixed vasgestel - + Minimum Size Minimumgrootte - + Maximum Size Maksimumgrootte - + Fixed Size Vaste grootte - + State Staat - + Please select your game table style Kies asseblief jou speltafelstyl - + PokerTH game table styles (*.xml) PokerTH-speltafelstyle (*.xml) - + Game Table Style Error Speltafelstyl-fout - + Selected game table style file is already in the list. Please select another one to add! Gekose speltafelstyl-lêer is reeds in die lys. Kies asseblief 'n ander om by te voeg. - + Game Table Style File Error Speltafelstyl-lêerfout - + Could not load game table style file correctly. Style will not be placed into list! Kon nie speltafelstyl-lêer korrek laai nie. Styl sal nie by lys gevoeg word nie. - + Please select your card deck style Kies asseblief jou kaartpakstyl. - + PokerTH card deck styles (*.xml) PokerTH-kaartpakstyle (*.xml) - + Card Deck Style Error Kaartpakstyl-fout - + Selected card deck style file is already in the list. Please select another one to add! Gekose kaartpakstyl-lêer is reeds in die lys. Kies asseblief 'n ander om by te voeg. - + Card Deck Style File Error Kaartpakstyl-lêerfout - + Could not load card deck style file correctly. Style will not be placed into list! Kon nie kaartpakstyl-lêer korrek laai nie. Styl sal nie by lys gevoeg word nie. - + PokerTH - Settings PokerTH - Instellings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Let op! Dit sal al jou persoonlike instellings skrap en PokerTH verlaat! diff --git a/ts/pokerth_bg.ts b/ts/pokerth_bg.ts index 8bfe86eb..56b5ef69 100644 --- a/ts/pokerth_bg.ts +++ b/ts/pokerth_bg.ts @@ -308,106 +308,106 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -431,22 +431,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + + PokerTH - Question - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -652,127 +690,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Относно PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -889,12 +927,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Персонализиран ред за входа - + You cannot set more than 30 manual blinds. Не можете да сложите повече от 30 персонализирани входа. @@ -928,46 +966,46 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Не можете да се присъедините към лобито на Интернет игра с псевдонима "Жив играч". Моля изберете друг псевдоним. - - - + + + Nick name: - + Your player name is already used by another player. Please choose a different name. Друг играч ползва вече това име. Моля изберете друго име. - + The player name is too short, too long or invalid. Please choose another one. Името ви на играч е много късо, много дълго или невалидно. Моля изберете друго. - + There is already a game with your chosen game name. Please choose another one! - + There is a forbidden word in your chosen game name. Please choose another one! - - + + Game name: @@ -1006,27 +1044,27 @@ Please choose another one! connectToServerDialogImpl - + Resolving address... Разрешаване на адреса... - + Connecting to server... Свързване към сървъра... - + Starting session... Стартиране на сесията... - + Connection established! Връзката осъществена! - + Reading server list... @@ -1177,7 +1215,7 @@ Please choose another one! - + %1's game Играта на %1 @@ -1525,7 +1563,7 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... Стартиране на играта. Моля изчакайте ... @@ -1534,46 +1572,46 @@ p, li { white-space: pre-wrap; } Играта на %1 - + Joining a private Game Присъединяване към частна игра - + You are about to join a private game. Please enter the password! Присъединявате се към частна игра. Моля вкарайте паролата! - + open отвори - - - - + + + + Game Info Информация за играта - - + + Game Игра - - + + Players Играчи - - + + State Статус @@ -1583,15 +1621,15 @@ p, li { white-space: pre-wrap; } - - + + P - - + + Available Players Свободни играчи @@ -1606,121 +1644,126 @@ p, li { white-space: pre-wrap; } - + Player infos ... - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - + + T - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - + Spectate - - + + Time - - - Show player stats + + Unignore player - + + Show player stats + + + + + Admin action ... - + Total kickban - + Close game - + running работи - - + + running games: %1 течящи игри: %1 - - + + open games: %1 отворени игри: %1 - - + + Players (%1) - - - + + + Spectators (%1) @@ -1730,58 +1773,58 @@ p, li { white-space: pre-wrap; } - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -1790,48 +1833,48 @@ Feel free to invite other players by right-clicking on their nick in the availab играчи в чата: %1 - - + + connected players: %1 свързани играчи: %1 - + hands ръце - + minutes минути - + double blinds удвои входа - + manual blinds order персонализиран ред за входа - + Server Error Грешка със сървъра - + You should not kick yourself from this game! Не би трябвало да игонвате себе си от тази игра! - + search for player ... - + Chat is only available to registered players. @@ -1841,1263 +1884,1279 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Ignore player ... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + - + + PokerTH - Question - - Afghanistan - - - - - ALand Islands - - - - - Albania - - - - - Algeria - - - - - American Samoa - - - - - Andorra - - - - - Angola - - - - - Anguilla - - - - - Antarctica - - - - - Antigua And Barbuda - - - - - Argentina - - - - - Armenia - - - - - Aruba - - - - - Australia - - - - - Austria - - - - - Azerbaijan - - - - - Bahamas + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? - Bahrain + Afghanistan - Bangladesh + ALand Islands - Barbados + Albania - Belarus + Algeria - Belgium + American Samoa - Belize + Andorra - Benin + Angola - Bermuda + Anguilla - Bhutan + Antarctica - Bolivia + Antigua And Barbuda - Bosnia And Herzegovina + Argentina - Botswana + Armenia - Bouvet Island + Aruba - Brazil + Australia - British Indian Ocean Territory + Austria - Brunei Darussalam + Azerbaijan - Bulgaria + Bahamas - Burkina Faso + Bahrain - Burundi + Bangladesh - Cambodia + Barbados - Cameroon + Belarus - Canada + Belgium - Cape Verde + Belize - Cayman Islands + Benin - Central African Republic + Bermuda - Chad + Bhutan - Chile + Bolivia - China + Bosnia And Herzegovina - Christmas Island + Botswana - Cocos (Keeling) Islands + Bouvet Island - Colombia + Brazil - Comoros + British Indian Ocean Territory - Congo + Brunei Darussalam - Congo, The Democratic Republic Of The + Bulgaria - Cook Islands + Burkina Faso - Costa Rica + Burundi - Cote D'Ivoire + Cambodia - Croatia + Cameroon - Cuba + Canada - Cyprus + Cape Verde - Czech Republic + Cayman Islands - Denmark + Central African Republic - Djibouti + Chad - Dominica + Chile - Dominican Republic + China - Ecuador + Christmas Island - Egypt + Cocos (Keeling) Islands - El Salvador + Colombia - Equatorial Guinea + Comoros - Eritrea + Congo - Estonia + Congo, The Democratic Republic Of The - Ethiopia + Cook Islands - Falkland Islands (Malvinas) + Costa Rica - Faroe Islands + Cote D'Ivoire - Fiji + Croatia - Finland + Cuba - France + Cyprus - French Guiana + Czech Republic - French Polynesia + Denmark - French Southern Territories + Djibouti - Gabon + Dominica - Gambia + Dominican Republic - Georgia + Ecuador - Germany + Egypt - Ghana + El Salvador - Gibraltar + Equatorial Guinea - Greece + Eritrea - Greenland + Estonia - Grenada + Ethiopia - Guadeloupe + Falkland Islands (Malvinas) - Guam + Faroe Islands - Guatemala + Fiji - Guernsey + Finland - Guinea + France - Guinea-Bissau + French Guiana - Guyana + French Polynesia - Haiti + French Southern Territories - Heard Island And Mcdonald Islands + Gabon - Holy See (Vatican City State) + Gambia - Honduras + Georgia - Hong Kong + Germany - Hungary + Ghana - Iceland + Gibraltar - India + Greece - Indonesia + Greenland - Iran, Islamic Republic Of + Grenada - Iraq + Guadeloupe - Ireland + Guam - Isle Of Man + Guatemala - Israel + Guernsey - Italy + Guinea - Jamaica + Guinea-Bissau - Japan + Guyana - Jersey + Haiti - Jordan + Heard Island And Mcdonald Islands - Kazakhstan + Holy See (Vatican City State) - Kenya + Honduras - Kiribati + Hong Kong - Korea, Democratic People'S Republic Of + Hungary - Korea, Republic Of + Iceland - Kuwait + India - Kyrgyzstan + Indonesia - Lao People'S Democratic Republic + Iran, Islamic Republic Of - Latvia + Iraq - Lebanon + Ireland - Lesotho + Isle Of Man - Liberia + Israel - Libyan Arab Jamahiriya + Italy - Liechtenstein + Jamaica - Lithuania + Japan - Luxembourg + Jersey - Macao + Jordan - Macedonia, The Former Yugoslav Republic Of + Kazakhstan - Madagascar + Kenya - Malawi + Kiribati - Malaysia + Korea, Democratic People'S Republic Of - Maldives + Korea, Republic Of - Mali + Kuwait - Malta + Kyrgyzstan - Marshall Islands + Lao People'S Democratic Republic - Martinique + Latvia - Mauritania + Lebanon - Mauritius + Lesotho - Mayotte + Liberia - Mexico + Libyan Arab Jamahiriya - Micronesia, Federated States Of + Liechtenstein - Moldova, Republic Of + Lithuania - Monaco + Luxembourg - Mongolia + Macao - Montserrat + Macedonia, The Former Yugoslav Republic Of - Morocco + Madagascar - Mozambique + Malawi - Myanmar + Malaysia - Namibia + Maldives - Nauru + Mali - Nepal + Malta - Netherlands + Marshall Islands - Netherlands Antilles + Martinique - New Caledonia + Mauritania - New Zealand + Mauritius - Nicaragua + Mayotte - Niger + Mexico - Nigeria + Micronesia, Federated States Of - Niue + Moldova, Republic Of - Norfolk Island + Monaco - Northern Mariana Islands + Mongolia - Norway + Montserrat - Oman + Morocco - Pakistan + Mozambique - Palau + Myanmar - Palestinian Territory, Occupied + Namibia - Panama + Nauru - Papua New Guinea + Nepal - Paraguay + Netherlands - Peru + Netherlands Antilles - Philippines + New Caledonia - Pitcairn + New Zealand - Poland + Nicaragua - Portugal + Niger - Puerto Rico + Nigeria - Qatar + Niue - Reunion + Norfolk Island - Romania + Northern Mariana Islands - Russian Federation + Norway - Rwanda + Oman - Saint Helena + Pakistan - Saint Kitts And Nevis + Palau - Saint Lucia + Palestinian Territory, Occupied - Saint Pierre And Miquelon + Panama - Saint Vincent And The Grenadines + Papua New Guinea - Samoa + Paraguay - San Marino + Peru - Sao Tome And Principe + Philippines - Saudi Arabia + Pitcairn - Senegal + Poland - Serbia And Montenegro + Portugal - Seychelles + Puerto Rico - Sierra Leone + Qatar - Singapore + Reunion - Slovakia + Romania - Slovenia + Russian Federation - Solomon Islands + Rwanda - Somalia + Saint Helena - South Africa + Saint Kitts And Nevis - South Georgia And The South Sandwich Islands + Saint Lucia - Spain + Saint Pierre And Miquelon - Sri Lanka + Saint Vincent And The Grenadines - Sudan + Samoa - Suriname + San Marino - Svalbard And Jan Mayen + Sao Tome And Principe - Swaziland + Saudi Arabia - Sweden + Senegal - Switzerland + Serbia And Montenegro - Syrian Arab Republic + Seychelles - Taiwan, Province Of China + Sierra Leone - Tajikistan + Singapore - Tanzania, United Republic Of + Slovakia - Thailand + Slovenia - Timor-Leste + Solomon Islands - Togo + Somalia - Tokelau + South Africa - Tonga + South Georgia And The South Sandwich Islands - Trinidad And Tobago + Spain - Tunisia + Sri Lanka - Turkey + Sudan - Turkmenistan + Suriname - Turks And Caicos Islands + Svalbard And Jan Mayen - Tuvalu + Swaziland - Uganda + Sweden - Ukraine + Switzerland - United Arab Emirates + Syrian Arab Republic - United Kingdom + Taiwan, Province Of China - United States + Tajikistan - United States Minor Outlying Islands + Tanzania, United Republic Of - Uruguay + Thailand - Uzbekistan + Timor-Leste - Vanuatu + Togo - Venezuela + Tokelau - Viet Nam + Tonga - Virgin Islands, British + Trinidad And Tobago - Virgin Islands, U.S. + Tunisia - Wallis And Futuna + Turkey - Western Sahara + Turkmenistan - Yemen + Turks And Caicos Islands - Zambia + Tuvalu + Uganda + + + + + Ukraine + + + + + United Arab Emirates + + + + + United Kingdom + + + + + United States + + + + + United States Minor Outlying Islands + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Viet Nam + + + + + Virgin Islands, British + + + + + Virgin Islands, U.S. + + + + + Wallis And Futuna + + + + + Western Sahara + + + + + Yemen + + + + + Zambia + + + + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3396,19 +3455,19 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Спри @@ -3421,7 +3480,7 @@ Feel free to invite other players by right-clicking on their nick in the availab Ctrl+N за да започнете нова игра - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Тексас Холдем покер мотора с отворен код @@ -3440,23 +3499,23 @@ Please choose another one. F1 - Всичко вътре | F2 - Заложи/Наддай | F3 - Приеми/Орговори | F4 - Оттегли се - - - - - - - - + + + + + + + + Start Започни - - - - - + + + + + Lobby Лоби @@ -3663,104 +3722,104 @@ Please choose a different name. Автоматичен метод е настроен: Приемай или се оттегляй. - - + + Chat Чат - + Closing PokerTH during network game Затваряне на PokerTH по време на игра в мрежа - + You are the hosting server. Do you want to close PokerTH anyway? Вие сте сървъра домакин. Искате ли да затворите PokerTH все пак ? - + PokerTH - Internet Game Message PokerTH - Съобщение от интернет игра - + Attention! Do you really want to leave the current game and go back to the lobby? Внимание! Наистина ли искате да напуснете играта и да се върнете в лобите ? - - + + Chance - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. + - Chat is only available to registered players. - + Spectators @@ -3818,7 +3877,7 @@ and go back to the lobby? internetGameLoginDialogImpl - + Create new user account @@ -3957,10 +4016,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Грешка при зареждането на профила на сървъра @@ -3971,45 +4030,45 @@ p, li { white-space: pre-wrap; } - - - - + + + + Could not load server-profiles-file: %1 - + Save Server Profile Error Грешка при запазването на сървър профила - + A profile with the name: %1 already exists. Would you like to overwrite ? Профил с името: %1 вече съществува. Искате ли да запишете новия върху вече съществуващия ? - + Read Server-Profile List Error Грешка при четенето на листата с прфилите на сървърите - + Could not read server-profiles list Четенето на файла с листата с прфилите на сървърите е невъзможно - - + + Save Server-Profile-File Error Грешка при запазването на листата с прфилите на сървърите - - + + Could not save server-profiles-file: %1 @@ -4490,12 +4549,12 @@ and go back to the lobby? manualBlindsOrderDialogImpl - + Manual Blinds Order Персонализиран ред на входа - + You cannot set more than 30 manual blinds. Не можете да сложите повече от 30 персонализирани входа. @@ -4622,38 +4681,38 @@ and go back to the lobby? selectAvatarDialogImpl - - - + + + Avatar File Error Грешка във файла на аватара - + Please select an avatar from the list! Моля изберете аватар от листата! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Размера на файла с избраната картинка е много голям (максимално 30кб) Моля изберете по-малка картинка! - + The entered avatar picture doesn't exist. Please enter an valid picture! Въведената картинка за аватар не съществува Моля изберете валидна картинка за аватар! - + Select external avatar picture Изберете външна картинка за аватар - + Images (*.png *.jpg *.gif) Картинки (*.png *.jpg *.gif) @@ -4729,8 +4788,8 @@ Please enter an valid picture! Обърни реда на F клавишите (F1 - F4) - - + + Play blind raise notification @@ -4741,7 +4800,7 @@ Please enter an valid picture! Игра в Мрежа/Интернет - + Switch keyboard focus to bet-input-field if it's your turn Ако ви е реда автоматично превключвай фокуса на клавиатурата върху полето за залагане @@ -4768,14 +4827,14 @@ p, li { white-space: pre-wrap; } - + Sound Звук - + Factory Settings @@ -4792,268 +4851,273 @@ p, li { white-space: pre-wrap; } - + Show country flag in the corner of avatar - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Game Table - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State Статус - - + + Card Deck - - + + Card Back - - + + Use card back from card style - - + + Use custom card back picture: - - + + Play sound effects Пусни звуковите ефекти - - + + Sound Volume: Сила на звука: - - + + 10 10 - - + + Sound Categories Категории на звука - - + + Play game actions sounds like "check", "call", "raise" Свири действията в играта като на преимер "приемане", "отговаряне", "наддаване" - - + + Play lobby chat notifications Свири съобщенията от лоби чата - - + + Play network/internet game notifications like "player joined the game" Свири съобщенията в интернет/мрежова игра като например "играч се присъедини към играта" - - + + Allow spectators to watch the game - + OK - + Local Game Settings Настройки за локална игра - - + + Number of players: Брой играчи: - - - - + + + + Start Cash: Първоначални пари: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Първи малък Вход: - - - - + + + + Raise blinds: Увеличи входа: - - - - - - - - + + + + + + + + Every: Всеки: - - - - + + + + hands ръце - - - - + + + + minutes минути - - - - + + + + Raise mode: Метод на Качване: - - - - + + + + Always double blinds Винаги удвоявай Входа - - - - + + + + Manual blinds order: Персонализиран ред на Входа: - - - - + + + + Edit ... Промени ... - - + + Game Speed: Скорост на играта: - - + + Pause between hands (press "start" button to go on) Пауза между ръцете (натисни "старт" бутона за да започне) - - + + Show game settings dialog on every new game Покажи прозореца с настрийките на играта при започването на всяка нова игра - + Network Game Settings Настройки за игра в мрежа - - + + Maximum number of players: Максимален брой играчи: @@ -5062,14 +5126,14 @@ p, li { white-space: pre-wrap; } Изтрйи - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5078,78 +5142,83 @@ p, li { white-space: pre-wrap; } Скорост на игра на компютърните играчи: - - + + Timeout for player action: Време за действие на играча: - - - - + + + + s сек - - + + Network Server Settings Настройки на сървъра за игра в мрежа - - + + Server Password: Парола за сървъра: - - - - + + + + Server Port: Порт за сървъра: - - - - - - Use SCTP - Използвай SCTP - - - - - - - Use IPv6 - Използвай IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">Какво е това?</a> - + Use SCTP + Използвай SCTP + + + + + + + Use IPv6 + Използвай IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">Какво е това?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Какво е това?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings Настройки за игра в мрежата - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5164,14 +5233,14 @@ p, li { white-space: pre-wrap; } Настройки на сървъра за игра в Интернет (Посветен сървър) - - + + Server Address: Адрес на сървъра: - - + + Use password for private game: Парола за лична игра: @@ -5200,49 +5269,49 @@ p, li { white-space: pre-wrap; } Псевдоними на играчите - - + + Computer Engine Компютърен мотор - - + + Opponent 6: Съперник 6: - - + + Opponent 5: Съперник 5: - - + + Opponent 4: Съперник 4: - - + + Opponent 3: Съперник 3: - - + + Opponent 2: Съперник 2: - - + + Opponent 1: Съперник 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5250,13 +5319,13 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Забележка: най-доброто качество за картинката на аватара е с пропорция около </span><span style=" font-weight:600; font-style:italic;">широчина=50, височина=50.</span></p></body></html> - + Human Player: Жив играч: - - + + Enable/Disable Logging Пусни/Спри регистрирането @@ -5269,59 +5338,59 @@ p, li { white-space: pre-wrap; } Ден(дни) - - + + Log File Directory: Папка за регистър файловете: - - + + Write log after every: Записвай в регисъра всеки: - + Note: Best quality with image ratio like width=48, height=76. - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + action (high frequent disc access) действие (високо ниво на ползване на твърдия диск) - - + + hand (medium disc access) ръка (средно ниво на ползване на твърдия диск) - - + + game (low disc access) игра (слабо ниво на ползване на твърдия диск) - + Log Messages Регистър съобщения - + Player Nicks/Avatars Псевдоними/Аватари на играчите @@ -5336,32 +5405,32 @@ p, li { white-space: pre-wrap; } - - + + Automatic Server Configuration URL - - + + Serverlist Address: - - + + Manual Server Configuration - - + + Store log files for: - - + + Day(s) @@ -5400,15 +5469,15 @@ p, li { white-space: pre-wrap; } Парола: - - + + Avatar Server: - + Style @@ -5418,33 +5487,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style - - - - - - Add ... - - + Add ... + + + + + + + Remove - - - - + + + + Preview - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5453,8 +5522,8 @@ p, li { white-space: pre-wrap; } - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5463,7 +5532,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5475,96 +5544,96 @@ p, li { white-space: pre-wrap; } - - + + Delay between hands: - - + + Server - - + + Game Игра - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5573,14 +5642,14 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Съперник 1: {7:?} - - + + Opponent 8: Съперник 1: {8:?} @@ -5589,8 +5658,8 @@ p, li { white-space: pre-wrap; } Съперник 1: {10:?} - - + + Opponent 9: Съперник 1: {10:?} {9:?} @@ -5598,37 +5667,37 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - + Dutch Холандски - + English Английски - + French Френски - + German Немски - + Hungarian Унгарски - + Italian Италиански - + Norwegian Норвежки @@ -5637,85 +5706,85 @@ p, li { white-space: pre-wrap; } Португалски - + Russian Руски - + Slovak Словенски - + Spanish Испански - + Turkish Турски - - - - - + + + + + Settings Error Грешка в настройките - + The entered flipside picture doesn't exist. Please enter an valid picture! Въведената картинка за гръб на тестето не съществува Моля въведете валидна картинка! - - + + The log file directory doesn't exist. Please select an valid directory! Папката за регистър файла не съществува. Моля изберете валидна папка! - + Language Changed Езикъте е променен - + You have changed application language to %1. Please restart PokerTH to load new language! Сменихте езика за апликацията с %1. Моля рестартирайте PokerTH за да заредите новия език! - + Select your flipside picture Изберете картинка за тестето - + Images (*.png *.jpg *.gif) Картинки (*.png *.jpg *.gif) - + Open Directory Отвори папка - - + + Blinds Error Грешка с Входа - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5724,242 +5793,242 @@ This first-small-blind-value will be set to maximum allowed value. Този пръв малък вход ще бъде променен с максималната позволена стойност. - + The entered server list address is not a valid URL. Please enter a valid server list address! - + Afrikaans - + Bulgarian - + Catalan - + Chinese - + Czech - + Danish - + Finnish - + Galician - + Greek - + Japanese - + Lithuania - + Polish - + Portuguese-Brazilian - + Portuguese-Portuguese - + Scottish Gaelic - + Swedish - + Tamil - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State Статус - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6024,12 +6093,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Грешка със сървъра - + You should not kick yourself from this game! Не се самоизгонвайте от играта! diff --git a/ts/pokerth_ca.ts b/ts/pokerth_ca.ts index 65114bbb..2a3a6a8c 100644 --- a/ts/pokerth_ca.ts +++ b/ts/pokerth_ca.ts @@ -335,106 +335,106 @@ Si us plau, contacteu l'autor de l'estil %3. - + PokerTH - Delete log files PokerTH - Esborreu els fitxers de registre - + Do you really want to delete the selected log files? Realment voleu esborrar els fitxers de registre seleccionats? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML Exporta l'arxiu de registre de PokerTH a HTML - + PokerTH HTML log (*.html) Registre PokerTH HTML (*.html) - + Export PokerTH log file to plain text Exporta l'arxiu de registre de PokerTH a text - + PokerTH plain text log (*.txt) Registre PokerTH texte (*.txt) - + Save PokerTH log file Desa l'arxiu de registre PokerTH - + PokerTH SQL log (*.pdb) Registre PokerTH SQL (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -458,22 +458,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar Denuncieu un avatar offensiu - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? No rebreu més missatges del xat o invitacions de partides d'aquest usuari.<br>Realment voleu posar el jugador <b>%1</b> a la llista per ignorar? - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? Esteu segur que voleu denunciar l'avatar de "%1" com a offensiu? - - + + + PokerTH - Question PokerTH - Pregunta @@ -1024,127 +1062,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Quant a PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - Wikimedia Commons: per recursos diversos populars de fotos d'avatar - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: per fotos d'avatar de persones - + - ZeiZei: for misc avatar pictures - ZeiZei: per fotos d'avatar miscel·lànies - + - kde-look.org: for different gpl licensed sounds - kde-look.org: per diversos sons llicenciats amb GPL - + - doc_dos: for self recorded chip sounds - doc_dos: per sons &quot;chiptune&quot; autoenregistrats - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - thiger, dunkanx, BerndA, coldz, drull: per diversos pedaços - + - kraut: for internet-game-server hosting and administration - kraut: per hosting i administració de servidors de partides d'internet - + - danuxi: for startwindow background gfx and danuxi1 table background - danuxi: per gràfiques de fons de la finestra inicial i danuxi1 per gràfiques del fons de la taula de joc - + - heyn: for moderating forum and organise bugtracker and feature requests - heyn: per moderar el fòrum i per organitzar el bugtracker i peticions de noves funcions - + - texas_outlaw: for new table sounds - texas_outlaw: per nous sons de taula - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -1261,12 +1299,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Ordre de cegues manuals - + You cannot set more than 30 manual blinds. No podeu definir més de 30 cegues manuals. @@ -1300,48 +1338,48 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. No podeu unir-vos a la sala de partides d'internet amb el nom d'usuari "Human Player". Si us plau, trieu-ne un altre. - - - + + + Nick name: Nom d'usuari: - + Your player name is already used by another player. Please choose a different name. El vostre nom de jugador ja s'està utilitzant per un altre jugador. Si us plau, trieu-ne un altre. - + The player name is too short, too long or invalid. Please choose another one. El nom de jugador és massa curt, massa llarg, o no és vàlid. Si us plau, trieu-ne un altre. - + There is already a game with your chosen game name. Please choose another one! Ja existeix una partida amb el nom de partida que heu triat. Si us plau, trieu-ne un altre! - + There is a forbidden word in your chosen game name. Please choose another one! Hi ha una paraula prohibida en el nom de partida que heu triat. Si us plau, trieu-ne un altre! - - + + Game name: Nom de partida: @@ -1380,27 +1418,27 @@ Si us plau, trieu-ne un altre! connectToServerDialogImpl - + Resolving address... S'està resolent l'adreça... - + Connecting to server... S'està conectant al servidor... - + Starting session... S'està començant la sessió... - + Connection established! Conexió establerta! - + Reading server list... S'està llegint la llista de servidors... @@ -1555,7 +1593,7 @@ Si us plau, trieu-ne un altre! <i>Duplica les cegues cada %1a mà</i> - + %1's game Partida de %1 @@ -1897,65 +1935,65 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... S'està començant la partida. Si us plau, espereu... - - - + + + sec (action) segons (acció) - - - + + + sec (hand delay) segons (retard entre mans) - + Joining a private Game S'està unint a una partida privada - + You are about to join a private game. Please enter the password! Esteu a punt d'unir-vos a una partida privada. Si us plau, introduiu la contrasenya! - + open obert - - - - + + + + Game Info Informació de la partida - - + + Game Partida - - + + Players Jugadors - - + + State Estat @@ -1965,15 +2003,15 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Available Players Jugadors disponibles @@ -1989,39 +2027,44 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Informació dels jugadors ... - + Report inappropriate game name Reporteu un nom de joc no apropiat - - - + + + Standard Estàndard - - - + + + Registered players only Només es permeten jugadors registrats - - - + + + Invited players only Només es permeten jugadors invitats - - - + + + Ranking game Partida de rànquing @@ -2031,52 +2074,52 @@ p, li { white-space: pre-wrap; } - - + + T T - + Waiting for the start of the next hand to rejoin the game ... Esperant a l'inici de la propera mà per reunir-vos a la partida ... - + Click here to view the online rankings - + Spectate - - + + Time - - + + Show player stats Mostra les estadístiques dels jugadors - - + + Admin action ... - + Total kickban - + Close game @@ -2085,32 +2128,32 @@ p, li { white-space: pre-wrap; } Jugadors conectats - Màxim %1 - + running a marxa - - + + running games: %1 partides a marxa:%1 - - + + open games: %1 partides obertes: %1 - - + + Players (%1) - - - + + + Spectators (%1) @@ -2120,1288 +2163,1303 @@ p, li { white-space: pre-wrap; } Invita a en %1 - + Ignore %1 Ignora a en %1 + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 està jugant a "%2". - + %1 is not playing at the moment. %1 no està jugant al moment. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 ha estat invitat a %2 per %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 ha rebutjat l'invitació a %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 no pot unir-se a %2 perquè està ocupat.</span> - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + The game will start in<br><b>%1</b> seconds. La partida començarà en<br><b>%1</b> segons. - + Afghanistan Afghanistan - + ALand Islands Illes Åland - + Albania Albània - + Algeria Algèria - + American Samoa Samoa nord-americana - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antàrtida - + Antigua And Barbuda Antigua i Barbuda - + Argentina Argentina - + Armenia Armènia - + Aruba Aruba - + Australia Austràlia - + Austria Àustria - + Azerbaijan Azerbaidjan - + Bahamas Bahames - + Bahrain Bahrain - + Bangladesh Bangla Desh - + Barbados Barbados - + Belarus Bielorússia - + Belgium Bèlgica - + Belize Belize - + Benin Benin - + Bermuda Bermudes - + Bhutan Bhutan - + Bolivia Bolívia - + Bosnia And Herzegovina Bòsnia i Hercegovina - + Botswana Botswana - + Bouvet Island Illa Bouvet - + Brazil Brasil - + British Indian Ocean Territory Territori Britànic de l'Oceà Índic - + Brunei Darussalam Brunei - + Bulgaria Bulgària - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Cambodja - + Cameroon Camerun - + Canada Canadà - + Cape Verde Cap Verd - + Cayman Islands Illes Cayman - + Central African Republic República Centreafricana - + Chad Txad - + Chile Xile - + China Xina - + Christmas Island Illa Christmas - + Cocos (Keeling) Islands Illes Cocos (Keeling) - + Colombia Colòmbia - + Comoros Comores - + Congo Congo - + Congo, The Democratic Republic Of The Congo, República Democràtica del - + Cook Islands Illes Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Costa d'Ivori - + Croatia Croàcia - + Cuba Cuba - + Cyprus Xipre - + Czech Republic República Txeca - + Denmark Dinamarca - + Djibouti Djibouti - + Dominica Dominica - + Dominican Republic República Dominicana - + Ecuador Equador - + Egypt Egipte - + El Salvador El Salvador - + Equatorial Guinea Guinea Equatorial - + Eritrea Eritrea - + Estonia Estònia - + Ethiopia Etiòpia - + Falkland Islands (Malvinas) Illes Malvines (Falkland) - + Faroe Islands Illes Fèroe - + Fiji Fiji - + Finland Finlàndia - + France Frància - + French Guiana Guaiana Francesa - + French Polynesia Polinèsia Francesa - + French Southern Territories Territoris Francesos del Sud - + Gabon Gabon - + Gambia Gàmbia - + Georgia Geòrgia - + Germany Alemanya - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grècia - + Greenland Grenlàndia - + Grenada Grenada - + Guadeloupe Guadalupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea Bissau - + Guyana Guyana - + Haiti Haití - + Heard Island And Mcdonald Islands Illes Heard i McDonald - + Holy See (Vatican City State) Santa Seu (Estat de la Ciutat del Vaticà) - + Honduras Hondures - + Hong Kong Hong Kong - + Hungary Hongria - + Iceland Islàndia - + India Índia - + Indonesia Indonèsia - + Iran, Islamic Republic Of Iran, República Islàmica de l' - + Iraq Iraq - + Ireland Irlanda - + Isle Of Man Illa de Man - + Israel Israel - + Italy Itàlia - + Jamaica Jamaica - + Japan Japó - + Jersey Jersey - + Jordan Jordània - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Corea, República Popular Democràtica de - + Korea, Republic Of Corea, República de - + Kuwait Kuwait - + Kyrgyzstan Kirguizistan - + Lao People'S Democratic Republic Laos, República Popular Democràtica de - + Latvia Letònia - + Lebanon Líban - + Lesotho Lesotho - + Liberia Libèria - + Libyan Arab Jamahiriya Líbia - + Liechtenstein Liechtenstein - + Lithuania Lituània - + Luxembourg Luxemburg - + Macao Macau - + Macedonia, The Former Yugoslav Republic Of Macedònia, Exrepública Iugoslava de - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malàisia - + Maldives Maldives - + Mali Mali - + Malta Malta - + Marshall Islands Illes Marshall - + Martinique Martinica - + Mauritania Mauritània - + Mauritius Maurici - + Mayotte Mayotte - + Mexico Mèxic - + Micronesia, Federated States Of Micronèsia, Estats Federats de - + Moldova, Republic Of Moldàvia, Principat de - + Monaco Mònaco - + Mongolia Mongòlia - + Montserrat Montserrat - + Morocco Marroc - + Mozambique Moçambic - + Myanmar Myanmar - + Namibia Namíbia - + Nauru Nauru - + Nepal Nepal - + Netherlands Països Baixos - + Netherlands Antilles Antilles Neerlandeses - + New Caledonia Nova Caledònia - + New Zealand Nova Zelanda - + Nicaragua Nicaragua - + Niger Níger - + Nigeria Nigèria - + Niue Niue - + Norfolk Island Illa Norfolk - + Northern Mariana Islands Illes Mariannes Septentrionals - + Norway Noruega - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Territoris Palestins Ocupats - + Panama Panamà - + Papua New Guinea Papua Nova Guinea - + Paraguay Paraguai - + Peru Perú - + Philippines Filipines - + Pitcairn Illes Pitcairn - + Poland Polònia - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Qatar - + Reunion Illa de la Reunió - + Romania Romania - + Russian Federation Federació Russa - + Rwanda Rwanda - + Saint Helena Santa Helena - + Saint Kitts And Nevis Saint Christopher i Nevis - + Saint Lucia Saint Lucia - + Saint Pierre And Miquelon Saint-Pierre i Miquelon - + Saint Vincent And The Grenadines Saint Vincent i les Grenadines - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe São Tomé i Príncipe - + Saudi Arabia Aràbia Saudita - + Senegal Senegal - + Serbia And Montenegro Sèrbia i Montenegro - + Seychelles Seychelles - + Sierra Leone Sierra Leone - + Singapore Singapur - + Slovakia Eslovàquia - + Slovenia Eslovènia - + Solomon Islands Illes Salomó - + Somalia Somàlia - + South Africa Sud-àfrica - + South Georgia And The South Sandwich Islands Illes Geòrgia del Sud i Sandwich del Sud - + Spain Espanya - + Sri Lanka Sri Lanka - + Sudan Sudan - + Suriname Surinam - + Svalbard And Jan Mayen Svalbard i Jan Mayen - + Swaziland Swazilàndia - + Sweden Suècia - + Switzerland Suïssa - + Syrian Arab Republic República Àrab Siriana - + Taiwan, Province Of China Taiwan (República de la Xina) - + Tajikistan Tadjikistan - + Tanzania, United Republic Of Tanzània, República Unida de - + Thailand Tailàndia - + Timor-Leste Timor Oriental - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinidad i Tobago - + Tunisia Tunísia - + Turkey Turquia - + Turkmenistan Turkmenistan - + Turks And Caicos Islands Illes Turks i Caicos - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ucraïna - + United Arab Emirates Emirats Àrabs Units - + United Kingdom Regne Unit - + United States Estats Units d'Amèrica - + United States Minor Outlying Islands Illes Perifèriques Menors dels Estats Units d'Amèrica - + Uruguay Uruguai - + Uzbekistan Uzbekistan - + Vanuatu Vanuatu - + Venezuela Veneçuela - + Viet Nam Vietnam - + Virgin Islands, British Illes Verges Britàniques - + Virgin Islands, U.S. Illes Verges Nord-americanes - + Wallis And Futuna Wallis i Futuna - + Western Sahara Sàhara Occidental - + Yemen Iemen - + Zambia Zàmbia - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Esteu segur que voleu reportar el nom de joc: "%1" com a no apropriat? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Heu entrat a una partida on s'uneix només per invitació. Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llista de jugadors disponibles. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Heu estat invitat a la partida <b>%1</b> per <b>%2</b>.<br>Voleu unir-vos a la partida? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? No rebreu més missatges del xat o invitacions de partides d'aquest usuari.<br>Realment voleu posar el jugador <b>%1</b> a la llista per ignorar? @@ -3410,8 +3468,8 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist jugadors al xat: %1 - - + + connected players: %1 jugadors conectats: %1 @@ -3420,42 +3478,42 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist Jugadors conectats - + hands mans - + minutes minuts - + double blinds duplicar cegues - + manual blinds order ordre de cegues manuals - + Server Error Error del servidor - + You should not kick yourself from this game! No es pot expulsar-vos a vos mateix de la partida! - + search for player ... Cerqueu jugadors ... - + Chat is only available to registered players. El xat només està disponible per a jugadors registrats. @@ -3473,7 +3531,7 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist Ignora el jugador %1 - + Ignore player ... Ignora el jugador... @@ -3484,8 +3542,8 @@ You can invite other players with right-click on their nick in the left availabl Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llista de jugadors disponibles que es troba a l'esquerra. - - + + PokerTH - Info Message PokerTH - Missatge d'informació @@ -3510,10 +3568,11 @@ Podeu invitar més jugadors fent clic dret al seus noms d'usuari a la llist No rebreu més missatges del xat o invitacions de partides d'aquest usuari.<br>Realment voleu posar el jugador <b>%1</b> a la llista per ignorar? - - + + - + + PokerTH - Question PokerTH - Pregunta @@ -3816,147 +3875,147 @@ p, li { white-space: pre-wrap; } gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Atura - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 -El motor de Texas Hold'em de codi font obert - - - - - - - - + + + + + + + + Start Comença - - - - - + + + + + Lobby Sala - - + + Chat Xat - + Closing PokerTH during network game S'està tancant el PokerTH durant la partida de xarxa - + You are the hosting server. Do you want to close PokerTH anyway? Sou l'ordinador central. Voleu sortir del PokerTH de totes maneres? - + Really want to exit? Realment voleu sortir? - + PokerTH - Close Table? PokerTH - Voleu tancar la taula? - + PokerTH - Internet Game Message PokerTH - Missatge de partida d'internet - + Attention! Do you really want to leave the current game and go back to the lobby? Atenció! Realment voleu abandonar la pardia actual i tornar a la sala? + - Chat is only available to registered players. El xat només està disponible per a jugadors registrats. - + Spectators - - + + Chance Probabilitat - - + + Kick Expulsa - - + + Do you want to kick <b>%1</b><br>from this game? Voleu expulsar a <b>%1</b><br>de la partida? - - - - + + + + <b>%1</b> secs left Queden<b>%1</b> segons - + vote vot - + votes vots - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. El jugador <b>%1</b> té <b>%2</b> %3<br>contra ell. Manquen<b>%4</b> vot(s) per expulsar-lo. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Teniu <b>%1</b> %2 en contra.<br>Manquen<b>%3</b> vot(s) per expulsar-vos. @@ -4044,7 +4103,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account @@ -4185,10 +4244,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Error en carregar l'arxiu de perfils de servidors @@ -4199,45 +4258,45 @@ p, li { white-space: pre-wrap; } - - - - + + + + Could not load server-profiles-file: %1 - + Save Server Profile Error Error en desar el perfil del servidor - + A profile with the name: %1 already exists. Would you like to overwrite ? Un perfil amb el nom: %1 ja existeix. Voleu sobreescriure'l? - + Read Server-Profile List Error Error en llegir la llista de perfils de servidors - + Could not read server-profiles list No s'ha pogut llegis la llista de perfils de servidors - - + + Save Server-Profile-File Error Error en desar l'arxiu de perfils de servidors - - + + Could not save server-profiles-file: %1 @@ -4310,12 +4369,12 @@ Voleu sobreescriure'l? manualBlindsOrderDialogImpl - + Manual Blinds Order Ordre de cegues manuals - + You cannot set more than 30 manual blinds. No podeu definir més de 30 cegues manuals. @@ -4442,38 +4501,38 @@ Voleu sobreescriure'l? selectAvatarDialogImpl - - - + + + Avatar File Error Error d'arxiu d'avatar - + Please select an avatar from the list! Si us plau, seleccioneu un avatar de la llista! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! La mida de l'arxiu seleccionat és massa gran (màxim 30KB) Si us plau, seleccioneu-ne una més petita! - + The entered avatar picture doesn't exist. Please enter an valid picture! L'imatge d'avatar introduït no existeix. Si us plau, introduiu un imatge vàlid! - + Select external avatar picture Seleccioneu un imatge d'avatar extern - + Images (*.png *.jpg *.gif) Imatges (*.png *.jpg *.gif) @@ -4535,7 +4594,7 @@ Si us plau, introduiu un imatge vàlid! Partida de xarxa / internet - + Switch keyboard focus to bet-input-field if it's your turn Selecciona camp d'entrada d'apostes durant el vostre torn @@ -4543,14 +4602,14 @@ Si us plau, introduiu un imatge vàlid! - + Sound So - + Factory Settings Valors per defecte @@ -4567,79 +4626,84 @@ Si us plau, introduiu un imatge vàlid! Desactiva la pantalla de presentació al començar - + Show country flag in the corner of avatar Mostra la bandera del país al cantó del avatar - + Activate the "accidentally call after big raise" blocker Activa el "evita-accidents" per no igualar automàticament després d'una gran pujada - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Game Table Taula de joc - - - - + + + + Description Descripció - - - - + + + + Maintainer Mantenidor - - - + + + State Estat - - + + Card Deck Baralla - - + + Card Back Revés - - + + Use card back from card style Utilitza el revés de la carta de l'estil de baralla - - + + Use custom card back picture: Utilitza imatge de revés de cartes personalitzada: @@ -4662,203 +4726,203 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Teniu en compte que la millor qualitat es troba am un coeficient d'imatge com </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">amplada=48, alçada=76.</span></p></td></tr></table></body></html> - - + + Play sound effects Reprodueix efectes de so - - + + Sound Volume: Volum de so: - - + + 10 10 - - + + Sound Categories Categories de so - - + + Play game actions sounds like "check", "call", "raise" Reprodueix sons d'accions com "passar", "igualar", "pujar" - - + + Play lobby chat notifications Reprodueix notificacions de xat - - + + Play network/internet game notifications like "player joined the game" Reprodueix notificacions de partida de xarxa / internet com "un jugador s'ha unit" - + Local Game Settings Configuració de partida local - - + + Number of players: Nombre de jugadors: - - - - + + + + Start Cash: Diners inicials: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Primera cega petita: - - - - + + + + Raise blinds: Puja les cegues: - - - - - - - - + + + + + + + + Every: Cada: - - - - + + + + hands mans - - - - + + + + minutes minuts - - - - + + + + Raise mode: Mode de pujar: - - - - + + + + Always double blinds Sempre duplica les cegues - - - - + + + + Manual blinds order: Ordre manual de cegues: - - - - + + + + Edit ... Editar... - - + + Game Speed: Velocitat del joc: - - + + Pause between hands (press "start" button to go on) Fes pausa entre mans (oprimiu el botó "començar" per a continuar) - - + + Show game settings dialog on every new game Mostra diàleg de configuració d'opcions en cada partida nova - - + + Server Password: - - + + Allow spectators to watch the game - + OK - + Network Game Settings Configuració de partida de xarxa - - + + Maximum number of players: Nombre màxim de jugadors: - - + + Timeout for player action: Temps permès per acció del jugador: @@ -4907,14 +4971,14 @@ p, li { white-space: pre-wrap; } Suprimeix - - + + Reset all settings to default ... Reinicialitzar tots els paràmetres als valors per defecte ... - - + + Note: You can not reset all settings to default during a running game! Teniu en compte que no podeu reinicialitzar tots els paràmetres als valors per defecte quan s'està executant una partida. @@ -4923,66 +4987,71 @@ p, li { white-space: pre-wrap; } Arxiu del registre - - - - + + + + s s - - + + Network Server Settings Configuració de servidor de xarxa - - - - + + + + Server Port: Port de servidor: - - - - - - Use SCTP - Utilitza SCTP - - - - - - - Use IPv6 - Utilitza IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">Què és això?</a> - + Use SCTP + Utilitza SCTP + + + + + + + Use IPv6 + Utilitza IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">Què és això?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Què és això?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings Configuració de partida d'internet - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4993,61 +5062,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Atenció: </span><span style=" font-weight:600; font-style:italic;">Opcions de partida </span><span style=" font-style:italic;">predeterminats, com "Nombre màxim de jugadors", "Diners inicials", i "Cega petita" s'utilitzaràn </span><span style=" font-weight:600; font-style:italic;">de les Opcions de partida a la xarxa.</span></p></body></html> - - + + Server Address: Adreça de servidor: - - + + Use password for private game: Utilitza contrasenya per a partida privada: - - + + Computer Engine Motor d'ordenador - - + + Opponent 6: Adversari 6: - - + + Opponent 5: Adversari 5: - - + + Opponent 4: Adversari 4: - - + + Opponent 3: Adversari 3: - - + + Opponent 2: Adversari 2: - - + + Opponent 1: Adversari 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5058,8 +5127,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Atenció: Millor qualitat d'avatar amb proporció d'imatge com aquest: </span><span style=" font-weight:600; font-style:italic;">amplada=50, alçada=50.</span></p></body></html> - - + + Enable/Disable Logging Activa/Desactiva registre @@ -5068,44 +5137,44 @@ p, li { white-space: pre-wrap; } Emmagatzemar arxius de registre per - - + + Log File Directory: Carpeta del arxiu de registre: - - + + Write log after every: Escriu registre després de cada: - - + + action (high frequent disc access) acció (accès a disc molt frequent) - - + + hand (medium disc access) mà (accès al disc mitjà) - - + + game (low disc access) partida (accès al disc baix) - + Log Messages Registra els missatges - + Player Nicks/Avatars Noms d'usuari/Avatars de jugador @@ -5120,53 +5189,53 @@ p, li { white-space: pre-wrap; } Mostra barra d'eines de l'esquerra - - + + Play blind raise notification Reprodueix la notificació de pujades cegues - - + + Automatic Server Configuration URL URL de configuració automàtic de servidors - - + + Serverlist Address: Adreça de lista de servidors: - - + + Manual Server Configuration Configuració manual del servidor - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: Emmagatzemar arxius de registre per: - - + + Day(s) Dia/Dies @@ -5201,20 +5270,20 @@ p, li { white-space: pre-wrap; } Mostra el visor de probabilitats - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: Servidor d'avatars: - + Style Estil @@ -5224,33 +5293,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style No tradueixis termes de pòquer com "passar", "igualar", o "pujar" de l'estil de taula - - - - - - Add ... - Afegir... - + Add ... + Afegir... + + + + + + Remove Eliminar - - - - + + + + Preview - Information: Previsualització - Informació: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5263,8 +5332,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Obteniu nous estils de taula de PokerTH ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5277,7 +5346,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Obteniu nous estils de baralla de PokerTH ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5296,96 +5365,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Atenció: Millor qualitat amb una proporció d'imatge com aquest: </span><span style=" font-weight:600; font-style:italic;">amplada=48, alçada=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Retard entre mans: - - + + Server Servidor - - + + Game Partida - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Nom predeterminat de partida: - - + + Default game type: Tipus predeterminat de partida: - - + + Standard Estàndard - - + + Registered players only Només jugadors registrats - - + + Invited players only Només jugadors invitats - - + + Ranking game Partida de rànquing - + Show lobby chat Mostra el xat - - + + Automatically leave the table after the game finished Sortir automaticament de la taula després que s'hagi acabat la partida - - + + Ignored Players Jugadors ignorats - - + + Player Jugador - - + + Remove Player Eliminar jugador - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5398,20 +5467,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Jugador humà:<br /><span style=" font-style:italic;">(Aquest nom d'usuari també s'utilitzarà per a l'entrada al joc en línia)</span></p></body></html> - - + + Opponent 7: Adversari 7: - - + + Opponent 8: Adversari 8: - - + + Opponent 9: Adversari 9: @@ -5419,140 +5488,140 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - + Dutch neerlandès - + English anglès - + French francès - + German alemany - + Hungarian hongarès - + Italian italià - + Lithuania lituà - + Norwegian noruec - + Portuguese-Brazilian portuguès-brasiler - + Portuguese-Portuguese portuguès-portuguès - + Russian rus - + Slovak eslovac - + Spanish castellà - + Tamil tàmil - + Turkish turc - - - - - + + + + + Settings Error Error de configuració - + The entered flipside picture doesn't exist. Please enter an valid picture! L'imatge de revés introduït no existeix. Si us plau, introdueu-ne una vàlida! - - + + The log file directory doesn't exist. Please select an valid directory! El directori d'arxiu de registre no existeix. Si us plau, seleccioneu un directori vàlid! - + Language Changed llengua canviada - + You have changed application language to %1. Please restart PokerTH to load new language! Heu canviat la llengua de l'aplicació a %1. Si us plau, reiniceu el PokerTH per carregar la nova llengua! - + Select your flipside picture Seleccioneu el vostre imatge del revés de la baralla - + Images (*.png *.jpg *.gif) imatges (*.png *.jpg *.gif) - + Open Directory diccionari obert - - + + Blinds Error Error de cegues - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5561,217 +5630,217 @@ This first-small-blind-value will be set to maximum allowed value. Aquest valor per a la primera cega petita s'utilizarà com al valor màxim permès. - + Bulgarian búlgar - + Polish polonès - + Chinese xinès - + Afrikaans afrikaans - + Catalan català - + Greek grec - + Swedish suec - + The entered server list address is not a valid URL. Please enter a valid server list address! L'adreça de llista de servidors introduït no és un URL vàlid. Si us plau, introdueu una adreça de llista de servidor vàlida! - + Finnish finès - + Czech txec - + Danish danès - + Galician - + Japanese japonès - + Scottish Gaelic - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! Els noms d'oponents no són úniques. Si us plau, escolliu altres noms per cada oponent. - + Settings Information Informació sobre els paràmetres - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Heu canviat el directori de fitxers de registre. Si us plau, reinicialitzeu el PokerTH per utilitzar el nou directori pels fitxers de registre. - - + + Maintainer Name nom del mantenidor - - + + Maintainer EMail correu electrònic del mantenidor - - + + Create Date Data de creació - + Windows Behaviour Comportament de les finestres - + scaleable escalable - + fixed fix - + Minimum Size mida mínima - + Maximum Size mida màxima - + Fixed Size mida fixa - + State Estat - + Please select your game table style Si us plau, seleccioneu el vostre estil de taula - + PokerTH game table styles (*.xml) Estils de taula PokerTH (*.xml) - + Game Table Style Error Error d'estil de taula - + Selected game table style file is already in the list. Please select another one to add! L'arxiu d'estil de taula seleccionat ja existeix a la llista. Si us plau, seleccioneu-ne un altre per afegir! - + Game Table Style File Error Error d'arxiu d'estil de taula - + Could not load game table style file correctly. Style will not be placed into list! No s'ha pogut carregar l'arxiu de l'estil de taula correctament. L'estil no es posarà a la llista! - + Please select your card deck style Si us plau, seleccioneu el vostre estil de baralla - + PokerTH card deck styles (*.xml) Estils de baralla PokerTH (*.xml) - + Card Deck Style Error Error d'estil de baralla - + Selected card deck style file is already in the list. Please select another one to add! L'arxiu d'estil de baralla seleccionat ja existeix a la llista. Si us plau, seleccioneu-ne un altre per afegir! - + Card Deck Style File Error Error d'arxiu d'estil de baralla - + Could not load card deck style file correctly. Style will not be placed into list! No s'ha pogut carregar l'arxiu d'estil de baralla correctament. @@ -5818,12 +5887,12 @@ L'estil no es posarà a la llista! Registre PokerTH SQL (*.pdb) - + PokerTH - Settings PokerTH - Paràmetres - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Atenció: Això esborrarà tots els vostres paràmetres i tancarà el PokerTH. @@ -5897,12 +5966,12 @@ Realment voleu reinicialitzar als valors per defecte? startNetworkGameDialogImpl - + Server Error Error de servidor - + You should not kick yourself from this game! No es pot expulsar-vos a vos mateix de la partida! diff --git a/ts/pokerth_cz.ts b/ts/pokerth_cz.ts index 114723ee..c048b538 100644 --- a/ts/pokerth_cz.ts +++ b/ts/pokerth_cz.ts @@ -483,6 +483,34 @@ Zkontrolujte, že jste nahrávali platný PokerTH soubor záznamů.Add/Edit/Remove tooltip Přidat/Upravit/Odstranit text + + Unignore Player + + + + Server response times + + + + Average: + + + + ms + + + + Minimum: + + + + Maximum: + + + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + ServerListDialog @@ -3415,6 +3443,22 @@ Další hráče můžete pozvat pravým kliknutím na jejich přezdívku v sezna Spectators (%1) Přihlížející (%1) + + Unignore player + + + + Unignore %1 + + + + Unignore player ... + + + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + gameTable @@ -4822,6 +4866,14 @@ p, li { white-space: pre-wrap; } Allow spectators to watch the game Povolit přihlíženícím sledovat hru + + Show network state color on the avatar + + + + Show network state color in the corner of the avatar + + settingsDialogImpl diff --git a/ts/pokerth_de.ts b/ts/pokerth_de.ts index 04a770dd..125fe796 100644 --- a/ts/pokerth_de.ts +++ b/ts/pokerth_de.ts @@ -439,88 +439,88 @@ Bitte kontaktieren Sie den Ersteller des Spieltisch-Stils %3. Analysiere Logdatei ... - + PokerTH - Delete log files PokerTH - Lösche Logdateien - + Do you really want to delete the selected log files? Möchten Sie die ausgewählten Logdateien wirklich löschen? - + Remove log file Logdatei löschen - + PokerTH cannot remove this log file, please verify that you have write access to this file! PokerTH kann diese Logdatei nicht löschen. Bitte stellen Sie sicher, dass Sie Schreibberechtigung auf diese Datei haben! - + Export PokerTH log file to HTML Exportiere PokerTH-Logdatei als HTML - + PokerTH HTML log (*.html) PokerTH-HTML-Log (*.html) - + Export PokerTH log file to plain text Exportiere PokerTH-Logdatei als reinen Text - + PokerTH plain text log (*.txt) PokerTH-Reintext-Log (*.txt) - + Save PokerTH log file PokerTH-Logdatei speichern - + PokerTH SQL log (*.pdb) PokerTH-SQL-Log (*.pdb) - + No file received. Keine Datei empfangen. - + File rejected because of too many uploads. Datei wurde wegen zu vielen Uploads abgelehnt. - + File rejected because of too many recent uploads. Please try again later. Datei wurde wegen zu vielen kürzlich durchgeführten Uploads abgelehnt. Bitte versuchen Sie es später nochmals. - + The file is too large. Die Datei ist zu groß. - + This file is not a valid and current PokerTH log file. Diese Datei ist keine gültige und keine aktuelle PokerTH-Logdatei. - + Internal error. Please try again later. ID: Interner Fehler. Bitte versuchen Sie es später wieder. ID: - - + + Uploading log file Hochladen der Logdatei @@ -529,22 +529,22 @@ Bitte kontaktieren Sie den Ersteller des Spieltisch-Stils %3. Upload läuft - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. Upload fehlgeschlagen. Bitte prüfen Sie Ihre Internetverbindung! Das Hochladen kann fehlschlagen, falls Sie einen HTTP-Proxy verwenden. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Verarbeiten der Logdatei aufdem Webserver fehlgeschlagen. Bitte überprüfen Sie, ob Sie eine gültige PokerTH-Logdatei hochladen. - - + + Failure reason: Fehlerursache: @@ -576,22 +576,60 @@ Bitte überprüfen Sie, ob Sie eine gültige PokerTH-Logdatei hochladen. + Unignore Player + + + + Report inappropriate avatar Unpassenden Avatar melden - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Sie werden keine Chat-Nachrichten oder Spieleinladungen mehr von diesem Spieler erhalten.<br>Möchten Sie den Spieler <b>%1</b> wirklich auf die Ignorier-Liste setzen? - - + + + PokerTH - Question PokerTH - Frage - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? Sind Sie sicher, dass Sie den Avatar von "%1" als unpassend melden möchten? @@ -2197,127 +2235,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) PokerTH %1 für Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Über PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - Wikimedia Commons: für verschiedene Avatar Bilder - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: für Avatar Bilder von sich - + - ZeiZei: for misc avatar pictures - ZeiZei: für weitere Avatar Bilder - + - kde-look.org: for different gpl licensed sounds - kde-look.org: für verschiedene GPL lizensierte Klänge - + - doc_dos: for self recorded chip sounds - doc_dos: für selbst aufgenommene Chip Klänge - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - thiger, dunkanx, BerndA, coldz, drull: für diverse Patches - + - kraut: for internet-game-server hosting and administration - kraut: für die Administration des Internet-Spiele-Servers - + - danuxi: for startwindow background gfx and danuxi1 table background - danuxi: für die Grafiken vom Startfenster und den danuxi1 Tisch Hintergrund - + - heyn: for moderating forum and organise bugtracker and feature requests - heyn: für die Forummoderation und das Organisieren des Bugtrackes und der Feature Requests - + - texas_outlaw: for new table sounds - texas_outlaw: für neueTisch Klänge - + - Poker engine for the popular Texas Hold'em Poker - Poker-Engine für das beliebte Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - Einzelspielermodus mit bis zu 9 Computergegnern - + - Multiplayer network games - Mehrspieler-Netzwerkmodus - + - Internet online games - Internet-Onlinespiele - + - Changeable gui with online style gallery - Veränderbare GUI mit Online-Stilgalerie - + - Online ranking website with result tables - Online Ranking-Webseite mit Ergebnistabellen - + Project page: Projektseite: - + Authors: Autoren: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package Grundidee, Basisarchitektur, GUI-Implementierung, GUI-Grafikbearbeitung, Linuxpaket - + initial idea, basic architecture, engine development Grundidee, Basisarchitektur, Engine-Entwicklung - + basic architecture, network development, windows package, MacOS package Basisarchitektur, Netzwerkentwicklung, Windows-Paket, MacOS-Paket - + initial gui graphics design erstes GUI-Grafikdesign @@ -2446,12 +2484,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Eigene Blinds-Reihenfolge - + You cannot set more than 30 manual blinds. Sie können nicht mehr als 30 manuelle Blinds setzen. @@ -2485,40 +2523,40 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Sie können die Internetspiel-Lobby nicht mit "Human Player" als Nicknamen betreten. Bitte wählen Sie einen anderen Nicknamen. - - - + + + Nick name: Nickname: - + Your player name is already used by another player. Please choose a different name. Ihr Spielername wird bereits von einem anderen Spieler benutzt. Bitte wählen Sie einen anderen Namen. - + The player name is too short, too long or invalid. Please choose another one. Der Spielername ist zu kurz, zu lang oder ungültig. Bitte wählen Sie einen anderen Namen. - + There is already a game with your chosen game name. Please choose another one! Es gibt bereits ein Spiel mit dem von Ihnen gewählten Namen. Bitte wählen Sie einen anderen! - + There is a forbidden word in your chosen game name. Please choose another one! Der von Ihnen gewählte Spielname enthält ein unerlaubtes Wort. @@ -2531,8 +2569,8 @@ Please choose another one! Bitte wählen Sie einen anderen! - - + + Game name: Spielname: @@ -2577,27 +2615,27 @@ Bitte wählen Sie einen anderen! connectToServerDialogImpl - + Resolving address... Adresse auflösen... - + Connecting to server... Mit Server verbinden... - + Starting session... Starte Session... - + Connection established! Verbindung aufgebaut! - + Reading server list... Lese Serverliste... @@ -2764,7 +2802,7 @@ Bitte wählen Sie einen anderen! <i>Blinds jede %1. Hand verdoppeln</i> - + %1's game %1s Spiel @@ -3194,20 +3232,20 @@ p, li { white-space: pre-wrap; } Spiel - + Joining a private Game Einem privaten Spiel beitreten - + You are about to join a private game. Please enter the password! Dies ist ein privates Spiel. Bitte Kennwort eingeben! - - - - + + + + Game Info Spieldaten @@ -3216,38 +3254,38 @@ p, li { white-space: pre-wrap; } Verbundene Spieler - + Server Error Serverfehler - + You should not kick yourself from this game! Sie sollten sich nicht selbst des Spiels verweisen! - + running läuft - - + + Game Spiel - - + + Players Spieler - - + + State Status @@ -3256,32 +3294,32 @@ p, li { white-space: pre-wrap; } Privat - + open offen - + hands Runden - + minutes Minuten - + double blinds Blinds verdoppeln - + manual blinds order Eigene Blinds-Reihenfolge - + Starting game. Please wait ... Spiel wird gestartet. Bitte warten... @@ -3291,16 +3329,16 @@ p, li { white-space: pre-wrap; } - - + + P Prv (Privat) passt in die Spalte rein Prv - - + + Available Players Verfügbare Spieler @@ -3316,45 +3354,50 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Spielerinfos... - - + + Show player stats Zeige Spielerstatistiken - + Report inappropriate game name Unpassenden Spielnamen melden - - - + + + Standard Standard - - - + + + Registered players only Nur registrierte Spieler - - - + + + Invited players only Nur eingeladene Spieler - - - + + + Ranking game Ranking-Spiel @@ -3371,1295 +3414,1295 @@ p, li { white-space: pre-wrap; } Sek. (Hand-Verzögerung) - + Afghanistan Afghanistan - + ALand Islands Åland - + Albania Albanien - + Algeria Algerien - + American Samoa Amerikanisch-Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarktika - + Antigua And Barbuda Antigua und Barbuda - + Argentina Argentinien - + Armenia Armenien - + Aruba Aruba - + Australia Australien - + Austria Österreich - + Azerbaijan Aserbaidschan - + Bahamas Bahamas - + Bahrain Bahrain - + Bangladesh Bangladesch - + Barbados Barbados - + Belarus Weißrussland - + Belgium Belgien - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivien - + Bosnia And Herzegovina Bosnien und Herzegowina - + Botswana Botsuana - + Bouvet Island Bouvetinsel - + Brazil Brasilien - + British Indian Ocean Territory Britisches Territorium im Indischen Ozean - + Brunei Darussalam Brunei - + Bulgaria Bulgarien - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodscha - + Cameroon Kamerun - + Canada Kanada - + Cape Verde Kap Verde - + Cayman Islands Kaimaninseln - + Central African Republic Zentralafrikanische Republik - + Chad Tschad - + Chile Chile - + China China - + Christmas Island Weihnachtsinsel - + Cocos (Keeling) Islands Kokosinseln - + Colombia Kolumbien - + Comoros Komoren - + Congo Kongo - + Congo, The Democratic Republic Of The Demokratische Republik Kongo - + Cook Islands Cookinseln - + Costa Rica Costa Rica - + Cote D'Ivoire Elfenbeinküste - + Croatia Kroatien - + Cuba Kuba - + Cyprus Zypern - + Czech Republic Tschechien - + Denmark Dänemark - + Djibouti Dschibuti - + Dominica Dominica - + Dominican Republic Dominikanische Republik - + Ecuador Ecuador - + Egypt Ägypten - + El Salvador El Salvador - + Equatorial Guinea Äquatorialguinea - + Eritrea Eritrea - + Estonia Estland - + Ethiopia Äthiopien - + Falkland Islands (Malvinas) Falklandinseln - + Faroe Islands Färöer - + Fiji Fidschi - + Finland Finnland - + France Frankreich - + French Guiana Französisch-Guayana - + French Polynesia Französisch-Polynesien - + French Southern Territories Französische Süd- und Antarktisgebiete - + Gabon Gabun - + Gambia Gambia - + Georgia Georgien - + Germany Deutschland - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Griechenland - + Greenland Grönland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bissau - + Guyana Guyana - + Haiti Haiti - + Heard Island And Mcdonald Islands Heard und McDonaldinseln - + Holy See (Vatican City State) Heiliger Stuhl (Staat Vatikanstadt) - + Honduras Honduras - + Hong Kong Hongkong - + Hungary Ungarn - + Iceland Island - + India Indien - + Indonesia Indonesien - + Iran, Islamic Republic Of Iran - + Iraq Irak - + Ireland Irland - + Isle Of Man Isle of Man - + Israel Israel - + Italy Italien - + Jamaica Jamaika - + Japan Japan - + Jersey Jersey - + Jordan Jordanien - + Kazakhstan Kasachstan - + Kenya Kenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Nordkorea - + Korea, Republic Of Südkorea - + Kuwait Kuwait - + Kyrgyzstan Kirgisistan - + Lao People'S Democratic Republic Laos - + Latvia Lettland - + Lebanon Libanon - + Lesotho Lesotho - + Liberia Liberia - + Libyan Arab Jamahiriya Libyen - + Liechtenstein Liechtenstein - + Lithuania Litauen - + Luxembourg Luxemburg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Mazedonien - + Madagascar Madagaskar - + Malawi Malawi - + Malaysia Malaysia - + Maldives Malediven - + Mali Mali - + Malta Malta - + Marshall Islands Marshallinseln - + Martinique Martinique - + Mauritania Mauretanien - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Mexiko - + Micronesia, Federated States Of Föderierte_Staaten_von_Mikronesien - + Moldova, Republic Of Moldawien - + Monaco Monaco - + Mongolia Mongolei - + Montserrat Montserrat - + Morocco Marokko - + Mozambique Mosambik - + Myanmar Myanmar - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Niederlande - + Netherlands Antilles Niederländische Antillen - + New Caledonia Neukaledonien - + New Zealand Neuseeland - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Norfolkinsel - + Northern Mariana Islands Nördliche Marianen - + Norway Norwegen - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Palästina - + Panama Panama - + Papua New Guinea Papua-Neuguinea - + Paraguay Paraguay - + Peru Peru - + Philippines Philippinen - + Pitcairn Pitcairninseln - + Poland Polen - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Katar - + Reunion Reunion - + Romania Rumänien - + Russian Federation Russland - + Rwanda Ruanda - + Saint Helena St. Helena - + Saint Kitts And Nevis St._Kitts_und_Nevis - + Saint Lucia St. Lucia - + Saint Pierre And Miquelon Saint-Pierre und Miquelon - + Saint Vincent And The Grenadines St. Vincent und die Grenadinen - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe São Tomé und Príncipe - + Saudi Arabia Saudi-Arabien - + Senegal Senegal - + Serbia And Montenegro Serbien und Montenegro - + Seychelles Seychellen - + Sierra Leone Sierra Leone - + Singapore Singapur - + Slovakia Slowakei - + Slovenia Slowenien - + Solomon Islands Salomonen - + Somalia Somalia - + South Africa Südafrika - + South Georgia And The South Sandwich Islands Südgeorgien und die Südlichen Sandwichinseln - + Spain Spanien - + Sri Lanka Sri Lanka - + Sudan Sudan - + Suriname Suriname - + Svalbard And Jan Mayen Spitzbergen und Jan Mayen - + Swaziland Swasiland - + Sweden Schweden - + Switzerland Schweiz - + Syrian Arab Republic Syrien - + Taiwan, Province Of China Taiwan - + Tajikistan Tadschikistan - + Tanzania, United Republic Of Tansania - + Thailand Thailand - + Timor-Leste Osttimor - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinidad und Tobago - + Tunisia Tunesien - + Turkey Türkei - + Turkmenistan Turkmenistan - + Turks And Caicos Islands Turks- und Caicosinseln - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ukraine - + United Arab Emirates Vereinigte Arabische Emirate - + United Kingdom Vereinigtes Königreich - + United States Vereinigte Staaten - + United States Minor Outlying Islands United States Minor Outlying Islands - + Uruguay Uruguay - + Uzbekistan Usbekistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Vietnam - + Virgin Islands, British Britische Jungferninseln - + Virgin Islands, U.S. Amerikanische Jungferninseln - + Wallis And Futuna Wallis und Futuna - + Western Sahara Westsahara - + Yemen Jemen - + Zambia Sambia - + Zimbabwe Simbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Sind Sie sicher, dass Sie den Spielnamen "%1" als unpassend melden möchten? - + Are you sure you want to close the game: "%1"? Sind Sie sicher, dass Sie das Spiel schließen möchten: "%1"? - + Are you sure you want to total kickban the player: "%1"? Sind Sie sicher, dass Sie den Spieler "%1" endgültig verbannen möchten? - - + + T Typ passt in die Spalte rein Typ - + Waiting for the start of the next hand to rejoin the game ... Warten auf die nächste Hand um am Spiel wieder teilzunehmen... - + Click here to view the online rankings Klicken Sie hier für das Online-Ranking - + Spectate Zuschauen - - + + Time Zeit - - + + Admin action ... Administrator-Aktion ... - + Total kickban Gesamte Verbannungen - + Close game Spiel schließen - - - + + + sec (action) Sek. (Aktion) - - - + + + sec (hand delay) Sek. (Hand-Verzögerung) @@ -4668,14 +4711,14 @@ p, li { white-space: pre-wrap; } Verbundene Spieler - max. %1 - - + + running games: %1 Laufende Spiele: %1 - - + + open games: %1 Offene Spiele: %1 @@ -4685,45 +4728,50 @@ p, li { white-space: pre-wrap; } %1 einladen - + Ignore %1 %1 ignorieren - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 wurde zu %2 von %3 eingeladen.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 hat die Einladung zu %2 abgelehnt.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 kann %2 nicht beitreten, da er beschäftigt ist.</span> - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + The game will start in<br><b>%1</b> seconds. Das Spiel startet in<br><b>%1</b> Sekunden. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Sie sind einem Spiel mit dem Typ "nur Einladungen" beigetreten. Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerliste mit der rechten Maustaste klicken. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Sie wurden von <b>%2</b> zu dem Spiel <b>%1</b> eingeladen.<br>Möchten Sie diesem Spiel beitreten? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Sie werden keine Chat-Nachrichten oder Spieleinladungen mehr von diesem Spieler erhalten.<br>Möchten Sie den Spieler <b>%1</b> wirklich auf Ihre Ignorier-Liste setzen? @@ -4732,31 +4780,31 @@ Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerli Spieler im Chat: %1 - - + + connected players: %1 Verbundene Spieler: %1 - - + + Players (%1) Spieler (%1) - - - + + + Spectators (%1) Zuschauer (%1) - + search for player ... nach Spieler suchen... - + Chat is only available to registered players. Der Chat steht nur registrierten Spielern zur Verfügung. @@ -4766,31 +4814,42 @@ Sie können nun Spieler einladen, indem Sie auf deren Nicknamen in der Spielerli Spieler einladen... - + Ignore player ... Spieler ignorieren... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 spielt in "%2". - + %1 is not playing at the moment. %1 spielt derzeit nicht. - - + + PokerTH - Info Message PokerTH - Infomeldung - - + + - + + PokerTH - Question PokerTH - Frage @@ -5219,31 +5278,31 @@ Bitte wählen Sie einen anderen Namen. ⌘N zum Start eines neuen Spiels - - - - - - - - + + + + + + + + Start Start - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop @@ -5305,8 +5364,8 @@ Wenn der Server hinter einem NAT-Router betrieben wird, stellen Sie sicher, dass F1 - Bet/Raise | F2 - Check/Call | F3 - Fold/All-In - - + + Chat Chat @@ -5391,12 +5450,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Bitte gehen Sie auf <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> und laden Sie die aktuelle Version herunter. - + Closing PokerTH during network game PokerTH während eines Netzwerkspiels beenden - + You are the hosting server. Do you want to close PokerTH anyway? Sie sind der Gastgeber dieses Spiels. Möchten Sie PokerTH trotzdem beenden? @@ -5413,16 +5472,16 @@ Bitte gehen Sie auf <a href="http://www.pokerth.net/" target=" Diese Beta-Version von PokerTH ist veraltet.<br>Bitte gehen Sie auf <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> und laden Sie die aktuelle Version herunter. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Die Open-Source Texas Holdem Engine - - - - - + + + + + Lobby Lobby @@ -5431,12 +5490,12 @@ Bitte gehen Sie auf <a href="http://www.pokerth.net/" target=" Ein interner Avatarfehler ist aufgetreten. Bitte informieren Sie hierüber einen Admin im Lobbychat. - + PokerTH - Internet Game Message PokerTH - Internetspiel-Meldung - + Attention! Do you really want to leave the current game and go back to the lobby? Vorsicht! Möchten Sie das aktuelle Spiel wirklich verlassen @@ -5497,65 +5556,65 @@ Bitte stellen Sie sicher, dass Sie mit dem Internet direkt verbunden sind.Beim Herunterladen der Serverliste konnte die Zieldatei nicht geöffnet werden. - + PokerTH %1 PokerTH %1 - - + + Chance Chance - + Really want to exit? Wirklich verlassen? - + PokerTH - Close Table? PokerTH - Tisch beenden? - - + + Kick Rauswurf - - + + Do you want to kick <b>%1</b><br>from this game? Möchten Sie <b>%1</b><br>aus diesem Spiel entfernen? - - - - + + + + <b>%1</b> secs left <b>%1</b> Sekunde(n) verbleiben - + vote Stimme - + votes Stimmen + - Chat is only available to registered players. Mehr Text passte nicht rein. Chat nur für registrierte Spieler. - + Spectators Zuschauer @@ -5582,14 +5641,14 @@ Wenn Sie temporär abwesend sind, können Sie die Abwesend-Funktionen in der rec Sie haben <b>%1</b> %2 gegen sich.<br>Noch <b>%3</b> Stimmen bis zum Rauswurf. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Spieler <b>%1</b> hat <b>%2</b> %3 gegen<br>sich. Noch <b>%4</b> Stimme(n), um ihn rauszuwerfen. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Sie haben <b>%1</b> %2 gegen sich.<br>Noch <b>%3</b> Stimme(n) bis zum Rauswurf. @@ -5665,7 +5724,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account Neues Benutzerkonto erstellen @@ -5830,10 +5889,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Dateifehler beim Laden des Serverprofils @@ -5844,7 +5903,7 @@ p, li { white-space: pre-wrap; } - + Save Server Profile Error Fehler beim Speichern des Serverprofils @@ -5853,34 +5912,34 @@ p, li { white-space: pre-wrap; } Ein Profil mit dem Namen:" - - - - + + + + Could not load server-profiles-file: %1 Kann die Serverprofil-Datei nicht laden: %1 - + Read Server-Profile List Error Fehler beim Lesen der Serverprofil-Liste - + Could not read server-profiles list Kann die Serverprofil-Liste nicht lesen - - + + Save Server-Profile-File Error Speichere Server-Profile-Datei Fehler - - + + Could not save server-profiles-file: %1 Kann Serverprofil-Datei nicht speichern: @@ -5893,7 +5952,7 @@ p, li { white-space: pre-wrap; } - + A profile with the name: %1 already exists. Would you like to overwrite ? Ein Profil mit dem Namen "%1" existiert bereits. @@ -5973,12 +6032,12 @@ Möchten Sie es überschreiben? manualBlindsOrderDialogImpl - + Manual Blinds Order Eigene Blinds-Reihenfolge - + You cannot set more than 30 manual blinds. Sie können nicht mehr als 30 manuelle Blinds setzen. @@ -6113,14 +6172,14 @@ Möchten Sie es überschreiben? selectAvatarDialogImpl - - - + + + Avatar File Error Avatardatei-Fehler - + Please select an avatar from the list! Bitte wähle einen Avatar aus der Liste! @@ -6131,7 +6190,7 @@ Please enter an valid picture! Bitte wähle ein gültiges Avatar-Bild! - + Select external avatar picture Wähle ein externes Avatar-Bild aus @@ -6140,19 +6199,19 @@ Bitte wähle ein gültiges Avatar-Bild! Bilder (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Die Datei des gewählten Bildes ist zu groß (maximal 30 kB). Bitte ein kleineres Bild auswählen! - + Images (*.png *.jpg *.gif) Bilder (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! Das gewählte Avatar-Bild existiert nicht. @@ -6188,10 +6247,10 @@ p, li { white-space: pre-wrap; } Small Blind: - - - - + + + + Start Cash: Startgeld: @@ -6200,87 +6259,87 @@ p, li { white-space: pre-wrap; } Engine Version: - - + + Network Server Settings Einstellungen für Netzwerkspiel - - - - + + + + Server Port: Serverport: - - - - + + + + Use IPv6 IPv6 benutzen - - + + Server Password: Serverkennwort: - - + + Allow spectators to watch the game Zuschauern das Ansehen des Spiels erlauben - - + + Computer Engine Computer-Engine - - + + Opponent 5: Gegner 5: - - + + Opponent 3: Gegner 3: - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Hinweis: Standard-Spieleinstellungen, wie "Maximale Anzahl Spieler", "Startgeld" und "Small Blind", werden von den Netzwerkspiel-Einstellungen übernommen. - + (This nick will also be used for the online game login) (Dieser Nickname wird auch für die Anmeldung zum Onlinespiel verwendet) - - + + Opponent 2: Gegner 2: - - + + Opponent 1: Gegner 1: - - + + Opponent 4: Gegner 4: - + Human Player: Menschlicher Spieler: @@ -6293,36 +6352,41 @@ p, li { white-space: pre-wrap; } Tag(e) - - + + Log File Directory: Verzeichnis der Logdatei: - + Log Messages Log-Nachrichten - + + Show network state color in the corner of the avatar + + + + Local Game Settings Einstellungen für lokales Spiel - + Network Game Settings Einstellungen für Netzwerkspiel - - + + Delay between hands: Verzögerung zwischen Runden: - + Internet Game Settings Einstellungen für Internetspiel @@ -6363,8 +6427,8 @@ p, li { white-space: pre-wrap; } Linke Toolbox anzeigen - - + + Play blind raise notification Blinderhöhungs-Hinweismeldung abspielen @@ -6373,31 +6437,31 @@ p, li { white-space: pre-wrap; } Statusleisten-Nachrichten anzeigen - - + + Show game settings dialog on every new game Den Dialog Spieleinstellungen bei jedem neuen Spiel anzeigen - - + + Number of players: Anzahl der Spieler: - + Note: Best quality with image ratio like width=48, height=76. Hinweis: Beste Bildqualität bei einem Verhältnis wie Höhe=48 und Breite=76. - - + + Game Speed: Spielgeschwindigkeit: - - + + Pause between hands (press "start" button to go on) Pause zwischen den Runden ("Start"-Knopf zum Weiterspielen) @@ -6410,8 +6474,8 @@ p, li { white-space: pre-wrap; } Engine-Version für Computergegener: - - + + Enable/Disable Logging Loggen an/aus @@ -6420,8 +6484,8 @@ p, li { white-space: pre-wrap; } Speichere Logdateien für - - + + Write log after every: Schreibe Logdateien nach jeder/jedem: @@ -6432,8 +6496,8 @@ p, li { white-space: pre-wrap; } Symbole für Small Blind und Big Blind anzeigen - - + + Play sound effects Spiele Klangeffekte @@ -6441,27 +6505,27 @@ p, li { white-space: pre-wrap; } 0.4 (current) 0.4 (aktuell) - - - - - - Use SCTP - SCTP benutzen - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://de.wikipedia.org/wiki/IPv6">Was ist das?</a> - + Use SCTP + SCTP benutzen + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://de.wikipedia.org/wiki/IPv6">Was ist das?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://de.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Was ist das?</a> @@ -6482,20 +6546,20 @@ p, li { white-space: pre-wrap; } Einstellungen - - + + Maximum number of players: Maximale Anzahl der Spieler: - - + + Sound Volume: Lautstärke: - - + + 10 10 @@ -6504,38 +6568,38 @@ p, li { white-space: pre-wrap; } Zeit für Spieleraktion (Sek.): - - + + Opponent 6: Gegner 6: - + Note: Best avatar quality with image ratio like width=50, height=50. Hinweis: Beste Avatar-Qualität bei einem Seitenverhältnis wie Breite=50 und Höhe=50. - - + + action (high frequent disc access) Aktion (häufiger Festplattenzugriff) - - + + hand (medium disc access) Runde (mittlerer Festplattenzugriff) - - + + game (low disc access) Spiel (geringer Festplattenzugriff) - + Sound Sound @@ -6558,14 +6622,14 @@ p, li { white-space: pre-wrap; } Internetserver-Einstellungen (dedizierter Server) - - + + Server Address: Serveradresse: - - + + Use password for private game: Benutze Kennwort für private Spiele: @@ -6590,78 +6654,78 @@ p, li { white-space: pre-wrap; } F-Tasten-Reihenfolge umkehren (F1 - F3) - - - - + + + + First small blind: Erster Small Blind: - - - - + + + + Raise blinds: Erhöhe Blinds: - - - - - - - - + + + + + + + + Every: Alle: - - - - + + + + hands Runden - - - - + + + + minutes Minuten - - - - + + + + Raise mode: Erhöhungs-Modus: - - - - + + + + Always double blinds Blinds immer verdoppeln - - - - + + + + Manual blinds order: Eigene Blinds-Reihenfolge: - - - - + + + + Edit ... Bearbeiten... @@ -6672,7 +6736,7 @@ p, li { white-space: pre-wrap; } Sprache: - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6691,26 +6755,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Hinweis: Beste Bildqualität mit einem Seitenverhältnis von </span><span style=" font-weight:600; font-style:italic;">Breite=48, Höhe=76.</span></p></td></tr></table></body></html> - - + + Sound Categories Klangkategorie - - + + Play game actions sounds like "check", "call", "raise" Spielaktionen wie Check, Call und Raise akustisch wiedergeben - - + + Play lobby chat notifications Lobbychat-Hinweismeldungen abspielen - - + + Play network/internet game notifications like "player joined the game" Mehrspieler-Hinweise wiedergeben (z. B. "Spieler trat Spiel bei") @@ -6719,7 +6783,7 @@ p, li { white-space: pre-wrap; } Lobbychat (IRC-Server) aktivieren/deaktivieren - + Player Nicks/Avatars Spielernicknamen/-avatare @@ -6745,7 +6809,7 @@ p, li { white-space: pre-wrap; } Netzwerk-/Internetspiel - + Switch keyboard focus to bet-input-field if it's your turn Cursor ins "Biete"-Eingabefeld setzen, wenn Sie an der Reihe sind @@ -6765,33 +6829,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Hinweis: beste Qualität mit Verhältnis </span><span style=" font-weight:600; font-style:italic;">Breite=100, Höhe=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Zeit für Spieleraktion: - - - - + + + + s Sek. - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -6802,7 +6866,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Hinweis: Standard-</span><span style=" font-weight:600; font-style:italic;">Spieleinstellungen</span><span style=" font-style:italic;"> - wie "Maximale Anzahl Spieler", "Startgeld" und "Small Blind" - werden von den </span><span style=" font-weight:600; font-style:italic;">Einstellungen für Netzwerkspiel</span><span style=" font-style:italic;"> übernommen.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -6813,50 +6877,50 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Hinweis: beste Bildqualität mit einem Seitenverhältnis von </span><span style=" font-weight:600; font-style:italic;">Breite=50, Höhe=50.</span></p></body></html> - - + + Automatic Server Configuration URL URL für Server-Autokonfiguration - + Factory Settings Standardeinstellung - + Show country flag in the corner of avatar Landesflagge in der Ecke des Avatars anzeigen - + Activate the "accidentally call after big raise" blocker Versehentliches Call nach einem großen Raise verhindern - - - - + + + + Description Beschreibung - - - - + + + + Maintainer Betreuer - - - + + + State Status @@ -6879,26 +6943,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Hinweis: Beste Bildqualität mit einem Seitenverhältnis von </span><span style=" font-weight:600; font-style:italic;">Breite=48, Höhe=76.</span></p></td></tr></table></body></html> - - + + Server Server - - + + Serverlist Address: Serverlisten-Adresse: - - + + Manual Server Configuration Manuelle Serverkonfiguration - - + + Game Spiel @@ -6915,78 +6979,78 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Hinweis: Standard-</span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Spieleinstellungen</span><span style=" font-size:12pt; font-style:italic;"> - wie &quot;Maximale Spieleranzahl&quot;, &quot;Startgeld&quot; und &quot;Small Blind&quot; werden aus den </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Einstellungen für Netzwerkspiele</span> übernommen.</p></body></html> - - + + Default game name: Standard-Spielname: - - + + Default game type: Standard-Spieltyp: - - + + Standard Standard - - + + Registered players only Nur registrierte Spieler - - + + Invited players only Nur eingeladene Spieler - - + + Ranking game Ranking-Spiel - + Show lobby chat Lobby-Chat anzeigen - - + + Automatically leave the table after the game finished Automatisch den Tisch verlassen wenn das Spiel endet - - + + Ignored Players Ignorierte Spieler - - + + Player Spieler - - + + Remove Player Spieler entfernen - + OK OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6999,14 +7063,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Menschlicher Spieler:<br /><span style=" font-style:italic;">(Dieser Nickname wird auch für die Anmeldung zum Onlinespiel verwendet)</span></p></body></html> - - + + Store log files for: Speichere Logdateien für: - - + + Day(s) Tag(e) @@ -7031,14 +7095,14 @@ p, li { white-space: pre-wrap; } Exportieren als HTML - - + + Reset all settings to default ... Alle Einstellungen zurücksetzen - - + + Note: You can not reset all settings to default during a running game! Hinweis: Sie können während eines laufenden Spieles die Einstellungen nicht zurücksetzen @@ -7105,44 +7169,49 @@ p, li { white-space: pre-wrap; } Startbildschirm beim Startvorgang deaktivieren - + Do not hide avatars of players which are on the ignore list Avatare von ignorierten Spielern nicht verbergen - + Disable emoticons in the chat Emoticons im Chat deaktivieren - - + + Show network state color on the avatar + + + + + Game Table Spieltisch - - + + Card Deck Kartenstapel - - + + Card Back Kartenrückseite - - + + Use card back from card style Benutze Kartenrückseite vom Kartenstil - - + + Use custom card back picture: Benutze eigenes Bild für Kartenrückseite: @@ -7171,15 +7240,15 @@ p, li { white-space: pre-wrap; } Kennwort: - - + + Avatar Server: Avatarserver: - + Style Stil @@ -7197,33 +7266,33 @@ p, li { white-space: pre-wrap; } Activate Aktivieren - - - - - - Add ... - Hinzufügen... - + Add ... + Hinzufügen... + + + + + + Remove Entfernen - - - - + + + + Preview - Information: Vorschau-Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7240,8 +7309,8 @@ p, li { white-space: pre-wrap; } Kartendeck-Stile - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7266,14 +7335,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Menschlicher Spieler:<br /><span style=" font-size:11pt; font-style:italic;">(Dieser Nickname wird auch für die Anmeldung zum Onlinespiel verwendet)</span></p></body></html> - - + + Opponent 7: Gegner 7: - - + + Opponent 8: Gegner 8: @@ -7282,8 +7351,8 @@ p, li { white-space: pre-wrap; } Gegner 6: {10:?} - - + + Opponent 9: Gegner 9: @@ -7291,11 +7360,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Einstellungsfehler @@ -7312,7 +7381,7 @@ Please select an valid directory! Bitte wählen Sie ein gültiges Verzeichnis! - + Select your flipside picture Wähle das Rückseitenbild @@ -7321,12 +7390,12 @@ Bitte wählen Sie ein gültiges Verzeichnis! Bilder (*.png) - + Open Directory Öffne Verzeichnis - + Images (*.png *.jpg *.gif) Bilder (*.png *.jpg *.gif) @@ -7339,14 +7408,14 @@ Bitte wählen Sie ein gültiges Verzeichnis! Español (Spanisch) - - + + Blinds Error Blinds-Fehler - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7355,27 +7424,27 @@ ist kleiner als der derzeitige erste Small Blind! Der erste Small Blind wird auf den größten erlaubten Wert gesetzt. - + Dutch Holländisch - + English Englisch - + French Französisch - + German Deutsch - + Hungarian Ungarisch @@ -7388,162 +7457,162 @@ Der erste Small Blind wird auf den größten erlaubten Wert gesetzt.Português (Portugiesisch) - + Russian Russisch - + Turkish Türkisch - + Vietnamese Vietnamesisch - + The opponent names are not unique. Please choose different names for each Opponent! Die Namen der Gegner müssen verschieden sein. Bitte wähen Sie unterschiedliche Namen für jeden Gegner! - + Language Changed Sprache geändert - + You have changed application language to %1. Please restart PokerTH to load new language! Sie haben die Sprache auf %1 geändert. Bitte starten Sie PokerTH neu um die neue Sprache zu laden! - + Italian Italienisch - + Slovak Slowakisch - + The entered flipside picture doesn't exist. Please enter an valid picture! Das Rückseitenbild existiert nicht. Bitte geben Sie ein gültiges Bild an! - - + + The log file directory doesn't exist. Please select an valid directory! Das Logdateien-Verzeichnis existiert nicht. Bitte wählen Sie ein gültiges Verzeichnis! - + Norwegian Norwegisch - + Spanish Spanisch - + Bulgarian Bulgarisch - + Polish Polnisch - + Chinese Chinesisch - + Greek Griechisch - + Swedish Schwedisch - + The entered server list address is not a valid URL. Please enter a valid server list address! Die eingegebene Adresse ist keine gültige URL. Bitte geben Sie eine gültige Serverlisten-Adresse ein! - + Finnish Finnisch - + Afrikaans Afrikanisch - + Catalan Katalanisch - + Czech Tschechisch - + Danish Dänisch - + Galician Galicisch - + Japanese Japanisch - + Lithuania Litauisch - + Portuguese-Brazilian Brasilianisches Portugiesisch - + Portuguese-Portuguese Portugiesisch - + Scottish Gaelic Schottisch-gälisch - + Tamil Tamilisch @@ -7556,133 +7625,133 @@ Bitte geben Sie eine gültige Serverlisten-Adresse ein! Französisch (français) - + Settings Information Einstellungsinformation - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Sie haben das Verzeichnish für die Log-Dateien geändert. Bitte starten Sie PokerTH neu, so dass das neue Verzeichnis für die Log-Dateien benutzt wird. - - + + Maintainer Name Name des Betreuers - - + + Maintainer EMail E-Mail-Adr. des Betreuers - - + + Create Date Erstellt am - + Windows Behaviour Fensterverhalten - + scaleable skalierbar - + fixed fixiert - + Minimum Size Mindestgröße - + Maximum Size Maximale Größe - + Fixed Size Feste Größe - + State Status - + Please select your game table style Bitte wählen Sie Ihren Spieltisch-Stil - + PokerTH game table styles (*.xml) PokerTH-Spieltisch-Stile (*.xml) - + Game Table Style Error Spieltisch-Stilfehler - + Selected game table style file is already in the list. Please select another one to add! Die gewählte Spieltisch-Stildatei ist bereits in der Liste enthalten. Bitte wählen Sie eine andere, um sie hinzuzufügen! - + Game Table Style File Error Spieltisch-Stildatei-Fehler - + Could not load game table style file correctly. Style will not be placed into list! Die Spieltisch-Stildatei konnte nicht korrekt geladen werden. Der Stil wird nicht zur Liste hinzugefügt! - + Please select your card deck style Bitte wählen Sie Ihren Kartendeck-Stil - + PokerTH card deck styles (*.xml) PokerTH-Kartendeck-Stil (*.xml) - + Card Deck Style Error Kartendeck-Stilfehler - + Selected card deck style file is already in the list. Please select another one to add! Die gewählte Kartendeck-Stildatei ist bereits in der Liste enthalten. Bitte wählen Sie eine andere, um sie hinzuzufügen! - + Card Deck Style File Error Kartendeck-Stildatei-Fehler - + Could not load card deck style file correctly. Style will not be placed into list! Die Kartendeck-Stildatei konnte nicht korrekt geladen werden. @@ -7721,12 +7790,12 @@ Der Stil wird nicht zur Liste hinzugefügt! PokerTH-Reintext-Log (*.txt) - + PokerTH - Settings PokerTH - Einstellungen - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Achtung: alle persönlichen Einstellungen werden gelöscht und PokerTH wird beendet! @@ -7820,12 +7889,12 @@ Möchten Sie wirklich alle Einstellungen zurücksetzen? startNetworkGameDialogImpl - + Server Error Serverfehler - + You should not kick yourself from this game! Sie sollten sich nicht selbst des Spieles verweisen! diff --git a/ts/pokerth_dk.ts b/ts/pokerth_dk.ts index d21ae05f..dc8d4a3d 100644 --- a/ts/pokerth_dk.ts +++ b/ts/pokerth_dk.ts @@ -415,106 +415,106 @@ Kontakt venligst fremstilleren af pokerbord-skin'et %3. - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -546,22 +546,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + + PokerTH - Question - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -980,127 +1018,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Om PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -1217,12 +1255,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Manuel blinds-orden - + You cannot set more than 30 manual blinds. Du kan ikke indstille mere end 30 manuelle blinds. @@ -1256,46 +1294,46 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Du kan ikke tilslutte internetspil-lobbyer med "Human Player" som navn. Vælg venligst et andet. - - - + + + Nick name: - + Your player name is already used by another player. Please choose a different name. Dit spillernavn er allerede brugt af en anden spiller. Vælg venligst et andet navn. - + The player name is too short, too long or invalid. Please choose another one. Spillernavnet er for kort, for langt eller ugyldigt. Vælg venligst et andet. - + There is already a game with your chosen game name. Please choose another one! - + There is a forbidden word in your chosen game name. Please choose another one! - - + + Game name: @@ -1334,27 +1372,27 @@ Please choose another one! connectToServerDialogImpl - + Resolving address... Bestemmer adresse... - + Connecting to server... Tilslutter til server... - + Starting session... Starter session... - + Connection established! Tilslutning oprettet! - + Reading server list... Indlæser serverliste... @@ -1505,7 +1543,7 @@ Please choose another one! - + %1's game %1's spil @@ -1869,7 +1907,7 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... Starter spil. Vent venligst ... @@ -1878,46 +1916,46 @@ p, li { white-space: pre-wrap; } %1's spil - + Joining a private Game Tilslut et privat spil - + You are about to join a private game. Please enter the password! Du er ved at tilslutte et privat spil. Indtast venligst adgangskode! - + open åben - - - - + + + + Game Info Spilinformation - - + + Game Spil - - + + Players Spillere - - + + State Tilstand @@ -1927,15 +1965,15 @@ p, li { white-space: pre-wrap; } - - + + P - - + + Available Players Tilgængelige spillere @@ -1950,121 +1988,126 @@ p, li { white-space: pre-wrap; } - + Player infos ... - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - + + T - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - + Spectate - - + + Time - - - Show player stats + + Unignore player - + + Show player stats + + + + + Admin action ... - + Total kickban - + Close game - + running igangværende - - + + running games: %1 igangværende spil: %1 - - + + open games: %1 åbne spil: %1 - - + + Players (%1) - - - + + + Spectators (%1) @@ -2074,58 +2117,58 @@ p, li { white-space: pre-wrap; } - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -2134,48 +2177,48 @@ Feel free to invite other players by right-clicking on their nick in the availab spillere i chat: %1 - - + + connected players: %1 tilsluttede spillere: %1 - + hands hænder - + minutes minutter - + double blinds dobbelt blinds - + manual blinds order manuel blinds-orden - + Server Error Server fejl - + You should not kick yourself from this game! Du skal ikke smide dig selv ud af dette spil! - + search for player ... - + Chat is only available to registered players. @@ -2185,1263 +2228,1279 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Ignore player ... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + - + + PokerTH - Question - - Afghanistan - - - - - ALand Islands - - - - - Albania - - - - - Algeria - - - - - American Samoa - - - - - Andorra - - - - - Angola - - - - - Anguilla - - - - - Antarctica - - - - - Antigua And Barbuda - - - - - Argentina - - - - - Armenia - - - - - Aruba - - - - - Australia - - - - - Austria - - - - - Azerbaijan - - - - - Bahamas + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? - Bahrain + Afghanistan - Bangladesh + ALand Islands - Barbados + Albania - Belarus + Algeria - Belgium + American Samoa - Belize + Andorra - Benin + Angola - Bermuda + Anguilla - Bhutan + Antarctica - Bolivia + Antigua And Barbuda - Bosnia And Herzegovina + Argentina - Botswana + Armenia - Bouvet Island + Aruba - Brazil + Australia - British Indian Ocean Territory + Austria - Brunei Darussalam + Azerbaijan - Bulgaria + Bahamas - Burkina Faso + Bahrain - Burundi + Bangladesh - Cambodia + Barbados - Cameroon + Belarus - Canada + Belgium - Cape Verde + Belize - Cayman Islands + Benin - Central African Republic + Bermuda - Chad + Bhutan - Chile + Bolivia - China + Bosnia And Herzegovina - Christmas Island + Botswana - Cocos (Keeling) Islands + Bouvet Island - Colombia + Brazil - Comoros + British Indian Ocean Territory - Congo + Brunei Darussalam - Congo, The Democratic Republic Of The + Bulgaria - Cook Islands + Burkina Faso - Costa Rica + Burundi - Cote D'Ivoire + Cambodia - Croatia + Cameroon - Cuba + Canada - Cyprus + Cape Verde - Czech Republic + Cayman Islands - Denmark + Central African Republic - Djibouti + Chad - Dominica + Chile - Dominican Republic + China - Ecuador + Christmas Island - Egypt + Cocos (Keeling) Islands - El Salvador + Colombia - Equatorial Guinea + Comoros - Eritrea + Congo - Estonia + Congo, The Democratic Republic Of The - Ethiopia + Cook Islands - Falkland Islands (Malvinas) + Costa Rica - Faroe Islands + Cote D'Ivoire - Fiji + Croatia - Finland + Cuba - France + Cyprus - French Guiana + Czech Republic - French Polynesia + Denmark - French Southern Territories + Djibouti - Gabon + Dominica - Gambia + Dominican Republic - Georgia + Ecuador - Germany + Egypt - Ghana + El Salvador - Gibraltar + Equatorial Guinea - Greece + Eritrea - Greenland + Estonia - Grenada + Ethiopia - Guadeloupe + Falkland Islands (Malvinas) - Guam + Faroe Islands - Guatemala + Fiji - Guernsey + Finland - Guinea + France - Guinea-Bissau + French Guiana - Guyana + French Polynesia - Haiti + French Southern Territories - Heard Island And Mcdonald Islands + Gabon - Holy See (Vatican City State) + Gambia - Honduras + Georgia - Hong Kong + Germany - Hungary + Ghana - Iceland + Gibraltar - India + Greece - Indonesia + Greenland - Iran, Islamic Republic Of + Grenada - Iraq + Guadeloupe - Ireland + Guam - Isle Of Man + Guatemala - Israel + Guernsey - Italy + Guinea - Jamaica + Guinea-Bissau - Japan + Guyana - Jersey + Haiti - Jordan + Heard Island And Mcdonald Islands - Kazakhstan + Holy See (Vatican City State) - Kenya + Honduras - Kiribati + Hong Kong - Korea, Democratic People'S Republic Of + Hungary - Korea, Republic Of + Iceland - Kuwait + India - Kyrgyzstan + Indonesia - Lao People'S Democratic Republic + Iran, Islamic Republic Of - Latvia + Iraq - Lebanon + Ireland - Lesotho + Isle Of Man - Liberia + Israel - Libyan Arab Jamahiriya + Italy - Liechtenstein + Jamaica - Lithuania + Japan - Luxembourg + Jersey - Macao + Jordan - Macedonia, The Former Yugoslav Republic Of + Kazakhstan - Madagascar + Kenya - Malawi + Kiribati - Malaysia + Korea, Democratic People'S Republic Of - Maldives + Korea, Republic Of - Mali + Kuwait - Malta + Kyrgyzstan - Marshall Islands + Lao People'S Democratic Republic - Martinique + Latvia - Mauritania + Lebanon - Mauritius + Lesotho - Mayotte + Liberia - Mexico + Libyan Arab Jamahiriya - Micronesia, Federated States Of + Liechtenstein - Moldova, Republic Of + Lithuania - Monaco + Luxembourg - Mongolia + Macao - Montserrat + Macedonia, The Former Yugoslav Republic Of - Morocco + Madagascar - Mozambique + Malawi - Myanmar + Malaysia - Namibia + Maldives - Nauru + Mali - Nepal + Malta - Netherlands + Marshall Islands - Netherlands Antilles + Martinique - New Caledonia + Mauritania - New Zealand + Mauritius - Nicaragua + Mayotte - Niger + Mexico - Nigeria + Micronesia, Federated States Of - Niue + Moldova, Republic Of - Norfolk Island + Monaco - Northern Mariana Islands + Mongolia - Norway + Montserrat - Oman + Morocco - Pakistan + Mozambique - Palau + Myanmar - Palestinian Territory, Occupied + Namibia - Panama + Nauru - Papua New Guinea + Nepal - Paraguay + Netherlands - Peru + Netherlands Antilles - Philippines + New Caledonia - Pitcairn + New Zealand - Poland + Nicaragua - Portugal + Niger - Puerto Rico + Nigeria - Qatar + Niue - Reunion + Norfolk Island - Romania + Northern Mariana Islands - Russian Federation + Norway - Rwanda + Oman - Saint Helena + Pakistan - Saint Kitts And Nevis + Palau - Saint Lucia + Palestinian Territory, Occupied - Saint Pierre And Miquelon + Panama - Saint Vincent And The Grenadines + Papua New Guinea - Samoa + Paraguay - San Marino + Peru - Sao Tome And Principe + Philippines - Saudi Arabia + Pitcairn - Senegal + Poland - Serbia And Montenegro + Portugal - Seychelles + Puerto Rico - Sierra Leone + Qatar - Singapore + Reunion - Slovakia + Romania - Slovenia + Russian Federation - Solomon Islands + Rwanda - Somalia + Saint Helena - South Africa + Saint Kitts And Nevis - South Georgia And The South Sandwich Islands + Saint Lucia - Spain + Saint Pierre And Miquelon - Sri Lanka + Saint Vincent And The Grenadines - Sudan + Samoa - Suriname + San Marino - Svalbard And Jan Mayen + Sao Tome And Principe - Swaziland + Saudi Arabia - Sweden + Senegal - Switzerland + Serbia And Montenegro - Syrian Arab Republic + Seychelles - Taiwan, Province Of China + Sierra Leone - Tajikistan + Singapore - Tanzania, United Republic Of + Slovakia - Thailand + Slovenia - Timor-Leste + Solomon Islands - Togo + Somalia - Tokelau + South Africa - Tonga + South Georgia And The South Sandwich Islands - Trinidad And Tobago + Spain - Tunisia + Sri Lanka - Turkey + Sudan - Turkmenistan + Suriname - Turks And Caicos Islands + Svalbard And Jan Mayen - Tuvalu + Swaziland - Uganda + Sweden - Ukraine + Switzerland - United Arab Emirates + Syrian Arab Republic - United Kingdom + Taiwan, Province Of China - United States + Tajikistan - United States Minor Outlying Islands + Tanzania, United Republic Of - Uruguay + Thailand - Uzbekistan + Timor-Leste - Vanuatu + Togo - Venezuela + Tokelau - Viet Nam + Tonga - Virgin Islands, British + Trinidad And Tobago - Virgin Islands, U.S. + Tunisia - Wallis And Futuna + Turkey - Western Sahara + Turkmenistan - Yemen + Turks And Caicos Islands - Zambia + Tuvalu + Uganda + + + + + Ukraine + + + + + United Arab Emirates + + + + + United Kingdom + + + + + United States + + + + + United States Minor Outlying Islands + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Viet Nam + + + + + Virgin Islands, British + + + + + Virgin Islands, U.S. + + + + + Wallis And Futuna + + + + + Western Sahara + + + + + Yemen + + + + + Zambia + + + + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3732,19 +3791,19 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop @@ -3757,7 +3816,7 @@ Feel free to invite other players by right-clicking on their nick in the availab Ctrl+N for at starte et nyt spil - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - The Open-Source Texas Holdem Engine @@ -3770,23 +3829,23 @@ Feel free to invite other players by right-clicking on their nick in the availab F1 - All-In | F2 - Bet/Raise | F3 - Check/Call | F4 - Fold - - - - - - - - + + + + + + + + Start Start - - - - - + + + + + Lobby Lobby @@ -3803,68 +3862,68 @@ Feel free to invite other players by right-clicking on their nick in the availab Auto måde sat: Check eller fold. - - + + Chat Chat - + Closing PokerTH during network game Lukker PokerTH under et netværksspil - + You are the hosting server. Do you want to close PokerTH anyway? Du er vært for serveren. Ønsker du stadig at afslutte PokerTH? - + Really want to exit? - + PokerTH - Close Table? - + PokerTH - Internet Game Message PokerTH - Internet-spil besked - + Attention! Do you really want to leave the current game and go back to the lobby? Advarsel! Ønsker du virkelig at forlade spillet og gå tilbage til lobby'en? + - Chat is only available to registered players. - + Spectators - - + + Chance Chance - + PokerTH %1 PokerTH %1 - - + + Kick Smid ud @@ -3883,26 +3942,26 @@ ud fra dette spil? Spiller <b>%1</b> har %2 stemmer imod ham. - - + + Do you want to kick <b>%1</b><br>from this game? Ønsker du at smide <b>%1</b><br>ud fra dette spil? - - - - + + + + <b>%1</b> secs left <b>%1</b> sekunder tilbage - + vote Stem - + votes Stemmer @@ -3915,14 +3974,14 @@ ud fra dette spil? Du har <b>%1</b> %2 imod dig.<br><b>%3</b> stemmer nødvendige for udsmidning. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Spiller <b>%1</b> er <b>%2</b> %3<br>imod ham. <b>%4</b> stemme(r) nødvendige for udsmidning. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Du har <b>%1</b> %2 imod dig.<br><b>%3</b> stemme(r) nødvendige for udsmid. @@ -3980,7 +4039,7 @@ ud fra dette spil? internetGameLoginDialogImpl - + Create new user account @@ -4125,10 +4184,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error fejl under indlæsning af serverprofil-fil @@ -4139,45 +4198,45 @@ p, li { white-space: pre-wrap; } - - - - + + + + Could not load server-profiles-file: %1 - + Save Server Profile Error Fejl unde lagring af serverprofil - + A profile with the name: %1 already exists. Would you like to overwrite ? En profil med navnet: %1 eksisterer allerede. Ønsker du at overskrive den? - + Read Server-Profile List Error Fejl under læsning af serverprofil-liste - + Could not read server-profiles list Kunne ikke læse serverprofilers liste - - + + Save Server-Profile-File Error Fejl under lagring af serverprofil-fil - - + + Could not save server-profiles-file: %1 @@ -4250,12 +4309,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order Manuel blinds-orden - + You cannot set more than 30 manual blinds. Du kan ikke indstille mere end 30 manuelle blinds. @@ -4382,38 +4441,38 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Avatar-fil fejl - + Please select an avatar from the list! Vælg venligst en avatar fra listen! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Filstørrelsen af det valgte billede er for stort. (max 30KB) Vælg venligst et mindre billede! - + The entered avatar picture doesn't exist. Please enter an valid picture! Det indtastede avatar-billede eksisterer ikke. Vælg venligst et gyldigt billede! - + Select external avatar picture Vælg et eksternt avatar-billede - + Images (*.png *.jpg *.gif) Billeder (*.png *.jpg *.gif) @@ -4477,8 +4536,8 @@ Vælg venligst et gyldigt billede! Byt rundt på rækkefølgen på F-knapper(F1 - F4) - - + + Play blind raise notification @@ -4489,7 +4548,7 @@ Vælg venligst et gyldigt billede! Netværk / Internet-spil - + Switch keyboard focus to bet-input-field if it's your turn Skift tastatur-fokus til bet-inputfelt hvis det er din tur @@ -4519,7 +4578,7 @@ p, li { white-space: pre-wrap; } - + Sound Lyd @@ -4536,50 +4595,50 @@ p, li { white-space: pre-wrap; } Deaktiver splashscreen under opstart - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Game Table Spil-bord - - + + Card Deck Spillekort - - + + Card Back Kortbagside - - + + Use card back from card style Benyt kort-bagside fra kort-stil - - + + Use custom card back picture: Benyt brugerdefineret bagside billede: @@ -4596,180 +4655,180 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Bemærk: Den bedste kvalitet med billede-størrelse omkring </span><span style=" font-weight:600; font-style:italic;">bredde=76, højde=48.</span></p></body></html> - - + + Play sound effects Afspil lydeffekter - - + + Sound Volume: Lydstyrke: - - + + 10 10 - - + + Sound Categories Lydkatagorier - - + + Play game actions sounds like "check", "call", "raise" Afspil spil-handlingslyde som "check", "call", "raise" - - + + Play lobby chat notifications Afspil lobby-chat notifikationer - - + + Play network/internet game notifications like "player joined the game" Afspil netværk/internet-spil notifikationer som "player joined the game" - + Local Game Settings Lokale spilindstillinger - - + + Number of players: Antal deltagere: - - - - + + + + Start Cash: Start beløb: - - - - - - - - + + + + + + + + $ kr - - - - + + + + First small blind: Første small blind: - - - - + + + + Raise blinds: Forhøj blinds: - - - - - - - - + + + + + + + + Every: Hvert: - - - - + + + + hands hænder - - - - + + + + minutes minutter - - - - + + + + Raise mode: Raise-måde: - - - - + + + + Always double blinds Altid dobbelt-blinds - - - - + + + + Manual blinds order: Manuel blinds-orden: - - - - + + + + Edit ... Rediger ... - - + + Game Speed: Spilhastighed: - - + + Pause between hands (press "start" button to go on) Pause mellem hænder (tryk "start"-knappen for at fortsætte) - - + + Show game settings dialog on every new game Vis spilindstillings-dialog under hvert nyt spil - + Network Game Settings Netværk-spil indstillinger - - + + Maximum number of players: Maksimum antal deltagere: @@ -4782,78 +4841,83 @@ p, li { white-space: pre-wrap; } Spilhastighed for computermodstandere: - - + + Timeout for player action: Tidsudløb for spillerhandling: - - - - + + + + s s - - + + Network Server Settings Netværks-server indstillinger - - + + Server Password: Server adgangskode: - - - - + + + + Server Port: Server port: - - - - - - Use SCTP - Benyt SCTP - - - - - - - Use IPv6 - Benyt IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">Hvad er dette?</a> - + Use SCTP + Benyt SCTP + + + + + + + Use IPv6 + Benyt IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">Hvad er dette?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Hvad er dette?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings Internet-spil indstillinger - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4864,14 +4928,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note: Standard </span><span style=" font-weight:600; font-style:italic;">Spilindstillinger</span><span style=" font-style:italic;"> som "maksimalt antal spillere", "Start beløb" og "Small blind" vil blive brugt </span><span style=" font-weight:600; font-style:italic;">fra netværk-spil indstillinger.</span></p></body></html> - - + + Server Address: Server adresse: - - + + Use password for private game: Benyt adgangskode for privat spil: @@ -4888,49 +4952,49 @@ p, li { white-space: pre-wrap; } #pokerth - - + + Computer Engine Computer motor - - + + Opponent 6: Modstander 6: - - + + Opponent 5: Modstander 5: - - + + Opponent 4: Modstander 4: - - + + Opponent 3: Modstander 3: - - + + Opponent 2: Modstander 2: - - + + Opponent 1: Modstander 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4941,13 +5005,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note: Bedste avatar-kvalitet ved billed-størrelse omkring </span><span style=" font-weight:600; font-style:italic;">bredde=50, højde=50.</span></p></body></html> - + Human Player: Menneskespiller: - - + + Enable/Disable Logging Slå til/fra logning @@ -4956,65 +5020,70 @@ p, li { white-space: pre-wrap; } Gem filer for - - + + Log File Directory: Logfil sti: - - + + Write log after every: Skriv log efter hvert: - + + Show network state color on the avatar + + + + Note: Best quality with image ratio like width=48, height=76. - - + + Allow spectators to watch the game - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + action (high frequent disc access) handling (højt-forekommende disk-adgang) - - + + hand (medium disc access) hånd (mellem-forekommende disk-adgang) - - + + game (low disc access) spil (lavt-forekommende disk-adgang) - + Log Messages log beskeder - + Player Nicks/Avatars Spiller navn/avatars @@ -5026,7 +5095,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings @@ -5036,36 +5105,36 @@ p, li { white-space: pre-wrap; } Vis venstre værktøjskasse - + Show country flag in the corner of avatar - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State Tilstand - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5077,119 +5146,119 @@ p, li { white-space: pre-wrap; } - - + + Delay between hands: - - + + Server - - + + Automatic Server Configuration URL Automatisk server konfiguration URL - - + + Serverlist Address: Serverliste adresse: - - + + Manual Server Configuration Manuel serverkonfiguration - - + + Game Spil - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5198,26 +5267,26 @@ p, li { white-space: pre-wrap; } - - + + Store log files for: - - + + Day(s) Dag(e) - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5264,15 +5333,15 @@ p, li { white-space: pre-wrap; } Adgangskode: - - + + Avatar Server: Avatar-server: - + Style Stil @@ -5290,33 +5359,33 @@ p, li { white-space: pre-wrap; } Activate Aktiver - - - - - - Add ... - Tilføj ... - + Add ... + Tilføj ... + + + + + + Remove Fjern - - - - + + + + Preview - Information: Forhåndsvisning - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5333,8 +5402,8 @@ p, li { white-space: pre-wrap; } Kortbagsider - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5347,14 +5416,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Få nye PokerTH kortbagsider ...</span></a></p></body></html> - - + + Opponent 7: Modstander 7: - - + + Opponent 8: Modstander 8: @@ -5363,8 +5432,8 @@ p, li { white-space: pre-wrap; } Modstander 10: - - + + Opponent 9: Modstander 9: @@ -5372,37 +5441,37 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - + Dutch Hollandsk - + English Engelsk - + French Fransk - + German Tysk - + Hungarian Ungarsk - + Italian Italiensk - + Norwegian Norsk @@ -5411,90 +5480,90 @@ p, li { white-space: pre-wrap; } Portugisisk - + Russian Russisk - + Slovak Slovakisk - + Spanish Spansk - + Tamil - + Turkish Tyrkisk - - - - - + + + + + Settings Error Indstillingsfejl - + The entered flipside picture doesn't exist. Please enter an valid picture! Det indtastede bagside-billede eksiterer ikke. Indtast venligts et brugbart billede! - - + + The log file directory doesn't exist. Please select an valid directory! Log-filens sti eksisterer ikke. Vælge venligst en brugbar sti! - + Language Changed Sprog ændret - + You have changed application language to %1. Please restart PokerTH to load new language! Du har ændret programmets sprog til %1. Genstart venligst PokerTH for at indlæse det nye sprog! - + Select your flipside picture Vælg dit bagside-billede - + Images (*.png *.jpg *.gif) Billeder (*.png *.jpg *.gif) - + Open Directory Åben sti - - + + Blinds Error Blinds-fejl - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5503,242 +5572,242 @@ er mindre end det nuværende første-small-blind! Dene første-small-blind-værdi vil blive sat to den maksimale tiladte værdi. - + Bulgarian Bulgarisk - + Polish Polsk - + Chinese Kinesisk - + Afrikaans - + Catalan - + Czech - + Greek Græsk - + Lithuania - + Portuguese-Brazilian - + Portuguese-Portuguese - + Swedish Svensk - + The entered server list address is not a valid URL. Please enter a valid server list address! Den indtastede serverlise adresse er ikke en brugbar URL. Indtast venligst en brugbar serverliste adresse! - + Finnish Finsk - + Danish Dansk - + Galician - + Japanese - + Scottish Gaelic - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Vedligeholders navn - - + + Maintainer EMail Vedligeholders email - - + + Create Date Oprettelsesdato - + Windows Behaviour Vinduernes adfærd - + scaleable Skalérbar - + fixed fast - + Minimum Size Mindste størrelse - + Maximum Size Største størrelse - + Fixed Size Fast størrelse - + State Tilstand - + Please select your game table style Vælg venligst din pokerbord-skin - + PokerTH game table styles (*.xml) PokerTH pokerbord-skins(*.xml) - + Game Table Style Error Pokerbord-skin fejl - + Selected game table style file is already in the list. Please select another one to add! Det valgte pokerbord-skin er allerede på listen. Vælg venligst et andet at tilføje! - + Game Table Style File Error Pokerbord-skin fil-fejl - + Could not load game table style file correctly. Style will not be placed into list! Kunne ikke indlæse pokerbord-skin filen korrekt. Skin'et vil ikke blive tilføjet til listen! - + Please select your card deck style Vælg venligst din kort-bagside - + PokerTH card deck styles (*.xml) PokerTH kort-bagsider(*.xml) - + Card Deck Style Error Kort-bagside fejl - + Selected card deck style file is already in the list. Please select another one to add! Den valgte kort-bagsidefil er allerede på listen. Vælg venligst en anden for at tilføje! - + Card Deck Style File Error Kort-bagside-filfejl - + Could not load card deck style file correctly. Style will not be placed into list! Kunne ikke indlæse kort-bagsidefilen korrekt. Kortbagsiden vil ikke blive tilføjet til listen! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5811,12 +5880,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Serverfejl - + You should not kick yourself from this game! Du skal ikke smide dig selv ud af dette spil! diff --git a/ts/pokerth_es.ts b/ts/pokerth_es.ts index eff087b0..57bb766d 100644 --- a/ts/pokerth_es.ts +++ b/ts/pokerth_es.ts @@ -436,88 +436,88 @@ Póngase en contacto con el autor del estilo %3. Analizar archivo de registro... - + PokerTH - Delete log files PokerTH - Eliminar archivos de registro - + Do you really want to delete the selected log files? ¿Seguro que desea eliminar los archivos de registro seleccionados? - + Remove log file Eliminar archivo de registro - + PokerTH cannot remove this log file, please verify that you have write access to this file! PokerTH no puede eliminar este archivo de registro. Compruebe que tiene permisos de escritura. - + Export PokerTH log file to HTML Exportar registro de PokerTH a HTML - + PokerTH HTML log (*.html) Registro HTML de PokerTH (*.html) - + Export PokerTH log file to plain text Exportar registro de PokerTH a texto plano - + PokerTH plain text log (*.txt) Registro de texto plano de PokerTH (*.txt) - + Save PokerTH log file Guardar archivo de registro de PokerTH - + PokerTH SQL log (*.pdb) Registro SQL de PokerTH (*.pdb) - + No file received. No se ha recibido ningún archivo. - + File rejected because of too many uploads. Archivo rechazado por exceso de subidas. - + File rejected because of too many recent uploads. Please try again later. Archivo rechazado por demasiadas subidas recientes. Inténtelo más tarde. - + The file is too large. El archivo es demasiado grande. - + This file is not a valid and current PokerTH log file. Este archivo no es un registro válido de PokerTH. - + Internal error. Please try again later. ID: Error internal. Inténtelo de nuevo más tarde. ID: - - + + Uploading log file Subiendo archivo de registro @@ -526,22 +526,22 @@ Póngase en contacto con el autor del estilo %3. Subida en progreso - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. Error en la subido. Compruebe su conexión a Internet. La subida de archivos de registro puede fallar si utiliza un proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Error al procesar el archivo de registro en el servidor web. Compruebe que está subiendo un archivo de registro válido. - - + + Failure reason: Motivo del fallo: @@ -573,22 +573,60 @@ Compruebe que está subiendo un archivo de registro válido. + Unignore Player + + + + Report inappropriate avatar Informar de avatar no apropiado - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Ya no recibirá más mensajes de charla o invitaciones de este usuario.<br>¿Seguro que desea añadir al usuario <b>%1</b>a la lista de ignorados? - - + + + PokerTH - Question PokerTH - Pregunta - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? ¿Seguro que desea informar del avatar de "%1" como inapropiado? @@ -2645,127 +2683,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) PokerTH %1 para Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Acerca de PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - Wikimedia Commons: por varias imágenes de avatares famosos - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: por avatares de gente - + - ZeiZei: for misc avatar pictures - ZeiZei: por varias imágenes de avatares - + - kde-look.org: for different gpl licensed sounds - kde-look.org: por distintos sonidos con licencia gpl - + - doc_dos: for self recorded chip sounds - doc_dos: por grabar los sonidos de las fichas - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - thiger, dunkanx, BerndA, coldz, drull: por varios parches - + - kraut: for internet-game-server hosting and administration - kraut: por el alojamiento y la administración del servidor de partidas en internet - + - danuxi: for startwindow background gfx and danuxi1 table background - danuxi: por la imagen de la ventana de inicio y el fondo de mesa danuxi1 - + - heyn: for moderating forum and organise bugtracker and feature requests - heyn: por moderar el foro y organizar el seguimiento de errores y sugerencias - + - texas_outlaw: for new table sounds - texas_outlaw: por nuevos sonidos para las mesas - + - Poker engine for the popular Texas Hold'em Poker - Motor de juego del popular Póker Texas Hold'em - + - Singleplayer games with up to 9 computer-opponents - Partidas individuales con hasta 9 oponentes virtuales - + - Multiplayer network games - Partidas multijugador en red - + - Internet online games - Partidas en Internet - + - Changeable gui with online style gallery - Interfaz personalizable con galería de estilos en línea - + - Online ranking website with result tables - Página web con clasificación y tablas de resultados - + Project page: Página del proyecto: - + Authors: Autores: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package idea inicial, arquitectura básica, implementación gráfica, edición de gráficos, paquete para linux - + initial idea, basic architecture, engine development idea incial, arquitectura básica, desarrollo del motor - + basic architecture, network development, windows package, MacOS package arquitectura básica, desarrollo para redes, paquetes para Windows y MacOS - + initial gui graphics design diseño gráfico inicial @@ -2882,12 +2920,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Orden manual de ciegas - + You cannot set more than 30 manual blinds. No puede fijar más de 30 ciegas manuales. @@ -2921,40 +2959,40 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. No puede acceder a la sala de partidas de Internet con el apodo "Human Player". Seleccione otro. - - - + + + Nick name: Apodo: - + Your player name is already used by another player. Please choose a different name. Su nombre de jugador ya está en uso por otra persona. Elija un nombre diferente. - + The player name is too short, too long or invalid. Please choose another one. El nombre de jugador es muy corto, muy largo o no es válido. Seleccione otro. - + There is already a game with your chosen game name. Please choose another one! Ya existe una partida con el mismo nombre. Seleccione otro nombre. - + There is a forbidden word in your chosen game name. Please choose another one! Hay una palabra prohibida en el nombre de la partida. @@ -2967,8 +3005,8 @@ Please choose another one! Seleccione otro nombre. - - + + Game name: Nombre de la partida: @@ -3013,27 +3051,27 @@ Elija otro nombre. connectToServerDialogImpl - + Resolving address... Resolviendo dirección... - + Connecting to server... Conectando al servidor... - + Starting session... Iniciando sesión... - + Connection established! Conexión establecida. - + Reading server list... Leyendo lista de servidores... @@ -3192,7 +3230,7 @@ Elija otro nombre. <i>Duplicar ciegas cada %1 manos</i> - + %1's game Partida de %1 @@ -3606,46 +3644,46 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info Información de la partida - + Server Error Error en el servidor - + You should not kick yourself from this game! No puede expulsarse a usted mismo. - + Joining a private Game Accediendo a una partida privada - - + + Game Partida - - + + Players Jugadores - - + + State Estado @@ -3654,17 +3692,17 @@ p, li { white-space: pre-wrap; } Privado - + You are about to join a private game. Please enter the password! Va a unirse a una partida privada. Introduzca la contraseña. - + running en marcha - + open abierta @@ -3673,27 +3711,27 @@ p, li { white-space: pre-wrap; } Jugadores conectados - + hands manos - + minutes minutos - + double blinds duplicar ciegas - + manual blinds order orden manual de ciegas - + Starting game. Please wait ... Iniciando partida. Espere... @@ -3703,15 +3741,15 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Available Players Jugadores disponibles @@ -3727,45 +3765,50 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Información del jugador ... - - + + Show player stats Mostrar estadísticas del jugador - + Report inappropriate game name Informar de nombre de partida inapropiado - - - + + + Standard Normal - - - + + + Registered players only Sólo registrados - - - + + + Invited players only Sólo invitados - - - + + + Ranking game Clasificatoria @@ -3782,1295 +3825,1295 @@ p, li { white-space: pre-wrap; } seg (por mano) - + Afghanistan Afganistán - + ALand Islands Alandia - + Albania Albania - + Algeria Argelia - + American Samoa Samoa Americana - + Andorra Andorra - + Angola Angola - + Anguilla Anguila - + Antarctica Antártica - + Antigua And Barbuda Antigua y Barbuda - + Argentina Argentina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Azerbaiyán - + Bahamas Bahamas - + Bahrain Baréin - + Bangladesh Bangladés - + Barbados Barbados - + Belarus Bielorrusia - + Belgium Bélgica - + Belize Belice - + Benin Benín - + Bermuda Bermudas - + Bhutan Bután - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia y Herzegovina - + Botswana Botsuana - + Bouvet Island Isla Bouvet - + Brazil Brasil - + British Indian Ocean Territory Territorio británico del Océano Índico - + Brunei Darussalam Brunéi - + Bulgaria Bulgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Camboya - + Cameroon Camerún - + Canada Canadá - + Cape Verde Cabo Verde - + Cayman Islands Islas Caimán - + Central African Republic República Centroafricana - + Chad Chad - + Chile Chile - + China China - + Christmas Island Isla de Navidad - + Cocos (Keeling) Islands Islas Cocos - + Colombia Colombia - + Comoros Comoras - + Congo Congo - + Congo, The Democratic Republic Of The Congo, República Democrática del - + Cook Islands Islas Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Costa de Marfil - + Croatia Croacia - + Cuba Cuba - + Cyprus Chripe - + Czech Republic República Checa - + Denmark Dinamarca - + Djibouti Yibuti - + Dominica Dominica - + Dominican Republic República Dominicana - + Ecuador Ecuador - + Egypt Egipto - + El Salvador El Salvador - + Equatorial Guinea Guinea Ecuatorial - + Eritrea Eritrea - + Estonia Estonia - + Ethiopia Etiopía - + Falkland Islands (Malvinas) Islas Malvinas - + Faroe Islands Islas Feroe - + Fiji Fiji - + Finland Finlandia - + France Francia - + French Guiana Guayana Francesa - + French Polynesia Polinesia Francesa - + French Southern Territories Territorios Franceses del Sur - + Gabon Gabón - + Gambia Gambia - + Georgia Georgia - + Germany Alemania - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grecia - + Greenland Groenlandia - + Grenada Granada - + Guadeloupe Guadalupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bissau - + Guyana Guayana - + Haiti Haití - + Heard Island And Mcdonald Islands Islas Heard y McDonald - + Holy See (Vatican City State) Santa Sede (Ciudad Estado del Vaticano) - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Hungría - + Iceland Islandia - + India India - + Indonesia Indonesia - + Iran, Islamic Republic Of Irán, República Islámica de - + Iraq Irak - + Ireland Irlanda - + Isle Of Man Islan de Man - + Israel Israel - + Italy Italia - + Jamaica Jamaica - + Japan Japón - + Jersey Jersey - + Jordan Jordania - + Kazakhstan Kazajistán - + Kenya Kenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Corea, República Popular Democrática de - + Korea, Republic Of Corea, República de - + Kuwait Kuwait - + Kyrgyzstan Kirguistán - + Lao People'S Democratic Republic Lao, República Democrática Popular - + Latvia Letonia - + Lebanon Líbano - + Lesotho Lesoto - + Liberia Liberia - + Libyan Arab Jamahiriya Libia - + Liechtenstein Liechtenstein - + Lithuania Lituania - + Luxembourg Luxemburgo - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia, Antigua República Yugoslava de - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malasia - + Maldives Maldivas - + Mali Mali - + Malta Malta - + Marshall Islands Islas Marshall - + Martinique Martinica - + Mauritania Mauritania - + Mauritius Mauricio - + Mayotte Mayotte - + Mexico México - + Micronesia, Federated States Of Micronesia, Estados Federados de - + Moldova, Republic Of Moldavia, República de - + Monaco Mónaco - + Mongolia Mongolia - + Montserrat Montserrat - + Morocco Marruecos - + Mozambique Mozambique - + Myanmar Myanmar - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Holanda - + Netherlands Antilles Antillas Holandesas - + New Caledonia Nueva Caledonia - + New Zealand Nueva Zelanda - + Nicaragua Nicaragua - + Niger Níger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Isla Norfolk - + Northern Mariana Islands Islas Marianas del Norte - + Norway Noruega - + Oman Omán - + Pakistan Pakistán - + Palau Palaos - + Palestinian Territory, Occupied Palestina, Territorio Ocupado de - + Panama Panamá - + Papua New Guinea Papua Nueva Guinea - + Paraguay Paraguay - + Peru Perú - + Philippines Filipinas - + Pitcairn Pitcairn - + Poland Polonia - + Portugal Portugal - + Puerto Rico Puerto Rico - + Qatar Catar - + Reunion Reunión - + Romania Rumanía - + Russian Federation Federacíon Rusa - + Rwanda Ruanda - + Saint Helena Santa Helena - + Saint Kitts And Nevis San Cristóbal y Nieves - + Saint Lucia Santa Lucía - + Saint Pierre And Miquelon San Pedro y Miquelón - + Saint Vincent And The Grenadines San Vicente y las Granadinas - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe Santo Tomé y Príncipe - + Saudi Arabia Arabia Saudí - + Senegal Senegal - + Serbia And Montenegro Serbia y Montenegro - + Seychelles Seychelles - + Sierra Leone Sierra Leona - + Singapore Singapur - + Slovakia Eslovaquia - + Slovenia Eslovenia - + Solomon Islands Islas Salomón - + Somalia Somalia - + South Africa Sudáfrica - + South Georgia And The South Sandwich Islands Islas Georgias del Sur y Sandwich del Sur - + Spain España - + Sri Lanka Sri Lanka - + Sudan Sudán - + Suriname Surinam - + Svalbard And Jan Mayen Svalbard y Jan Mayen - + Swaziland Suazilandia - + Sweden Suecia - + Switzerland Suiza - + Syrian Arab Republic Siria, República Árabe - + Taiwan, Province Of China Taiwan, Provincia de China - + Tajikistan Tayikistán - + Tanzania, United Republic Of Tanzania, República Unida de - + Thailand Tailandia - + Timor-Leste Timor Oriental - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinidad y Tobago - + Tunisia Túnez - + Turkey Turquía - + Turkmenistan Turkmenistán - + Turks And Caicos Islands Islas Turcas y Caicos - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ucrania - + United Arab Emirates Emiratos Árabes Unidos - + United Kingdom Reino Unido - + United States Estados Unidos - + United States Minor Outlying Islands Islas Ultramarinas de Estados Unidos - + Uruguay Uruguay - + Uzbekistan Uzbekistán - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Vietnam - + Virgin Islands, British Islas Vírgenes Británicas - + Virgin Islands, U.S. Islas Vírgenes de los Estados Unidos - + Wallis And Futuna Wallis y Futuna - + Western Sahara Sáhara Occidental - + Yemen Yemen - + Zambia Zambia - + Zimbabwe Zimbabue - + Are you sure you want to report the game name: "%1" as inappropriate? ¿Está seguro de que desea informar de que el nombre "%1" es inapropiado? - + Are you sure you want to close the game: "%1"? ¿Seguro que desea cerrar la partida: "%1"? - + Are you sure you want to total kickban the player: "%1"? ¿Seguro que desea expulsar y bloquear al jugador: "%1"? - - + + T T - + Waiting for the start of the next hand to rejoin the game ... Esperando a la siguiente mano para volver a la partida... - + Click here to view the online rankings Pulse aquí para ver la clasificación en línea - + Spectate Espectador - - + + Time Tiempo - - + + Admin action ... Administración... - + Total kickban Expulsar y bloquear - + Close game Cerrar partida - - - + + + sec (action) seg (acción) - - - + + + sec (hand delay) seg (por mano) @@ -5079,14 +5122,14 @@ p, li { white-space: pre-wrap; } Jugadores conectados - máx. %1 - - + + running games: %1 partidas en marcha: %1 - - + + open games: %1 partidas abiertas: %1 @@ -5096,45 +5139,50 @@ p, li { white-space: pre-wrap; } Invitar a %1 - + Ignore %1 Ignorar a %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 ha sido invitado a %2 por %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 ha rechazado la invitación a %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 no se puede unir a %2 porque está ocupado.</span> - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + The game will start in<br><b>%1</b> seconds. La partida comenzará en<br><b>%1</b> segundos. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Ha entrado en una partida sólo para invitados. Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en la lista de jugadores. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Ha sido invitado a la partida <b>%1</b> por <b>%2</b>.<br>¿Quiere unirse a esa partida? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Ya no recibirá más mensajes de charla o invitaciones de este usuario.<br>¿Seguro que desea añadir al usuario <b>%1</b>a la lista de ignorados? @@ -5143,31 +5191,31 @@ Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en jugadores en charla: %1 - - + + connected players: %1 jugadores conectados: %1 - - + + Players (%1) Jugadores (%1) - - - + + + Spectators (%1) Espectadores (%1) - + search for player ... buscar jugador ... - + Chat is only available to registered players. La charla sólo está disponible para usuarios registrados. @@ -5177,31 +5225,42 @@ Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en Invitar jugador ... - + Ignore player ... Ignorar jugador ... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 está jugando en "%2". - + %1 is not playing at the moment. %1 no está jugando en este momento. - - + + PokerTH - Info Message PokerTH - Mensaje de información - - + + - + + PokerTH - Question PokerTH - Pregunta @@ -5674,31 +5733,31 @@ Elija un nombre diferente. Cmd+N para iniciar una nueva partida - - - - - - - - + + + + + + + + Start Iniciar - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Detener @@ -5753,8 +5812,8 @@ Si el servidor está detrás de un enrutador NAT, asegúrese de que el puerto de Esta partida está llena. - - + + Chat Charla @@ -5817,12 +5876,12 @@ Seleccione otro. El servidor está desconectado por mantenimiento. Inténtelo de nuevo más tarde. - + Closing PokerTH during network game Cerrando PokerTH durante una partida en red - + You are the hosting server. Do you want to close PokerTH anyway? Usted está alojando la partida. ¿Seguro que desea cerrar PokerTH? @@ -5839,16 +5898,16 @@ Seleccione otro. El versión beta de PokerTH es obsoleta.<br>Visite <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> para descargar la última versión. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - El motor de Texas Holdem de código abierto - - - - - + + + + + Lobby Sala @@ -5857,12 +5916,12 @@ Seleccione otro. Ha ocurrido un error interno. Informe al administrador en la sala de charla. - + PokerTH - Internet Game Message PokerTH - Mensaje de partida en Internet - + Attention! Do you really want to leave the current game and go back to the lobby? ¿Seguro que desea abandonar la partida actual @@ -5923,64 +5982,64 @@ Asegúrese de que está conectado a Internet. No se puede abrir el archivo de destino al descargar la lista de servidores. - + PokerTH %1 PokerTH %1 - - + + Chance Probabilidad - + Really want to exit? ¿Seguro que desea salir? - + PokerTH - Close Table? PokerTH - ¿Cerrar mesa? - - + + Kick Expulsar - - + + Do you want to kick <b>%1</b><br>from this game? ¿Desea expulsar a <b>%1</b><br>de esta partida? - - - - + + + + <b>%1</b> secs left quedan <b>%1</b> segundos - + vote voto - + votes votos + - Chat is only available to registered players. La charla sólo está disponible para usuarios registrados. - + Spectators Espectadores @@ -6007,14 +6066,14 @@ Si está ausente temporalmente, puede utilizar el modo "ausente" en el Usted tiene <b>%1</b> %2 en contra.<br>Son necesarios <b>%3</b> para expulsarle. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. El jugador <b>%1</b> tiene <b>%2</b> %3<br>en contra. Son necesarios <b>%4</b> votos para la expulsión. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Tiene <b>%1</b> %2 en contra.<br>Son necesarios <b>%3</b> votos para la expulsión. @@ -6090,7 +6149,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account Crear nueva cuenta de usuario @@ -6255,10 +6314,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Error al cargar el perfil del servidor @@ -6269,7 +6328,7 @@ p, li { white-space: pre-wrap; } - + Save Server Profile Error Error al guardar el perfil @@ -6278,34 +6337,34 @@ p, li { white-space: pre-wrap; } Un perfil con el nombre: " - - - - + + + + Could not load server-profiles-file: %1 No se puede cargar el archivo de perfiles de servidores: %1 - + Read Server-Profile List Error Error al leer la lista de perfiles - + Could not read server-profiles list No se puede leer la lista de perfiles - - + + Save Server-Profile-File Error Error al guardar la lista de perfiles - - + + Could not save server-profiles-file: %1 No se puede guardar el archivo de perfiles de servidores: @@ -6318,7 +6377,7 @@ p, li { white-space: pre-wrap; } - + A profile with the name: %1 already exists. Would you like to overwrite ? Ya existe un perfil con el nombre %1. @@ -6386,12 +6445,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order Orden manual de ciegas - + You cannot set more than 30 manual blinds. No puede fijar más de 30 ciegas manuales. @@ -6526,14 +6585,14 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Error en el archivo del avatar - + Please select an avatar from the list! Seleccione un avatar de la lista. @@ -6544,7 +6603,7 @@ Please enter an valid picture! Introduzca una imagen válida. - + Select external avatar picture Seleccione una imagen de avatar externa @@ -6553,19 +6612,19 @@ Introduzca una imagen válida. Imágenes (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! El archivo de la imagen seleccionada en demasiado grande. (máx. 30KB) Seleccione otro más pequeño. - + Images (*.png *.jpg *.gif) Imágenes (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! La imagen de avatar introducida no existe. @@ -6608,10 +6667,10 @@ p, li { white-space: pre-wrap; } Postura mínima: - - - - + + + + Start Cash: Dinero inicial: @@ -6624,24 +6683,24 @@ p, li { white-space: pre-wrap; } Opciones del servidor - - - - + + + + Server Port: Puerto del servidor: - - - - + + + + Use IPv6 Usar IPv6 - - + + Server Password: Contraseña del servidor: @@ -6650,20 +6709,20 @@ p, li { white-space: pre-wrap; } Opciones predeterminadas de la partida en red - - + + Computer Engine Jugador virtual - - + + Opponent 5: Oponente 5: - - + + Opponent 3: Oponente 3: @@ -6680,31 +6739,31 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Jugador humano:<br /><span style=" font-size:11pt; font-style:italic;">(Este apodo se utilizará también para acceder a las partidas en Internet)</span></p></body></html> - - + + Opponent 2: Oponente 2: - - + + Opponent 6: Oponente 6: - - + + Opponent 1: Oponente 1: - - + + Opponent 4: Oponente 4: - + Human Player: Jugador humano: @@ -6717,25 +6776,30 @@ p, li { white-space: pre-wrap; } Día(s) - - + + Log File Directory: Directorio del archivo de registro: - + Log Messages Mensajes de registro - + + Show network state color in the corner of the avatar + + + + Local Game Settings Opciones de la partida local - + Network Game Settings Opciones de la partida en red @@ -6770,8 +6834,8 @@ p, li { white-space: pre-wrap; } Mostrar herramientas a la izquierda - - + + Play blind raise notification Notificar incremento de ciegas @@ -6780,8 +6844,8 @@ p, li { white-space: pre-wrap; } Mostrar mensaje de la barra de estado - - + + Show game settings dialog on every new game Mostrar diálogo de opciones en cada nueva partida @@ -6790,20 +6854,20 @@ p, li { white-space: pre-wrap; } Manos antes de subir la postura mínima: - - + + Number of players: Número de jugadores: - - + + Game Speed: Velocidad del juego: - - + + Pause between hands (press "start" button to go on) Pausa entre manos (pulsar botón "Iniciar" para seguir) @@ -6816,8 +6880,8 @@ p, li { white-space: pre-wrap; } Versión del motor para los ordenadores oponentes: - - + + Enable/Disable Logging Activar/Desactivar registro @@ -6826,8 +6890,8 @@ p, li { white-space: pre-wrap; } Guardar los archivos de registro durante - - + + Write log after every: Escribir el registro cada: @@ -6838,8 +6902,8 @@ p, li { white-space: pre-wrap; } Mostrar botones para las ciegas - - + + Play sound effects Reproducir efectos de sonido @@ -6847,27 +6911,27 @@ p, li { white-space: pre-wrap; } 0.4 (current) 0.4 (actual) - - - - - - Use SCTP - Utilizar SCTP - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">¿Qué es esto?</a> - + Use SCTP + Utilizar SCTP + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">¿Qué es esto?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">¿Qué es esto?</a> @@ -6888,20 +6952,20 @@ p, li { white-space: pre-wrap; } Preferencias - - + + Maximum number of players: Número máximo de jugadores: - - + + Sound Volume: Volumen del sonido: - - + + 10 10 @@ -6910,20 +6974,20 @@ p, li { white-space: pre-wrap; } Tiempo de acción del jugador (seg): - - + + action (high frequent disc access) acción (acceso a disco muy frecuente) - - + + hand (medium disc access) mano (acceso a disco medio) - - + + game (low disc access) partida (acceso a disco bajo) @@ -6940,18 +7004,18 @@ p, li { white-space: pre-wrap; } - + Sound Sonido - - + + Network Server Settings Opciones de partida en red - + Internet Game Settings Opciones de partida en Internet @@ -6960,14 +7024,14 @@ p, li { white-space: pre-wrap; } Opciones del servidor de Internet (dedicado) - - + + Server Address: Dirección del servidor: - - + + Use password for private game: Utilizar contraseña para partida privada: @@ -6984,10 +7048,10 @@ p, li { white-space: pre-wrap; } #pokerth - - - - + + + + First small blind: Primera ciega pequeña: @@ -6998,32 +7062,32 @@ p, li { white-space: pre-wrap; } Desactivar pantalla de bienvenida - - + + Game Table Mesa de juego - - + + Card Deck Baraja - - + + Card Back Respaldo - - + + Use card back from card style Utilizar respaldo del estilo de la carta - - + + Use custom card back picture: Utilizar respaldo personalizado: @@ -7040,70 +7104,70 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: La mejor calidad se obtiene con un tamaño de </span><span style=" font-weight:600; font-style:italic;">ancho=76, alto=48.</span></p></body></html> - - - - + + + + Raise blinds: Subir ciegas: - - - - - - - - + + + + + + + + Every: Cada: - - - - + + + + hands manos - - - - + + + + minutes minutos - - - - + + + + Raise mode: Modo de subida: - - - - + + + + Always double blinds Duplicar ciegas siempre - - - - + + + + Manual blinds order: Orden manual de ciegas: - - - - + + + + Edit ... Editar... @@ -7114,7 +7178,7 @@ p, li { white-space: pre-wrap; } Idioma: - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7133,26 +7197,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: La mejor calidad se obtiene con un tamaño de </span><span style=" font-weight:600; font-style:italic;">ancho=48, alto=76.</span></p></td></tr></table></body></html> - - + + Sound Categories Categorías de sonidos - - + + Play game actions sounds like "check", "call", "raise" Reproducir sonidos de acciones como "check", "call", "raise" - - + + Play lobby chat notifications Reproducir notificaciones de la charla - - + + Play network/internet game notifications like "player joined the game" Reproducir notificaciones de partida en red como "un jugador se ha unido" @@ -7161,7 +7225,7 @@ p, li { white-space: pre-wrap; } Activar/Desactivar la sala de charla (servidor IRC) - + Player Nicks/Avatars Apodos/Avatares de los jugadores @@ -7177,7 +7241,7 @@ p, li { white-space: pre-wrap; } Partida en red / Internet - + Switch keyboard focus to bet-input-field if it's your turn Seleccionar el campo de entrada de apuestas en su turno @@ -7197,33 +7261,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: la mejor calidad se obtiene con las dimesiones</span><span style=" font-weight:600; font-style:italic;">ancho=100, alto=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Límite de tiempo por mano: - - - - + + + + s s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -7234,7 +7298,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: Las </span><span style=" font-weight:600; font-style:italic;">opciones de la partida</span><span style=" font-style:italic;"> predeterminadas, como "Número máximo de jugadores", "Dinero inicial" y "Ciega pequeña" se leerán </span><span style=" font-weight:600; font-style:italic;">de las opciones de partida en red.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -7245,50 +7309,50 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: la mejor calidad de imagen se obtiene con las dimensiones </span><span style=" font-weight:600; font-style:italic;">ancho=50, alto=50.</span></p></body></html> - - + + Automatic Server Configuration URL URL de configuración automática de servidores - + Factory Settings Configuración original - + Show country flag in the corner of avatar Mostrar bandera del país en la esquina del avatar - + Activate the "accidentally call after big raise" blocker Activar el bloqueo de "call accidental después de una subida grande" - - - - + + + + Description Descripción - - - - + + + + Maintainer Mantenedor - - - + + + State Estado @@ -7311,32 +7375,32 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Nota: La mejor calidad se obtiene con un tamaño de </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">ancho=48, alto=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Espera entre manos: - - + + Server Servidor - - + + Serverlist Address: Dirección de la lista de servidores: - - + + Manual Server Configuration Configuración manual del servidor - - + + Game Partida @@ -7353,43 +7417,43 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Nota: Se utilizarán </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">opciones de partida</span><span style=" font-size:12pt; font-style:italic;"> predeterminadas como &quot;Número máximo de jugadores&quot;, &quot;Dinero inicial&quot; y &quot;Ciega pequeña&quot; </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">de la configuración de partidas en red.</span></p></body></html> - - + + Default game name: Nombre de partida: - - + + Default game type: Tipo de partida: - - + + Standard Normal - - + + Registered players only Sólo registrados - - + + Invited players only Sólo invitados - - + + Ranking game Clasificatoria - + Show lobby chat Mostrar charla principal @@ -7401,59 +7465,64 @@ p, li { white-space: pre-wrap; } Común - + Do not hide avatars of players which are on the ignore list No ocultar los avatares de los jugadores en la lista de ignorados - + Disable emoticons in the chat Desactivar emoticonos en la charla - - + + Show network state color on the avatar + + + + + Automatically leave the table after the game finished Abandonar la mesa automáticamente al terminar la partida - - + + Allow spectators to watch the game Permitir espectadores en la partida - - + + Ignored Players Jugadores ignorados - - + + Player Jugador - - + + Remove Player Eliminar jugador - + Note: Best avatar quality with image ratio like width=50, height=50. Nota: la mejor calidad de avatar se obtiene con una imagen con ancho=alto=50. - + OK Aceptar - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7466,14 +7535,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-style:italic;">(Este apodo también se utilizará para el acceso a partidas en Internet)</span></p></body></html> - - + + Store log files for: Guardar registros durante: - - + + Day(s) Día(s) @@ -7498,14 +7567,14 @@ p, li { white-space: pre-wrap; } Exportar como HTML - - + + Reset all settings to default ... Reiniciar todos los parámetros... - - + + Note: You can not reset all settings to default during a running game! Nota: no es posible reiniciar los parámetros durante una partida. @@ -7572,15 +7641,15 @@ p, li { white-space: pre-wrap; } Contraseña: - - + + Avatar Server: Servidor de avatares: - + Style Estilo @@ -7598,33 +7667,33 @@ p, li { white-space: pre-wrap; } Activate Activar - - - - - - Add ... - Añadir... - + Add ... + Añadir... + + + + + + Remove Eliminar - - - - + + + + Preview - Information: Previsualización - Información: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7641,8 +7710,8 @@ p, li { white-space: pre-wrap; } Estilos de baraja - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7655,29 +7724,29 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Obtener nuevos estilos de baraja de PokerTH...</span></a></p></body></html> - + Note: Best quality with image ratio like width=48, height=76. Nota: la mejor calidad se obtiene con una imagen de ancho=48 y alto=76. - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Nota: las preferencias predeterminadas, como el número máximo de jugadores, el dinero inicial y la ciega pequeña se obtendrá de la configuración de partidas en red. - + (This nick will also be used for the online game login) (Este apodo también se utilizará en las partidas de Internet) - - + + Opponent 7: Oponente 7: - - + + Opponent 8: Oponente 8: @@ -7686,8 +7755,8 @@ p, li { white-space: pre-wrap; } Oponente 4: {10:?} - - + + Opponent 9: Oponente 9: @@ -7695,11 +7764,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Error en las preferencias @@ -7716,7 +7785,7 @@ Please select an valid directory! Introduzca un directorio válido. - + Select your flipside picture Seleccione la imagen del respaldo @@ -7725,24 +7794,24 @@ Introduzca un directorio válido. Imágenes (*.png) - + Open Directory Abrir directorio - + Images (*.png *.jpg *.gif) Imágenes (*.png *.jpg *.gif) - - + + Blinds Error Error en las ciegas - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7751,27 +7820,27 @@ es menor que la primera ciega pequeña actual. El valor de la primera ciega pequeña será el máximo permitido. - + Dutch Holandés - + English Inglés - + French Francés - + German Alemán - + Hungarian Húngaro @@ -7780,294 +7849,294 @@ El valor de la primera ciega pequeña será el máximo permitido. Portugués - + Russian Ruso - + Turkish Turco - + Language Changed El idioma ha cambiado - + You have changed application language to %1. Please restart PokerTH to load new language! Ha cambiado el idioma de la aplicación a %1. Reinicie PokerTH para cargar el nuevo idioma. - + Italian Italiano - + Slovak Eslovaco - + The entered flipside picture doesn't exist. Please enter an valid picture! La imagen del respaldo introducida no existe. Seleccione una imagen válida. - - + + The log file directory doesn't exist. Please select an valid directory! El directorio del archivo de registro no existe. Seleccione un directorio válido. - + Norwegian Noruego - + Spanish Español - + Bulgarian Búlgaro - + Polish Polaco - + Chinese Chino - + Greek Griego - + Swedish Sueco - + The entered server list address is not a valid URL. Please enter a valid server list address! La dirección de la lista de servidores introducida no es una URL válida. Introduzca una dirección válida. - + Finnish Finés - + Afrikaans Afrikaans - + Catalan Catalán - + Czech Checo - + Danish Danés - + Galician Gallego - + Japanese Japonés - + Lithuania Lituano - + Portuguese-Brazilian Portugués Brasil - + Portuguese-Portuguese Portugués Portugal - + Scottish Gaelic Gaélico escocés - + Tamil Tamil - + Vietnamese Vietnamita - + The opponent names are not unique. Please choose different names for each Opponent! Los nombres de los oponentes no son únicos. Introduzca un nombre distinto para cada oponente. - + Settings Information Información de configuración - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Ha cambiado el directorio del archivo de registro. Reinicie PokerTH para comenzar a utilizar el nuevo directorio. - - + + Maintainer Name Nombre del mantenedor - - + + Maintainer EMail eMail del mantenedor - - + + Create Date Fecha de creación - + Windows Behaviour Comportamiento de las ventanas - + scaleable escalable - + fixed fijo - + Minimum Size Tamaño mínimo - + Maximum Size Tamaño máximo - + Fixed Size Tamaño fijo - + State Estado - + Please select your game table style Seleccione su estilo de mesa - + PokerTH game table styles (*.xml) Estilos de mesa de PokerTH (*.xml) - + Game Table Style Error Error en el estilo de mesa - + Selected game table style file is already in the list. Please select another one to add! El estilo de mesa seleccionado ya está en la lista. Seleccione otro para añadirlo. - + Game Table Style File Error Error en el archivo del estilo de mesa - + Could not load game table style file correctly. Style will not be placed into list! No se puede cargar el archivo de estilo de mesa. El estilo no aparecerá en la lista. - + Please select your card deck style Seleccione su estilo de baraja - + PokerTH card deck styles (*.xml) Estilos de baraja de PokerTH (*.xml) - + Card Deck Style Error Error en el estilo de baraja - + Selected card deck style file is already in the list. Please select another one to add! El estilo de baraja seleccionado ya está en la lista. Seleccione otro para añadirlo. - + Card Deck Style File Error Error en el archivo del estilo de baraja - + Could not load card deck style file correctly. Style will not be placed into list! No se puede cargar el archivo de estilo de baraja. @@ -8106,12 +8175,12 @@ El estilo no aparecerá en la lista. Registro de texto plano de PokerTH (*.txt) - + PokerTH - Settings PokerTH - Configuración - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Atención: esto eliminará todos sus cambios en la configuración y cerrará PokerTH. @@ -8201,12 +8270,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Error en el servidor - + You should not kick yourself from this game! No puede expulsarse a usted mismo. diff --git a/ts/pokerth_fi.ts b/ts/pokerth_fi.ts index c6dba456..7a62d5a0 100644 --- a/ts/pokerth_fi.ts +++ b/ts/pokerth_fi.ts @@ -414,106 +414,106 @@ Ota yhteyttä pelipöytätyylin tekijään %3. - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML Vie PokerTH:n lokitiedosto HTML-tiedostoon - + PokerTH HTML log (*.html) PokerTH HTML loki (*.html) - + Export PokerTH log file to plain text Vie PokerTH:n lokitiedosto tekstitiedostoon - + PokerTH plain text log (*.txt) PokerTH tekstitiedostoloki (*.txt) - + Save PokerTH log file Tallenna PokerTH:n lokitiedosto - + PokerTH SQL log (*.pdb) PokerTH SQL loki (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -545,22 +545,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar Ilmoita sopimaton avatar - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Et saa enää chat-viestejä tai pelikutsuja tältä käyttäjältä.<br>Haluatko varmasti olla huomioimatta pelaajaa <b>%1</b>? - - + + + PokerTH - Question PokerTH - Kysymys - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? Haluatko varmasti ilmoittaa pelaajan "%1" avatarin sopimattomaksi? @@ -1103,127 +1141,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Tietoa PokerTH %1:stä - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -1340,12 +1378,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Manuaalinen sokkopanosjärjestys - + You cannot set more than 30 manual blinds. Voit asettaa enintään 30 manuaalista sokkopanosta. @@ -1379,48 +1417,48 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Et voi liittyä Internet-peliaulaan "Human Player" nimimerkkinäsi. Valitse toinen nimimerkki. - - - + + + Nick name: Nimimerkki: - + Your player name is already used by another player. Please choose a different name. Nimesi on jo käytössä toisella pelaajalla. Valitse toinen nimi. - + The player name is too short, too long or invalid. Please choose another one. Nimesi on liian lyhyt, pitkä tai kelpaamaton. Valitse toinen nimi. - + There is already a game with your chosen game name. Please choose another one! Toinen samanniminen peli on jo käynnissä. Valitse toinen nimi! - + There is a forbidden word in your chosen game name. Please choose another one! Valitsemassasi pelinimessä on kielletty sana. Valitse toinen nimi! - - + + Game name: Pelin nimi: @@ -1459,27 +1497,27 @@ Valitse toinen nimi! connectToServerDialogImpl - + Resolving address... Selvitetään osoitetta... - + Connecting to server... Yhdistetään palvelimeen... - + Starting session... Aloitetaan istuntoa... - + Connection established! Yhteys vahvistettu! - + Reading server list... Luetaan palvelinlistaa... @@ -1630,7 +1668,7 @@ Valitse toinen nimi! <i>Tuplaa sokot %1:n käden välein</i> - + %1's game Pelaajan %1 peli @@ -2016,7 +2054,7 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... Aloitetaan peli. Odottakaa hetki ... @@ -2025,46 +2063,46 @@ p, li { white-space: pre-wrap; } %1'n peli - + Joining a private Game Liitytään yksityiseen peliin - + You are about to join a private game. Please enter the password! Olet liittymässä yksityiseen peliin. Anna salasana! - + open avoin - - - - + + + + Game Info Peli-info - - + + Game Peli - - + + Players Pelaajat - - + + State Tila @@ -2074,15 +2112,15 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Available Players Vapaat pelaajat @@ -2098,39 +2136,44 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Pelaajan tiedot ... - + Report inappropriate game name - - - + + + Standard Tavallinen - - - + + + Registered players only Vain rekistöröityneet pelaajat - - - + + + Invited players only Vain kutsutut pelaajat - - - + + + Ranking game Sijoituspeli @@ -2140,52 +2183,52 @@ p, li { white-space: pre-wrap; } - - + + T T - + Waiting for the start of the next hand to rejoin the game ... Odotetaan seuraavan käden alkamista peliin liittymiseksi ... - + Click here to view the online rankings - + Spectate - - + + Time - - + + Show player stats Näytä pelaajatilastot - - + + Admin action ... - + Total kickban - + Close game @@ -2194,32 +2237,32 @@ p, li { white-space: pre-wrap; } Yhdistettyjä pelaajia - Maks. %1 - + running käynnissä - - + + running games: %1 pelejä käynnissä: %1 - - + + open games: %1 avoimia pelejä: %1 - - + + Players (%1) - - - + + + Spectators (%1) @@ -2229,59 +2272,59 @@ p, li { white-space: pre-wrap; } Kutsu %1 - + Ignore %1 Jätä %1 huomiotta - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 on kutsu peliin%2 pelaajan %3 toimesta.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 on hylännyt kutsun peliin %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 ei voi liittyä peliin %2, koska hän on kiireinen.</span> - + The game will start in<br><b>%1</b> seconds. Peli alkaa <br><b>%1</b> sekunnin kuluttua. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Olet liittynyt vain kutsutuille tarkoitettuun peliin. Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaiden pelaajien listasta. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Sinut on kutsuttu peliin<b>%1</b> pelaajan <b>%2</b> toimesta.<br>Haluatko liittyä tähän peliin? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Et saa enää chat-viestejä tai pelikutsuja tältä käyttäjältä.<br>Haluatko varmasti jättää pelaajan<b>%1</b> huomiotta? @@ -2290,8 +2333,8 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid Pelaajia chatissa: %1 - - + + connected players: %1 yhdistettyjä pelaajia: %1 @@ -2300,42 +2343,42 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid Yhdistetyt pelaajat - + hands kädet - + minutes minuutit - + double blinds tupla sokkopanokset - + manual blinds order manuaalinen sokkopanosjärjestys - + Server Error Palvelinvirhe - + You should not kick yourself from this game! Sinun ei tule potkaista itseäsi tästä pelistä! - + search for player ... hae pelaajaa ... - + Chat is only available to registered players. Chat on vain rekistöröityneille pelaajille. @@ -2345,1263 +2388,1279 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid Kutsu pelaaja ... - + Ignore player ... Jätä pelaaja huomiotta ... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 on pelissä "%2". - + %1 is not playing at the moment. %1 ei pelaa tällä hetkellä. - - + + PokerTH - Info Message PokerTH - Infoviesti - - + + - + + PokerTH - Question PokerTH - Kysymys - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Afghanistan Afganistan - + ALand Islands Ahvenanmaa - + Albania Albania - + Algeria Algeria - + American Samoa Amerikan Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Etelämanner - + Antigua And Barbuda Antigua ja Barbuda - + Argentina Argentiina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Itävalta - + Azerbaijan Azerbaidžan - + Bahamas Bahama - + Bahrain Bahrain - + Bangladesh Bangladesh - + Barbados Barbados - + Belarus Valko-Venäjä - + Belgium Belgia - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia ja Hertsegovina - + Botswana Botswana - + Bouvet Island Bouvet'nsaari - + Brazil Brasilia - + British Indian Ocean Territory Brittiläinen Intian valtameren alue - + Brunei Darussalam Brunei - + Bulgaria Bulgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodža - + Cameroon Kamerun - + Canada Kanada - + Cape Verde Kap Verde - + Cayman Islands Caymansaaret - + Central African Republic Keski-Afrikan tasavalta - + Chad - + Chile - + China Kiina - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba Kuuba - + Cyprus - + Czech Republic - + Denmark Tanska - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt Egypti - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia Viro - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland Suomi - + France Ranska - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany Saksa - + Ghana - + Gibraltar - + Greece Kreikka - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary Unkari - + Iceland Islanti - + India Intia - + Indonesia - + Iran, Islamic Republic Of - + Iraq Irak - + Ireland Irlanti - + Isle Of Man - + Israel Israeli - + Italy Italia - + Jamaica Jamaika - + Japan Japani - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania liettua - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico Meksiko - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway Norja - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru Peru - + Philippines Filippiinit - + Pitcairn - + Poland Puola - + Portugal Portugali - + Puerto Rico - + Qatar - + Reunion - + Romania Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia Slovakia - + Slovenia Slovenia - + Solomon Islands - + Somalia Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain Espanja - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden Ruotsi - + Switzerland Sveitsi - + Syrian Arab Republic - + Taiwan, Province Of China Taiwan, Kiinan maakunta - + Tajikistan - + Tanzania, United Republic Of - + Thailand Thaimaa - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey Turkki - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States Yhdysvallat - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3900,19 +3959,19 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Pysäytä @@ -3925,7 +3984,7 @@ Olet vapaa kutsumaan muita pelaajia klikkaamalla heidän nimimerkkiänsä vapaid Ctrl+N aloittaaksesi uusi peli - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Avoimen lähdekoodin Texas Holdem -alusta @@ -3944,23 +4003,23 @@ Valitse toinen nimi. F1 - All-In | F2 - Panosta/Korota | F3 - Passaa/Katso | F4 - Luovuta - - - - - - - - + + + + + + + + Start Aloita - - - - - + + + + + Lobby Aula @@ -4171,28 +4230,28 @@ Valitse toinen nimi. Auto-tila asetettu: Passaa tai luovuta. - - + + Chat Chat - + Closing PokerTH during network game Suljetaan PokerTH verkkopelin aikana - + You are the hosting server. Do you want to close PokerTH anyway? Ylläpidät palvelinta. Haluatko silti sulkea PokerTH:n? - + PokerTH - Internet Game Message PokerTH - Internet-peliviesti - + Attention! Do you really want to leave the current game and go back to the lobby? Huomio! Haluatko todella jättää nykyisen pelin @@ -4253,64 +4312,64 @@ Varmista, että olet yhdistetty suoraan internetiin. Ei voitu avata kohdetiedostoa ladattaessa palvelinlistaa. - + PokerTH %1 PokerTH %1 - - + + Chance Todennäköisyys - + Really want to exit? Haluatko varmasti poistua? - + PokerTH - Close Table? PokerTH - Sulje pöytä? - - + + Kick Potkaise - - + + Do you want to kick <b>%1</b><br>from this game? Haluatko potkaista <b>%1</b><br>tästä pelistä? - - - - + + + + <b>%1</b> secs left <b>%1</b> sekunttia jäljellä - + vote ääni - + votes ääntä + - Chat is only available to registered players. Chat on saatavilla vain rekistöröityneille pelaajille. - + Spectators @@ -4323,14 +4382,14 @@ Varmista, että olet yhdistetty suoraan internetiin. Sinulla on <b>%1</b> %2 itseäsi vastaan. <br><b>%3</b> ääntä tarvitaan potkaisuun. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Pelaajalla <b>%1</b> on <b>%2</b> %3<br>häntä vastaan. <b>%4</b> ääntä tarvitaan potkaisuun. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Sinulla on <b>%1</b> %2 itseäsi vastaan.<br><b>%3</b> ääntä tarvitaan potkaisuun. @@ -4406,7 +4465,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account @@ -4551,10 +4610,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Lataa Palvelinprofiilitiedostovirhe @@ -4565,45 +4624,45 @@ p, li { white-space: pre-wrap; } - - - - + + + + Could not load server-profiles-file: %1 - + Save Server Profile Error Tallenna palvelinprofiilivirhe - + A profile with the name: %1 already exists. Would you like to overwrite ? Profiili nimellä: %1 on jo olemassa. Korvataanko vanha? - + Read Server-Profile List Error Lue Palvelintiedostolistavirhe - + Could not read server-profiles list Ei voitu lukea palvelinprofiililistaa - - + + Save Server-Profile-File Error Tallenna palvelinprofiilitiedostovirhe - - + + Could not save server-profiles-file: %1 @@ -4676,12 +4735,12 @@ Korvataanko vanha? manualBlindsOrderDialogImpl - + Manual Blinds Order Manuaalinen sokkopanosjärjestys - + You cannot set more than 30 manual blinds. Voit asettaa enintään 30 manuaalista sokkopanosta. @@ -4808,38 +4867,38 @@ Korvataanko vanha? selectAvatarDialogImpl - - - + + + Avatar File Error Avatarissa tiedostovirhe - + Please select an avatar from the list! Valitse avatari listasta! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Valitun kuvan koko on liian suuri. (max. 30Kb) Valitse pienempi kuva! - + The entered avatar picture doesn't exist. Please enter an valid picture! Haettua avataria ei ole olemassa. Valitse olemassa oleva kuva! - + Select external avatar picture Valitse ulkoinen avatarikuva - + Images (*.png *.jpg *.gif) Kuvat (*.png *.jpg *.gif) @@ -4903,8 +4962,8 @@ Valitse olemassa oleva kuva! Käännä F-näppäimien järjestys (F1 - F4) - - + + Play blind raise notification @@ -4915,7 +4974,7 @@ Valitse olemassa oleva kuva! Verkko- / Internet-peli - + Switch keyboard focus to bet-input-field if it's your turn Vaihda näppäimistöasettelu panostussyöttökentäksi omalla vuorollasi @@ -4945,7 +5004,7 @@ p, li { white-space: pre-wrap; } - + Sound Ääni @@ -4962,50 +5021,50 @@ p, li { white-space: pre-wrap; } Älä näytä roiskeruutua käynnistettäessä - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Game Table Pelipöytä - - + + Card Deck Korttipakka - - + + Card Back Korttien selkämys - - + + Use card back from card style Käytä korttipakkatyylin selkämystä - - + + Use custom card back picture: Käytä kustomoitua korttien selkämyskuvaa: @@ -5022,180 +5081,180 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Huomio: Paras laatu kuvilla, joiden suhde on </span><span style=" font-weight:600; font-style:italic;">leveys=76, korkeus=48.</span></p></body></html> - - + + Play sound effects Toista ääniefektit - - + + Sound Volume: Äänenvoimakkuus: - - + + 10 10 - - + + Sound Categories Äänikategoriat - - + + Play game actions sounds like "check", "call", "raise" Toista toimintoäänet, kuten "passaa", "katso, "korota" - - + + Play lobby chat notifications Toista chattiaulahuomautukset - - + + Play network/internet game notifications like "player joined the game" Toista verkko-/internet-pelissä huomautukset, kuten "pelaaja liittyi peliin" - + Local Game Settings Paikallispelin asetukset - - + + Number of players: Pelaajien määrä: - - - - + + + + Start Cash: Aloitusraha: - - - - - - - - + + + + + + + + $ - - - - + + + + First small blind: Esimmäinen pieni sokkopanos: - - - - + + + + Raise blinds: Korota sokkopanoksia: - - - - - - - - + + + + + + + + Every: Jokaisen: - - - - + + + + hands käden jälkeen - - - - + + + + minutes minuutin jälkeen - - - - + + + + Raise mode: Korotustila: - - - - + + + + Always double blinds Tuplaa aina sokkopanokset - - - - + + + + Manual blinds order: Manuaalinen sokkopanosjärjestys: - - - - + + + + Edit ... Muokkaa ... - - + + Game Speed: Pelin nopeus: - - + + Pause between hands (press "start" button to go on) Pidä taukoa käsien välillä (paina "aloita" jatkaaksesi) - - + + Show game settings dialog on every new game Näytä pelin asetukset jokaisessa uudessa pelissä - + Network Game Settings Verkkopelin asetukset - - + + Maximum number of players: Pelaajien maksimimäärä: @@ -5220,78 +5279,83 @@ p, li { white-space: pre-wrap; } Pelinopeus tietokonevastuksille: - - + + Timeout for player action: Aikaraja pelaajan toiminnalle: - - - - + + + + s s - - + + Network Server Settings Verkkopelin asetukset - - + + Server Password: Palvelimen salasana: - - - - + + + + Server Port: Palvelinportti: - - - - - - Use SCTP - Käytä SCTP - - - - - - - Use IPv6 - Käytä IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://fi.wikipedia.org/wiki/Ipv6">Mikä tämä on?</a> - + Use SCTP + Käytä SCTP + + + + + + + Use IPv6 + Käytä IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://fi.wikipedia.org/wiki/Ipv6">Mikä tämä on?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Mikä tämä on?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings Internet-pelin asetukset - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5306,14 +5370,14 @@ p, li { white-space: pre-wrap; } Internet-peliasetukset (pysyvä palvelin) - - + + Server Address: Palvelinosoite: - - + + Use password for private game: Käytä salasanaa yksityiseen peliin: @@ -5342,49 +5406,49 @@ p, li { white-space: pre-wrap; } Pelaajien nimimerkit - - + + Computer Engine Tietokonealusta - - + + Opponent 6: Vastustaja 6: - - + + Opponent 5: Vastustaja 5: - - + + Opponent 4: Vastustaja 4: - - + + Opponent 3: Vastustaja 3: - - + + Opponent 2: Vastustaja 2: - - + + Opponent 1: Vastustaja 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5395,13 +5459,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Huom: Paras laatu kuvilla, joiden suhteet vastaavat </span><span style=" font-weight:600; font-style:italic;">leveys=50, korkeus=50.</span></p></body></html> - + Human Player: Ihmispelaaja: - - + + Enable/Disable Logging Salli/estä kirjautuminen @@ -5410,65 +5474,70 @@ p, li { white-space: pre-wrap; } Tallenna logit kohteeseen - - + + Log File Directory: Lokikansio: - - + + Write log after every: Kirjoita loki jokaisen: - + + Show network state color on the avatar + + + + Note: Best quality with image ratio like width=48, height=76. - - + + Allow spectators to watch the game - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + action (high frequent disc access) toiminnon jälkeen (korkea levynkäyttö) - - + + hand (medium disc access) Käden jälkeen (keskiverto levynkäyttö) - - + + game (low disc access) pelin jälkeen (alhainen levynkäyttö) - + Log Messages Lokiviestit - + Player Nicks/Avatars Pelaajien nimimerkit/avatarit @@ -5480,7 +5549,7 @@ p, li { white-space: pre-wrap; } - + Factory Settings @@ -5490,36 +5559,36 @@ p, li { white-space: pre-wrap; } Näytä vasen työkalulaatikko - + Show country flag in the corner of avatar Näytä maan lippu avatarin kulmassa - - - - + + + + Description Kuvaus - - - - + + + + Maintainer Ylläpitäjä - - - + + + State Tila - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5538,119 +5607,119 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Huom: Paras laatu kuvasuhteella </span><span style=" font-weight:600; font-style:italic;">leveys=48, korkeus=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Viive käsien välillä: - - + + Server Palvelin - - + + Automatic Server Configuration URL Automaattinen palvelin muotoilu URL - - + + Serverlist Address: Palvelinlistaosoite: - - + + Manual Server Configuration Manuaalinen palvelinmuotoilu - - + + Game Peli - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Oletus pelinimi: - - + + Default game type: Oletuspelityyppi: - - + + Standard Tavallinen - - + + Registered players only Vain rekistöröityneet pelaajat - - + + Invited players only Vain kutsutut pelaajat - - + + Ranking game Sijoituspeli - + Show lobby chat Näytä aulan chat - - + + Automatically leave the table after the game finished Poistu pöydästä automaattisesti pelin päätyttyä - - + + Ignored Players Jätä pelaaja huomiotta - - + + Player Pelaaja - - + + Remove Player Poista pelaaja - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5663,14 +5732,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ihmispelaaja:<br /><span style=" font-style:italic;">(Tätä nimimerkkiä käytetään myös online-peliin kirjautumisessa)</span></p></body></html> - - + + Store log files for: Säilö lokitiedostot sijaintiin: - - + + Day(s) Päivä(ä) @@ -5683,14 +5752,14 @@ p, li { white-space: pre-wrap; } Vie HTML-tiedostoon - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5737,15 +5806,15 @@ p, li { white-space: pre-wrap; } Salasana: - - + + Avatar Server: Avataripalvelin: - + Style Tyyli @@ -5763,33 +5832,33 @@ p, li { white-space: pre-wrap; } Activate Aktivoi - - - - - - Add ... - Lisää ... - + Add ... + Lisää ... + + + + + + Remove Poista - - - - + + + + Preview - Information: Esikatselu - Tiedot: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5806,8 +5875,8 @@ p, li { white-space: pre-wrap; } Korttipakkatyylit - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5820,14 +5889,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Hanki uusia PokerTH-korttipakkatyylejä ...</span></a></p></body></html> - - + + Opponent 7: Vastustaja 7: - - + + Opponent 8: Vastustaja 8: @@ -5836,8 +5905,8 @@ p, li { white-space: pre-wrap; } Vastustaja 1: {10:?} - - + + Opponent 9: Vastustaja 9: @@ -5845,37 +5914,37 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - + Dutch hollanti - + English englanti - + French ranska - + German saksa - + Hungarian unkari - + Italian italia - + Norwegian norja @@ -5884,90 +5953,90 @@ p, li { white-space: pre-wrap; } portugali - + Russian venäjä - + Slovak slovakia - + Spanish espanja - + Tamil tamil - + Turkish turkki - - - - - + + + + + Settings Error Asetusvirhe - + The entered flipside picture doesn't exist. Please enter an valid picture! Valittua kääntöpuolikuvaa ei ole olemassa. Valitse olemassa oleva kuva! - - + + The log file directory doesn't exist. Please select an valid directory! Lokikansiota ei ole olemassa. Valitse olemassa oleva kansio! - + Language Changed Kieli vaihdettu - + You have changed application language to %1. Please restart PokerTH to load new language! Olet vaihtanut ohjelman kieleen %1. Käynnistä PokerTH ladataksesi uusi kieli! - + Select your flipside picture Valitse kääntöpuolikuvasi - + Images (*.png *.jpg *.gif) Kuvat (*.png *.jpg *.gif) - + Open Directory Avaa kansio - - + + Blinds Error Sokkopanosvirhe - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5976,230 +6045,230 @@ on pienempi kuin nykyinen ensimmäinen pieni sokkopanos! Tämä "ensimmäinen pieni sokkopanosarvo" asetetaan suurimmaksi sallituksi. - + Bulgarian bulgaria - + Polish puola - + Chinese kiina - + Afrikaans afrikaans - + Catalan katalaani - + Czech tšekki - + Greek kreikka - + Lithuania liettua - + Portuguese-Brazilian brasilianportugali - + Portuguese-Portuguese portugalinportugali - + Swedish ruotsi - + The entered server list address is not a valid URL. Please enter a valid server list address! Valittu palvelinlistaosoite ei ole kelvollinen URL. Valitse kelvollinen palvelinlistaosoite! - + Finnish suomi - + Danish tanska - + Galician - + Japanese japani - + Scottish Gaelic - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Ylläpitäjän nimi - - + + Maintainer EMail Ylläpitäjän Email - - + + Create Date Luontipäivämäärä - + Windows Behaviour Ikkunan käyttäyminen - + scaleable Skaalattava - + fixed määritelty - + Minimum Size Minimi koko - + Maximum Size Maksimi koko - + Fixed Size Määritelty koko - + State Tila - + Please select your game table style Valitse pelipöytätyylisi - + PokerTH game table styles (*.xml) PokerTH-pelipöytätyyli (*.xml) - + Game Table Style Error Pelipöytätyylin virhe - + Selected game table style file is already in the list. Please select another one to add! Valittu pelipöytätyyli on jo listassa. Valitse toinen lisätäksesi se! - + Game Table Style File Error Pelipöytätyylin virhe - + Could not load game table style file correctly. Style will not be placed into list! Pelipöytätyylin lataaminen ei onnistunut ongelmitta. Tyyliä ei aseteta listaan! - + Please select your card deck style Valitse korttipakkatyylisi - + PokerTH card deck styles (*.xml) PokerTH-korttipakkatyylit /*.xml) - + Card Deck Style Error Korttipakkatyylin virhe - + Selected card deck style file is already in the list. Please select another one to add! Valittu korttipakkatyyli on jo listassa. Valitse toinen lisätäksesi se! - + Card Deck Style File Error Korttipakkatyylin virhe - + Could not load card deck style file correctly. Style will not be placed into list! Korttipakkatyylin lataaminen ei onnistunut ongelmitta. @@ -6238,12 +6307,12 @@ Tyyliä ei aseteta listaan! PokerTH SQL loki (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6316,12 +6385,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Palvelinvirhe - + You should not kick yourself from this game! Sinun ei tule potkaista itseäsi tästä pelistä! diff --git a/ts/pokerth_fr.ts b/ts/pokerth_fr.ts index 117bc28e..8c567730 100644 --- a/ts/pokerth_fr.ts +++ b/ts/pokerth_fr.ts @@ -435,88 +435,88 @@ Veuillez contacter le mainteneur du style de table de jeu %3. Analyse le fichier de log... - + PokerTH - Delete log files PokerTH - Supprimer les fichiers de log - + Do you really want to delete the selected log files? Voulez-vous vraiment supprimer les fichiers de log sélectionnés ? - + Remove log file Supprimer ce fichier de log - + PokerTH cannot remove this log file, please verify that you have write access to this file! PokerTH ne peut supprimer ce fichier de log, vérifiez si vous avez les droits d'écriture sur ce fichier ! - + Export PokerTH log file to HTML Exporter le fichier log de PokerTH vers HTML - + PokerTH HTML log (*.html) Fichier de log PokerTH en HTML (*.html) - + Export PokerTH log file to plain text Exporter le fichier Log de PokerTH vers un fichier texte - + PokerTH plain text log (*.txt) Fichier de log PokerTH texte (*.txt) - + Save PokerTH log file Enregistrer le fichier de log - + PokerTH SQL log (*.pdb) Fichier de log PokerTH SQL (*.pdb) - + No file received. Aucun fichier reçu. - + File rejected because of too many uploads. Fichier rejeté à cause d'un nombre trop important d'envois. - + File rejected because of too many recent uploads. Please try again later. Fichier rejeté à cause d'un nombre trop important d'envois. Merci de réessayer plus tard. - + The file is too large. Le fichier est trop lourd. - + This file is not a valid and current PokerTH log file. Ce fichier n'est pas un fichier de log PokerTH valide. - + Internal error. Please try again later. ID: Erreur interne. Merci de réessayer plus tard. ID : - - + + Uploading log file Envoi du fichier de log @@ -525,22 +525,22 @@ Veuillez contacter le mainteneur du style de table de jeu %3. Chargement en cours - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. Le chargement a échoué. Veuillez vérifier votre connexion internet ! Le chargement des fichiers de log peuvent échouer si vous utilisez un proxy http. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Le traitement du fichier de log sur le serveur a échoué. Veuillez vérifier que vous chargez un fichier de log valide. - - + + Failure reason: Raison de l'échec : @@ -572,23 +572,61 @@ Veuillez vérifier que vous chargez un fichier de log valide. + Unignore Player + + + + Report inappropriate avatar Avertir que l'avatar est inapproprié - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Vous êtes sur le point de mettre le joueur <b>%1</b> dans la liste des joueurs ignorés.<br> Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joueur, continuer ? - - + + + PokerTH - Question PokerTH - Question - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? Etes-vous sûr de vouloir avertir les développeurs concernant l'avatar de "%1" ? @@ -2589,127 +2627,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) PokerTH %1 pour Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 A propos de PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - Wikimedia Commons : pour leurs différents avatars populaires - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro : pour les avatars/visages de joueurs - + - ZeiZei: for misc avatar pictures - ZeiZei : pour divers avatars - + - kde-look.org: for different gpl licensed sounds - http://kde-look.org : pour les différents sons sous licence gpl - + - doc_dos: for self recorded chip sounds - doc_dos : pour les sons qu'il a enregistrés lui-même - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - thiger, dunkanx, BerndA, coldz : pour leurs différents patches - + - kraut: for internet-game-server hosting and administration - kraut : pour l'hébergement du serveur de parties internet et l'administration - + - danuxi: for startwindow background gfx and danuxi1 table background - danuxi : pour le fond de l'écran de démarrage gfx et le fond de la table danuxi1 - + - heyn: for moderating forum and organise bugtracker and feature requests - heyn : pour la modération sur le forum et l'organisation du système de suivi des bogues et des fonctionnalités - + - texas_outlaw: for new table sounds - texas_outlaw: pour les nouveaux effets sonores - + - Poker engine for the popular Texas Hold'em Poker - Le jeu de Poker Texas Holdem par excellence - + - Singleplayer games with up to 9 computer-opponents - Partie solo avec possibilité de jouer jusqu'à 9 des adversaires contrôlés par l'ordinateur - + - Multiplayer network games - Parties en réseau local - + - Internet online games - Parties sur Internet - + - Changeable gui with online style gallery - Possibilité de changer l'aspect du jeu avec une gallerie en ligne contenant des styles de cartes et de tables - + - Online ranking website with result tables - Certaines parties sont enregistrées et vous pouvez consulter le classement des meilleurs joueurs en ligne - + Project page: Site officiel : - + Authors: Auteurs : - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - idée initiale, architecture de base, implémentation de l'interface graphique, édition des graphismes de l'interface graphique, paquets Linux - + initial idea, basic architecture, engine development - idée initiale, architecture de base, développement du moteur - + basic architecture, network development, windows package, MacOS package - architecture de base, développement réseau, paquet Windows, paquet MacOS - + initial gui graphics design - design initial du graphisme de l'interface graphique @@ -2826,12 +2864,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Ordre manuel des blinds - + You cannot set more than 30 manual blinds. Vous ne pouvez pas configurer plus de 30 blinds manuelles. @@ -2869,40 +2907,40 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Vous ne pouvez pas joindre l'accueil des parties Internet en tant que "Human Player". Veuillez choisir un autre pseudo. - - - + + + Nick name: Pseudo : - + Your player name is already used by another player. Please choose a different name. Ce nom d'utilisateur est déjà utilisée par un autre joueur. Veuillez choisir un nom différent. - + The player name is too short, too long or invalid. Please choose another one. Le nom de joueur est trop court, trop long ou invalide. Veuillez en choisir un autre. - + There is already a game with your chosen game name. Please choose another one! Il y a déjà une partie avec ce nom. Merci de choisir un nouveau nom pour la partie. - + There is a forbidden word in your chosen game name. Please choose another one! Il y a un mot interdit dans le nom de la partie que vous avez choisi. @@ -2915,8 +2953,8 @@ Please choose another one! Veuillez choisir un autre nom. - - + + Game name: Nom de la partie : @@ -2961,27 +2999,27 @@ Merci de renomer cette partie. connectToServerDialogImpl - + Resolving address... Résolution de l'adresse... - + Connecting to server... Connexion au serveur... - + Starting session... Démarrage de la session... - + Connection established! Connexion établie ! - + Reading server list... Réception de la liste de serveurs... @@ -3140,7 +3178,7 @@ Merci de renomer cette partie. <i>Double les blinds toutes les %1 mains</i> - + %1's game Partie de %1 @@ -3550,46 +3588,46 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info Infos sur la partie - + Server Error Erreur du serveur - + You should not kick yourself from this game! Vous ne pouvez pas vous expulser vous-même de la partie ! - + Joining a private Game Rejoindre une partie privée - - + + Game Partie - - + + Players Joueurs - - + + State Statut @@ -3598,17 +3636,17 @@ p, li { white-space: pre-wrap; } Privé - + You are about to join a private game. Please enter the password! Vous êtes sur le point de rejoindre une partie privée. Veuillez entrer le mot de passe. - + running en cours - + open ouvert @@ -3617,27 +3655,27 @@ p, li { white-space: pre-wrap; } Joueurs connectés - + hands mains - + minutes minutes - + double blinds blinds doublées - + manual blinds order ordre manuel des blinds - + Starting game. Please wait ... Jeu en cours de lancement, veuillez patienter... @@ -3647,15 +3685,15 @@ p, li { white-space: pre-wrap; } - - + + P Privée - - + + Available Players Joueurs connectés @@ -3671,45 +3709,50 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Informations sur le joueur ... - - + + Show player stats Montrer les statistiques du joueur - + Report inappropriate game name Signaler un nom de partie inapproprié - - - + + + Standard Standard - - - + + + Registered players only Que les joueurs enregistrés - - - + + + Invited players only Que les joueurs invités - - - + + + Ranking game Classement @@ -3726,1295 +3769,1295 @@ p, li { white-space: pre-wrap; } sec (durée de la main) - + Afghanistan Afghanistan - + ALand Islands Iles d'Aland - + Albania Albanie - + Algeria Algérie - + American Samoa Samoa Américaines - + Andorra Andorre - + Angola Angola - + Anguilla Anguilla - + Antarctica Antartique - + Antigua And Barbuda Antigua et Barduda - + Argentina Argentine - + Armenia Arménie - + Aruba Aruba - + Australia Australie - + Austria Autriche - + Azerbaijan Azerbaïdjan - + Bahamas Bahamas - + Bahrain Bahreïn - + Bangladesh Bangladesh - + Barbados Barbade - + Belarus Biélorussie - + Belgium Belgique - + Belize Belize - + Benin Bénin - + Bermuda Bermudes - + Bhutan Bhoutan - + Bolivia Bolivie - + Bosnia And Herzegovina Bosnie-Herzégovine - + Botswana Botswana - + Bouvet Island Ile Bouvet - + Brazil Brésil - + British Indian Ocean Territory Territoire britannique de l'océan indien - + Brunei Darussalam Brunei Darussalam - + Bulgaria Bulgarie - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Cambodge - + Cameroon Cameroun - + Canada Canada - + Cape Verde Cap Vert - + Cayman Islands Iles Caïmans - + Central African Republic République Centrale d'Afrique - + Chad Tchad - + Chile Chili - + China Chine - + Christmas Island Ile Christmas - + Cocos (Keeling) Islands Iles Cocos - + Colombia Colombie - + Comoros Comores - + Congo Congo - + Congo, The Democratic Republic Of The République Démocratique du Congo - + Cook Islands Iles Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Côte d'Ivoire - + Croatia Croatie - + Cuba Cuba - + Cyprus Chypre - + Czech Republic République Tchèque - + Denmark Danemark - + Djibouti Djibouti - + Dominica Dominique - + Dominican Republic République Dominicaine - + Ecuador Equateur - + Egypt Egypte - + El Salvador El Salvador - + Equatorial Guinea Guinée Equatoriale - + Eritrea Erythrée - + Estonia Estonie - + Ethiopia Ethiopie - + Falkland Islands (Malvinas) Iles Malouines - + Faroe Islands Iles Féroé - + Fiji Fidji - + Finland Finlande - + France France - + French Guiana Guinée Française - + French Polynesia Polynésie Française - + French Southern Territories Territoire Français du Sud - + Gabon Gabon - + Gambia Gambie - + Georgia Géorgie - + Germany Allemagne - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Grèce - + Greenland Groenland - + Grenada Grenade - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernesey - + Guinea Guinée - + Guinea-Bissau Guinée-Bissau - + Guyana Guyane - + Haiti Haïti - + Heard Island And Mcdonald Islands Iles Heard et MacDonald - + Holy See (Vatican City State) Saint-Siège (Etat du Vatican) - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Hongrie - + Iceland Islande - + India Inde - + Indonesia Indonésie - + Iran, Islamic Republic Of République Islamique d'Iran - + Iraq Irak - + Ireland Irelande - + Isle Of Man Ile de Man - + Israel Israël - + Italy Italie - + Jamaica Jamaïque - + Japan Japon - + Jersey Jersey - + Jordan Jordanie - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of République Démocratique Populaire de Corée - + Korea, Republic Of République de Corée - + Kuwait Koweït - + Kyrgyzstan Kirghizistan - + Lao People'S Democratic Republic République Démocratique Populaire du Laos - + Latvia Lettonie - + Lebanon Liban - + Lesotho Lesotho - + Liberia Libéria - + Libyan Arab Jamahiriya Jamahiriya Arabe Libyenne - + Liechtenstein Liechtenstein - + Lithuania Lituanien - + Luxembourg Luxembourg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Ex-République Yougoslave de Macédoine - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malaysie - + Maldives Maldives - + Mali Mali - + Malta Malte - + Marshall Islands Iles Marshall - + Martinique Martinique - + Mauritania Mauritanie - + Mauritius Ile Maurice - + Mayotte Mayotte - + Mexico Mexique - + Micronesia, Federated States Of Etats Fédérés de Micronésie - + Moldova, Republic Of République de Moldavie - + Monaco Monaco - + Mongolia Mongolie - + Montserrat Montserrat - + Morocco Maroc - + Mozambique Mozambique - + Myanmar Birmanie - + Namibia Namibie - + Nauru Nauru - + Nepal Népal - + Netherlands Pays Bas - + Netherlands Antilles Antilles néerlandaises - + New Caledonia Nouvelle Calédonie - + New Zealand Nouvelle Zélande - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Ile Norfolk - + Northern Mariana Islands Iles Mariannes du Nord - + Norway Norvège - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Territoire Palestinien Occupé - + Panama Panama - + Papua New Guinea Papouasie-Nouvelle-Guinée - + Paraguay Paraguay - + Peru Pérou - + Philippines Philippines - + Pitcairn Iles Pitcairn - + Poland Pologne - + Portugal Portugal - + Puerto Rico Porto Rico - + Qatar Qatar - + Reunion Réunion - + Romania Roumanie - + Russian Federation Fédération de Russie - + Rwanda Rwanda - + Saint Helena Saint-Hélène - + Saint Kitts And Nevis Saint-Christophe-et-Niévès - + Saint Lucia Sainte-Lucie - + Saint Pierre And Miquelon Saint-Pierre-et-Miquelon - + Saint Vincent And The Grenadines Saint-Vincent-et-les-Grenadines - + Samoa Samoa - + San Marino Saint-Marin - + Sao Tome And Principe Sao Tome et Principe - + Saudi Arabia Arabie Saoudite - + Senegal Sénégal - + Serbia And Montenegro Serbie-et-Monténégro - + Seychelles Seychelles - + Sierra Leone Sierra Leone - + Singapore Singapour - + Slovakia Slovaquie - + Slovenia Slovénie - + Solomon Islands Iles Solomon - + Somalia Somalie - + South Africa Afrique du Sud - + South Georgia And The South Sandwich Islands Iles de la Géorgie du Sud et Sandwich du Sud - + Spain Espagne - + Sri Lanka Sri Lanka - + Sudan Soudan - + Suriname Suriname - + Svalbard And Jan Mayen Svalbard et Jan Mayen - + Swaziland Swaziland - + Sweden Suède - + Switzerland Suisse - + Syrian Arab Republic République Arabe Syrienne - + Taiwan, Province Of China Taïwan, Province de Chine - + Tajikistan Tadjikistan - + Tanzania, United Republic Of République Unie de Tanzanie - + Thailand Thaïlande - + Timor-Leste Timor-Leste - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trinité et Tobago - + Tunisia Tunisie - + Turkey Turquie - + Turkmenistan Turkménistan - + Turks And Caicos Islands Iles Turques-et-Caïques - + Tuvalu Tuvalu - + Uganda Ouganda - + Ukraine Ukraine - + United Arab Emirates Emirats Arabes Unis - + United Kingdom Royaume Uni - + United States Etats-Unis - + United States Minor Outlying Islands Iles Mineures Eloignées des Etats-Unis - + Uruguay Uruguay - + Uzbekistan Ouzbékistan - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Viêt Nam - + Virgin Islands, British Iles Vierges Britanniques - + Virgin Islands, U.S. Iles Vierges des Etats-Unis - + Wallis And Futuna Wallis et Futuna - + Western Sahara Sahara Occidental - + Yemen Yémen - + Zambia Zambie - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Etes-vous sûr de vouloir signaler le nom de partie : "%1" comme inapproprié ? - + Are you sure you want to close the game: "%1"? Voulez-vous vraiment fermer la partie : "%1" ? - + Are you sure you want to total kickban the player: "%1"? Voulez-vous vraiment bannir le joueur : "%1" ? - - + + T Type - + Waiting for the start of the next hand to rejoin the game ... Attend le début de la prochaine main pour rejoindre le jeu... - + Click here to view the online rankings Cliquez ici pour voir le classement en ligne - + Spectate Regarder - - + + Time Durée - - + + Admin action ... Action d'administration ... - + Total kickban Bannir - + Close game Fermer la partie - - - + + + sec (action) sec (action) - - - + + + sec (hand delay) sec (durée de la main) @@ -5023,27 +5066,27 @@ p, li { white-space: pre-wrap; } Joueurs dans la partie - Max : %1 - - + + running games: %1 Parties en cours : %1 - - + + open games: %1 Parties ouvertes : %1 - - + + Players (%1) Joueurs (%1) - - - + + + Spectators (%1) Spectateurs (%1) @@ -5053,28 +5096,43 @@ p, li { white-space: pre-wrap; } Inviter %1 - + Ignore %1 Ignorer %1 - + + Unignore %1 + + + + + Unignore player ... + + + + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 a été invité dans la partie %2 par %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 a décliné l'invitation de %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 ne peut pas joindre la partie de %2 car il est occupé.</span> - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + The game will start in<br><b>%1</b> seconds. La partie va démarrer dans <br><b>%1</b> seconde(s). @@ -5087,14 +5145,14 @@ p, li { white-space: pre-wrap; } %1 ne joue pas actuellement. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Vous êtes entré dans une partie où seuls les joueurs invités sont admis. Invitez d'autres joueurs en faisant un clic droit sur leurs pseudos dans la liste des Joueurs disponibles - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Vous avez été invité dans la partie <b>%1</b> par <b>%2</b>.<br>Voulez-vous joindre cette partie? @@ -5107,7 +5165,7 @@ Invitez d'autres joueurs en faisant un clic droit sur leurs pseudos dans la <span style='color:red;'>%1 ne peut pas joindre la partie de %2 car il est occupé.</span> - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Vous êtes sur le point de mettre le joueur <b>%1</b> dans la liste de joueurs ignorés. Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joueur, continuer ? @@ -5117,18 +5175,18 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue joueurs sur le tchat : %1 - - + + connected players: %1 Joueurs connectés : %1 - + search for player ... Rechercher un joueur ... - + Chat is only available to registered players. Le tchat n'est accessible qu'aux joueurs enregistrés. @@ -5146,23 +5204,23 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue Ignorer le joueur %1 - + Ignore player ... Ignorer le joueur ... - + %1 is playing in "%2". %1 joue actuellement dans la partie "%2" - + %1 is not playing at the moment. %1 ne joue pas actuellement - - + + PokerTH - Info Message PokerTH - Message d'information @@ -5171,10 +5229,11 @@ Vous ne pourrez plus discuter ou recevoir d'invitations de jeu avec ce joue <span style='color:blue;'>%1 a été invité dans la partie %2 par %3.</span> - - + + - + + PokerTH - Question PokerTH - Question @@ -5635,31 +5694,31 @@ Veuillez choisir un nom différent. ⌘N pour démarrer une nouvelle partie - - - - - - - - + + + + + + + + Start Démarrer - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Pause @@ -5714,8 +5773,8 @@ Si le serveur est derrière un pare-feu, vérifiez que le port a été ouvert et Désolé, la partie est déjà complète. - - + + Chat Tchat @@ -5778,12 +5837,12 @@ Veuillez choisir un autre pseudonyme. Le serveur est arrêté pour maintenance. Veuillez réessayer plus tard. - + Closing PokerTH during network game Fermer PokerTH durant la partie en réseau - + You are the hosting server. Do you want to close PokerTH anyway? Vous hébergez le serveur. Voulez-vous quand même fermer PokerTH ? @@ -5800,16 +5859,16 @@ Veuillez choisir un autre pseudonyme. Cettet version béta de PokerTH est obsolète. <br>Merci d'aller sur <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> et de télécharger la dernière version. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Le moteur de Texas Holdem Open-Source - - - - - + + + + + Lobby Fermer @@ -5818,12 +5877,12 @@ Veuillez choisir un autre pseudonyme. Une erreur interne est survenue. Merci de la signaler à un administrateur sur le chat. - + PokerTH - Internet Game Message PokerTH - Message Partie sur Internet - + Attention! Do you really want to leave the current game and go back to the lobby? Attention ! Voulez-vous vraiment quitter la partie en cours @@ -5884,64 +5943,64 @@ Veuillez vérifier que vous êtes directement connectés à internet.Impossible d'ouvrir le fichier cible lors du téléchargement de la liste de serveurs. - + PokerTH %1 PokerTH %1 - - + + Chance Chance - + Really want to exit? Voulez-vous vraiment quitter ? - + PokerTH - Close Table? PokerTH - Fermer la table ? - - + + Kick Expulser - - + + Do you want to kick <b>%1</b><br>from this game? Voulez-vous expulser <b>%1</b><br>de cette partie ? - - - - + + + + <b>%1</b> secs left <b>%1</b> secondes restantes - + vote vote - + votes votes + - Chat is only available to registered players. Le tchat n'est accessible qu'aux joueurs enregistrés. - + Spectators Spectateurs @@ -5968,14 +6027,14 @@ Si vous êtes temporairement occupé, vous pouvez utiliser les options d'ab Vous avez <b>%1</b> %2 contre vous.<br><b>%3</b> votes requis pour l'expulser. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Le joueur <b>%1</b> a <b>%2</b> %3<br> contre lui. <b>%4</b> vote(s) requis pour l'expulsion. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Vous avez <b>%1</b> %2 contre vous.<br><b>%3</b> vote(s) requis pour l'expulsion. @@ -6051,7 +6110,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account Créer un nouveau compte utilisateur @@ -6216,10 +6275,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Erreur de chargement du fichier de profil du serveur @@ -6230,7 +6289,7 @@ p, li { white-space: pre-wrap; } - + Save Server Profile Error Erreur d'enregistrement du profil du serveur @@ -6239,34 +6298,34 @@ p, li { white-space: pre-wrap; } Un profil avec le nom : " - - - - + + + + Could not load server-profiles-file: %1 Impossible de charger les profils du serveur : %1 - + Read Server-Profile List Error Erreur de lecture de la liste des profils du serveur - + Could not read server-profiles list Impossible de lire la liste des profils du serveur - - + + Save Server-Profile-File Error Erreur de sauvegarde du fichier de profil du serveur - - + + Could not save server-profiles-file: %1 Impossible d'enregistrer les profils du serveur : @@ -6279,7 +6338,7 @@ p, li { white-space: pre-wrap; } - + A profile with the name: %1 already exists. Would you like to overwrite ? Un profil avec le nom : %1 existe déjà. @@ -6347,12 +6406,12 @@ Voulez-vous l'écraser ? manualBlindsOrderDialogImpl - + Manual Blinds Order Ordre des blinds manuelles - + You cannot set more than 30 manual blinds. Vous ne pouvez pas configurer plus de 30 blinds manuelles. @@ -6487,14 +6546,14 @@ Voulez-vous l'écraser ? selectAvatarDialogImpl - - - + + + Avatar File Error Erreur de fichier pour l'avatar - + Please select an avatar from the list! Veuillez choisir un avatar à partir de la liste ! @@ -6505,7 +6564,7 @@ Please enter an valid picture! Veuillez entrer une image valide! - + Select external avatar picture Choisissez un avatar @@ -6514,19 +6573,19 @@ Veuillez entrer une image valide! Images (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! L'image sélectionnée est trop volumineuse. (max. 30 Ko) Veuillez sélectionner une image plus petite ! - + Images (*.png *.jpg *.gif) Images (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! L'image de l'avatar sélectionné n'existe pas. @@ -6569,10 +6628,10 @@ p, li { white-space: pre-wrap; } Petite Blind initiale: - - - - + + + + Start Cash: Bourse initiale : @@ -6585,24 +6644,24 @@ p, li { white-space: pre-wrap; } Paramètres server - - - - + + + + Server Port: Port du serveur : - - - - + + + + Use IPv6 Utiliser IPv6 - - + + Server Password: Mot de passe serveur : @@ -6611,20 +6670,20 @@ p, li { white-space: pre-wrap; } Paramètres réseau par défaut - - + + Computer Engine Moteur IA - - + + Opponent 5: Adversaire 5 : - - + + Opponent 3: Adversaire 3 : @@ -6641,31 +6700,31 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Human Player:<br /><span style=" font-size:11pt; font-style:italic;">(This nick will also be used for the online game login)</span></p></body></html> - - + + Opponent 2: Adversaire 2 : - - + + Opponent 6: Adversaire 6 : - - + + Opponent 1: Adversaire 1 : - - + + Opponent 4: Adversaire 4 : - + Human Player: Joueur humain : @@ -6678,25 +6737,30 @@ p, li { white-space: pre-wrap; } Jour(s) - - + + Log File Directory: Chemin des fichiers log : - + Log Messages Journalisation (log) - + + Show network state color in the corner of the avatar + + + + Local Game Settings Paramètres partie solo - + Network Game Settings Paramètres partie en réseau @@ -6731,8 +6795,8 @@ p, li { white-space: pre-wrap; } Afficher les fenêtres d'info (onglets) en bas à gauche - - + + Play blind raise notification Lire le son de notification d'augmentation de blind @@ -6741,8 +6805,8 @@ p, li { white-space: pre-wrap; } Afficher les messages dans la barre de status - - + + Show game settings dialog on every new game Afficher les paramètres à chaque nouvelle partie @@ -6751,20 +6815,20 @@ p, li { white-space: pre-wrap; } Nb de mains avant l'augmentation de la petite blind: - - + + Number of players: Nombre de joueurs : - - + + Game Speed: Vitesse du jeu : - - + + Pause between hands (press "start" button to go on) Faire une pause entre les mains (Appuyez sur "Démarrer" pour continuer) @@ -6777,8 +6841,8 @@ p, li { white-space: pre-wrap; } Version du moteur pour les adversaires IA : - - + + Enable/Disable Logging Activer/Désactiver la journalisation @@ -6787,8 +6851,8 @@ p, li { white-space: pre-wrap; } Activer la journalisation pour - - + + Write log after every: Écrire dans le log après chaque : @@ -6799,8 +6863,8 @@ p, li { white-space: pre-wrap; } Afficher les boutons pour la petite et la grande blind - - + + Play sound effects Utiliser les effets sonores @@ -6808,27 +6872,27 @@ p, li { white-space: pre-wrap; } 0.4 (current) 0.4 (courante) - - - - - - Use SCTP - Utiliser SCTP - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://fr.wikipedia.org/wiki/Ipv6">Qu'est-ce que c'est ?</a> - + Use SCTP + Utiliser SCTP + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://fr.wikipedia.org/wiki/Ipv6">Qu'est-ce que c'est ?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://fr.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Qu'est-ce que c'est ?</a> @@ -6849,20 +6913,20 @@ p, li { white-space: pre-wrap; } Paramètres - - + + Maximum number of players: Nombre maximal de joueurs : - - + + Sound Volume: Volume des effets sonores : - - + + 10 10 @@ -6871,20 +6935,20 @@ p, li { white-space: pre-wrap; } Temps alloué pour l'action du joueur (en secondes): - - + + action (high frequent disc access) Evènement (élevé - accès disque fréquent) - - + + hand (medium disc access) Main (moyenne - accès disque normal) - - + + game (low disc access) Partie (bas - accès disque réduit) @@ -6901,18 +6965,18 @@ p, li { white-space: pre-wrap; } - + Sound Son - - + + Network Server Settings Paramètres de serveur réseau - + Internet Game Settings Paramètres partie sur Internet @@ -6921,14 +6985,14 @@ p, li { white-space: pre-wrap; } Paramètres serveur Internet (serveur dédié) - - + + Server Address: Adresse serveur : - - + + Use password for private game: Utiliser un mot de passe pour la partie privée : @@ -6945,10 +7009,10 @@ p, li { white-space: pre-wrap; } #pokerth - - - - + + + + First small blind: Première petite blind : @@ -6959,32 +7023,32 @@ p, li { white-space: pre-wrap; } Désactiver l'écran de démarrage - - + + Game Table Table de jeu - - + + Card Deck Style de carte - - + + Card Back Dos des cartes - - + + Use card back from card style Utiliser l'image de dos de cartes du style - - + + Use custom card back picture: Utiliser une image de dos de carte personnalisée : @@ -6997,70 +7061,70 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style=" font-family:'Nimbus Sans L'; font-size:8pt; font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : pour une meilleure qualité, utilisez un ratio d'image comme </span><span style=" font-weight:600; font-style:italic;">width=76, height=48.</span></p></body></html> - - - - + + + + Raise blinds: Surenchère des blinds : - - - - - - - - + + + + + + + + Every: Fréquence : - - - - + + + + hands mains - - - - + + + + minutes minutes - - - - + + + + Raise mode: Mode de surenchère : - - - - + + + + Always double blinds Toujours doubler les blinds - - - - + + + + Manual blinds order: Ordre des blinds manuelles : - - - - + + + + Edit ... Editer ... @@ -7071,7 +7135,7 @@ p, li { white-space: pre-wrap; } Langue : - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7090,26 +7154,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : Pour une meilleure qualité, utilisez une image avec </span><span style=" font-weight:600; font-style:italic;">largeur=48, hauteur=76.</span></p></body></html> - - + + Sound Categories Catégories de son - - + + Play game actions sounds like "check", "call", "raise" Jouer un son comme "parole", "payer", "surenchérir" - - + + Play lobby chat notifications Jouer un son lors des notifications du tchat - - + + Play network/internet game notifications like "player joined the game" Jouer un son lors des notifications des parties réseau/Internet comme "un joueur a rejoint la partie" @@ -7118,7 +7182,7 @@ p, li { white-space: pre-wrap; } Activer/Désactiver le chat (Serveur IRC) - + Player Nicks/Avatars Pseudos/Avatars joueur @@ -7134,7 +7198,7 @@ p, li { white-space: pre-wrap; } Partie en réseau/Internet - + Switch keyboard focus to bet-input-field if it's your turn Aller dans la case pour taper la mise dès que c'est mon tour @@ -7154,33 +7218,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note: Le meilleur ratio pour la qualité sera avec </span><span style=" font-weight:600; font-style:italic;">largeur=100, hauteur=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Temps de réponse du joueur : - - - - + + + + s s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -7191,7 +7255,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : </span><span style=" font-weight:600; font-style:italic;">Les paramètres de partie solo</span><span style=" font-style:italic;"> comme "Nombre maximal de joueurs", "Bourse initiale" et "Petite Blind" seront utilisés </span>par défaut <span style=" font-weight:600; font-style:italic;">pour les paramètres de jeu réseau.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -7202,50 +7266,50 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : Pour une meilleure qualité, utilisez une image avec </span><span style=" font-weight:600; font-style:italic;">largeur=50, hauteur=50.</span></p></body></html> - - + + Automatic Server Configuration URL URL pour la configuration automatique du serveur - + Factory Settings Paramètres par défaut - + Show country flag in the corner of avatar Montrer le drapeau dans un coin de l'avatar. - + Activate the "accidentally call after big raise" blocker Empêcher un call accidentel après un gros raise d'un autre joueur - - - - + + + + Description Description - - - - + + + + Maintainer Auteur - - - + + + State Statut @@ -7268,32 +7332,32 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : Pour une meilleure qualité, utilisez une image avec </span><span style=" font-weight:600; font-style:italic;">largeur=48, hauteur=76.</span></p></body></html> - - + + Delay between hands: Délai entre chaque main : - - + + Server Serveur - - + + Serverlist Address: Adresse de la liste de serveurs : - - + + Manual Server Configuration Configuration manuelle du serveur - - + + Game Partie @@ -7309,43 +7373,43 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Note : </span><span style=" font-weight:600; font-style:italic;">Les paramètres de partie solo</span><span style=" font-style:italic;"> comme "Nombre maximal de joueurs", "Bourse initiale" et "Petite Blind" seront utilisés </span>par défaut <span style=" font-weight:600; font-style:italic;">pour les paramètres de jeu réseau.</span></p></body></html> - - + + Default game name: Nom de la partie par défaut : - - + + Default game type: Type de jeu par défaut : - - + + Standard Standard - - + + Registered players only Que les joueurs enregistrés - - + + Invited players only Que les joueurs invités - - + + Ranking game Classement - + Show lobby chat Afficher l'onglet de tchat (en bas à gauche) @@ -7358,59 +7422,64 @@ p, li { white-space: pre-wrap; } Général - + Do not hide avatars of players which are on the ignore list Ne pas cacher les avatars des joueurs ignorés - + Disable emoticons in the chat Désactiver les smileys dans le tchat - - + + Show network state color on the avatar + + + + + Automatically leave the table after the game finished Quitter automatiquement la table à la fin de la partie - - + + Allow spectators to watch the game Permettre aux spectateurs de voir la partie - - + + Ignored Players Joueurs ignorés - - + + Player Joueur - - + + Remove Player Enlever ce joueur - + Note: Best avatar quality with image ratio like width=50, height=50. Note : Pour une meilleure qualité, utilisez une image avec largeur=50, hauteur=50. - + OK OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7423,14 +7492,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Mon pseudo :<br /><span style=" font-style:italic;">(Ce pseudo sera également utilisé pour le "nom d'utilisateur" des parties internet)</span></p></body></html> - - + + Store log files for: Garder les logs pendant : - - + + Day(s) Jour(s) @@ -7455,14 +7524,14 @@ p, li { white-space: pre-wrap; } Exporter en HTML - - + + Reset all settings to default ... Réinitialiser les paramètres à leurs valeurs d'origine - - + + Note: You can not reset all settings to default during a running game! Note : Vous ne pouvez pas réinitialiser les paramètres pendant une partie en cours ! @@ -7529,15 +7598,15 @@ p, li { white-space: pre-wrap; } Mot de passe : - - + + Avatar Server: Serveur d'avatars : - + Style Style @@ -7555,33 +7624,33 @@ p, li { white-space: pre-wrap; } Activate Activer - - - - - - Add ... - Ajouter ... - + Add ... + Ajouter ... + + + + + + Remove Supprimer - - - - + + + + Preview - Information: Prévisualisation - Information : - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7594,8 +7663,8 @@ p, li { white-space: pre-wrap; } Styles de dos de cartes - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7604,29 +7673,29 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Obtenir de nouveaux styles de carte PokerTH</span></a></p></body></html> - + Note: Best quality with image ratio like width=48, height=76. Note : Pour une meilleure qualité, utilisez une image avec largeur=48, hauteur=76. - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Les paramètres de partie solo comme "Nombre maximal de joueurs", "Bourse initiale" et "Petite Blind" seront utilisés par défaut pour les paramètres de jeu réseau. - + (This nick will also be used for the online game login) (ce pseudo sera aussi utilisé pour vos jeux en ligne PokerTH) - - + + Opponent 7: Adversaire 7 : - - + + Opponent 8: Adversaire 8 : @@ -7635,8 +7704,8 @@ p, li { white-space: pre-wrap; } Adversaire 4 : {10:?} - - + + Opponent 9: Adversaire 9 : @@ -7644,11 +7713,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Erreur de paramètres @@ -7665,7 +7734,7 @@ Please select an valid directory! Veuillez sélectionner un répertoire valide! - + Select your flipside picture Sélectionnez une image pour le dos des cartes @@ -7674,24 +7743,24 @@ Veuillez sélectionner un répertoire valide! Images (*.png) - + Open Directory Parcourir - + Images (*.png *.jpg *.gif) Images (*.png *.jpg *.gif) - - + + Blinds Error Erreur de blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7700,27 +7769,27 @@ est plus petit que la première blind courante ! La première blind sera fixée à la valeur maximum possible. - + Dutch Hollandais - + English Anglais - + French Français - + German Allemand - + Hungarian Hongrois @@ -7729,294 +7798,294 @@ La première blind sera fixée à la valeur maximum possible. Portuguais - + Russian Russe - + Turkish Turque - + Language Changed Langue changée - + You have changed application language to %1. Please restart PokerTH to load new language! Vous avez changé la langue de l'application pour %1. Veuillez redémarrer PokerTH pour charger cette langue ! - + Italian Italien - + Slovak Slovaque - + The entered flipside picture doesn't exist. Please enter an valid picture! L'image pour le dos de carte n'existe pas. Veuillez entrer une image valide ! - - + + The log file directory doesn't exist. Please select an valid directory! Le répertoire des fichiers log n'existe pas. Veuillez sélectionner un répertoire valide ! - + Norwegian Norvégien - + Spanish Espagnol - + Bulgarian Bulgare - + Polish Polonais - + Chinese Chinois - + Greek Grec - + Swedish Suédois - + The entered server list address is not a valid URL. Please enter a valid server list address! L'adresse de la liste de serveurs n'est pas une URL valide. Veuillez entrer une adresse de liste de serveurs valide ! - + Finnish Finnois - + Afrikaans Afrikaans - + Catalan Catalan - + Czech Tchèque - + Danish Danois - + Galician Galicien - + Japanese Japonais - + Lithuania Lituanien - + Portuguese-Brazilian Portugais-Brésil - + Portuguese-Portuguese Portugais-Portugal - + Scottish Gaelic Gaélique écossais - + Tamil Tamil - + Vietnamese Vietnamien - + The opponent names are not unique. Please choose different names for each Opponent! Les noms d'adversaires sont indentiques. Choisissez des noms différents pour chaque adversaire ! - + Settings Information Information sur les paramètres - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Vous avez changé le répertoire pour les fichiers de journalisation (logs). Relancez PokerTH pour prendre en compte ce changement. - - + + Maintainer Name Nom de l'auteur - - + + Maintainer EMail Email de l'auteur - - + + Create Date Date de création - + Windows Behaviour Comportement de la fenêtre - + scaleable étirable - + fixed fixe - + Minimum Size Taille minimum - + Maximum Size Taille maximum - + Fixed Size Taille fixe - + State Statut - + Please select your game table style Veuillez sélectionner votre style de table de jeu - + PokerTH game table styles (*.xml) Styles de table de jeu PokerTH (*.xml) - + Game Table Style Error Erreur de style de table de jeu - + Selected game table style file is already in the list. Please select another one to add! Le fichier de style de table de jeu sélectionné est déjà dans la liste. Veuillez en sélectionner un autre à ajouter ! - + Game Table Style File Error Erreur sur le fichier style de table de jeu - + Could not load game table style file correctly. Style will not be placed into list! Impossible de charger correctement le fichier de style de table de jeu. Le style ne sera pas placé dans la liste ! - + Please select your card deck style Veuillez choisir votre style de carte - + PokerTH card deck styles (*.xml) Styles de carte PokerTH (*.xml) - + Card Deck Style Error Erreur de style de carte - + Selected card deck style file is already in the list. Please select another one to add! Le fichier de style de carte sélectionné est déjà dans la liste. Veuillez en sélectionner un autre à ajouter ! - + Card Deck Style File Error Erreur sur le fichier de carte - + Could not load card deck style file correctly. Style will not be placed into list! Impossible de charger correctement le fichier de carte. @@ -8055,12 +8124,12 @@ Le style ne sera pas placé dans la liste ! PokerTH plain text log (*.txt) - + PokerTH - Settings PokerTH - Paramètres - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Attention : ceci va supprimer tous vos paramètres personnels et fermer PokerTH ! @@ -8154,12 +8223,12 @@ Voulez-vous vraiment réinitialiser les paramètres à leurs valeurs d'orig startNetworkGameDialogImpl - + Server Error Erreur du serveur - + You should not kick yourself from this game! Vous ne pouvez pas vous expulser vous-même de la partie ! diff --git a/ts/pokerth_gd.ts b/ts/pokerth_gd.ts index d653eba9..5e7711c1 100644 --- a/ts/pokerth_gd.ts +++ b/ts/pokerth_gd.ts @@ -685,106 +685,106 @@ Tagh stoidhle airson bòrd geama is feuch ris a-rithist! Sgrùdaich am faidhle loga ... - + PokerTH - Delete log files PokerTH - Sguab às dha dh'fhaidhlichean loga - + Do you really want to delete the selected log files? A bheil thu cinnteach gu bheil thu airson na faidhlichean loga a thagh thu a sguabadh às? - + Remove log file Thoir am faidhle loga air falbh - + PokerTH cannot remove this log file, please verify that you have write access to this file! Chan urrainn dha PokerTH am faidhle loga seo a thoirt air falbh. Feuch an dearbhaich thu gu bheil cead sgrìobhaidh agad airson an fhaidhle seo! - + Export PokerTH log file to HTML Às-phortaich faidhle loga PokerTH gu HTML - + PokerTH HTML log (*.html) Loga HTML aig PokerTH (*.html) - + Export PokerTH log file to plain text Às-phortaich faidhle loga PokerTH gu teacsa lom - + PokerTH plain text log (*.txt) Loga teacsa lom aig PokerTH (*.txt) - + Save PokerTH log file Sàbhail faidhle loga PokerTH - + PokerTH SQL log (*.pdb) Loga SQL aig PokerTH (*.pdb) - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Dh'fhàillig le giullachd an fhaidhle loga air an fhrithealaiche-lìn. Feuch an dearbhaich thu gu bheil thu a' luchdadh suas faidhle loga aig PokerTH a tha dligheach. - - + + Failure reason: Adhbhar an fhàilligidh: - + No file received. Cha deach faidhle fhaighinn. - + File rejected because of too many uploads. Chaidh am faidhle a dhiùltadh oir tha cus luchdaidhean suas ann. - + File rejected because of too many recent uploads. Please try again later. Chaidh am faidhle a dhiùltadh oir bha cus luchdaidhean suas o chionn ghoirid ann. Am feuch thu ris a-rithist an ceann greis? - + The file is too large. Tha am faidhle ro mhòr. - + This file is not a valid and current PokerTH log file. Chan e faidhle loga làithreach dligheach aig PokerTH a tha san fhaidhle seo. - + Internal error. Please try again later. ID: Mearachd taobh a-staigh. Am feuch thu ris a-rithist an ceann greis? ID: - - + + Uploading log file A' luchdadh suas faidhle loga - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. Dh'fhàillig leis an luchdadh suas. Feuch an toir thu sùil air a' cheangal agad dhan eadar-lìn! @@ -810,22 +810,60 @@ Dh'fhaoidte gum fàillig le luchdadh suas aig faidhlichean loga ma tha thu + Unignore Player + + + + Report inappropriate avatar Aithris avatar mì-iomchaidh - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Chan fhaigh thu teachdaireachdan cabadaich no cuiridhean bhon chleachdaiche seo tuilleadh.<br>A bheil thu cinnteach gu bheil thu airson an cluicheadair <b>%1</b> a chur air an liosta neo-shuime? - - + + + PokerTH - Question PokerTH - Ceist - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? A bheil thu cinnteach gu bheil thu airson an avatar aig "%1" aithris mar mhì-iomchaidh? @@ -1000,127 +1038,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) PokerTH %1 airson Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Mu dheidhinn PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - Wikimedia Commons: airson caochladh ghoireasan dealbhan avatar mòr-chòrdte - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: airson dealbhan avatar dhaoine - + - ZeiZei: for misc avatar pictures - ZeiZei: airson dealbhan avatar measgaichte - + - kde-look.org: for different gpl licensed sounds - kde-look.org: airson caochladh fuaime fon cheadachas gpl - + - doc_dos: for self recorded chip sounds - doc_dos: airson fuaimean nam bonn a chlàraich e fhèin - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - thiger, dunkanx, BerndA, coldz, drull: airson caochladh patch - + - kraut: for internet-game-server hosting and administration - kraut: airson òstadh is rianachd frithealaichean nan geamannan eadar-lìn - + - danuxi: for startwindow background gfx and danuxi1 table background - danuxi: airson èifeachd grafaigeach an sgrìn-tòiseachaidh is cùlaibh a' bhùird danuxi1 - + - heyn: for moderating forum and organise bugtracker and feature requests - heyn: airson obair-mhaoir air a' bhòrd-bhrath is rianachd a' bugtracker is iarrtasan nam feart - + - texas_outlaw: for new table sounds - texas_outlaw: airson fuaimean a' bhùird ùra - + - Poker engine for the popular Texas Hold'em Poker - Einnsean poker airson Texas Hold'em Poker mòr-chòrdte - + - Singleplayer games with up to 9 computer-opponents - Geamannan aon-chluicheadair le suas gu 9 co-fharpaisichean coimpiutair - + - Multiplayer network games - Geamannan lìonraidh ioma-chluicheadair - + - Internet online games - Geamannan air an eadar-lìon - + - Changeable gui with online style gallery - Eadar-aghaidh a ghabhas atharrachadh le gailearaidh dhe stoidhlichean air loidhne - + - Online ranking website with result tables - Làrach-lìn rangachaidh le clàran nan toraidhean - + Project page: Duilleag a' phròiseict: - + Authors: Ùghdaran: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package beachd tòiseachaidh, dealbhadh bunasach, prògramachadh na h-eadar-aghaidh, deasachadh grafaigeachd na h-eadar-aghaidh, pacaid linux - + initial idea, basic architecture, engine development beachd tòiseachaidh, dealbhadh bunasach, leasachadh an einnsein - + basic architecture, network development, windows package, MacOS package dealbhadh bunasach, leasachadh lìonraidh, pacaid windows, pacaid MacOS - + initial gui graphics design a' chiad dealbhachadh grafaigeachd na h-eadar-aghaidh @@ -1237,12 +1275,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Òrdugh nam blinds a làimh - + You cannot set more than 30 manual blinds. Chan urrainn dhut barrachd air 30 blinds a làimh a shuidheachadh. @@ -1276,48 +1314,48 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Chan urrainn dhut gabhail ann an lobaidh nan geama air loidhne le "Cluicheadair daonna" mar d' fhar-ainm. Feuch an tagh thu ainm eile. - - - + + + Nick name: Far-ainm: - + Your player name is already used by another player. Please choose a different name. Cha cluicheadair eile a' chleachdadh d' ainm mu thràth. Feuch an tagh thu ainm eile. - + The player name is too short, too long or invalid. Please choose another one. Tha d' ainm ro ghoirid, ro fhada no mì-dhligheach. Feuch an tagh thu fear eile. - + There is already a game with your chosen game name. Please choose another one! Tha geama ann mu thràth air a bheil an t-ainm a thagh thu. Feuch an tagh thu fear eile! - + There is a forbidden word in your chosen game name. Please choose another one! Tha facal nach eil ceadaichte ann an ainm a' gheama a thagh thu. Feuch an tagh thu fear eile! - - + + Game name: Ainm a' gheama: @@ -1345,27 +1383,27 @@ Feuch an tagh thu fear eile! connectToServerDialogImpl - + Resolving address... A' fuasgladh an t-seòlaidh... - + Connecting to server... A' dèanamh ceangal ris an fhrithealaiche ... - + Starting session... A' tòiseachadh seisean ... - + Connection established! Chaidh ceangal a dhèanamh! - + Reading server list... A' leughadh liosta nam frithealaichean ... @@ -1512,7 +1550,7 @@ Feuch an tagh thu fear eile! <i>Blinds dùbailte gach %1mh làmh</i> - + %1's game An geama aig %1 @@ -1800,70 +1838,70 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... A' tòiseachadh air geama. Fuirich greis ... - + Joining a private Game A' gabhail ann an geama prìobhaideach - + You are about to join a private game. Please enter the password! Tha thu an impis gabhail ann an geama prìobhaideach. An cuir thu a-steach am facal-faire? - + open fosgailte - - - - + + + + Game Info Fiosrachadh a' gheama - + Spectate Amhairc - - + + Game Geama - - + + Players Cluicheadairean - - + + State Staid - - + + P P - - + + Available Players Cluicheadairean ri làimh @@ -1879,55 +1917,60 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Fiosrachadh a' chluicheadair ... - - + + Admin action ... Gnìomh rianachd ... - + Total kickban Toirmeasg slàn - + Report inappropriate game name Aithris ainm cluicheadair mì-iomchaidh - + Close game Dùin an geama - - - + + + Standard Àbhaisteach - - - + + + Registered players only Cluicheadairean a chlàraich a-mhàin - - - + + + Invited players only Cluicheadairean a fhuair cuireadh a-mhàin - - - + + + Ranking game Geama rangachaidh @@ -1937,22 +1980,22 @@ p, li { white-space: pre-wrap; } - - + + T S - - - + + + sec (action) diog (gnìomhachd) - - - + + + sec (hand delay) diog (dàil na làimhe) @@ -1961,32 +2004,32 @@ p, li { white-space: pre-wrap; } Cluicheadairean ceangailte - %1 air a char as motha - + running ga ruith - - + + running games: %1 geamannan 'gan ruith: %1 - - + + open games: %1 geamannan fosgailte: %1 - - + + Players (%1) Cluicheadairean (%1) - - - + + + Spectators (%1) Amhairc (%1) @@ -1996,74 +2039,74 @@ p, li { white-space: pre-wrap; } Thoir cuireadh dha %1 - + Ignore %1 Leig seachad %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>Thug %3 cuireadh dha %1 airson %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>dhiùlt %1 an cuireadh airson %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>Chan urrainn dha %1 gabhail ann an %2 oir tha e trang.</span> - + The game will start in<br><b>%1</b> seconds. Tòisichidh a' gheama ann an<br><b>%1</b> diog. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Ghabh thu ann an geama dhen t-seòrsa "le cuireadh a-mhàin". Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-ainm air liosta nan cluicheadairean ri làimh. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Fhuair thu cuireadh dhan gheama <b>%1</b> le <b>%2</b>.<br>A bheil thu airson gabhail sa gheama seo? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Chan fhaigh thu teachdaireachdan cabadaich no cuiridhean bhon chleachdaiche seo tuilleadh.<br>A bheil thu cinnteach gu bheil thu airson an cluicheadair <b>%1</b> a chur air an liosta neo-shuime agad? - - + + connected players: %1 cluicheadairean ceangailte: %1 - + Waiting for the start of the next hand to rejoin the game ... A' feitheamh gus an gabh an ath-làmh sa gheama a-rithist ... - + Click here to view the online rankings Seall an rangachadh air loidhne - - + + Time Ùine - - + + Show player stats Seall stadastaireachd a' chluicheadair @@ -2072,42 +2115,42 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a Cluicheadairean ceangailte - + hands làmhan - + minutes mionaidean - + double blinds blinds dùbailte - + manual blinds order òrdugh nam blinds a làimh - + Server Error Mearachd an fhrithealaiche - + You should not kick yourself from this game! Cha bu chòir dhut a' bhròg a thoirt dhut fhèin! - + search for player ... a' lorg cluicheadair ... - + Chat is only available to registered players. Chan eil a' chabadaich ri làimh ach airson chluicheadairean a' chlàraich. @@ -2117,1265 +2160,1281 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a Thoir cuireadh dha chluicheadair ... - + Ignore player ... Leig seachad an cluicheadair ... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". Tha %1 a' cluiche ann an "%2". - + %1 is not playing at the moment. Chan eil %1 a' cluiche an-dràsta. - - + + PokerTH - Info Message PokerTH - Brath fiosrachaidh - - + + - + + PokerTH - Question PokerTH - Ceist - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Afghanistan Afghanastàn - + ALand Islands Na h-Eileanan Àland - + Albania Albàinia - + Algeria Aildiria - + American Samoa Samotha na h-Aimeireaga - + Andorra Andorra - + Angola Angòla - + Anguilla Anguilia - + Antarctica An Antartaig - + Antigua And Barbuda Aintìoga agus Barbuda - + Argentina An Argantain - + Armenia Airmeinia - + Aruba Arùba - + Australia Astràilia - + Austria An Ostair - + Azerbaijan Asarbaideàn - + Bahamas Na h-Eileanan Bhathama - + Bahrain Bachrain - + Bangladesh Bangladais - + Barbados Barbados - + Belarus A' Bhealaruis - + Belgium A' Bheilg - + Belize A' Bheilìs - + Benin Beinin - + Bermuda Bearmùda - + Bhutan Butàn - + Bolivia Boilibhia - + Bosnia And Herzegovina Bosna is Hearsagobhana - + Botswana Botsuana - + Bouvet Island Eilean Bouvet - + Brazil Braisil - + British Indian Ocean Territory Ranntair Breatannach Cuan nan Innseachan - + Brunei Darussalam Brùnaigh Dàr as-Salàm - + Bulgaria A' Bhulgair - + Burkina Faso Buirciona Faso - + Burundi Burundaidh - + Cambodia Cambuidea - + Cameroon Camarun - + Canada Canada - + Cape Verde An Ceap Uaine - + Cayman Islands Na h-Eileanan Caimean - + Central African Republic Poblachd Meadhan Afraga - + Chad An t-Seàd - + Chile An t-Sile - + China An t-Sìn - + Christmas Island Eilean na Nollaig - + Cocos (Keeling) Islands Na h-Eileanan Cocos (Keeling) - + Colombia Coloimbia - + Comoros Comoros - + Congo Congo - + Congo, The Democratic Republic Of The Congo, Poblachd Dheamocratach - + Cook Islands Eileanan Cook - + Costa Rica Costa Rìcea - + Cote D'Ivoire Côte d'Ivoire - + Croatia A' Chròthais - + Cuba Cùba - + Cyprus Cìopras - + Czech Republic Poblachd na Seice - + Denmark An Danmhairg - + Djibouti Diobùtaidh - + Dominica Doiminicea - + Dominican Republic A' Phoblachd Dhoiminiceach - + Ecuador Eacuador - + Egypt An Èiphit - + El Salvador An Salbhador - + Equatorial Guinea Gini Mheadhan-Chriosach - + Eritrea Eartra - + Estonia An Eastoin - + Ethiopia An Itiop - + Falkland Islands (Malvinas) Na h-Eileanan Fàclannach (Malvinas) - + Faroe Islands Na h-Eileanan Fàro - + Fiji Fìdi - + Finland An Fhionnlann - + France An Fhraing - + French Guiana Guidheàna na Frainge - + French Polynesia Poilinèis na Frainge - + French Southern Territories Ranntairean a Deas na Frainge - + Gabon Gabon - + Gambia A' Ghaimbia - + Georgia A' Chairtbheil - + Germany A' Ghearmailt - + Ghana Gàna - + Gibraltar Diobraltar - + Greece A' Ghreug - + Greenland A' Ghraonlann - + Grenada Greanàda - + Guadeloupe Guadalup - + Guam Guam - + Guatemala Guatamala - + Guernsey Geàrnsaidh - + Guinea Gini - + Guinea-Bissau Gini-Bioso - + Guyana Guidheàna - + Haiti Haidhti - + Heard Island And Mcdonald Islands Eilean Heard is MhicDhòmhnaill - + Holy See (Vatican City State) A' Chathair Naomh (Stàit Cathair na Bhatacain) - + Honduras Hondùras - + Hong Kong Hong Kong - + Hungary An Ungair - + Iceland Innis Tìle - + India Na h-Innseachan - + Indonesia Na h-Innd Innse - + Iran, Islamic Republic Of Ioràn, Poblachd Ioslamach - + Iraq Ioràc - + Ireland Èirinn - + Isle Of Man Eilean Mhanainn - + Israel Iosrael - + Italy An Eadailt - + Jamaica Diameuga - + Japan An t-Seapan - + Jersey Deàrsaidh - + Jordan Iòrdan - + Kazakhstan Casachstàn - + Kenya Ceinia - + Kiribati Ciribeas - + Korea, Democratic People'S Republic Of Coirèa, Sluagh-phoblachd Dheamocratach - + Korea, Republic Of Choirèa, Poblachd - + Kuwait Cuibhèit - + Kyrgyzstan Cìorgastan - + Lao People'S Democratic Republic Làtho, Sluagh-phoblachd Dheamocratach - + Latvia An Laitbhe - + Lebanon Leabanon - + Lesotho Leasoto - + Liberia Libèir - + Libyan Arab Jamahiriya Libia, Sluagh-phoblachd Mhòr Shòisealach Arabach - + Liechtenstein Lichtenstein - + Lithuania An Liotuain - + Luxembourg Lugsamburg - + Macao Macàthu - + Macedonia, The Former Yugoslav Republic Of A' Mhasadon, Seann-Phoblachd Iùgoslabhach - + Madagascar Madagasgar - + Malawi Malabhaidh - + Malaysia Malaidhsea - + Maldives Na h-Eileanan Maladaibh - + Mali Màili - + Malta Malta - + Marshall Islands Eileanan Mharshall - + Martinique Mairtinic - + Mauritania Moratàinea - + Mauritius Na h-Eileanan Mhoiriseas - + Mayotte Mayotte - + Mexico Meagsago - + Micronesia, Federated States Of Na Meanbh-Eileanan, Stàitean Feadarail - + Moldova, Republic Of A' Mholdobha, Poblachd - + Monaco Monaco - + Mongolia Dùthaich nam Mongol - + Montserrat Montsarat - + Morocco Moroco - + Mozambique Mòsaimbic - + Myanmar Miànmar - + Namibia An Namaib - + Nauru Nauru - + Nepal Neapàl - + Netherlands Na Tìrean Ìsle - + Netherlands Antilles Eileanan Aintilia nan Tìrean Ìsle - + New Caledonia Cailleann Nuadh - + New Zealand Sealainn Nuadh - + Nicaragua Niocaragua - + Niger Nìgeir - + Nigeria Nigèiria - + Niue Niue - + Norfolk Island Eilean Norfolk - + Northern Mariana Islands Na h-Eileanan Mairianach a Tuath - + Norway An Nirribhidh - + Oman Omàn - + Pakistan Pagastàn - + Palau Palabh - + Palestinian Territory, Occupied A' phalastain, Ranntair fo fhor-ghlacadh - + Panama Panama - + Papua New Guinea Gini Nuadh Phaputhach - + Paraguay Paraguaidh - + Peru Pearù - + Philippines Na h-Eileanan Filipineach - + Pitcairn Peit a' Chàirn - + Poland A' Phòlainn - + Portugal A' Phortagail - + Puerto Rico Porto Rìceo - + Qatar Catar - + Reunion Réunion - + Romania Romàinia - + Russian Federation An Co-nasgadh Ruiseach - + Rwanda Rubhanda - + Saint Helena Eilean Naomh Eilidh - + Saint Kitts And Nevis Naomh Crìstean is Nibheis - + Saint Lucia Naomh Lùisea - + Saint Pierre And Miquelon Saint Pierre is Miquelon - + Saint Vincent And The Grenadines Naomh Bhionsant agus Eileanan Greanadach - + Samoa Samotha - + San Marino San Marino - + Sao Tome And Principe São Tomé is Príncipe - + Saudi Arabia Aràibia nan Sabhd - + Senegal Seanagal - + Serbia And Montenegro An t-Sèirb is am Monadh Negrach - + Seychelles Na h-Eileanan Sheiseall - + Sierra Leone Siarra Leòmhann - + Singapore Singeapòr - + Slovakia An t-Slòbhac - + Slovenia An t-Slòbhain - + Solomon Islands Eileanan Sholaimh - + Somalia Somàilia - + South Africa Afraga a Deas - + South Georgia And The South Sandwich Islands Seòrsea a Deas is na h-Eileanan Sandwich a Deas - + Spain An Spàinn - + Sri Lanka Sri Lanca - + Sudan Sudàn - + Suriname Suranam - + Svalbard And Jan Mayen Svalbard is Jan Mayen - + Swaziland Dùthaich nan Suasaidh - + Sweden An t-Suain - + Switzerland An Eilbheis - + Syrian Arab Republic Siridhea, Poblachd Arabach - + Taiwan, Province Of China Taidh-Bhàn, Mòr-roinn na Sìne - + Tajikistan Taidigeastàn - + Tanzania, United Republic Of An Tansan, Poblachd Aonaichte - + Thailand Dùthaich nan Tàidh - + Timor-Leste Tìomor an Ear - + Togo Togo - + Tokelau Tokelau - + Tonga Tonga - + Trinidad And Tobago Trianaid is Tobago - + Tunisia Tuinisea - + Turkey An Tuirc - + Turkmenistan Turcmanastàn - + Turks And Caicos Islands Na h-Eileanan Turcach is Caiceo - + Tuvalu Tubhalu - + Uganda Uganda - + Ukraine An Ucràin - + United Arab Emirates Na h-Iomaratan Arabach Aonaichte - + United Kingdom An Rìoghachd Aonaichte - + United States Na Stàitean Aonaichte - + United States Minor Outlying Islands Meanbh-Eileanan Iomallach nan Stàitean Aonaichte - + Uruguay Uruguaidh - + Uzbekistan Usbagastan - + Vanuatu Vanuatu - + Venezuela A' Bheiniseala - + Viet Nam Bhiet-Nam - + Virgin Islands, British Eileanan Breatannach na Maighdinn - + Virgin Islands, U.S. Eileanan na Maighdinn aig na Stàitean Aonaichte - + Wallis And Futuna Uallas agus Futuna - + Western Sahara Sathara an Iar - + Yemen An Eaman - + Zambia Sàimbia - + Zimbabwe An t-Sìombab - + Are you sure you want to report the game name: "%1" as inappropriate? A bheil thu cinnteach gu bheil thu airson ainm a' gheama: "%1" aithris mar mhì-iomchaidh? - + Are you sure you want to close the game: "%1"? A bheil thu cinnteach gu bheil thu airson an geama: "%1" a dhùnadh? - + Are you sure you want to total kickban the player: "%1"? A bheil thu cinnteach gu bheil thu airson an cluicheadair: "%1" a thoirmeasg? @@ -3662,147 +3721,147 @@ Faodaidh tu cuireadh a thoirt dha chluicheadair eile le briogadh deas air fhar-a gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stad - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1- An t-einnsean Open-Source Texas Holdem - - - - - - - - + + + + + + + + Start Tòisich - - - - - + + + + + Lobby Lobaidh - - + + Chat Cabadaich - + Closing PokerTH during network game A' dùnadh PokerTH rè geama lìonraidh - + You are the hosting server. Do you want to close PokerTH anyway? 'S e an t-òstair a th' annad. A bheil thu airson PokerTH a dhùnadh co-dhiù? - + Really want to exit? A bheil thu cinnteach gu bheil thu airson fàgail? - + PokerTH - Close Table? PokerTH - A bheil thu airson am bòrd a dhùnadh? - + PokerTH - Internet Game Message PokerTH - Brath a' gheama eadar-lìn - + Attention! Do you really want to leave the current game and go back to the lobby? An aire! A bheil thu cinnteach gu bheil thu airson an geama seo fhàgail is tilleadh dhan lobaidh? + - Chat is only available to registered players. Chan eil a' chabadaich ri làimh ach airson chluicheadairean a' chlàraich. - + Spectators Amhairc - - + + Chance Seans - - + + Kick Thoir a' bhròg - - + + Do you want to kick <b>%1</b><br>from this game? A bheil thu airson a' bhròg a thoirt dha <b>%1</b><br>on gheama seo? - - - - + + + + <b>%1</b> secs left <b>%1</b> diog air fhàgail - + vote bhòta - + votes bhòtaichean - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Tha <b>%2</b> %3 an aghaidh cluicheadair <b>%1</b>.<br>Tha <b>%4</b> bhòta(ichean) a dhìth gus a' bhròg a thoirt dha. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Tha <b>%1</b> %2 nad aghaidh.<br>Tha <b>%3</b> bhòta(ichean) a dhìth gus am faigh thu a' bhròg. @@ -3860,7 +3919,7 @@ is tilleadh dhan lobaidh? internetGameLoginDialogImpl - + Create new user account Cruthaich cunntas cleachdaiche ùr @@ -4001,10 +4060,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error A' luchdadh pròifil an fhrithealaiche-Mearachd fhaidhle @@ -4014,46 +4073,46 @@ p, li { white-space: pre-wrap; } Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a luchdadh: - - - - + + + + Could not load server-profiles-file: %1 Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a luchdadh: %1 - + Save Server Profile Error Sàbhail a' mhearachd aig pròifil an fhrithealaiche - + A profile with the name: %1 already exists. Would you like to overwrite ? Tha pròifil ann air a bheil: %1 mu thràth. A bheil thu airson sgrìobhadh thairis air? - + Read Server-Profile List Error A' leughadh liosta pròifil nam frithealaiche-Mearachd fhaidhle - + Could not read server-profiles list Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a leughadh - - + + Save Server-Profile-File Error A' sàbhaladh pròifil an fhrithealaiche-Mearachd fhaidhle - - + + Could not save server-profiles-file: %1 Cha b' urrainn dhuinn am faidhle airson pròifilean nam frithealaichean a shàbhaladh: @@ -4126,12 +4185,12 @@ A bheil thu airson sgrìobhadh thairis air? manualBlindsOrderDialogImpl - + Manual Blinds Order Òrdugh nam blinds a làimh - + You cannot set more than 30 manual blinds. Chan urrainn dhut barrachd air 30 blinds a làimh a shuidheachadh. @@ -4254,38 +4313,38 @@ A bheil thu airson sgrìobhadh thairis air? selectAvatarDialogImpl - - - + + + Avatar File Error Mearachd le faidhle an avatar - + Please select an avatar from the list! Feuch an tagh thu avatar on liosta! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Tha meud an fhaidhle aig an dealbh a thagh thu ro mhòr. (30KB air a char as motha) Feuch an tagh thu dealbh nas lugha! - + The entered avatar picture doesn't exist. Please enter an valid picture! Chan eil dealbh an avatar a chuir thu a-steach ann. Feuch an cuir thu a-steach dealbh dligheach! - + Select external avatar picture Tagh dealbh avatar bho thaobh a-muigh - + Images (*.png *.jpg *.gif) Dealbhan (*.png *.jpg *.gif) @@ -4347,7 +4406,7 @@ Feuch an cuir thu a-steach dealbh dligheach! Geama lìonraidh / eadar-lìn - + Switch keyboard focus to bet-input-field if it's your turn Cuir fòcas a' mheur-chlàir air raon cur a-steach "geall" mas e an turas agadsa a th' ann @@ -4355,14 +4414,14 @@ Feuch an cuir thu a-steach dealbh dligheach! - + Sound Fuaim - + Factory Settings Roghainnean an fhactaraidh @@ -4379,356 +4438,366 @@ Feuch an cuir thu a-steach dealbh dligheach! Cuir sgrìn-aithneachaidh aig toiseach a' gheama à comas - + Show country flag in the corner of avatar Seal bratach na dùthcha air oisean an avatar - + Activate the "accidentally call after big raise" blocker Gnìomhaich am bacadair "'call' le mearachd an dèidh togail ('raise') mhòir" - + Do not hide avatars of players which are on the ignore list Na falaich avataran nan cluicheadairean a tha air an liosta neo-shuime - + Disable emoticons in the chat Cuir samhlaidhean-gnùis à comas sa chabadaich - - + + Show network state color on the avatar + + + + + Game Table Bòrd a' gheama - - - - + + + + Description Tuairisgeul - - - - + + + + Maintainer Neach-glèidhidh - - - + + + State Staid - - + + Card Deck Paca chairt - - + + Card Back Cùlaibh nan cairtean - - + + Use card back from card style Cleachd cùlaibh nan cairtean aig stoidhle nan cairtean - - + + Use custom card back picture: Cleachd dealbh gnàthaichte mar chùlaibh nan cairtean: - - + + Play sound effects Cluich èifeachdan fuaime - - + + Sound Volume: Àirde fuaime: - - + + 10 10 - - + + Sound Categories Roinnean-seòrsa nam fuaimean - - + + Play game actions sounds like "check", "call", "raise" Cluich fuaimean airson gnìomhan a' gheama mar "check", "call", "raise" - - + + Play lobby chat notifications Cluich brathan aig cabadaich an lobaidh - - + + Play network/internet game notifications like "player joined the game" Cluich brathan aig geama lìonraidh/eadar-lìn mar "ghabh cluicheadair sa gheama" - + Local Game Settings Roghainnean a' gheama ionadail - - + + Number of players: Àireamh dhe chluicheadairean: - - - - + + + + Start Cash: Airgead tòiseachaidh: - - - - - - - - + + + + + + + + $ £ - - - - + + + + First small blind: A' chiad small blind: - - - - + + + + Raise blinds: Tog ("raise") blinds: - - - - - - - - + + + + + + + + Every: Gach: - - - - + + + + hands làmh - - - - + + + + minutes mionaid - - - - + + + + Raise mode: Dòigh na togail ("raise"): - - - - + + + + Always double blinds Blinds dùbailte an-còmhnaidh - - - - + + + + Manual blinds order: Òrdugh nam blinds a làimh: - - - - + + + + Edit ... Deasaich ... - - + + Game Speed: Luaths a' gheama: - - + + Pause between hands (press "start" button to go on) Stad eadar làmhan (briog air "tòisich" gus leantainn air adhart) - - + + Show game settings dialog on every new game Seall còmhradh airson roghainnean a' gheama le toiseach gach geama ùir - - + + Server Password: Facal-faire an fhrithealaiche: - - + + Allow spectators to watch the game Ceadaich dha amhairc coimhead air a' gheama - + OK Ceart ma-thà - + Network Game Settings Roghainnean a' gheama lìonraidh - - + + Maximum number of players: An àireamh as motha dhe chluicheadairean: - - + + Timeout for player action: Crìochan ùine airson gnìomhachd a' chluicheadair: - - + + Reset all settings to default ... Ath-shuidhich na h-uile roghainn dhan bhun-roghainn ... - - + + Note: You can not reset all settings to default during a running game! An aire: chan urrainn dhut na h-uile roghainn ath-shuidheachadh dhan bhun-roghainn nuair a bhios geama a' ruith! - - - - + + + + s diog - - + + Network Server Settings Roghainnean an fhrithealaiche lìonraidh - - - - + + + + Server Port: Port an fhrithealaiche: - - - - - - Use SCTP - Cleachd SCTP - - - - - - - Use IPv6 - Cleachd IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">Dè th' ann?</a> - + Use SCTP + Cleachd SCTP + + + + + + + Use IPv6 + Cleachd IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">Dè th' ann?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Dè th' ann?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings Roghainnean a' gheama eadar-lìn - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4739,61 +4808,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: thèid </span><span style=" font-weight:600; font-style:italic;">Roghainnean a' gheama</span><span style=" font-style:italic;"> bunaiteach mar "An àireamh as motha dhe chluicheadairean", "Airgead tòiseachaidh" is "Small Blind" a chleachdadh </span><span style=" font-weight:600; font-style:italic;">bho Roghainnean a' gheama lìonraidh.</span></p></body></html> - - + + Server Address: Seòladh an fhrithealaiche: - - + + Use password for private game: Cleachd facal-faire airson geama phrìobhaideach: - - + + Computer Engine Einnsean coimpiutair - - + + Opponent 6: Co-fharpaisiche 6: - - + + Opponent 5: Co-fharpaisiche 5: - - + + Opponent 4: Co-fharpaisiche 4: - - + + Opponent 3: Co-fharpaisiche 3: - - + + Opponent 2: Co-fharpaisiche 2: - - + + Opponent 1: Co-fharpaisiche 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4804,50 +4873,50 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: gheibh thu an càileachd as fhearr aig an avatar le co-mheas deilbh mar </span><span style=" font-weight:600; font-style:italic;">leud=50, àirde=50.</span></p></body></html> - - + + Enable/Disable Logging Cuir logadh an comas/à comas - - + + Log File Directory: Pasgan aig an fhaidhle logaidh: - - + + Write log after every: Sgrìobh loga an dèidh gach: - - + + action (high frequent disc access) gnìomhachd (inntrigeadh dhan diosga gu tric) - - + + hand (medium disc access) làmh (inntrigeadh dhan diosga meadhanach) - - + + game (low disc access) geama (inntrigeadh dhan diosga ainneamh) - + Log Messages Logaich teachdaireachdan - + Player Nicks/Avatars Far-ainmean/avataran nan cluicheadairean @@ -4862,53 +4931,53 @@ p, li { white-space: pre-wrap; } Seall am bogsa-inneal taobh clì - - + + Play blind raise notification Cluich brath air togail ("raise") a' blind - - + + Automatic Server Configuration URL URL fèin-rèiteachaidh an fhrithealaiche - - + + Serverlist Address: Seòladh aig liosta nam frithealaichean: - - + + Manual Server Configuration Rèiteachaidh an fhrithealaiche a làimh - + Human Player: Cluicheadair daonna: - + (This nick will also be used for the online game login) (Logaidh tu a-steach leis an fhar-ainm seo dha gheamannan air loidhne cuideachd) - + Note: Best avatar quality with image ratio like width=50, height=50. An aire: gheibh thu an càileachd as fhearr aig an avatar le co-mheas deilbh mar leud=50, àirde=50. - - + + Store log files for: Sàbhail faidhlichean logaidh fad: - - + + Day(s) Là(ithean) @@ -4943,20 +5012,20 @@ p, li { white-space: pre-wrap; } Seall monatair air seans nan cairtean - + Note: Best quality with image ratio like width=48, height=76. An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar leud=48, àirde=76. - - + + Avatar Server: Frithealaiche an avatar: - + Style Stoidhle @@ -4966,33 +5035,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style Na eadar-theangaich sreangan poker mar "check", "call", "raise" o stoidhle aig bòrd a' gheama - - - - - - Add ... - Cuir ris ... - + Add ... + Cuir ris ... + + + + + + Remove Thoir air falbh - - - - + + + + Preview - Information: Ro-shealladh - Fiosrachadh: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5005,8 +5074,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Faigh stoidhlichean ùra a' bhùird gheama aig PokerTH ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5019,7 +5088,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Faigh stoidhlichean ùra airson pacannan chairt aig PokerTH ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5038,96 +5107,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">An aire: gheibh thu an càileachd as fhearr le co-mheas deilbh mar </span><span style=" font-weight:600; font-style:italic;">leud=48, àirde=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Dàil eadar làmhan: - - + + Server Frithealaiche - - + + Game Geama - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. An aire: Thèid roghainnean bunaiteach a' gheama mar "An àireamh as motha dhe chluicheadairean", "Airgead tòiseachaidh" is "Small Blind" a chleachdadh bho "Roghainnean a' gheama lìonraidh". - - + + Default game name: Ainm bunaiteach a' gheama: - - + + Default game type: Seòrsa bunaiteach a' gheama: - - + + Standard Àbhaisteach - - + + Registered players only Cluicheadairean a chlàraich a-mhàin - - + + Invited players only Cluicheadairean a fhuair cuireadh a-mhàin - - + + Ranking game Geama rangachaidh - + Show lobby chat Seall cabadaich an lobaidh - - + + Automatically leave the table after the game finished Fàg am bòrd gu fèin-obrachail nuair a thig crìoch air a' gheama - - + + Ignored Players Cluicheadairean air an liosta neo-shuime - - + + Player Cluicheadair - - + + Remove Player Thoir an cluicheadair air falbh - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5140,20 +5209,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cluicheadair daonna:<br /><span style=" font-style:italic;">(Logaidh tu a-steach leis an fhar-ainm seo dha gheamannan air loidhne cuideachd)</span></p></body></html> - - + + Opponent 7: Co-fharpaisiche 7: - - + + Opponent 8: Co-fharpaisiche 8: - - + + Opponent 9: Co-fharpaisiche 9: @@ -5161,65 +5230,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Mearachd leis na roghainnean - + The entered flipside picture doesn't exist. Please enter an valid picture! Chan eil an dealbh cùlaibh a chuir thu a-steach ann. Feuch an cuir thu a-steach dealbh dligheach! - - + + The log file directory doesn't exist. Please select an valid directory! Chan eil am pasgan airson an fhaidhle loga ann. Feuch an tagh thu pasgan dligheach! - + Language Changed Cànan air atharrachadh - + You have changed application language to %1. Please restart PokerTH to load new language! Dh'atharraich thu cànan an aplacaid gu %1. Feuch an ath-thòisich thu PokerTH gus an cànan ùr a luchdadh! - + Select your flipside picture Tagh an dealbh cùlaibh agad - + Images (*.png *.jpg *.gif) Dealbhan (*.png *.jpg *.gif) - + Open Directory Fosgail pasgan - - + + Blinds Error Mearachd le blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5228,304 +5297,304 @@ nas lugha na a' chiad small blind! Thèid luach a' chiad small blind seo a shuidheachadh air an luach ceadaichte as motha. - + The entered server list address is not a valid URL. Please enter a valid server list address! Chan eil an seòladh aig liosta nam frithealaichean a chuir thu a-steach 'na URL dligheach. Feuch an cuir thu a-steach seòladh aig liosta nam frithealaichean dligheach! - + Afrikaans Afraganais - + Bulgarian Bulgarais - + Catalan Catalanais - + Chinese Sìnis - + Czech Seicis - + Danish Danmhairgis - + Dutch Duitsis - + English Beurla - + Finnish Fionnlannais - + French Fraingis - + Galician Gailìsis - + German Gearmailtis - + Greek Greugais - + Hungarian Ungairis - + Italian Eadailtis - + Japanese Seapanais - + Lithuania Liotuainis - + Norwegian Nirribhis - + Polish Pòlainnis - + Portuguese-Brazilian Portagailis Bhraisileach - + Portuguese-Portuguese Portagailis na Portagaile - + Russian Ruisis - + Scottish Gaelic Gàidhlig na h-Alba - + Slovak Slòbhacais - + Spanish Spàinntis - + Swedish Suainis - + Tamil Taimilis - + Turkish Turcais - + Vietnamese Bhiet-Namais - + The opponent names are not unique. Please choose different names for each Opponent! Chan eil ainm fa leth aig gach co-fharpaisiche. Feuch an tagh thu ainm eadar-dhealaichte airson gach co-fharpaisiche! - + Settings Information Fiosrachadh nan roghainnean - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Ah'dhatharraich thu pasgan am faidhle loga. Feuch an ath-thòisich thu PokerTH gus am pasgan ùr airson nam faidhlichean loga a chleachdadh! - - + + Maintainer Name Ainm an neach-glèidhidh - - + + Maintainer EMail Post-d an neach-glèidhidh - - + + Create Date Ceann-latha a' chruthachaidh - + Windows Behaviour Giùlan Windows - + scaleable gabhaidh e sgèileadh - + fixed suidhichte - + Minimum Size Meud as lugha - + Maximum Size Meud as motha - + Fixed Size Meud suidhichte - + State Staid - + Please select your game table style Tagh stoidhle aig bòrd a' gheama - + PokerTH game table styles (*.xml) Stoidhlean bòrd a' gheama aig PokerTH (*.xml) - + Game Table Style Error Mearachd le stoidhle bòrd a' gheama - + Selected game table style file is already in the list. Please select another one to add! Tha an stoidhle bùird a thagh thu air an liosta mu thràth. Feuch an tagh thu tè eile airson cur ris! - + Game Table Style File Error Mearachd le faidhle airson stoidhle bòrd a' gheama - + Could not load game table style file correctly. Style will not be placed into list! Cha b' urrainn dhuinn am faidhle airson stoidhle bòrd a' gheama a luchdadh mar bu chòir. Cha tèid an stoidhle a cur ris an liosta! - + Please select your card deck style Tagh an stoidhle airson a' phaca cairt agad - + PokerTH card deck styles (*.xml) Stoidhle paca chairt aig PokerTH (*.xml) - + Card Deck Style Error Mearachd le stoidhle airson paca chairt - + Selected card deck style file is already in the list. Please select another one to add! Tha am faidhle airson stoidhle paca chairt air an liosta mu thràth. Feuch an tagh thu fear eile airson cur ris! - + Card Deck Style File Error Mearachd le faidhle airson stoidhle paca chairt - + Could not load card deck style file correctly. Style will not be placed into list! Cha b' urrainn dhuinn am faidhle airson stoidhle paca chairt a luchdadh mar bu chòir. Cha tèid an stoidhle a chur ris an liosta! - + PokerTH - Settings PokerTH - Roghainnean - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? An aire: sguabaidh seo às dha na roghainnean pearsanta agad uile is dùinidh e PokerTH! @@ -5591,12 +5660,12 @@ A bheil thu cinnteach gu bheil thu airson roghainnean an fhactaraidh ath-shuidhe startNetworkGameDialogImpl - + Server Error Mearachd an fhrithealaiche - + You should not kick yourself from this game! Cha bu chòir dhut a' bhròg a thoirt dhut fhèin! diff --git a/ts/pokerth_gl.ts b/ts/pokerth_gl.ts index ef27817c..df384e74 100644 --- a/ts/pokerth_gl.ts +++ b/ts/pokerth_gl.ts @@ -1,6 +1,6 @@ - + CardDeckStyleReader @@ -286,108 +286,108 @@ Volva probar, desta vez cun estilo de taboleiro. Analizar o ficheiro de historial… - + PokerTH - Delete log files PokerTH — Eliminar os ficheiros de historial - + Do you really want to delete the selected log files? Está seguro de que quere eliminar os ficheiros de historial seleccionados? - + Remove log file Eliminar o ficheiro de historial - + PokerTH cannot remove this log file, please verify that you have write access to this file! Non é posíbel eliminar o ficheiro de historial seleccionado. Comprobe que ten permisos de escritura no ficheiro. - + Export PokerTH log file to HTML Exportar o ficheiro de historial de PokerTH como HTML - + PokerTH HTML log (*.html) Historial de PokerTH en HTML (*.html) - + Export PokerTH log file to plain text Exportar o historial de PokerTH como texto simple - + PokerTH plain text log (*.txt) Historial de PokerTH en texto simple (*.txt) - + Save PokerTH log file Gardar o ficheiro de historial de PokerTH - + PokerTH SQL log (*.pdb) Historial de PokerTH en SQL (*.pdb) - + No file received. Non se recibiu ningún ficheiro. - + File rejected because of too many uploads. Rexeitouse o ficheiro por mor da gran cantidade de envíos. - + File rejected because of too many recent uploads. Please try again later. Rexeitouse o ficheiro por mor da gran cantidade de envíos recentes. Inténteo de novo máis tarde. - + The file is too large. O ficheiro é grande de máis. - + This file is not a valid and current PokerTH log file. O ficheiro non é un ficheiro de historial de PokerTH válido para esta versión. - + Internal error. Please try again later. ID: Produciuse un erro interno. Volva intentalo máis tarde. Identificador: - - + + Uploading log file Enviando o ficheiro de historial… - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. Non foi posíbel realizar o envío. Asegúrese de que ten conexión a internet. O envío de ficheiros de historial pode non funcionar se está a empregar un proxy HTTP. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. O servidor web non puido procesar o ficheiro de historial. Asegúrese de que está a enviar un ficheiro de historial de PokerTH válido. - - + + Failure reason: Causa do problema: @@ -411,22 +411,60 @@ Asegúrese de que está a enviar un ficheiro de historial de PokerTH válido. + Unignore Player + + + + Report inappropriate avatar Informar de que a imaxe non é axeitada - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Non volverá recibir mensaxes de conversa ou invitacións a partidas deste xogador.<br>Está seguro de que quere poñer o xogador <b>%1</b> na súa lista de xogadores ignorados? - - + + + PokerTH - Question PokerTH — Pregunta - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? Está seguro de que quere informar de que a imaxe do usuario «%1» non é axeitada? @@ -481,7 +519,7 @@ p, li { white-space: pre-wrap; } <tr> <td style="border: none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">translator name - mail address</span></p></td></tr></table></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -496,7 +534,7 @@ p, li { white-space: pre-wrap; } p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Nimbus Sans L'; font-size:9pt; font-weight:400; font-style:normal;"> @@ -601,127 +639,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) PokerTH %1 para Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Sobre PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources • A Wikimedia Commons, de onde saíron algunhas das imaxes de usuario predeteminadas máis populares. - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures • A Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi e Caro,autores das imaxes de usuario predeterminadas que retratan persoas. - + - ZeiZei: for misc avatar pictures • A ZeiZei, autor de diversas imaxes de usuario. - + - kde-look.org: for different gpl licensed sounds • A kde-look.org, de onde sacamos varios sons con licenza GPL. - + - doc_dos: for self recorded chip sounds • A doc_dos, autor de sons de chips. - + - thiger, dunkanx, BerndA, coldz, drull: for different patches • A thiger, dunkanx, BerndA, coldz, drull, autores de diversos parches. - + - kraut: for internet-game-server hosting and administration • A kraut. por facerse cargo dos custos e da administración do servidor de partidas en internet. - + - danuxi: for startwindow background gfx and danuxi1 table background • A danuxi, pola imaxe de fondo da xanela de inicio e mailo fondo do taboleiro “danuxi1”. - + - heyn: for moderating forum and organise bugtracker and feature requests • A heyn, por exercer de moderador no foro, e organizar os informes de erro e mailas solicitudes de funcionalidades. - + - texas_outlaw: for new table sounds • A texas_outlaw, polos sons para o novo taboleiro. - + - Poker engine for the popular Texas Hold'em Poker • Motor de póker descuberto.“Texas Hold’em”. - + - Singleplayer games with up to 9 computer-opponents • Partidas locais dun xogador contra ata 9 rivais artificiais. - + - Multiplayer network games • Partidas de varios xogadores nunha rede. - + - Internet online games • Partidas en internet. - + - Changeable gui with online style gallery • A interface pode usar distintos estilos, que poden descargarse de internet. - + - Online ranking website with result tables • Sitio web in internet coas puntuacións e mailas táboas de resultados. - + Project page: Páxina do proxecto: - + Authors: Autores: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package Idea orixinal, arquitectura básica, interfacek, edición das imaxes da interface e paquete para sistemas Linux. - + initial idea, basic architecture, engine development Idea orixinal, arquitectura básica e desenvolvemento do motor. - + basic architecture, network development, windows package, MacOS package Arquitectura básica, desenvolvemento das funcionalidades de rede e paquetes para Windows e Mac OS X. - + initial gui graphics design Deseño inicial das imaxes da interface. @@ -838,12 +876,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Orde manual das apostas obrigatorias - + You cannot set more than 30 manual blinds. Non pode definir máis de 30 apostas obrigatorias de xeito manual. @@ -877,44 +915,44 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Non pode entrar na sala de espera para partidas en internet co alcume «Xogador». Debe escoller un distinto. - - - + + + Nick name: Alcume: - + Your player name is already used by another player. Please choose a different name. Ese alcume xa o usa outro xogador. Escolla outro distinto. - + The player name is too short, too long or invalid. Please choose another one. O alcume é curto de máis, longo de máis, ou contén caracteres incorrectos. Escolla outro distinto. - + There is already a game with your chosen game name. Please choose another one! Xa existe unha partida con ese nome. Escolla outro distinto. - + There is a forbidden word in your chosen game name. Please choose another one! No nome que escolleu para a partida hai algunha palabra da lista de palabras prohibidas. Escolla un nome distinto. - - + + Game name: Nome da partida: @@ -942,27 +980,27 @@ Please choose another one! connectToServerDialogImpl - + Resolving address... Determinando o enderezo IP do servidor… - + Connecting to server... Conectándose ao servidor… - + Starting session... Iniciando unha sesión… - + Connection established! Estableceuse a conexión. - + Reading server list... Procesando a lista de servidores… @@ -1109,7 +1147,7 @@ Please choose another one! <i>As apostas obrigatorias duplícanse cada %1 mans.</i> - + %1's game Partida de %1 @@ -1337,7 +1375,7 @@ p, li { white-space: pre-wrap; } Join &any game - Unirse a unha partida cal&quera + Unirse a unha partida cal&quera @@ -1397,71 +1435,71 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... Comezando a partida… - + Joining a private Game Uníndose a unha partida privada… - + You are about to join a private game. Please enter the password! Esta partida é privada, polo que debe introducir o contrasinal. - + open Aberta - - - - + + + + Game Info Información da partida - + Spectate Espectar - - + + Game Partida - - + + Players Xogadores - - + + State Estado - - + + P Privada. P - - + + Available Players Xogadores dispoñíbeis @@ -1477,99 +1515,104 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Información… - + Report inappropriate game name Informar de que o nome non é axeitado - - - + + + Standard Estándar - - - + + + Registered players only Para xogadores rexistrados - - - + + + Invited players only Acceso só con invitación - - - + + + Ranking game Partida de puntuación Connected players - max. %1 - Xogadores conectados (límite: %1) + Xogadores conectados (límite: %1) - - + + T Tipo T - - - + + + sec (action) segundos por quenda - - - + + + sec (hand delay) segundos entre mans Connected players - Max. %1 - Xogadores conectados (límite: %1) + Xogadores conectados (límite: %1) - + running En marcha - - + + running games: %1 Partidas en marcha: %1 - - + + open games: %1 Partidas abertas: %1 - - + + Players (%1) Xogadores (%1) - - - + + + Spectators (%1) Espectadores (%1) @@ -1579,134 +1622,134 @@ p, li { white-space: pre-wrap; } Convidar a %1 - + Ignore %1 Ignorar a %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 convidou a %1 a unirse a %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 rexeitou a invitación para %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 non pode unirse a %2 porque está ocupado.</span> - + The game will start in<br><b>%1</b> seconds. A partida comeza en <br><b>%1</b> segundos. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Uniuse a unha partida privada, á que só se pode acceder previa invitación. Para convidar a outros xogadores, prema co botón secundario a súa entrada na lista de xogadores dispoñíbeis, e use o menú de contexto. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? <b>%2</b> convidouno á partida <b>%1</b>.<br>Quere unirse? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Non volverá recibir mensaxes de conversa ou invitacións a partidas deste usuario.<br>Está seguro de que quere poñer a <b>%1</b> na súa lista de xogadores ignorados? - - + + connected players: %1 Xogadores conectados: %1 - + Waiting for the start of the next hand to rejoin the game ... Agardando a que comece a seguinte man para volver unirse á partida… - + Click here to view the online rankings Ver as puntuacións en internet - - + + Time Tempos - - + + Show player stats Estatísticas - - + + Admin action ... Acción de administrador… - + Total kickban Expulsión total - + Close game Pechar a partida Connected players - Xogadores conectados + Xogadores conectados - + hands mans - + minutes minutos - + double blinds dobre - + manual blinds order serie predefinida - + Server Error Erro do servidor - + You should not kick yourself from this game! Non debería expulsarse a si mesmo da partida! - + search for player ... Buscar un xogador… - + Chat is only available to registered players. Só os xogadores rexistrados poden participar a conversa. @@ -1716,1264 +1759,1280 @@ Para convidar a outros xogadores, prema co botón secundario a súa entrada na l Convidar… - + Ignore player ... Ignorar… + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 está a xogar en «%2». - + %1 is not playing at the moment. %1 non está a xogar. - - + + PokerTH - Info Message PokerTH — Mensaxe de información - - + + - + + PokerTH - Question PokerTH — Pregunta - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Afghanistan Afganistán - + ALand Islands Åland - + Albania Albania - + Algeria Alxeria - + American Samoa Samoa Americana - + Andorra Andorra - + Angola Angola - + Anguilla Anguila - + Antarctica Antártida - + Antigua And Barbuda Antiga e Barbuda - + Argentina Arxentina - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Acerbaixán - + Bahamas Bahamas - + Bahrain Bahrein - + Bangladesh Bangladesh - + Barbados Barbados - + Belarus Bielorrusia - + Belgium Bélxica - + Belize Belice - + Benin Benín - + Bermuda Bermuda - + Bhutan Bután - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia e Hercegovina - + Botswana Botsuana - + Bouvet Island Illa Bouvet - + Brazil Brasil - + British Indian Ocean Territory Territorio Británico do Océano Índico - + Brunei Darussalam Brunei - + Bulgaria Bulgaria - + Burkina Faso Burquina Faso - + Burundi Burundi - + Cambodia Camboxa - + Cameroon Camerún - + Canada Canadá - + Cape Verde Cabo Verde - + Cayman Islands Illas Caimán - + Central African Republic República Centroafricana - + Chad Chad - + Chile Chile - + China China - + Christmas Island Illa de Nadal - + Cocos (Keeling) Islands Illas Cocos (Keeling) - + Colombia Colombia - + Comoros Comores - + Congo Congo - + Congo, The Democratic Republic Of The República democrática do Congo - + Cook Islands Illas Cook - + Costa Rica Costa Rica - + Cote D'Ivoire Costa do Marfil - + Croatia Croacia - + Cuba Cuba - + Cyprus Chipre - + Czech Republic República Checa - + Denmark Dinamarca - + Djibouti Xibutí - + Dominica Dominica - + Dominican Republic República Dominicana - + Ecuador Ecuador - + Egypt Exipto - + El Salvador O Salvador - + Equatorial Guinea Guinea Ecuatorial - + Eritrea Eritrea - + Estonia Estonia - + Ethiopia Etiopía - + Falkland Islands (Malvinas) Illas Malvinas (Falkland) - + Faroe Islands Illas Feroe - + Fiji Fidxi - + Finland Finlandia - + France Francia - + French Guiana Güiana Francesa - + French Polynesia Polinesia Francesa - + French Southern Territories Terras Austrais e Antárticas Francesas - + Gabon Gabón - + Gambia Gambia - + Georgia Xeorxia - + Germany Alemaña - + Ghana Gana - + Gibraltar Xibraltar - + Greece Grecia - + Greenland Grenlandia - + Grenada Granada - + Guadeloupe Guadalupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bisau - + Guyana Güiana - + Haiti Haití - + Heard Island And Mcdonald Islands Illa Heard e Illas McDonald - + Holy See (Vatican City State) Cidade do Vaticano - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Hungría - + Iceland Islandia - + India India - + Indonesia Indonesia - + Iran, Islamic Republic Of Irán - + Iraq Iraq - + Ireland Irlanda - + Isle Of Man Illa de Man - + Israel Israel - + Italy Italia - + Jamaica Xamaica - + Japan Xapón - + Jersey Xersei - + Jordan Xordania - + Kazakhstan Casaquistán - + Kenya Quenia - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Corea do Norte - + Korea, Republic Of Corea do Sur - + Kuwait Kuwait - + Kyrgyzstan Quirguicistán - + Lao People'S Democratic Republic Laos - + Latvia Letonia - + Lebanon Líbano - + Lesotho Lesoto - + Liberia Liberia - + Libyan Arab Jamahiriya Libia - + Liechtenstein Liechtenstein - + Lithuania Lituania - + Luxembourg Luxemburgo - + Macao Macau - + Macedonia, The Former Yugoslav Republic Of Macedonia - + Madagascar Madagascar - + Malawi Malaui - + Malaysia Malaisia - + Maldives Maldivas - + Mali Malí - + Malta Malta - + Marshall Islands Illas Marshall - + Martinique Martinica - + Mauritania Mauritania - + Mauritius Mauricio - + Mayotte Mayotte - + Mexico México - + Micronesia, Federated States Of Micronesia - + Moldova, Republic Of Moldavia - + Monaco Mónaco - + Mongolia Mongolia - + Montserrat Montserrat - + Morocco Marrocos - + Mozambique Mozambique - + Myanmar Birmania - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Países Baixos - + Netherlands Antilles Antillas Neerlandesas - + New Caledonia Nova Caledonia - + New Zealand Nova Zelandia - + Nicaragua Nicaragua - + Niger Níxer - + Nigeria Nixeria - + Niue Niue - + Norfolk Island Illa Norfolk - + Northern Mariana Islands Marianas do Norte - + Norway Noruega - + Oman Omán - + Pakistan Paquistán - + Palau Palau - + Palestinian Territory, Occupied Territorios palestinos ocupados - + Panama Panamá - + Papua New Guinea Papúa Nova Guinea - + Paraguay Paraguai - + Peru Perú - + Philippines Filipinas - + Pitcairn Pitcairn - + Poland Polonia - + Portugal Portugal - + Puerto Rico Porto Rico - + Qatar Qatar - + Reunion Reunión - + Romania Romanía - + Russian Federation Rusia - + Rwanda Ruanda - + Saint Helena Santa Helena - + Saint Kitts And Nevis Saint Kitts e Nevis - + Saint Lucia Santa Lucía - + Saint Pierre And Miquelon San Pedro e Miguelón - + Saint Vincent And The Grenadines San Vicente e Granadinas - + Samoa Samoa - + San Marino San Mariño - + Sao Tome And Principe San Tomé e Príncipe - + Saudi Arabia Arabia Saudí - + Senegal Senegal - + Serbia And Montenegro Serbia e Montenegro - + Seychelles Seixeles - + Sierra Leone Serra Leoa - + Singapore Singapur - + Slovakia Eslovaquia - + Slovenia Eslovenia - + Solomon Islands Illas Salomón - + Somalia Somalia - + South Africa Sudáfrica - + South Georgia And The South Sandwich Islands Illas Xeorxias do Sur e Sandwich do Sur - + Spain España - + Sri Lanka Sri Lanka - + Sudan Sudán - + Suriname Suriname - + Svalbard And Jan Mayen Svalbard e Jan Mayen - + Swaziland Suacilandia - + Sweden Suecia - + Switzerland Suíza - + Syrian Arab Republic Siria - + Taiwan, Province Of China Taiwán - + Tajikistan Taxiquistán - + Tanzania, United Republic Of Tanzania - + Thailand Tailandia - + Timor-Leste Timor-Leste - + Togo Togo - + Tokelau Toquelau - + Tonga Tonga - + Trinidad And Tobago Trindade e Tobago - + Tunisia Tunisia - + Turkey Turquía - + Turkmenistan Turcomenistán - + Turks And Caicos Islands Turks e Caicos - + Tuvalu Tuvalu - + Uganda Uganda - + Ukraine Ucraína - + United Arab Emirates Emiratos Árabes Unidos - + United Kingdom Reino Unido - + United States Estados Unidos de América - + United States Minor Outlying Islands Illas ultramariñas dos Estados Unidos de América - + Uruguay Uruguai - + Uzbekistan Usbequistán - + Vanuatu Vanuatu - + Venezuela Venezuela - + Viet Nam Vietnam - + Virgin Islands, British Illas Virxes Británicas - + Virgin Islands, U.S. Illas Virxes Estadounidenses - + Wallis And Futuna Wallis-e-Futuna - + Western Sahara Sáhara Occidental - + Yemen Iemen - + Zambia Zambia - + Zimbabwe Cimbabue - + Are you sure you want to report the game name: "%1" as inappropriate? Está seguro de que quere informar de que o nome da partida «%1» non é axeitado? - + Are you sure you want to close the game: "%1"? Estás seguro de que queres pechar a partida: «%1»? - + Are you sure you want to total kickban the player: "%1"? Estás seguro de que queres expulsar completamente o xogador «%1»? @@ -3260,146 +3319,146 @@ Para convidar a outros xogadores, prema co botón secundario a súa entrada na l gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Deter - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 — O motor libre de Texas Hold’em - - - - - - - - + + + + + + + + Start Comezar - - - - - + + + + + Lobby Sala de espera - - + + Chat Conversa - + Closing PokerTH during network game Pechar PokerTH durante unha partida de rede - + You are the hosting server. Do you want to close PokerTH anyway? A súa máquina está a aloxar a partida de rede. Está seguro de que quere pechar PokerTH? - + Really want to exit? Está seguro de que quere saír? - + PokerTH - Close Table? PokerTH — Pechar o taboleiro - + PokerTH - Internet Game Message PokerTH — Mensaxe dunha partida por internet - + Attention! Do you really want to leave the current game and go back to the lobby? Atención: está seguro de que quere saír da partida actual e volver á sala de espera? + - Chat is only available to registered players. Só os xogadores rexistrados poden participar na conversa. - + Spectators Espectadores - - + + Chance Probabilidade - - + + Kick Expulsar - - + + Do you want to kick <b>%1</b><br>from this game? Está seguro de que quere expulsar<br>a<b>%1</b>da partida? - - - - + + + + <b>%1</b> secs left Restan <b>%1</b> segundos. - + vote voto - + votes votos - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Hai <b>%2</b> %3 contra o xogador <b>%1</b>.<br>Necesítanse <b>%4</b> votos para expulsalo. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Hai <b>%1</b> %2 contra vostede.<br>Faltan <b>%3</b> votos para que o expulsen. @@ -3457,7 +3516,7 @@ and go back to the lobby? internetGameLoginDialogImpl - + Create new user account Crear unha nova conta de usuario @@ -3598,59 +3657,59 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Erro ao cargar o ficheiro do perfil de servidor Could not load server-profiles-file: - Non foi posíbel cargar o ficheiro do perfil de servidor: + Non foi posíbel cargar o ficheiro do perfil de servidor: - - - - + + + + Could not load server-profiles-file: %1 Non foi posíbel cargar o ficheiro de perfís de servidores: %1 - + Save Server Profile Error Erro ao gardar o perfil de servidor - + A profile with the name: %1 already exists. Would you like to overwrite ? Xa hai un perfil chamado «%1». Quere substituílo? - + Read Server-Profile List Error Erro ao lero ficheiro do perfil de servidor - + Could not read server-profiles list Non foi posíbel ler a lista de perfís de servidor. - - + + Save Server-Profile-File Error Erro ao gardar o ficheiro do perfil de servidor - - + + Could not save server-profiles-file: %1 Non foi posíbel cargar o ficheiro de perfís de servidores: @@ -3659,7 +3718,7 @@ Would you like to overwrite ? Could not save server-profiles-file: - Non foi posíbel gardar o ficheiro do perfil de servidor: + Non foi posíbel gardar o ficheiro do perfil de servidor: @@ -3724,12 +3783,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order Orde manual das apostas obrigatorias - + You cannot set more than 30 manual blinds. Non pode definir máis de 30 apostas obrigatorias de xeito manual. @@ -3852,36 +3911,36 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Erro co ficheiro de imaxe de usuario - + Please select an avatar from the list! Escolla unha imaxe da lista. - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! O tamaño do ficheiro seleccionado é demasiado grande; non pode superar os 30 kiB. Escolla un ficheiro máis pequeno. - + The entered avatar picture doesn't exist. Please enter an valid picture! A imaxe seleccionada non existe. Escolla unha existente. - + Select external avatar picture Escoller un ficheiro de imaxe - + Images (*.png *.jpg *.gif) Imaxes (*.png *.jpg *.gif) @@ -3943,7 +4002,7 @@ Please enter an valid picture! Partida de rede ou por internet - + Switch keyboard focus to bet-input-field if it's your turn Enfocar o campo da cantidade para apostar na súa quenda. @@ -3951,14 +4010,14 @@ Please enter an valid picture! - + Sound Son - + Factory Settings Configuración predeterminada @@ -3975,356 +4034,366 @@ Please enter an valid picture! Desactivar a imaxe de inicio. - + Show country flag in the corner of avatar Amosar a bandeira do país ou rexión na esquina da imaxe de usuario. - + Activate the "accidentally call after big raise" blocker Activar a protección para evitar «ir» tras unha gran suba. - + Do not hide avatars of players which are on the ignore list Non ocultar os avatares dos xogadores da lista de ignorados. - + Disable emoticons in the chat Desactivar as emoticonas nas conversas. - - + + Show network state color on the avatar + + + + + Game Table Taboleiro - - - - + + + + Description Descrición - - - - + + + + Maintainer Mantedor - - - + + + State Estado - - + + Card Deck Baralla - - + + Card Back Reverso - - + + Use card back from card style Usar o reverso do estilo de baralla. - - + + Use custom card back picture: Usar unha imaxe personalizada para o reverso: - - + + Play sound effects Reproducir efectos de son. - - + + Sound Volume: Volume do son: - - + + 10 10 - - + + Sound Categories Categorías de son - - + + Play game actions sounds like "check", "call", "raise" Sons para accións, como «ver», «ir» ou «subir». - - + + Play lobby chat notifications Sons para notificacións da conversa da sala de espera. - - + + Play network/internet game notifications like "player joined the game" Sons para notificacións de rede. Por exemplo: «uniuse un xogador». - - + + Server Password: Contrasinal do servidor: - - + + Allow spectators to watch the game Permitirlle observar a partida aos espectadores. - + OK Aceptar - + Local Game Settings Configuración das partidas locais - - + + Number of players: Límite de xogadores: - - - - + + + + Start Cash: Cartos iniciais: - - - - - - - - + + + + + + + + $ - - - - + + + + First small blind: Aposta obrigatoria inicial pequena: - - - - + + + + Raise blinds: Aumento das apostas obrigatorias - - - - - - - - + + + + + + + + Every: Cada: - - - - + + + + hands mans. - - - - + + + + minutes minutos. - - - - + + + + Raise mode: Tipo de aumento - - - - + + + + Always double blinds Duplicar. - - - - + + + + Manual blinds order: Empregar unha serie: - - - - + + + + Edit ... Editar… - - + + Game Speed: Velocidade da partida: - - + + Pause between hands (press "start" button to go on) Pausa entre mans (premer «Comezar» para continuar). - - + + Show game settings dialog on every new game Amosar o diálogo de configuración para todas as partidas novas. - + Network Game Settings Configuración das partidas de rede - - + + Maximum number of players: Límite de xogadores: - - + + Timeout for player action: Límite de tempo para cada xogador: - - + + Reset all settings to default ... Restaurar a configuración predeterminada - - + + Note: You can not reset all settings to default during a running game! Nota: non pode restaurar a configuración predeterminada durante unha partida. - - - - + + + + s s - - + + Network Server Settings Configuración do servidor - - - - + + + + Server Port: Porto: - - - - - - Use SCTP - Usar SCTP. - - - - - - - Use IPv6 - Usar IPv6. - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://gl.wikipedia.org/wiki/Protocolo_IPv6">Que é?</a> - + Use SCTP + Usar SCTP. + + + + + + + Use IPv6 + Usar IPv6. + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://gl.wikipedia.org/wiki/Protocolo_IPv6">Que é?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Que é?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings Configuración das partidas por internet - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4335,61 +4404,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: para algunhas </span><span style=" font-weight:600; font-style:italic;">opcións predeterminadas das partidas</span><span style=" font-style:italic;">, coma o «límite de xogadores», os «cartos iniciais» ou a «aposta obrigatoria inicial pequena», úsanse os valores </span><span style=" font-weight:600; font-style:italic;">da configuración das partidas de rede.</span></p></body></html> - - + + Server Address: Enderezo: - - + + Use password for private game: Contrasinal para as partidas privadas: - - + + Computer Engine Motor da intelixencia artificial - - + + Opponent 6: Rival 6 - - + + Opponent 5: Rival 5 - - + + Opponent 4: Rival 4 - - + + Opponent 3: Rival 3 - - + + Opponent 2: Rival 2 - - + + Opponent 1: Rival 1 - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4400,50 +4469,50 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: as dimensións coas que conseguirá unha maior calidade de imaxe son </span><span style=" font-weight:600; font-style:italic;">50×50</span>.</p></body></html> - - + + Enable/Disable Logging Levar un historial. - - + + Log File Directory: Cartafol do historial: - - + + Write log after every: Actualizar despois de cada: - - + + action (high frequent disc access) acción (uso frecuente do disco) - - + + hand (medium disc access) man (uso medio do disco) - - + + game (low disc access) partida (uso raro do disco) - + Log Messages Historial - + Player Nicks/Avatars Nomes e imaxes de usuario @@ -4458,53 +4527,53 @@ p, li { white-space: pre-wrap; } Amosar a caixa de ferramentas da esquerda. - - + + Play blind raise notification Sons para notificar subas obrigatorias. - - + + Automatic Server Configuration URL Usar un enderezo URL de configuración automática do servidor: - - + + Serverlist Address: Enderezo da lista de servidores: - - + + Manual Server Configuration Configurar manualmente o servidor: - + Human Player: Xogador: - + (This nick will also be used for the online game login) Nota: este nome usarase tamén ao xogar por internet. - + Note: Best avatar quality with image ratio like width=50, height=50. Nota: as dimensións coas que conseguirá unha maior calidade de imaxe son 50×50. - - + + Store log files for: Eliminar o historial pasados: - - + + Day(s) días @@ -4539,20 +4608,20 @@ p, li { white-space: pre-wrap; } Amosar o monitor de probabilidades. - + Note: Best quality with image ratio like width=48, height=76. Nota: as dimensións coas que conseguirá unha maior calidade de imaxe son 48×76. - - + + Avatar Server: Servidor de imaxes: - + Style Estilo @@ -4562,33 +4631,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style Non traducir palabras como «check», «call» e «raise» no taboleiro. - - - - - - Add ... - Engadir… - + Add ... + Engadir… + + + + + + Remove Eliminar - - - - + + + + Preview - Information: Vista previa — Información: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4601,8 +4670,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Descargar novos estilos de taboleiro…</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4615,7 +4684,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Descargar novos estilos de baralla…</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4634,96 +4703,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: as dimensións coas que conseguirá unha maior calidade de imaxe son </span><span style=" font-weight:600; font-style:italic;">48×76</span>.</p></td></tr></table></body></html> - - + + Delay between hands: Descanso entre mans: - - + + Server Servidor - - + + Game Partida - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Nota: para algunhas opcións predeterminadas das partidas, coma o «límite de xogadores», os «cartos iniciais» ou a «aposta obrigatoria inicial pequena», úsanse os valores da configuración das partidas de rede. - - + + Default game name: Nome predeterminado: - - + + Default game type: Tipo predeterminado: - - + + Standard Estándar - - + + Registered players only Para xogadores rexistrados - - + + Invited players only Acceso só con invitación - - + + Ranking game Partida de puntuación - + Show lobby chat Amosar a conversa da sala de espera. - - + + Automatically leave the table after the game finished Saír da partida automaticamente cando remate. - - + + Ignored Players Xogadores ignorados - - + + Player Xogador - - + + Remove Player Eliminar o xogador - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4736,20 +4805,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Xogador<br /><span style=" font-style:italic;">Nota: este nome usarase tamén ao xogar por internet como usuario rexistrado.</span></p></body></html> - - + + Opponent 7: Rival 7 - - + + Opponent 8: Rival 8 - - + + Opponent 9: Rival 9 @@ -4757,361 +4826,361 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Erro de configuración - + The entered flipside picture doesn't exist. Please enter an valid picture! A imaxe de usuario indicada non existe. Escolla unha existente. - - + + The log file directory doesn't exist. Please select an valid directory! O cartafol do historial non existe. Escolla un directorio existente. - + Language Changed Cambio de idioma - + You have changed application language to %1. Please restart PokerTH to load new language! Cambiou o idioma do aplicativo a %1. Os cambios xurdirán efecto en canto reinicie PokerTH. - + Select your flipside picture Escolla unha imaxe de usuario - + Images (*.png *.jpg *.gif) Imaxes (*.png *.jpg *.gif) - + Open Directory Abrir o cartafol - - + + Blinds Error Erro das apostas obrigatorias - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. O primeiro elemento da lista de apostas obrigatorias predefinidas é menor que a aposta obrigatoria inicial pequena actual. O valor da aposta obrigatoria pasará a ser o valor mínimo permitido. - + The entered server list address is not a valid URL. Please enter a valid server list address! O enderezo da lista de servidores non é un enderezo URL correcto. Escriba un enderezo correcto para a lista de servidores. - + Afrikaans Africáner - + Bulgarian Búlgaro - + Catalan Catalán - + Chinese Chinés - + Czech Checo - + Danish Danés - + Dutch Neerlandés - + English Inglés - + Finnish Finés - + French Francés - + Galician Galego - + German Alemán - + Greek Grego - + Hungarian Húngaro - + Italian Italiano - + Japanese Xaponés - + Lithuania Lituano - + Norwegian Noruego - + Polish Polaco - + Portuguese-Brazilian Portugués do Brasil - + Portuguese-Portuguese Portugués - + Russian Ruso - + Scottish Gaelic Gaélico escocés - + Slovak Eslovaco - + Spanish Castelán - + Swedish Sueco - + Tamil Támil - + Turkish Turco - + Vietnamese Vietnamita - + The opponent names are not unique. Please choose different names for each Opponent! Non pode usar nomes repetidos para os rivais. - + Settings Information Información da configuración - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Cambiou o cartafol do historial. Os cambios xurdirán efecto en canto reinicie PokerTH. - - + + Maintainer Name Nome do mantedor - - + + Maintainer EMail Enderezo do mantedor - - + + Create Date Data de creación - + Windows Behaviour Comportamento das xanelas - + scaleable flexíbel - + fixed fixo - + Minimum Size Tamaño mínimo - + Maximum Size Tamaño máximo - + Fixed Size Tamaño fixo - + State Estado - + Please select your game table style Escolla un estilo para o taboleiro - + PokerTH game table styles (*.xml) Estilos de taboleiro de PokerTH (*.xml) - + Game Table Style Error Erro do estilo de taboleiro - + Selected game table style file is already in the list. Please select another one to add! O ficheiro de estilo de taboleiro seleccionado xa está na lista. - + Game Table Style File Error Erro do ficheiro de estilo de taboleiro - + Could not load game table style file correctly. Style will not be placed into list! Non foi posíbel cargar o ficheiro de estilo de taboleiro. O estilo non aparecerá na lista. - + Please select your card deck style Escolla un estilo para a baralla - + PokerTH card deck styles (*.xml) Estilos de baralla de PokerTH (*.xml) - + Card Deck Style Error Erro do estilo de baralla - + Selected card deck style file is already in the list. Please select another one to add! O ficheiro de estilo de baralla seleccionado xa está na lista. - + Card Deck Style File Error Erro do ficheiro de estilo de baralla - + Could not load card deck style file correctly. Style will not be placed into list! Non foi posíbel cargar o ficheiro de estilo de baralla. O estilo non aparecerá na lista. - + PokerTH - Settings PokerTH — Configuración - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Atención: isto eliminará toda a configuración persoal, e pechará PokerTH. Está seguro de que quere restaurar a configuración predeterminada? @@ -5176,12 +5245,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Erro do servidor - + You should not kick yourself from this game! Non debería expulsarse a si mesmo da partida! diff --git a/ts/pokerth_gr.ts b/ts/pokerth_gr.ts index 508ae5cc..4352e02a 100644 --- a/ts/pokerth_gr.ts +++ b/ts/pokerth_gr.ts @@ -300,106 +300,106 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -423,22 +423,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + + PokerTH - Question - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -680,127 +718,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 About PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -917,12 +955,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Χειροκίνητη σειρά blinds - + You cannot set more than 30 manual blinds. Δεν μπορείς να ορίσεις πάνω απο 30 χειροκίνητα blinds. @@ -956,46 +994,46 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Δεν μπορείς να εισέλθεις σε παιχνίδι Internet με nickname: "Human Player". Παρακαλώ επιλέξτε άλλο nickname. - - - + + + Nick name: - + Your player name is already used by another player. Please choose a different name. Το όνομα σας χρησιμοποιείται ήδη από έναν άλλο παίχτη. Παρακαλώ επιλέξτε ένα διαφορετικό όνομα. - + The player name is too short, too long or invalid. Please choose another one. Το όνομα σας είναι πολύ μικρό, ή λανθασμένο. Παρακαλώ επιλέξτε ένα διαφορετικό όνομα. - + There is already a game with your chosen game name. Please choose another one! - + There is a forbidden word in your chosen game name. Please choose another one! - - + + Game name: @@ -1034,27 +1072,27 @@ Please choose another one! connectToServerDialogImpl - + Resolving address... Αναζήτηση διεύθυνσης... - + Connecting to server... Γίνεται σύνδεση με το server... - + Starting session... Έναρξη συνεδρίας... - + Connection established! Σύνδεση επιτυχής! - + Reading server list... @@ -1205,7 +1243,7 @@ Please choose another one! - + %1's game %1's game @@ -1553,7 +1591,7 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... Έναρξη παιχνιδιού. Παρακαλώ περιμένετε... @@ -1562,46 +1600,46 @@ p, li { white-space: pre-wrap; } %1's game - + Joining a private Game Είσοδος σε πριβέ Παιχνίδι - + You are about to join a private game. Please enter the password! Επιχειρείτε να εισέλθετε σε ένα πριβέ παιχνίδι. Παρακαλώ δώστε τον κωδικό! - + open ανοιχτό - - - - + + + + Game Info Πληροφορίες Παιχνιδιού - - + + Game Παιχνίδι - - + + Players Παίχτες - - + + State Κατάσταση @@ -1611,15 +1649,15 @@ p, li { white-space: pre-wrap; } - - + + P - - + + Available Players Διαθέσιμοι Παίχτες @@ -1634,121 +1672,126 @@ p, li { white-space: pre-wrap; } - + Player infos ... - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - + + T - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - + Spectate - - + + Time - - - Show player stats + + Unignore player - + + Show player stats + + + + + Admin action ... - + Total kickban - + Close game - + running σε εξέλιξη - - + + running games: %1 παιχνίδια σε εξέλιξη: %1 - - + + open games: %1 Ανοιχτά παιχνίδια: %1 - - + + Players (%1) - - - + + + Spectators (%1) @@ -1758,58 +1801,58 @@ p, li { white-space: pre-wrap; } - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -1818,48 +1861,48 @@ Feel free to invite other players by right-clicking on their nick in the availab Παίχτες στο chat: %1 - - + + connected players: %1 Συνδεδεμένοι παίχτες: %1 - + hands μοιρασιές - + minutes λεπτά - + double blinds διπλά blinds - + manual blinds order Σειρά χειροκίνητων blinds - + Server Error Πρόβλημα στον Server - + You should not kick yourself from this game! Δεν χρειάζεται να διώξεις τον εαυτό σου απ' το παιχνίδι! - + search for player ... - + Chat is only available to registered players. @@ -1869,1263 +1912,1279 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Ignore player ... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + - + + PokerTH - Question - - Afghanistan - - - - - ALand Islands - - - - - Albania - - - - - Algeria - - - - - American Samoa - - - - - Andorra - - - - - Angola - - - - - Anguilla - - - - - Antarctica - - - - - Antigua And Barbuda - - - - - Argentina - - - - - Armenia - - - - - Aruba - - - - - Australia - - - - - Austria - - - - - Azerbaijan - - - - - Bahamas + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? - Bahrain + Afghanistan - Bangladesh + ALand Islands - Barbados + Albania - Belarus + Algeria - Belgium + American Samoa - Belize + Andorra - Benin + Angola - Bermuda + Anguilla - Bhutan + Antarctica - Bolivia + Antigua And Barbuda - Bosnia And Herzegovina + Argentina - Botswana + Armenia - Bouvet Island + Aruba - Brazil + Australia - British Indian Ocean Territory + Austria - Brunei Darussalam + Azerbaijan - Bulgaria + Bahamas - Burkina Faso + Bahrain - Burundi + Bangladesh - Cambodia + Barbados - Cameroon + Belarus - Canada + Belgium - Cape Verde + Belize - Cayman Islands + Benin - Central African Republic + Bermuda - Chad + Bhutan - Chile + Bolivia - China + Bosnia And Herzegovina - Christmas Island + Botswana - Cocos (Keeling) Islands + Bouvet Island - Colombia + Brazil - Comoros + British Indian Ocean Territory - Congo + Brunei Darussalam - Congo, The Democratic Republic Of The + Bulgaria - Cook Islands + Burkina Faso - Costa Rica + Burundi - Cote D'Ivoire + Cambodia - Croatia + Cameroon - Cuba + Canada - Cyprus + Cape Verde - Czech Republic + Cayman Islands - Denmark + Central African Republic - Djibouti + Chad - Dominica + Chile - Dominican Republic + China - Ecuador + Christmas Island - Egypt + Cocos (Keeling) Islands - El Salvador + Colombia - Equatorial Guinea + Comoros - Eritrea + Congo - Estonia + Congo, The Democratic Republic Of The - Ethiopia + Cook Islands - Falkland Islands (Malvinas) + Costa Rica - Faroe Islands + Cote D'Ivoire - Fiji + Croatia - Finland + Cuba - France + Cyprus - French Guiana + Czech Republic - French Polynesia + Denmark - French Southern Territories + Djibouti - Gabon + Dominica - Gambia + Dominican Republic - Georgia + Ecuador - Germany + Egypt - Ghana + El Salvador - Gibraltar + Equatorial Guinea - Greece + Eritrea - Greenland + Estonia - Grenada + Ethiopia - Guadeloupe + Falkland Islands (Malvinas) - Guam + Faroe Islands - Guatemala + Fiji - Guernsey + Finland - Guinea + France - Guinea-Bissau + French Guiana - Guyana + French Polynesia - Haiti + French Southern Territories - Heard Island And Mcdonald Islands + Gabon - Holy See (Vatican City State) + Gambia - Honduras + Georgia - Hong Kong + Germany - Hungary + Ghana - Iceland + Gibraltar - India + Greece - Indonesia + Greenland - Iran, Islamic Republic Of + Grenada - Iraq + Guadeloupe - Ireland + Guam - Isle Of Man + Guatemala - Israel + Guernsey - Italy + Guinea - Jamaica + Guinea-Bissau - Japan + Guyana - Jersey + Haiti - Jordan + Heard Island And Mcdonald Islands - Kazakhstan + Holy See (Vatican City State) - Kenya + Honduras - Kiribati + Hong Kong - Korea, Democratic People'S Republic Of + Hungary - Korea, Republic Of + Iceland - Kuwait + India - Kyrgyzstan + Indonesia - Lao People'S Democratic Republic + Iran, Islamic Republic Of - Latvia + Iraq - Lebanon + Ireland - Lesotho + Isle Of Man - Liberia + Israel - Libyan Arab Jamahiriya + Italy - Liechtenstein + Jamaica - Lithuania + Japan - Luxembourg + Jersey - Macao + Jordan - Macedonia, The Former Yugoslav Republic Of + Kazakhstan - Madagascar + Kenya - Malawi + Kiribati - Malaysia + Korea, Democratic People'S Republic Of - Maldives + Korea, Republic Of - Mali + Kuwait - Malta + Kyrgyzstan - Marshall Islands + Lao People'S Democratic Republic - Martinique + Latvia - Mauritania + Lebanon - Mauritius + Lesotho - Mayotte + Liberia - Mexico + Libyan Arab Jamahiriya - Micronesia, Federated States Of + Liechtenstein - Moldova, Republic Of + Lithuania - Monaco + Luxembourg - Mongolia + Macao - Montserrat + Macedonia, The Former Yugoslav Republic Of - Morocco + Madagascar - Mozambique + Malawi - Myanmar + Malaysia - Namibia + Maldives - Nauru + Mali - Nepal + Malta - Netherlands + Marshall Islands - Netherlands Antilles + Martinique - New Caledonia + Mauritania - New Zealand + Mauritius - Nicaragua + Mayotte - Niger + Mexico - Nigeria + Micronesia, Federated States Of - Niue + Moldova, Republic Of - Norfolk Island + Monaco - Northern Mariana Islands + Mongolia - Norway + Montserrat - Oman + Morocco - Pakistan + Mozambique - Palau + Myanmar - Palestinian Territory, Occupied + Namibia - Panama + Nauru - Papua New Guinea + Nepal - Paraguay + Netherlands - Peru + Netherlands Antilles - Philippines + New Caledonia - Pitcairn + New Zealand - Poland + Nicaragua - Portugal + Niger - Puerto Rico + Nigeria - Qatar + Niue - Reunion + Norfolk Island - Romania + Northern Mariana Islands - Russian Federation + Norway - Rwanda + Oman - Saint Helena + Pakistan - Saint Kitts And Nevis + Palau - Saint Lucia + Palestinian Territory, Occupied - Saint Pierre And Miquelon + Panama - Saint Vincent And The Grenadines + Papua New Guinea - Samoa + Paraguay - San Marino + Peru - Sao Tome And Principe + Philippines - Saudi Arabia + Pitcairn - Senegal + Poland - Serbia And Montenegro + Portugal - Seychelles + Puerto Rico - Sierra Leone + Qatar - Singapore + Reunion - Slovakia + Romania - Slovenia + Russian Federation - Solomon Islands + Rwanda - Somalia + Saint Helena - South Africa + Saint Kitts And Nevis - South Georgia And The South Sandwich Islands + Saint Lucia - Spain + Saint Pierre And Miquelon - Sri Lanka + Saint Vincent And The Grenadines - Sudan + Samoa - Suriname + San Marino - Svalbard And Jan Mayen + Sao Tome And Principe - Swaziland + Saudi Arabia - Sweden + Senegal - Switzerland + Serbia And Montenegro - Syrian Arab Republic + Seychelles - Taiwan, Province Of China + Sierra Leone - Tajikistan + Singapore - Tanzania, United Republic Of + Slovakia - Thailand + Slovenia - Timor-Leste + Solomon Islands - Togo + Somalia - Tokelau + South Africa - Tonga + South Georgia And The South Sandwich Islands - Trinidad And Tobago + Spain - Tunisia + Sri Lanka - Turkey + Sudan - Turkmenistan + Suriname - Turks And Caicos Islands + Svalbard And Jan Mayen - Tuvalu + Swaziland - Uganda + Sweden - Ukraine + Switzerland - United Arab Emirates + Syrian Arab Republic - United Kingdom + Taiwan, Province Of China - United States + Tajikistan - United States Minor Outlying Islands + Tanzania, United Republic Of - Uruguay + Thailand - Uzbekistan + Timor-Leste - Vanuatu + Togo - Venezuela + Tokelau - Viet Nam + Tonga - Virgin Islands, British + Trinidad And Tobago - Virgin Islands, U.S. + Tunisia - Wallis And Futuna + Turkey - Western Sahara + Turkmenistan - Yemen + Turks And Caicos Islands - Zambia + Tuvalu + Uganda + + + + + Ukraine + + + + + United Arab Emirates + + + + + United Kingdom + + + + + United States + + + + + United States Minor Outlying Islands + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Viet Nam + + + + + Virgin Islands, British + + + + + Virgin Islands, U.S. + + + + + Wallis And Futuna + + + + + Western Sahara + + + + + Yemen + + + + + Zambia + + + + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3424,19 +3483,19 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Παύση @@ -3449,7 +3508,7 @@ Feel free to invite other players by right-clicking on their nick in the availab Ctrl+N - Νέο Παιχνίδι - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - The Open-Source Texas Holdem Engine @@ -3468,23 +3527,23 @@ Please choose another one. F1 - Όλα Μέσα | F2 - Ποντάρω/Ρελάνς | F3 - Ντούκου/Μέσα | F4 - Πάσο - - - - - - - - + + + + + + + + Start Έναρξη - - - - - + + + + + Lobby Lobby @@ -3695,104 +3754,104 @@ Please choose a different name. Αυτόματο: Ντούκου ή Πάσο. - - + + Chat Chat - + Closing PokerTH during network game Κλείσιμο PokerTH κατα τη διάρκεια παιχνιδιού σε δίκτυο - + You are the hosting server. Do you want to close PokerTH anyway? Φιλοξενείτε τον server. Θέλετε να κλείσετε το PokerTH? - + PokerTH - Internet Game Message PokerTH - Μήνυμα Παιχνιδιού Internet - + Attention! Do you really want to leave the current game and go back to the lobby? Προσοχή! Θέλετε σίγουρα να φύγετε απ' το παιχνίδι και να επιστρέψετε στο lobby? - - + + Chance - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. + - Chat is only available to registered players. - + Spectators @@ -3850,7 +3909,7 @@ and go back to the lobby? internetGameLoginDialogImpl - + Create new user account @@ -3995,10 +4054,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Load Server-Profile-File Error @@ -4009,45 +4068,45 @@ p, li { white-space: pre-wrap; } - - - - + + + + Could not load server-profiles-file: %1 - + Save Server Profile Error Save Server Profile Error - + A profile with the name: %1 already exists. Would you like to overwrite ? Ένα προφίλ με το όνομα: %1 υπάρχει ήδη. Θέλετε να το αντικαταστήσετε ? - + Read Server-Profile List Error Read Server-Profile List Error - + Could not read server-profiles list Could not read server-profiles list - - + + Save Server-Profile-File Error Save Server-Profile-File Error - - + + Could not save server-profiles-file: %1 @@ -4528,12 +4587,12 @@ and go back to the lobby? manualBlindsOrderDialogImpl - + Manual Blinds Order Χειροκίνητη σειρά blinds - + You cannot set more than 30 manual blinds. Δεν μπορείς να ορίσεις πάνω απο 30 χειροκίνητα blinds. @@ -4660,38 +4719,38 @@ and go back to the lobby? selectAvatarDialogImpl - - - + + + Avatar File Error Λάθος Αρχείου Εικόνας - + Please select an avatar from the list! Παρακαλώ επιλέξτε μια εικόνα απ' τη λίστα! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Το μέγεθος του αρχείου της εικόνας είναι πολύ μεγάλο. (μέγιστο 30KB) Παρακαλώ επιλέξτε μια μικρότερη εικόνα! - + The entered avatar picture doesn't exist. Please enter an valid picture! Η εικόνα που επιλέξατε δεν υπάρχει. Παρακαλώ επιλέξτε μια σωστή εικόνα! - + Select external avatar picture Επιλέξτε την εικόνα - + Images (*.png *.jpg *.gif) Εικόνες (*.png *.jpg *.gif) @@ -4765,7 +4824,7 @@ Please enter an valid picture! Παιχνίδι Δικτύου / Internet - + Switch keyboard focus to bet-input-field if it's your turn Απευθείας ενεργοποίηση του πεδίου πονταρίσματος όταν έρχεται η σειρά μου @@ -4795,14 +4854,14 @@ p, li { white-space: pre-wrap; } - + Sound Ήχος - + Factory Settings @@ -4819,268 +4878,273 @@ p, li { white-space: pre-wrap; } - + Show country flag in the corner of avatar - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Game Table - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State Κατάσταση - - + + Card Deck - - + + Card Back - - + + Use card back from card style - - + + Use custom card back picture: - - + + Play sound effects Ηχητικά Εφέ - - + + Sound Volume: Ένταση ήχου: - - + + 10 10 - - + + Sound Categories Κατηγορίες Ήχου - - + + Play game actions sounds like "check", "call", "raise" Αναπαραγωγή ήχων σε ενέργειες όπως "ντούκου", "μέσα", "ρελάνς" - - + + Play lobby chat notifications Αναπαραγωγή ειδοποιήσεων στο lobby chat - - + + Play network/internet game notifications like "player joined the game" Αναπαραγωγή ειδοποιήσεων σε παιχνίδι δικτύου/internet, όπως "παίχτης εισήλθε στο παιχνίδι" - - + + Allow spectators to watch the game - + OK - + Local Game Settings Επιλογές Τοπικού Παιχνιδιού - - + + Number of players: Αριθμός παιχτών: - - - - + + + + Start Cash: Αρχικό Ποσό: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Αρχικό blind: - - - - + + + + Raise blinds: Αύξηση blind: - - - - - - - - + + + + + + + + Every: Κάθε: - - - - + + + + hands μοιρασιές - - - - + + + + minutes λεπτά - - - - + + + + Raise mode: Τύπος αύξησης: - - - - + + + + Always double blinds Πάντα διπλό blind - - - - + + + + Manual blinds order: Χειροκίνητη σειρά blinds: - - - - + + + + Edit ... Επεξεργασία... - - + + Game Speed: Ταχύτητα Παιχνιδιού: - - + + Pause between hands (press "start" button to go on) Παύση μεταξύ ανοίγματος φύλλων (επιλογή κουμπιού "έναρξη" για να συνεχίσεις) - - + + Show game settings dialog on every new game Εμφάνιση μενού επιλογών παιχνιδιού σε κάθε καινούργιο παιχνίδι - + Network Game Settings Επιλογές Παιχνιδιού Δικτύου - - + + Maximum number of players: Μέγιστος αριθμός παιχτών: @@ -5089,14 +5153,14 @@ p, li { white-space: pre-wrap; } Διαγραφή - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5105,78 +5169,83 @@ p, li { white-space: pre-wrap; } Ταχύτητα Παιχνιδιού για τους παίχτες του υπολογιστή: - - + + Timeout for player action: Χρόνος αναμονής για τον παίχτη: - - - - + + + + s s - - + + Network Server Settings Επιλογές Server Δικτύου - - + + Server Password: Server Password: - - - - + + + + Server Port: Server Port: - - - - - - Use SCTP - Use SCTP - - - - - - - Use IPv6 - Use IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">Τί είναι αυτό;</a> - + Use SCTP + Use SCTP + + + + + + + Use IPv6 + Use IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">Τί είναι αυτό;</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Τί είναι αυτό;</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings Επιλογές Παιχνιδιού στο Internet - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5191,14 +5260,14 @@ p, li { white-space: pre-wrap; } Επιλογές Internet Server (Dedicated Server) - - + + Server Address: Server Address: - - + + Use password for private game: Κωδικός για πριβέ παιχνίδι: @@ -5227,49 +5296,49 @@ p, li { white-space: pre-wrap; } Ψευδώνυμο Παιχτών - - + + Computer Engine Computer Engine - - + + Opponent 6: Αντίπαλος 6: - - + + Opponent 5: Αντίπαλος 5: - - + + Opponent 4: Αντίπαλος 4: - - + + Opponent 3: Αντίπαλος 3: - - + + Opponent 2: Αντίπαλος 2: - - + + Opponent 1: Αντίπαλος 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5280,13 +5349,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Σημείωση: Η καλύτερη ποιότητα εικόνας είναι αυτή με ratio: </span><span style=" font-weight:600; font-style:italic;">width=50, height=50.</span></p></body></html> - + Human Player: Παίκτης: - - + + Enable/Disable Logging Ενεργοποίηση/Απενεργοποίηση Logging @@ -5299,49 +5368,49 @@ p, li { white-space: pre-wrap; } Μέρα(Μέρες) - - + + Log File Directory: Διεύθυνση Αρχείου Log: - - + + Write log after every: Κράτα log σε κάθε: - + Note: Best quality with image ratio like width=48, height=76. - - + + action (high frequent disc access) ενέργεια (πολύ συχνή πρόσβαση στο δίσκο) - - + + hand (medium disc access) μοίρασμα (μέτρια πρόσβαση στο δίσκο) - - + + game (low disc access) παιχνίδι (χαμηλή πρόσβαση στο δίσκο) - + Log Messages Μηνύματα Log - + Player Nicks/Avatars Ψευδώνυμα/Εικόνα Παίχτη @@ -5360,48 +5429,48 @@ p, li { white-space: pre-wrap; } - - + + Play blind raise notification - - + + Automatic Server Configuration URL - - + + Serverlist Address: - - + + Manual Server Configuration - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -5440,15 +5509,15 @@ p, li { white-space: pre-wrap; } Κωδικός: - - + + Avatar Server: - + Style @@ -5458,33 +5527,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style - - - - - - Add ... - - + Add ... + + + + + + + Remove - - - - + + + + Preview - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5493,8 +5562,8 @@ p, li { white-space: pre-wrap; } - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5503,7 +5572,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5515,96 +5584,96 @@ p, li { white-space: pre-wrap; } - - + + Delay between hands: - - + + Server - - + + Game Παιχνίδι - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5613,14 +5682,14 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Αντίπαλος 1: {7:?} - - + + Opponent 8: Αντίπαλος 1: {8:?} @@ -5629,8 +5698,8 @@ p, li { white-space: pre-wrap; } Αντίπαλος 1: {10:?} - - + + Opponent 9: Αντίπαλος 1: {10:?} {9:?} @@ -5638,37 +5707,37 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - + Dutch Dutch - + English English - + French French - + German German - + Hungarian Hungarian - + Italian Italian - + Norwegian Norwegian @@ -5677,85 +5746,85 @@ p, li { white-space: pre-wrap; } Portuguese - + Russian Russian - + Slovak Slovak - + Spanish Spanish - + Turkish Turkish - - - - - + + + + + Settings Error Λάθος Επιλογές - + The entered flipside picture doesn't exist. Please enter an valid picture! Η επιλεγμένη εικόνα για την τράπουλα δεν υπάρχει. Παρακαλώ επιλέξτε μια σωστή εικόνα! - - + + The log file directory doesn't exist. Please select an valid directory! Η διεύθυνση του αρχείου log δεν υπάρχει. Παρακαλώ επιλέξτε μια σωστή διεύθυνση! - + Language Changed Η γλώσσα άλλαξε - + You have changed application language to %1. Please restart PokerTH to load new language! Έχετε επιλέξει την γλώσσα %1. Παρακαλώ επανεκκινήστε το PokerTH για να "φορτωθεί" η νέα γλώσσα! - + Select your flipside picture Επιλέξτε την εικόνα της τράπουλας - + Images (*.png *.jpg *.gif) Εικόνες (*.png *.jpg *.gif) - + Open Directory Άνοιγμα φακέλου - - + + Blinds Error Λάθος Blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5764,242 +5833,242 @@ This first-small-blind-value will be set to maximum allowed value. Το πρώτο-μικρό-blind θα τεθεί στην μέγιστη επιτρεπόμενη τιμή. - + Bulgarian Bulgarian - + Afrikaans - + Catalan - + Chinese - + Czech - + Danish - + Finnish - + Galician - + Greek - + Japanese - + Lithuania - + Polish Polish - + Portuguese-Brazilian - + Portuguese-Portuguese - + Scottish Gaelic - + Swedish - + Tamil - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + The entered server list address is not a valid URL. Please enter a valid server list address! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State Κατάσταση - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6064,12 +6133,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Πρόβλημα στον Server - + You should not kick yourself from this game! Δεν χρειάζεται να διώξεις τον εαυτό σου απ' το παιχνίδι! diff --git a/ts/pokerth_hu.ts b/ts/pokerth_hu.ts index 4abd61cd..ce8ffe43 100644 --- a/ts/pokerth_hu.ts +++ b/ts/pokerth_hu.ts @@ -415,106 +415,106 @@ Vedd fel a kapcsolatot a készítőjével: %3. - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file PokerTH naplófájl mentése - + PokerTH SQL log (*.pdb) PokerTH SQL napló (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -542,22 +542,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Többé nem fogod megkapni az üzeneteket és a játék meghívásokat ettől a felhasználótól. <br> Biztosan tiltani szeretnéd <b>%1</b> nevű felhasználót? - - + + + PokerTH - Question PokerTH – Kérdés - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -1151,127 +1189,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 A PokerTH %1 névjegye - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -1388,12 +1426,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Vaktétek megadása - + You cannot set more than 30 manual blinds. Nem állíthatsz be 30-nál nagyobb vaktétet. @@ -1427,39 +1465,39 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Nem csatlakozhatsz az internetes játék társalgójába „Játékos” névvel. Kérlek válassz másik nevet. - - - + + + Nick name: Becenév: - + Your player name is already used by another player. Please choose a different name. A választott nevet már használja valaki. Kérlek válassz másikat. - + The player name is too short, too long or invalid. Please choose another one. A választott név túl rövid vagy érvénytelen. Kérlek válassz másikat. - + There is already a game with your chosen game name. Please choose another one! - + There is a forbidden word in your chosen game name. Please choose another one! @@ -1471,8 +1509,8 @@ Please choose another one! Kérlek válassz másikat! - - + + Game name: Játéknév: @@ -1517,27 +1555,27 @@ Kérlek válassz másikat! connectToServerDialogImpl - + Resolving address... Cím feloldása… - + Connecting to server... Csatlakozás a kiszolgálóhoz… - + Starting session... Kapcsolat létrehozása… - + Connection established! Sikeres csatlakozás! - + Reading server list... Kiszolgáló lista beolvasása… @@ -1692,7 +1730,7 @@ Kérlek válassz másikat! <i>Vak duplázás minden %1. kör után</i> - + %1's game %1 játéka @@ -2102,47 +2140,47 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info Játék infó - + Server Error Kiszolgáló hiba - + You should not kick yourself from this game! Nem tudod saját magadat kirúgni a játékból! - + Joining a private Game Csatlakozás privát játékhoz - - + + Game Játék - - + + Players Játékosok - - + + State Állapot @@ -2151,17 +2189,17 @@ p, li { white-space: pre-wrap; } Privát - + You are about to join a private game. Please enter the password! Egy privát játékot választottál. A csatlakozáshoz add meg a jelszót! - + running fut - + open nyitott @@ -2170,27 +2208,27 @@ p, li { white-space: pre-wrap; } Csatlakozott játékosok - + hands osztás - + minutes perc - + double blinds vakok duplázása - + manual blinds order egyéni vaksorrend - + Starting game. Please wait ... Játék indítása. Kérlek várj… @@ -2200,22 +2238,22 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Time - - + + Available Players Elérhető játékosok @@ -2231,61 +2269,66 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Játékos információk … - - + + Show player stats - - + + Admin action ... - + Total kickban - + Report inappropriate game name - + Close game - - - + + + Standard Normál - - - + + + Registered players only Csak regisztrált játékosok - - - + + + Invited players only Csak meghívott játékosok - - - + + + Ranking game Ranglistás játék @@ -2294,1270 +2337,1270 @@ p, li { white-space: pre-wrap; } Csatlakozott játékosok – max. %1 - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania litván - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - - + + T T - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - + Spectate - - - + + + sec (action) - - - + + + sec (hand delay) @@ -3566,14 +3609,14 @@ p, li { white-space: pre-wrap; } Csatlakozott játékosok – Max. %1 - - + + running games: %1 futó játékok: %1 - - + + open games: %1 nyitott játékok: %1 @@ -3583,45 +3626,50 @@ p, li { white-space: pre-wrap; } %1 meghívása - + Ignore %1 %1 tiltása - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 meghívta %1 nevű játékost a(z) %2 játékba.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 elutasította a meghívást a(z) %2 játékba.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 nem tud csatlakozni a(z) %2 játékba, mert elfoglalt.</span> - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + The game will start in<br><b>%1</b> seconds. A játék <br><b>%1</b> másodperc múlva indul. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Csatlakoztál egy „csak meghívásos” játékhoz. Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gombbal és meghívás. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? <b>%1</b> meghívott a(z) <b>%2</b> nevű játékba.<br>Szeretnél csatlakozni? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Többé nem fogod megkapni az üzeneteket és a játék meghívásokat ettől a felhasználótól. <br> Biztosan tiltani szeretnéd <b>%1</b> nevű felhasználót? @@ -3630,31 +3678,31 @@ Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gomb csevegő játékosok: %1 - - + + connected players: %1 csatlakozott játékosok: %1 - - + + Players (%1) - - - + + + Spectators (%1) - + search for player ... játékos keresése … - + Chat is only available to registered players. A csevegés csak regisztrált játékosoknak érhető el. @@ -3664,31 +3712,42 @@ Lehetőséged van bárkit meghívni, csak kattints a játékos nevére jobb gomb Játékos meghívása … - + Ignore player ... Játékos tiltása … + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 a következő szobában játszik: %2. - + %1 is not playing at the moment. %1 jelenleg nem játszik. - - + + PokerTH - Info Message PokerTH – Információk - - + + - + + PokerTH - Question PokerTH – Kérdés @@ -4141,31 +4200,31 @@ Kérlek válassz egy másik nevet. Cmd+N – új játék indítása - - - - - - - - + + + + + + + + Start Indítás - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Leállítás @@ -4195,8 +4254,8 @@ Ha a szerver NAT router mögött van, akkor bizonyosodj meg róla hogy a port to A kliens játékos száma érvénytelen. - - + + Chat Csevegés @@ -4221,100 +4280,100 @@ Ha a szerver NAT router mögött van, akkor bizonyosodj meg róla hogy a port to F1 - All-In | F2 -Emel/Ráemel | F3 - Passz/Tart | F4 - Eldob - + Closing PokerTH during network game PokerTH bezárása hálózati játék alatt - + You are the hosting server. Do you want to close PokerTH anyway? Te vagy a hálózati kiszolgáló. Biztosan bezárod az alkalmazást? - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - A nyílt forrású Texas Holdem motor - - - - - + + + + + Lobby Társalgó - + PokerTH - Internet Game Message PokerTH – Internetes játék üzenetei - + Attention! Do you really want to leave the current game and go back to the lobby? Figyelem! Biztosan elhagyod az aktuális játékot, és kilépsz a társalgóba? - - + + Chance Esélyek - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Kidobás - - + + Do you want to kick <b>%1</b><br>from this game? Ki akarod dobni <b>%1</b>-t<br>a játékból? - - - - + + + + <b>%1</b> secs left <b>%1</b> mp. maradt - + vote szavazat - + votes szavazat + - Chat is only available to registered players. A csevegés csak regisztrált játékosok számára érhető el. - + Spectators @@ -4341,14 +4400,14 @@ Ha hosszabbtávon nem vagy gépközelben használd a „távol” kapcsolót.<b>%1</b> %2 gyűlt össze ellened.<br><b>%3</b> szavazat kell a kidobáshoz. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. <b>%1</b> játékos elllen <b>%2</b> %3<br>gyűlt össze. <b>%4</b> szavat kell a kidobáshoz. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. <b>%1</b> %2 gyűlt össze ellened.<br><b>%3</b> szavazat kell a kidobáshoz. @@ -4424,7 +4483,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account @@ -4584,10 +4643,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Hiba a kiszolgáló profil-fájl betöltésekor @@ -4597,7 +4656,7 @@ p, li { white-space: pre-wrap; } Nem lehet betölteni a kiszolgáló profil-fájlt: - + Save Server Profile Error Hiba a kiszolgáló profil mentése közben @@ -4606,33 +4665,33 @@ p, li { white-space: pre-wrap; } Profil a következő névvel:" - - - - + + + + Could not load server-profiles-file: %1 - + Read Server-Profile List Error Hiba a kiszolgáló profil olvasása közben - + Could not read server-profiles list Nem sikerült beolvasni a kiszolgáló profil listát - - + + Save Server-Profile-File Error Hiba a kiszolgáló profil-fájl mentése közben - - + + Could not save server-profiles-file: %1 @@ -4643,7 +4702,7 @@ p, li { white-space: pre-wrap; } Nem sikerült elmenteni a kiszolgáló profil-fájlt: - + A profile with the name: %1 already exists. Would you like to overwrite ? %1 nevű profil már létezik. @@ -4711,12 +4770,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order Vaktétek megadása - + You cannot set more than 30 manual blinds. Nem állíthatsz be 30-nál több vaktétet. @@ -4851,14 +4910,14 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Avatar-fájl hiba - + Please select an avatar from the list! Kérlek válassz egy avatart a listából! @@ -4869,7 +4928,7 @@ Please enter an valid picture! Kérlek válassz egy valós képet! - + Select external avatar picture Avatar kép választása külső forrásból @@ -4878,19 +4937,19 @@ Kérlek válassz egy valós képet! Képek (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! A kiválasztott fájl mérete túl nagy (max. 30KB) Válassz kisebb képet! - + Images (*.png *.jpg *.gif) Képek (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! A választott avatar kép nem létezik. @@ -4930,10 +4989,10 @@ p, li { white-space: pre-wrap; } Kis vak: - - - - + + + + Start Cash: Kezdő zseton: @@ -4946,24 +5005,24 @@ p, li { white-space: pre-wrap; } Kiszolgáló beállítások - - - - + + + + Server Port: Kiszolgáló port: - - - - + + + + Use IPv6 IPv6 használata - - + + Server Password: Kiszolgáló jelszó: @@ -4972,43 +5031,43 @@ p, li { white-space: pre-wrap; } Hálózati játék alapértelmezett beállításai - - + + Computer Engine Gépi ellenfelek - - + + Opponent 5: Ellenfél 5: - - + + Opponent 3: Ellenfél 3: - - + + Opponent 2: Ellenfél 2: - - + + Opponent 1: Ellenfél 1: - - + + Opponent 4: Ellenfél 4: - + Human Player: Emberi játékos: @@ -5021,25 +5080,30 @@ p, li { white-space: pre-wrap; } napig - - + + Log File Directory: Naplófájl: - + Log Messages Naplózott üzenetek - + + Show network state color in the corner of the avatar + + + + Local Game Settings Helyi játék beállításai - + Network Game Settings Hálózati játék beállításai @@ -5074,8 +5138,8 @@ p, li { white-space: pre-wrap; } Baloldali panel mutatása - - + + Play blind raise notification @@ -5084,8 +5148,8 @@ p, li { white-space: pre-wrap; } Információs sáv üzeneteinek megjelenítése - - + + Show game settings dialog on every new game Játékbeállítások mutatása minden új játék indításánál @@ -5094,20 +5158,20 @@ p, li { white-space: pre-wrap; } Kis vak emelése előtti körök: - - + + Number of players: Játékosok száma: - - + + Game Speed: Játék sebessége: - - + + Pause between hands (press "start" button to go on) Szünet az osztások között („Indítás” gomb lenyomására megy tovább) @@ -5120,8 +5184,8 @@ p, li { white-space: pre-wrap; } Program verzió (gépi ellenfeleké): - - + + Enable/Disable Logging Naplózás engedélyezése/tiltása @@ -5130,8 +5194,8 @@ p, li { white-space: pre-wrap; } Naplófájl tárolása - - + + Write log after every: Naplózás minden esemény után: @@ -5142,8 +5206,8 @@ p, li { white-space: pre-wrap; } Kis vak és Nagy vak gombok mutatása - - + + Play sound effects Hangok lejátszása @@ -5151,27 +5215,27 @@ p, li { white-space: pre-wrap; } 0.4 (current) 0.4 (aktuális) - - - - - - Use SCTP - SCTP használata - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">Mi ez?</a> - + Use SCTP + SCTP használata + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">Mi ez?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Mi ez?</a> @@ -5193,20 +5257,20 @@ Szélesség = 50 kpt, magasság = 50 kpt.</span></p></body>< Beállítások - - + + Maximum number of players: Játékosok maximális száma: - - + + Sound Volume: Hangerő: - - + + 10 10 @@ -5216,31 +5280,31 @@ Szélesség = 50 kpt, magasság = 50 kpt.</span></p></body>< idő (mp.): - - + + Opponent 6: Ellenfél 6: - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + action (high frequent disc access) Akció (magas lemezhasználat) - - + + hand (medium disc access) Kör (közepes lemezhasználat) - - + + game (low disc access) Játék (alacsony lemezhasználat) @@ -5253,48 +5317,48 @@ Szélesség = 50 kpt, magasság = 50 kpt.</span></p></body>< - + Sound Hang - + Factory Settings - + Show country flag in the corner of avatar - - - - + + + + Description Leírás - - - - + + + + Maintainer Készítő - - - + + + State Állapot - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5313,42 +5377,42 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Tipp: a legjobb minőség a következő arányokkal érhető el: </span><span style=" font-weight:600; font-style:italic;">szélesség=48, magasság=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Szünet az osztások között: - - + + Network Server Settings Hálózati kiszolgáló beállításai - + Internet Game Settings Internetes játék beállításai - - + + Server Kiszolgáló - - + + Server Address: Kiszolgáló címe: - - + + Game Játék - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5356,56 +5420,56 @@ p, li { white-space: pre-wrap; } - - + + Default game name: Alapértelmezett játéknév: - - + + Default game type: Alapértelmezett játéktípus: - - + + Standard Normál - - + + Registered players only Csak regisztrált játékosok - - + + Invited players only Csak meghívott játékosok - - + + Ranking game Ranglistás játék - - + + Use password for private game: Jelszó privát játékhoz: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5442,10 +5506,10 @@ p, li { white-space: pre-wrap; } #pokerth - - - - + + + + First small blind: Első kis vak: @@ -5456,32 +5520,32 @@ p, li { white-space: pre-wrap; } Indítóképernyő elrejtése a játék indításakor - - + + Game Table Pókerasztal - - + + Card Deck Kártyapakli - - + + Card Back Kártya hátlap - - + + Use card back from card style A kártyapakli stílus hátlapjának használata - - + + Use custom card back picture: Saját kártya hátlap használata: @@ -5499,70 +5563,70 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Tipp: a legjobb minőség a következő arányokkal érhető el: </span><span style=" font-weight:600; font-style:italic;">szélesség=76, magasság=48.</span></p></body></html> - - - - + + + + Raise blinds: Vaktétek emelése: - - - - - - - - + + + + + + + + Every: Minden: - - - - + + + + hands osztást követően - - - - + + + + minutes perc után - - - - + + + + Raise mode: Emelés módja: - - - - + + + + Always double blinds Vaktétek duplázása - - - - + + + + Manual blinds order: Vaktétek megadása: - - - - + + + + Edit ... Szerkesztés… @@ -5579,90 +5643,95 @@ p, li { white-space: pre-wrap; } - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Sound Categories Hang típusok - - + + Play game actions sounds like "check", "call", "raise" Hangok lejátszása minden lépésnél (pl. „passz”, „tartás”, „emelés”) - - + + Play lobby chat notifications Figyelmeztető hangok a társalgóba - - + + Play network/internet game notifications like "player joined the game" Figyelmeztető hangok hálózati/internetes játék alatt (pl. „játékos csatlakozott”) - + Show lobby chat Társalgó csevegés megjelenítése - - + + Automatically leave the table after the game finished - - + + Allow spectators to watch the game - - + + Ignored Players Tiltott játékosok - - + + Player Játékos - - + + Remove Player Eltávolított játékos - + OK - + Player Nicks/Avatars Játékos becenév/avatar @@ -5678,7 +5747,7 @@ p, li { white-space: pre-wrap; } Hálózati / Internetes játék - + Switch keyboard focus to bet-input-field if it's your turn Ha te vagy soron, a billentyűzet fókusza az emelés beviteli mezőre áll @@ -5691,28 +5760,28 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Tipp: a legjobb minőség a következő arányokkal érhető el: </span><span style=" font-weight:600; font-style:italic;">szélesség=100, magasság=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Játékos rendelkezésére álló idő: - - - - + + + + s mp @@ -5725,7 +5794,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Figyelem: A <span style=" font-weight:600; font-style:italic;">Hálózati játék</span> alapértelmezett beállításai kerülnek kiválasztásra </span><span style=" font-style:italic;">(pl. "Játékosok maximális száma", "Kezdő zseton", "Kis vak")</span>.</p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5733,25 +5802,25 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Tipp: a legjobb avatar minőség a következő arányokkal érhető el: </span><span style=" font-weight:600; font-style:italic;">szélesség=50, magasság=50.</span></p></body></html> - - + + Automatic Server Configuration URL Automatikus kiszolgáló beállítások URL címe - - + + Serverlist Address: Kiszolgálólista címe: - - + + Manual Server Configuration Kézi kiszolgáló beállítás - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5764,14 +5833,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Játékos neve:<br /><span style=" font-style:italic;">(Ez a becenév fog mejelenni az internetes játéknál is)</span></p></body></html> - - + + Store log files for: - - + + Day(s) napig @@ -5818,15 +5887,15 @@ p, li { white-space: pre-wrap; } Jelszó: - - + + Avatar Server: Avatar kiszolgáló: - + Style Stílus @@ -5844,33 +5913,33 @@ p, li { white-space: pre-wrap; } Activate Aktiválás - - - - - - Add ... - Hozzáadás … - + Add ... + Hozzáadás … + + + + + + Remove Eltávolítás - - - - + + + + Preview - Information: Előnézet – Információ: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5888,8 +5957,8 @@ p, li { white-space: pre-wrap; } Kártyapakli stílus - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5902,29 +5971,29 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Még több kártyapakli stílus letöltése ...</span></a></p></body></html> - + Note: Best quality with image ratio like width=48, height=76. - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 7: Ellenfél 7: - - + + Opponent 8: Ellenfél 8: @@ -5933,8 +6002,8 @@ p, li { white-space: pre-wrap; } Ellenfél 6: {10:?} - - + + Opponent 9: Ellenfél 9: @@ -5942,11 +6011,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Beállítási hiba @@ -5963,7 +6032,7 @@ Please select an valid directory! Kérlek válassz egy valós mappát! - + Select your flipside picture Válaszd ki a kártya hátoldalának képét @@ -5972,24 +6041,24 @@ Kérlek válassz egy valós mappát! Képek (*.png) - + Open Directory Mappa megnyitása - + Images (*.png *.jpg *.gif) Képek (*.png *.jpg *.gif) - - + + Blinds Error Hiba a vaktétekben - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5997,42 +6066,42 @@ This first-small-blind-value will be set to maximum allowed value. Az első kis vak a legnagyobb megengedett értékre módosul. - + Dutch holland - + Afrikaans afrikai - + Catalan katalán - + Czech cseh - + English angol - + French francia - + German német - + Hungarian magyar @@ -6041,277 +6110,277 @@ Az első kis vak a legnagyobb megengedett értékre módosul. portugál - + Russian orosz - + Turkish török - + Language Changed Nyelv módosítva - + You have changed application language to %1. Please restart PokerTH to load new language! Az alkalmazás új nyelve: %1. A beállítás a PokerTH újraindítása után jut érvényre! - + Italian olasz - + Lithuania litván - + Portuguese-Brazilian portugál (brazil) - + Portuguese-Portuguese portugál - + Slovak szlovák - + Tamil tamil - + The entered flipside picture doesn't exist. Please enter an valid picture! A kért kártya hátoldal kép nem létezik. Kérlek válassz egy valós képet! - - + + The log file directory doesn't exist. Please select an valid directory! A naplófájl mappája nem elérhető. Kérlek válassz egy valós mappát! - + Norwegian norvég - + Spanish spanyol - + Bulgarian bolgár - + Polish lengyel - + Chinese kínai - + Greek görög - + Swedish svéd - + The entered server list address is not a valid URL. Please enter a valid server list address! A megadott kiszolgálólista URL-je érvénytelen. Kérlek adj meg egy valós kiszolgálólista címet! - + Finnish finn - + Danish dán - + Galician - + Japanese - + Scottish Gaelic - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Készítette - - + + Maintainer EMail E-mail cím - - + + Create Date Dátum - + Windows Behaviour Ablak viselkedése - + scaleable alkalmazkodó - + fixed rögzített - + Minimum Size Legkisebb méret - + Maximum Size Legnagyobb méret - + Fixed Size Rögzített méret - + State Állapot - + Please select your game table style Válaszd ki a pókerasztal stílusát - + PokerTH game table styles (*.xml) PokerTH pókerasztal stílus (*.xml) - + Game Table Style Error Pókerasztal stílus hiba - + Selected game table style file is already in the list. Please select another one to add! A kiválasztott asztal stílus már szerepel a listán Válassz másikat! - + Game Table Style File Error Pókerasztal stílus fájl hiba - + Could not load game table style file correctly. Style will not be placed into list! Nem sikerült az asztal stílus betöltése. A stílus nem kerül a listára! - + Please select your card deck style Válaszd ki a kártyapakli stílusát - + PokerTH card deck styles (*.xml) PokerTH kártyapakli stílus (*.xml) - + Card Deck Style Error Kártyapakli stílus hiba - + Selected card deck style file is already in the list. Please select another one to add! A kiválasztott pakli stílus már szerepel a listán Válassz másikat! - + Card Deck Style File Error Kártyapakli stílus fájl hiba - + Could not load card deck style file correctly. Style will not be placed into list! Nem sikerült a pakli stílus betöltése. @@ -6334,12 +6403,12 @@ A stílus nem kerül a listára! PokerTH SQL napló (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6416,12 +6485,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Kiszolgáló hiba - + You should not kick yourself from this game! Nem tudod saját magadat kirúgni a játékból! diff --git a/ts/pokerth_it.ts b/ts/pokerth_it.ts index 447db6aa..8e58c507 100644 --- a/ts/pokerth_it.ts +++ b/ts/pokerth_it.ts @@ -435,88 +435,88 @@ Contatta il responsabile dello stile, %3. Esamina file di registro ... - + PokerTH - Delete log files PokerTH - Elimina file di registro - + Do you really want to delete the selected log files? Desideri veramente cancellare i file di registro selezionati? - + Remove log file Rimuovi il file di registro - + PokerTH cannot remove this log file, please verify that you have write access to this file! Impossibile rimuovere questo file di registro, controllare di avere i permessi necessari! - + Export PokerTH log file to HTML Esporta il file di registro di PokerTH in HTML - + PokerTH HTML log (*.html) Registro di PokerTH in formato HTML (*.html) - + Export PokerTH log file to plain text Esporta il file di registro di PokerTH in formato testo - + PokerTH plain text log (*.txt) Registro di PokerTH in formato testo (*.html) - + Save PokerTH log file Salva il file di registro di PokerTH - + PokerTH SQL log (*.pdb) Registro PokerTH SQL (*.pdb) - + No file received. Nessun file ricevuto. - + File rejected because of too many uploads. Il file è stato rifiutato a causa di troppi upload. - + File rejected because of too many recent uploads. Please try again later. Il file è stato rifiutato a causa di troppi upload recenti. Riprovare più tardi. - + The file is too large. Il file è troppo grande. - + This file is not a valid and current PokerTH log file. Questo file non contiene un registro di PokerTH valido e aggiornato. - + Internal error. Please try again later. ID: Errore interno. Riprovare più tardi. ID: - - + + Uploading log file Caricamento del file di registro @@ -525,22 +525,22 @@ Contatta il responsabile dello stile, %3. Upload in corso - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. Upload non riuscito. Controlla la connessione a Internet! L'upload dei file di registro potrebbe non funzionare se si sta usando un proxy http. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Elaborazione del file di registro sul server web non riuscita. Controlla di stare caricando un file di registro di PokerTH valido. - - + + Failure reason: Causa dell'errore: @@ -572,22 +572,60 @@ Controlla di stare caricando un file di registro di PokerTH valido. + Unignore Player + + + + Report inappropriate avatar Segnala avatar non appropriato - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Non riceverai più messaggi di chat o inviti a partite da questo utente.<br>Vuoi veramente inserire l'utente <b>%1</b> nella lista degli utenti ignorati? - - + + + PokerTH - Question PokerTH - Domanda - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? Desideri veramente segnalare l'avatar di "%1" come non appropriato? @@ -2635,127 +2673,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) PokerTH %1 per Android (API%2) - + About PokerTH %1 Informazioni su PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - Wikimedia Commons: per le diverse gallerie di avatar - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: per gli avatar raffiguranti persone - + - ZeiZei: for misc avatar pictures - ZeiZei: per gli avatar vari - + - kde-look.org: for different gpl licensed sounds - kde-look.org: per diversi suoni rilasciati sotto licenza GPL - + - doc_dos: for self recorded chip sounds - doc_dos: per la registrazione del suono delle fiches - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - thiger, dunkanx, BerndA, coldz, drull: per diverse patch - + - kraut: for internet-game-server hosting and administration - kraut: per l'hosting e l'amministrazione del server per il gioco su internet - + - danuxi: for startwindow background gfx and danuxi1 table background - danuxi: per gli sfondi della schermata di avvio e dello stile danuxi1 - + - heyn: for moderating forum and organise bugtracker and feature requests - heyn: per il lavoro di moderazione sul forum, l'organizzazione del bugtracker e la gestione delle richieste di nuove feature - + - texas_outlaw: for new table sounds - texas_outlaw: per i nuovi suoni del tavolo di gioco - + - Poker engine for the popular Texas Hold'em Poker - Motore per il popolare Poker "Texas Holdem" - + - Singleplayer games with up to 9 computer-opponents - Giocatore singolo: possibilità di affrontare fino a 9 avversari IA - + - Multiplayer network games - Partite multigiocatore in rete - + - Internet online games - Partite multigiocatore su Internet - + - Changeable gui with online style gallery - Interfaccia personalizzabile con galleria online di temi - + - Online ranking website with result tables - Ranking online con tabelle dei risultati - + Project page: Pagina progetto: - + Authors: Autori: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package idea iniziale, achitettura di base, implementazione gui, grafica gui, pacchetto linux - + initial idea, basic architecture, engine development idea iniziale, architettura di base, sviluppo motore - + basic architecture, network development, windows package, MacOS package architettura di base, sviluppo di rete, pacchetto windows, pacchetto MacOS - + initial gui graphics design sviluppo iniziale grafica gui - + PokerTH %1 PokerTH %1 @@ -2884,12 +2922,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Ordine manuale dei blind - + You cannot set more than 30 manual blinds. Non puoi impostare più di 30 blind manuali. @@ -2923,40 +2961,40 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Impossibile accedere alla chat prepartita di una partita in rete col nickname "Giocatore Umano". Si prega di sceglierne un altro. - - - + + + Nick name: Nickname: - + Your player name is already used by another player. Please choose a different name. Il tuo nome è già in uso da un altro giocatore. Scegliere un nome diverso. - + The player name is too short, too long or invalid. Please choose another one. Il nome del giocatore è troppo corto, troppo lungo o non valido. Si prega di sceglierne un altro. - + There is already a game with your chosen game name. Please choose another one! Esiste già una partita col nome che hai scelto. Scegli un nome diverso! - + There is a forbidden word in your chosen game name. Please choose another one! Nel nome che hai scelto per la partita compare una parola proibita. @@ -2969,8 +3007,8 @@ Please choose another one! Scegli un nome diverso! - - + + Game name: Nome partita: @@ -3015,27 +3053,27 @@ Scegli un nome diverso! connectToServerDialogImpl - + Connecting to server... Connessione al server... - + Connection established! Connessione stabilita! - + Resolving address... Risoluzione indirizzo... - + Starting session... Inizio sessione... - + Reading server list... Lettura della lista dei server... @@ -3194,7 +3232,7 @@ Scegli un nome diverso! <i>Raddoppia i blind ogni %1a mano </i> - + %1's game Partita di %1 @@ -3620,13 +3658,13 @@ p, li { white-space: pre-wrap; } Partita di %1 - - + + connected players: %1 giocatori connessi: %1 - + double blinds raddoppia blind @@ -3635,51 +3673,51 @@ p, li { white-space: pre-wrap; } partita - - - - + + + + Game Info Informazioni partita - + hands mani - + Joining a private Game Accesso a partita privata in corso - + manual blinds order ordine manuale dei blind - + minutes minuti - - + + Game Partita - - + + Players Giocatori - - + + State Stato @@ -3688,13 +3726,13 @@ p, li { white-space: pre-wrap; } Privato - + open aperta - - + + open games: %1 partite aperte: %1 @@ -3703,7 +3741,7 @@ p, li { white-space: pre-wrap; } giocatori in chat: %1 - + running iniziata @@ -3713,22 +3751,22 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Time Tempo - - + + Available Players Giocatori Disponibili @@ -3744,56 +3782,61 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Dettagli giocatore ... - - + + Admin action ... Azione amministratore ... - + Total kickban Lasciato in inglese perchè "espulsione e messa al bando" risultava troppo lungo Kickban totale - + Report inappropriate game name Segnala nome di partita offensivo - + Close game Chiudi partita - - - + + + Standard Standard - - - + + + Registered players only Solo utenti registrati - - - + + + Invited players only Solo utenti invitati - - - + + + Ranking game Valida per la classifica @@ -3803,19 +3846,19 @@ p, li { white-space: pre-wrap; } - - + + T T - + Waiting for the start of the next hand to rejoin the game ... Attesa dell'inizio della prossima mano per unirsi alla partita... - - + + Show player stats Mostra statistiche giocatore @@ -3832,8 +3875,8 @@ p, li { white-space: pre-wrap; } Giocatori connessi - Max. %1 - - + + running games: %1 partite in corso: %1 @@ -3842,17 +3885,17 @@ p, li { white-space: pre-wrap; } Giocatori connessi - + Server Error Errore del server - + search for player ... Ricerca giocatore ... - + Chat is only available to registered players. La chat è disponibile solamente ai giocatori registrati. @@ -3862,1272 +3905,1287 @@ p, li { white-space: pre-wrap; } Invita %1 - + Ignore %1 Ignora %1 + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 sta giocando in "%2". - + %1 is not playing at the moment. %1 non sta giocando in questo momento. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 è stato invitato a %2 da %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 ha rifiutato l'invito a %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 non può partecipare %2 perchè risulta occupato.</span> - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + The game will start in<br><b>%1</b> seconds. La partita inizierà tra<br><b>%1</b> secondi. - + Afghanistan - + ALand Islands Isole ALand - + Albania - + Algeria - + American Samoa Samoa Americane - + Andorra - + Angola - + Anguilla - + Antarctica Antartide - + Antigua And Barbuda Antigua e Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus Bielorussia - + Belgium Belgio - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina Bosnia Herzegovina - + Botswana - + Bouvet Island Isola Bouvet - + Brazil Brasile - + British Indian Ocean Territory Territorio britannico dell'oceano Indiano - + Brunei Darussalam Sultanato del Brunei - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia Cambogia - + Cameroon Camerun - + Canada - + Cape Verde Capo Verde - + Cayman Islands Isole Cayman - + Central African Republic Repubblica Centrafricana - + Chad Ciad - + Chile Cile - + China Cina - + Christmas Island Isola di Natale - + Cocos (Keeling) Islands Isole Cocos e Keeling - + Colombia - + Comoros Comore - + Congo - + Congo, The Democratic Republic Of The Repubblica Democratica del Congo - + Cook Islands Isole Cook - + Costa Rica - + Cote D'Ivoire Costa D'Avorio - + Croatia Croazia - + Cuba - + Cyprus Cipro - + Czech Republic Repubblica Ceca - + Denmark Danimarca - + Djibouti Gibuti - + Dominica Dominica - + Dominican Republic Repubblica Dominicana - + Ecuador - + Egypt Egitto - + El Salvador - + Equatorial Guinea Guinea Equatoriale - + Eritrea - + Estonia - + Ethiopia Etiopia - + Falkland Islands (Malvinas) Isole Falkland (Malvine) - + Faroe Islands Isole Faroe - + Fiji - + Finland Finlandia - + France Francia - + French Guiana Guiana Francese - + French Polynesia Polinesia Francese - + French Southern Territories Territori Francesi del Sud - + Gabon - + Gambia - + Georgia - + Germany Germania - + Ghana - + Gibraltar Gibilterra - + Greece Grecia - + Greenland Groenlandia - + Grenada - + Guadeloupe Guadalupa - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands Isole Heard e McDonald - + Holy See (Vatican City State) Santa Sede (Città Del Vaticano) - + Honduras - + Hong Kong - + Hungary Ungheria - + Iceland Islanda - + India - + Indonesia - + Iran, Islamic Republic Of Iran - + Iraq - + Ireland Irlanda - + Isle Of Man Isola di Man - + Israel Israele - + Italy Italia - + Jamaica - + Japan Giappone - + Jersey - + Jordan Giordania - + Kazakhstan Kazakistan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of Corea del Nord - + Korea, Republic Of Corea del Sud - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic Laos - + Latvia Lettonia - + Lebanon Libano - + Lesotho - + Liberia - + Libyan Arab Jamahiriya Libia - + Liechtenstein - + Lithuania Lituania - + Luxembourg Lussemburgo - + Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia - + Madagascar - + Malawi - + Malaysia Malesia - + Maldives Maldive - + Mali - + Malta - + Marshall Islands Isole Marshall - + Martinique Martinica - + Mauritania - + Mauritius - + Mayotte - + Mexico Messico - + Micronesia, Federated States Of Micronesia - + Moldova, Republic Of Moldavia - + Monaco - + Mongolia - + Montserrat - + Morocco Marocco - + Mozambique Mozambico - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands Olanda - + Netherlands Antilles Antille Olandesi - + New Caledonia Nuova Caledonia - + New Zealand Nuova Zelanda - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island Isole Norfolk - + Northern Mariana Islands Isole Marianne Settentrionali - + Norway Norvegia - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied Palestina - + Panama - + Papua New Guinea Papua Nuova Guinea - + Paraguay - + Peru Perù - + Philippines Filippine - + Pitcairn - + Poland Polonia - + Portugal Portogallo - + Puerto Rico Porto Rico - + Qatar - + Reunion Riunione - + Romania - + Russian Federation Federazione Russa - + Rwanda Ruanda - + Saint Helena Sant'Elena - + Saint Kitts And Nevis Saint Kitts e Nevis - + Saint Lucia Santa Lucia - + Saint Pierre And Miquelon Saint-Pierre e Miquelon - + Saint Vincent And The Grenadines Saint Vincent e Grenadine - + Samoa - + San Marino - + Sao Tome And Principe Sao Tome e Principe - + Saudi Arabia Arabia Saudita - + Senegal - + Serbia And Montenegro Serbia E Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia Slovacchia - + Slovenia - + Solomon Islands Isole Salomone - + Somalia - + South Africa Sudafrica - + South Georgia And The South Sandwich Islands Georgia del Sud e isole Sandwich meridionali - + Spain Spagna - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen Svalbard e Jan Mayen - + Swaziland - + Sweden Svezia - + Switzerland Svizzera - + Syrian Arab Republic Siria - + Taiwan, Province Of China Taiwan - + Tajikistan Tagikistan - + Tanzania, United Republic Of Tanzania - + Thailand Thailandia - + Timor-Leste Timor Est - + Togo - + Tokelau Tokelau - + Tonga - + Trinidad And Tobago Trinidad e Tobago - + Tunisia - + Turkey Tuchia - + Turkmenistan - + Turks And Caicos Islands Turks e Caicos - + Tuvalu - + Uganda - + Ukraine Ucraina - + United Arab Emirates Emirati Arabi Uniti - + United Kingdom Regno Unito - + United States Stati Uniti - + United States Minor Outlying Islands Isole minori esterne degli Stati Uniti d'America - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British Isole Vergini britanniche - + Virgin Islands, U.S. Isole Vergini americane - + Wallis And Futuna Wallis e Futuna - + Western Sahara Sahara Occidentale - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Sei sicuro di voler segnalare il nome della partita: "%1" come offensivo? - + Are you sure you want to close the game: "%1"? Sei sicuro di voler chiudere la partita: "%1"? - + Are you sure you want to total kickban the player: "%1"? Sei sicuro di voler effettuare un kickban totale del giocatore: "%1"? @@ -5137,90 +5195,91 @@ p, li { white-space: pre-wrap; } Invita giocatore ... - + Click here to view the online rankings Clicca qui per visualizzare le statistiche - + Spectate Osserva - - - + + + sec (action) secondi (azione) - - - + + + sec (hand delay) sec (ritardo mani) - - + + Players (%1) Giocatori (%1) - - - + + + Spectators (%1) Spettatori (%1) - + Ignore player ... Ignora giocatore ... - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Sei entrato in una partita "su invito". Sentiti libero di invitare altri giocatori cliccando col tasto destro sul nickname nella lista dei giocatori disponibili. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Sei stato invitato alla partita <b>%1</b> da <b>%2</b>.<br>Desideri partecipare alla partita? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Non riceverai più messaggi di chat o inviti a partite da questo utente.<br>Vuoi veramente inserire l'utente <b>%1</b> nella lista degli utenti ignorati? - - + + PokerTH - Info Message PokerTH - Informazione - - + + - + + PokerTH - Question PokerTH - Domanda - + Starting game. Please wait ... Avvio partita. Attendere prego... - + You are about to join a private game. Please enter the password! Stai per unirti ad una partita privata. Inserisci la password! - + You should not kick yourself from this game! Non puoi auto-espellerti da questa partita! @@ -5595,7 +5654,7 @@ Assicurarsi che tutti i giocatori abbiano la stessa versione di PokerTH.E' stata specificata una porta non valida (le porte 0-1023 non sono permesse). - + Attention! Do you really want to leave the current game and go back to the lobby? Attenzione! Vuoi veramente abbandonare la partita corrente @@ -5614,13 +5673,13 @@ e tornare al prepartita? Bind fallito - selezionare una porta diversa. - - + + Chat Chat - + Closing PokerTH during network game Si sta chiudendo PokerTH durante una partita in rete @@ -5719,11 +5778,11 @@ Please reenter the password and try again. Reinserire la password e riprovare. - - - - - + + + + + Lobby Prepartita @@ -5740,12 +5799,12 @@ Reinserire la password e riprovare. Notifica in Rete - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Il Motore Texas Holdem Open-Source - + PokerTH - Internet Game Message PokerTH - Messaggio partita su Internet @@ -5766,31 +5825,31 @@ Reinserire la password e riprovare. Spiacente, il server è già al completo. - - - - - - - - + + + + + + + + Start Inizio - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Ferma @@ -5880,7 +5939,7 @@ Visitare l'URL <a href="http://www.pokerth.net/" target=" Impossibile partecipare - la partita è già iniziata. - + You are the hosting server. Do you want to close PokerTH anyway? Stai facendo da server. Vuoi comunque chiudere PokerTH? @@ -5959,64 +6018,64 @@ Assicurarsi di essere connessi direttamente ad internet. Impossibile aprire il file di destinazione durante il download della lista server. - + PokerTH %1 PokerTH %1 - - + + Chance Probabilità - + Really want to exit? Desideri veramente uscire? - + PokerTH - Close Table? PokerTH - Chiudere il tavolo? - - + + Kick Espelli - - + + Do you want to kick <b>%1</b><br>from this game? Vuoi espellere <b>%1</b><br>da questa partita? - - - - + + + + <b>%1</b> secs left <b>%1</b> sec. rimasti - + vote voto - + votes voti + - Chat is only available to registered players. La chat è disponibile solamente ai giocatori registrati. - + Spectators Spettatori @@ -6043,14 +6102,14 @@ Se sei temporaneamente assente, puoi utilizzare l'apposito strumento " Hai <b>%1</b> %2 contro di te.<br><b>%3</b> voti necessari per essere espulso. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Il giocatore <b>%1</b> ha <b>%2</b> %3<br>contro di lui. <b>%4</b> voto/i necessari all'espulsione. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Hai <b>%1</b> %2 contro di te.<br><b>%3</b> voto/i necessari all'espulsione. @@ -6126,7 +6185,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account Crea un nuovo account utente @@ -6291,7 +6350,7 @@ p, li { white-space: pre-wrap; } Un profilo chiamato: " - + A profile with the name: %1 already exists. Would you like to overwrite ? Esiste già un profilo chiamato %1. @@ -6304,7 +6363,7 @@ Desideri sovrascriverlo? - + Could not read server-profiles list Impossibile leggere la lista dei profili server @@ -6315,44 +6374,44 @@ Desideri sovrascriverlo? - - - - + + + + Load Server-Profile-File Error Errore nel caricamento del profilo server - - - - + + + + Could not load server-profiles-file: %1 Impossibile caricare il file dei profili server: %1 - + Read Server-Profile List Error Errore nella lettura della lista dei profili server - - + + Could not save server-profiles-file: %1 Impossibile salvare il file dei profili server: %1 - + Save Server Profile Error Errore nel salvataggio del profilo server - - + + Save Server-Profile-File Error Errore nel salvataggio del file dei profili server @@ -6430,12 +6489,12 @@ Desideri sovrascriverlo? manualBlindsOrderDialogImpl - + Manual Blinds Order Ordine manuale dei blind - + You cannot set more than 30 manual blinds. Non puoi impostare più di 30 blind manuali. @@ -6570,9 +6629,9 @@ Desideri sovrascriverlo? selectAvatarDialogImpl - - - + + + Avatar File Error Errore nel file dell'avatar @@ -6581,22 +6640,22 @@ Desideri sovrascriverlo? Immagini (*.png) - + Images (*.png *.jpg *.gif) Immagini (*.png *.jpg *.gif) - + Please select an avatar from the list! Scegli un avatar dalla lista! - + Select external avatar picture Scegli l'immagine avatar esterna - + The entered avatar picture doesn't exist. Please enter an valid picture! L'avatar indicato non esiste. @@ -6609,7 +6668,7 @@ Please enter an valid picture! Inserite un'immagine valida! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! La dimensione file dell'immagine selezionata è troppo grande (max. 30KB) @@ -6619,14 +6678,14 @@ Scegli un'immagine più piccola! settingsDialog - - - - - - - - + + + + + + + + $ $ @@ -6635,38 +6694,38 @@ Scegli un'immagine più piccola! 0.4 (corrente) - - + + 10 10 - - + + action (high frequent disc access) azione (elevato - accesso frequente al disco) - - - - + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> <a href="http://it.wikipedia.org/wiki/Ipv6">Che cos'è?</a> - - - - + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://it.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Che cos'è?</a> - - - - + + + + Always double blinds Raddoppia sempre i blind @@ -6683,8 +6742,8 @@ Scegli un'immagine più piccola! chat.freenode.net - - + + Computer Engine Computer @@ -6697,10 +6756,10 @@ Scegli un'immagine più piccola! Defaut - - - - + + + + Edit ... Modifica... @@ -6709,8 +6768,8 @@ Scegli un'immagine più piccola! Abilita Chat prepartita (server IRC) - - + + Enable/Disable Logging Ablita/Disabilita il registro @@ -6723,22 +6782,22 @@ Scegli un'immagine più piccola! Versione del motore per gli avversari AI: - - - - - - - - + + + + + + + + Every: Ogni: - - - - + + + + First small blind: Primo small blind: @@ -6747,14 +6806,14 @@ Scegli un'immagine più piccola! Dorso delle carte - - + + game (low disc access) partita (basso - accesso ridotto al disco) - - + + Game Speed: Velocità: @@ -6763,16 +6822,16 @@ Scegli un'immagine più piccola! Velocità di gioco per il computer: - - + + hand (medium disc access) mano (media - accesso normale al disco) - - - - + + + + hands mani @@ -6818,13 +6877,18 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Nimbus Sans L';"><span style=" font-style:italic;">N.b.: Le </span><span style=" font-weight:600; font-style:italic;">Impostazioni di Gioco</span><span style=" font-style:italic;"> predefinite come "Numero Massimo di Giocatori", "Contante Iniziale" e "Small Blind" saranno usate </span><span style=" font-weight:600; font-style:italic;">nelle impostazioni del gioco in rete. </span></p></body></html> - - + + Play blind raise notification Emetti un suono all'aumento dei blind - + + Show network state color in the corner of the avatar + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -6832,7 +6896,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">N.b.: Le </span><span style=" font-weight:600; font-style:italic;">Impostazioni di gioco</span><span style=" font-style:italic;"> predefinite come "Numero massimo di giocatori", "Contante iniziale" e "Small blind" saranno usate </span><span style=" font-weight:600; font-style:italic;">nelle impostazioni del gioco in rete. </span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -6847,7 +6911,7 @@ p, li { white-space: pre-wrap; } <html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">N.B.: Migliore qualità con un rapporto di </span><span style=" font-weight:600; font-style:italic;">larghezza=100, altezza=140.</span></p></body></html> - + Human Player: Giocatore umano: @@ -6859,7 +6923,7 @@ p, li { white-space: pre-wrap; } Interfaccia - + Internet Game Settings Impostazioni partita su Internet @@ -6882,47 +6946,47 @@ p, li { white-space: pre-wrap; } Parametri locali predefiniti - + Local Game Settings Impostazioni locali - - + + Log File Directory: Percorso file di registro: - + Log Messages Registro messaggi - + Note: Best quality with image ratio like width=48, height=76. N.B.: Migliore qualità con un rapporto di larghezza=48, altezza=76. - - - - + + + + Manual blinds order: Ordine manuale dei blind: - - + + Maximum number of players: Numero massimo di giocatori: - - - - + + + + minutes minuti @@ -6931,7 +6995,7 @@ p, li { white-space: pre-wrap; } Impostazioni rete predefinite - + Network Game Settings Impostazioni di rete @@ -6942,55 +7006,55 @@ p, li { white-space: pre-wrap; } Partita in rete/su Internet - - + + Network Server Settings Impostazioni server di rete - - + + Number of players: Numero di giocatori: - + Factory Settings Impostazioni predefinite - + Show country flag in the corner of avatar Visualizza la nazione in un angolo dell'avatar - - - - + + + + Description Descrizione - - - - + + + + Maintainer Responsabile - - - + + + State Stato - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7009,20 +7073,20 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">N.B.: Migliore qualità con un rapporto di </span><span style=" font-weight:600; font-style:italic;">larghezza=48, altezza=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Intervallo una mano e l'altra: - - + + Server Server - - + + Game Partita @@ -7039,73 +7103,73 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Note: Le </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Impostazioni</span><span style=" font-size:12pt; font-style:italic;"> predefinite di: &quot;Numero massimo di giocatori&quot;, &quot;Contante Iniziale&quot; e &quot;Small Blind&quot; saranno prese </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">dalle impostazioni delle partite in rete.</span></p></body></html> - - + + Default game name: Nome partita predefinito: - - + + Default game type: Tipo partita predefinito: - - + + Standard Standard - - + + Registered players only Solo utenti registrati - - + + Invited players only Solo utenti invitati - - + + Ranking game Valida per la classifica - + Show lobby chat Mostra chat - - + + Automatically leave the table after the game finished Abbandona il tavolo automaticamente non appena la partita termina - - + + Ignored Players Giocatori Ignorati - - + + Player Giocatore - - + + Remove Player Rimuovi Giocatore - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7118,43 +7182,43 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Giocatore umano:<br /><span style=" font-style:italic;">(Questo nickname sarà utilizzato anche per l'accesso alle partite online)</span></p></body></html> - - + + Opponent 1: Giocatore 1: - - + + Opponent 2: Giocatore 2: - - + + Opponent 3: Giocatore 3: - - + + Opponent 4: Giocatore 4: - - + + Opponent 5: Giocatore 5: - - + + Opponent 6: Giocatore 6: - + Note: Best avatar quality with image ratio like width=50, height=50. N.B.: Migliore qualità degli avatar con un rapporto di larghezza=50, altezza=50. @@ -7179,14 +7243,14 @@ p, li { white-space: pre-wrap; } Esporta in HTML - - + + Reset all settings to default ... Ripristina tutte le impostazioni predefinite ... - - + + Note: You can not reset all settings to default during a running game! Nota: non è possibile ripristinare le impostazioni di default durante una partita! @@ -7215,8 +7279,8 @@ p, li { white-space: pre-wrap; } Immagine del dorso delle carte: - - + + Pause between hands (press "start" button to go on) Pausa tra una mano e l'altra (premere start per proseguire) @@ -7225,31 +7289,31 @@ p, li { white-space: pre-wrap; } Nomi dei giocatori - + Player Nicks/Avatars Nick/Avatar dei giocatori - - + + Play game actions sounds like "check", "call", "raise" Suoni per le azioni di gioco ( "check", "call", "raise", ecc.) - - + + Play lobby chat notifications Notifiche chat di gioco - - + + Play network/internet game notifications like "player joined the game" Notifiche partite in rete/Internet (Es. "il giocatore si è unito alla partita") - - + + Play sound effects Abilita gli effetti sonori @@ -7262,18 +7326,18 @@ p, li { white-space: pre-wrap; } QLabel { font-weight: bold; } - - - - + + + + Raise blinds: Aumenta blind: - - - - + + + + Raise mode: Modalità aumento: @@ -7287,30 +7351,30 @@ p, li { white-space: pre-wrap; } Inverti l'ordine dei tasti funzione (F1 - F4) - - - - + + + + s s - - + + Server Address: Indirizzo del server: - - + + Server Password: Password del server: - - - - + + + + Server Port: Porta del server: @@ -7343,8 +7407,8 @@ p, li { white-space: pre-wrap; } Visualizza l'animazione delle carte - - + + Show game settings dialog on every new game Visualizza la finestra delle impostazioni di gioco all'inizio di ogni nuova partita @@ -7380,27 +7444,27 @@ all'inizio di ogni nuova partita - + Sound Suono - - + + Sound Categories Categorie suoni - - + + Sound Volume: Volume effetti sonori: - - - - + + + + Start Cash: Contante iniziale: @@ -7409,14 +7473,14 @@ all'inizio di ogni nuova partita Memorizza file di registro per - + Switch keyboard focus to bet-input-field if it's your turn Passa il focus della tastiera sull'area di puntata al proprio turno - - + + Timeout for player action: Tempo limite per l'azione del giocatore: @@ -7425,36 +7489,36 @@ all'inizio di ogni nuova partita Tempo limite per l'azione del giocatore (in secondi): - - - - + + + + Use IPv6 Utilizza IPv6 - - + + Use password for private game: Utilizza password per partita privata: - - - - + + + + Use SCTP Utilizza SCTP - - + + Write log after every: Scrivi sul file di registro ogni: - - + + Automatic Server Configuration URL URL configurazione automatica server @@ -7477,14 +7541,14 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">N.B.: Migliore qualità con un rapporto di </span><span style=" font-weight:600; font-style:italic;">larghezza=48, altezza=76.</span></p></td></tr></table></body></html> - - + + Serverlist Address: Indirizzo lista server: - - + + Manual Server Configuration Configurazione manuale del server @@ -7501,14 +7565,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Giocatore umano:<br /><span style=" font-style:italic;">(Questo nickname sarà utilizzato anche per l'accesso alle partite online)</span></p></body></html> - - + + Store log files for: Memorizza file di registro per: - - + + Day(s) Giorno(i) @@ -7555,61 +7619,66 @@ p, li { white-space: pre-wrap; } Disabilita la schermata d'avvio - + Activate the "accidentally call after big raise" blocker Attivare il blocco del "call involontario dopo un grosso rilancio" - + Do not hide avatars of players which are on the ignore list Non nascondere gli avatar dei giocatori nella lista ignorati - + Disable emoticons in the chat Disabilita emoticons nella chat - - + + Show network state color on the avatar + + + + + Game Table Tavolo di gioco - - + + Card Deck Mazzo di carte - - + + Card Back Dorso delle carte - - + + Use card back from card style Prendi il dorso delle carte dallo stile - - + + Use custom card back picture: Utilizza un dorso personalizzato: - - + + Allow spectators to watch the game Consenti agli spettatori di osservare la partita - + OK OK @@ -7639,15 +7708,15 @@ p, li { white-space: pre-wrap; } Password: - - + + Avatar Server: Server Avatar: - + Style Stile @@ -7665,33 +7734,33 @@ p, li { white-space: pre-wrap; } Activate Attiva - - - - - - Add ... - Aggiungi... - + Add ... + Aggiungi... + + + + + + Remove Rimuovi - - - - + + + + Preview - Information: Anteprima - Informazioni: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7704,8 +7773,8 @@ p, li { white-space: pre-wrap; } Stili mazzo - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7714,24 +7783,24 @@ p, li { white-space: pre-wrap; } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"><html><head><meta name="qrichtext" content="1" /><style type="text/css">p, li { white-space: pre-wrap; }</style></head><body><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Scarica nuovi stili per il mazzo di carte di PokerTH ...</span></a></p></body></html> - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. N.B.: Le Impostazioni Predefinite di Gioco come "Numero Massimo di Giocatori", "Contante Iniziale" e "Small Blind" saranno utilizzate nelle impostazioni del gioco in rete. - + (This nick will also be used for the online game login) (Questo nick sarà utilizzato anche comel login delle partite online) - - + + Opponent 7: Giocatore 7: - - + + Opponent 8: Giocatore 8: @@ -7740,8 +7809,8 @@ p, li { white-space: pre-wrap; } Giocatore 10: - - + + Opponent 9: Giocatore 9: @@ -7749,48 +7818,48 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - + + Blinds Error Errore relativo ai blind - + Dutch Olandese - + Afrikaans Afrikaans - + Catalan Catalano - + Czech Ceco - + English Inglese - + French Francese - + German Tedesco - + Hungarian Ungherese @@ -7799,17 +7868,17 @@ p, li { white-space: pre-wrap; } Immmagine (*.png) - + Images (*.png *.jpg *.gif) Immagini (*.png *.jpg *.gif) - + Italian Italiano - + Language Changed La lingua è stata cambiata @@ -7818,12 +7887,12 @@ p, li { white-space: pre-wrap; } Norvegese - + Norwegian Norvegese - + Open Directory Apri cartella @@ -7832,56 +7901,56 @@ p, li { white-space: pre-wrap; } Portoghese - + Russian Russo - + Select your flipside picture Seleziona un'immagine per il dorso delle carte - - - - - + + + + + Settings Error Errore nelle impostazioni - + Lithuania Lituano - + Portuguese-Brazilian Portoghese-Brasiliano - + Portuguese-Portuguese Portoghese-Portoghese - + Slovak Slovacco - + Spanish Spagnolo - + Tamil Tamil - + The entered flipside picture doesn't exist. Please enter an valid picture! L'immagine selezionata per il dorso delle carte non esiste. @@ -7894,8 +7963,8 @@ Please enter an valid picture! Inserite un'immagine valida! - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7904,8 +7973,8 @@ This first-small-blind-value will be set to maximum allowed value. Il valore del primo small blind verrà impostato al massimo consentito. - - + + The log file directory doesn't exist. Please select an valid directory! La cartella per il file di registro non esiste. @@ -7918,214 +7987,214 @@ Please select an valid directory! Inserite una directory valida! - + Turkish Turco - + You have changed application language to %1. Please restart PokerTH to load new language! Hai cambiato la lingua dell'applicazione in %1. Riavvia PokerTH per caricare la nuova lingua! - + Bulgarian Bulgaro - + Polish Polacco - + Chinese Cinese - + Greek Greco - + Swedish Svedese - + The entered server list address is not a valid URL. Please enter a valid server list address! L'indirizzo della lista server immesso non è un URL valido. Inserisci un indirizzo valido! - + Finnish Finlandese - + Danish Danese - + Galician Galiziano - + Japanese Giapponese - + Scottish Gaelic Gaelico Scozzese - + Vietnamese Vietnamita - + The opponent names are not unique. Please choose different names for each Opponent! I nomi degli avversari non sono univoci. Scegli un nome diverso per ogni Avversario! - + Settings Information Informazioni - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Hai modificato la cartella del file di registro. Occorre riavviare PokerTH per utilizzare la nuova cartella! - - + + Maintainer Name Nome responsabile - - + + Maintainer EMail E-mail responsabile - - + + Create Date Data creazione - + Windows Behaviour Comportamento finestra - + scaleable scalabile - + fixed fissa - + Minimum Size Dimensione minima - + Maximum Size Dimensione massima - + Fixed Size Dimensione fissa - + State Stato - + Please select your game table style Seleziona lo stile del tavolo da gioco - + PokerTH game table styles (*.xml) Stili tavolo da gioco di PokerTH (*.xml) - + Game Table Style Error Errore sullo stile del tavolo da gioco - + Selected game table style file is already in the list. Please select another one to add! Lo stile del tavolo da gioco selezionato è già presente nella lista. Selezionane un altro! - + Game Table Style File Error Errore sul file dello stile del tavolo da gioco - + Could not load game table style file correctly. Style will not be placed into list! Impossibile caricare correttamente il file contenente lo stile. Lo stile non verrà aggiunto alla lista! - + Please select your card deck style Seleziona lo stile del mazzo di carte - + PokerTH card deck styles (*.xml) Stili mazzo di carte di PokerTH (*.xml) - + Card Deck Style Error Errore sullo stile del mazzo di carte - + Selected card deck style file is already in the list. Please select another one to add! Lo stile del mazzo di carte selezionato è già presente nella lista. Selezionane un altro! - + Card Deck Style File Error Errore sul file dello stile del mazzo di carte - + Could not load card deck style file correctly. Style will not be placed into list! Impossibile caricare correttamente il file contenente lo stile. @@ -8172,12 +8241,12 @@ Lo stile non verrà aggiunto alla lista! Registro PokerTH SQL (*.pdb) - + PokerTH - Settings PokerTH - Impostazioni - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Attenzione: questa operazione cancellerà tuttie le impostazioni personalizzate e chiuderà PokerTH! @@ -8259,12 +8328,12 @@ Sei sicuro di voler ripristinare le impostazioni predefinite? startNetworkGameDialogImpl - + Server Error Errore server - + You should not kick yourself from this game! Non puoi auto-espellerti da questa partita! diff --git a/ts/pokerth_jp.ts b/ts/pokerth_jp.ts index b4f9847b..c6627c7f 100644 --- a/ts/pokerth_jp.ts +++ b/ts/pokerth_jp.ts @@ -301,106 +301,106 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file PokerTH ログファイルを保存 - + PokerTH SQL log (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -424,22 +424,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar 不適切なアバターを報告 - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? 以後、このプレイヤーからのチャットメッセージとゲームの招待を受けることができなくなります <br> 本当にプレイヤー %1 を無視リストに入れますか? - - + + + PokerTH - Question PokerTH - 質問 - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? 本当に %1 のアバターが不適切であることを報告しますか? @@ -656,127 +694,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 - + About PokerTH %1 PokerTH について - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -893,12 +931,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order 手動ブラインド設定 - + You cannot set more than 30 manual blinds. 30 以上のブラインドは設定できません。 @@ -932,48 +970,48 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. インターネットゲームロビーにニックネーム "Human Player" では入室できません。 別のニックネームを使用して下さい。 - - - + + + Nick name: ニックネーム: - + Your player name is already used by another player. Please choose a different name. あなたのニックネームは既に他のプレイヤーに使用されています。 別のニックネームを使用して下さい。 - + The player name is too short, too long or invalid. Please choose another one. ニックネームが短すぎるか長すぎる、または不正です。別のニックネームを使用して下さい。 - + There is already a game with your chosen game name. Please choose another one! 選択したゲーム名は既に存在します。 別のゲーム名を使用して下さい。 - + There is a forbidden word in your chosen game name. Please choose another one! ゲーム名の中に禁止ワードが含まれています。 別のゲーム名を使用して下さい。 - - + + Game name: ゲーム名: @@ -1001,27 +1039,27 @@ Please choose another one! connectToServerDialogImpl - + Resolving address... アドレスを解決中... - + Connecting to server... サーバーに接続中... - + Starting session... セッションを開始しています... - + Connection established! 接続が確立されました。 - + Reading server list... サーバーリストを読込中... @@ -1168,7 +1206,7 @@ Please choose another one! <i>%1 ハンド毎にブラインドが倍増</i> - + %1's game %1 のゲーム @@ -1474,70 +1512,70 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... ゲームを開始中。お待ち下さい... - + Joining a private Game プラベートゲームに参加しています - + You are about to join a private game. Please enter the password! プライベートゲームに参加しようとしています。パスワードを入力してください。 - + open オープン - - - - + + + + Game Info ゲーム情報 - + Spectate - - + + Game ゲーム - - + + Players プレイヤー - - + + State 状態 - - + + P - - + + Available Players 有効なプレイヤー @@ -1553,39 +1591,44 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... プレイヤー情報... - + Report inappropriate game name - - - + + + Standard スタンダード - - - + + + Registered players only 登録されたプレイヤーのみ - - - + + + Invited players only 招待されたプレイヤーのみ - - - + + + Ranking game ランキングゲーム @@ -1595,22 +1638,22 @@ p, li { white-space: pre-wrap; } - - + + T - - - + + + sec (action) - - - + + + sec (hand delay) @@ -1619,32 +1662,32 @@ p, li { white-space: pre-wrap; } 接続中プレイヤー - 最大 %1 人 - + running 進行中 - - + + running games: %1 進行中のゲーム:%1 - - + + open games: %1 オープンゲーム:%1 - - + + Players (%1) - - - + + + Spectators (%1) @@ -1654,91 +1697,91 @@ p, li { white-space: pre-wrap; } 招待 %1 - + Ignore %1 無視 %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 は %2 に %3 によって招待されています。</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 は %2 への招待を拒否しました。</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 は busy のため %2 に参加できません。</span> - + The game will start in<br><b>%1</b> seconds. <br><b>%1</b> 秒後にゲームが開始されます。 - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. 招待専用のゲームに参加しています。 右クリックでプレイヤーリストからニックネームを選択して他のプレイヤーを招待しましょう。 - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? ゲーム "<b>%1</b>" に "<b>%2</b>"より招待されています。<br> このゲームに参加しますか? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? 以後、このプレイヤーからのチャットメッセージとゲームの招待を受けることができなくなります <br> 本当にプレイヤー %1 を無視リストに入れますか? - - + + connected players: %1 接続中プレイヤー: %1 - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - - + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game @@ -1747,42 +1790,42 @@ Feel free to invite other players by right-clicking on their nick in the availab 接続中プレイヤー - + hands ハンド - + minutes - + double blinds ブラインド倍増 - + manual blinds order 手動ブラインド設定 - + Server Error サーバーエラー - + You should not kick yourself from this game! 自分自身をゲームから kick することはできません。 - + search for player ... プレイヤー検索... - + Chat is only available to registered players. チャットは登録したプレイヤーのみ使用することができます。 @@ -1792,1263 +1835,1279 @@ Feel free to invite other players by right-clicking on their nick in the availab プレイヤーを招待... - + Ignore player ... プレイヤーを無視... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 は "%2" でゲームしています。 - + %1 is not playing at the moment. %1 は現在プレイ中ではありません。 - - + + PokerTH - Info Message PokerTH - 情報メッセージ - - + + - + + PokerTH - Question PokerTH - 質問 - - Afghanistan - - - - - ALand Islands - - - - - Albania - - - - - Algeria - - - - - American Samoa - - - - - Andorra - - - - - Angola - - - - - Anguilla - - - - - Antarctica - - - - - Antigua And Barbuda - - - - - Argentina - - - - - Armenia - - - - - Aruba - - - - - Australia - - - - - Austria - - - - - Azerbaijan - - - - - Bahamas + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? - Bahrain + Afghanistan - Bangladesh + ALand Islands - Barbados + Albania - Belarus + Algeria - Belgium + American Samoa - Belize + Andorra - Benin + Angola - Bermuda + Anguilla - Bhutan + Antarctica - Bolivia + Antigua And Barbuda - Bosnia And Herzegovina + Argentina - Botswana + Armenia - Bouvet Island + Aruba - Brazil + Australia - British Indian Ocean Territory + Austria - Brunei Darussalam + Azerbaijan - Bulgaria + Bahamas - Burkina Faso + Bahrain - Burundi + Bangladesh - Cambodia + Barbados - Cameroon + Belarus - Canada + Belgium - Cape Verde + Belize - Cayman Islands + Benin - Central African Republic + Bermuda - Chad + Bhutan - Chile + Bolivia - China + Bosnia And Herzegovina - Christmas Island + Botswana - Cocos (Keeling) Islands + Bouvet Island - Colombia + Brazil - Comoros + British Indian Ocean Territory - Congo + Brunei Darussalam - Congo, The Democratic Republic Of The + Bulgaria - Cook Islands + Burkina Faso - Costa Rica + Burundi - Cote D'Ivoire + Cambodia - Croatia + Cameroon - Cuba + Canada - Cyprus + Cape Verde - Czech Republic + Cayman Islands - Denmark + Central African Republic - Djibouti + Chad - Dominica + Chile - Dominican Republic + China - Ecuador + Christmas Island - Egypt + Cocos (Keeling) Islands - El Salvador + Colombia - Equatorial Guinea + Comoros - Eritrea + Congo - Estonia + Congo, The Democratic Republic Of The - Ethiopia + Cook Islands - Falkland Islands (Malvinas) + Costa Rica - Faroe Islands + Cote D'Ivoire - Fiji + Croatia - Finland + Cuba - France + Cyprus - French Guiana + Czech Republic - French Polynesia + Denmark - French Southern Territories + Djibouti - Gabon + Dominica - Gambia + Dominican Republic - Georgia + Ecuador - Germany + Egypt - Ghana + El Salvador - Gibraltar + Equatorial Guinea - Greece + Eritrea - Greenland + Estonia - Grenada + Ethiopia - Guadeloupe + Falkland Islands (Malvinas) - Guam + Faroe Islands - Guatemala + Fiji - Guernsey + Finland - Guinea + France - Guinea-Bissau + French Guiana - Guyana + French Polynesia - Haiti + French Southern Territories - Heard Island And Mcdonald Islands + Gabon - Holy See (Vatican City State) + Gambia - Honduras + Georgia - Hong Kong + Germany - Hungary + Ghana - Iceland + Gibraltar - India + Greece - Indonesia + Greenland - Iran, Islamic Republic Of + Grenada - Iraq + Guadeloupe - Ireland + Guam - Isle Of Man + Guatemala - Israel + Guernsey - Italy + Guinea - Jamaica + Guinea-Bissau - Japan + Guyana - Jersey + Haiti - Jordan + Heard Island And Mcdonald Islands - Kazakhstan + Holy See (Vatican City State) - Kenya + Honduras - Kiribati + Hong Kong - Korea, Democratic People'S Republic Of + Hungary - Korea, Republic Of + Iceland - Kuwait + India - Kyrgyzstan + Indonesia - Lao People'S Democratic Republic + Iran, Islamic Republic Of - Latvia + Iraq - Lebanon + Ireland - Lesotho + Isle Of Man - Liberia + Israel - Libyan Arab Jamahiriya + Italy - Liechtenstein + Jamaica - Lithuania + Japan - Luxembourg + Jersey - Macao + Jordan - Macedonia, The Former Yugoslav Republic Of + Kazakhstan - Madagascar + Kenya - Malawi + Kiribati - Malaysia + Korea, Democratic People'S Republic Of - Maldives + Korea, Republic Of - Mali + Kuwait - Malta + Kyrgyzstan - Marshall Islands + Lao People'S Democratic Republic - Martinique + Latvia - Mauritania + Lebanon - Mauritius + Lesotho - Mayotte + Liberia - Mexico + Libyan Arab Jamahiriya - Micronesia, Federated States Of + Liechtenstein - Moldova, Republic Of + Lithuania - Monaco + Luxembourg - Mongolia + Macao - Montserrat + Macedonia, The Former Yugoslav Republic Of - Morocco + Madagascar - Mozambique + Malawi - Myanmar + Malaysia - Namibia + Maldives - Nauru + Mali - Nepal + Malta - Netherlands + Marshall Islands - Netherlands Antilles + Martinique - New Caledonia + Mauritania - New Zealand + Mauritius - Nicaragua + Mayotte - Niger + Mexico - Nigeria + Micronesia, Federated States Of - Niue + Moldova, Republic Of - Norfolk Island + Monaco - Northern Mariana Islands + Mongolia - Norway + Montserrat - Oman + Morocco - Pakistan + Mozambique - Palau + Myanmar - Palestinian Territory, Occupied + Namibia - Panama + Nauru - Papua New Guinea + Nepal - Paraguay + Netherlands - Peru + Netherlands Antilles - Philippines + New Caledonia - Pitcairn + New Zealand - Poland + Nicaragua - Portugal + Niger - Puerto Rico + Nigeria - Qatar + Niue - Reunion + Norfolk Island - Romania + Northern Mariana Islands - Russian Federation + Norway - Rwanda + Oman - Saint Helena + Pakistan - Saint Kitts And Nevis + Palau - Saint Lucia + Palestinian Territory, Occupied - Saint Pierre And Miquelon + Panama - Saint Vincent And The Grenadines + Papua New Guinea - Samoa + Paraguay - San Marino + Peru - Sao Tome And Principe + Philippines - Saudi Arabia + Pitcairn - Senegal + Poland - Serbia And Montenegro + Portugal - Seychelles + Puerto Rico - Sierra Leone + Qatar - Singapore + Reunion - Slovakia + Romania - Slovenia + Russian Federation - Solomon Islands + Rwanda - Somalia + Saint Helena - South Africa + Saint Kitts And Nevis - South Georgia And The South Sandwich Islands + Saint Lucia - Spain + Saint Pierre And Miquelon - Sri Lanka + Saint Vincent And The Grenadines - Sudan + Samoa - Suriname + San Marino - Svalbard And Jan Mayen + Sao Tome And Principe - Swaziland + Saudi Arabia - Sweden + Senegal - Switzerland + Serbia And Montenegro - Syrian Arab Republic + Seychelles - Taiwan, Province Of China + Sierra Leone - Tajikistan + Singapore - Tanzania, United Republic Of + Slovakia - Thailand + Slovenia - Timor-Leste + Solomon Islands - Togo + Somalia - Tokelau + South Africa - Tonga + South Georgia And The South Sandwich Islands - Trinidad And Tobago + Spain - Tunisia + Sri Lanka - Turkey + Sudan - Turkmenistan + Suriname - Turks And Caicos Islands + Svalbard And Jan Mayen - Tuvalu + Swaziland - Uganda + Sweden - Ukraine + Switzerland - United Arab Emirates + Syrian Arab Republic - United Kingdom + Taiwan, Province Of China - United States + Tajikistan - United States Minor Outlying Islands + Tanzania, United Republic Of - Uruguay + Thailand - Uzbekistan + Timor-Leste - Vanuatu + Togo - Venezuela + Tokelau - Viet Nam + Tonga - Virgin Islands, British + Trinidad And Tobago - Virgin Islands, U.S. + Tunisia - Wallis And Futuna + Turkey - Western Sahara + Turkmenistan - Yemen + Turks And Caicos Islands - Zambia + Tuvalu + Uganda + + + + + Ukraine + + + + + United Arab Emirates + + + + + United Kingdom + + + + + United States + + + + + United States Minor Outlying Islands + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Viet Nam + + + + + Virgin Islands, British + + + + + Virgin Islands, U.S. + + + + + Wallis And Futuna + + + + + Western Sahara + + + + + Yemen + + + + + Zambia + + + + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3335,99 +3394,99 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop 停止 - + PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - - - - + + + + + + + + Start 開始 - - - - - + + + + + Lobby ロビー - - + + Chat チャット - + Closing PokerTH during network game ネットワークゲーム中に PokerTH を閉じる - + You are the hosting server. Do you want to close PokerTH anyway? あなたはサーバーをホストしています。本当に PokerTH を閉じますか? - + Really want to exit? 本当に退出しますか? - + PokerTH - Close Table? PokerTH - テーブルを閉じますか? - + PokerTH - Internet Game Message PokerTH - インターネットゲームメッセージ - + Attention! Do you really want to leave the current game and go back to the lobby? 注意! 本当にこのゲームを離れ、ロビーに戻ってもよろしいですか? + - Chat is only available to registered players. チャットは登録したプレイヤーのみ使用することができます。 - + Spectators @@ -3446,51 +3505,51 @@ If you are temporarily away, you can use the "away" tools in the tool 一時的な離席の場合、右ツールボックスの一時退席ツールを使用できます。 - - + + Chance チャンス - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? <b>%1</b><br>をこのゲームから kick しますか? - - - - + + + + <b>%1</b> secs left 残り <b>%1</b> 秒 - + vote 投票 - + votes 投票 - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. I dont know what %1-%4 will display... - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. I dont know what %1-%4 will display... @@ -3567,7 +3626,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account @@ -3708,10 +3767,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error サーバープロファイルの読み込みエラー @@ -3721,45 +3780,45 @@ p, li { white-space: pre-wrap; } サーバープロファイルファイルが読み込めませんでした: - - - - + + + + Could not load server-profiles-file: %1 - + Save Server Profile Error サーバープロファイルの保存エラー - + A profile with the name: %1 already exists. Would you like to overwrite ? "%1"という名前のプロファイルが既に存在します。 上書きしますか? - + Read Server-Profile List Error サーバープロファイルリストの読み込みエラー - + Could not read server-profiles list サーバープロファイルリストを読み込めませんでした - - + + Save Server-Profile-File Error サーバープロファイルファイルの保存エラー - - + + Could not save server-profiles-file: %1 @@ -3831,12 +3890,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order 手動ブラインド設定 - + You cannot set more than 30 manual blinds. 30 以上のブラインドは設定できません。 @@ -3959,38 +4018,38 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error アバターファイルエラー - + Please select an avatar from the list! アバターをリストから選択して下さい。 - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! 選択された画像のファイルサイズが大きすぎます (最大 30KB) 小さい画像を選択してください。 - + The entered avatar picture doesn't exist. Please enter an valid picture! 入力されたアバター画像が存在しません。 正しい画像を入力してください。 - + Select external avatar picture 外部アバター画像を選択 - + Images (*.png *.jpg *.gif) 画像 (*.png *.jpg *.gif) @@ -4052,7 +4111,7 @@ Please enter an valid picture! ネットワーク / インターネットゲーム - + Switch keyboard focus to bet-input-field if it's your turn 自分のターンの際、bet 入力フィールドにフォーカスを合わせる @@ -4060,14 +4119,14 @@ Please enter an valid picture! - + Sound サウンド - + Factory Settings @@ -4084,292 +4143,297 @@ Please enter an valid picture! スプラッシュスクリーンを表示しない - + Show country flag in the corner of avatar アバターの端に国旗を表示する - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Game Table ゲームテーブル - - - - + + + + Description 説明 - - - - + + + + Maintainer 作者 - - - + + + State 状態 - - + + Card Deck カードデッキ - - + + Card Back カード裏面 - - + + Use card back from card style カードスタイルのカード裏面デザインを使用する - - + + Use custom card back picture: カスタムカード裏面画像を使用: - - + + Play sound effects サウンドエフェクトを使用 - - + + Sound Volume: サウンドボリューム: - - + + 10 - - + + Sound Categories サウンドカテゴリ - - + + Play game actions sounds like "check", "call", "raise" "check", "call", "raise" のようなゲームアクションサウンドを鳴らす - - + + Play lobby chat notifications ロビーチャットの通知音を鳴らす - - + + Play network/internet game notifications like "player joined the game" "プレイヤーが参加した"のようなネットワークゲーム / インターネットゲーム通知音を鳴らす - - + + Server Password: - - + + Allow spectators to watch the game - + OK - + Local Game Settings ローカルゲーム設定 - - + + Number of players: プレイヤー数: - - - - + + + + Start Cash: 開始金額: - - - - - - - - + + + + + + + + $ - - - - + + + + First small blind: 初期スモールブラインド: - - - - + + + + Raise blinds: ブラインドの上昇: - - - - - - - - + + + + + + + + Every: 毎: - - - - + + + + hands ハンド - - - - + + + + minutes - - - - + + + + Raise mode: 上昇設定: - - - - + + + + Always double blinds 常にブラインドが倍増 - - - - + + + + Manual blinds order: 手動ブラインド設定: - - - - + + + + Edit ... 設定... - - + + Game Speed: ゲームスピード: - - + + Pause between hands (press "start" button to go on) ハンド毎のポーズを有効化("start"ボタンで続行) - - + + Show game settings dialog on every new game ゲーム設定ダイアログを新規ゲーム毎に表示 - + Network Game Settings ネットワークゲーム設定 - - + + Maximum number of players: プレイヤー人数の上限: - - + + Timeout for player action: プレイヤーアクションのタイムアウト: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4394,66 +4458,71 @@ Please enter an valid picture! ログファイル - - - - + + + + s - - + + Network Server Settings ネットワークサーバー設定 - - - - + + + + Server Port: サーバーポート: - - - - - - Use SCTP - SCTP を使用 - - - - - - - Use IPv6 - IPv6 を使用 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://ja.wikipedia.org/wiki/IPv6">IPv6とは?</a> - + Use SCTP + SCTP を使用 + + + + + + + Use IPv6 + IPv6 を使用 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://ja.wikipedia.org/wiki/IPv6">IPv6とは?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://ja.wikipedia.org/wiki/SCTP">SCTPとは?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings インターネットゲーム設定 - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4464,61 +4533,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">注意:"プレイヤー人数の上限", "開始金額","スモールブラインド"のようなデフォルトの</span><span style=" font-weight:600; font-style:italic;">ゲーム設定</span><span style=" font-style:italic;">は</span><span style=" font-weight:600; font-style:italic;">ネットワークゲーム設定から適用</span><span style=" font-style:italic;">されます。</span></p></body></html> - - + + Server Address: サーバーアドレス: - - + + Use password for private game: プライベートゲーム用のパスワード: - - + + Computer Engine コンピューターエンジン - - + + Opponent 6: 対戦相手 6: - - + + Opponent 5: 対戦相手 5: - - + + Opponent 4: 対戦相手 4: - - + + Opponent 3: 対戦相手 3: - - + + Opponent 2: 対戦相手 2: - - + + Opponent 1: 対戦相手 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4529,8 +4598,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">注意: 最高品質のための推奨アバター画像サイズは </span><span style=" font-weight:600; font-style:italic;">width=50, height=50</span><span style=" font-style:italic;"> です。</span></p></body></html> - - + + Enable/Disable Logging ログを 有効化 / 無効化 @@ -4539,44 +4608,44 @@ p, li { white-space: pre-wrap; } ログファイルの保存期間 - - + + Log File Directory: ログファイルのディレクトリ - - + + Write log after every: ログファイルの書込タイミング - - + + action (high frequent disc access) アクション (ディスクアクセス頻度 - 高) - - + + hand (medium disc access) ハンド (ディスクアクセス頻度 - 中) - - + + game (low disc access) ゲーム (ディスクアクセス頻度 - 低) - + Log Messages ログメッセージ - + Player Nicks/Avatars プレイヤーニックネーム / アバター @@ -4591,53 +4660,53 @@ p, li { white-space: pre-wrap; } 左ツールボックスを表示 - - + + Play blind raise notification - - + + Automatic Server Configuration URL 自動サーバー設定 URL - - + + Serverlist Address: サーバーリストアドレス: - - + + Manual Server Configuration 手動サーバー設定 - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -4672,20 +4741,20 @@ p, li { white-space: pre-wrap; } チャンスカードモニターを表示 - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: アバターサーバー: - + Style スタイル @@ -4695,33 +4764,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style ゲームテーブルスタイルによる check, call, raise などを翻訳しない - - - - - - Add ... - 追加... - + Add ... + 追加... + + + + + + Remove 削除 - - - - + + + + Preview - Information: プレビュー - 情報 - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4734,8 +4803,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">新しい PokerTH ゲームテーブルスタイルを入手...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4748,7 +4817,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">新しい PokerTH カードデッキスタイルを入手...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4767,96 +4836,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">注意: 最高品質のための推奨画像サイズは </span><span style=" font-weight:600; font-style:italic;">width=48, height=76</span><span style=" font-style:italic;"> です。</span></p></body></html> - - + + Delay between hands: ハンド毎のディレイ: - - + + Server サーバー - - + + Game ゲーム - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: 初期ゲーム名: - - + + Default game type: 初期ゲームタイプ: - - + + Standard スタンダード - - + + Registered players only 登録プレイヤーのみ - - + + Invited players only 招待されたプレイヤーのみ - - + + Ranking game ランキングゲーム - + Show lobby chat ロビーチャットを表示 - - + + Automatically leave the table after the game finished - - + + Ignored Players 無視プレイヤーリスト - - + + Player プレイヤー - - + + Remove Player プレイヤーをリストから削除 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4869,20 +4938,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">自分のプレイヤー:<br /><span style=" font-style:italic;">(このニックネームはオンラインゲームでも使用されます)</span></p></body></html> - - + + Opponent 7: 対戦相手 7: - - + + Opponent 8: 対戦相手 8: - - + + Opponent 9: 対戦相手 9: @@ -4890,65 +4959,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error 設定エラー - + The entered flipside picture doesn't exist. Please enter an valid picture! 入力されたカード裏面画像が存在しません。 正しい画像を入力してください。 - - + + The log file directory doesn't exist. Please select an valid directory! ログファイルのディレクトリが存在しません。 正しいディレクトリを設定して下さい。 - + Language Changed 言語が設定されました。 - + You have changed application language to %1. Please restart PokerTH to load new language! アプリケーションの言語が %1 に変更されました。 PokerTH を再起動して設定を適応して下さい。 - + Select your flipside picture カード裏面画像を選択 - + Images (*.png *.jpg *.gif) 画像 (*.png *.jpg *.gif) - + Open Directory ディレクトリを開く - - + + Blinds Error ブラインドエラー - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -4957,290 +5026,290 @@ This first-small-blind-value will be set to maximum allowed value. この最初のブラインドの値は最大値になります。 - + The entered server list address is not a valid URL. Please enter a valid server list address! 入力されたサーバーリストアドレスは不正な URL です。 正しいサーバーリストアドレスを入力して下さい。 - + Afrikaans - + Bulgarian - + Catalan - + Chinese - + Czech - + Danish - + Dutch - + English - + Finnish - + French - + Galician - + German - + Greek - + Hungarian - + Italian - + Japanese - + Lithuania - + Norwegian - + Polish - + Portuguese-Brazilian - + Portuguese-Portuguese - + Russian - + Scottish Gaelic - + Slovak - + Spanish - + Swedish - + Tamil - + Turkish - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name 作者名 - - + + Maintainer EMail 作者のE-mail - - + + Create Date 作成日 - + Windows Behaviour ウインドウの性質 - + scaleable 可変 - + fixed 固定 - + Minimum Size 最小サイズ - + Maximum Size 最大サイズ - + Fixed Size 固定サイズ - + State 状態 - + Please select your game table style ゲームテーブルスタイルを選択して下さい - + PokerTH game table styles (*.xml) PokerTH ゲームテーブルスタイル (*.xml) - + Game Table Style Error ゲームテーブルスタイルエラー - + Selected game table style file is already in the list. Please select another one to add! 選択されたゲームテーブルスタイルは既にリストに追加されています。 追加するには別のゲームテーブルスタイルを選択して下さい。 - + Game Table Style File Error ゲームテーブルスタイルファイルエラー - + Could not load game table style file correctly. Style will not be placed into list! ゲームテーブルスタイルファイルが正しく読み込めません。 スタイルはリストに追加されませんでした。 - + Please select your card deck style カードデッキスタイルを選択して下さい。 - + PokerTH card deck styles (*.xml) PokerTH カードデッキスタイル (*.xml) - + Card Deck Style Error カードデッキスタイルエラー - + Selected card deck style file is already in the list. Please select another one to add! 選択されたカードデッキスタイルは既にリストに追加されています。 追加するには別のカードデッキスタイルを選択して下さい。 - + Card Deck Style File Error カードデッキスタイルファイルエラー - + Could not load card deck style file correctly. Style will not be placed into list! カードデッキスタイルファイルが正しく読み込めません。 @@ -5259,12 +5328,12 @@ Style will not be placed into list! PokerTH ログファイルを保存 - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5329,12 +5398,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error サーバーエラー - + You should not kick yourself from this game! 自分自身をゲームから kick することはできません。 diff --git a/ts/pokerth_lt.ts b/ts/pokerth_lt.ts index aa93873b..3fcbbfb0 100644 --- a/ts/pokerth_lt.ts +++ b/ts/pokerth_lt.ts @@ -303,106 +303,106 @@ Prašome pasirinkti žaidimo stalo stilių ir bandyti dar kartą! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file Išsaugoti PokerTH žurnalo failą - + PokerTH SQL log (*.pdb) PokerTH SQL žurnalas (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -426,22 +426,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar Pranešti apie netinkamą avataro paveikslėlį - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Jūs daugiau nebegausite pokalbio žinučių ar kvietimų žaisti iš šio naudotojo.<br>Ar tikrai norite patalpinti žaidėją <b>%1</b> į ignoravimo sąrašą? - - + + + PokerTH - Question PokerTH - klausimas - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? Ar tikrai norite pranešti apie „%1“ paveikslėlį, kaip netinkamą? @@ -948,127 +986,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Apie PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -1185,12 +1223,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Rankinių statymų tvarka - + You cannot set more than 30 manual blinds. Jūs negalite nustatyti daugiau nei 30 rankinių statymų. @@ -1224,40 +1262,40 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Jūs negalite jungtsi prie Interneto-Žaidimo-Fojė su "Žmogus žaidėjas" slapyvardžiu. Prašome pasirinkti kitą. - - - + + + Nick name: Slapyvardžio pavadinimas: - + Your player name is already used by another player. Please choose a different name. Jūsų žaidėjo vardas jau yra naudojamas kito žaidėjo. Prašome pasirinkti kitą vardą. - + The player name is too short, too long or invalid. Please choose another one. Žaidėjo vardas yra per trumpas, per ilgas arba netinkamas. Prašome pasirinkti kitą. - + There is already a game with your chosen game name. Please choose another one! Jau yra žaidimas su Jūsų pasirinktu žaidimo pavadinimu. Prašome pasirinkti kitą! - + There is a forbidden word in your chosen game name. Please choose another one! Yra draudžiamas žodis Jūsų pasirinktame žaidimo pavadinime. @@ -1270,8 +1308,8 @@ Please choose another one! Prašome pasirinkti kitą! - - + + Game name: Žaidimo pavadinimas: @@ -1305,27 +1343,27 @@ Prašome pasirinkti kitą! connectToServerDialogImpl - + Resolving address... Nustatomas adresas... - + Connecting to server... Prisijungiama prie serverio ... - + Starting session... Pradedama sesija... - + Connection established! Ryšys užmegztas! - + Reading server list... Skaitomas serverio sąrašas... @@ -1472,7 +1510,7 @@ Prašome pasirinkti kitą! <i>Dvigubas statymas kiekvieną %1 ranką</i> - + %1's game %1 žaidimas @@ -1790,51 +1828,51 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... Pradedamas žaidimas. Prašome palaukti ... - + Joining a private Game Jungiamasi prie privataus žaidimo - + You are about to join a private game. Please enter the password! Jūs esate čia, kad prisijungtumėte prie privataus žaidimo. Prašome įrašyti slaptažodį! - + open atviras - - - - + + + + Game Info Žaidimo informacija - - + + Game Žaidimas - - + + Players Žaidėjai - - + + State Būsena @@ -1844,15 +1882,15 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Available Players Pasiekiami žaidėjai @@ -1868,34 +1906,39 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Žaidėjo informacija ... - - - + + + Standard Standartinis - - - + + + Registered players only Tik užsiregistravę žaidėjai - - - + + + Invited players only Tik pakviesti žaidėjai - - - + + + Ranking game Žaidimas dėl reitingų @@ -1905,27 +1948,27 @@ p, li { white-space: pre-wrap; } - - + + T T - + Report inappropriate game name - - - + + + sec (action) - - - + + + sec (hand delay) @@ -1934,32 +1977,32 @@ p, li { white-space: pre-wrap; } Prisijungusių vartotojų - Max. %1 - + running vykdoma - - + + running games: %1 vyksta žaidimų: %1 - - + + open games: %1 atviri žaidimai: %1 - - + + Players (%1) - - - + + + Spectators (%1) @@ -1969,95 +2012,95 @@ p, li { white-space: pre-wrap; } Pakviesti %1 - + Ignore %1 Ignoruoti %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 buvo pakviestas į %2 nuo %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 atmetė pakvietimą į %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 negali jungtis %2, nes yra užimta(s).</span> - + The game will start in<br><b>%1</b> seconds. Žaidimas prasidės po<br><b>%1</b> sekundžių. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Jūs atsidūrėte žaidimo su "tik su pakvietimais" tipu. Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant jų slapyvardžių prieinamame žaidėjų sąraše. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Jūs buvote pakviestas į žaidimą <b>%1</b> nuo <b>%2</b>.<br>Ar norite jungtis prie žaidimo? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Jūs nebegausite daugiau pokalbio žinučių arba žaidimo pakvietimų iš šio naudotojo.<br>Ar tikrai norite patalpinti žaidėją <b>%1</b> į ignoravimo sąrašą? - - + + connected players: %1 prisijungę žaidėjai: %1 - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - + Spectate - - + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game @@ -2066,42 +2109,42 @@ Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant j Prisijungę žaidėjai - + hands rankos - + minutes minutės - + double blinds dvigubi statymai - + manual blinds order rankinių statymų tvarka - + Server Error Serverio klaida - + You should not kick yourself from this game! Jūs negalėsite išmesti savęs iš šio žaidimo! - + search for player ... ieškoti žaidėjo ... - + Chat is only available to registered players. Pokalbis yra prieinamas tik užsiregistravusiems žaidėjams. @@ -2111,1263 +2154,1279 @@ Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant j Pakviesti žaidėją ... - + Ignore player ... Ignoruoti žaidėją ... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 žaidžia "%2". - + %1 is not playing at the moment. %1 šiuo metu nežaidžia. - - + + PokerTH - Info Message PokerTH - Informacinė žinutė - - + + - + + PokerTH - Question PokerTH - Klausimas - - Afghanistan - - - - - ALand Islands - - - - - Albania - - - - - Algeria - - - - - American Samoa - - - - - Andorra - - - - - Angola - - - - - Anguilla - - - - - Antarctica - - - - - Antigua And Barbuda - - - - - Argentina - - - - - Armenia - - - - - Aruba - - - - - Australia - - - - - Austria - - - - - Azerbaijan - - - - - Bahamas + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? - Bahrain + Afghanistan - Bangladesh + ALand Islands - Barbados + Albania - Belarus + Algeria - Belgium + American Samoa - Belize + Andorra - Benin + Angola - Bermuda + Anguilla - Bhutan + Antarctica - Bolivia + Antigua And Barbuda - Bosnia And Herzegovina + Argentina - Botswana + Armenia - Bouvet Island + Aruba - Brazil + Australia - British Indian Ocean Territory + Austria - Brunei Darussalam + Azerbaijan - Bulgaria + Bahamas - Burkina Faso + Bahrain - Burundi + Bangladesh - Cambodia + Barbados - Cameroon + Belarus - Canada + Belgium - Cape Verde + Belize - Cayman Islands + Benin - Central African Republic + Bermuda - Chad + Bhutan - Chile + Bolivia - China + Bosnia And Herzegovina - Christmas Island + Botswana - Cocos (Keeling) Islands + Bouvet Island - Colombia + Brazil - Comoros + British Indian Ocean Territory - Congo + Brunei Darussalam - Congo, The Democratic Republic Of The + Bulgaria - Cook Islands + Burkina Faso - Costa Rica + Burundi - Cote D'Ivoire + Cambodia - Croatia + Cameroon - Cuba + Canada - Cyprus + Cape Verde - Czech Republic + Cayman Islands - Denmark + Central African Republic - Djibouti + Chad - Dominica + Chile - Dominican Republic + China - Ecuador + Christmas Island - Egypt + Cocos (Keeling) Islands - El Salvador + Colombia - Equatorial Guinea + Comoros - Eritrea + Congo - Estonia + Congo, The Democratic Republic Of The - Ethiopia + Cook Islands - Falkland Islands (Malvinas) + Costa Rica - Faroe Islands + Cote D'Ivoire - Fiji + Croatia - Finland + Cuba - France + Cyprus - French Guiana + Czech Republic - French Polynesia + Denmark - French Southern Territories + Djibouti - Gabon + Dominica - Gambia + Dominican Republic - Georgia + Ecuador - Germany + Egypt - Ghana + El Salvador - Gibraltar + Equatorial Guinea - Greece + Eritrea - Greenland + Estonia - Grenada + Ethiopia - Guadeloupe + Falkland Islands (Malvinas) - Guam + Faroe Islands - Guatemala + Fiji - Guernsey + Finland - Guinea + France - Guinea-Bissau + French Guiana - Guyana + French Polynesia - Haiti + French Southern Territories - Heard Island And Mcdonald Islands + Gabon - Holy See (Vatican City State) + Gambia - Honduras + Georgia - Hong Kong + Germany - Hungary + Ghana - Iceland + Gibraltar - India + Greece - Indonesia + Greenland - Iran, Islamic Republic Of + Grenada - Iraq + Guadeloupe - Ireland + Guam - Isle Of Man + Guatemala - Israel + Guernsey - Italy + Guinea - Jamaica + Guinea-Bissau - Japan + Guyana - Jersey + Haiti - Jordan + Heard Island And Mcdonald Islands - Kazakhstan + Holy See (Vatican City State) - Kenya + Honduras - Kiribati + Hong Kong - Korea, Democratic People'S Republic Of + Hungary - Korea, Republic Of + Iceland - Kuwait + India - Kyrgyzstan + Indonesia - Lao People'S Democratic Republic + Iran, Islamic Republic Of - Latvia + Iraq - Lebanon + Ireland - Lesotho + Isle Of Man - Liberia + Israel - Libyan Arab Jamahiriya + Italy - Liechtenstein + Jamaica - Lithuania - Lietuvių + Japan + - Luxembourg + Jersey - Macao + Jordan - Macedonia, The Former Yugoslav Republic Of + Kazakhstan - Madagascar + Kenya - Malawi + Kiribati - Malaysia + Korea, Democratic People'S Republic Of - Maldives + Korea, Republic Of - Mali + Kuwait - Malta + Kyrgyzstan - Marshall Islands + Lao People'S Democratic Republic - Martinique + Latvia - Mauritania + Lebanon - Mauritius + Lesotho - Mayotte + Liberia - Mexico + Libyan Arab Jamahiriya - Micronesia, Federated States Of + Liechtenstein - Moldova, Republic Of - + Lithuania + Lietuvių - Monaco + Luxembourg - Mongolia + Macao - Montserrat + Macedonia, The Former Yugoslav Republic Of - Morocco + Madagascar - Mozambique + Malawi - Myanmar + Malaysia - Namibia + Maldives - Nauru + Mali - Nepal + Malta - Netherlands + Marshall Islands - Netherlands Antilles + Martinique - New Caledonia + Mauritania - New Zealand + Mauritius - Nicaragua + Mayotte - Niger + Mexico - Nigeria + Micronesia, Federated States Of - Niue + Moldova, Republic Of - Norfolk Island + Monaco - Northern Mariana Islands + Mongolia - Norway + Montserrat - Oman + Morocco - Pakistan + Mozambique - Palau + Myanmar - Palestinian Territory, Occupied + Namibia - Panama + Nauru - Papua New Guinea + Nepal - Paraguay + Netherlands - Peru + Netherlands Antilles - Philippines + New Caledonia - Pitcairn + New Zealand - Poland + Nicaragua - Portugal + Niger - Puerto Rico + Nigeria - Qatar + Niue - Reunion + Norfolk Island - Romania + Northern Mariana Islands - Russian Federation + Norway - Rwanda + Oman - Saint Helena + Pakistan - Saint Kitts And Nevis + Palau - Saint Lucia + Palestinian Territory, Occupied - Saint Pierre And Miquelon + Panama - Saint Vincent And The Grenadines + Papua New Guinea - Samoa + Paraguay - San Marino + Peru - Sao Tome And Principe + Philippines - Saudi Arabia + Pitcairn - Senegal + Poland - Serbia And Montenegro + Portugal - Seychelles + Puerto Rico - Sierra Leone + Qatar - Singapore + Reunion - Slovakia + Romania - Slovenia + Russian Federation - Solomon Islands + Rwanda - Somalia + Saint Helena - South Africa + Saint Kitts And Nevis - South Georgia And The South Sandwich Islands + Saint Lucia - Spain + Saint Pierre And Miquelon - Sri Lanka + Saint Vincent And The Grenadines - Sudan + Samoa - Suriname + San Marino - Svalbard And Jan Mayen + Sao Tome And Principe - Swaziland + Saudi Arabia - Sweden + Senegal - Switzerland + Serbia And Montenegro - Syrian Arab Republic + Seychelles - Taiwan, Province Of China + Sierra Leone - Tajikistan + Singapore - Tanzania, United Republic Of + Slovakia - Thailand + Slovenia - Timor-Leste + Solomon Islands - Togo + Somalia - Tokelau + South Africa - Tonga + South Georgia And The South Sandwich Islands - Trinidad And Tobago + Spain - Tunisia + Sri Lanka - Turkey + Sudan - Turkmenistan + Suriname - Turks And Caicos Islands + Svalbard And Jan Mayen - Tuvalu + Swaziland - Uganda + Sweden - Ukraine + Switzerland - United Arab Emirates + Syrian Arab Republic - United Kingdom + Taiwan, Province Of China - United States + Tajikistan - United States Minor Outlying Islands + Tanzania, United Republic Of - Uruguay + Thailand - Uzbekistan + Timor-Leste - Vanuatu + Togo - Venezuela + Tokelau - Viet Nam + Tonga - Virgin Islands, British + Trinidad And Tobago - Virgin Islands, U.S. + Tunisia - Wallis And Futuna + Turkey - Western Sahara + Turkmenistan - Yemen + Turks And Caicos Islands - Zambia + Tuvalu + Uganda + + + + + Ukraine + + + + + United Arab Emirates + + + + + United Kingdom + + + + + United States + + + + + United States Minor Outlying Islands + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Viet Nam + + + + + Virgin Islands, British + + + + + Virgin Islands, U.S. + + + + + Wallis And Futuna + + + + + Western Sahara + + + + + Yemen + + + + + Zambia + + + + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3654,99 +3713,99 @@ Nesivaržykite pakviesti kitus žaidėjus spragtelėdami dešinį mygtuką ant j gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stabdyti - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - atviro kodo Texas Holdem varikliukas - - - - - - - - + + + + + + + + Start Pradėti - - - - - + + + + + Lobby Fojė - - + + Chat Pokalbis - + Closing PokerTH during network game Uždaromas PokerTH per tinklo žaidimą - + You are the hosting server. Do you want to close PokerTH anyway? Jūs esate prieglobos serveris. Ar norite vistiek uždaryti PokerTH? - + Really want to exit? Ar tikrai norite išeiti? - + PokerTH - Close Table? PokerTH - užverti lentelę? - + PokerTH - Internet Game Message PokerTH - žaidimo internetu žinutė - + Attention! Do you really want to leave the current game and go back to the lobby? Dėmesio! Ar tikrai norite palikti esamą žaidimą ir grįžti į fojė? + - Chat is only available to registered players. Pokalbis yra prieinamas tik užsiregistravusiems žaidėjams. - + Spectators @@ -3765,50 +3824,50 @@ Po %1 papildomo skirtojo laiko, reikia serveriui pašalinti Jus, kad užtikrint Jei esate laikinai atsitraukęs, galite panaudoti "išėjęs" priemonę, priemonių komplekte, kuris yra dešinėje. - - + + Chance Keisti - - + + Kick Pašalinti - - + + Do you want to kick <b>%1</b><br>from this game? Ar norite pašalinti <b>%1</b><br>iš šio žaidimo? - - - - + + + + <b>%1</b> secs left <b>%1</b> sek. liko - + vote balsavimas - + votes balsai - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Žaidėjas <b>%1</b> yra <b>%2</b> %3<br>prieš jį. <b>%4</b> balso ar balsų reikia pašalinimui. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Jūs turite <b>%1</b> %2 prieš tave.<br><b>%3</b> balso ar balsų reikia pašalinimui. @@ -3884,7 +3943,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account @@ -4025,10 +4084,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Serverio įkėlimas-Profilis-Failo klaida @@ -4039,45 +4098,45 @@ p, li { white-space: pre-wrap; } - - - - + + + + Could not load server-profiles-file: %1 - + Save Server Profile Error Įrašyto serverio profilio klaida - + A profile with the name: %1 already exists. Would you like to overwrite ? Profilis su tokiu vardu: %1 jau egistuoja. Galbūt norėtumėte pakeisti ? - + Read Server-Profile List Error Skaitomo serverio-Profilio sąrašo klaida - + Could not read server-profiles list Nepavyksta skaityti serverio-profilių sąrašo - - + + Save Server-Profile-File Error Serverio įrašymas-Profilis-Failo klaida - - + + Could not save server-profiles-file: %1 @@ -4150,12 +4209,12 @@ Galbūt norėtumėte pakeisti ? manualBlindsOrderDialogImpl - + Manual Blinds Order Rankinių statymų tvarka - + You cannot set more than 30 manual blinds. Jūs negalite nustatyti daugiau nei 30 rankinių statymų. @@ -4278,38 +4337,38 @@ Galbūt norėtumėte pakeisti ? selectAvatarDialogImpl - - - + + + Avatar File Error Avataro failo klaida - + Please select an avatar from the list! Prašome pasirinkti avatarą iš sąrašo! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Failo dydis pasirinkto paveikslėlio yra per didelis. (max. 30KB) Prašome pasirinkti mažesnį paveikslėlį! - + The entered avatar picture doesn't exist. Please enter an valid picture! Įvestas avataro paveikslėlis neegzistuoja. Prašome įvesti galiojantį paveikslėlį! - + Select external avatar picture Pasirinkti išorinį avataro paveikslėlį - + Images (*.png *.jpg *.gif) Paveikslėliai (*.png *.jpg *.gif) @@ -4371,7 +4430,7 @@ Prašome įvesti galiojantį paveikslėlį! Tinklo / interneto žaidimas - + Switch keyboard focus to bet-input-field if it's your turn Perjungti klaviatūros židinį į statymo-įvedimo-lauką, jei yra Jūsų ėjimas @@ -4379,14 +4438,14 @@ Prašome įvesti galiojantį paveikslėlį! - + Sound Garsas - + Factory Settings @@ -4403,292 +4462,297 @@ Prašome įvesti galiojantį paveikslėlį! Išjungti ekrano užsklandą sistemos paleidime - + Show country flag in the corner of avatar Rodyti šalies vėliavą avataro kampe - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Game Table Žaidimo stalas - - - - + + + + Description Aprašymas - - - - + + + + Maintainer Prižiūrėtojas - - - + + + State Būsena - - + + Card Deck Kortų kaladė - - + + Card Back Kortos nugarėlė - - + + Use card back from card style Naudoti kortos nugarėlę iš kortos stiliaus - - + + Use custom card back picture: Naudoti savitą kortos nugarėlės paveikslėlį: - - + + Play sound effects Leisti garso efektus - - + + Sound Volume: Garso lygis: - - + + 10 10 - - + + Sound Categories Garso kategorijos - - + + Play game actions sounds like "check", "call", "raise" Leisti žaidimo veiksmo garsus, panašius į "tikrinti", "atsakyti", "didinti" - - + + Play lobby chat notifications Leistii fojė pokalbio pranešimus - - + + Play network/internet game notifications like "player joined the game" Leisti tinklo/interneto žaidimo pranešimus, panašius į "žaidėjas prisijungęs prie žaidimo" - - + + Server Password: - - + + Allow spectators to watch the game - + OK - + Local Game Settings Vietinio žaidimo nuostatos - - + + Number of players: Žaidėjų skaičius: - - - - + + + + Start Cash: Pradinis statymas: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Pirmasis mažasis statymas: - - - - + + + + Raise blinds: Didinti statymus: - - - - - - - - + + + + + + + + Every: Po kiekvienos: - - - - + + + + hands rankos - - - - + + + + minutes minutės - - - - + + + + Raise mode: Didinimo būsena: - - - - + + + + Always double blinds Visuomet dvigubinti statymus - - - - + + + + Manual blinds order: Rankinių statymų tvarka: - - - - + + + + Edit ... Taisyti ... - - + + Game Speed: Žaidimo greitis: - - + + Pause between hands (press "start" button to go on) Pauzė tarp rankų (spauskite "pradėti" mygtuką, kad tęstumėte) - - + + Show game settings dialog on every new game Rodyti žaidimo nuostatų dialogo langą per kiekvieną naują žaidimą - + Network Game Settings Tinklo žaidimo nuostatos - - + + Maximum number of players: Didžiausias žaidėjų skaičius: - - + + Timeout for player action: Pertraukėlė žaidėjo veiksmui atlikti: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4713,66 +4777,71 @@ Prašome įvesti galiojantį paveikslėlį! Žurnalo failas - - - - + + + + s s - - + + Network Server Settings Tinklo serverio nuostatos - - - - + + + + Server Port: Serverio prievadas: - - - - - - Use SCTP - Naudoti SCTP - - - - - - - Use IPv6 - Naudoti IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">Kas tai?</a> - + Use SCTP + Naudoti SCTP + + + + + + + Use IPv6 + Naudoti IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">Kas tai?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Kas tai?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings Žaidimo internetu nuostatos - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4783,61 +4852,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Pastaba: Numatytosios </span><span style=" font-weight:600; font-style:italic;">Žaidimo nuostatos</span><span style=" font-style:italic;">, panašios į "Didžiausias žaidėjų skaičius", "Pradiniai pinigai" ir "Mažasis statymas" bus naudojamos </span><span style=" font-weight:600; font-style:italic;">iš tinklo žaidimo nuostatų.</span></p></body></html> - - + + Server Address: Serverio adresas: - - + + Use password for private game: Naudoti slaptažodį privačiam žaidimui: - - + + Computer Engine Kompiuterio varikliukas - - + + Opponent 6: Priešininkas 6: - - + + Opponent 5: Priešininkas 5: - - + + Opponent 4: Priešininkas 4: - - + + Opponent 3: Priešininkas 3: - - + + Opponent 2: Priešininkas 2: - - + + Opponent 1: Priešininkas 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4848,8 +4917,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Pastaba: Geriausia avataro kokybė su paveikslėlio koeficientu, panašiu į </span><span style=" font-weight:600; font-style:italic;">plotis=50, aukštis=50.</span></p></body></html> - - + + Enable/Disable Logging Įjungti/Išjungti prisijungimą @@ -4858,44 +4927,44 @@ p, li { white-space: pre-wrap; } Žurnalo failo atmintinė - - + + Log File Directory: Žurnalo failo katalogas: - - + + Write log after every: Įrašyti žurnalą po kiekvieno: - - + + action (high frequent disc access) veiksmo (disko prieigos aukštas dažnis) - - + + hand (medium disc access) rankos (vidutinė disko prieiga) - - + + game (low disc access) žaidimo (žema disko prieiga) - + Log Messages Žurnalo žinutės - + Player Nicks/Avatars Žaidėjo slapyvardžiai/avatarai @@ -4910,53 +4979,53 @@ p, li { white-space: pre-wrap; } Rodyti kairįjį priemonių komplektą - - + + Play blind raise notification - - + + Automatic Server Configuration URL Automatinė serverio konfigūracija URL - - + + Serverlist Address: Serverio sąrašo adresas: - - + + Manual Server Configuration Rankinė serverio konfigūracija - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) Diena(os) @@ -4991,20 +5060,20 @@ p, li { white-space: pre-wrap; } Rodyti kortų parodymo galimybę - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: Avataro serveris: - + Style Stilius @@ -5014,33 +5083,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style Nėra verčiamos pokerio eilutės, panašios į tikrinti, atsakyti, didinti iš žaidimo stalo stiliaus - - - - - - Add ... - Pridėti ... - + Add ... + Pridėti ... + + + + + + Remove Pašalinti - - - - + + + + Preview - Information: Peržiūra - Informacija: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5053,8 +5122,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Gauti naujus PokerTH žaidimo stalo stilius ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5067,7 +5136,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Gauti naujus PokerTH kortų kaladžių stilius ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5086,96 +5155,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Pastaba: Geriausios kokybės su paveikslėlio koeficientu, panašiu į </span><span style=" font-weight:600; font-style:italic;">plotis=48, aukštis=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Delsti tarp rankų: - - + + Server Serveris - - + + Game Žaidimas - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Numatytas žaidimo pavadinimas: - - + + Default game type: Numatytas žaidimo tipas: - - + + Standard Standartinis - - + + Registered players only Tik užsiregistravę žaidėjai - - + + Invited players only Tik pakviesti žaidėjai - - + + Ranking game Žaidimas dėl reitingų - + Show lobby chat Rodyti fojė pokalbius - - + + Automatically leave the table after the game finished - - + + Ignored Players Ignoruojami žaidėjai - - + + Player Žaidėjas - - + + Remove Player Pašalinti žaidėją - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5188,20 +5257,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Žmogus žaidėjas:<br /><span style=" font-style:italic;">(Šis slapyvardis taip pat bus naudojamas internetinio žaidimo prisijungimui)</span></p></body></html> - - + + Opponent 7: Priešininkas 7: - - + + Opponent 8: Priešininkas 8: - - + + Opponent 9: Priešininkas 9: @@ -5209,135 +5278,135 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - + Dutch Olandų - + English Anglų - + French Prancūzų - + German Vokiečių - + Hungarian Vengrų - + Italian Italų - + Lithuania Lietuvių - + Norwegian Norvegų - + Portuguese-Brazilian Portugalų-Brazilų - + Portuguese-Portuguese Portugalų-Portugalų - + Russian Rusų - + Slovak Slovakų - + Spanish Ispanų - + Turkish Turkų - - - - - + + + + + Settings Error Nuostatų klaida - + The entered flipside picture doesn't exist. Please enter an valid picture! Įvesta atvirkštinė paveikslėlio pusė neegzistuoja. Prašome įvesti galiojantį paveikslėlį! - - + + The log file directory doesn't exist. Please select an valid directory! Žurnalo failo katalogas neegzistuoja. Prašome pasirinkti galiojantį katalogą! - + Language Changed Kalba pakeista - + You have changed application language to %1. Please restart PokerTH to load new language! Jūs pakeitėte programos kalbą į %1. Prašome perkrauti PokerTH, kad įkeltumėte naują kalbą! - + Select your flipside picture Pasirinkite paveikslėlio atvirkštinę pusę - + Images (*.png *.jpg *.gif) Paveikslėliai (*.png *.jpg *.gif) - + Open Directory Atverti katalogą - - + + Blinds Error Statymų klaida - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5346,220 +5415,220 @@ yra mažesnis už esamą pirmąjį-mažajį-statymą! Ši pirma-mažojo-statymo-rekšmė bus nustatyta iki didžiausios leidžiamos rekšmės. - + Bulgarian Bulgarų - + Polish Lenkų - + Chinese Kinų - + Greek Graikų - + Swedish Švedų - + The entered server list address is not a valid URL. Please enter a valid server list address! Įvestas serverio sąrašo adresas nėra galiojantis URL. Prašome įvesti galiojantį serverio sąrašo adresą! - + Finnish Suomių - + Afrikaans Afrikansų - + Catalan Katalonų - + Czech Čekiškų - + Danish Danų - + Galician - + Japanese - + Scottish Gaelic - + Tamil Tamilų - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Prižiūrėtojo vardas - - + + Maintainer EMail Prižiūrėtojo el.paštas - - + + Create Date Sukūrimo data - + Windows Behaviour Langų elgsena - + scaleable išplečiamas - + fixed fiksuotas - + Minimum Size Mažiausias dydis - + Maximum Size Didžiausias dydis - + Fixed Size Fiksuotas dydis - + State Būsena - + Please select your game table style Prašome pasirinkti savo žaidimo stalo stilių - + PokerTH game table styles (*.xml) PokerTH žaidimo stalo stiliai (*.xml) - + Game Table Style Error Žaidimo stalo stiliaus klaida - + Selected game table style file is already in the list. Please select another one to add! Pasirinktas žaidimo stalo stiliaus failas jau yra sąraše. Prašome pasirinkti kitą! - + Game Table Style File Error Žaidimo stalo stiliaus failo klaida - + Could not load game table style file correctly. Style will not be placed into list! Nepavyko įkelti žaidimo stalo stiliaus failo teisingai. Stilius nebus įkeltas į sąrašą! - + Please select your card deck style Prašome pasirinkti savo kortų kaladės stilių - + PokerTH card deck styles (*.xml) PokerTH kortų kaladės stiliai (*.xml) - + Card Deck Style Error Kortų kaladės stiliaus klaida - + Selected card deck style file is already in the list. Please select another one to add! Pasirinktas kortų kaladės stiliaus failas jau yra sąraše. Prašome pasirinkti kitą! - + Card Deck Style File Error Kortų kaladės stiliaus failo klaida - + Could not load card deck style file correctly. Style will not be placed into list! Nepavyko įkelti kortų kaladės stiliaus failo teisingai. @@ -5582,12 +5651,12 @@ Stilius nebus įkeltas į sąrašą! PokerTH SQL žurnalas (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5660,12 +5729,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Serverio klaida - + You should not kick yourself from this game! Jūs negalėsite išmesti savęs iš šio žaidimo! diff --git a/ts/pokerth_nl.ts b/ts/pokerth_nl.ts index add35746..ecd5209c 100644 --- a/ts/pokerth_nl.ts +++ b/ts/pokerth_nl.ts @@ -421,106 +421,106 @@ De maker van de stijl is te bereiken via %3. - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file PokerTH-logbestand opslaan - + PokerTH SQL log (*.pdb) PokerTH SQL-logbestand (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -552,22 +552,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Er zullen geen chatberichten of speluitnodigingen meer worden ontvangen van deze gebruiker. <br>Speler <b>%1</b> werkelijk op de lijst Genegeerde spelers zetten? - - + + + PokerTH - Question PokerTH - Vraag - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -2467,127 +2505,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Info over PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -2716,12 +2754,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Eigen lijst met blinds - + You cannot set more than 30 manual blinds. Er kunnen maximaal 30 blinds worden ingevoerd. @@ -2755,39 +2793,39 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. U kunt met de standaardnaam geen verbinding maken met de lobby van het internetspel. Kies een andere naam. - - - + + + Nick name: Spelersnaam: - + Your player name is already used by another player. Please choose a different name. Uw spelersnaam is al in gebruik door een andere speler. Kies een andere naam. - + The player name is too short, too long or invalid. Please choose another one. De spelersnaam is te kort, te lang of ongeldig. Kies een andere naam. - + There is already a game with your chosen game name. Please choose another one! - + There is a forbidden word in your chosen game name. Please choose another one! @@ -2799,8 +2837,8 @@ Please choose another one! Kies een andere naam. - - + + Game name: Naam van spel: @@ -2845,27 +2883,27 @@ Kies een andere naam. connectToServerDialogImpl - + Resolving address... Adres opzoeken... - + Connecting to server... Verbinding maken met de server ... - + Starting session... Sessie starten... - + Connection established! Er is verbinding gemaakt. - + Reading server list... Serverlijst lezen... @@ -3036,7 +3074,7 @@ Kies een andere naam. <i>Blinds verdubbelen na %1 hand(en)</i> - + %1's game Spel van %1 @@ -3524,20 +3562,20 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info Info over spel - + Server Error Serverfout - + You should not kick yourself from this game! U mag zichzelf niet uit dit spel verwijderen. @@ -3551,15 +3589,15 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Available Players Aanwezige spelers @@ -3575,39 +3613,44 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Spelersinfo ... - + Report inappropriate game name - - - + + + Standard Standaard - - - + + + Registered players only Alleen geregistreerde spelers - - - + + + Invited players only Alleen uitgenodigde spelers - - - + + + Ranking game Spel voor ranking @@ -3616,77 +3659,77 @@ p, li { white-space: pre-wrap; } Spelers met verbinding - max. %1 - - - + + + sec (action) - - - + + + sec (hand delay) - + Joining a private Game Meedoen met een privéspel - + You are about to join a private game. Please enter the password! U wilt meedoen met een privéspel. Voer het wachtwoord in. - - + + T T - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - + Spectate - - + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game @@ -3695,12 +3738,12 @@ p, li { white-space: pre-wrap; } Spelers met verbinding - max. %1 - + running bezig - + open open @@ -3709,32 +3752,32 @@ p, li { white-space: pre-wrap; } Spelers met verbinding - + hands hand(en) - + minutes min. - + double blinds verdubbelen - + manual blinds order eigen lijst - + search for player ... Speler zoeken ... - + Chat is only available to registered players. Alleen geregistreerde spelers kunnen chatten. @@ -3744,1270 +3787,1285 @@ p, li { white-space: pre-wrap; } %1 uitnodigen - + Ignore %1 %1 negeren + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 speelt in "%2". - + %1 is not playing at the moment. %1 speelt momenteel niet. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 is uitgenodigd voor %2 door %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 heeft de uitnodiging voor %2 afgeslagen.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 is bezig en kan niet meedoen met %2.</span> - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + The game will start in<br><b>%1</b> seconds. Het spel begint over<br><b>%1</b> seconden. - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Litouws - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -5017,77 +5075,78 @@ p, li { white-space: pre-wrap; } Speler uitnodigen ... - - + + Players (%1) - - - + + + Spectators (%1) - + Ignore player ... Speler negeren ... - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Er wordt meegedaan aan een spel van het type "alleen op uitnodiging". Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de lijst Aanwezige spelers. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Uitnodiging ontvanger van <b>%2</b> voor spel <b>%1</b>.<br>Meedoen met dit spel? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Er zullen geen chatberichten of speluitnodigingen meer worden ontvangen van deze gebruiker. <br>Speler <b>%1</b> werkelijk op de lijst Genegeerde spelers zetten? - - + + PokerTH - Info Message PokerTH - Infobericht - - + + - + + PokerTH - Question PokerTH - Vraag - + Starting game. Please wait ... Spel starten. Een ogenblik geduld ... - - + + Game Spel - - + + Players Spelers - - + + State Status @@ -5096,14 +5155,14 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de Privé - - + + running games: %1 %1 spel(len) bezig - - + + open games: %1 %1 open spel(len) @@ -5112,8 +5171,8 @@ Andere spelers kunnen worden uitgenodigd door op hun naam te rechtsklikken in de %1 speler(s) in de chat - - + + connected players: %1 %1 speler(s) met verbinding @@ -5578,31 +5637,31 @@ Kies een andere naam. Cmd+N om een nieuw spel te starten - - - - - - - - + + + + + + + + Start Start - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop @@ -5665,8 +5724,8 @@ Als de server zich achter een NAT-router bevindt, controleer dan daar of port fo F1 - Betten/Raisen | F2 - Checken/Callen | F3 - Folden/All-In - - + + Chat Chat @@ -5750,12 +5809,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Deze bètarelease van PokerTH is te oud.Ga naar <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> en download de nieuwste versie. - + Closing PokerTH during network game PokerTH afsluiten tijdens netwerkspel - + You are the hosting server. Do you want to close PokerTH anyway? U bent de server van dit spel. Wilt u PokerTH toch sluiten? @@ -5772,28 +5831,28 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Deze bètarelease van PokerTH is te oud.<br>Ga naar <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/</a> en download de nieuwste versie. - - - - - + + + + + Lobby Lobby - + PokerTH - Internet Game Message PokerTH - Bericht van internetspel - + Attention! Do you really want to leave the current game and go back to the lobby? Opgelet! Wilt u werkelijk het huidige spel verlaten en teruggaan naar de lobby? - + PokerTH %1 - The Open-Source Texas Holdem Engine PokertTH %1 - De Open-Source Texas Hold'em-simulator @@ -5856,64 +5915,64 @@ Zorg ervoor dat u een directe verbinding met internet hebt. Kan het doelbestand niet openen bij het downloaden van de serverlijst. - + PokerTH %1 PokerTH %1 - - + + Chance Kansen - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Verwijderen - - + + Do you want to kick <b>%1</b><br>from this game? Wilt u <b>%1</b><br>uit dit spel verwijderen? - - - - + + + + <b>%1</b> secs left nog <b>%1</b> sec. - + vote stem - + votes stemmen + - Chat is only available to registered players. Alleen geregistreerde spelers kunnen chatten. - + Spectators @@ -5940,14 +5999,14 @@ Als u tijdelijk afwezig bent, kunt u de hulpmiddelen gebruiken in de toolbox Afw U heeft <b>%1</b> %2 tegen zich.<br><b>%3</b> stemmen zijn nodig voor verwijdering. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. <b>%2</b> %3 uitgebracht tegen <b>%1</b>.<br>Nog <b>%4</b> stem(men) nodig voor verwijderen. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. U heeft <b>%1</b> %2 tegen zich.<br> Nog <b>%3</b> stem(men) nodig voor verwijderen. @@ -6023,7 +6082,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account @@ -6188,10 +6247,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Fout bij het laden van het serverprofielbestand @@ -6202,7 +6261,7 @@ p, li { white-space: pre-wrap; } - + Save Server Profile Error Fout bij het opslaan van het serverprofiel @@ -6211,33 +6270,33 @@ p, li { white-space: pre-wrap; } Een profiel met de naam: " - - - - + + + + Could not load server-profiles-file: %1 - + Read Server-Profile List Error Fout bij het lezen van de lijst met serverprofielen - + Could not read server-profiles list Kan de lijst met serverprofielen niet lezen - - + + Save Server-Profile-File Error Fout bij het opslaan van het serverprofielbestand - - + + Could not save server-profiles-file: %1 @@ -6249,7 +6308,7 @@ p, li { white-space: pre-wrap; } - + A profile with the name: %1 already exists. Would you like to overwrite ? Er bestaat al een profiel met de naam %1. @@ -6329,12 +6388,12 @@ Wilt u dat profiel overschrijven? manualBlindsOrderDialogImpl - + Manual Blinds Order Eigen lijst met blinds - + You cannot set more than 30 manual blinds. Er kunnen maximaal 30 eigen blinds worden ingevoerd. @@ -6473,14 +6532,14 @@ Wilt u dat profiel overschrijven? selectAvatarDialogImpl - - - + + + Avatar File Error Bestandsfout bij het openen van de avatar - + Please select an avatar from the list! Selecteer een avatar uit de lijst. @@ -6491,7 +6550,7 @@ Please enter an valid picture! Stel een geldige afbeelding in! - + Select external avatar picture Een externe avatar selecteren @@ -6500,19 +6559,19 @@ Stel een geldige afbeelding in! Afbeeldingen (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Het gekozen afbeeldingsbestand is te groot. (Max. 30 kB) Kies een kleinere afbeelding. - + Images (*.png *.jpg *.gif) Afbeeldingen (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! De ingestelde avatar bestaat niet. @@ -6552,10 +6611,10 @@ p, li { white-space: pre-wrap; } Kleine blind: - - - - + + + + Start Cash: Startgeld: @@ -6568,24 +6627,24 @@ p, li { white-space: pre-wrap; } Server-instellingen - - - - + + + + Server Port: Serverpoort: - - - - + + + + Use IPv6 IPv6 gebruiken - - + + Server Password: Serverwachtwoord: @@ -6594,49 +6653,49 @@ p, li { white-space: pre-wrap; } Standaardinstellingen van netwerkspel - - + + Computer Engine Computertegenstanders - - + + Opponent 5: Tegenstander 5: - - + + Opponent 3: Tegenstander 3: - - + + Opponent 2: Tegenstander 2: - - + + Opponent 6: Tegenstander 6: - - + + Opponent 1: Tegenstander 1: - - + + Opponent 4: Tegenstander 4: - + Human Player: Speler: @@ -6649,25 +6708,30 @@ p, li { white-space: pre-wrap; } dag(en) - - + + Log File Directory: Map voor logbestanden: - + Log Messages Logberichten - + + Show network state color in the corner of the avatar + + + + Local Game Settings Instellingen van lokaal spel - + Network Game Settings Instellingen van netwerkspel @@ -6702,8 +6766,8 @@ p, li { white-space: pre-wrap; } Linkertoolbox weergeven - - + + Play blind raise notification @@ -6712,8 +6776,8 @@ p, li { white-space: pre-wrap; } Berichten weergeven in de statusbalk - - + + Show game settings dialog on every new game Instellingenvenster weergeven voor ieder nieuw spel @@ -6722,20 +6786,20 @@ p, li { white-space: pre-wrap; } Rondes voordat blinds omhooggaan: - - + + Number of players: Aantal spelers: - - + + Game Speed: Speelsnelheid: - - + + Pause between hands (press "start" button to go on) Stoppen tussen handen (druk op Start om door te gaan) @@ -6748,8 +6812,8 @@ p, li { white-space: pre-wrap; } Simulatorversie van computertegenstanders: - - + + Enable/Disable Logging Logbestanden schrijven @@ -6758,8 +6822,8 @@ p, li { white-space: pre-wrap; } Bewaar de logbestanden - - + + Write log after every: Logbestand bijwerken na iedere: @@ -6770,8 +6834,8 @@ p, li { white-space: pre-wrap; } Buttons voor kleine blind en grote blind weergeven - - + + Play sound effects Geluidseffecten afspelen @@ -6779,27 +6843,27 @@ p, li { white-space: pre-wrap; } 0.4 (current) 0.4 (huidige) - - - - - - Use SCTP - SCTP gebruiken - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://nl.wikipedia.org/wiki/Ipv6">Wat is dit?</a> - + Use SCTP + SCTP gebruiken + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://nl.wikipedia.org/wiki/Ipv6">Wat is dit?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://nl.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Wat is dit?</a> @@ -6820,20 +6884,20 @@ p, li { white-space: pre-wrap; } Instellingen - - + + Maximum number of players: Maximale aantal spelers: - - + + Sound Volume: Volume: - - + + 10 10 @@ -6842,20 +6906,20 @@ p, li { white-space: pre-wrap; } Denktijd voor de spelers (sec): - - + + action (high frequent disc access) handeling (veel schijfactiviteit) - - + + hand (medium disc access) hand (matige schijfactiviteit) - - + + game (low disc access) partij (weinig schijfactiviteit) @@ -6868,18 +6932,18 @@ p, li { white-space: pre-wrap; } - + Sound Geluid - + Note: Best quality with image ratio like width=48, height=76. - - + + Network Server Settings Instellingen van netwerkserver @@ -6898,19 +6962,19 @@ p, li { white-space: pre-wrap; } Instellingen van internetserver (pokerserver) - - + + Server Address: Serveradres: - - + + Use password for private game: Wachtwoord gebruiken voor privéspel: - + Internet Game Settings Instellingen van internetspel @@ -6943,89 +7007,89 @@ p, li { white-space: pre-wrap; } Omgekeerde volgorde van F-toetsen (F1 - F3) - - - - + + + + First small blind: Eerste kleine blind: - - - - + + + + Raise blinds: Blinds verhogen: - - - - - - - - + + + + + + + + Every: Na iedere: - - - - + + + + hands hand(en) - - - - + + + + minutes min. - - - - + + + + Raise mode: Verhoogmodus: - - - - + + + + Always double blinds Blinds blijven verdubbelen - - - - + + + + Manual blinds order: Eigen lijst met blinds: - - - - + + + + Edit ... Bewerken ... - - + + Sound Categories Geluidcategorieën - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7044,20 +7108,20 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Opmerking: de afbeelding ziet er het best uit bij een hoogte-breedteverhouding van </span><span style=" font-weight:600; font-style:italic;">hoogte=76, breedte=48.</span></p></td></tr></table></body></html> - - + + Play game actions sounds like "check", "call", "raise" Geluiden van spelacties, bijv. 'checken', 'callen' en 'raisen' - - + + Play lobby chat notifications Meldingen van het chatten in de lobby - - + + Play network/internet game notifications like "player joined the game" Meldingen van netwerk-/internetspellen, bijv. 'er komt een speler bij' @@ -7072,7 +7136,7 @@ p, li { white-space: pre-wrap; } Chatten in de lobby (IRC-server) aan/uit - + Player Nicks/Avatars Spelersnamen/avatars @@ -7098,7 +7162,7 @@ p, li { white-space: pre-wrap; } Netwerk-/internetspel - + Switch keyboard focus to bet-input-field if it's your turn Cursor naar het inzetveld overzetten zodra het uw beurt is @@ -7118,33 +7182,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Opmerking: de afbeelding ziet er het best uit bij een hoogte-breedteverhouding van </span><span style=" font-weight:600; font-style:italic;">hoogte=140, breedte=100.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Denktijd voor de spelers: - - - - + + + + s s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -7155,7 +7219,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Opmerking: standaard </span><span style=" font-weight:600; font-style:italic;">spelinstellingen</span><span style=" font-style:italic;">, waaronder 'Maximale aantal spelers', 'Startgeld' en 'Kleine blind' worden overgenomen van </span><span style=" font-weight:600; font-style:italic;">Instellingen van netwerkspel.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -7166,15 +7230,15 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Opmerking: avatars zien er het best uit met een hoogte-breedteverhouding van </span><span style=" font-weight:600; font-style:italic;">hoogte=50, breedte=50.</span></p></body></html> - - + + Automatic Server Configuration URL Automatische serverconfiguratie-URL - + Factory Settings @@ -7185,155 +7249,160 @@ p, li { white-space: pre-wrap; } - + Show country flag in the corner of avatar - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - - - + + Show network state color on the avatar + + + + + + + Description Beschrijving - - - - + + + + Maintainer Maker - - - + + + State Status - - + + Delay between hands: Pauze tussen handen: - - + + Server Server - - + + Serverlist Address: Adres serverlijst: - - + + Manual Server Configuration Aangepaste serverconfiguratie - - + + Game Spel - - + + Default game name: Standaard spelnaam: - - + + Default game type: Standaard speltype: - - + + Standard Standaard - - + + Registered players only Alleen geregistreerde spelers - - + + Invited players only Alleen uitgenodigde spelers - - + + Ranking game Spel voor ranking - + Show lobby chat Lobbychat weergeven - - + + Automatically leave the table after the game finished - - + + Ignored Players Genegeerde spelers - - + + Player Speler - - + + Remove Player Speler verwijderen - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7346,26 +7415,26 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Menselijke speler:<br /><span style=" font-style:italic;">(Deze naam wordt ook gebruikt bij het inloggen voor online spelen)</span></p></body></html> - - + + Store log files for: - - + + Day(s) dag(en) - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -7426,43 +7495,43 @@ p, li { white-space: pre-wrap; } Introductiescherm niet weergeven bij het starten - - + + Game Table Speeltafel - - + + Card Deck Speelkaarten - - + + Card Back Kaartachterkant - - + + Use card back from card style Kaartachterkant overnemen van de speelkaartenstijl - - + + Use custom card back picture: Een eigen afbeelding gebruiken voor de kaartachterkant: - - + + Allow spectators to watch the game - + Note: Best avatar quality with image ratio like width=50, height=50. @@ -7491,15 +7560,15 @@ p, li { white-space: pre-wrap; } Wachtwoord: - - + + Avatar Server: Avatarserver: - + Style Stijl @@ -7517,33 +7586,33 @@ p, li { white-space: pre-wrap; } Activate Activeren - - - - - - Add ... - Toevoegen... - + Add ... + Toevoegen... + + + + + + Remove Verwijderen - - - - + + + + Preview - Information: Voorbeeld en gegevens: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7560,8 +7629,8 @@ p, li { white-space: pre-wrap; } Speelkaartenstijlen - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -7574,24 +7643,24 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Nieuwe speelkaartenstijlen voor PokerTH downloaden...</span></a></p></body></html> - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 7: Tegenstander 7: - - + + Opponent 8: Tegenstander 8: @@ -7600,8 +7669,8 @@ p, li { white-space: pre-wrap; } Tegenstander 4: {10:?} - - + + Opponent 9: Tegenstander 9: @@ -7609,11 +7678,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Fout in instellingen @@ -7630,7 +7699,7 @@ Please select an valid directory! Selecteer een geldige map! - + Select your flipside picture Uw afbeelding voor de kaartachterkant selecteren @@ -7639,24 +7708,24 @@ Selecteer een geldige map! Afbeeldingen (*.png) - + Open Directory Open map - + Images (*.png *.jpg *.gif) Afbeeldingen (*.png *.jpg *.gif) - - + + Blinds Error Fout in blinds - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -7665,27 +7734,27 @@ is lager dan de eerste kleine blind. De eerste kleine blind wordt ingesteld op de maximale waarde. - + Dutch Nederlands - + English Engels - + French Frans - + German Duits - + Hungarian Hongaars @@ -7702,7 +7771,7 @@ De eerste kleine blind wordt ingesteld op de maximale waarde. Português Brasil (Brz. Portugees) - + Russian Russisch @@ -7711,141 +7780,141 @@ De eerste kleine blind wordt ingesteld op de maximale waarde. Slowaaks - + Turkish Turks - + Language Changed Taal is gewijzigd - + You have changed application language to %1. Please restart PokerTH to load new language! De taal van het programma is gewijzigd naar %1. Start PokerTH opnieuw om de nieuwe taal te laden. - + Italian Italiaans - + Galician - + Japanese - + Lithuania Litouws - + Portuguese-Brazilian Braz. Portugees - + Portuguese-Portuguese Port. Portugees - + Scottish Gaelic - + Slovak Slowaaks - + The entered flipside picture doesn't exist. Please enter an valid picture! De ingestelde afbeelding voor de kaartachterkant bestaat niet. Stel een geldige afbeelding in. - - + + The log file directory doesn't exist. Please select an valid directory! De map voor logbestanden bestaat niet. Selecteer een geldige map. - + Norwegian Noors - + Spanish Spaans - + Bulgarian Bulgaars - + Polish Pools - + Chinese Chinees - + Greek Grieks - + Swedish Zweeds - + The entered server list address is not a valid URL. Please enter a valid server list address! Het ingevoerde serverlijstadres is geen geldige URL. Voer een geldig serverlijstadres in. - + Finnish Fins - + Afrikaans Afrikaans - + Catalan Catalaans - + Czech Tsjechisch - + Danish Deens @@ -7858,148 +7927,148 @@ Voer een geldig serverlijstadres in. Português (Portugees) - + Tamil Tamil - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Maker(s) - - + + Maintainer EMail E-mailadres - - + + Create Date Gemaakt op - + Windows Behaviour Venstergrootte - + scaleable schaalbaar - + fixed gefixeerd - + Minimum Size Minimumgrootte - + Maximum Size Maximumgrootte - + Fixed Size Gefixeerde grootte - + State Status - + Please select your game table style Selecteer een speeltafelstijl - + PokerTH game table styles (*.xml) Speeltafelstijlen voor PokerTH (*.xml) - + Game Table Style Error Speeltafelstijlfout - + Selected game table style file is already in the list. Please select another one to add! De geselecteerde speeltafelstijl staat al in de lijst. Selecteer een andere stijl om die toe te voegen. - + Game Table Style File Error Speeltafelstijlbestandfout - + Could not load game table style file correctly. Style will not be placed into list! Kan het stijlbestand voor de speeltafel niet laden. De stijl wordt niet in de lijst geplaatst. - + Please select your card deck style Selecteer een speelkaartenstijl - + PokerTH card deck styles (*.xml) Speelkaartenstijlen voor PokerTH (*.xml) - + Card Deck Style Error Speelkaartenstijlfout - + Selected card deck style file is already in the list. Please select another one to add! De geselecteerde speelkaartenstijl staat al in de lijst. Selecteer een andere stijl om die toe te voegen. - + Card Deck Style File Error Speelkaartenstijlbestandfout - + Could not load card deck style file correctly. Style will not be placed into list! Kan het stijlbestand voor de speelkaarten niet laden. @@ -8014,12 +8083,12 @@ De stijl wordt niet in de lijst geplaatst. Het geselecteerde logbestand werkelijk verwijderen? - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -8104,12 +8173,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Serverfout - + You should not kick yourself from this game! U mag zichzelf niet uit dit spel verwijderen. diff --git a/ts/pokerth_no.ts b/ts/pokerth_no.ts index 477910b0..b8be888a 100644 --- a/ts/pokerth_no.ts +++ b/ts/pokerth_no.ts @@ -253,106 +253,106 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -376,22 +376,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + + PokerTH - Question - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -920,127 +958,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 - + About PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -1157,12 +1195,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order - + You cannot set more than 30 manual blinds. @@ -1196,45 +1234,45 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. - - - + + + Nick name: - + Your player name is already used by another player. Please choose a different name. Ditt spillernavn er allerede valgt av en annen spiller. Vennligst velg et annet navn. - + The player name is too short, too long or invalid. Please choose another one. - + There is already a game with your chosen game name. Please choose another one! - + There is a forbidden word in your chosen game name. Please choose another one! - - + + Game name: @@ -1269,27 +1307,27 @@ Please choose another one! connectToServerDialogImpl - + Resolving address... - + Connecting to server... - + Starting session... - + Connection established! - + Reading server list... @@ -1448,7 +1486,7 @@ Please choose another one! - + %1's game @@ -1772,1376 +1810,1396 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - - - - + + + + Game Info - + Server Error Feil hos tjener - + You should not kick yourself from this game! Du burde ikke kaste deg selv ut fra spillet! - + Joining a private Game - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - + Spectate - - + + Game Spill - - + + Players - - + + State - - + + Time - - - Show player stats + + Unignore player - + + Show player stats + + + + + Admin action ... - + Total kickban - + Close game - + You are about to join a private game. Please enter the password! - + running - + open - + hands - + minutes - + double blinds - + manual blinds order - - Afghanistan + + Unignore %1 - - ALand Islands + + Unignore player ... - - Albania - - - - - Algeria - - - - - American Samoa - - - - - Andorra - - - - - Angola - - - - - Anguilla - - - - - Antarctica - - - - - Antigua And Barbuda - - - - - Argentina - - - - - Armenia - - - - - Aruba - - - - - Australia - - - - - Austria - - - - - Azerbaijan - - - - - Bahamas + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? - Bahrain + Afghanistan - Bangladesh + ALand Islands - Barbados + Albania - Belarus + Algeria - Belgium + American Samoa - Belize + Andorra - Benin + Angola - Bermuda + Anguilla - Bhutan + Antarctica - Bolivia + Antigua And Barbuda - Bosnia And Herzegovina + Argentina - Botswana + Armenia - Bouvet Island + Aruba - Brazil + Australia - British Indian Ocean Territory + Austria - Brunei Darussalam + Azerbaijan - Bulgaria + Bahamas - Burkina Faso + Bahrain - Burundi + Bangladesh - Cambodia + Barbados - Cameroon + Belarus - Canada + Belgium - Cape Verde + Belize - Cayman Islands + Benin - Central African Republic + Bermuda - Chad + Bhutan - Chile + Bolivia - China + Bosnia And Herzegovina - Christmas Island + Botswana - Cocos (Keeling) Islands + Bouvet Island - Colombia + Brazil - Comoros + British Indian Ocean Territory - Congo + Brunei Darussalam - Congo, The Democratic Republic Of The + Bulgaria - Cook Islands + Burkina Faso - Costa Rica + Burundi - Cote D'Ivoire + Cambodia - Croatia + Cameroon - Cuba + Canada - Cyprus + Cape Verde - Czech Republic + Cayman Islands - Denmark + Central African Republic - Djibouti + Chad - Dominica + Chile - Dominican Republic + China - Ecuador + Christmas Island - Egypt + Cocos (Keeling) Islands - El Salvador + Colombia - Equatorial Guinea + Comoros - Eritrea + Congo - Estonia + Congo, The Democratic Republic Of The - Ethiopia + Cook Islands - Falkland Islands (Malvinas) + Costa Rica - Faroe Islands + Cote D'Ivoire - Fiji + Croatia - Finland + Cuba - France + Cyprus - French Guiana + Czech Republic - French Polynesia + Denmark - French Southern Territories + Djibouti - Gabon + Dominica - Gambia + Dominican Republic - Georgia + Ecuador - Germany + Egypt - Ghana + El Salvador - Gibraltar + Equatorial Guinea - Greece + Eritrea - Greenland + Estonia - Grenada + Ethiopia - Guadeloupe + Falkland Islands (Malvinas) - Guam + Faroe Islands - Guatemala + Fiji - Guernsey + Finland - Guinea + France - Guinea-Bissau + French Guiana - Guyana + French Polynesia - Haiti + French Southern Territories - Heard Island And Mcdonald Islands + Gabon - Holy See (Vatican City State) + Gambia - Honduras + Georgia - Hong Kong + Germany - Hungary + Ghana - Iceland + Gibraltar - India + Greece - Indonesia + Greenland - Iran, Islamic Republic Of + Grenada - Iraq + Guadeloupe - Ireland + Guam - Isle Of Man + Guatemala - Israel + Guernsey - Italy + Guinea - Jamaica + Guinea-Bissau - Japan + Guyana - Jersey + Haiti - Jordan + Heard Island And Mcdonald Islands - Kazakhstan + Holy See (Vatican City State) - Kenya + Honduras - Kiribati + Hong Kong - Korea, Democratic People'S Republic Of + Hungary - Korea, Republic Of + Iceland - Kuwait + India - Kyrgyzstan + Indonesia - Lao People'S Democratic Republic + Iran, Islamic Republic Of - Latvia + Iraq - Lebanon + Ireland - Lesotho + Isle Of Man - Liberia + Israel - Libyan Arab Jamahiriya + Italy - Liechtenstein + Jamaica - Lithuania + Japan - Luxembourg + Jersey - Macao + Jordan - Macedonia, The Former Yugoslav Republic Of + Kazakhstan - Madagascar + Kenya - Malawi + Kiribati - Malaysia + Korea, Democratic People'S Republic Of - Maldives + Korea, Republic Of - Mali + Kuwait - Malta + Kyrgyzstan - Marshall Islands + Lao People'S Democratic Republic - Martinique + Latvia - Mauritania + Lebanon - Mauritius + Lesotho - Mayotte + Liberia - Mexico + Libyan Arab Jamahiriya - Micronesia, Federated States Of + Liechtenstein - Moldova, Republic Of + Lithuania - Monaco + Luxembourg - Mongolia + Macao - Montserrat + Macedonia, The Former Yugoslav Republic Of - Morocco + Madagascar - Mozambique + Malawi - Myanmar + Malaysia - Namibia + Maldives - Nauru + Mali - Nepal + Malta - Netherlands + Marshall Islands - Netherlands Antilles + Martinique - New Caledonia + Mauritania - New Zealand + Mauritius - Nicaragua + Mayotte - Niger + Mexico - Nigeria + Micronesia, Federated States Of - Niue + Moldova, Republic Of - Norfolk Island + Monaco - Northern Mariana Islands + Mongolia - Norway + Montserrat - Oman + Morocco - Pakistan + Mozambique - Palau + Myanmar - Palestinian Territory, Occupied + Namibia - Panama + Nauru - Papua New Guinea + Nepal - Paraguay + Netherlands - Peru + Netherlands Antilles - Philippines + New Caledonia - Pitcairn + New Zealand - Poland + Nicaragua - Portugal + Niger - Puerto Rico + Nigeria - Qatar + Niue - Reunion + Norfolk Island - Romania + Northern Mariana Islands - Russian Federation + Norway - Rwanda + Oman - Saint Helena + Pakistan - Saint Kitts And Nevis + Palau - Saint Lucia + Palestinian Territory, Occupied - Saint Pierre And Miquelon + Panama - Saint Vincent And The Grenadines + Papua New Guinea - Samoa + Paraguay - San Marino + Peru - Sao Tome And Principe + Philippines - Saudi Arabia + Pitcairn - Senegal + Poland - Serbia And Montenegro + Portugal - Seychelles + Puerto Rico - Sierra Leone + Qatar - Singapore + Reunion - Slovakia + Romania - Slovenia + Russian Federation - Solomon Islands + Rwanda - Somalia + Saint Helena - South Africa + Saint Kitts And Nevis - South Georgia And The South Sandwich Islands + Saint Lucia - Spain + Saint Pierre And Miquelon - Sri Lanka + Saint Vincent And The Grenadines - Sudan + Samoa - Suriname + San Marino - Svalbard And Jan Mayen + Sao Tome And Principe - Swaziland + Saudi Arabia - Sweden + Senegal - Switzerland + Serbia And Montenegro - Syrian Arab Republic + Seychelles - Taiwan, Province Of China + Sierra Leone - Tajikistan + Singapore - Tanzania, United Republic Of + Slovakia - Thailand + Slovenia - Timor-Leste + Solomon Islands - Togo + Somalia - Tokelau + South Africa - Tonga + South Georgia And The South Sandwich Islands - Trinidad And Tobago + Spain - Tunisia + Sri Lanka - Turkey + Sudan - Turkmenistan + Suriname - Turks And Caicos Islands + Svalbard And Jan Mayen - Tuvalu + Swaziland - Uganda + Sweden - Ukraine + Switzerland - United Arab Emirates + Syrian Arab Republic - United Kingdom + Taiwan, Province Of China - United States + Tajikistan - United States Minor Outlying Islands + Tanzania, United Republic Of - Uruguay + Thailand - Uzbekistan + Timor-Leste - Vanuatu + Togo - Venezuela + Tokelau - Viet Nam + Tonga - Virgin Islands, British + Trinidad And Tobago - Virgin Islands, U.S. + Tunisia - Wallis And Futuna + Turkey - Western Sahara + Turkmenistan - Yemen + Turks And Caicos Islands - Zambia + Tuvalu + Uganda + + + + + Ukraine + + + + + United Arab Emirates + + + + + United Kingdom + + + + + United States + + + + + United States Minor Outlying Islands + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Viet Nam + + + + + Virgin Islands, British + + + + + Virgin Islands, U.S. + + + + + Wallis And Futuna + + + + + Western Sahara + + + + + Yemen + + + + + Zambia + + + + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - + Starting game. Please wait ... - - + + P - - + + Available Players @@ -3156,73 +3214,73 @@ p, li { white-space: pre-wrap; } - + Player infos ... - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - + + T - - - + + + sec (action) - - - + + + sec (hand delay) - - - - running games: %1 - - + running games: %1 + + + + + open games: %1 @@ -3232,73 +3290,73 @@ p, li { white-space: pre-wrap; } - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? - - + + connected players: %1 - - + + Players (%1) - - - + + + Spectators (%1) - + search for player ... - + Chat is only available to registered players. @@ -3308,31 +3366,32 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + - + + PokerTH - Question @@ -3675,31 +3734,31 @@ Feel free to invite other players by right-clicking on their nick in the availab F1 - Kast/Sats allt | F2 - Pass/Syn | F3 - Sats/Høyne - - - - - - - - + + + + + + + + Start Start - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stopp @@ -3836,117 +3895,117 @@ Hvis tjeneren er bak en NAT-ruter, forsikre deg om at videresending er satt opp Ugyldig antall spillere. - - + + Chat Prat - + Closing PokerTH during network game - + You are the hosting server. Do you want to close PokerTH anyway? - + PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - + + + + + Lobby - + PokerTH - Internet Game Message - + Attention! Do you really want to leave the current game and go back to the lobby? - - + + Chance - + PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Kast ut - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. + - Chat is only available to registered players. - + Spectators @@ -4004,7 +4063,7 @@ and go back to the lobby? internetGameLoginDialogImpl - + Create new user account @@ -4157,10 +4216,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Feil under lasting av tjenerprofiler @@ -4171,7 +4230,7 @@ p, li { white-space: pre-wrap; } - + Save Server Profile Error Lagre tjenerprofil-feil @@ -4180,33 +4239,33 @@ p, li { white-space: pre-wrap; } En profil med navnet "" - - - - + + + + Could not load server-profiles-file: %1 - + Read Server-Profile List Error Les feilbeskrivelse for tjenerprofil-liste - + Could not read server-profiles list Kunne ikke lese lista med tjenerprofiler - - + + Save Server-Profile-File Error Feil under lagring av tjener-profil - - + + Could not save server-profiles-file: %1 @@ -4218,7 +4277,7 @@ p, li { white-space: pre-wrap; } - + A profile with the name: %1 already exists. Would you like to overwrite ? @@ -4285,12 +4344,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order - + You cannot set more than 30 manual blinds. @@ -4421,14 +4480,14 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Feil i avatar-fil - + Please select an avatar from the list! Vennligst velg en avatar fra listen! @@ -4438,7 +4497,7 @@ Please enter an valid picture! Det angitte bildet finnes ikke.Vennligst vis til et gyldig bilde! - + Select external avatar picture Velg eksternt avatar-bilde @@ -4447,18 +4506,18 @@ Please enter an valid picture! Bilder (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! - + Images (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! @@ -4497,10 +4556,10 @@ p, li { white-space: pre-wrap; } Small Blind: - - - - + + + + Start Cash: Startkapital: @@ -4513,24 +4572,24 @@ p, li { white-space: pre-wrap; } Tjener-instillinger - - - - + + + + Server Port: Tjener-port: - - - - + + + + Use IPv6 Bruk IPv6 - - + + Server Password: Passord for tjener: @@ -4539,43 +4598,43 @@ p, li { white-space: pre-wrap; } Standardinstillinger for nettverksspill - - + + Computer Engine Datamaskin-motor - - + + Opponent 5: Motstander 5: - - + + Opponent 3: Motstander 3: - - + + Opponent 2: Motstander 2: - - + + Opponent 1: Motstander 1: - - + + Opponent 4: Motstander 4: - + Human Player: Mennesklig spiller: @@ -4584,8 +4643,8 @@ p, li { white-space: pre-wrap; } Kallenavn på spillere - - + + Log File Directory: Katalog for loggfiler: @@ -4596,17 +4655,22 @@ p, li { white-space: pre-wrap; } - + Log Messages Logg - + + Show network state color in the corner of the avatar + + + + Local Game Settings Innstillinger for lokalt spill - + Network Game Settings Innstillinger for nettverks-spill @@ -4641,8 +4705,8 @@ p, li { white-space: pre-wrap; } Vis verktøykasse på venstre side - - + + Play blind raise notification @@ -4651,8 +4715,8 @@ p, li { white-space: pre-wrap; } Vis beskjeder i statuslinja - - + + Show game settings dialog on every new game Vis spill-innstillinger ved hvert nye spill @@ -4661,20 +4725,20 @@ p, li { white-space: pre-wrap; } Antall henter før "Small Blind" økes: - - + + Number of players: Antall spillere: - - + + Game Speed: Spill-hastighet: - - + + Pause between hands (press "start" button to go on) Pause mellom hender (trykk "start"-knappen for å fortsette) @@ -4687,8 +4751,8 @@ p, li { white-space: pre-wrap; } Versjon av spillmotor for datamaskinstyrte motstandere: - - + + Enable/Disable Logging Skru på/av logging @@ -4697,8 +4761,8 @@ p, li { white-space: pre-wrap; } Lagre logg-filer i - - + + Write log after every: Skriv logg etter hver(t): @@ -4709,8 +4773,8 @@ p, li { white-space: pre-wrap; } Vis knapper for "small blind" og "big blind" - - + + Play sound effects Bruk lydeffekter @@ -4718,27 +4782,27 @@ p, li { white-space: pre-wrap; } 0.4 (current) 0.4 (nåværende) - - - - - - Use SCTP - Bruk SCTP - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://no.wikipedia.org/wiki/Ipv6">Hva er dette?</a> - + Use SCTP + Bruk SCTP + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://no.wikipedia.org/wiki/Ipv6">Hva er dette?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Hva er dette?</a> @@ -4756,36 +4820,36 @@ p, li { white-space: pre-wrap; } Innstillinger - - + + Maximum number of players: Maks. antall spillere: - - + + Sound Volume: Lyd-nivå: - - + + 10 10 - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 6: Motstander 6: @@ -4794,20 +4858,20 @@ p, li { white-space: pre-wrap; } Tidsgrense for spillere (sek.): - - + + action (high frequent disc access) Handling (hyppig disk-bruk) - - + + hand (medium disc access) Hånd (medium disk-bruk) - - + + game (low disc access) Spill (lav disk-bruk) @@ -4820,38 +4884,38 @@ p, li { white-space: pre-wrap; } - + Sound - - + + Network Server Settings - + Internet Game Settings - - + + Server Address: - - + + Use password for private game: - - - - + + + + First small blind: @@ -4868,129 +4932,134 @@ p, li { white-space: pre-wrap; } - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Game Table - - + + Card Deck - - + + Card Back - - + + Use card back from card style - - + + Use custom card back picture: - - - - + + + + Raise blinds: - - - - - - - - + + + + + + + + Every: - - - - + + + + hands - - - - + + + + minutes - - - - + + + + Raise mode: - - - - + + + + Always double blinds - - - - + + + + Manual blinds order: - - - - + + + + Edit ... - - + + Allow spectators to watch the game - + OK @@ -5001,31 +5070,31 @@ p, li { white-space: pre-wrap; } - - + + Sound Categories - - - - Play game actions sounds like "check", "call", "raise" - - - Play lobby chat notifications + Play game actions sounds like "check", "call", "raise" + Play lobby chat notifications + + + + + Play network/internet game notifications like "player joined the game" - + Player Nicks/Avatars @@ -5041,39 +5110,39 @@ p, li { white-space: pre-wrap; } - + Switch keyboard focus to bet-input-field if it's your turn - - - - - - - - + + + + + + + + $ - - + + Timeout for player action: - - - - + + + + s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5081,7 +5150,7 @@ p, li { white-space: pre-wrap; } - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5089,32 +5158,32 @@ p, li { white-space: pre-wrap; } - - + + Automatic Server Configuration URL - - + + Serverlist Address: - - + + Manual Server Configuration - - + + Store log files for: - - + + Day(s) @@ -5149,27 +5218,27 @@ p, li { white-space: pre-wrap; } - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: - + Style - + Factory Settings @@ -5180,38 +5249,38 @@ p, li { white-space: pre-wrap; } - + Show country flag in the corner of avatar - - - - - - Add ... - - + Add ... + + + + + + + Remove - - - - + + + + Preview - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5220,31 +5289,31 @@ p, li { white-space: pre-wrap; } - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5253,7 +5322,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5265,91 +5334,91 @@ p, li { white-space: pre-wrap; } - - + + Delay between hands: - - + + Server - - + + Game Spill - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5358,19 +5427,19 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Motstander 6: {7:?} - - + + Opponent 8: Motstander 6: {8:?} - + Note: Best avatar quality with image ratio like width=50, height=50. @@ -5379,14 +5448,14 @@ p, li { white-space: pre-wrap; } Slett - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5395,8 +5464,8 @@ p, li { white-space: pre-wrap; } Motstander 6: {10:?} - - + + Opponent 9: Motstander 6: {10:?} {9:?} @@ -5404,11 +5473,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Feil i instillinger @@ -5425,7 +5494,7 @@ Please select an valid directory! Vennligst velg en gyldig katalog! - + Select your flipside picture Velg bakside-bilde @@ -5434,345 +5503,345 @@ Vennligst velg en gyldig katalog! Bilder (*.png) - + Open Directory Åpne mappe - + Images (*.png *.jpg *.gif) - - + + Blinds Error - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. - + Language Changed - + Afrikaans - + Bulgarian - + Catalan - + Chinese - + Czech - + Danish - + Dutch - + English - + Finnish - + French - + Galician - + German - + Greek - + Hungarian - + Italian - + Japanese - + Lithuania - + Norwegian - + Polish - + Portuguese-Brazilian - + Portuguese-Portuguese - + Russian - + Scottish Gaelic - + Slovak - + Spanish - + Swedish - + Tamil - + Turkish - + Vietnamese - + You have changed application language to %1. Please restart PokerTH to load new language! - + The entered flipside picture doesn't exist. Please enter an valid picture! - - + + The log file directory doesn't exist. Please select an valid directory! - + The entered server list address is not a valid URL. Please enter a valid server list address! - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5841,12 +5910,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Feil hos tjener - + You should not kick yourself from this game! Du burde ikke kaste deg selv ut fra spillet! diff --git a/ts/pokerth_pl.ts b/ts/pokerth_pl.ts index 4c6ffae9..ec09dae3 100644 --- a/ts/pokerth_pl.ts +++ b/ts/pokerth_pl.ts @@ -380,108 +380,108 @@ Proszę wybierz skórkę stołu. Analizuj logi ... - + PokerTH - Delete log files PokerTH - Usuń logi - + Do you really want to delete the selected log files? Czy na pewno chcesz usunąć wybrany plik logu? - + Remove log file Usuń plik logu - + PokerTH cannot remove this log file, please verify that you have write access to this file! Nie udało się usunąć pliku logu, sprawdź czy masz odpowiednie prawa! - + Export PokerTH log file to HTML Eksportuj log do formatu HTML - + PokerTH HTML log (*.html) Plik logu PokerTH w formacie HTML (*.html) - + Export PokerTH log file to plain text Eksportuj log do pliku tekstowego - + PokerTH plain text log (*.txt) Plik logu PokerTH w formacie tekstowym (*.txt) - + Save PokerTH log file Zapisz logi PokerTH - + PokerTH SQL log (*.pdb) Plik logu PokerTH w formacie SQL (*.pdb) - + No file received. Nie odebrano żadnego pliku. - + File rejected because of too many uploads. Log nie został przyjęty - za dużo wysyłanych logów. - + File rejected because of too many recent uploads. Please try again later. Log nie został przyjęty - za dużo wysyłanych logów w ostatnim czasie. Proszę spróbuj później. - + The file is too large. Ten plik jest za duży. - + This file is not a valid and current PokerTH log file. Ten plik nie jest prawidłowym i aktualnym plikiem logu PokerTH. - + Internal error. Please try again later. ID: Błąd wewnętrzny. Proszę spróbuj później. ID: - - + + Uploading log file Wysyłanie logów - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. Wysyłanie nie powiodło się. Proszę sprawdź polączenie z internetem! Jedną z częstych przyczyn problemów jest używania proxy HTTP. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. Przetworzenie logów na serwerze nie udało się. Proszę upewnij się, że wysyłasz prawidłowy plik logu PokerTH. - - + + Failure reason: Przyczyna błędu: @@ -505,22 +505,60 @@ Proszę upewnij się, że wysyłasz prawidłowy plik logu PokerTH. + Unignore Player + + + + Report inappropriate avatar Zgłoś niewłaściwy avatar - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Nie będziesz otrzymywał żadnych informacji ani zaproszeń do gry od tego gracza.<br>Czy na pewno chcesz dodać gracza <b>%1</b> do listy ignorowanych? - - + + + PokerTH - Question PokerTH - Pytanie - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? Czy na pewno chcesz zgłosić avatar gracza "%1" jako niewłaściwy? @@ -1085,127 +1123,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) PokerTH %1 dla Androida (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 O PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - Wikimedia Commons: za wiele popularnych avatarów - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: ze avatary przedstawiające ludzi - + - ZeiZei: for misc avatar pictures - ZeiZei: za różne avatary - + - kde-look.org: for different gpl licensed sounds - kde-look.org: za wiele różnych dźwięków na licencji GPL - + - doc_dos: for self recorded chip sounds - doc_dos: za nagranie odgłosów żetonów - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - thiger, dunkanx, BerndA, coldz, drull: za wiele patchy - + - kraut: for internet-game-server hosting and administration - kraut: za hosting i administrację serwera gier online - + - danuxi: for startwindow background gfx and danuxi1 table background - danuxi: za tło ekranu startowego oraz tło stołu danuxi1 - + - heyn: for moderating forum and organise bugtracker and feature requests - heyn: za moderowanie forum oraz zarządzanie bugtrackerem i sugestiami od użytkowników - + - texas_outlaw: for new table sounds - texas_outlaw: za nowe dźwięki stołu - + - Poker engine for the popular Texas Hold'em Poker - silnik gry w pokera: Texas Hold'em - + - Singleplayer games with up to 9 computer-opponents - gra lokalna z aż 9 graczamia komputerowymi - + - Multiplayer network games - gra przez sieć - + - Internet online games - gra online na serwerze - + - Changeable gui with online style gallery - skórki stołu i kart z galerią online - + - Online ranking website with result tables - rankingi online ze statystykami - + Project page: Strona projektu: - + Authors: Autorzy: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package pierwszy pomysł, podstawowa architektura, implementacja interfejsu użytkownika, mechanizm skórek, paczki dla linuxa - + initial idea, basic architecture, engine development pierwszy pomysł, podstawowa architektura, rozwój silnika gry - + basic architecture, network development, windows package, MacOS package podstawowa architektura, obsługa sieci, paczki dla Windows i MacOS - + initial gui graphics design pierwszy wygląd graficzny @@ -1322,12 +1360,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Własna konfiguracja ciemnych - + You cannot set more than 30 manual blinds. Nie możesz ustawić więcej niż 30 wartości ciemnych. @@ -1361,48 +1399,48 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Nie możesz połączyć się z chatem gier online używając nicka "Human Player". Proszę wybrierz inny nick. - - - + + + Nick name: Nick: - + Your player name is already used by another player. Please choose a different name. Twoj nick jest już używany przez kogoś innego. Proszę wybrać inny nick. - + The player name is too short, too long or invalid. Please choose another one. Nick gracza jest za krótki, za długi lub niepoprawny. Proszę wprowadź inny nick. - + There is already a game with your chosen game name. Please choose another one! Istnieje już gra o takiej samej nazwie. Proszę wybierz inną nazwę! - + There is a forbidden word in your chosen game name. Please choose another one! Użyłeś zabronionego wyrazu w nazwie gry. Proszę wybrać inną nazwę! - - + + Game name: Nazwa gry: @@ -1441,27 +1479,27 @@ Proszę wybrać inną nazwę! connectToServerDialogImpl - + Resolving address... Ustalanie adresu... - + Connecting to server... Łączenie z serwererem ... - + Starting session... Rozpoczynanie sesji... - + Connection established! Połączenie zostało nawiązane poprawnie! - + Reading server list... Odczytywanie listy serwerów... @@ -1616,7 +1654,7 @@ Proszę wybrać inną nazwę! <i>Podwajaj ciemne co %1 rąk</i> - + %1's game Gra %1 @@ -2014,46 +2052,46 @@ p, li { white-space: pre-wrap; } gra - - - - + + + + Game Info Informacje o grze - + Server Error Błąd serwera - + You should not kick yourself from this game! Nie powinieneś wyrzucać sam siebie z tej gry! - + Joining a private Game Dołącz do gry prywatnej - - + + Game Gra - - + + Players Gracze - - + + State Stan @@ -2062,17 +2100,17 @@ p, li { white-space: pre-wrap; } Prywatne - + You are about to join a private game. Please enter the password! Próbujesz wejść do gry prywatnej. Proszę wpisz hasło! - + running w trakcie - + open otwarta @@ -2081,63 +2119,63 @@ p, li { white-space: pre-wrap; } Połączeni gracze - + hands rozdania - + minutes minuty - + double blinds podwajane - + manual blinds order własne - + Starting game. Please wait ... Tworzenie gry. Proszę czekać ... - + Waiting for the start of the next hand to rejoin the game ... Oczekiwanie na kolejne rozdanie przed ponownym podłączeniem do gry... - + Click here to view the online rankings Kliknij tutaj aby zobaczyć ranking online - + Spectate Oglądaj - - + + P P - - + + Time Czas - - + + Available Players Dostępni gracze @@ -2153,61 +2191,66 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Informacje o graczu ... - - + + Show player stats Pokaż statystyki gracza - - + + Admin action ... Administracja... - + Total kickban Zablokuj całkowicie - + Report inappropriate game name Zgłoś nieodpowiednią nazwę gracza - + Close game Zamknij grę - - - + + + Standard Standardowa - - - + + + Registered players only Tylko dla zarejestrowanych - - - + + + Invited players only Tylko dla zaproszonych - - - + + + Ranking game Gra rankingowa @@ -2216,1255 +2259,1255 @@ p, li { white-space: pre-wrap; } Połączeni gracze - max. %1 - + Afghanistan Afganistan - + ALand Islands Wyspy Alandzkie - + Albania Albania - + Algeria Algieria - + American Samoa Samoa Amerykańskie - + Andorra Andora - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarktyda - + Antigua And Barbuda Antigua i Barbuda - + Argentina Argentyna - + Armenia Armenia - + Aruba Aruba - + Australia Australia - + Austria Austria - + Azerbaijan Azerbejdżan - + Bahamas Bahamy - + Bahrain Bahrain - + Bangladesh Bangladesz - + Barbados Barbados - + Belarus Białoruś - + Belgium Belgia - + Belize Belize - + Benin Benin - + Bermuda Bermudy - + Bhutan Bhutan - + Bolivia Boliwia - + Bosnia And Herzegovina Bośnia i Hercegowina - + Botswana Botswana - + Bouvet Island Wyspa Bouveta - + Brazil Brazylia - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria Bułgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Kambodża - + Cameroon Kamerun - + Canada Kanada - + Cape Verde - + Cayman Islands - + Central African Republic Republika Środkowoafrykańska - + Chad Czad - + Chile Chile - + China Chiny - + Christmas Island Wyspy Bożego Narodzenia - + Cocos (Keeling) Islands - + Colombia Kolumbia - + Comoros - + Congo Kongo - + Congo, The Democratic Republic Of The Demokratyczna Republika Konga - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia Chorwacja - + Cuba Kuba - + Cyprus Cypr - + Czech Republic Czechy - + Denmark Dania - + Djibouti - + Dominica - + Dominican Republic - + Ecuador Ekwador - + Egypt Egipt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia Estonia - + Ethiopia Etiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland Finlandia - + France Francja - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia Gruzja - + Germany Niemcy - + Ghana Ghana - + Gibraltar - + Greece Frecja - + Greenland Grenlandia - + Grenada - + Guadeloupe - + Guam - + Guatemala Gwatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras Honduras - + Hong Kong Hong Kong - + Hungary Węgry - + Iceland Islandia - + India Indie - + Indonesia Indonezja - + Iran, Islamic Republic Of Iran - + Iraq Irak - + Ireland Irlandia - + Isle Of Man - + Israel Izrael - + Italy Włochy - + Jamaica Jamajka - + Japan Japonia - + Jersey - + Jordan - + Kazakhstan Kazachstan - + Kenya Kenia - + Kiribati - + Korea, Democratic People'S Republic Of Korea Północna - + Korea, Republic Of Korea Południowa - + Kuwait Kuwejt - + Kyrgyzstan Kirgistan - + Lao People'S Democratic Republic - + Latvia Łotwa - + Lebanon Liban - + Lesotho Lesotho - + Liberia Liberia - + Libyan Arab Jamahiriya - + Liechtenstein Liechtenstein - + Lithuania Litwa - + Luxembourg Luksemburg - + Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia - + Madagascar Madagaskar - + Malawi - + Malaysia Malezja - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico Meksyk - + Micronesia, Federated States Of - + Moldova, Republic Of Mołdawia - + Monaco Monaco - + Mongolia Mogolia - + Montserrat - + Morocco Maroko - + Mozambique Mozambik - + Myanmar - + Namibia Namibia - + Nauru - + Nepal Nepal - + Netherlands Holandia - + Netherlands Antilles - + New Caledonia - + New Zealand Nowa Zelandia - + Nicaragua Nikaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island - + Northern Mariana Islands - + Norway Norwegia - + Oman Oman - + Pakistan Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama Panama - + Papua New Guinea Papua Nowa Gwinea - + Paraguay Paragwaj - + Peru Peru - + Philippines Filipiny - + Pitcairn - + Poland Polska - + Portugal Portugalia - + Puerto Rico Puerto Rico - + Qatar Katar - + Reunion - + Romania Rumunia - + Russian Federation Rosja - + Rwanda Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe - + Saudi Arabia Arabia Saudyjska - + Senegal Senegal - + Serbia And Montenegro Serbia i Czarnogóra - + Seychelles - + Sierra Leone - + Singapore Singapur - + Slovakia Słowacja - + Slovenia Słowenia - + Solomon Islands - + Somalia Somalia - + South Africa Republika Południowej Afryki - + South Georgia And The South Sandwich Islands - + Spain Hiszpania - + Sri Lanka Sri Lanka - + Sudan Sudan - + Suriname Surinam - + Svalbard And Jan Mayen - + Swaziland - + Sweden Szwecja - + Switzerland Szwajcaria - + Syrian Arab Republic Syria - + Taiwan, Province Of China Tajwan - + Tajikistan Tadżykistan - + Tanzania, United Republic Of Tanzania - + Thailand Tajlandia - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago Trinidad i Tobago - + Tunisia Tunezja - + Turkey Turcja - + Turkmenistan Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda Uganda - + Ukraine Ukraina - + United Arab Emirates Zjednoczone Emiraty Arabskie - + United Kingdom Wielka Brytania - + United States Stany Zjednoczone - + United States Minor Outlying Islands - + Uruguay Urugwaj - + Uzbekistan Uzbekistan - + Vanuatu - + Venezuela Wenezuela - + Viet Nam Wietnam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara Sahara Zachodnia - + Yemen Jemen - + Zambia Zambia - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Czy na pewno chcesz zgłosić nieodpowiednią nazwę gracza: "%1"? - + Are you sure you want to close the game: "%1"? Czy na pewno chcesz zamknąć grę: "%1"? - + Are you sure you want to total kickban the player: "%1"? Czy na pewno chcesz całkowicie zablokować gracza: "%1"? - - + + T T - - - + + + sec (action) sekund (na akcję) - - - + + + sec (hand delay) sekund (między rękami) @@ -3473,14 +3516,14 @@ p, li { white-space: pre-wrap; } Połączeni gracze - max. %1 - - + + running games: %1 gry w trakcie: %1 - - + + open games: %1 otwarte gry : %1 @@ -3490,45 +3533,50 @@ p, li { white-space: pre-wrap; } Zaproś %1 - + Ignore %1 Ignoruj %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 został zaproszony do %2 przez %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 odrzucił zaproszenie do %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 nie może dołączyć do %2 ponieważ jest zajęty.</span> - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + The game will start in<br><b>%1</b> seconds. Gra rozpocznie się za <br><b>%1</b> sekund. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Dołączyłeś do gry "tylko dla zaproszonych". Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście dostepnych graczy. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Zostałeś zaproszony do gry <b>%1</b> przez <b>%2</b>.<br>Chcesz dołączyć do tej gry? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Nie będziesz otrzymywał żadnych informacji ani zaproszeń do gry od tego gracza.<br>Czy na pewno chcesz dodać gracza <b>%1</b> do listy ignorowanych? @@ -3537,31 +3585,31 @@ Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście d osób na chacie: %1 - - + + connected players: %1 podłączonych graczy: %1 - - + + Players (%1) Gracze (%1) - - - + + + Spectators (%1) Oglądający (%1) - + search for player ... szukaj gracza... - + Chat is only available to registered players. Chat jest dostępny tylko dla zarejestrowanych graczy. @@ -3571,31 +3619,42 @@ Możesz zapraszać innych graczy klikając prawym przyciskiem myszy na liście d Zaproś gracza... - + Ignore player ... Ignoruj gracza... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 gra w "%2". - + %1 is not playing at the moment. %1 nie gra w tej chwili. - - + + PokerTH - Info Message PokerTH - Informacja - - + + - + + PokerTH - Question PokerTH - Pytanie @@ -3926,19 +3985,19 @@ p, li { white-space: pre-wrap; } gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Stop @@ -3951,14 +4010,14 @@ p, li { white-space: pre-wrap; } Ctrl+N aby rozpocząć nową grę - - - - - - - - + + + + + + + + Start Start @@ -4109,8 +4168,8 @@ Proszę wybrać inny nick. Niestety ten serwer jest w tej chwili pełny. - - + + Chat Chat @@ -4195,26 +4254,26 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Proszę wejdź na stronę <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> i śćiągnij ostatnią wersję. - + Closing PokerTH during network game Zamknięcie PokerTH podczas gry siecowej - + You are the hosting server. Do you want to close PokerTH anyway? Jesteś gospodarzem. Chcesz naprawdę zamknąć PokerTH? - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Open-Source'owa gra Texas Holdem - - - - - + + + + + Lobby Chat @@ -4235,88 +4294,88 @@ Proszę wejdź na stronę <a href="http://www.pokerth.net/" target= Ta wersja beta PokerTH jest przestarzała.<br>Proszę odwiedzić stronę <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> i zainstalować najnowszą wersję. - + PokerTH - Internet Game Message PokerTH - Komunikat serwera gier online - + Attention! Do you really want to leave the current game and go back to the lobby? Uwaga! Czy na pewno chcesz opuścić tę grę i powrócić do chatu? - - + + Chance Szanse - + PokerTH %1 PokerTH %1 - + Really want to exit? Na pewno wyjść? - + PokerTH - Close Table? PokerTH - Zamknąć stół? - - + + Kick Wyrzuć - - + + Do you want to kick <b>%1</b><br>from this game? Czy chcesz wyrzucić gracza %1 z tej gry? - - - - + + + + <b>%1</b> secs left pozostało <b>%1</b> sekund - + vote głos - + votes głosy(-ów) - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Gracz <b>%1</b> zebrał <b>%2</b> %3<br>przeciwko sobie. <b>%4</b> głosów potrzebnych do wyrzucenia. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Zebrałeś <b>%1</b> %2 przeciwko sobie.<br><b>%3</b> głosów potrzebnych do wyrzucenia. + - Chat is only available to registered players. Chat jest dostępny dla zarejestrowanych graczy. - + Spectators Oglądający @@ -4392,7 +4451,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account Utwórz nowe konto @@ -4557,10 +4616,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Ładuj Server-Profile-File Error @@ -4571,39 +4630,39 @@ p, li { white-space: pre-wrap; } - - - - + + + + Could not load server-profiles-file: %1 Błąd ładowania listy serwerów z pliku: %1 - + Save Server Profile Error Zapisz Server Profile Error - + Read Server-Profile List Error Wczytaj Server-Profile List Error - + Could not read server-profiles list Błąd wczytywania listy serwerów z pliku - - + + Save Server-Profile-File Error Zapisz Server-Profile-File Error - - + + Could not save server-profiles-file: %1 Błąd zapisywania listy serwerów do pliku: @@ -4615,7 +4674,7 @@ p, li { white-space: pre-wrap; } Błąd zapisywania listy serwerów do pliku: - + A profile with the name: %1 already exists. Would you like to overwrite ? Profil o nazwie %1 już egsystuje. @@ -4683,12 +4742,12 @@ Chzesz go prezepisać ? manualBlindsOrderDialogImpl - + Manual Blinds Order Własna konfiguracja ciemnych - + You cannot set more than 30 manual blinds. Nie możesz ustawić więcej niż 30 wartości ciemnych @@ -4815,36 +4874,36 @@ Chzesz go prezepisać ? selectAvatarDialogImpl - - - + + + Avatar File Error Błędny plik avatara - + Please select an avatar from the list! Proszę wybrać avatar z listy! - + Select external avatar picture Wybierz avatar z pliku - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Avatar jest za duży. (maksymalnie 30 KB) Proszę wybrać mniejsze! - + Images (*.png *.jpg *.gif) Pliki graficzne (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! Wybrany avatar nie istnieje! @@ -4860,20 +4919,20 @@ Proszę wybrać inny! Ustawienia - - + + Play sound effects Włącz efekty dźwiękowe - - + + Sound Volume: Głośność: - - + + 10 10 @@ -4927,8 +4986,8 @@ p, li { white-space: pre-wrap; } Pokaż lewy zestaw narzędzi - - + + Play blind raise notification przy możliwym przypadkowym sprawdzeniu podbicia @@ -4949,28 +5008,28 @@ p, li { white-space: pre-wrap; } Pokaż prawy zestaw narzędzi - - + + Show game settings dialog on every new game Zawsze pytaj o ustawienia przed rozpoczęciem gry - - + + Number of players: Liczba graczy: - - + + Game Speed: Szybkość gry: - - - - + + + + Start Cash: Początkowe żetony: @@ -4981,84 +5040,84 @@ p, li { white-space: pre-wrap; } Nie pokazuj ekranu powitalnego przy starcie - - + + Game Table Stół - - + + Card Deck Karty - - + + Card Back Rewers kart - - + + Use card back from card style Użyj domyślnego rewersu talii kart - - + + Use custom card back picture: Użyj innego rewersu kart: - - + + Pause between hands (press "start" button to go on) Przerwa między rozdaniami ("start" rozpoczyna nowe rozdanie) - - + + Server Password: Hasło serwera: - - - - + + + + Server Port: Port serwera: - - - - - - Use SCTP - Używaj SCTP - - - - - - - Use IPv6 - Używaj IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://pl.wikipedia.org/wiki/IPv6">Co to jest?</a> - + Use SCTP + Używaj SCTP + + + + + + + Use IPv6 + Używaj IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://pl.wikipedia.org/wiki/IPv6">Co to jest?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://pl.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Co to jest?</a> @@ -5067,8 +5126,8 @@ p, li { white-space: pre-wrap; } Szybkość przeciwników komputerowych: - - + + Maximum number of players: Maksymalna liczba graczy: @@ -5081,44 +5140,44 @@ p, li { white-space: pre-wrap; } Nicki graczy - - + + Computer Engine Przeciwnicy komputerowi - - + + Opponent 6: Przeciwnik 6: - - + + Opponent 5: Przeciwnik 5: - - + + Opponent 4: Przeciwnik 4: - - + + Opponent 3: Przeciwnik 3: - - + + Opponent 2: Przeciwnik 2: - - + + Opponent 1: Przeciwnik 1: @@ -5133,13 +5192,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Wskazówka: Najlepiej używać obrazka z propocjami </span><br><span style=" font-weight:600; font-style:italic;">szerokość=50, wysokość=50.</span></p></body></html> - + Human Player: Gracz: - - + + Enable/Disable Logging Włącz zapisywanie historii @@ -5152,55 +5211,60 @@ p, li { white-space: pre-wrap; } dzień/dni - - + + Log File Directory: Zapisz pliki w: - - + + Write log after every: Zapisuj po: - - + + Store log files for: Przechowuj pliki przez: - - + + action (high frequent disc access) każdej akcji (bardzo częste odwołania do dysku) - - + + hand (medium disc access) każdym rozdaniu (przeciętne odwołania do dysku) - - + + game (low disc access) każdej grze (rzadkie odwołania do dysku) - + Log Messages Historia rozdań - + + Show network state color in the corner of the avatar + + + + Local Game Settings Ustawienia gier lokalnych - + Network Game Settings Ustawienia gier sieciowych @@ -5217,18 +5281,18 @@ p, li { white-space: pre-wrap; } - + Sound Dźwięki - - + + Network Server Settings Ustawienia gier siecowych - + Internet Game Settings Ustawienia gier online @@ -5237,14 +5301,14 @@ p, li { white-space: pre-wrap; } Ustawienia serwera gier internetowych - - + + Server Address: Adres serwera: - - + + Use password for private game: Używaj tego hasła do gier prywatnych: @@ -5265,78 +5329,78 @@ p, li { white-space: pre-wrap; } Odwrotna kolejność klawiszy F (F1-F3) - - - - + + + + First small blind: Pierwsza mała ciemna: - - - - + + + + Raise blinds: Zwiększaj ciemne: - - - - - - - - + + + + + + + + Every: co: - - - - + + + + hands rozdań - - - - + + + + minutes minut - - - - + + + + Raise mode: Sposób zwiększania ciemnych: - - - - + + + + Always double blinds Podwajaj wartość ciemnych - - - - + + + + Manual blinds order: Własna konfiguracja: - - - - + + + + Edit ... Edytuj ... @@ -5347,31 +5411,31 @@ p, li { white-space: pre-wrap; } Język: - + Note: Best quality with image ratio like width=48, height=76. Informacja: najlepsza jakość przy obrazku o wielkości: szerokość = 48, wysokość = 76. - - + + Sound Categories Odtwarzaj dźwięki - - + + Play game actions sounds like "check", "call", "raise" przy akcjach takich jak czekanie, sprawdzanie, podbijanie - - + + Play lobby chat notifications chatu gier online - - + + Play network/internet game notifications like "player joined the game" dotyczące gry sieciowej np. "gracz dołączył do gry" @@ -5380,7 +5444,7 @@ p, li { white-space: pre-wrap; } Włącz chat gier internetowych (serwer IRC) - + Player Nicks/Avatars Nicki graczy/avatary @@ -5406,7 +5470,7 @@ p, li { white-space: pre-wrap; } Gra sieciowa - + Switch keyboard focus to bet-input-field if it's your turn Przejdź do pola wprowadzania stawki na początku tury @@ -5416,33 +5480,33 @@ p, li { white-space: pre-wrap; } Hasło kanału: - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Czas na ruch: - - - - + + + + s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5453,7 +5517,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Informacja: Domyślne </span><span style=" font-weight:600; font-style:italic;">Ustawienia Gry</span><span style=" font-style:italic;"> takie jak "Maksymalna liczba graczy", "Początkowe żetony" i "Mała ciemna" zostaną wzięte </span><span style=" font-weight:600; font-style:italic;">z Ustawień Gier Sieciowych.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5464,42 +5528,42 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Informacja: Najlepiej wyglądają avatary o proporcjach </span><span style=" font-weight:600; font-style:italic;">szerokość=50, wysokość=50.</span></p></body></html> - - + + Automatic Server Configuration URL Automatyczna lista serwerów - - + + Serverlist Address: Adres listy serwerów: - - + + Manual Server Configuration Ustawienia własne - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. Informacja: Domyślne ustawienia gry takie jak "Maksymalna liczba graczy", "Początkowe żetony" oraz "Mała ciemna" zostaną wzięte z ustawień gry sieciowej. - - + + Allow spectators to watch the game Pozwól innym oglądać rozgrywkę - + (This nick will also be used for the online game login) (ten nick będzie również użyty w grach online) - - + + Day(s) dni @@ -5538,22 +5602,22 @@ p, li { white-space: pre-wrap; } Hasło: - - + + Avatar Server: Serwer avatarów: - + Style Skórka - + Factory Settings Ustawienia domyślne @@ -5570,56 +5634,61 @@ p, li { white-space: pre-wrap; } Nie używaj tłumaczeń wyrażeń pokerowych takich jak check, call, raise zawartych w skórce stołu - + Show country flag in the corner of avatar Pokaż flagę narodową w rogu avatara - + Activate the "accidentally call after big raise" blocker Włącz blokadę przypadkowego sprawdzenia dużego podbicia - + Do not hide avatars of players which are on the ignore list Pokaż avatary ignorowanych graczy - + Disable emoticons in the chat Wyłącz emotikony w chacie - - - - - Add ... - Dodaj... + + Show network state color on the avatar + + Add ... + Dodaj... + + + + + + Remove Usuń - - - - + + + + Preview - Information: Podgląd - informacje: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5632,31 +5701,31 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Pobierz nowe skórki stołu...</span></a></p></body></html> - - - - + + + + Description Opis - - - - + + + + Maintainer Opiekun - - - + + + State Stan - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5669,7 +5738,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Pobierz nowe skórki kart...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5688,96 +5757,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Informacja: Najlepszą jakość dają obrazki o proporcjach </span><span style=" font-weight:600; font-style:italic;">szerokość=48, wysokość=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Przerwa między rękami: - - + + Server Serwer - - + + Game Gra - - + + Default game name: Domyślna nazwa gry: - - + + Default game type: Domyślny typ gry: - - + + Standard Standardowa - - + + Registered players only Tylko dla zarejestrowanych - - + + Invited players only Tylko dla zaproszonych - - + + Ranking game Gra rankingowa - + Show lobby chat Pokaż chat - - + + Automatically leave the table after the game finished Opuść stół automatycznie po zakończeniu gry - - + + Ignored Players Ignorowani gracze - - + + Player Gracz - - + + Remove Player Usuń gracza - + OK OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5790,19 +5859,19 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Gracz:<br /><span style=" font-style:italic;">(Ten nick zostanie też użyty jako login dla gier online)</span></p></body></html> - - + + Opponent 7: Przeciwnik 7: - - + + Opponent 8: Przeciwnik 8: - + Note: Best avatar quality with image ratio like width=50, height=50. Informacja: najlepsza jakość przy obrazku o wielkości: szerokość = 50, wysokość = 50. @@ -5827,14 +5896,14 @@ p, li { white-space: pre-wrap; } Usuń - - + + Reset all settings to default ... Przywróć ustawienia domyślne ... - - + + Note: You can not reset all settings to default during a running game! Informacja: nie można przywrócić ustawień fabrycznych podczas rozgrywania gry! @@ -5847,8 +5916,8 @@ p, li { white-space: pre-wrap; } Przeciwnik 1: {10:?} - - + + Opponent 9: Przeciwnik 9: @@ -5856,38 +5925,38 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Błąd w ustawieniach - + Select your flipside picture Wybierz własny obrazek - + Open Directory Otwórz folder - + Images (*.png *.jpg *.gif) Pliki graficzne (*.png *.jpg *.gif)Zjęcia (*.png *.jpg *.gif) - - + + Blinds Error Błąd ustawień ciemnych - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5897,67 +5966,67 @@ Pierwsza mała ciemna zostanie ustawiona na maksymalną możliwą wartość. - + Dutch Holenderski - + Afrikaans Afrykanerski - + Bulgarian Bułgarski - + Catalan Kataloński - + Chinese Chiński - + Czech Czeski - + Danish Duński - + English Angielski - + Finnish Fiński - + French Francuski - + German Niemiecki - + Greek Grecki - + Hungarian Węgierski @@ -5970,254 +6039,254 @@ możliwą wartość. Portugalski - + Russian Rosyjski - + Turkish Turecki - + Language Changed Język został zmieniony - + You have changed application language to %1. Please restart PokerTH to load new language! Zmieniłeś język na %1. Proszę ponownie uruchomić PokerH aby wczytać nowy język! - + Italian Włoski - + Lithuania Litewski - + Polish Polski - + Portuguese-Brazilian Portugalski (Brazylia) - + Portuguese-Portuguese Portugalski (Portugalia) - + Slovak Słowacki - + Spanish Hiszpański - + Swedish Szwedzki - + Tamil Tamilski - + The entered flipside picture doesn't exist. Please enter an valid picture! Wybrany własny obrazek talii nie istnieje. Proszę wybrać inny obrazek! - - + + The log file directory doesn't exist. Please select an valid directory! Wybrany folder dla plików logu nie istnieje. Proszę wybrać inny folder! - + Norwegian Norweski - + Galician Galicyjski - + Japanese Japoński - + Scottish Gaelic Szkocki celtycki - + Vietnamese Wietnamski - + The opponent names are not unique. Please choose different names for each Opponent! Nazwy przeciwników nie są unikatowe. Proszę wybrać różne nazwy! - + The entered server list address is not a valid URL. Please enter a valid server list address! Wprowadzono niepoprawny adres URL listy serwerów. Proszę wprowadzić prawidłowy adres URL! - + Settings Information Informacje dotyczące ustawień - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Zmieniłeś katalog z plikami logów. Proszę ponownie uruchomić PokerTH aby użyć nowego katalogu! - - + + Maintainer Name Opiekun - - + + Maintainer EMail E-mail opiekuna - - + + Create Date Data utworzenia - + Windows Behaviour Rozmiar okna - + scaleable dowolny - + fixed stały - + Minimum Size Rozmiar minimalny - + Maximum Size Rozmiar maksymalny - + Fixed Size Stały rozmiar - + State Stan - + Please select your game table style Wybierz skórkę stołu - + PokerTH game table styles (*.xml) Skórka stołu PokerTH (*.xml) - + Game Table Style Error Błąd skórki stołu - + Selected game table style file is already in the list. Please select another one to add! Wybrana skórka stołu jest już na liście. Proszę wybierz inną aby ją dodać! - + Game Table Style File Error Błąd pliku skórki stołu - + Could not load game table style file correctly. Style will not be placed into list! Nie udało się wczytać skórki stołu z tego pliku. Skórka nie zostanie dodana do listy! - + Please select your card deck style Wybierz skórki kart - + PokerTH card deck styles (*.xml) Skórka kart PokerTH (*.xml) - + Card Deck Style Error Błąd skórki kart - + Selected card deck style file is already in the list. Please select another one to add! Wybrana skórka kart jest już na liście. Proszę wybierz inną aby ją dodać! - + Card Deck Style File Error Błąd pliku skórki kart - + Could not load card deck style file correctly. Style will not be placed into list! Nie udało się wczytać skórki kart z tego pliku. @@ -6256,12 +6325,12 @@ Skórka nie zostanie dodana do listy! Plik logu PokerTH w formacie SQL (*.pdb) - + PokerTH - Settings PokerTH - ustawienia - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Uwaga: Zamierzasz usunąc wszystkie ustawienia i zamknąć PokerTH! @@ -6327,12 +6396,12 @@ Czy na pewno chcesz przywrócić ustawienia domyślne? startNetworkGameDialogImpl - + Server Error Błąd serwera - + You should not kick yourself from this game! Nie powinieneś wyrzucać sam siebie z tej gry! diff --git a/ts/pokerth_ptbr.ts b/ts/pokerth_ptbr.ts index e3100492..7d84e525 100644 --- a/ts/pokerth_ptbr.ts +++ b/ts/pokerth_ptbr.ts @@ -491,6 +491,34 @@ Por Favor, verifique se você está enviando o arquivo de log valido do PokerTH. Add/Edit/Remove tooltip + + Unignore Player + + + + Server response times + + + + Average: + + + + ms + + + + Minimum: + + + + Maximum: + + + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + ServerListDialog @@ -4096,6 +4124,22 @@ Sinta se avontade para convidar outro jogador clicando no apelido na lista de jo Spectators (%1) Espectadores (%1) + + Unignore player + + + + Unignore %1 + + + + Unignore player ... + + + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + gameTable @@ -6039,6 +6083,14 @@ p, li { white-space: pre-wrap; } Allow spectators to watch the game Permitir espectadores a assistirem o jogo + + Show network state color on the avatar + + + + Show network state color in the corner of the avatar + + settingsDialogImpl diff --git a/ts/pokerth_ptpt.ts b/ts/pokerth_ptpt.ts index f878218d..77c8ee53 100644 --- a/ts/pokerth_ptpt.ts +++ b/ts/pokerth_ptpt.ts @@ -304,106 +304,106 @@ Por favor, selecione uma mesa e tente novamente! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML Exportar o ficheiro de registo PokerTH para HTML - + PokerTH HTML log (*.html) Registo PokerTH HTML (*.html) - + Export PokerTH log file to plain text Exportar o ficheiro de registo PokerTH para texto - + PokerTH plain text log (*.txt) Registo em texto PokerTH (*.log) - + Save PokerTH log file Gravar ficheiro de registo - + PokerTH SQL log (*.pdb) Registo SQL do Poker Th (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -427,22 +427,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar Denunciar "avatar" impróprio - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? A partir de agora, não receberá mais mensagens de "chat" ou convites deste utilizador.<br>Pretende colocar o jogador <b>%1</b> na lista de ignorados? - - + + + PokerTH - Question PokerTH - Pergunta - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? Tem a certeza que quer denunciar o "avatar" de "%1" como impróprio? @@ -977,127 +1015,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Sobre PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -1214,12 +1252,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order "Blinds" manuais - + You cannot set more than 30 manual blinds. Não pode definir mais de 30 "blinds" manuais. @@ -1253,40 +1291,40 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Não pode entra na sala de jogo com o "nickname" "Human Player". Por favoer, escolha outro. - - - + + + Nick name: "Nickname": - + Your player name is already used by another player. Please choose a different name. O nome pretendido já é utilizado por outro jogador. Por favor, escolha outro. - + The player name is too short, too long or invalid. Please choose another one. O nome do jogador é muito pequeno, grande ou inválido. Por favor, escolha outro. - + There is already a game with your chosen game name. Please choose another one! Já existe um jogo com o nome que você escolheu. Por favor, escolha outro! - + There is a forbidden word in your chosen game name. Please choose another one! No nome do seu jogo , existe uma palavra inválida. @@ -1299,8 +1337,8 @@ Please choose another one! Por favor, escolha outro! - - + + Game name: Nome do jogo: @@ -1334,27 +1372,27 @@ Por favor, escolha outro! connectToServerDialogImpl - + Resolving address... Resolvendo endereço... - + Connecting to server... Ligando ao servidor... - + Starting session... Iniciando sessão... - + Connection established! Ligação estabelecida! - + Reading server list... Obtendo lista de servidor(es)... @@ -1501,7 +1539,7 @@ Por favor, escolha outro! <i>Duplicar "blinds" a cada %1 mão(s)</i> - + %1's game Jogo de %1' @@ -1819,51 +1857,51 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... Iniciando jogo. Por favor, aguarde... - + Joining a private Game Entrar num jogo privado - + You are about to join a private game. Please enter the password! Está prestes a entrar num jogo privado. Indique a sua senha! - + open aberto - - - - + + + + Game Info Info sobre o jogo - - + + Game Jogo - - + + Players Jogadores - - + + State Estado @@ -1873,15 +1911,15 @@ p, li { white-space: pre-wrap; } - - + + P P - - + + Available Players Jogadores disponíveis @@ -1897,34 +1935,39 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Informações do jogador... - - - + + + Standard Padrão - - - + + + Registered players only Só para jogadores registados - - - + + + Invited players only Só para jogadores convidados - - - + + + Ranking game Jogo de classificação @@ -1934,27 +1977,27 @@ p, li { white-space: pre-wrap; } - - + + T T - + Report inappropriate game name - - - + + + sec (action) - - - + + + sec (hand delay) @@ -1963,32 +2006,32 @@ p, li { white-space: pre-wrap; } Jogadores ligados - máx. %1 - + running a decorrer - - + + running games: %1 jogos a decorrer: %1 - - + + open games: %1 jogos abertos: %1 - - + + Players (%1) - - - + + + Spectators (%1) @@ -1998,95 +2041,95 @@ p, li { white-space: pre-wrap; } Convidar %1 - + Ignore %1 Ignorar %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 foi convidado para %2 por %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 rejeitou o convite para %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 não pode entrar em %2. De momento, está ocupado.</span> - + The game will start in<br><b>%1</b> seconds. O jogo vai iniciar dentro de <br><b>%1</b> segundos. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Entrou num jogo disponível por convite. Sinta-se à vontade para convidar outros jogadores através da lista dos "nicks" disponíveis. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Foi convidado por <b>%2</b> para o jogo <b>%1</b>.<br> Pretende entra neste jogo? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? A partir de agora, não receberá mais mensagens de "chat" ou convites deste utilizador.<br>Pretende colocar o jogador <b>%1</b> na lista de ignorados? - - + + connected players: %1 Jogadores ligados: %1 - + Waiting for the start of the next hand to rejoin the game ... À espera pelo inicio da proxima mão para entrar de novo no jogo - + Click here to view the online rankings - + Spectate - - + + Time - - + + Show player stats Mostrar as estatisticas do jogador - - + + Admin action ... - + Total kickban - + Close game @@ -2095,42 +2138,42 @@ Sinta-se à vontade para convidar outros jogadores através da lista dos "n Jogadores ligados - + hands mãos - + minutes minutos - + double blinds duplicar "blinds" - + manual blinds order "blinds" manuais - + Server Error Erro do servidor - + You should not kick yourself from this game! Você não se pode expulsar deste jogo! - + search for player ... pesquisar pelo jogador... - + Chat is only available to registered players. O "chat" só está disponível para jogadores registados. @@ -2140,1263 +2183,1279 @@ Sinta-se à vontade para convidar outros jogadores através da lista dos "n Convidar jogador... - + Ignore player ... Ignorar jogador... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 está a jogar em "%2". - + %1 is not playing at the moment. De momento, %1 não está a jogar. - - + + PokerTH - Info Message Poket TH - Informações - - + + - + + PokerTH - Question PokerTH - Pergunta - - Afghanistan - - - - - ALand Islands - - - - - Albania - - - - - Algeria - - - - - American Samoa - - - - - Andorra - - - - - Angola - - - - - Anguilla - - - - - Antarctica - - - - - Antigua And Barbuda - - - - - Argentina - - - - - Armenia - - - - - Aruba - - - - - Australia - - - - - Austria - - - - - Azerbaijan - - - - - Bahamas + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? - Bahrain + Afghanistan - Bangladesh + ALand Islands - Barbados + Albania - Belarus + Algeria - Belgium + American Samoa - Belize + Andorra - Benin + Angola - Bermuda + Anguilla - Bhutan + Antarctica - Bolivia + Antigua And Barbuda - Bosnia And Herzegovina + Argentina - Botswana + Armenia - Bouvet Island + Aruba - Brazil + Australia - British Indian Ocean Territory + Austria - Brunei Darussalam + Azerbaijan - Bulgaria + Bahamas - Burkina Faso + Bahrain - Burundi + Bangladesh - Cambodia + Barbados - Cameroon + Belarus - Canada + Belgium - Cape Verde + Belize - Cayman Islands + Benin - Central African Republic + Bermuda - Chad + Bhutan - Chile + Bolivia - China + Bosnia And Herzegovina - Christmas Island + Botswana - Cocos (Keeling) Islands + Bouvet Island - Colombia + Brazil - Comoros + British Indian Ocean Territory - Congo + Brunei Darussalam - Congo, The Democratic Republic Of The + Bulgaria - Cook Islands + Burkina Faso - Costa Rica + Burundi - Cote D'Ivoire + Cambodia - Croatia + Cameroon - Cuba + Canada - Cyprus + Cape Verde - Czech Republic + Cayman Islands - Denmark + Central African Republic - Djibouti + Chad - Dominica + Chile - Dominican Republic + China - Ecuador + Christmas Island - Egypt + Cocos (Keeling) Islands - El Salvador + Colombia - Equatorial Guinea + Comoros - Eritrea + Congo - Estonia + Congo, The Democratic Republic Of The - Ethiopia + Cook Islands - Falkland Islands (Malvinas) + Costa Rica - Faroe Islands + Cote D'Ivoire - Fiji + Croatia - Finland + Cuba - France + Cyprus - French Guiana + Czech Republic - French Polynesia + Denmark - French Southern Territories + Djibouti - Gabon + Dominica - Gambia + Dominican Republic - Georgia + Ecuador - Germany + Egypt - Ghana + El Salvador - Gibraltar + Equatorial Guinea - Greece + Eritrea - Greenland + Estonia - Grenada + Ethiopia - Guadeloupe + Falkland Islands (Malvinas) - Guam + Faroe Islands - Guatemala + Fiji - Guernsey + Finland - Guinea + France - Guinea-Bissau + French Guiana - Guyana + French Polynesia - Haiti + French Southern Territories - Heard Island And Mcdonald Islands + Gabon - Holy See (Vatican City State) + Gambia - Honduras + Georgia - Hong Kong + Germany - Hungary + Ghana - Iceland + Gibraltar - India + Greece - Indonesia + Greenland - Iran, Islamic Republic Of + Grenada - Iraq + Guadeloupe - Ireland + Guam - Isle Of Man + Guatemala - Israel + Guernsey - Italy + Guinea - Jamaica + Guinea-Bissau - Japan + Guyana - Jersey + Haiti - Jordan + Heard Island And Mcdonald Islands - Kazakhstan + Holy See (Vatican City State) - Kenya + Honduras - Kiribati + Hong Kong - Korea, Democratic People'S Republic Of + Hungary - Korea, Republic Of + Iceland - Kuwait + India - Kyrgyzstan + Indonesia - Lao People'S Democratic Republic + Iran, Islamic Republic Of - Latvia + Iraq - Lebanon + Ireland - Lesotho + Isle Of Man - Liberia + Israel - Libyan Arab Jamahiriya + Italy - Liechtenstein + Jamaica - Lithuania - Lituanês + Japan + - Luxembourg + Jersey - Macao + Jordan - Macedonia, The Former Yugoslav Republic Of + Kazakhstan - Madagascar + Kenya - Malawi + Kiribati - Malaysia + Korea, Democratic People'S Republic Of - Maldives + Korea, Republic Of - Mali + Kuwait - Malta + Kyrgyzstan - Marshall Islands + Lao People'S Democratic Republic - Martinique + Latvia - Mauritania + Lebanon - Mauritius + Lesotho - Mayotte + Liberia - Mexico + Libyan Arab Jamahiriya - Micronesia, Federated States Of + Liechtenstein - Moldova, Republic Of - + Lithuania + Lituanês - Monaco + Luxembourg - Mongolia + Macao - Montserrat + Macedonia, The Former Yugoslav Republic Of - Morocco + Madagascar - Mozambique + Malawi - Myanmar + Malaysia - Namibia + Maldives - Nauru + Mali - Nepal + Malta - Netherlands + Marshall Islands - Netherlands Antilles + Martinique - New Caledonia + Mauritania - New Zealand + Mauritius - Nicaragua + Mayotte - Niger + Mexico - Nigeria + Micronesia, Federated States Of - Niue + Moldova, Republic Of - Norfolk Island + Monaco - Northern Mariana Islands + Mongolia - Norway + Montserrat - Oman + Morocco - Pakistan + Mozambique - Palau + Myanmar - Palestinian Territory, Occupied + Namibia - Panama + Nauru - Papua New Guinea + Nepal - Paraguay + Netherlands - Peru + Netherlands Antilles - Philippines + New Caledonia - Pitcairn + New Zealand - Poland + Nicaragua - Portugal + Niger - Puerto Rico + Nigeria - Qatar + Niue - Reunion + Norfolk Island - Romania + Northern Mariana Islands - Russian Federation + Norway - Rwanda + Oman - Saint Helena + Pakistan - Saint Kitts And Nevis + Palau - Saint Lucia + Palestinian Territory, Occupied - Saint Pierre And Miquelon + Panama - Saint Vincent And The Grenadines + Papua New Guinea - Samoa + Paraguay - San Marino + Peru - Sao Tome And Principe + Philippines - Saudi Arabia + Pitcairn - Senegal + Poland - Serbia And Montenegro + Portugal - Seychelles + Puerto Rico - Sierra Leone + Qatar - Singapore + Reunion - Slovakia + Romania - Slovenia + Russian Federation - Solomon Islands + Rwanda - Somalia + Saint Helena - South Africa + Saint Kitts And Nevis - South Georgia And The South Sandwich Islands + Saint Lucia - Spain + Saint Pierre And Miquelon - Sri Lanka + Saint Vincent And The Grenadines - Sudan + Samoa - Suriname + San Marino - Svalbard And Jan Mayen + Sao Tome And Principe - Swaziland + Saudi Arabia - Sweden + Senegal - Switzerland + Serbia And Montenegro - Syrian Arab Republic + Seychelles - Taiwan, Province Of China + Sierra Leone - Tajikistan + Singapore - Tanzania, United Republic Of + Slovakia - Thailand + Slovenia - Timor-Leste + Solomon Islands - Togo + Somalia - Tokelau + South Africa - Tonga + South Georgia And The South Sandwich Islands - Trinidad And Tobago + Spain - Tunisia + Sri Lanka - Turkey + Sudan - Turkmenistan + Suriname - Turks And Caicos Islands + Svalbard And Jan Mayen - Tuvalu + Swaziland - Uganda + Sweden - Ukraine + Switzerland - United Arab Emirates + Syrian Arab Republic - United Kingdom + Taiwan, Province Of China - United States + Tajikistan - United States Minor Outlying Islands + Tanzania, United Republic Of - Uruguay + Thailand - Uzbekistan + Timor-Leste - Vanuatu + Togo - Venezuela + Tokelau - Viet Nam + Tonga - Virgin Islands, British + Trinidad And Tobago - Virgin Islands, U.S. + Tunisia - Wallis And Futuna + Turkey - Western Sahara + Turkmenistan - Yemen + Turks And Caicos Islands - Zambia + Tuvalu + Uganda + + + + + Ukraine + + + + + United Arab Emirates + + + + + United Kingdom + + + + + United States + + + + + United States Minor Outlying Islands + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Viet Nam + + + + + Virgin Islands, British + + + + + Virgin Islands, U.S. + + + + + Wallis And Futuna + + + + + Western Sahara + + + + + Yemen + + + + + Zambia + + + + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3683,99 +3742,99 @@ Sinta-se à vontade para convidar outros jogadores através da lista dos "n gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Parar - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - - - - + + + + + + + + Start Iniciar - - - - - + + + + + Lobby Sala - - + + Chat "Chat" - + Closing PokerTH during network game Fechando Poker TH durante um jogo de rede - + You are the hosting server. Do you want to close PokerTH anyway? Você está a funcionar como servidor. Tem acerteza que quer fechar? - + Really want to exit? Tem a certeza que quer sair? - + PokerTH - Close Table? PokerTH - Fechar mesa? - + PokerTH - Internet Game Message Poket TH - Mensagem do jogo em rede - + Attention! Do you really want to leave the current game and go back to the lobby? Atenção! Pretende sair do jogo atual e voltar para a sala? + - Chat is only available to registered players. O "chat" só está disponível para jogadores registados. - + Spectators @@ -3794,50 +3853,50 @@ Após %1 interrupções o servidor precisa de o expulsar para manter o fluxo de Se vai ficar ausente, utilize o botão "ausente" na caixa de ferramentas à direita. - - + + Chance Hipóteses - - + + Kick Expulsar - - + + Do you want to kick <b>%1</b><br>from this game? Deseja expulsar o jogador <b>%1</b><br> deste jogo? - - - - + + + + <b>%1</b> secs left faltam <b>%1</b> segundos - + vote voto - + votes votos - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. O jogador <b>%1</b> tem <b>%2</b> %3<br>contra ele. <b>%4</b> voto(s) precisos para a expulsão. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Você tem <b>%1</b> %2 contra si.<br><b>%3</b> voto(s) precisos para a expulsão. @@ -3913,7 +3972,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account @@ -4054,10 +4113,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Carregar ficheiro de erro do perfil do servidor @@ -4067,45 +4126,45 @@ p, li { white-space: pre-wrap; } Incapaz de carregar ficheiro de erro do perfil: - - - - + + + + Could not load server-profiles-file: %1 - + Save Server Profile Error Gravar erro do perfil do servidor - + A profile with the name: %1 already exists. Would you like to overwrite ? Já existe um perfil com o nome: %1. Pretende sobrescrevê-lo? - + Read Server-Profile List Error Ler o erro do perfil do servidor - + Could not read server-profiles list Incapaz de ler o erro do perfil do servidor - - + + Save Server-Profile-File Error Gravar erro do perfil do servidor - - + + Could not save server-profiles-file: %1 @@ -4178,12 +4237,12 @@ Pretende sobrescrevê-lo? manualBlindsOrderDialogImpl - + Manual Blinds Order "Blinds" manuais - + You cannot set more than 30 manual blinds. Não pode definir mais de 30 "blinds" manuais. @@ -4306,38 +4365,38 @@ Pretende sobrescrevê-lo? selectAvatarDialogImpl - - - + + + Avatar File Error Erro no ficheiro "avatar" - + Please select an avatar from the list! Por favor, selecione um "avatar" da lista! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! O tamanho da imagem escolhida é muito grande. (max. 30KB) Por favor, escolha uma imagem mais pequena! - + The entered avatar picture doesn't exist. Please enter an valid picture! A imagem indicada não existe. Por favor, indique uma imagem válida! - + Select external avatar picture Selecionar uma imagem externa - + Images (*.png *.jpg *.gif) Imagens (*.png *.jpg *.gif) @@ -4399,7 +4458,7 @@ Por favor, indique uma imagem válida! Rede / Jogo na internet - + Switch keyboard focus to bet-input-field if it's your turn Na sua vez, trocar foco do teclado do campo de aposta @@ -4407,14 +4466,14 @@ Por favor, indique uma imagem válida! - + Sound Som - + Factory Settings @@ -4431,280 +4490,285 @@ Por favor, indique uma imagem válida! Desativar ecrã inicial - + Show country flag in the corner of avatar Mostrar a bandeira do país no canto do "avatar" - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Game Table Mesa de jogo - - - - + + + + Description Descrição - - - - + + + + Maintainer Programador - - - + + + State Estado - - + + Card Deck Baralho - - + + Card Back Verso da cartas - - + + Use card back from card style Utilizar verso do estilo de cartas - - + + Use custom card back picture: Utilizar imagem personalizada: - - + + Play sound effects Reproduzir efeitos sonoros - - + + Sound Volume: Volume: - - + + 10 10 - - + + Sound Categories Categorias de sons - - + + Play game actions sounds like "check", "call", "raise" Reproduzir sons de "check", "call", "raise" - - + + Play lobby chat notifications Reproduzir notificações da sala de "chat" - - + + Play network/internet game notifications like "player joined the game" Reproduzir notificações de jogo na internet (ex: jogador entrou no jogo) - - + + Server Password: - - + + Allow spectators to watch the game - + OK - + Local Game Settings Definições do jogo local - - + + Number of players: Número máximo de jogadores: - - - - + + + + Start Cash: Dinheiro inicial: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Primeira "small blind": - - - - + + + + Raise blinds: Aumentar "blinds": - - - - - - - - + + + + + + + + Every: A cada: - - - - + + + + hands mãos - - - - + + + + minutes minutos - - - - + + + + Raise mode: Modo de aumento: - - - - + + + + Always double blinds Duplicar sempre as "blinds" - - - - + + + + Manual blinds order: "Blinds" manuais: - - - - + + + + Edit ... Editar... - - + + Game Speed: Velocidade do jogo: - - + + Pause between hands (press "start" button to go on) Tempo de espera entra mão (prima "iniciar" para prosseguir) - - + + Show game settings dialog on every new game Mostrar as definições de jogo ao iniciar novos jogos - + Network Game Settings Definições do jogo em rede - - + + Maximum number of players: Número máximo de jogadores: - - + + Timeout for player action: Intervalo para ação do jogador: @@ -4717,14 +4781,14 @@ Por favor, indique uma imagem válida! Exportar como HTML - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4749,66 +4813,71 @@ Por favor, indique uma imagem válida! Registo - - - - + + + + s s - - + + Network Server Settings Definições do servidor de rede - - - - + + + + Server Port: Porta do servidor: - - - - - - Use SCTP - Utilizar SCTP - - - - - - - Use IPv6 - Utilizar IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">O que é isto?</a> - + Use SCTP + Utilizar SCTP + + + + + + + Use IPv6 + Utilizar IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">O que é isto?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">O que é isto?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings Definições do jogo na internet - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4819,61 +4888,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: As definições </span><span style=" font-weight:600; font-style:italic;">de jogo</span><span style=" font-style:italic;"> "Número máximo de jogadores", "Dinheiro inicial" e "Small Blind" serão utilizadas </span><span style=" font-weight:600; font-style:italic;">com base nas definições do jogo em rede.</span></p></body></html> - - + + Server Address: Endereço do servidor: - - + + Use password for private game: Utilizar senha para jogos privados: - - + + Computer Engine Computador - - + + Opponent 6: Adversário 6: - - + + Opponent 5: Adversário 5: - - + + Opponent 4: Adversário 4: - - + + Opponent 3: Adversário 3: - - + + Opponent 2: Adversário 2: - - + + Opponent 1: Adversário 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4884,8 +4953,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: Para uma melhor qualidade do "avatar", escolha uma imagem com </span><span style=" font-weight:600; font-style:italic;">largura=50, altura=50.</span></p></body></html> - - + + Enable/Disable Logging Ativar/desativar registos @@ -4894,44 +4963,44 @@ p, li { white-space: pre-wrap; } Guardar ficheiros para - - + + Log File Directory: Diretório para registos: - - + + Write log after every: Escrever registos a cada: - - + + action (high frequent disc access) ação (acesso frequente ao disco) - - + + hand (medium disc access) mão (acesso normal ao disco) - - + + game (low disc access) jogo (acesso baixo ao disco) - + Log Messages Mensagens de registo - + Player Nicks/Avatars "Nicks/Avatars" do jogaor @@ -4946,53 +5015,53 @@ p, li { white-space: pre-wrap; } Mostrar caixa de ferramentas esquerda - - + + Play blind raise notification - - + + Automatic Server Configuration URL Configuração automática do servidor - - + + Serverlist Address: Endereço da lista de servidor(s): - - + + Manual Server Configuration Configuração manual de servidor - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: Guardar os ficheiros de registo para: - - + + Day(s) Dia(s) @@ -5027,20 +5096,20 @@ p, li { white-space: pre-wrap; } Mostrar ecrã das hipóteses de combinação - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: Servidor do "avatar": - + Style Estilo @@ -5050,33 +5119,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style Não traduzir as palavras "check", "call", "raise" - - - - - - Add ... - Adicionar... - + Add ... + Adicionar... + + + + + + Remove Remover - - - - + + + + Preview - Information: Antevisão - Informações: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5089,8 +5158,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Obter mais mesas de jogo para o PokerTH ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5103,7 +5172,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Obter mais baralhos de cartas para o PokerTH ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5122,96 +5191,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Nota: Para uma melhor qualidade, deve escolher imagens com </span><span style=" font-weight:600; font-style:italic;">largura=48, altura=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Tempo de espera entre mãos: - - + + Server Servidor - - + + Game Jogo - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Nome de jogo padrão: - - + + Default game type: Tipo de jogo padrão: - - + + Standard Padrão - - + + Registered players only Só para jogadores registados - - + + Invited players only Só para jogadores convidados - - + + Ranking game Jogo de classificação - + Show lobby chat Mostrar sala de "chat" - - + + Automatically leave the table after the game finished Sair da mesa automaticamente depois de o jogo terminar - - + + Ignored Players Jogadores ignorados - - + + Player Jogador - - + + Remove Player Remover jogador - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5224,20 +5293,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Jogador humano:<br /><span style=" font-style:italic;">(este "nick" também será utilizado para os jogos "on-line")</span></p></body></html> - - + + Opponent 7: Adversário 7: - - + + Opponent 8: Adversário 8: - - + + Opponent 9: Adversário 9: @@ -5245,65 +5314,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Erro de definições - + The entered flipside picture doesn't exist. Please enter an valid picture! A imagem indicada não existe. Por favor, indique uma imagem válida! - - + + The log file directory doesn't exist. Please select an valid directory! O diretório não existe. Por favor, indique um diretório válido! - + Language Changed O idioma foi alterado - + You have changed application language to %1. Please restart PokerTH to load new language! Você alterou o idioma da aplicação para %1. Por favor, reinicie a aplicação! - + Select your flipside picture Selecione a sua imagem invertida - + Images (*.png *.jpg *.gif) Imagens (*.png *.jpg *.gif) - + Open Directory Abrir diretório - - + + Blinds Error Erro de "blinds" - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5312,290 +5381,290 @@ This first-small-blind-value will be set to maximum allowed value. Esta 1ª "small blind" ira ser definida com o valor máximo permitido. - + The entered server list address is not a valid URL. Please enter a valid server list address! O endereço indicado não é uma URL válida. Por favor, indique um endereço válido! - + Afrikaans Afrikaans - + Bulgarian Búlgaro - + Catalan Catalão - + Chinese Chinês - + Czech Checo - + Danish Dinamarquês - + Dutch Holandês - + English Inglês - + Finnish Finlandês - + French Francês - + Galician - + German Alemão - + Greek Grego - + Hungarian Húngaro - + Italian Italiano - + Japanese Japonês - + Lithuania Lituanês - + Norwegian Norueguês - + Polish Polaco - + Portuguese-Brazilian Português - Brasil - + Portuguese-Portuguese Português - Portugal - + Russian Russo - + Scottish Gaelic - + Slovak Eslovaco - + Spanish Espanhol - + Swedish Sueco - + Tamil Tamil - + Turkish Turco - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Nome do programador - - + + Maintainer EMail E-mail do programador - - + + Create Date Data de criação - + Windows Behaviour Comportamento das janelas - + scaleable à escala - + fixed fixa - + Minimum Size Tamanho mínimo - + Maximum Size Tamanho máximo - + Fixed Size Tamanho fixo - + State Estado - + Please select your game table style Por favor, escolha a mesa - + PokerTH game table styles (*.xml) Mesas do Poker TH (*.xml) - + Game Table Style Error Erro no estilo da mesa de jogo - + Selected game table style file is already in the list. Please select another one to add! O estilo da mesa selecionada já está na lista. Por favor, escolha outro estilo! - + Game Table Style File Error Erro no ficheiro de estilo da mesa de jogo - + Could not load game table style file correctly. Style will not be placed into list! Não foi possível carregar o ficheiro da mesa de jogo. O estilo não será colocado na lista! - + Please select your card deck style Por favor, escolha o baralho de cartas - + PokerTH card deck styles (*.xml) Baralhos de cartas do Poker Th (*.xml) - + Card Deck Style Error Erro no baralho de cartas - + Selected card deck style file is already in the list. Please select another one to add! O baralho de cartas selecionado já está na lista. Por favor, escolha outro estilo! - + Card Deck Style File Error Erro no ficheiro de estilo do baralho de cartas - + Could not load card deck style file correctly. Style will not be placed into list! Não foi possível carregar o ficheiro do baralho de cartas. @@ -5634,12 +5703,12 @@ O estilo não será colocado na lista! Registo SQL do Poker Th (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5704,12 +5773,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Erro do servidor - + You should not kick yourself from this game! Você não se pode expulsar deste jogo! diff --git a/ts/pokerth_ru.ts b/ts/pokerth_ru.ts index 30056215..3c66d155 100644 --- a/ts/pokerth_ru.ts +++ b/ts/pokerth_ru.ts @@ -399,106 +399,106 @@ Please contact the game table style builder %3. - + PokerTH - Delete log files PokerTH - Удаление файлов журнала - + Do you really want to delete the selected log files? Вы действительно хотите удалить выбранные файлы журнала? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML Экспорт PokerTH лог-файла в HTML - + PokerTH HTML log (*.html) PokerTH HTML лог-файл (*.html) - + Export PokerTH log file to plain text Экспорт PokerTH лог-файла в обычный текст - + PokerTH plain text log (*.txt) PokerTH текстовый лог-файл (*.txt) - + Save PokerTH log file Сохранить PokerTH лог-файл - + PokerTH SQL log (*.pdb) PokerTH SQL лог-файл (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -526,22 +526,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar Сообщить о недопустимом аватаре - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Вы больше не будете получать сообщения из чата или приглашений в игру от данного пользователя. <br> Вы действительно хотите поместить игрока <b>%1</b> в список игнорирования? - - + + + PokerTH - Question PokerTH - Вопрос - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? Вы действительно хотите сообщить что аватор игрока "%1" недопустимый? @@ -1375,130 +1413,130 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 О программе PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - Wikimedia Commons: за источник различных популярных картинок аватаров - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures тут бы поправить надо, звучит некрасиво - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: за картинки аватаров людей - + - ZeiZei: for misc avatar pictures тут бы поправить надо, звучит некрасиво - ZeiZei: за различные картинки аватаров - + - kde-look.org: for different gpl licensed sounds тут бы поправить надо, звучит некрасиво - KDE-look.org: за различные GPL лицензированные звуки - + - doc_dos: for self recorded chip sounds - doc_dos: за самостоятельно записанные звуки - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - thiger, dunkanx, BerndA, coldz, drull: за различные патчи - + - kraut: for internet-game-server hosting and administration - kraut: за хостинг и администрирования игрового сервера - + - danuxi: for startwindow background gfx and danuxi1 table background - danuxi: за стартовое окно и фон игрового стола - + - heyn: for moderating forum and organise bugtracker and feature requests - heyn: за модерирование форума, организацию багтрекера и пожеланий - + - texas_outlaw: for new table sounds - texas_outlaw: за новые звуки игрового стола - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -1627,12 +1665,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Самостоятельное управление ставками - + You cannot set more than 30 manual blinds. Вы не можете установить более чем 30 самостоятельных ставок. @@ -1666,48 +1704,48 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Вы не можете войти в общую комнату Интернет-игры под именем "Human Player". Выберите другое имя. - - - + + + Nick name: Пcевдоним: - + Your player name is already used by another player. Please choose a different name. Ваше игровое имя уже используется другим игроком. Выберите другое имя. - + The player name is too short, too long or invalid. Please choose another one. Имя игрока слишком длинное, или слишком короткое, или неправильное. Выберите другое имя. - + There is already a game with your chosen game name. Please choose another one! Игра с выбранным вами названием игры уже существует. Пожалуйста, выберите другое название. - + There is a forbidden word in your chosen game name. Please choose another one! В выбранном вами названии игры содержится запрещенное слово. Пожалуйста, выберите другое название. - - + + Game name: Название игры: @@ -1746,27 +1784,27 @@ Please choose another one! connectToServerDialogImpl - + Resolving address... Определение IP адреса... - + Connecting to server... Соединение с сервером... - + Starting session... Начало сессии... - + Connection established! Соединение установлено! - + Reading server list... Чтение списка серверов... @@ -1933,7 +1971,7 @@ Please choose another one! <i>Удваивать ставки каждую %1 раздачу</i> - + %1's game Игра %1 @@ -2371,46 +2409,46 @@ p, li { white-space: pre-wrap; } Вы хотите присоединиться к приватной игре. Пожалуйста, введите пароль! - - - - + + + + Game Info Информация об игре - + Server Error Ошибка сервера - + You should not kick yourself from this game! Вы не можете исключить себя из игры! - + Joining a private Game Присоединиться к закрытой игре - - + + Game Игра - - + + Players Игроки - - + + State Состояние @@ -2419,17 +2457,17 @@ p, li { white-space: pre-wrap; } Закрытая - + You are about to join a private game. Please enter the password! Вы хотите присоединиться к закрытой игре. Пожалуйста, введите пароль! - + running идет игра - + open открыта @@ -2438,63 +2476,63 @@ p, li { white-space: pre-wrap; } Подключенные игроки - + hands партий - + minutes минут - + double blinds удвоение ставок - + manual blinds order самостоятельное управление ставками - + Starting game. Please wait ... Запуск игры. Пожалуйста, подождите... - + Waiting for the start of the next hand to rejoin the game ... Ожидание начала следующей раздачи, для переподключения к игре... - + Click here to view the online rankings - + Spectate - - + + P P - - + + Time - - + + Available Players Доступные игроки @@ -2510,61 +2548,66 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Информация об игроке... - - + + Show player stats Показать статистику игрока - - + + Admin action ... - + Total kickban - + Report inappropriate game name Сообщить об недопустимом имени игры - + Close game - - - + + + Standard Стандартный - - - + + + Registered players only Только зарегистрированные игроки - - - + + + Invited players only Только приглашенные игроки - - - + + + Ranking game Рейтинговая игра @@ -2581,1255 +2624,1255 @@ p, li { white-space: pre-wrap; } сек (задержка партий) - + Afghanistan Афганистан - + ALand Islands Аландские острова - + Albania Албания - + Algeria Алжир - + American Samoa Американское Самоа - + Andorra Андорра - + Angola Ангола - + Anguilla Ангилья - + Antarctica Антарктида - + Antigua And Barbuda Антигуа и Барбуда - + Argentina Аргентина - + Armenia Армения - + Aruba Аруба - + Australia Австралия - + Austria Австрия - + Azerbaijan Азербайджан - + Bahamas Багамские острова - + Bahrain Бахрейн - + Bangladesh Бангладеш - + Barbados Барбадос - + Belarus Беларусь - + Belgium Бельгия - + Belize Белиз - + Benin Бенин - + Bermuda Бермудские острова - + Bhutan Бутан - + Bolivia Боливия - + Bosnia And Herzegovina Босния и Герцеговина - + Botswana Ботсвана - + Bouvet Island Буве - + Brazil Бразилия - + British Indian Ocean Territory Британская территория Индийского океана - + Brunei Darussalam Бруней-Даруссалам - + Bulgaria Болгария - + Burkina Faso Буркина-Фасо - + Burundi Бурунди - + Cambodia Камбоджа - + Cameroon Камерун - + Canada Канада - + Cape Verde Кабо-Верде - + Cayman Islands Каймановы острова - + Central African Republic Центрально-Африканская Республика - + Chad Чад - + Chile Чили - + China Китай - + Christmas Island Остров Рождества - + Cocos (Keeling) Islands Кокосовые (Килинг) острова - + Colombia Колумбия - + Comoros Коморские острова - + Congo Конго - + Congo, The Democratic Republic Of The Демократическая Республика Конго - + Cook Islands острова Кука - + Costa Rica Коста-Рика - + Cote D'Ivoire Кот-д'Ивуар - + Croatia Хорватия - + Cuba Куба - + Cyprus Кипр - + Czech Republic Чешская Республика - + Denmark Дания - + Djibouti Джибути - + Dominica Доминика - + Dominican Republic Доминиканская Республика - + Ecuador Эквадор - + Egypt Египет - + El Salvador Сальвадор - + Equatorial Guinea Экваториальная Гвинея - + Eritrea Эритрея - + Estonia Эстония - + Ethiopia Эфиопия - + Falkland Islands (Malvinas) Фолклендские (Мальвинские) острова - + Faroe Islands Фарерские острова - + Fiji Фиджи - + Finland Финляндия - + France Франция - + French Guiana Французская Гвиана - + French Polynesia Французская Полинезия - + French Southern Territories Французские Южные территории - + Gabon Габон - + Gambia Гамбия - + Georgia Грузия - + Germany Германия - + Ghana Гана - + Gibraltar Гибралтар - + Greece Греция - + Greenland Гренландия - + Grenada Гренада - + Guadeloupe Гваделупа - + Guam Гуам - + Guatemala Гватемала - + Guernsey Гернси - + Guinea Гвинея - + Guinea-Bissau Гвинея-Бисау - + Guyana Гайана - + Haiti Гаити - + Heard Island And Mcdonald Islands острова Херд и Макдональд - + Holy See (Vatican City State) Святой Престол (Государство-город Ватикан) - + Honduras Гондурас - + Hong Kong Гонконг - + Hungary Венгрия - + Iceland Исландия - + India Индия - + Indonesia Индонезия - + Iran, Islamic Republic Of Исламская Республика Иран - + Iraq Ирак - + Ireland Ирландия - + Isle Of Man Остров Мэн - + Israel Израиль - + Italy Италия - + Jamaica Ямайка - + Japan Япония - + Jersey Джерси - + Jordan Иордания - + Kazakhstan Казахстан - + Kenya Кения - + Kiribati Кирибати - + Korea, Democratic People'S Republic Of Корейская Народно-Демократическая Народная Республика - + Korea, Republic Of Республика Корея - + Kuwait Кувейт - + Kyrgyzstan Киргизия - + Lao People'S Democratic Republic Лаосская Народно-Демократическая Республика - + Latvia Латвия - + Lebanon Ливан - + Lesotho Лесото - + Liberia Либерия - + Libyan Arab Jamahiriya Ливийская Арабская Джамахирия - + Liechtenstein Лихтенштейн - + Lithuania Литва - + Luxembourg Люксембург - + Macao Макао - + Macedonia, The Former Yugoslav Republic Of Македония - + Madagascar Мадагаскар - + Malawi Малави - + Malaysia Малайзия - + Maldives Мальдивы - + Mali Мали - + Malta Мальта - + Marshall Islands Маршалловы острова - + Martinique Мартиника - + Mauritania Мавритания - + Mauritius Маврикий - + Mayotte Майотта - + Mexico Мексика - + Micronesia, Federated States Of Федеративные Штаты Микронезия - + Moldova, Republic Of Молдова - + Monaco Монако - + Mongolia Монголия - + Montserrat Монтсеррат - + Morocco Марокко - + Mozambique Мозамбик - + Myanmar Мьянма - + Namibia Намибия - + Nauru Науру - + Nepal Непал - + Netherlands Нидерланды - + Netherlands Antilles Нидерландские Антильские острова - + New Caledonia Новая Каледония - + New Zealand Новая Зеландия - + Nicaragua Никарагуа - + Niger Нигер - + Nigeria Нигерия - + Niue Ниуэ - + Norfolk Island Остров Норфолк - + Northern Mariana Islands Северные Марианские острова - + Norway Норвегия - + Oman Оман - + Pakistan Пакистан - + Palau Палау - + Palestinian Territory, Occupied Палестина - + Panama Панама - + Papua New Guinea Папуа-Новая Гвинея - + Paraguay Парагвай - + Peru Перу - + Philippines Филиппины - + Pitcairn Питкэрн - + Poland Польша - + Portugal Португалия - + Puerto Rico Пуэрто-Рико - + Qatar Катар - + Reunion Реюньон - + Romania Румыния - + Russian Federation Российская Федерация - + Rwanda Руанда - + Saint Helena Остров Святой Елены - + Saint Kitts And Nevis Сент-Китс и Невис - + Saint Lucia Сент-Люсия - + Saint Pierre And Miquelon Сен-Пьер и Микелон - + Saint Vincent And The Grenadines Сент-Винсент и Гренадины - + Samoa Самоа - + San Marino Сан-Марино - + Sao Tome And Principe Сан-Томе и Принсипи - + Saudi Arabia Саудовская Аравия - + Senegal Сенегал - + Serbia And Montenegro Сербия и Черногория - + Seychelles Сейшельские острова - + Sierra Leone Сьерра-Леоне - + Singapore Сингапур - + Slovakia Словакия - + Slovenia Словения - + Solomon Islands Соломоновы Острова - + Somalia Сомали - + South Africa ЮАР - + South Georgia And The South Sandwich Islands Южная Джорджия и Южные Сандвичевы острова - + Spain Испания - + Sri Lanka Шри Ланка - + Sudan Судан - + Suriname Суринам - + Svalbard And Jan Mayen Шпицберген и Ян-Майен - + Swaziland Свазиленд - + Sweden Швеция - + Switzerland Швейцария - + Syrian Arab Republic Сирийская Арабская Республика - + Taiwan, Province Of China Тайвань - + Tajikistan Таджикистан - + Tanzania, United Republic Of Объединенная Республика Танзания - + Thailand Таиланд - + Timor-Leste Тимор-Лешти - + Togo Того - + Tokelau Токелау - + Tonga Тонга - + Trinidad And Tobago Тринидад и Тобаго - + Tunisia Тунис - + Turkey Турция - + Turkmenistan Туркменистан - + Turks And Caicos Islands Острова Теркс и Кайкос - + Tuvalu Тувалу - + Uganda Уганда - + Ukraine Украина - + United Arab Emirates Объединенные Арабские Эмираты - + United Kingdom Великобритания - + United States Соединенные Штаты Америки - + United States Minor Outlying Islands Соединенные Штаты Америки Внешние малые острова - + Uruguay Уругвай - + Uzbekistan Узбекистан - + Vanuatu Вануату - + Venezuela Венесуэла - + Viet Nam Вьетнам - + Virgin Islands, British Виргинские острова, Британия - + Virgin Islands, U.S. Виргинские острова, США - + Wallis And Futuna Уоллис и Футуна - + Western Sahara Западная Сахара - + Yemen Йемен - + Zambia Замбия - + Zimbabwe Зимбабве - + Are you sure you want to report the game name: "%1" as inappropriate? Вы действительно хотите сообщить что имя игры "%1" недопустимое? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - - + + T Тип - - - + + + sec (action) сек (действие) - - - + + + sec (hand delay) сек (задержка партий) @@ -3838,14 +3881,14 @@ p, li { white-space: pre-wrap; } Подключенных игроков - Макс. %1 - - + + running games: %1 Текущих игры: %1 - - + + open games: %1 Открытых игр: %1 @@ -3855,45 +3898,50 @@ p, li { white-space: pre-wrap; } Пригласить %1 - + Ignore %1 Игнорировать %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 был приглашен %3 в %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 отклонил приглашение в %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 не может присоединиться к %2, потому что он занят.</span> - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + The game will start in<br><b>%1</b> seconds. Игра начнётся через<br><b>%1</b> секунд. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Вы вошли в игру типа "только приглашенные". Не стесняйтесь приглашать других игроков нажав правой кнопкой мыши на их ​​имя в списке доступных игроков. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Вы были приглашены <b>%2</b> в игру <b>%1</b>.<br>Хотите присоединиться к этой игре? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Вы больше не будете получать сообщения из чата или приглашений в игру от данного пользователя. <br>Вы действительно хотите поместить игрока <b>%1</b> в список игнорирования? @@ -3902,31 +3950,31 @@ Feel free to invite other players by right-clicking on their nick in the availab Игроков в чате: %1 - - + + connected players: %1 Подключенных игроков: %1 - - + + Players (%1) - - - + + + Spectators (%1) - + search for player ... поиск игрока... - + Chat is only available to registered players. Чат доступен только для зарегистрированных игроков. @@ -3936,31 +3984,42 @@ Feel free to invite other players by right-clicking on their nick in the availab Пригласить игрока... - + Ignore player ... Игнорировать игрока... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 играет в "%2". - + %1 is not playing at the moment. %1 не играет в данный момент. - - + + PokerTH - Info Message PokerTH - Информационное сообщение - - + + - + + PokerTH - Question PokerTH - Вопрос @@ -4339,19 +4398,19 @@ p, li { white-space: pre-wrap; } gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Стоп @@ -4368,14 +4427,14 @@ p, li { white-space: pre-wrap; } F1 - Сбросить/Ва-банк | F2 - Пропуск/Ответить | F3 - Ставка/Повысить - - - - - - - - + + + + + + + + Start Старт @@ -4544,8 +4603,8 @@ Please choose a different name. F1 - Ставка/Повысить | F2 - Пропуск/Ответить | F3 - Сбросить/Ва-банк - - + + Chat Чат @@ -4630,12 +4689,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Зайдите на <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> и скачайте самую новую версию. - + Closing PokerTH during network game Закрытие PokerTH во время сетевой игры - + You are the hosting server. Do you want to close PokerTH anyway? Вы являетесь сервером игры. Вы точно хотите закрыть PokerTH? @@ -4652,16 +4711,16 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Эта бета-версия PokerTH устарела.<br>Зайдите на <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> и скачайте самую свежую версию. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Покер Texas Holdem c открытым кодом - - - - - + + + + + Lobby Общая комната @@ -4670,88 +4729,88 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Произошла ошибка при обработке аватары. Пожалуйста, сообщите об этом администратору в общей комнате. - + PokerTH - Internet Game Message PokerTH - Сообщение игры в интернете - + Attention! Do you really want to leave the current game and go back to the lobby? Внимание! Вы действительно хотите покинуть текущую игру и вернуться в общую комнату? - - + + Chance Шансы - + PokerTH %1 PokerTH %1 - + Really want to exit? Действительно хотите выйти? - + PokerTH - Close Table? PokerTH - Покинуть стол? - - + + Kick Отключить - - + + Do you want to kick <b>%1</b><br>from this game? Вы действительно хотите исключить <b>%1</b><br>из игры? - - - - + + + + <b>%1</b> secs left <b>%1</b>сек. осталось - + vote голос - + votes голосов - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Игрок <b>%1</b> проголосовал против <b>%2</b> %3<br>. <b>%4</b> голоса(ов) необходимо для отключения. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. У вас <b>%1</b> %2 против вас.<br><b>%3</b> голоса(ов) необходимо для отключения. + - Chat is only available to registered players. Чат доступен только для зарегистрированных игроков. - + Spectators @@ -4827,7 +4886,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account @@ -4992,10 +5051,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Ошибка чтения файла профиля сервера @@ -5006,7 +5065,7 @@ p, li { white-space: pre-wrap; } - + Save Server Profile Error Ошибка сохранения профиля сервера @@ -5015,33 +5074,33 @@ p, li { white-space: pre-wrap; } Профиль под названием: " - - - - + + + + Could not load server-profiles-file: %1 - + Read Server-Profile List Error Ошибка чтения списка профилей сервера - + Could not read server-profiles list Не могу прочитать список профилей сервера - - + + Save Server-Profile-File Error Ошибка сохранения файла профиля сервера - - + + Could not save server-profiles-file: %1 @@ -5053,7 +5112,7 @@ p, li { white-space: pre-wrap; } - + A profile with the name: %1 already exists. Would you like to overwrite ? Профиль под названием: %1 уже существует. @@ -5133,12 +5192,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order Самостоятельное управление ставками - + You cannot set more than 30 manual blinds. Вы не можете установить более чем 30 самостоятельных ставок. @@ -5277,14 +5336,14 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Ошибка в файле аватара - + Please select an avatar from the list! Выберите аватар из списка! @@ -5295,7 +5354,7 @@ Please enter an valid picture! Укажите правильную картинку! - + Select external avatar picture Выберите внешнюю картинку аватара @@ -5304,19 +5363,19 @@ Please enter an valid picture! Картинки (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Размер файла выбранной картинки слишком велик. (максимум 30KB) Пожалуйста, выберите картинку поменьше. - + Images (*.png *.jpg *.gif) Картинки (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! Указанная картика аватара не существует. @@ -5381,8 +5440,8 @@ p, li { white-space: pre-wrap; } Показывать левую панель - - + + Play blind raise notification Звуковое уведомление при повышении ставки @@ -5403,14 +5462,14 @@ p, li { white-space: pre-wrap; } Показывать правую панель - - + + Play sound effects Включить звуковые эффекты - - + + Show game settings dialog on every new game Показывать окно настроек перед началом игры @@ -5419,8 +5478,8 @@ p, li { white-space: pre-wrap; } Количество партий для повышения малой ставки: - - + + Number of players: Количество игроков: @@ -5433,22 +5492,22 @@ p, li { white-space: pre-wrap; } Малая ставка: - - + + Game Speed: Скорость игры: - - - - + + + + Start Cash: Начальная сумма: - - + + Pause between hands (press "start" button to go on) Пауза между партиями (для продолжения нужно нажать "Старт") @@ -5465,53 +5524,53 @@ p, li { white-space: pre-wrap; } Настройки сервера - - + + Server Password: Пароль сервера: - - - - + + + + Server Port: Порт сервера: - - - - - - Use SCTP - Использовать SCTP - - - - - - - Use IPv6 - Использовать IPv6 - - - - Note: Best quality with image ratio like width=48, height=76. - - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://ru.wikipedia.org/wiki/Ipv6">Подробнее...</a> - + Use SCTP + Использовать SCTP + + + + + + + Use IPv6 + Использовать IPv6 + + + + Note: Best quality with image ratio like width=48, height=76. + + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://ru.wikipedia.org/wiki/Ipv6">Подробнее...</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://ru.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Подробнее...</a> @@ -5524,8 +5583,8 @@ p, li { white-space: pre-wrap; } Скорость игры компьютерных оппонентов: - - + + Maximum number of players: Максимальное количество игроков: @@ -5544,43 +5603,43 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Замечание: Наилучшее качество аватары при размерах картинки </span><span style=" font-weight:600; font-style:italic;">ширина=50, высота=50.</span></p></body></html> - - + + Computer Engine Компьютерные противники - - + + Opponent 5: Оппонент 5: - - + + Opponent 4: Оппонент 4: - - + + Opponent 3: Оппонент 3: - - + + Opponent 2: Оппонент 2: - - + + Opponent 1: Оппонент 1: - + Human Player: Игрок: @@ -5589,8 +5648,8 @@ p, li { white-space: pre-wrap; } Имена игроков - - + + Enable/Disable Logging Включить запись событий @@ -5603,59 +5662,64 @@ p, li { white-space: pre-wrap; } дней - - + + Log File Directory: Каталог файлов журнала: - - + + Write log after every: Записывать в журнал после каждой: - + Log Messages Журнал - + + Show network state color in the corner of the avatar + + + + Local Game Settings Настройки локальной игры - + Network Game Settings Настройки сетевой игры - - + + Sound Volume: Громкость: - - + + 10 10 - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 6: Оппонент 6: @@ -5664,20 +5728,20 @@ p, li { white-space: pre-wrap; } Время ожидания для хода игрока (сек): - - + + action (high frequent disc access) действия (много обращений к диску) - - + + hand (medium disc access) партии (средняя частота обращений к диску) - - + + game (low disc access) игры (малое количество обращения к диску) @@ -5694,7 +5758,7 @@ p, li { white-space: pre-wrap; } - + Sound Звук @@ -5703,13 +5767,13 @@ p, li { white-space: pre-wrap; } Количество партий для повышения ставки: - - + + Network Server Settings Настройки сетевого сервера - + Internet Game Settings Настройки игры в Интернете @@ -5728,14 +5792,14 @@ p, li { white-space: pre-wrap; } Настройки Интернет-сервера (Выделенный сервер) - - + + Server Address: Адрес сервера: - - + + Use password for private game: Использовать пароль для закрытой игры: @@ -5760,78 +5824,78 @@ p, li { white-space: pre-wrap; } Обратный порядок кнопок (F1 - F3) - - - - + + + + First small blind: Начальная ставка: - - - - + + + + Raise blinds: Повышать ставки: - - - - - - - - + + + + + + + + Every: Каждые: - - - - + + + + hands партий - - - - + + + + minutes минут - - - - + + + + Raise mode: Режим повышения: - - - - + + + + Always double blinds Всегда удваивать ставки - - - - + + + + Manual blinds order: Самостоятельное управление ставками: - - - - + + + + Edit ... Редактировать... @@ -5860,26 +5924,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Примечание: рекомендуемые размеры картинки </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">ширина=48, высота=76.</span></p></td></tr></table></body></html> - - + + Sound Categories Звуковые уведомления - - + + Play game actions sounds like "check", "call", "raise" Действия "Пропустить", "Ответить", "Повысить" - - + + Play lobby chat notifications События общего чата - - + + Play network/internet game notifications like "player joined the game" События Сетевой / Интернет игр такие как "Игрок присоединился к игре" @@ -5888,7 +5952,7 @@ p, li { white-space: pre-wrap; } Разрешить/Запретить общий чат (IRC сервер) - + Player Nicks/Avatars Имена и аватары игроков @@ -5914,7 +5978,7 @@ p, li { white-space: pre-wrap; } Сетевая / Интернет игра - + Switch keyboard focus to bet-input-field if it's your turn При переходе хода к вам перемещать курсор в поле ввода ставки @@ -5934,33 +5998,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Примечание: рекомендуемые размеры картинки </span><span style=" font-weight:600; font-style:italic;">ширина=100, высота=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Время ожидания хода игрока: - - - - + + + + s сек - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5971,7 +6035,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Примечание: по умолчанию, </span><span style=" font-weight:600; font-style:italic;">Настройки Игры,</span><span style=" font-style:italic;"> такие как "Максимальное количество игроков", "Начальная сумма" будут взяты </span><span style=" font-weight:600; font-style:italic;">из Настроек Сетевой Игры.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5982,20 +6046,20 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Примечание: рекомендуемые размеры картинки </span><span style=" font-weight:600; font-style:italic;">ширина=50, высота=50.</span></p></body></html> - - + + Automatic Server Configuration URL Автоматическая настройка сервера - - + + Serverlist Address: Адрес списка серверов: - - + + Manual Server Configuration Ручная настройка сервера @@ -6012,14 +6076,14 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Имя игрока (Ник):<br /><span style=" font-size:11pt; font-style:italic;">(Этот ник будет также использоваться для входа в онлайн игру)</span></p></body></html> - - + + Store log files for: Хранить файлы журнала: - - + + Day(s) Дня(ей) @@ -6060,32 +6124,32 @@ p, li { white-space: pre-wrap; } Отключить заставку при запуске - - + + Game Table Игровой стол - - + + Card Deck Колода карт - - + + Card Back Рубашка карт - - + + Use card back from card style Использовать рубашку из стиля карт - - + + Use custom card back picture: Использовать собственную рубашку: @@ -6114,22 +6178,22 @@ p, li { white-space: pre-wrap; } Пароль: - - + + Avatar Server: Адрес сервера картинок аватаров: - + Style Стиль - + Factory Settings Сброс настроек @@ -6147,56 +6211,61 @@ p, li { white-space: pre-wrap; } Не переводить покерные названия такие как "check", "call", "raise" - + Show country flag in the corner of avatar Показывать флаг страны в углу аватара - + Activate the "accidentally call after big raise" blocker Блокировка случайного ответа после большого повышения ставки - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - - - - Add ... - Добавить... + + Show network state color on the avatar + + Add ... + Добавить... + + + + + + Remove Убрать - - - - + + + + Preview - Information: Предпросмотр и информация: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6209,31 +6278,31 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Получить новые стили игровых столов для PokerTH...</span></a></p></body></html> - - - - + + + + Description Описание - - - - + + + + Maintainer Разработчик - - - + + + State Состояние - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6246,18 +6315,18 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Получить новые стили колод PokerTH...</span></a></p></body></html> - - + + Allow spectators to watch the game - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6276,20 +6345,20 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Примечание: рекомендуемые размеры картинки </span><span style=" font-weight:600; font-style:italic;">ширина=48, высота=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Задержка между раздачами: - - + + Server Сервер - - + + Game Игра @@ -6306,73 +6375,73 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-style:italic;">Примечание: по умолчанию </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">Настройки игры</span><span style=" font-size:12pt; font-style:italic;"> такие как &quot;Максимальное количество игроков&quot;, &quot;Начальная сумма&quot; и &quot;Начальная ставка&quot; будут взяты </span><span style=" font-size:12pt; font-weight:600; font-style:italic;">из Настроек сетевой игры.</span></p></body></html> - - + + Default game name: Имя игры по умолчанию: - - + + Default game type: Тип игры по умолчанию: - - + + Standard Стандартный - - + + Registered players only Только зарегистрированнные игроки - - + + Invited players only Только приглашенные игроки - - + + Ranking game Рейтинговая игра - + Show lobby chat Показывать общий чат - - + + Automatically leave the table after the game finished Автоматически покинуть стол после окончания игры - - + + Ignored Players Игнорируемые игроки - - + + Player Игрок - - + + Remove Player Удалить игрока - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6385,19 +6454,19 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Имя игрока (Ник):<br /><span style=" font-style:italic;">(Этот ник будет также использоваться для входа в онлайн игру)</span></p></body></html> - - + + Opponent 7: Оппонент 7: - - + + Opponent 8: Оппонент 8: - + Note: Best avatar quality with image ratio like width=50, height=50. @@ -6422,14 +6491,14 @@ p, li { white-space: pre-wrap; } Удалить - - + + Reset all settings to default ... Сбросить все настройки на настройки по умолчанию... - - + + Note: You can not reset all settings to default during a running game! Примечание: Вы не можете сбросить все настройки на настройки по умолчанию при запущенной игре. @@ -6442,8 +6511,8 @@ p, li { white-space: pre-wrap; } Оппонент 6: {10:?} - - + + Opponent 9: Оппонент 9: @@ -6451,11 +6520,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Ошибка настроек @@ -6472,7 +6541,7 @@ Please select an valid directory! Укажите правильный каталог! - + Select your flipside picture Выберите свою картинку рубашки карт @@ -6481,24 +6550,24 @@ Please select an valid directory! Картинки (*.png) - + Open Directory Открыть каталог - + Images (*.png *.jpg *.gif) Картинки (*.png *.jpg *.gif) - - + + Blinds Error Ошибка ставок - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -6507,42 +6576,42 @@ This first-small-blind-value will be set to maximum allowed value. Значение начальной ставки будет установлено на максимально возможное значение. - + Dutch Голландский - + Afrikaans Африкаанс - + Catalan Каталонский - + Czech Чешский - + English Английский - + French Французский - + German Немецкий - + Hungarian Венгерский @@ -6555,279 +6624,279 @@ This first-small-blind-value will be set to maximum allowed value. Португальский - + Russian Русский - + Turkish Турецкий - + Language Changed Язык изменен - + You have changed application language to %1. Please restart PokerTH to load new language! Вы изменили язык приложения на %1. Закройте и запустите PokerTH заново! - + Italian Итальянский - + Lithuania Литва - + Portuguese-Brazilian Португальский-бразильский - + Portuguese-Portuguese Португальский - + Slovak Словацкий - + Tamil Тамильский - + The entered flipside picture doesn't exist. Please enter an valid picture! Указанная картика рубашки карт не существует. Укажите правильную картинку! - - + + The log file directory doesn't exist. Please select an valid directory! Указанный каталог для лог-файла не существует. Укажите правильный каталог! - + Norwegian Норвежский - + Spanish Испанский - + Bulgarian Болгарский - + Polish Польский - + Chinese Китайский - + Greek Греческий - + Swedish Шведский - + The entered server list address is not a valid URL. Please enter a valid server list address! Введенный список серверов не является ссылкой. Введите правильный адрес! - + Finnish Финский - + Danish Датский - + Galician - + Japanese Японский - + Scottish Gaelic - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! Имена оппонентов не являются уникальными. Пожалуйста, выберите различные названия для каждого оппонента! - + Settings Information Сведения настроек - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Вы изменили каталог лог-файла. Перезапустите PokerTH, чтобы использовать новый каталог для лог-файлов! - - + + Maintainer Name Имя разработчика - - + + Maintainer EMail E-Mail адрес разработчика - - + + Create Date Дата создания - + Windows Behaviour Оформление окна - + scaleable масштабируемое - + fixed фиксированное - + Minimum Size Минимальный размер - + Maximum Size Максимальный размер - + Fixed Size Фиксированный размер - + State Состояние - + Please select your game table style Пожалуйста, выберите стиль игрового стола - + PokerTH game table styles (*.xml) Стили столов PokerTH (*.xml) - + Game Table Style Error Ошибка стиля игрового стола - + Selected game table style file is already in the list. Please select another one to add! Выбранный стиль игрового стола уже есть в списке. Выберите еще один для добаления! - + Game Table Style File Error Ошибка файла стиля игрового стола - + Could not load game table style file correctly. Style will not be placed into list! Некоректный файл стиля игрового стола. Стиль не будет добавлен в список! - + Please select your card deck style Пожалуйста, выберите ваш стиль колоды - + PokerTH card deck styles (*.xml) Стили колоды PokerTH (*.xml) - + Card Deck Style Error Ошибка стиля колоды карт - + Selected card deck style file is already in the list. Please select another one to add! Выбранный стиль колоды уже в списке. Выберите еще один для добавления! - + Card Deck Style File Error Ошибка файла стиля колоды карт - + Could not load card deck style file correctly. Style will not be placed into list! Некорректный файл стиля колоды карт. @@ -6874,12 +6943,12 @@ Style will not be placed into list! PokerTH SQL лог-файл (*.pdb) - + PokerTH - Settings PokerTH - Настройки - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Внимание: это удалит все ваши личные настройки и закроет PokerTH! @@ -6961,12 +7030,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Ошибка сервера - + You should not kick yourself from this game! Вы не можете исключить себя из игры! diff --git a/ts/pokerth_sk.ts b/ts/pokerth_sk.ts index fdbdf066..96b47e4e 100644 --- a/ts/pokerth_sk.ts +++ b/ts/pokerth_sk.ts @@ -421,106 +421,106 @@ Prosím, napíšte zostaviteľovi štýlu herného stola %3. - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file Uložiť súbor so záznamom PokerTH - + PokerTH SQL log (*.pdb) PokerTH SQL log (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -552,22 +552,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar Nahlásiť nevhodného avatara - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Od tohto hráča už neobdržíte správy v chate alebo pozvánky na hru.<br>Naozaj chcete pridať hráča <b>%1</b> na zoznam ignorovaných? - - + + + PokerTH - Question PokerTH - Otázka - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? Určite chcete nahlásiť avatara hráča "%1" ako nevhodného? @@ -1452,127 +1490,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 O PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -1689,12 +1727,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Manuálne stanovenie stávky - + You cannot set more than 30 manual blinds. Nemôžete nastaviť viac ako 30 manuálnych stávok. @@ -1728,40 +1766,40 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Nemôžete vojsť do lobby internetovej hry s prezývkou "Human Player". Prosím, vyberte si inú prezývku. - - - + + + Nick name: Prezývka: - + Your player name is already used by another player. Please choose a different name. Vaše meno hráča už používa niekto iný. Prosím, vyberte si iné meno. - + The player name is too short, too long or invalid. Please choose another one. Meno hráča je príliš krátke, príliš dlhé alebo neplatné. Prosím, vyberte si iné. - + There is already a game with your chosen game name. Please choose another one! Už existuje hra s vybraným názvom. Prosím, zvoľte si iný názov! - + There is a forbidden word in your chosen game name. Please choose another one! V názve vašej hry sa nachádza zakázané slovo. @@ -1774,8 +1812,8 @@ Please choose another one! Prosím, zvoľte si iný názov! - - + + Game name: Názovy hry: @@ -1820,27 +1858,27 @@ Prosím, vyberte si iné! connectToServerDialogImpl - + Resolving address... Resolvujem adresu... - + Connecting to server... Pripájam sa na server... - + Starting session... Spúšťam sedenie... - + Connection established! Spojenie vytvorené! - + Reading server list... Čítam zoznam serverov... @@ -1999,7 +2037,7 @@ Prosím, vyberte si iné! <i>Zdvojnásobovať stávky každých %1 rozdaní(ia)</i> - + %1's game %1ova hra @@ -2413,46 +2451,46 @@ p, li { white-space: pre-wrap; } hra - - - - + + + + Game Info Info o hre - + Server Error Chyba servera - + You should not kick yourself from this game! Nemali by ste z tejto hry vykopnúť sám seba! - + Joining a private Game Pripájam sa k súkromnej hre - - + + Game Hra - - + + Players Hráči - - + + State Stav @@ -2461,17 +2499,17 @@ p, li { white-space: pre-wrap; } Súkromný - + You are about to join a private game. Please enter the password! Chcete sa pripojiť k súkromnej hre. Prosím zadajte heslo! - + running spúšťam - + open otvorená @@ -2480,27 +2518,27 @@ p, li { white-space: pre-wrap; } Pripojení hráči - + hands rozdania - + minutes minúty - + double blinds dvojité stávky - + manual blinds order ručné stanovenie stávok - + Starting game. Please wait ... Spúšťam hru. Prosím čakajte... @@ -2510,22 +2548,22 @@ p, li { white-space: pre-wrap; } - - + + P - - + + Time - - + + Available Players Dostupní hráči @@ -2541,61 +2579,66 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Informácie o hráčovi ... - - + + Show player stats - - + + Admin action ... - + Total kickban - + Report inappropriate game name - + Close game - - - + + + Standard Štandardná - - - + + + Registered players only Iba registrovaní hráči - - - + + + Invited players only Iba pozvaní hráči - - - + + + Ranking game Vyhodnocovaná hra @@ -2604,1270 +2647,1270 @@ p, li { white-space: pre-wrap; } Pripojení hráči - max. %1 - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania Litovština - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - - + + T - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - + Spectate - - - + + + sec (action) - - - + + + sec (hand delay) @@ -3876,14 +3919,14 @@ p, li { white-space: pre-wrap; } Pripojení hráči - Max. %1 - - + + running games: %1 spustené hry: %1 - - + + open games: %1 otvorené hry: %1 @@ -3893,45 +3936,50 @@ p, li { white-space: pre-wrap; } Pozvať %1 - + Ignore %1 Ignorovať %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 bol(a) pozvaný(á) k %2 užívateľom %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 odmietol pozvanie k %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 sa nemôže pridať k %2, pretože je zaneprázdnený.</span> - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + The game will start in<br><b>%1</b> seconds. Hra sa začne o <br><b>%1</b> sekúnd. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Pridali ste sa k hre, ktorej typ je "len na pozvánku". Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich priezvisko v zozname dostupných hráčov. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Prišla vám pozvánka ku hre <b>%1</b> od <b>%2</b>.<br>Želáte si pridať sa k tejto hre? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Od tohto užívateľa už neobdržíte správy v chate alebo pozvánky do hry.<br>Naozaj si prajete pridať hráča <b>%1</b> do zoznamu ignorovaných? @@ -3940,31 +3988,31 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie hráči na chate: %1 - - + + connected players: %1 pripojení hráči: %1 - - + + Players (%1) - - - + + + Spectators (%1) - + search for player ... hľadanie hráča... - + Chat is only available to registered players. Chat je dostupný len registrovaným hráčom. @@ -3974,31 +4022,42 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie Pozvať hráča... - + Ignore player ... Ignorovať hráča... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 hrá v "%2". - + %1 is not playing at the moment. %1 momentálne nehrá. - - + + PokerTH - Info Message PokerTH - Informačná správa - - + + - + + PokerTH - Question PokerTH - Otázka @@ -4341,19 +4400,19 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Zastaviť @@ -4370,14 +4429,14 @@ Môžete pozývať ďalších hráčov kliknutím pravým tlačidlom na ich prie F1 - Zložiť karty/Vsadiť všetko | F2 - Zdržať sa/Dorovnať | F3 - Stávka/Zvýšiť - - - - - - - - + + + + + + + + Start Štart @@ -4538,8 +4597,8 @@ Prosím, vyberte si iné meno. Ľutujem, táto hra je už plná. - - + + Chat Chat @@ -4624,12 +4683,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Prosím navštívte <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> a stiahnite najnovšiu verziu. - + Closing PokerTH during network game Zatváram PokerTH počas sieťovej hry - + You are the hosting server. Do you want to close PokerTH anyway? Vy ste hosťujúci server. Chcete ukončiť PokerTH i napriek tomu? @@ -4646,16 +4705,16 @@ Prosím navštívte <a href="http://www.pokerth.net/" target=" Táto betaverzia PokerTH je zastaralá.<br>Prosím navštívte <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net</a> a stiahnite si najnovšiu verziu. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Open-Source Texas Holdem Engine - - - - - + + + + + Lobby Lobby @@ -4664,12 +4723,12 @@ Prosím navštívte <a href="http://www.pokerth.net/" target=" Došlo k internej chybe avatara. Prosím nahláste ju adminovi v lobby chate. - + PokerTH - Internet Game Message PokerTH - Správa hry na internete - + Attention! Do you really want to leave the current game and go back to the lobby? Upozornenie! Určite chcete opustiť momentálnu hru @@ -4730,64 +4789,64 @@ Uistite sa, prosím, že ste pripojený priamo na internet. Nepodarilo sa otvoriť cieľový súbor pri sťahovaní zoznamu serverov. - + PokerTH %1 PokerTH %1 - - + + Chance Šanca - + Really want to exit? Naozaj chcete ukončiť? - + PokerTH - Close Table? PokerTH - Uzatvoriť stôl? - - + + Kick Vykopnúť - - + + Do you want to kick <b>%1</b><br>from this game? Želáte si vykopnúť <b>%1</b><br>z tejto hry? - - - - + + + + <b>%1</b> secs left zostáva <b>%1</b> sekúnd - + vote hlas - + votes hlasy(ov) + - Chat is only available to registered players. Chat je dostupný len registrovaným hráčom. - + Spectators @@ -4814,14 +4873,14 @@ Ak ste dočasne mimo, môžete použiť nástroje "preč" v nástrojov Proti vám bol(o) <b>%1</b> %2.<br><b>%3</b> hlasov je treba na vykopnutie. - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Hráč <b>%1</b> má <b>%2</b> %3<br>proti. Na vykopnutie je potrebných <b>%4</b> hlasy(ov). - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Je proti vám <b>%1</b> %2. <br><b>Na vykopnutie je potrebných <b>%3</b> hlasy(ov). @@ -4897,7 +4956,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account @@ -5062,10 +5121,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Chyba pri načítaní súboru s profilom servera @@ -5076,7 +5135,7 @@ p, li { white-space: pre-wrap; } - + Save Server Profile Error Chyba pri ukladaní súboru s profilom servera @@ -5085,33 +5144,33 @@ p, li { white-space: pre-wrap; } Profil s názvom: " - - - - + + + + Could not load server-profiles-file: %1 - + Read Server-Profile List Error Chyba pri načítaní zoznamu profilov servera - + Could not read server-profiles list Nepodarilo sa prečítať zoznam s profilmi servera - - + + Save Server-Profile-File Error Chyba pri ukladaní súboru s profilom servera - - + + Could not save server-profiles-file: %1 @@ -5123,7 +5182,7 @@ p, li { white-space: pre-wrap; } - + A profile with the name: %1 already exists. Would you like to overwrite ? Profil s názvom: %1 už existuje. @@ -5191,12 +5250,12 @@ Prajete si ho prepísať? manualBlindsOrderDialogImpl - + Manual Blinds Order Manuálne stanovenie stávok - + You cannot set more than 30 manual blinds. Nemôžete nastaviť viac ako 30 manuálnych stávok. @@ -5331,14 +5390,14 @@ Prajete si ho prepísať? selectAvatarDialogImpl - - - + + + Avatar File Error Chyba súboru s avatarom - + Please select an avatar from the list! Prosím, vyberte si avatara zo zoznamu! @@ -5349,7 +5408,7 @@ Please enter an valid picture! Prosím, zadajte platný obrázok! - + Select external avatar picture Vyberte externý obrázok avatara @@ -5358,19 +5417,19 @@ Prosím, zadajte platný obrázok! Obrázky (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Veľkosť súboru vybraného obrázku je príliš veľká. (max. 30KB) Prosím vyberte menší obrázok! - + Images (*.png *.jpg *.gif) Obrázky (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! Zadaný obrázok s avatarom neexistuje. @@ -5386,25 +5445,25 @@ Prosím zadajte platný obrázok! Nastavenia - + Note: Best quality with image ratio like width=48, height=76. - - + + Play sound effects Prehrávať zvukové efekty - - + + Sound Volume: Hlasitosť zvuku: - - + + 10 10 @@ -5458,8 +5517,8 @@ p, li { white-space: pre-wrap; } Zobrazovať ľavú nástrojovú lištu - - + + Play blind raise notification @@ -5480,8 +5539,8 @@ p, li { white-space: pre-wrap; } Zobrazovať pravú nástrojovú lištu - - + + Show game settings dialog on every new game Zobrazovať dialógové okno s nastaveniami pred každou novou hrou @@ -5490,8 +5549,8 @@ p, li { white-space: pre-wrap; } Počet rozdaní pred zvýšením malej stávky naslepo: - - + + Number of players: Počet hráčov: @@ -5504,22 +5563,22 @@ p, li { white-space: pre-wrap; } Malá stávka naslepo: - - + + Game Speed: Rýchlosť hry: - - - - + + + + Start Cash: Úvodná hotovosť: - - + + Pause between hands (press "start" button to go on) Prestávka medzi rozdaniami (stlačte tlačidlo "start" pre pokračovanie) @@ -5536,48 +5595,48 @@ p, li { white-space: pre-wrap; } Nastavenia servera - - + + Server Password: Heslo servera: - - - - + + + + Server Port: Port servera: - - - - - - Use SCTP - Používať SCTP - - - - - - - Use IPv6 - Používať IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">Čo je to?</a> - + Use SCTP + Používať SCTP + + + + + + + Use IPv6 + Používať IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">Čo je to?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Čo je to?</a> @@ -5590,8 +5649,8 @@ p, li { white-space: pre-wrap; } Rýchlosť hry počítačových súperov: - - + + Maximum number of players: Maximálny počet hráčov: @@ -5608,44 +5667,44 @@ p, li { white-space: pre-wrap; } Prezývky hráčov - - + + Computer Engine Počítačový engine - - + + Opponent 6: Súper 6: - - + + Opponent 5: Súper 5: - - + + Opponent 4: Súper 4: - - + + Opponent 3: Súper 3: - - + + Opponent 2: Súper 2: - - + + Opponent 1: Súper 1: @@ -5660,18 +5719,18 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Poznámka: Najlepšiu kvalitu má avatar pri veľkosti obrázka </span><span style=" font-weight:600; font-style:italic;">šírka=50, výška=50.</span></p></body></html> - + Human Player: Ľudský hráč: - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Enable/Disable Logging Zapnúť/vypnúť zaznamenávanie @@ -5684,49 +5743,54 @@ p, li { white-space: pre-wrap; } Deň(dní) - - + + Log File Directory: Adresár s log súborom: - - + + Write log after every: Zapísať log pri každom: - - + + action (high frequent disc access) akcia (častý prístup na disk) - - + + hand (medium disc access) rozdanie (stredný prístup na disk) - - + + game (low disc access) hra (nízky prístup na disk) - + Log Messages Zaznamenávať správy - + + Show network state color in the corner of the avatar + + + + Local Game Settings Nastavenia lokálnej hry - + Network Game Settings Nastavenia sieťovej hry @@ -5743,18 +5807,18 @@ p, li { white-space: pre-wrap; } - + Sound Zvuk - - + + Network Server Settings Sieťové nastavenia servera - + Internet Game Settings Nastavenia internetovej hry @@ -5763,14 +5827,14 @@ p, li { white-space: pre-wrap; } Nastavenia internetového servera (Dedikovaný server) - - + + Server Address: Adresa servera: - - + + Use password for private game: Použiť heslo pre súkromnú hru: @@ -5791,78 +5855,78 @@ p, li { white-space: pre-wrap; } Opačné poradie F-klávesov (F1 - F3) - - - - + + + + First small blind: Prvá stávka: - - - - + + + + Raise blinds: Zvyšovať stávky: - - - - - - - - + + + + + + + + Every: Každých: - - - - + + + + hands rozdaní - - - - + + + + minutes minút - - - - + + + + Raise mode: Režim zvyšovania: - - - - + + + + Always double blinds Vždy dvojnásobné stávky - - - - + + + + Manual blinds order: Ručné stanovenie stávok: - - - - + + + + Edit ... Upraviť... @@ -5873,7 +5937,7 @@ p, li { white-space: pre-wrap; } Jazyk: - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5892,26 +5956,26 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Poznámka: Najlepšiu kvalitu dosiahnete s takýmto pomerom strán obrázka </span><span style=" font-weight:600; font-style:italic;">šírka=48, výška=76.</span></p></td></tr></table></body></html> - - + + Sound Categories Kategórie zvuku - - + + Play game actions sounds like "check", "call", "raise" Prehrávať zvuky pre herné akcie ako "ok", "dorovnať", "zvýšiť" - - + + Play lobby chat notifications Prehrávať notifikácie lobby chatu - - + + Play network/internet game notifications like "player joined the game" Prehrávať notifikácie sieťovej/internetovej hry ako "hráč sa pripojil k hre" @@ -5920,7 +5984,7 @@ p, li { white-space: pre-wrap; } Zapnúť/vypnúť lobby chat (IRC server) - + Player Nicks/Avatars Prezývka/avatar hráča @@ -5946,7 +6010,7 @@ p, li { white-space: pre-wrap; } Sieťová / Internetová hra - + Switch keyboard focus to bet-input-field if it's your turn Prepnúť zameranie klávesnice na políčko stávka-vstup, keď ste na ťahu @@ -5966,33 +6030,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Poznámka: Najlepšia kvalita pri pomere strán obrázka </span><span style=" font-weight:600; font-style:italic;">šírka=100, výška=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Časový limit pre hráčovu akciu: - - - - + + + + s s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -6003,7 +6067,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Poznámka: Východzie </span><span style=" font-weight:600; font-style:italic;">nastavenie hry</span><span style=" font-style:italic;"> ako "Maximálny počet hráčov", "Úvodná hotovosť" a "Malá stávka" budú použité </span><span style=" font-weight:600; font-style:italic;">z nastavenia sieťovej hry..</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -6014,15 +6078,15 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Poznámka: Najlepšia kvalita avatara pri pomere strán obrázka </span><span style=" font-weight:600; font-style:italic;">šírka=50, výška=50.</span></p></body></html> - - + + Automatic Server Configuration URL URL Automatickej konfigurácie servera - + Factory Settings @@ -6033,161 +6097,166 @@ p, li { white-space: pre-wrap; } - + Show country flag in the corner of avatar Zobrazovať vlajku krajiny v rohu avatara - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - - - + + Show network state color on the avatar + + + + + + + Description Popis - - - - + + + + Maintainer Správca - - - + + + State Stav - - + + Delay between hands: Prestávka medzi rozdaniami: - - + + Server Server - - + + Serverlist Address: Adresa zoznamu serverov: - - + + Manual Server Configuration Manuálne nastavenie serveru - - + + Game Hra - - + + Default game name: Východzí názov hry: - - + + Default game type: Východzí typ hry: - - + + Standard Štandardná - - + + Registered players only Iba registrovaní hráči - - + + Invited players only Iba pozvaní hráči - - + + Ranking game Vyhodnocovaná hra - + Show lobby chat Zobraziť lobby chat - - + + Automatically leave the table after the game finished - - + + Allow spectators to watch the game - - + + Ignored Players Ignorovaní hráči - - + + Player Hráč - - + + Remove Player Odstrániť hráča - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6200,26 +6269,26 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ľudský hráč:<br /><span style=" font-style:italic;">(Táto prezývka bude použitá aj ako login pre hru na internete)</span></p></body></html> - - + + Store log files for: - - + + Day(s) Deň(Dní) - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -6280,32 +6349,32 @@ p, li { white-space: pre-wrap; } Vypnúť úvodnú obrazovku pri štarte - - + + Game Table Herný stôl - - + + Card Deck Štýl kariet - - + + Card Back Rub kariete - - + + Use card back from card style Použiť rub kariet zo štýlu kariet - - + + Use custom card back picture: Použiť na rube kariet vlastný obrázok: @@ -6322,15 +6391,15 @@ p, li { white-space: pre-wrap; } Heslo: - - + + Avatar Server: Server s avatarmi: - + Style Štýl @@ -6348,33 +6417,33 @@ p, li { white-space: pre-wrap; } Activate Aktivovať - - - - - - Add ... - Pridať... - + Add ... + Pridať... + + + + + + Remove Odstrániť - - - - + + + + Preview - Information: Náhľad - Informácie: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6391,8 +6460,8 @@ p, li { white-space: pre-wrap; } Štýly kariet - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -6405,24 +6474,24 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Získať nové štýly kariet PokerTH...</span></a></p></body></html> - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 7: Súper 7: - - + + Opponent 8: Súper 8: @@ -6431,8 +6500,8 @@ p, li { white-space: pre-wrap; } Súper 1: {10:?} - - + + Opponent 9: Súper 9: @@ -6440,11 +6509,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Chyba v nastaveniach @@ -6461,7 +6530,7 @@ Please select an valid directory! Prosím, vyberte platný adresár! - + Select your flipside picture Vyberte si obrázok pre rub kariet @@ -6470,24 +6539,24 @@ Prosím, vyberte platný adresár! Obrázky (*.png) - + Open Directory Otvoriť adresár - + Images (*.png *.jpg *.gif) Obrázky (*.png *.jpg *.gif) - - + + Blinds Error Chyba stávok - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -6500,27 +6569,27 @@ Hodnota prvej malej stávky bude nastavená na maximálnu možnú úroveň.Naozaj chcete vymazať vybraný súbor so záznamom? - + Dutch Holandština - + English Angličtina - + French Francúzština - + German Nemčina - + Hungarian Maďarčina @@ -6533,292 +6602,292 @@ Hodnota prvej malej stávky bude nastavená na maximálnu možnú úroveň.Portugalsky - + Russian Ruština - + Turkish Turečtina - + Language Changed Zmenený jazyk - + You have changed application language to %1. Please restart PokerTH to load new language! Zmenili ste jazyk aplikácie na %1. Prosím reštartujte PokerTH pre načítanie nového jazyka! - + Italian Taliančina - + Slovak Slovenčina - + The entered flipside picture doesn't exist. Please enter an valid picture! Zadaný obrázok pre rub karty neexistuje. Prosím zadajte platný obrázok! - - + + The log file directory doesn't exist. Please select an valid directory! Adresár pre súbor s logmi neexistuje. Prosím zadajte platný adresár! - + Norwegian Nórština - + Spanish Španielčina - + Bulgarian Bulharčina - + Polish Poľština - + Chinese Čínština - + Greek Gréčtina - + Swedish Švédština - + The entered server list address is not a valid URL. Please enter a valid server list address! Zadaná adresa zoznamu serverov nie je platná URL. Zadajte, prosím, platnú adresu zoznamu serverov! - + Finnish Fínština - + Afrikaans Afrikaanština - + Catalan Katalánčina - + Czech Čeština - + Danish Dánčina - + Galician - + Japanese - + Lithuania Litovština - + Portuguese-Brazilian Brazílska portugalčina - + Portuguese-Portuguese Portugalská portugalčina - + Scottish Gaelic - + Tamil Tamilčina - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name Meno správcu - - + + Maintainer EMail E-mail správcu - - + + Create Date Dátum vytvorenia - + Windows Behaviour Správanie okien - + scaleable škálovateľný - + fixed fixná veľkosť - + Minimum Size Minimálne rozmery - + Maximum Size Maximálne rozmery - + Fixed Size Fixné rozmery - + State Stav - + Please select your game table style Prosím, vyberte si váš štýl herného stola - + PokerTH game table styles (*.xml) Štýly herných stolov PokerTH (*.xml) - + Game Table Style Error Chyba v štýle herného stola - + Selected game table style file is already in the list. Please select another one to add! Vybraný súbor so štýlom herného stola je už v zozname. Prosím, zvoľte si iný štýl na pridanie! - + Game Table Style File Error Chyba v súbore so štýlom herného stola - + Could not load game table style file correctly. Style will not be placed into list! Nepodarilo sa korektne načítať súbor so štýlom herného stola. Štýl nebude pridaný do zoznamu! - + Please select your card deck style Prosím, vyberte si váš štýl kariet - + PokerTH card deck styles (*.xml) Štýly kariet PokerTH (*.xml) - + Card Deck Style Error Chyba v štýle kariet - + Selected card deck style file is already in the list. Please select another one to add! Vybraný súbor so štýlom kariet je už v zozname. Prosím, zvoľte si iný štýl na pridanie! - + Card Deck Style File Error Chyba v súbore so štýlom kariet - + Could not load card deck style file correctly. Style will not be placed into list! Nepodarilo sa korektne načítať súbor so štýlom kariet. @@ -6829,12 +6898,12 @@ Style will not be placed into list! PokerTH - Súbor so záznamom - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6923,12 +6992,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Chyba servera - + You should not kick yourself from this game! Nemali by ste z hry vykopnúť sám seba! diff --git a/ts/pokerth_sv.ts b/ts/pokerth_sv.ts index c095bc6b..44b9d9cc 100644 --- a/ts/pokerth_sv.ts +++ b/ts/pokerth_sv.ts @@ -300,106 +300,106 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -423,22 +423,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + + PokerTH - Question - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -682,127 +720,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Om PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -919,12 +957,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Manuell ordning - + You cannot set more than 30 manual blinds. Du kan inte definiera fler än 30 nivåer. @@ -958,46 +996,46 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Du kan inte delta i Internetsepl med namnet "Human Player". Välj ett nytt namn. - - - + + + Nick name: - + Your player name is already used by another player. Please choose a different name. Ditt spelarnamn används redan av en annan spelare. Vänligen välj ett nytt namn. - + The player name is too short, too long or invalid. Please choose another one. Ditt angivna namn är för kort/långt eller ogiltigt. Vänligen välj ett nytt namn. - + There is already a game with your chosen game name. Please choose another one! - + There is a forbidden word in your chosen game name. Please choose another one! - - + + Game name: @@ -1036,27 +1074,27 @@ Please choose another one! connectToServerDialogImpl - + Resolving address... Söker efter serveradress... - + Connecting to server... Ansluter till server... - + Starting session... Startar server-session... - + Connection established! Anslutning etablerad! - + Reading server list... @@ -1207,7 +1245,7 @@ Please choose another one! - + %1's game %1s spel @@ -1555,7 +1593,7 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... Startar spel. Vänligen vänta ... @@ -1564,46 +1602,46 @@ p, li { white-space: pre-wrap; } %1s spel - + Joining a private Game Ansluter till privat spel - + You are about to join a private game. Please enter the password! Du ansluter till ett privat parti. Vänligen ange lösenordet. - + open öppet - - - - + + + + Game Info Spelinformation - - + + Game - - + + Players Spelare - - + + State Status @@ -1613,15 +1651,15 @@ p, li { white-space: pre-wrap; } - - + + P - - + + Available Players Tillgängliga spelare @@ -1636,121 +1674,126 @@ p, li { white-space: pre-wrap; } - + Player infos ... - + Report inappropriate game name - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - + + T - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - + Spectate - - + + Time - - - Show player stats + + Unignore player - + + Show player stats + + + + + Admin action ... - + Total kickban - + Close game - + running aktivt - - + + running games: %1 aktiva spel: %1 - - + + open games: %1 öppna spel: %1 - - + + Players (%1) - - - + + + Spectators (%1) @@ -1760,58 +1803,58 @@ p, li { white-space: pre-wrap; } - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - - - + + + sec (action) - - - + + + sec (hand delay) - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -1820,48 +1863,48 @@ Feel free to invite other players by right-clicking on their nick in the availab Spelare i chatten: %1 - - + + connected players: %1 Anslutna spelare: %1 - + hands händer - + minutes minuter - + double blinds Dubbla mörkar vid höjning - + manual blinds order Manuell mörk-ordning - + Server Error Serverfel - + You should not kick yourself from this game! Du borde inte kicka dig själv från spelet! - + search for player ... - + Chat is only available to registered players. @@ -1871,1263 +1914,1279 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Ignore player ... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + - + + PokerTH - Question - - Afghanistan - - - - - ALand Islands - - - - - Albania - - - - - Algeria - - - - - American Samoa - - - - - Andorra - - - - - Angola - - - - - Anguilla - - - - - Antarctica - - - - - Antigua And Barbuda - - - - - Argentina - - - - - Armenia - - - - - Aruba - - - - - Australia - - - - - Austria - - - - - Azerbaijan - - - - - Bahamas + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? - Bahrain + Afghanistan - Bangladesh + ALand Islands - Barbados + Albania - Belarus + Algeria - Belgium + American Samoa - Belize + Andorra - Benin + Angola - Bermuda + Anguilla - Bhutan + Antarctica - Bolivia + Antigua And Barbuda - Bosnia And Herzegovina + Argentina - Botswana + Armenia - Bouvet Island + Aruba - Brazil + Australia - British Indian Ocean Territory + Austria - Brunei Darussalam + Azerbaijan - Bulgaria + Bahamas - Burkina Faso + Bahrain - Burundi + Bangladesh - Cambodia + Barbados - Cameroon + Belarus - Canada + Belgium - Cape Verde + Belize - Cayman Islands + Benin - Central African Republic + Bermuda - Chad + Bhutan - Chile + Bolivia - China + Bosnia And Herzegovina - Christmas Island + Botswana - Cocos (Keeling) Islands + Bouvet Island - Colombia + Brazil - Comoros + British Indian Ocean Territory - Congo + Brunei Darussalam - Congo, The Democratic Republic Of The + Bulgaria - Cook Islands + Burkina Faso - Costa Rica + Burundi - Cote D'Ivoire + Cambodia - Croatia + Cameroon - Cuba + Canada - Cyprus + Cape Verde - Czech Republic + Cayman Islands - Denmark + Central African Republic - Djibouti + Chad - Dominica + Chile - Dominican Republic + China - Ecuador + Christmas Island - Egypt + Cocos (Keeling) Islands - El Salvador + Colombia - Equatorial Guinea + Comoros - Eritrea + Congo - Estonia + Congo, The Democratic Republic Of The - Ethiopia + Cook Islands - Falkland Islands (Malvinas) + Costa Rica - Faroe Islands + Cote D'Ivoire - Fiji + Croatia - Finland + Cuba - France + Cyprus - French Guiana + Czech Republic - French Polynesia + Denmark - French Southern Territories + Djibouti - Gabon + Dominica - Gambia + Dominican Republic - Georgia + Ecuador - Germany + Egypt - Ghana + El Salvador - Gibraltar + Equatorial Guinea - Greece + Eritrea - Greenland + Estonia - Grenada + Ethiopia - Guadeloupe + Falkland Islands (Malvinas) - Guam + Faroe Islands - Guatemala + Fiji - Guernsey + Finland - Guinea + France - Guinea-Bissau + French Guiana - Guyana + French Polynesia - Haiti + French Southern Territories - Heard Island And Mcdonald Islands + Gabon - Holy See (Vatican City State) + Gambia - Honduras + Georgia - Hong Kong + Germany - Hungary + Ghana - Iceland + Gibraltar - India + Greece - Indonesia + Greenland - Iran, Islamic Republic Of + Grenada - Iraq + Guadeloupe - Ireland + Guam - Isle Of Man + Guatemala - Israel + Guernsey - Italy + Guinea - Jamaica + Guinea-Bissau - Japan + Guyana - Jersey + Haiti - Jordan + Heard Island And Mcdonald Islands - Kazakhstan + Holy See (Vatican City State) - Kenya + Honduras - Kiribati + Hong Kong - Korea, Democratic People'S Republic Of + Hungary - Korea, Republic Of + Iceland - Kuwait + India - Kyrgyzstan + Indonesia - Lao People'S Democratic Republic + Iran, Islamic Republic Of - Latvia + Iraq - Lebanon + Ireland - Lesotho + Isle Of Man - Liberia + Israel - Libyan Arab Jamahiriya + Italy - Liechtenstein + Jamaica - Lithuania + Japan - Luxembourg + Jersey - Macao + Jordan - Macedonia, The Former Yugoslav Republic Of + Kazakhstan - Madagascar + Kenya - Malawi + Kiribati - Malaysia + Korea, Democratic People'S Republic Of - Maldives + Korea, Republic Of - Mali + Kuwait - Malta + Kyrgyzstan - Marshall Islands + Lao People'S Democratic Republic - Martinique + Latvia - Mauritania + Lebanon - Mauritius + Lesotho - Mayotte + Liberia - Mexico + Libyan Arab Jamahiriya - Micronesia, Federated States Of + Liechtenstein - Moldova, Republic Of + Lithuania - Monaco + Luxembourg - Mongolia + Macao - Montserrat + Macedonia, The Former Yugoslav Republic Of - Morocco + Madagascar - Mozambique + Malawi - Myanmar + Malaysia - Namibia + Maldives - Nauru + Mali - Nepal + Malta - Netherlands + Marshall Islands - Netherlands Antilles + Martinique - New Caledonia + Mauritania - New Zealand + Mauritius - Nicaragua + Mayotte - Niger + Mexico - Nigeria + Micronesia, Federated States Of - Niue + Moldova, Republic Of - Norfolk Island + Monaco - Northern Mariana Islands + Mongolia - Norway + Montserrat - Oman + Morocco - Pakistan + Mozambique - Palau + Myanmar - Palestinian Territory, Occupied + Namibia - Panama + Nauru - Papua New Guinea + Nepal - Paraguay + Netherlands - Peru + Netherlands Antilles - Philippines + New Caledonia - Pitcairn + New Zealand - Poland + Nicaragua - Portugal + Niger - Puerto Rico + Nigeria - Qatar + Niue - Reunion + Norfolk Island - Romania + Northern Mariana Islands - Russian Federation + Norway - Rwanda + Oman - Saint Helena + Pakistan - Saint Kitts And Nevis + Palau - Saint Lucia + Palestinian Territory, Occupied - Saint Pierre And Miquelon + Panama - Saint Vincent And The Grenadines + Papua New Guinea - Samoa + Paraguay - San Marino + Peru - Sao Tome And Principe + Philippines - Saudi Arabia + Pitcairn - Senegal + Poland - Serbia And Montenegro + Portugal - Seychelles + Puerto Rico - Sierra Leone + Qatar - Singapore + Reunion - Slovakia + Romania - Slovenia + Russian Federation - Solomon Islands + Rwanda - Somalia + Saint Helena - South Africa + Saint Kitts And Nevis - South Georgia And The South Sandwich Islands + Saint Lucia - Spain + Saint Pierre And Miquelon - Sri Lanka + Saint Vincent And The Grenadines - Sudan + Samoa - Suriname + San Marino - Svalbard And Jan Mayen + Sao Tome And Principe - Swaziland + Saudi Arabia - Sweden + Senegal - Switzerland + Serbia And Montenegro - Syrian Arab Republic + Seychelles - Taiwan, Province Of China + Sierra Leone - Tajikistan + Singapore - Tanzania, United Republic Of + Slovakia - Thailand + Slovenia - Timor-Leste + Solomon Islands - Togo + Somalia - Tokelau + South Africa - Tonga + South Georgia And The South Sandwich Islands - Trinidad And Tobago + Spain - Tunisia + Sri Lanka - Turkey + Sudan - Turkmenistan + Suriname - Turks And Caicos Islands + Svalbard And Jan Mayen - Tuvalu + Swaziland - Uganda + Sweden - Ukraine + Switzerland - United Arab Emirates + Syrian Arab Republic - United Kingdom + Taiwan, Province Of China - United States + Tajikistan - United States Minor Outlying Islands + Tanzania, United Republic Of - Uruguay + Thailand - Uzbekistan + Timor-Leste - Vanuatu + Togo - Venezuela + Tokelau - Viet Nam + Tonga - Virgin Islands, British + Trinidad And Tobago - Virgin Islands, U.S. + Tunisia - Wallis And Futuna + Turkey - Western Sahara + Turkmenistan - Yemen + Turks And Caicos Islands - Zambia + Tuvalu + Uganda + + + + + Ukraine + + + + + United Arab Emirates + + + + + United Kingdom + + + + + United States + + + + + United States Minor Outlying Islands + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Viet Nam + + + + + Virgin Islands, British + + + + + Virgin Islands, U.S. + + + + + Wallis And Futuna + + + + + Western Sahara + + + + + Yemen + + + + + Zambia + + + + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3426,19 +3485,19 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Sluta @@ -3451,7 +3510,7 @@ Feel free to invite other players by right-clicking on their nick in the availab Ctrl+N för att starta ett nytt spel - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Den öppna pokermotorn för Texas Hold'em @@ -3470,23 +3529,23 @@ Välj ett nytt namn. F1 - "All in" (Satsa allt) | F2 - Satsa/Höj | F3 - Pass/Syn | F4 - Lägg - - - - - - - - + + + + + + + + Start Starta - - - - - + + + + + Lobby Lobby @@ -3697,104 +3756,104 @@ Vänligen välj ett nytt namn. Automatiskt läge valt: Pass eller Lägg. - - + + Chat Chatt - + Closing PokerTH during network game Stänger PokerTH under nätverksspel - + You are the hosting server. Do you want to close PokerTH anyway? Du är värdserver för spelet, vill du stänga ner i alla fall? - + PokerTH - Internet Game Message PokerTH - Internetspels-meddelande - + Attention! Do you really want to leave the current game and go back to the lobby? OBS! Vill du verkligen lämna det nuvarande spelet och återvända till lobbyn? - - + + Chance - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick - - + + Do you want to kick <b>%1</b><br>from this game? - - - - + + + + <b>%1</b> secs left - + vote - + votes - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. + - Chat is only available to registered players. - + Spectators @@ -3852,7 +3911,7 @@ och återvända till lobbyn? internetGameLoginDialogImpl - + Create new user account @@ -3994,10 +4053,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Fel vid laddning av profilen @@ -4008,45 +4067,45 @@ p, li { white-space: pre-wrap; } - - - - + + + + Could not load server-profiles-file: %1 - + Save Server Profile Error Fel vid sparande av profil - + A profile with the name: %1 already exists. Would you like to overwrite ? En profil med namn: %1 existerar redan. Vill du skriva över den? - + Read Server-Profile List Error Fel vid inläsning av profillista - + Could not read server-profiles list Kunde inte läsa listan med server-profiler - - + + Save Server-Profile-File Error Fel vid sparande av profil - - + + Could not save server-profiles-file: %1 @@ -4119,12 +4178,12 @@ Vill du skriva över den? manualBlindsOrderDialogImpl - + Manual Blinds Order Manuell mörk-ordning - + You cannot set more than 30 manual blinds. Du kan inte definiera fler än 30 mörk-nivåer. @@ -4251,38 +4310,38 @@ Vill du skriva över den? selectAvatarDialogImpl - - - + + + Avatar File Error Avatar-fil fel - + Please select an avatar from the list! Vänligen välj en avatar från listan! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Filstorleken på den valda bilden är för stor. (max 30KB) Vänligen välj en mindre bild. - + The entered avatar picture doesn't exist. Please enter an valid picture! Den angivna bilden finns inte. Välj en giltig bild. - + Select external avatar picture Välj egen avatarbild. - + Images (*.png *.jpg *.gif) Bilder (*.png *.jpg *.gif) @@ -4356,7 +4415,7 @@ Välj en giltig bild. Nätverk- / Internetspel - + Switch keyboard focus to bet-input-field if it's your turn But fokus till satsningsrutan vid din tur @@ -4386,14 +4445,14 @@ p, li { white-space: pre-wrap; } - + Sound Ljud - + Factory Settings @@ -4410,268 +4469,273 @@ p, li { white-space: pre-wrap; } - + Show country flag in the corner of avatar - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Game Table - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State Status - - + + Card Deck - - + + Card Back - - + + Use card back from card style - - + + Use custom card back picture: - - + + Play sound effects Spela ljudeffekter - - + + Sound Volume: Volym: - - + + 10 10 - - + + Sound Categories Ljud-kategorier - - + + Play game actions sounds like "check", "call", "raise" Spela ljud under partiet för handlingar som "pass", "syn", "höjning" - - + + Play lobby chat notifications Spela upp ljud i lobby-chatten - - + + Play network/internet game notifications like "player joined the game" Spela upp ljud vid nätverks- och internetspel, t ex "spelare anslöt till spelet" - - + + Allow spectators to watch the game - + OK - + Local Game Settings Inställningar för Lokalt Spel - - + + Number of players: Antal spelare: - - - - + + + + Start Cash: Inköp: - - - - - - - - + + + + + + + + $ SEK - - - - + + + + First small blind: Ursprunglig liten mörk: - - - - + + + + Raise blinds: Höj mörkar: - - - - - - - - + + + + + + + + Every: Var: - - - - + + + + hands hand - - - - + + + + minutes minut - - - - + + + + Raise mode: Mörk-läge: - - - - + + + + Always double blinds Dubbla mörkar vid höjning - - - - + + + + Manual blinds order: Manuell ordning: - - - - + + + + Edit ... Redigera ... - - + + Game Speed: Hastighet: - - + + Pause between hands (press "start" button to go on) Pausa mellan händerna (tryck på start-knappen för att fortsätta) - - + + Show game settings dialog on every new game Visa inställningsrutan vid varje nytt spel - + Network Game Settings Inställningar för Nätverks-spel - - + + Maximum number of players: Maximalt antal spelare: @@ -4680,14 +4744,14 @@ p, li { white-space: pre-wrap; } Ta bort - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4696,78 +4760,83 @@ p, li { white-space: pre-wrap; } Hastighet för dator-spelare: - - + + Timeout for player action: Tid att agera på: - - - - + + + + s s - - + + Network Server Settings Inställningar för Nätverks-server - - + + Server Password: Serverlösenord: - - - - + + + + Server Port: Serverport: - - - - - - Use SCTP - Använd SCTP - - - - - - - Use IPv6 - Använd IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://sv.wikipedia.org/wiki/Ipv6">Vad är det här?</a> - + Use SCTP + Använd SCTP + + + + + + + Use IPv6 + Använd IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://sv.wikipedia.org/wiki/Ipv6">Vad är det här?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://sv.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Vad är det här?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings Inställningar för Internet-spel - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4782,14 +4851,14 @@ p, li { white-space: pre-wrap; } Inställningar för Internetserver (dedikerad server) - - + + Server Address: Serveradress: - - + + Use password for private game: Använd lösenord för privat spel: @@ -4818,49 +4887,49 @@ p, li { white-space: pre-wrap; } Spelarnas namn - - + + Computer Engine Spelmotor - - + + Opponent 6: Motståndare 6: - - + + Opponent 5: Motståndare 5: - - + + Opponent 4: Motståndare 4: - - + + Opponent 3: Motståndare 3: - - + + Opponent 2: Motståndare 2: - - + + Opponent 1: Motståndare 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4871,13 +4940,13 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">OBS: Bäst avatar-kvalité uppnås med stoleksförhållande </span><span style=" font-weight:600; font-style:italic;">bredd=50, höjd=50.</span></p></body></html> - + Human Player: Mänsklig spelare: - - + + Enable/Disable Logging Aktivera/stäng av logg-funktionen @@ -4890,49 +4959,49 @@ p, li { white-space: pre-wrap; } Dag(ar) - - + + Log File Directory: Katalog för loggar: - - + + Write log after every: Skriv till log efter varje: - + Note: Best quality with image ratio like width=48, height=76. - - + + action (high frequent disc access) handling (många skrivningar till disk) - - + + hand (medium disc access) hand (medelmånga skrivningar till disk) - - + + game (low disc access) parti (få skrivningar till disk) - + Log Messages Loggmeddelanden - + Player Nicks/Avatars Spelarnamn/avatarer @@ -4951,48 +5020,48 @@ p, li { white-space: pre-wrap; } - - + + Play blind raise notification - - + + Automatic Server Configuration URL - - + + Serverlist Address: - - + + Manual Server Configuration - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -5031,15 +5100,15 @@ p, li { white-space: pre-wrap; } Lösenord: - - + + Avatar Server: - + Style @@ -5049,33 +5118,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style - - - - - - Add ... - - + Add ... + + + + + + + Remove - - - - + + + + Preview - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5084,8 +5153,8 @@ p, li { white-space: pre-wrap; } - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5094,7 +5163,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5106,96 +5175,96 @@ p, li { white-space: pre-wrap; } - - + + Delay between hands: - - + + Server - - + + Game - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5204,14 +5273,14 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Motståndare 1: {7:?} - - + + Opponent 8: Motståndare 1: {8:?} @@ -5220,8 +5289,8 @@ p, li { white-space: pre-wrap; } Motståndare 1: {10:?} - - + + Opponent 9: Motståndare 1: {10:?} {9:?} @@ -5229,37 +5298,37 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - + Dutch Holländska - + English Engelska - + French Franska - + German Tyska - + Hungarian Ungerska - + Italian Italienska - + Norwegian Norska @@ -5268,85 +5337,85 @@ p, li { white-space: pre-wrap; } Portugisiska - + Russian Ryska - + Slovak Slovakiska - + Spanish Spanska - + Turkish Turkiska - - - - - + + + + + Settings Error Inställningsfel - + The entered flipside picture doesn't exist. Please enter an valid picture! Den angivna kortbilden finns inte. Välj en giltig bild. - - + + The log file directory doesn't exist. Please select an valid directory! Den angivna mappen finns inte. Välj en giltig mapp för loggfiler. - + Language Changed Nytt språk valt - + You have changed application language to %1. Please restart PokerTH to load new language! Du har bytt språk till %1. Starta om PokerTH för att se förändringen. - + Select your flipside picture Välj bild för kortens baksida - + Images (*.png *.jpg *.gif) Bilder (*.png *.jpg *.gif) - + Open Directory Öppna mapp - - + + Blinds Error Mörk-fel - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5355,242 +5424,242 @@ This first-small-blind-value will be set to maximum allowed value. Det kommer sättas till det maximalt tillåtna värdet. - + Bulgarian Bulgariska - + Afrikaans - + Catalan - + Chinese - + Czech - + Danish - + Finnish - + Galician - + Greek - + Japanese - + Lithuania - + Polish Polska - + Portuguese-Brazilian - + Portuguese-Portuguese - + Scottish Gaelic - + Swedish - + Tamil - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + The entered server list address is not a valid URL. Please enter a valid server list address! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State Status - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5655,12 +5724,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Serverfel - + You should not kick yourself from this game! Du borde inte kicka dig själv från spelet! diff --git a/ts/pokerth_ta.ts b/ts/pokerth_ta.ts index e52cc8eb..3f8bdcae 100644 --- a/ts/pokerth_ta.ts +++ b/ts/pokerth_ta.ts @@ -318,106 +318,106 @@ Please contact the game table style builder %3. - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -441,22 +441,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? இந்த நபரிடமிருந்து இனி பேச்சு தகவலோ விளையாடுவதற்கு அழைப்பிதலோ பெற முடியாது.<br>இருந்தும் இந்த விளையாட்டு வீரரை <b>%1</b> புறக்கணிப்பு பட்டியலில் போட விரும்புகிறீர்களா? - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? - - + + + PokerTH - Question போகர்டேஹோ - வினா @@ -701,127 +739,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 போகர்டேஹோ %1 - + About PokerTH %1 போகர்டேஹோ வை பற்றிய தகவல் %1 - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -938,12 +976,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order சுய பந்தயத்தொகையின் வரிசை - + You cannot set more than 30 manual blinds. நீங்கள் முற்பதுக்கு மேற்ப்பட்ட சுய பந்தயத்தொகை விதிகளை அமைக்க முடியாது. @@ -977,45 +1015,45 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. நீங்கள் இணையதள-விளையாட்டு-கூடத்தில் "மனித விளையாட்டு வீரர்" என்ற புனைப்பெயருடன் சேர இயலாது. தயவு செய்து வேறொரு பெயரை தேர்ந்தெடுக்கவும். - - - + + + Nick name: - + Your player name is already used by another player. Please choose a different name. நீங்கள் தேர்ந்தெடுத்த விளையாட்டு வீரரின் பெயர் ஏற்கனவே வேறொருவரால் உபயோகிக்கப்பட்டுள்ளது. தயவு செய்து வேறொரு பெயரை தேர்ந்தெடுக்கவும். - + The player name is too short, too long or invalid. Please choose another one. விளையாட்டு வீரர் பெயரின் நீளம் மிகவும் குறைவாக உள்ளது அல்லது மிகவும் நீளமாக உள்ளது அல்லது செல்லாது. தயவு செய்து வேறொன்றை தேர்ந்தெடுக்கவும். - + There is already a game with your chosen game name. Please choose another one! - + There is a forbidden word in your chosen game name. Please choose another one! - - + + Game name: @@ -1054,27 +1092,27 @@ Please choose another one! connectToServerDialogImpl - + Resolving address... விளையாட்டு வழங்கியின் முகவரியை சரி பார்த்துக்கொண்டிருக்கிறது ... - + Connecting to server... விளையாட்டு வழங்கியுடனான சேர்க்கை நடைபெற்றுகொண்டிருக்கிறது ... - + Starting session... விளையாட்டு வழங்கியுடனான சேர்க்கை ஆரம்பமாகிறது ... - + Connection established! விளையாட்டு வழங்கியுடனான சேர்க்கை உருவாகிவிட்டது! - + Reading server list... விளையாட்டு வழங்கிகளின் பட்டியலை படித்துக்கொண்டிருக்கிறது ... @@ -1229,7 +1267,7 @@ Please choose another one! - + %1's game %1 வது விளையாட்டு @@ -1537,84 +1575,84 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... விளையாட்டு ஆரம்பமாகிறது. தயவு செய்து காத்திருக்கவும் ... - - - + + + sec (action) - - - + + + sec (hand delay) - + Joining a private Game ஒரு தனியார் விளையாட்டில் இணைந்துகொண்டிருக்கிறது - + You are about to join a private game. Please enter the password! நீங்கள் ஒரு தனியார் விளையாட்டில் இணைய போகிறீர்கள். தயவு செய்து இரகசிய சொல்லை தரவும்! - + open திற - - - - + + + + Game Info விளையாட்டை பற்றிய செய்தி - + Spectate - - + + Game விளையாட்டு - - + + Players விளையாட்டு வீரர்கள் - - + + State வீரரின் தற்போதைய நிலவரம் - - + + P - - + + Available Players விளையாட இருக்கும் வீரர்கள் @@ -1630,39 +1668,44 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... - + Report inappropriate game name - - - + + + Standard சாதாரண - - - + + + Registered players only பதிவு செய்த விளையாட்டு வீரர்கள் மட்டும் - - - + + + Invited players only அழைக்கப்பட்ட விளையாட்டு வீரர்கள் மட்டும் - - - + + + Ranking game தரவரிசை விளையாட்டு @@ -1672,47 +1715,47 @@ p, li { white-space: pre-wrap; } - - + + T - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - - + + Time - - + + Show player stats - - + + Admin action ... - + Total kickban - + Close game @@ -1721,32 +1764,32 @@ p, li { white-space: pre-wrap; } விளையாட்டில் இணைந்துள்ள வீரர்கள் - அதிகபட்சம். %1 - + running நடைபெற்றுகொண்டிருக்கும் - - + + running games: %1 நடைபெற்றுகொண்டிருக்கும் விளையாட்டு: %1 - - + + open games: %1 ஆரம்பித்த விளையாட்டுகள்: %1 - - + + Players (%1) - - - + + + Spectators (%1) @@ -1756,1286 +1799,1301 @@ p, li { white-space: pre-wrap; } - + Ignore %1 + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". - + %1 is not playing at the moment. - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + The game will start in<br><b>%1</b> seconds. - + Afghanistan - + ALand Islands - + Albania - + Algeria - + American Samoa - + Andorra - + Angola - + Anguilla - + Antarctica - + Antigua And Barbuda - + Argentina - + Armenia - + Aruba - + Australia - + Austria - + Azerbaijan - + Bahamas - + Bahrain - + Bangladesh - + Barbados - + Belarus - + Belgium - + Belize - + Benin - + Bermuda - + Bhutan - + Bolivia - + Bosnia And Herzegovina - + Botswana - + Bouvet Island - + Brazil - + British Indian Ocean Territory - + Brunei Darussalam - + Bulgaria - + Burkina Faso - + Burundi - + Cambodia - + Cameroon - + Canada - + Cape Verde - + Cayman Islands - + Central African Republic - + Chad - + Chile - + China - + Christmas Island - + Cocos (Keeling) Islands - + Colombia - + Comoros - + Congo - + Congo, The Democratic Republic Of The - + Cook Islands - + Costa Rica - + Cote D'Ivoire - + Croatia - + Cuba - + Cyprus - + Czech Republic - + Denmark - + Djibouti - + Dominica - + Dominican Republic - + Ecuador - + Egypt - + El Salvador - + Equatorial Guinea - + Eritrea - + Estonia - + Ethiopia - + Falkland Islands (Malvinas) - + Faroe Islands - + Fiji - + Finland - + France - + French Guiana - + French Polynesia - + French Southern Territories - + Gabon - + Gambia - + Georgia - + Germany - + Ghana - + Gibraltar - + Greece - + Greenland - + Grenada - + Guadeloupe - + Guam - + Guatemala - + Guernsey - + Guinea - + Guinea-Bissau - + Guyana - + Haiti - + Heard Island And Mcdonald Islands - + Holy See (Vatican City State) - + Honduras - + Hong Kong - + Hungary - + Iceland - + India - + Indonesia - + Iran, Islamic Republic Of - + Iraq - + Ireland - + Isle Of Man - + Israel - + Italy - + Jamaica - + Japan - + Jersey - + Jordan - + Kazakhstan - + Kenya - + Kiribati - + Korea, Democratic People'S Republic Of - + Korea, Republic Of - + Kuwait - + Kyrgyzstan - + Lao People'S Democratic Republic - + Latvia - + Lebanon - + Lesotho - + Liberia - + Libyan Arab Jamahiriya - + Liechtenstein - + Lithuania - + Luxembourg - + Macao - + Macedonia, The Former Yugoslav Republic Of - + Madagascar - + Malawi - + Malaysia - + Maldives - + Mali - + Malta - + Marshall Islands - + Martinique - + Mauritania - + Mauritius - + Mayotte - + Mexico - + Micronesia, Federated States Of - + Moldova, Republic Of - + Monaco - + Mongolia - + Montserrat - + Morocco - + Mozambique - + Myanmar - + Namibia - + Nauru - + Nepal - + Netherlands - + Netherlands Antilles - + New Caledonia - + New Zealand - + Nicaragua - + Niger - + Nigeria - + Niue - + Norfolk Island - + Northern Mariana Islands - + Norway - + Oman - + Pakistan - + Palau - + Palestinian Territory, Occupied - + Panama - + Papua New Guinea - + Paraguay - + Peru - + Philippines - + Pitcairn - + Poland - + Portugal - + Puerto Rico - + Qatar - + Reunion - + Romania - + Russian Federation - + Rwanda - + Saint Helena - + Saint Kitts And Nevis - + Saint Lucia - + Saint Pierre And Miquelon - + Saint Vincent And The Grenadines - + Samoa - + San Marino - + Sao Tome And Principe - + Saudi Arabia - + Senegal - + Serbia And Montenegro - + Seychelles - + Sierra Leone - + Singapore - + Slovakia - + Slovenia - + Solomon Islands - + Somalia - + South Africa - + South Georgia And The South Sandwich Islands - + Spain - + Sri Lanka - + Sudan - + Suriname - + Svalbard And Jan Mayen - + Swaziland - + Sweden - + Switzerland - + Syrian Arab Republic - + Taiwan, Province Of China - + Tajikistan - + Tanzania, United Republic Of - + Thailand - + Timor-Leste - + Togo - + Tokelau - + Tonga - + Trinidad And Tobago - + Tunisia - + Turkey - + Turkmenistan - + Turks And Caicos Islands - + Tuvalu - + Uganda - + Ukraine - + United Arab Emirates - + United Kingdom - + United States - + United States Minor Outlying Islands - + Uruguay - + Uzbekistan - + Vanuatu - + Venezuela - + Viet Nam - + Virgin Islands, British - + Virgin Islands, U.S. - + Wallis And Futuna - + Western Sahara - + Yemen - + Zambia - + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -3044,8 +3102,8 @@ Feel free to invite other players by right-clicking on their nick in the availab உரையாடும் இடத்தில் உள்ள வீரர்கள்: %1 - - + + connected players: %1 இணைந்துள்ள விளையாட்டு வீரர்கள்: %1 @@ -3054,42 +3112,42 @@ Feel free to invite other players by right-clicking on their nick in the availab இணைந்துள்ள விளையாட்டு வீரர்கள் - + hands சுற்றுகள் - + minutes நொடிகள் - + double blinds இரட்டிப்பு பந்தயத்தொகை - + manual blinds order சுய பந்தயத்தொகை வரிசை - + Server Error விளையாட்டு வழங்கியில் பிழை - + You should not kick yourself from this game! உங்களை நீங்களே விளையாட்டிலிருந்து வெளியே தள்ள கூடாது! - + search for player ... - + Chat is only available to registered players. @@ -3107,7 +3165,7 @@ Feel free to invite other players by right-clicking on their nick in the availab %1 என்ற விளையாட்டு வீரரை புறக்கணிக்கவும் - + Ignore player ... விளையாட்டு வீரரை புறக்கணிக்கவும் ... @@ -3118,8 +3176,8 @@ You can invite other players with right-click on their nick in the left availabl மற்றவர்களை அழைக்க இடது பக்கமுள்ள வீரர்களின் பட்டியலில் மௌசின் வலது பொத்தானை அழுத்தி விளையாட அழையுங்கள். - - + + PokerTH - Info Message போகர்டேஹோ - செய்தி தகவல் @@ -3144,10 +3202,11 @@ You can invite other players with right-click on their nick in the left availabl இனிமேல் இந்த நபரிடமிருந்து உரையாடல் செய்தியோ விளையாட்டு அழைப்பிதலோ பெற முடியாது.<br>நீங்கள் இந்த விளையாட்டு வீரரை <b>%1</b> புறக்கணிப்பு பட்டியலில் போட விரும்புகிறீர்களா? - - + + - + + PokerTH - Question போகர்டேஹோ - வினா @@ -3434,147 +3493,147 @@ You can invite other players with right-click on their nick in the left availabl gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop நிறுத்து - + PokerTH %1 போகர்டேஹோ %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine போகர்டெஹோ %1 - சுதந்திர-மூலநிரல் டெக்சாஸ் ஹோல்தேம் பொறி - - - - - - - - + + + + + + + + Start ஆரம்பி - - - - - + + + + + Lobby வரவேற்ப்பறை - - + + Chat உரையாடல் - + Closing PokerTH during network game விளையாட்டு வலையில் போகர்டேஹோ வை மூடும் பொழுது - + You are the hosting server. Do you want to close PokerTH anyway? நீங்கள்தான் இந்த விளையாட்டை ஆரம்பித்தீர்கள். நீங்கள் போகர்டேஹோ வை நிச்சயம் மூட வேண்டுமா? - + Really want to exit? - + PokerTH - Close Table? - + PokerTH - Internet Game Message போகர்டேஹோ - இணையதள விளையாட்டு செய்தி - + Attention! Do you really want to leave the current game and go back to the lobby? கவனிக்க! தற்சமயம் விளையாடும் விளையாட்டிலிருந்து நிச்சயம் நீங்கள் விலகி வரவேர்ப்பரைக்கு திரும்பி செல்ல விரும்புகிறீர்களா? + - Chat is only available to registered players. - + Spectators - - + + Chance ஜெயிக்கும் வாய்ப்பு - - + + Kick துரத்து - - + + Do you want to kick <b>%1</b><br>from this game? நீங்கள் <b>%1</b>என்பவரை <br>விளையாட்டிலிருந்து துரத்த விரும்புகிறீர்களா? - - - - + + + + <b>%1</b> secs left <b>%1</b> நொடிகள் மீதமுள்ளது - + vote ஒட்டு - + votes ஒட்டுகள் - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. விளையாட்டு வீரர் <b>%1</b> என்பவருக்கு எதிராக <b>%2</b> %3<br>உள்ளது. அவரை துரத்த <b>%4</b> ஓட்டுகள் தேவை. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. உங்களுக்கு எதிராக <b>%1</b> %2 உள்ளது.<br>உங்களை வெளியேற்ற <b>%3</b> ஓட்டுகள் தேவை. @@ -3644,7 +3703,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account @@ -3785,10 +3844,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error விளையாட்டு வழங்கியின்-சிறு-குறிப்பு-கோப்பையை துவக்கும் பொழுது பிழை @@ -3799,44 +3858,44 @@ p, li { white-space: pre-wrap; } - - - - + + + + Could not load server-profiles-file: %1 - + Save Server Profile Error விளையாட்டு வழங்கியின் சிறு குறிப்பு பிழையை சேர்த்து வைக்கவும் - + A profile with the name: %1 already exists. Would you like to overwrite ? %1: இப்பெயர் கொண்ட சிறு குறிப்பு ஏற்கனவே உபயோகத்தில் உள்ளது. நீங்கள் அதை அழித்து எழுத விரும்புகிறீர்களா? - + Read Server-Profile List Error விளையாட்டு வழங்கியின்-சிறு-குறிப்பு பட்டியலை படிக்கும் பொழுது பிழை - + Could not read server-profiles list விளையாட்டு வழங்கியின்-சிறு குறிப்பு பட்டியலை படிக்க முடியவில்லை - - + + Save Server-Profile-File Error விளையாட்டு வழங்கியின்-சிறு குறிப்பு-கோப்பையின் பிழையை சேர்த்து வை - - + + Could not save server-profiles-file: %1 @@ -3909,12 +3968,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order சுய பந்தயத்தொகை கோரிக்கை - + You cannot set more than 30 manual blinds. நீங்கள் முற்பதுக்கு மேற்ப்பட்ட சுய பந்தயத்தொகை விதிகளை அமைக்க முடியாது. @@ -4041,38 +4100,38 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error அவதார் கோப்பையின் பிழை - + Please select an avatar from the list! தயவு செய்து ஒரு அவதாரத்தை பட்டியலில் இருந்து தேர்ந்தெடுக்கவும்! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! தேர்ந்தெடுத்த படத்தின் கோப்பையளவு மிகவும் பெரியது. (அட்திகபட்சம். 30KB) தயவு செய்து ஒரு சிறிய படத்தை தேர்ந்தெடுக்கவும்! - + The entered avatar picture doesn't exist. Please enter an valid picture! தேர்ந்தெடுத்த அவதாரத்தின் படம் இல்லை. தயவு செய்து பட்டியலில் இருக்கின்ற ஒரு படத்தை தேர்ந்தெடுக்கவும்! - + Select external avatar picture வெளி அவதாரத்தின் படத்தை தேர்ந்தெடுக்கவும் - + Images (*.png *.jpg *.gif) உருவங்கள் (*.png *.jpg *.gif) @@ -4134,7 +4193,7 @@ Please enter an valid picture! கணினி விளையாட்டு வலை / இணையதள விளையாட்டு - + Switch keyboard focus to bet-input-field if it's your turn உங்களுடைய ஆட்டத்தின் பொழுது கீபோர்டின் பார்வையை பந்தயம் கட்டும் கட்டத்துக்கு தானாகவே மாற்றுக @@ -4142,14 +4201,14 @@ Please enter an valid picture! - + Sound சப்தம் - + Factory Settings @@ -4166,356 +4225,366 @@ Please enter an valid picture! விளையாட்டு துவங்கும் பொழுது வரும் ச்ப்லாஸ் திரையை நிறுத்திவிடு - + Show country flag in the corner of avatar - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Game Table விளையாட்டு மேசை - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State வீரரின் தற்போதைய நிலவரம் - - + + Card Deck சீட்டு அட்டைகளின் கட்டு - - + + Card Back சீட்டு அட்டையின் பின்புறம் - - + + Use card back from card style சீட்டு அட்டையின் பின்புறத்தை அட்டை வடிவத்திலிருந்து உபயோகிக்கவும் - - + + Use custom card back picture: சுயமாக தயாரித்த சீட்டு அட்டை படத்தை உபயோகிக்கவும்: - - + + Play sound effects விளையாட்டு ஓசையுடன் விளையாடவும் - - + + Sound Volume: சப்த அளவு: - - + + 10 - - + + Sound Categories சப்த பிரிவு - - + + Play game actions sounds like "check", "call", "raise" "செக்", "கால்", "ரைஸ்" போன்ற செயல்களுக்கு விளையாட்டு சப்தம் எழுப்பவும் - - + + Play lobby chat notifications வரவேற்ப்பறை உரையாடல் அறிவுப்புக்கு சப்தம் எழுப்பவும் - - + + Play network/internet game notifications like "player joined the game" "விளையாட்டு வீரர் சேர்ந்துள்ளார்" போன்ற கணினி வலை/இணையதள விளையாட்டு அறிவுப்புக்கு சப்தம் எழுப்பவும் - - + + Server Password: - - + + Allow spectators to watch the game - + OK - + Local Game Settings உள்விளையாட்டு அமைப்பு - - + + Number of players: விளையாட்டு வீரர்களின் எண்ணிக்கை: - - - - + + + + Start Cash: பணம் செலுத்த ஆரம்பி: - - - - - - - - + + + + + + + + $ - - - - + + + + First small blind: குறைந்தபட்ச ஆரம்ப கட்டாய பந்தயத்தொகை: - - - - + + + + Raise blinds: பந்தயத்தொகையை உயரத்துக: - - - - - - - - + + + + + + + + Every: ஒவ்வொரு: - - - - + + + + hands சுற்றுக்கும் - - - - + + + + minutes நொடிகளுக்கும் - - - - + + + + Raise mode: பந்தயத்தொகை உயர்த்தும் விதி: - - - - + + + + Always double blinds எப்பொழுதும் பந்தயத்தொகையை இரட்டிப்பாக்குக - - - - + + + + Manual blinds order: பந்தயத்தொகையை உயர்த்தும் விதியை சுயமாக நிர்ணயம் செய்க: - - - - + + + + Edit ... திருத்தியமைக்க ... - - + + Game Speed: விளையாட்டின் வேகம்: - - + + Pause between hands (press "start" button to go on) ஒவ்வொரு சுற்றுக்கும் இடைவெளி தருக (தொடர்ந்து விளையாட "ஆரம்பி" பொத்தானை அழுத்தவும்) - - + + Show game settings dialog on every new game ஒவ்வொரு புது விளையாட்டின் பொழுதும் விளையாட்டு அமைப்பை காண்பி - + Network Game Settings கணினி விளையாட்டு வலை அமைப்பு - - + + Maximum number of players: விளையாட்டு வீரர்களின் அதிகபட்ச எண்ணிக்கை: - - + + Timeout for player action: விளையாட்டு வீரர் ஒரு செயல் செய்ய காலவரம்பு: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! - - - - + + + + s - - + + Network Server Settings விளையாட்டு வலையின் விளையாட்டு வழங்கி அமைப்பு - - - - + + + + Server Port: விளையாட்டு வழங்கியின் போர்ட்: - - - - - - Use SCTP - எஸ்சிதிபி ஐ உபயோகிக்கவும் - - - - - - - Use IPv6 - ஐபிவி6 ஐ உபயோகிக்கவும் - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">என்றால் என்ன?</a> - + Use SCTP + எஸ்சிதிபி ஐ உபயோகிக்கவும் + + + + + + + Use IPv6 + ஐபிவி6 ஐ உபயோகிக்கவும் + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">என்றால் என்ன?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">என்றால் என்ன?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings இணையதள விளையாட்டு அமைப்பு - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4526,61 +4595,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">குறிப்பு: எப்பொழுதும் உபயோகிக்ககூடிய </span><span style=" font-weight:600; font-style:italic;">விளையாட்டு அமைப்பு </span><span style=" font-style:italic;"> உதாரணத்திற்கு "விளையாட்டு வீரர்களின் அதிகபட்ச எண்ணிக்கை", "பணம் செலுத்த ஆரம்பி" மற்றும் "குறைந்த பந்தயத்தொகை" </span><span style=" font-weight:600; font-style:italic;">விளையாட்டு வலை அமைப்பிலிருந்து உபயோகிக்கப்படும்.</span></p></body></html> - - + + Server Address: விளையாட்டு வழங்கியின் முகவரி: - - + + Use password for private game: தனியார் விளையாட்டுக்கு இரகசிய வார்த்தையை உபயோகிக்கவும்: - - + + Computer Engine கணிப்பொறி - - + + Opponent 6: எதிராளி 6: - - + + Opponent 5: எதிராளி 5: - - + + Opponent 4: எதிராளி 4: - - + + Opponent 3: எதிராளி 3: - - + + Opponent 2: எதிராளி 2: - - + + Opponent 1: எதிராளி 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4592,8 +4661,8 @@ p, li { white-space: pre-wrap; } அகலம்=50, உயரம்=50 ஆக இருக்க வேண்டும்.</span></p></body></html> - - + + Enable/Disable Logging பதிவு செய்வதற்கு அனுமதி வழங்கு/வழங்காதே @@ -4602,44 +4671,44 @@ p, li { white-space: pre-wrap; } பதிவு கோப்பையை சேர்த்து வைக்க வேண்டிய நாட்கள் - - + + Log File Directory: பதிவு கோப்பையின் முகவரி: - - + + Write log after every: செயல்களை பதிவு செய்க. ஒவ்வொரு: - - + + action (high frequent disc access) செயல்களுக்கும் (அதிகபட்ச கணினி உபயோகம்) - - + + hand (medium disc access) சுற்றுக்கும் (நடுத்தரமான கணினி உபயோகம்) - - + + game (low disc access) விளையாட்டிற்கும் (குறைந்தபட்ச கணினி உபயோகம்) - + Log Messages தகவல்களை பதிவு செய்க - + Player Nicks/Avatars விளையாட்டு வீரர்களின் புனைப்பெயர்/அவதாரங்கள் @@ -4654,53 +4723,53 @@ p, li { white-space: pre-wrap; } இடது பக்கம் உள்ள கருவி பெட்டியை காட்டவும் - - + + Play blind raise notification - - + + Automatic Server Configuration URL தானாகவே அமைத்துக்கொள்ளும் விளையாட்டு வழங்கியின் முகவரி - - + + Serverlist Address: விளையாட்டு வழங்கிகளின் பட்டியல் முகவரி: - - + + Manual Server Configuration விளையாட்டு வழங்கியை தேவைக்கேற்ப மாற்றியமைத்து கொள்க - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) நாள்(கள்) @@ -4735,20 +4804,20 @@ p, li { white-space: pre-wrap; } சீட்டு அட்டை வாய்ப்பு கண்காணிப்பை காட்டவும் - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: அவதாரத்தின் வழங்கி: - + Style வடிவம் @@ -4758,33 +4827,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style விளையாட்டு மேசை அமைப்பில் செக், கால், ரைஸ் போன்ற செயல் வார்த்தைகளை மொழிமாற்றம் செய்யாதே - - - - - - Add ... - சேர்க்க ... - + Add ... + சேர்க்க ... + + + + + + Remove நீக்கவும் - - - - + + + + Preview - Information: முன்காட்சி - தகவல்: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4797,8 +4866,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">போகர்டேஹோ வின் புதிய விளையாட்டு மேசை வடிவங்களை பெருக ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4811,7 +4880,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">போகர்டேஹோ வின் புதிய சீட்டு அட்டை கட்டின் வடிவம் பெருக ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4830,96 +4899,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">குறிப்பு: சிறந்த படத்தை பெற அதன் </span><span style=" font-weight:600; font-style:italic;">அகலம்=48, உயரம்=76 ஆக இருக்க வேண்டும்.</span></p></td></tr></table></body></html> - - + + Delay between hands: சுற்றுகளுக்கு இடையிலான காலதாமதம்: - - + + Server விளையாட்டு வழங்கி - - + + Game விளையாட்டு - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: எப்பொழுதும் பயன்படுத்தும் விளையாட்டு பெயர்: - - + + Default game type: எப்பொழுதும் பயன்படுத்தும் விளையாட்டு முறை: - - + + Standard சாதாரண - - + + Registered players only பதிவு செய்யப்பட்ட விளையாட்டு வீரர்கள் மட்டும் - - + + Invited players only அழைக்கப்பட்ட விளையாட்டு வீரர்கள் மட்டும் - - + + Ranking game தரவரிசை விளையாட்டு - + Show lobby chat வரவேற்ப்பறை உரையாடலை காட்டவும் - - + + Automatically leave the table after the game finished - - + + Ignored Players புறக்கணிக்கப்பட்ட விளையாட்டு வீரர்கள் - - + + Player விளையாட்டு வீரர் - - + + Remove Player விளையாட்டு வீரரை நீக்கவும் - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4932,20 +5001,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">மனித விளையாட்டு வீரர்:<br /><span style=" font-style:italic;">(இந்த புனைப்பெயர் இணையதள விளையாட்டு நுழைவுக்கும் உபயோக்கியப்படும்)</span></p></body></html> - - + + Opponent 7: எதிராளி 7: - - + + Opponent 8: எதிராளி 8: - - + + Opponent 9: எதிராளி 9: @@ -4953,140 +5022,140 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - + Dutch டட்ச் - + English ஆங்கிலம் - + French பிரெஞ்சு - + German ஜெர்மன் - + Hungarian ஹங்கரியன் - + Italian இத்தாலியன் - + Lithuania - + Norwegian நார்வீஜியன் - + Portuguese-Brazilian - + Portuguese-Portuguese - + Russian ரஷ்யன் - + Slovak ஸ்லோவாக் - + Spanish ஸ்பானிஷ் - + Tamil தமிழ் - + Turkish டர்கிஷ் - - - - - + + + + + Settings Error அமைப்பு பிழை - + The entered flipside picture doesn't exist. Please enter an valid picture! கொடுத்த சீட்டு அட்டையின் பின்புற படத்தை காணவில்லை. தயவு செய்து சரியான படத்தை தரவும்! - - + + The log file directory doesn't exist. Please select an valid directory! பதிவு கோப்பையின் முகவரியை காணவில்லை. தயவு செய்து சரியான முகவரியை தேர்ந்தெடுக்கவும்! - + Language Changed மொழி மாற்றப்பட்டது - + You have changed application language to %1. Please restart PokerTH to load new language! நீங்கள் விளையாட்டை %1 என்ற மொழிக்கு மாற்றிவிட்டீர்கள். புது மொழியின் செயர்ப்பாட்டை காண தயவு செய்து போகர்டேஹோ வை மீண்டும் துவக்கவும்! - + Select your flipside picture சீட்டு அட்டையின் பின்புற படத்தை தேர்ந்தெடுக்கவும் - + Images (*.png *.jpg *.gif) வடிவங்கள் (*.png *.jpg *.gif) - + Open Directory திறந்த முகவரி - - + + Blinds Error பந்தயப்பண பிழை - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5095,227 +5164,227 @@ This first-small-blind-value will be set to maximum allowed value. குறைந்தபட்ச ஆரம்ப கட்டாய பந்தயப்பணத்திற்கு அதிகப்படியான மதிப்பு வழங்கப்படும். - + Bulgarian பல்கேரியன் - + Polish போலிஷ் - + Chinese சைனீஸ் - + Afrikaans - + Catalan - + Greek க்ரீக் - + Swedish ஸ்வீடிஷ் - + The entered server list address is not a valid URL. Please enter a valid server list address! கொடுக்கப்பட்ட விளையாட்டு வழங்கி பட்டியலின் முகவரி சரியல்ல. தயவு செய்து சரியான முகவரியை தரவும்! - + Finnish பின்னிஷ் - + Czech செக் - + Danish டானிஷ் - + Galician - + Japanese - + Scottish Gaelic - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name பராமரிப்பாளரின் பெயர் - - + + Maintainer EMail பராமரிப்பாளரின் இமெயில் - - + + Create Date தயாரிக்கப்பட்ட தேதி - + Windows Behaviour விண்டோவின் குணங்கள் - + scaleable மாற்ற தக்கது - + fixed நிர்ணயிக்கப்பட்டது - + Minimum Size குறைந்தபட்ச அளவு - + Maximum Size அதிகபட்ச அளவு - + Fixed Size நிர்ணயிக்கப்பட்ட அளவு - + State வீரரின் தற்போதைய நிலவரம் - + Please select your game table style தயவு செய்து உங்கள் விளையாட்டு மேசை வடிவத்தை தேர்ந்தெடுக்கவும் - + PokerTH game table styles (*.xml) போகர்டேஹோ வின் விளையாட்டு மேசை வடிவங்கள் (*.xml) - + Game Table Style Error விளையாட்டு மேசை வடிவத்தின் பிழை - + Selected game table style file is already in the list. Please select another one to add! தேர்ந்தெடுத்த விளையாட்டு மேசை வடிவத்தின் கோப்பை ஏற்கனவே பட்டியலில் உள்ளது. தயவு செய்து சேர்க்க வேறொன்றை தேர்ந்தெடுக்கவும்! - + Game Table Style File Error விளையாட்டு மேசை வடிவ கோப்பையின் பிழை - + Could not load game table style file correctly. Style will not be placed into list! விளையாட்டு மேசை வடிவ கோப்பையை சரியாக துவக்க முடியவில்லை. வடிவம் பட்டியலில் சேர்க்கப்படாது! - + Please select your card deck style தயவு செய்து உங்கள் சீட்டு அட்டை வடிவத்தை தேர்ந்தெடுக்கவும் - + PokerTH card deck styles (*.xml) போகர்டேஹோ வின் சீட்டு அட்டை வடிவங்கள் (*.xml) - + Card Deck Style Error சீட்டு அட்டை வடிவம் பிழை - + Selected card deck style file is already in the list. Please select another one to add! தேர்ந்தெடுத்த சீட்டு அட்டை வடிவத்தின் கோப்பை ஏற்கனவே பட்டியலில் உள்ளது. தயவு செய்து சேர்க்க வேறொன்றை தேர்ந்தெடுக்கவும்! - + Card Deck Style File Error சீட்டு அட்டை வடிவ கோப்பை பிழை - + Could not load card deck style file correctly. Style will not be placed into list! சீட்டு அட்டை வடிவ கோப்பையை சரியாக துவக்க முடியவில்லை. வடிவம் பட்டியலில் சேர்க்கப்படாது ! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5388,12 +5457,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error விளையாட்டு வழங்கி பிழை - + You should not kick yourself from this game! உங்களை நீங்களே இந்த விளையாட்டிலிருந்து நீக்க கூடாது! diff --git a/ts/pokerth_tr.ts b/ts/pokerth_tr.ts index 91b58939..3a31872b 100644 --- a/ts/pokerth_tr.ts +++ b/ts/pokerth_tr.ts @@ -308,106 +308,106 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file - + PokerTH SQL log (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -435,22 +435,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? - - + + + PokerTH - Question - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? @@ -993,127 +1031,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 About PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -1230,12 +1268,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order El ile teklif istemi - + You cannot set more than 30 manual blinds. 30 dan fazla elle teklif yapamazsınız. @@ -1269,46 +1307,46 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. "Human Player" sahte ismi ile internet-oyun-lobisine giremezsiniz. Lütfen başka bir tane seçiniz. - - - + + + Nick name: - + Your player name is already used by another player. Please choose a different name. Oyuncu isminiz başka bir oyuncu tarafından kullanılıyor. Lütfen farklı bir isim seçiniz. - + The player name is too short, too long or invalid. Please choose another one. Bu oyuncu ismi, çok kısa, çok uzun yahut geçersiz. Lütfen başka bir isim seçiniz. - + There is already a game with your chosen game name. Please choose another one! - + There is a forbidden word in your chosen game name. Please choose another one! - - + + Game name: @@ -1351,27 +1389,27 @@ Please choose another one! connectToServerDialogImpl - + Resolving address... Adres çözümleniyor... - + Connecting to server... Sunucuya bağlanılıyor... - + Starting session... Oturum Başlatılıyor... - + Connection established! Bağlantı kuruldu! - + Reading server list... Sunucu listesi okunuyor... @@ -1526,7 +1564,7 @@ Please choose another one! - + %1's game %1'in oyunu @@ -1894,56 +1932,56 @@ p, li { white-space: pre-wrap; } oyun - + Joining a private Game Özel bir oyuna giriliyor - + You are about to join a private game. Please enter the password! Özel bir oyuna girmek üzeresiniz. Lütven parolanızı giriniz! - - - - + + + + Game Info Oyun Bilgisi - + Server Error Sunucu Hatası - + You should not kick yourself from this game! Bu oyunda kendi kendinizi tekmeleyemezsiniz! - + running çalışıyor - - + + Game Oyun - - + + Players Oyuncular - - + + State Aşama @@ -1952,68 +1990,68 @@ p, li { white-space: pre-wrap; } Özel - + open - + hands eller - + minutes dakika - + double blinds çifte teklif - + manual blinds order el ile teklif istemi - + Starting game. Please wait ... Oyun başlatılıyor. Lütfen bekleyin... - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - + Spectate - - + + P - - + + Time - - + + Available Players Uygun Oyuncular @@ -2029,1326 +2067,1346 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... - - + + Show player stats - - + + Admin action ... - + Total kickban - + Report inappropriate game name - + Close game - - - + + + Standard - - - + + + Registered players only - - - + + + Invited players only - - - + + + Ranking game - - Afghanistan + + Unignore %1 - - ALand Islands + + Unignore player ... - - Albania - - - - - Algeria - - - - - American Samoa - - - - - Andorra - - - - - Angola - - - - - Anguilla - - - - - Antarctica - - - - - Antigua And Barbuda - - - - - Argentina - - - - - Armenia - - - - - Aruba - - - - - Australia - - - - - Austria - - - - - Azerbaijan - - - - - Bahamas + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? - Bahrain + Afghanistan - Bangladesh + ALand Islands - Barbados + Albania - Belarus + Algeria - Belgium + American Samoa - Belize + Andorra - Benin + Angola - Bermuda + Anguilla - Bhutan + Antarctica - Bolivia + Antigua And Barbuda - Bosnia And Herzegovina + Argentina - Botswana + Armenia - Bouvet Island + Aruba - Brazil + Australia - British Indian Ocean Territory + Austria - Brunei Darussalam + Azerbaijan - Bulgaria + Bahamas - Burkina Faso + Bahrain - Burundi + Bangladesh - Cambodia + Barbados - Cameroon + Belarus - Canada + Belgium - Cape Verde + Belize - Cayman Islands + Benin - Central African Republic + Bermuda - Chad + Bhutan - Chile + Bolivia - China + Bosnia And Herzegovina - Christmas Island + Botswana - Cocos (Keeling) Islands + Bouvet Island - Colombia + Brazil - Comoros + British Indian Ocean Territory - Congo + Brunei Darussalam - Congo, The Democratic Republic Of The + Bulgaria - Cook Islands + Burkina Faso - Costa Rica + Burundi - Cote D'Ivoire + Cambodia - Croatia + Cameroon - Cuba + Canada - Cyprus + Cape Verde - Czech Republic + Cayman Islands - Denmark + Central African Republic - Djibouti + Chad - Dominica + Chile - Dominican Republic + China - Ecuador + Christmas Island - Egypt + Cocos (Keeling) Islands - El Salvador + Colombia - Equatorial Guinea + Comoros - Eritrea + Congo - Estonia + Congo, The Democratic Republic Of The - Ethiopia + Cook Islands - Falkland Islands (Malvinas) + Costa Rica - Faroe Islands + Cote D'Ivoire - Fiji + Croatia - Finland + Cuba - France + Cyprus - French Guiana + Czech Republic - French Polynesia + Denmark - French Southern Territories + Djibouti - Gabon + Dominica - Gambia + Dominican Republic - Georgia + Ecuador - Germany + Egypt - Ghana + El Salvador - Gibraltar + Equatorial Guinea - Greece + Eritrea - Greenland + Estonia - Grenada + Ethiopia - Guadeloupe + Falkland Islands (Malvinas) - Guam + Faroe Islands - Guatemala + Fiji - Guernsey + Finland - Guinea + France - Guinea-Bissau + French Guiana - Guyana + French Polynesia - Haiti + French Southern Territories - Heard Island And Mcdonald Islands + Gabon - Holy See (Vatican City State) + Gambia - Honduras + Georgia - Hong Kong + Germany - Hungary + Ghana - Iceland + Gibraltar - India + Greece - Indonesia + Greenland - Iran, Islamic Republic Of + Grenada - Iraq + Guadeloupe - Ireland + Guam - Isle Of Man + Guatemala - Israel + Guernsey - Italy + Guinea - Jamaica + Guinea-Bissau - Japan + Guyana - Jersey + Haiti - Jordan + Heard Island And Mcdonald Islands - Kazakhstan + Holy See (Vatican City State) - Kenya + Honduras - Kiribati + Hong Kong - Korea, Democratic People'S Republic Of + Hungary - Korea, Republic Of + Iceland - Kuwait + India - Kyrgyzstan + Indonesia - Lao People'S Democratic Republic + Iran, Islamic Republic Of - Latvia + Iraq - Lebanon + Ireland - Lesotho + Isle Of Man - Liberia + Israel - Libyan Arab Jamahiriya + Italy - Liechtenstein + Jamaica - Lithuania + Japan - Luxembourg + Jersey - Macao + Jordan - Macedonia, The Former Yugoslav Republic Of + Kazakhstan - Madagascar + Kenya - Malawi + Kiribati - Malaysia + Korea, Democratic People'S Republic Of - Maldives + Korea, Republic Of - Mali + Kuwait - Malta + Kyrgyzstan - Marshall Islands + Lao People'S Democratic Republic - Martinique + Latvia - Mauritania + Lebanon - Mauritius + Lesotho - Mayotte + Liberia - Mexico + Libyan Arab Jamahiriya - Micronesia, Federated States Of + Liechtenstein - Moldova, Republic Of + Lithuania - Monaco + Luxembourg - Mongolia + Macao - Montserrat + Macedonia, The Former Yugoslav Republic Of - Morocco + Madagascar - Mozambique + Malawi - Myanmar + Malaysia - Namibia + Maldives - Nauru + Mali - Nepal + Malta - Netherlands + Marshall Islands - Netherlands Antilles + Martinique - New Caledonia + Mauritania - New Zealand + Mauritius - Nicaragua + Mayotte - Niger + Mexico - Nigeria + Micronesia, Federated States Of - Niue + Moldova, Republic Of - Norfolk Island + Monaco - Northern Mariana Islands + Mongolia - Norway + Montserrat - Oman + Morocco - Pakistan + Mozambique - Palau + Myanmar - Palestinian Territory, Occupied + Namibia - Panama + Nauru - Papua New Guinea + Nepal - Paraguay + Netherlands - Peru + Netherlands Antilles - Philippines + New Caledonia - Pitcairn + New Zealand - Poland + Nicaragua - Portugal + Niger - Puerto Rico + Nigeria - Qatar + Niue - Reunion + Norfolk Island - Romania + Northern Mariana Islands - Russian Federation + Norway - Rwanda + Oman - Saint Helena + Pakistan - Saint Kitts And Nevis + Palau - Saint Lucia + Palestinian Territory, Occupied - Saint Pierre And Miquelon + Panama - Saint Vincent And The Grenadines + Papua New Guinea - Samoa + Paraguay - San Marino + Peru - Sao Tome And Principe + Philippines - Saudi Arabia + Pitcairn - Senegal + Poland - Serbia And Montenegro + Portugal - Seychelles + Puerto Rico - Sierra Leone + Qatar - Singapore + Reunion - Slovakia + Romania - Slovenia + Russian Federation - Solomon Islands + Rwanda - Somalia + Saint Helena - South Africa + Saint Kitts And Nevis - South Georgia And The South Sandwich Islands + Saint Lucia - Spain + Saint Pierre And Miquelon - Sri Lanka + Saint Vincent And The Grenadines - Sudan + Samoa - Suriname + San Marino - Svalbard And Jan Mayen + Sao Tome And Principe - Swaziland + Saudi Arabia - Sweden + Senegal - Switzerland + Serbia And Montenegro - Syrian Arab Republic + Seychelles - Taiwan, Province Of China + Sierra Leone - Tajikistan + Singapore - Tanzania, United Republic Of + Slovakia - Thailand + Slovenia - Timor-Leste + Solomon Islands - Togo + Somalia - Tokelau + South Africa - Tonga + South Georgia And The South Sandwich Islands - Trinidad And Tobago + Spain - Tunisia + Sri Lanka - Turkey + Sudan - Turkmenistan + Suriname - Turks And Caicos Islands + Svalbard And Jan Mayen - Tuvalu + Swaziland - Uganda + Sweden - Ukraine + Switzerland - United Arab Emirates + Syrian Arab Republic - United Kingdom + Taiwan, Province Of China - United States + Tajikistan - United States Minor Outlying Islands + Tanzania, United Republic Of - Uruguay + Thailand - Uzbekistan + Timor-Leste - Vanuatu + Togo - Venezuela + Tokelau - Viet Nam + Tonga - Virgin Islands, British + Trinidad And Tobago - Virgin Islands, U.S. + Tunisia - Wallis And Futuna + Turkey - Western Sahara + Turkmenistan - Yemen + Turks And Caicos Islands - Zambia + Tuvalu + Uganda + + + + + Ukraine + + + + + United Arab Emirates + + + + + United Kingdom + + + + + United States + + + + + United States Minor Outlying Islands + + + + + Uruguay + + + + + Uzbekistan + + + + + Vanuatu + + + + + Venezuela + + + + + Viet Nam + + + + + Virgin Islands, British + + + + + Virgin Islands, U.S. + + + + + Wallis And Futuna + + + + + Western Sahara + + + + + Yemen + + + + + Zambia + + + + Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? - - + + T - - - + + + sec (action) - - - + + + sec (hand delay) - - + + running games: %1 Çalışan oyunlar: %1 - - + + open games: %1 açık oyunlar: %1 @@ -3358,44 +3416,44 @@ p, li { white-space: pre-wrap; } - + Ignore %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> - + The game will start in<br><b>%1</b> seconds. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? @@ -3404,31 +3462,31 @@ Feel free to invite other players by right-clicking on their nick in the availab söyleşideki oyuncular: %1 - - + + connected players: %1 bağlı oyuncular: %1 - - + + Players (%1) - - - + + + Spectators (%1) - + search for player ... - + Chat is only available to registered players. @@ -3438,31 +3496,32 @@ Feel free to invite other players by right-clicking on their nick in the availab - + Ignore player ... - + %1 is playing in "%2". - + %1 is not playing at the moment. - - + + PokerTH - Info Message - - + + - + + PokerTH - Question @@ -3805,31 +3864,31 @@ Feel free to invite other players by right-clicking on their nick in the availab F1 - Katla/Hepsini | F2 - Denetle/Çağır | F3 - Bahis/Yükselt - - - - - - - - + + + + + + + + Start Başlat - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Dur @@ -4002,8 +4061,8 @@ Eğer sunucu bir NAT-Router arkasındaysa, sunucu tarafındaki bağlantı noktas Oto kip ayarlı: denetleyin veya katlayın. - - + + Chat Sohbet @@ -4076,12 +4135,12 @@ Please go to <a href="http://www.pokerth.net/" target="_blank& Lütfen <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> adresinden son sürümü indiriniz. - + Closing PokerTH during network game Ağ oyunu sırasında PokerTH kapatılıyor - + You are the hosting server. Do you want to close PokerTH anyway? Siz ana sunucusunuz. Yinede PokerTH programını kapatmak istiyor musunuz? @@ -4098,16 +4157,16 @@ Lütfen <a href="http://www.pokerth.net/" target="_blank" PokerTH ara sürümü artık geçersiz.<br>Lütfen <a href="http://www.pokerth.net/" target="_blank">http://www.pokerth.net/<a/> adresinden son sürümü indiriniz. - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - Açık-Kaynak Texas Holdem Motoru - - - - - + + + + + Lobby Kulis @@ -4116,88 +4175,88 @@ Lütfen <a href="http://www.pokerth.net/" target="_blank" İçsel bir simge hatası algılandı. Lütfen bunu kulis söyleşisinde yöneticiye iletin. - + PokerTH - Internet Game Message PokerTH - Internet Oyunu Mesajı - + Attention! Do you really want to leave the current game and go back to the lobby? Dikkat! Bu oyunu gerçekten bırakmak ve lobiye dönmek istiyormusunuz? - - + + Chance Şans - + PokerTH %1 PokerTH %1 - + Really want to exit? - + PokerTH - Close Table? - - + + Kick Tekmele - - + + Do you want to kick <b>%1</b><br>from this game? <b>%1</b><br> kişisini oyundan atmak istiyormusunuz? - - - - + + + + <b>%1</b> secs left <b>%1</b> saniye kaldı - + vote oy - + votes oylar - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. + - Chat is only available to registered players. - + Spectators @@ -4255,7 +4314,7 @@ ve lobiye dönmek istiyormusunuz? internetGameLoginDialogImpl - + Create new user account @@ -4420,10 +4479,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Sunucu-Profili-Dosya Hatası Yükle @@ -4434,7 +4493,7 @@ p, li { white-space: pre-wrap; } - + Save Server Profile Error Sunucu Profil Hatasını Kaydet @@ -4443,33 +4502,33 @@ p, li { white-space: pre-wrap; } İsmi ile beraber bir profil: " - - - - + + + + Could not load server-profiles-file: %1 - + Read Server-Profile List Error Sunucu-Profil Listesi Hatasını Oku - + Could not read server-profiles list Sunucu-profilleri listesini okuyamadı - - + + Save Server-Profile-File Error Sunucu-Profil-Dosyası Hatsını Kaydet - - + + Could not save server-profiles-file: %1 @@ -4481,7 +4540,7 @@ p, li { white-space: pre-wrap; } - + A profile with the name: %1 already exists. Would you like to overwrite ? %1 isimli bir profil zaten mevcut. @@ -4549,12 +4608,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order El ile Teklif İstemi - + You cannot set more than 30 manual blinds. 30 dan fazla elle teklif yapamazsınız. @@ -4689,14 +4748,14 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error Avatar Dosyası Hatası - + Please select an avatar from the list! Lütfen listeden bir avatar seçin! @@ -4707,7 +4766,7 @@ Please enter an valid picture! Lütfen geçerli bir resim girin! - + Select external avatar picture Harici avatar resmi seç @@ -4716,19 +4775,19 @@ Lütfen geçerli bir resim girin! Resimler (*.png) - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Seçili resmin dosya boyutu çok büyük. (en fazla 30 KB) Lütfen daha küçük bir resim seçiniz! - + Images (*.png *.jpg *.gif) Resimler (*.png *.jpg *.gif) - + The entered avatar picture doesn't exist. Please enter an valid picture! Girilen avatar resmi mevcut değil. @@ -4768,10 +4827,10 @@ p, li { white-space: pre-wrap; } Small Blind: - - - - + + + + Start Cash: Ödemeyi Başlat: @@ -4784,24 +4843,24 @@ p, li { white-space: pre-wrap; } Sunucu Ayarları - - - - + + + + Server Port: Sunucu Bağlantı Noktası: - - - - + + + + Use IPv6 IPv6 Kullan - - + + Server Password: Sunucu Parolası: @@ -4810,43 +4869,43 @@ p, li { white-space: pre-wrap; } Ön Tanımlı Ağ Oyunu Ayarları - - + + Computer Engine Bilgisayar Motoru - - + + Opponent 5: Rakip 5: - - + + Opponent 3: Rakip 3: - - + + Opponent 2: Rakip 2: - - + + Opponent 1: Rakip 1: - - + + Opponent 4: Rakip 4: - + Human Player: Gerçek Oyuncu: @@ -4855,8 +4914,8 @@ p, li { white-space: pre-wrap; } Ouncu Takma Adları - - + + Log File Directory: Günlük Dosyası Dizini: @@ -4867,17 +4926,22 @@ p, li { white-space: pre-wrap; } - + Log Messages Günlük Mesajları - + + Show network state color in the corner of the avatar + + + + Local Game Settings Yerel Oyun Ayarları - + Network Game Settings Ağ Oyunu Ayarları @@ -4912,8 +4976,8 @@ p, li { white-space: pre-wrap; } Sol araç çubuğunu göster - - + + Play blind raise notification @@ -4922,8 +4986,8 @@ p, li { white-space: pre-wrap; } Durum çubuğu mesajlarını göster - - + + Show game settings dialog on every new game Her yeni oyunda, oyun ayarları diyaloğunu göster @@ -4932,20 +4996,20 @@ p, li { white-space: pre-wrap; } Antall henter før "Small Blind" økes: - - + + Number of players: Oyuncu sayısı: - - + + Game Speed: Oyun Hızı: - - + + Pause between hands (press "start" button to go on) Eller arasında durakla (devam etmek için başla tuşuna basın) @@ -4958,8 +5022,8 @@ p, li { white-space: pre-wrap; } Bilgisayar rakipleriniz için Motor Sürümü: - - + + Enable/Disable Logging Günlük Tutmayı Etkinleştir/Edilginleştir @@ -4968,8 +5032,8 @@ p, li { white-space: pre-wrap; } Günlük dosyalarını sakla - - + + Write log after every: Herseferinde son olarak günlük yaz: @@ -4992,8 +5056,8 @@ p, li { white-space: pre-wrap; } Vis knapper for "small blind" og "big blind" - - + + Play sound effects Ses etkilerini oynat @@ -5001,27 +5065,27 @@ p, li { white-space: pre-wrap; } 0.4 (current) 0.4 (şu anki) - - - - - - Use SCTP - SCTP Kullan - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://no.wikipedia.org/wiki/Ipv6">Bu nedir?</a> - + Use SCTP + SCTP Kullan + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://no.wikipedia.org/wiki/Ipv6">Bu nedir?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Bu nedir?</a> @@ -5039,36 +5103,36 @@ p, li { white-space: pre-wrap; } Ayarlar - - + + Maximum number of players: En fazla oyuncu sayısı: - - + + Sound Volume: Ses Oranı: - - + + 10 10 - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - + (This nick will also be used for the online game login) - - + + Opponent 6: Rakip 6: @@ -5077,20 +5141,20 @@ p, li { white-space: pre-wrap; } Oyuncu faaliyeti zaman aşımına uğradı (sn): - - + + action (high frequent disc access) Faaliyet (yüksek sıklıkta disk geçişi) - - + + hand (medium disc access) El (orta derecede disk geçişi) - - + + game (low disc access) oyun (düşük disk geçişi) @@ -5111,7 +5175,7 @@ p, li { white-space: pre-wrap; } - + Sound Ses @@ -5128,154 +5192,159 @@ p, li { white-space: pre-wrap; } - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Game Table - - + + Card Deck - - + + Card Back - - + + Use card back from card style - - + + Use custom card back picture: - - - - + + + + First small blind: İlk küçük teklif: - - - - + + + + Raise blinds: Teklifleri yükselt: - - - - - - - - + + + + + + + + Every: Her: - - - - + + + + hands eller - - - - + + + + minutes dakika - - - - + + + + Raise mode: Değer yükselt: - - - - + + + + Always double blinds Daime çifte teklif - - - - + + + + Manual blinds order: El ile teklif istemi: - - - - + + + + Edit ... Düzenle ... - - + + Delay between hands: - - + + Network Server Settings Ağ Sunucusu Ayarları - - + + Allow spectators to watch the game - + OK - + Internet Game Settings İnternet Oyun Ayarları @@ -5284,14 +5353,14 @@ p, li { white-space: pre-wrap; } İnternet Oyun Ayarları (Tahsis edilen Sunucu) - - + + Server Address: Sunucu Adresi: - - + + Use password for private game: Özel oyun için parola kullan: @@ -5314,31 +5383,31 @@ p, li { white-space: pre-wrap; } Dil: - + Note: Best quality with image ratio like width=48, height=76. - - + + Sound Categories Ses Kategorileri - - + + Play game actions sounds like "check", "call", "raise" "denetle", "çağır", "yükselt" gibi hamle sesleri olan oyun oyna - - + + Play lobby chat notifications Kulis sohbet bildirimlerini oynat - - + + Play network/internet game notifications like "player joined the game" "Oyuncu oyuna girdi" gibi ağ/internet oyunu bildirimleri ile oyna @@ -5347,7 +5416,7 @@ p, li { white-space: pre-wrap; } Kulis Sohbetini Etkinleştir/Edilgenleştir (IRC Sunucu) - + Player Nicks/Avatars Oyuncu Takma İsimleri/Avatarları @@ -5370,7 +5439,7 @@ p, li { white-space: pre-wrap; } Ağ / İnternet Oyunu - + Switch keyboard focus to bet-input-field if it's your turn Eğer senin sıransa klavyeden bahis giriş alanını değiştirin @@ -5390,33 +5459,33 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Not: En iyi kalitede resim oranı </span><span style=" font-weight:600; font-style:italic;">genişlik=100, yükseklik=140.</span></p></body></html> - - - - - - - - + + + + + + + + $ $ - - + + Timeout for player action: Oyuncu hamlesi için zaman bitti: - - - - + + + + s s - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -5427,7 +5496,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Not: Öntanımlı </span><span style=" font-weight:600; font-style:italic;">Oyun Ayarları</span><span style=" font-style:italic;"> örneğin "En fazla oyuncu sayısı", "Başlangıç Parası" ve "En az Teklif" </span><span style=" font-weight:600; font-style:italic;">Ağ Oyunu Ayarlarında kullanılabilir.</span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -5437,32 +5506,32 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Not: En iyi kalitede resim oranı </span><span style=" font-weight:600; font-style:italic;">genişlik=50, yükseklik=50.</span></p></body></html> - - + + Automatic Server Configuration URL Otomatik Sunucu Ayarları Adresi - - + + Serverlist Address: Sunucu Listesi Adresi: - - + + Manual Server Configuration El ile Ayarlanmış Sunucu Ayarları - - + + Store log files for: - - + + Day(s) Gün(ler) @@ -5509,22 +5578,22 @@ p, li { white-space: pre-wrap; } Parola: - - + + Avatar Server: - + Style - + Factory Settings @@ -5535,38 +5604,38 @@ p, li { white-space: pre-wrap; } - + Show country flag in the corner of avatar - - - - - - Add ... - - + Add ... + + + + + + + Remove - - - - + + + + Preview - Information: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5575,31 +5644,31 @@ p, li { white-space: pre-wrap; } - - - - + + + + Description - - - - + + + + Maintainer - - - + + + State Aşama - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5608,7 +5677,7 @@ p, li { white-space: pre-wrap; } - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5620,85 +5689,85 @@ p, li { white-space: pre-wrap; } - - + + Server - - + + Game Oyun - - + + Default game name: - - + + Default game type: - - + + Standard - - + + Registered players only - - + + Invited players only - - + + Ranking game - + Show lobby chat - - + + Automatically leave the table after the game finished - - + + Ignored Players - - + + Player - - + + Remove Player - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5707,19 +5776,19 @@ p, li { white-space: pre-wrap; } - - + + Opponent 7: Rakip 6: {7:?} - - + + Opponent 8: Rakip 6: {8:?} - + Note: Best avatar quality with image ratio like width=50, height=50. @@ -5728,14 +5797,14 @@ p, li { white-space: pre-wrap; } Sil - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -5744,8 +5813,8 @@ p, li { white-space: pre-wrap; } Rakip 6: {10:?} - - + + Opponent 9: Rakip 6: {10:?} {9:?} @@ -5753,11 +5822,11 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Ayar Hatası @@ -5774,7 +5843,7 @@ Please select an valid directory! Lütfen geçerli bir dizin giriniz! - + Select your flipside picture Kıvrık taraf resminizi seçin @@ -5783,24 +5852,24 @@ Lütfen geçerli bir dizin giriniz! Resimler (*.png) - + Open Directory Dizin Aç - + Images (*.png *.jpg *.gif) Resimler (*.png *.jpg *.gif) - - + + Blinds Error Teklif Hatası - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5809,42 +5878,42 @@ küçük! İlk küçük teklif değeri, izin verilen en yüksek değer olarak ayarlanacaktır. - + Dutch Flemenkce - + Afrikaans - + Catalan - + Czech - + English İngilizce - + French Fransızca - + German Almanca - + Hungarian Macarca @@ -5857,285 +5926,285 @@ yüksek değer olarak ayarlanacaktır. Portekizce - + Russian Rusça - + Turkish Türkçe - + Language Changed Dil Değiştirildi - + You have changed application language to %1. Please restart PokerTH to load new language! Uygulama dilini %1 olarak değiştirdiniz. Yeni dilde yüklenmesi için lütfen PokerTH programını yeniden başlatınız! - + Italian İtalyanca - + Lithuania - + Portuguese-Brazilian - + Portuguese-Portuguese - + Slovak Slovakça - + Tamil - + The entered flipside picture doesn't exist. Please enter an valid picture! Girilen resmin ters tarafı mevcut değil. Lütfen geçerli bir resim giriniz! - - + + The log file directory doesn't exist. Please select an valid directory! Günlük dosyasının dizini mevcut değil. Lütfen geçerli bir dizin seçiniz! - + Norwegian Norveçce - + Spanish İspanyolca - + Bulgarian Bulgarca - + Polish Polonyaca - + Chinese Çince - + Greek Yünanca - + Swedish İsveççe - + The entered server list address is not a valid URL. Please enter a valid server list address! Girilen sunucu listesi adresi geçerli değil. Lütfen geçerli bir adres girin! - + Finnish Fince - + Danish Danimarka Dili - + Galician - + Japanese - + Scottish Gaelic - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name - - + + Maintainer EMail - - + + Create Date - + Windows Behaviour - + scaleable - + fixed - + Minimum Size - + Maximum Size - + Fixed Size - + State Aşama - + Please select your game table style - + PokerTH game table styles (*.xml) - + Game Table Style Error - + Selected game table style file is already in the list. Please select another one to add! - + Game Table Style File Error - + Could not load game table style file correctly. Style will not be placed into list! - + Please select your card deck style - + PokerTH card deck styles (*.xml) - + Card Deck Style Error - + Selected card deck style file is already in the list. Please select another one to add! - + Card Deck Style File Error - + Could not load card deck style file correctly. Style will not be placed into list! - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -6204,12 +6273,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error Sunucu Hatası - + You should not kick yourself from this game! Bu oyunda kendi kendinizi tekmeleyemezsiniz! diff --git a/ts/pokerth_vi.ts b/ts/pokerth_vi.ts index 8e1d391d..6f42b600 100644 --- a/ts/pokerth_vi.ts +++ b/ts/pokerth_vi.ts @@ -303,105 +303,105 @@ Xin vui lòng chọn đúng kiểu họa tiết dành cho bàn chơi bài và th - + PokerTH - Delete log files Thông báo - Xóa tập tin Nhật Ký - + Do you really want to delete the selected log files? Bạn có thật sự muốn xóa những tập tin thuộc phần Nhật Ký mà bạn vừa chọn hay không? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML Xuất tập tin nhật ký thành định dạng HTML - + PokerTH HTML log (*.html) Định dạng tập tin Nhật Ký (*html) - + Export PokerTH log file to plain text Xuất định dạng tập tin nhật ký thành file văn bản thông thường - + PokerTH plain text log (*.txt) Định dạng tập tin nhật ký dạng văn bản (*.txt) - + Save PokerTH log file Lưu tập tin Nhật Ký - + PokerTH SQL log (*.pdb) Định dạng nhật ký dạng SQL (*pdb) - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. @@ -426,22 +426,60 @@ Uploading log files may fail if you are using an http proxy. + Unignore Player + + + + Report inappropriate avatar Báo cáo trường hợp vi phạm hình đại diện - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? Trong tương lai, bạn sẽ không nhận được những tin nhắn hoặc các lời mời từ người này. <br> Bạn có chắc muốn đưa người chơi <b>%1</b> vào danh sách Không Để Ý không? - - + + + PokerTH - Question PokerTH - Xác Nhận - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? Bạn có chắc muốn báo cáo về thành viên "%1" với lý do hình ảnh đại diện không hợp lệ hay không? @@ -814,127 +852,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 Thông tin về PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - Wikimedia Commons: nguồn cho các hình đại diện khác nhau - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: nguồn cho hình đại diện là người - + - ZeiZei: for misc avatar pictures - ZeiZei: nguồn cho hình đại diện tổng hợp - + - kde-look.org: for different gpl licensed sounds - kde-look.org: nguồn cho các âm thanh dưới dạng bản quyền mở GPL - + - doc_dos: for self recorded chip sounds - doc_dos: nguồn cho phần âm thanh thể hiện các hiệu ứng tiền tệ trong trò chơi - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - thiger, dunkanx, BerndA, coldz, drull: nguồn cho các phần cập nhật sửa lỗi cho chương trình - + - kraut: for internet-game-server hosting and administration - kraut: nguồn cho phần server của chương trình trong việc quản trị và quản lý hệ thống online - + - danuxi: for startwindow background gfx and danuxi1 table background - danuxi: nguồn cho hiệu ứng nền và hiệu ứng bàn chơi bài - + - heyn: for moderating forum and organise bugtracker and feature requests - heyn: cá nhân quản lý diễn đàn cũng như quản lý việc cập nhật các bản vá lỗi và xử lý các yêu cầu từ phía người dùng - + - texas_outlaw: for new table sounds - texas_outlaw: nguồn cho phần âm thanh khi khởi tạo bàn chơi bài mới - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -1051,12 +1089,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order Thứ tự tăng tiền cược do người chỉnh - + You cannot set more than 30 manual blinds. Bạn không thể đặt lớn hơn 30. @@ -1090,48 +1128,48 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. Bạn không thể tham gia vào phần chơi mạng Internet với tên "Human Player. Hãy chọn một tên khác. - - - + + + Nick name: Tên hiển thị: - + Your player name is already used by another player. Please choose a different name. Tên hiện thị của bạn hiện đã được đăng ký bởi một người khác. Hãy chọn một tên khác với tên vừa rồi. - + The player name is too short, too long or invalid. Please choose another one. Tên mà bạn vừa đặt quá ngắn, quá dài hoặc không hợp lệ. Xin vui lòng lựa chọn một tên khác. - + There is already a game with your chosen game name. Please choose another one! Đã có một người khác đăng ký tên hiển thị mà bạn chọn. Hãy vui lòng đặt tên khác! - + There is a forbidden word in your chosen game name. Please choose another one! Xuất hiện một từ/cụm từ bị cấm trong tên mà bạn chọn. Xin vui lòng đặt lại một tên khác! - - + + Game name: Tên cho màn chơi: @@ -1159,27 +1197,27 @@ Xin vui lòng đặt lại một tên khác! connectToServerDialogImpl - + Resolving address... Đang cập nhật lại IP dành cho kết nối... - + Connecting to server... Đang kết nối đến máy chủ... - + Starting session... Đang bắt đầu màn chơi... - + Connection established! Kết nối đến hệ thống máy chủ đã được thiết lập! - + Reading server list... Đang dò danh sách máy chủ... @@ -1326,7 +1364,7 @@ Xin vui lòng đặt lại một tên khác! <i>Tăng gấp đôi tỉ lệ tiền cược mỗi %1'th lượt</i> - + %1's game %1 giây của trò chơi @@ -1640,70 +1678,70 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... Đang bắt đầu màn chơi. Vui lòng đợi đôi lát ... - + Joining a private Game Đang kết nối với màn chơi kín/yêu cầu mật khẩu - + You are about to join a private game. Please enter the password! Bạn đang tham gia vào một màn chơi kín/yêu cầu mật khẩu. Vui lòng điền vào mật khẩu bên dưới! - + open mở - - - - + + + + Game Info Thông tin về màn chơi - + Spectate - - + + Game Màn chơi - - + + Players Người chơi - - + + State Trạng thái - - + + P P - - + + Available Players Các người chơi đang sẵn sàng @@ -1719,39 +1757,44 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... Thông tin về người chơi... - + Report inappropriate game name Thông báo cho ban quản trị về tên của màn chơi vi phạm luật - - - + + + Standard Tiêu chuẩn - - - + + + Registered players only Chỉ dành cho người chơi đã đăng ký - - - + + + Invited players only Chỉ dành cho người chơi được mời/mật khẩu - - - + + + Ranking game Màn chơi được xếp hạng trên hệ thống @@ -1761,22 +1804,22 @@ p, li { white-space: pre-wrap; } - - + + T T - - - + + + sec (action) giây (chơi) - - - + + + sec (hand delay) giây (trong lượt chơi) @@ -1785,32 +1828,32 @@ p, li { white-space: pre-wrap; } Những người chơi đã kết nối - Tối đa %1 - + running đang diễn ra - - + + running games: %1 những màn chơi đang diễn ra: %1 - - + + open games: %1 những màn chơi mở: %1 - - + + Players (%1) - - - + + + Spectators (%1) @@ -1820,90 +1863,90 @@ p, li { white-space: pre-wrap; } Mời %1 - + Ignore %1 Bỏ qua %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%1 được mời tới %2 bởi %3.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 đã từ chối lời mời đến %2.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 không thể tham gia %2 vì đang tham gia vào một màn chơi khác.</span> - + The game will start in<br><b>%1</b> seconds. Màn chơi sẽ bắt đầu trong vòng<br><b>%1</b> giây nữa. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. Bạn đã tham gia vào màn chơi dạng "chỉ dành cho khách mời/mật khẩu". Hãy mời những người chơi khác bằng cách chọn chuột phải vào tên của các người chơi trong danh sách các người chơi đang kết nối. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? Bạn đã được mời tham gia màn chơi <b>%1</b> bởi <b>%2</b>.<br>Bạn có muốn tham gia màn chơi này không? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? Trong tương lai bạn sẽ không còn nhận được các tin nhắn tán gẫu hoặc lời mời chơi từ người dùng này.<br>Bạn có chắc rằng sẽ cho người dùng <b>%1</b> vào danh sách bỏ qua hay không? - - + + connected players: %1 những người chơi đã kết nối: %1 - + Waiting for the start of the next hand to rejoin the game ... Xin vui lòng chờ đợi đôi lát để tay chơi tiếp theo tham gia lại màn chơi ... - + Click here to view the online rankings - - + + Time - - + + Show player stats Hiển thị trạng thái người chơi - - + + Admin action ... - + Total kickban - + Close game @@ -1912,42 +1955,42 @@ Hãy mời những người chơi khác bằng cách chọn chuột phải vào Số người chơi đã kết nối - + hands lượt - + minutes phút - + double blinds gấp đôi tiền cược - + manual blinds order thứ tự tăng tiền cược tự chỉnh - + Server Error Lỗi hệ thống máy chủ online - + You should not kick yourself from this game! Bạn không nên tự mình đuổi mình ra khỏi trò chơi này! - + search for player ... tìm kiếm người chơi... - + Chat is only available to registered players. Tính năng tán gẫu/chat chỉ được kích hoạt với những người chơi đã đăng ký. @@ -1957,1264 +2000,1280 @@ Hãy mời những người chơi khác bằng cách chọn chuột phải vào Mời người chơi... - + Ignore player ... Bỏ qua người chơi... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 đang chơi ở "%2". - + %1 is not playing at the moment. %1 không chơi bàn nào ở thời điểm này. - - + + PokerTH - Info Message PokerTH - Thông báo - - + + - + + PokerTH - Question PokerTH - Xác nhận - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Afghanistan Afghanistan - + ALand Islands ALand Islands - + Albania Albania - + Algeria Algeria - + American Samoa American Samoa - + Andorra Andorra - + Angola Angola - + Anguilla Anguilla - + Antarctica Antarctica - + Antigua And Barbuda Antigua And Barbuda - + Argentina Argentina - + Armenia Armenia - + Aruba Aruba - + Australia Úc - + Austria Áo - + Azerbaijan Azerbaijan - + Bahamas Bahamas - + Bahrain Bahrain - + Bangladesh Bangladesh - + Barbados Barbados - + Belarus Belarus - + Belgium Bỉ - + Belize Belize - + Benin Benin - + Bermuda Bermuda - + Bhutan Bhutan - + Bolivia Bolivia - + Bosnia And Herzegovina Bosnia And Herzegovina - + Botswana Botswana - + Bouvet Island Bouvet Island - + Brazil Brazil - + British Indian Ocean Territory British Indian Ocean Territory - + Brunei Darussalam Brunei Darussalam - + Bulgaria Bulgaria - + Burkina Faso Burkina Faso - + Burundi Burundi - + Cambodia Cam-pu-chia - + Cameroon Cameroon - + Canada Canada - + Cape Verde Cape Verde - + Cayman Islands Cayman Islands - + Central African Republic Central African Republic - + Chad Chad - + Chile Chile - + China Cẩu Chó - Ba Tàu - Tàu Khựa - + Christmas Island Christmas Island - + Cocos (Keeling) Islands Cocos (Keeling) Islands - + Colombia Colombia - + Comoros Comoros - + Congo Congo - + Congo, The Democratic Republic Of The Congo, The Democratic Republic Of The - + Cook Islands Cook Islands - + Costa Rica Costa Rica - + Cote D'Ivoire Cote D'Ivoire - + Croatia Croatia - + Cuba Cuba - + Cyprus Síp - + Czech Republic Czech Republic - + Denmark Đan Mạch - + Djibouti Djibouti - + Dominica Dominica - + Dominican Republic Dominican Republic - + Ecuador Ecuador - + Egypt Ai Cập - + El Salvador El Salvador - + Equatorial Guinea Equatorial Guinea - + Eritrea Eritrea - + Estonia Estonia - + Ethiopia Ethiopia - + Falkland Islands (Malvinas) Falkland Islands (Malvinas) - + Faroe Islands Faroe Islands - + Fiji Fiji - + Finland Phần Lan - + France Pháp - + French Guiana French Guiana - + French Polynesia French Polynesia - + French Southern Territories French Southern Territories - + Gabon Gabon - + Gambia Gambia - + Georgia Georgia - + Germany Đức - + Ghana Ghana - + Gibraltar Gibraltar - + Greece Hy Lạp - + Greenland Greenland - + Grenada Grenada - + Guadeloupe Guadeloupe - + Guam Guam - + Guatemala Guatemala - + Guernsey Guernsey - + Guinea Guinea - + Guinea-Bissau Guinea-Bissau - + Guyana Guyana - + Haiti Haiti - + Heard Island And Mcdonald Islands Heard Island And Mcdonald Islands - + Holy See (Vatican City State) Holy See (Vatican City State) - + Honduras Honduras - + Hong Kong Hồng Khựa - Ba Tàu - + Hungary Hungary - + Iceland Iceland - + India Ấn Độ - + Indonesia Indonesia - + Iran, Islamic Republic Of Iran - + Iraq Iraq - + Ireland Ireland - + Isle Of Man Isle Of Man - + Israel Israel - + Italy Ý - + Jamaica Jamaica - + Japan Nhật - + Jersey Jersey - + Jordan Jordan - + Kazakhstan Kazakhstan - + Kenya Kenya - + Kiribati Kiribati - + Korea, Democratic People'S Republic Of Triều Tiên Ủn - + Korea, Republic Of Hàn Quốc - + Kuwait Kuwait - + Kyrgyzstan Kyrgyzstan - + Lao People'S Democratic Republic Lào - + Latvia Latvia - + Lebanon - + Lesotho Lesotho - + Liberia Liberia - + Libyan Arab Jamahiriya Libyan Arab Jamahiriya - + Liechtenstein Liechtenstein - + Lithuania Lithuania - + Luxembourg Luxembourg - + Macao Macao - + Macedonia, The Former Yugoslav Republic Of Macedonia, The Former Yugoslav Republic Of - + Madagascar Madagascar - + Malawi Malawi - + Malaysia Malaysia - + Maldives Maldives - + Mali Mali - + Malta Malta - + Marshall Islands Marshall Islands - + Martinique Martinique - + Mauritania Mauritania - + Mauritius Mauritius - + Mayotte Mayotte - + Mexico Mexico - + Micronesia, Federated States Of Micronesia, Federated States Of - + Moldova, Republic Of Moldova, Republic Of - + Monaco Monaco - + Mongolia Mongolia - + Montserrat Montserrat - + Morocco Morocco - + Mozambique Mozambique - + Myanmar Myanmar - + Namibia Namibia - + Nauru Nauru - + Nepal Nepal - + Netherlands Netherlands - + Netherlands Antilles Netherlands Antilles - + New Caledonia New Caledonia - + New Zealand New Zealand - + Nicaragua Nicaragua - + Niger Niger - + Nigeria Nigeria - + Niue Niue - + Norfolk Island Norfolk Island - + Northern Mariana Islands Northern Mariana Islands - + Norway Na Uy - + Oman Oman - + Pakistan Pakistan - + Palau Palau - + Palestinian Territory, Occupied Palestinian Territory, Occupied - + Panama Panama - + Papua New Guinea Papua New Guinea - + Paraguay Paraguay - + Peru Peru - + Philippines Philippines - + Pitcairn Pitcairn - + Poland Ba Lan - + Portugal Bồ Đào Nha - + Puerto Rico Puerto Rico - + Qatar Qatar - + Reunion Reunion - + Romania Romania - + Russian Federation Russian Federation - + Rwanda Rwanda - + Saint Helena Saint Helena - + Saint Kitts And Nevis Saint Kitts And Nevis - + Saint Lucia Saint Lucia - + Saint Pierre And Miquelon Saint Pierre And Miquelon - + Saint Vincent And The Grenadines Saint Vincent And The Grenadines - + Samoa Samoa - + San Marino San Marino - + Sao Tome And Principe Sao Tome And Principe - + Saudi Arabia Saudi Arabia - + Senegal Senegal - + Serbia And Montenegro Serbia And Montenegro - + Seychelles Seychelles - + Sierra Leone Sierra Leone - + Singapore Singapore - + Slovakia Slovakia - + Slovenia Slovenia - + Solomon Islands Solomon Islands - + Somalia Somalia - + South Africa Nam Phi - + South Georgia And The South Sandwich Islands Canada - + Spain Tây Ban Nha - + Sri Lanka Canada - + Sudan Canada - + Suriname Canada - + Svalbard And Jan Mayen Canada - + Swaziland Canada - + Sweden Thụy Điển - + Switzerland Thụy Sĩ - + Syrian Arab Republic Canada - + Taiwan, Province Of China Đài Loan - Tàu Khựa - + Tajikistan Canada - + Tanzania, United Republic Of Canada - + Thailand Thái - + Timor-Leste Canada - + Togo Canada - + Tokelau Canada - + Tonga Canada - + Trinidad And Tobago Canada - + Tunisia Canada - + Turkey Thổ Nhĩ Kỳ - + Turkmenistan Canada - + Turks And Caicos Islands Canada - + Tuvalu Canada - + Uganda Canada - + Ukraine Canada - + United Arab Emirates Liên Đoàn Ả Rập - + United Kingdom Anh Quốc - + United States Hợp Chủng Quốc Hoa Kỳ - + United States Minor Outlying Islands Canada - + Uruguay Canada - + Uzbekistan Canada - + Vanuatu Canada - + Venezuela Canada - + Viet Nam tiếng Việt - Việt Nam - + Virgin Islands, British Canada - + Virgin Islands, U.S. Virgin Islands, U.S. - + Wallis And Futuna Wallis And Futuna - + Western Sahara Western Sahara - + Yemen Yemen - + Zambia Zambia - + Zimbabwe Zimbabwe - + Are you sure you want to report the game name: "%1" as inappropriate? Bạn có chắc rằng bạn muốn tố cáo tên màn game : "%1" vì lý do không hợp lệ hay không? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3501,147 +3560,147 @@ Hãy mời những người chơi khác bằng cách chọn chuột phải vào gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop Dừng lại - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - The Open-Source Texas Holdem Engine - - - - - - - - + + + + + + + + Start Bắt đầu - - - - - + + + + + Lobby Phòng chờ hệ thống - - + + Chat Tán gẫu - + Closing PokerTH during network game Đóng lại chương trình sau khi chơi xong màn chơi online - + You are the hosting server. Do you want to close PokerTH anyway? Bạn đang là người chủ của màn chơi này. Bạn có muốn thoát chương trình không? - + Really want to exit? Bạn có thật sự muốn thoát? - + PokerTH - Close Table? PokerTH - Đóng lại màn chơi này? - + PokerTH - Internet Game Message PokerTH - Thông báo của màn chơi online - + Attention! Do you really want to leave the current game and go back to the lobby? Chú ý! Bạn có thật sự muốn thoát ra khỏi màn chơi này và quay lại phòng chờ của hệ thống không? + - Chat is only available to registered players. Phần tán gẫu/chat chỉ dành riêng cho các người chơi đã đăng ký. - + Spectators - - + + Chance Cơ hội - - + + Kick Đuổi - - + + Do you want to kick <b>%1</b><br>from this game? Bạn có thật sự muốn đuổi <b>%1</b><br> khỏi màn chơi này không? - - - - + + + + <b>%1</b> secs left còn lại <b>%1</b> giây nữa - + vote bỏ phiếu - + votes bỏ phiếu - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. Người chơi <b>%1</b> đã <b>%2</b> %3<br>muốn đuổi người chơi này. <b>%4</b> bình chọn để đuổi người chơi. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. Bạn nhận được <b>%1</b> %2 yêu cầu đuổi bạn.<br><b>%3</b> phiếu cần để đuổi. @@ -3717,7 +3776,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account @@ -3858,10 +3917,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error Lỗi xảy ra khi tải tập tin hồ sơ về máy chủ @@ -3871,45 +3930,45 @@ p, li { white-space: pre-wrap; } Không thể tải tập tin về hồ sơ máy chủ: - - - - + + + + Could not load server-profiles-file: %1 - + Save Server Profile Error Lỗi xảy ra khi lưu hồ sơ về máy chủ - + A profile with the name: %1 already exists. Would you like to overwrite ? Một tên dạng hồ sơ : %1 đã tồn tại Bạn có muốn ghi đè lên hồ sơ này không? - + Read Server-Profile List Error Lỗi xảy ra khi đọc hồ sơ máy chủ - + Could not read server-profiles list Không thể đọc được hồ sơ của máy chủ - - + + Save Server-Profile-File Error Lỗi xảy ra khi lưu tập tin về hồ sơ máy chủ - - + + Could not save server-profiles-file: %1 @@ -3981,12 +4040,12 @@ Bạn có muốn ghi đè lên hồ sơ này không? manualBlindsOrderDialogImpl - + Manual Blinds Order Thứ tự chỉnh tiền cược tự chỉnh - + You cannot set more than 30 manual blinds. Bạn không thể tăng số lượng lên 30. @@ -4109,38 +4168,38 @@ Bạn có muốn ghi đè lên hồ sơ này không? selectAvatarDialogImpl - - - + + + Avatar File Error Lỗi đối với tập tin hình đại diện - + Please select an avatar from the list! Hãy lựa chọn một hình đại diện từ danh sách ! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! Kích cỡ của hình đại diện được chọn quá lớn (tối đa là 30KB) Xin vui lòng chọn một hình đại diện có kích thước nhỏ hơn! - + The entered avatar picture doesn't exist. Please enter an valid picture! Hình đại diện tự chọn không tồn tại. Hãy chọn một hình đại diện đúng kiểu với hệ thống! - + Select external avatar picture Lựa chọn hình đại diện tùy thích - + Images (*.png *.jpg *.gif) Hình ảnh (có kiểu tập tin là *png *jpg *gif) @@ -4202,7 +4261,7 @@ Hãy chọn một hình đại diện đúng kiểu với hệ thống!Màn chơi hệ thống offline/online - + Switch keyboard focus to bet-input-field if it's your turn Chuyển đổi sang dùng bàn phím để nhận lệnh khi đến lượt @@ -4210,14 +4269,14 @@ Hãy chọn một hình đại diện đúng kiểu với hệ thống! - + Sound Âm thanh - + Factory Settings Thiết lập ban đầu @@ -4234,79 +4293,84 @@ Hãy chọn một hình đại diện đúng kiểu với hệ thống!Tắt logo trò chơi khi khởi động - + Show country flag in the corner of avatar Hiển thị quốc kỳ cho mỗi quốc gia bên cạnh hình đại diện - + Activate the "accidentally call after big raise" blocker Bật tính năng "vô tình cược sau khi tăng tiền cược" - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Game Table Bàn chơi bài - - - - + + + + Description Mô tả - - - - + + + + Maintainer Người duy trì - - - + + + State Trạng thái - - + + Card Deck Mặt trong lá bài - - + + Card Back Mặt trước lá bài - - + + Use card back from card style Sử dụng mặt sau lá bài từ kiểu lá bài - - + + Use custom card back picture: Sử dụng kiểu lá bài tự chọn cho mặt sau lá bài: @@ -4329,186 +4393,186 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-style:italic;">Chú ý: Chất lượng hiển thị hình ảnh tốt nhất với tỉ lệ </span><span style=" font-family:'Nimbus Sans L'; font-size:10pt; font-weight:600; font-style:italic;">chiều rộng=48, chiều cao=76.</span></p></td></tr></table></body></html> - - + + Play sound effects Bật hiệu ứng âm thanh - - + + Sound Volume: Âm lượng âm thanh: - - + + 10 10 - - + + Sound Categories Phân loại âm thanh - - + + Play game actions sounds like "check", "call", "raise" Bật âm thanh với các thao tác "giữ nguyên mức cược", "cược", "tăng cược" - - + + Play lobby chat notifications Bật âm thanh thông báo về tin nhắn trong phần tán gẫu - - + + Play network/internet game notifications like "player joined the game" Bật âm thanh thông báo người chơi tham gia vào màn trong trong phần chơi mạng offline/online - + Local Game Settings Thiết lập Màn Chơi Đơn - - + + Number of players: Số lượng người chơi: - - - - + + + + Start Cash: Tiền cược ban đầu: - - - - - - - - + + + + + + + + $ $ - - - - + + + + First small blind: Tiền cược nhỏ ban đầu: - - - - + + + + Raise blinds: Tăng tiền cược: - - - - - - - - + + + + + + + + Every: Mỗi: - - - - + + + + hands lượt - - - - + + + + minutes phút - - - - + + + + Raise mode: Chế độ tăng: - - - - + + + + Always double blinds Luôn gấp đôi tỉ lệ tiền cược - - - - + + + + Manual blinds order: Thứ tự tự chỉnh tiền cược: - - - - + + + + Edit ... Chỉnh sửa... - - + + Game Speed: Tốc độ màn chơi: - - + + Pause between hands (press "start" button to go on) Tạm dừng sau mỗi lượt (click chuột vào "bắt đầu" để tiếp tục màn chơi) - - + + Show game settings dialog on every new game Hiển thị cửa sổ thông báo mỗi khi tạo một màn chơi mới - + Network Game Settings Thiết lập màn chơi mạng offline - - + + Maximum number of players: Số lượng người chơi tối đa: - - + + Timeout for player action: Thời gian cho mỗi người chơi: @@ -4557,14 +4621,14 @@ p, li { white-space: pre-wrap; } Xóa - - + + Reset all settings to default ... Đưa tất cả thiết lập trở về ban đầu... - - + + Note: You can not reset all settings to default during a running game! Chú ý: Bạn không thể thiết lập toàn bộ các điều chỉnh khi một màn chơi nào đó đang diễn ra! @@ -4573,66 +4637,71 @@ p, li { white-space: pre-wrap; } Tập tin Nhật Ký - - - - + + + + s giây - - + + Network Server Settings Thiết lập máy chủ mạng offline - - - - + + + + Server Port: Cổng Server: - - - - - - Use SCTP - Sử dụng giao thức SCTP - - - - - - - Use IPv6 - Sử dụng IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">Đây là gì?</a> - + Use SCTP + Sử dụng giao thức SCTP + + + + + + + Use IPv6 + Sử dụng IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">Đây là gì?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">Đây là gì?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings Thiết lập màn chơi online - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4643,61 +4712,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Chú Ý: Mặc định </span><span style=" font-weight:600; font-style:italic;">Thiết lập màn chơi</span><span style=" font-style:italic;"> gồm "Số lượng người chơi tối đa", "Số tiền cược ban đầu" và "tiền cược nhỏ" sẽ được sử dụng </span><span style=" font-weight:600; font-style:italic;">từ phần thiết lập màn chơi mạng offline.</span></p></body></html> - - + + Server Address: Địa chỉ máy chủ: - - + + Use password for private game: Sử dụng mật khẩu đối với màn chơi riêng: - - + + Computer Engine Người chơi ảo/máy tạo ra - - + + Opponent 6: Đối thủ 6: - - + + Opponent 5: Đối thủ 5: - - + + Opponent 4: Đối thủ 4: - - + + Opponent 3: Đối thủ 3: - - + + Opponent 2: Đối thủ 2: - - + + Opponent 1: Đối thủ 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4708,50 +4777,50 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Chú ý: Hình đại diện có độ hiển thị tốt nhất với </span><span style=" font-weight:600; font-style:italic;">chiều rộng=50, chiều cao=50.</span></p></body></html> - - + + Enable/Disable Logging Bật/Tắt chế độ Nhật Ký - - + + Log File Directory: Thư mục lưu tập tin Nhật Ký: - - + + Write log after every: Lưu thông tin Nhật Ký mỗi: - - + + action (high frequent disc access) thao tác chơi (đòi hỏi việc xử lý thông tin trên ổ đĩa thường xuyên) - - + + hand (medium disc access) lượt chơi (truy cập ổ đĩa hệ thống ở mức trung bình) - - + + game (low disc access) màn chơi (thao tác với ổ đĩa hệ thống ở mức thấp) - + Log Messages Nội dung Nhật Ký - + Player Nicks/Avatars Người chơi / Hình đại diện @@ -4766,59 +4835,59 @@ p, li { white-space: pre-wrap; } Hiển thị hộp công cụ bên trái - - + + Play blind raise notification Bật tính năng thông báo mỗi khi tăng tiền cược - - + + Automatic Server Configuration URL Tự động thiết lập đường dẫn URL tự động - - + + Serverlist Address: Danh sách địa chỉ máy chủ: - - + + Manual Server Configuration Thiết lập máy chủ tùy chỉnh - - + + Allow spectators to watch the game - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: Lưu các tập tin Nhật Ký mỗi: - - + + Day(s) Ngày @@ -4853,20 +4922,20 @@ p, li { white-space: pre-wrap; } Hiển thị cửa sổ tính toán cơ hội - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: Máy chủ hình đại diện: - + Style Kiểu @@ -4876,33 +4945,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style Không dịch các chuỗi như check, call, tăng từ kiểu đồ họa của bàn chơi bài - - - - - - Add ... - Thêm... - + Add ... + Thêm... + + + + + + Remove Loại bỏ - - - - + + + + Preview - Information: Xem trước - thông tin: - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4915,8 +4984,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Chọn một kiểu bàn chơi bài mới ...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4929,7 +4998,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">Chọn kiểu mới cho lá bài ...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4948,107 +5017,107 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">Chú ý: Chất lượng hình ảnh được hiển thị tốt nhất với </span><span style=" font-weight:600; font-style:italic;">chiều rộng=48, chiều cao=76.</span></p></td></tr></table></body></html> - - + + Delay between hands: Thời gian chờ mỗi lượt: - - + + Server Máy chủ - - + + Server Password: - - + + Game Màn chơi - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: Tên màn chơi mặc định: - - + + Default game type: Thể loại màn chơi mặc định: - - + + Standard Tiêu chuẩn - - + + Registered players only Chỉ dành cho người dùng đã đăng ký - - + + Invited players only Chỉ dành cho người chơi được mời - - + + Ranking game Màn chơi được xếp hạng trên hệ thống máy chủ - + Show lobby chat Hiển thị mục tán gẫu ở phòng chờ - - + + Automatically leave the table after the game finished Tự động rời khỏi bàn khi màn chơi kết thúc - - + + Ignored Players Bỏ qua người chơi - - + + Player Người chơi - - + + Remove Player Loại bỏ người chơi - + OK - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -5061,20 +5130,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Người chơi:<br /><span style=" font-style:italic;">(Tên đại diện này cũng sẽ được sử dụng khi bắt đầu màn chơi online)</span></p></body></html> - - + + Opponent 7: Đối thủ 7: - - + + Opponent 8: Đối thủ 8: - - + + Opponent 9: Đối thủ 9: @@ -5082,65 +5151,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error Lỗi thiết lập - + The entered flipside picture doesn't exist. Please enter an valid picture! Bạn đã chọn một hình ảnh không hề tồn tại. Hãy chọn một hình ảnh đúng với định dạng! - - + + The log file directory doesn't exist. Please select an valid directory! Thư mục chứa tập tin nhật ký không tồn tại. Hãy chọn một thư mục khác! - + Language Changed Ngôn ngữ đã thay đổi - + You have changed application language to %1. Please restart PokerTH to load new language! Bạn vừa thay đổi giao diện ngôn ngữ của chương trình thành tiếng %1. Hãy khởi động lại chương trình để áp dụng sự thay đổi này! - + Select your flipside picture Lựa chọn hình ảnh flipside - + Images (*.png *.jpg *.gif) Định dạng (*.png *.jpg *.gif) - + Open Directory Mở thư mục - - + + Blinds Error Lỗi tăng tiền cược - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5149,291 +5218,291 @@ là nhỏ hơn tỉ lệ cược hiện tại! Tỉ lệ cược nhỏ này sẽ được chỉnh lên mức tối đa cho phép. - + The entered server list address is not a valid URL. Please enter a valid server list address! Bạn vừa nhập vào địa chỉ máy chủ không hợp lệ. Hãy nhập vào một địa chỉ đúng! - + Afrikaans Afrikaans - + Bulgarian Bulgarian - + Catalan Catalan - + Chinese Cẩu khựa - ba tàu - + Czech Czech - + Danish Danish - + Dutch Đức - + English Anh - + Finnish Phần Lan - + French Pháp - + Galician - + German Đức - + Greek Hy Lạp - + Hungarian Hungarian - + Italian Ý - + Japanese Nhật - + Lithuania Lithuania - + Norwegian Na Uy - + Polish Ba Lan - + Portuguese-Brazilian Tiếng bồ đào nha của Brazilian - + Portuguese-Portuguese Tiếng bồ đào nha bản địa - + Russian Nga - + Scottish Gaelic - + Slovak Slovak - + Spanish Tây ban nha - + Swedish Thụy điển - + Tamil Tamil - + Turkish Thổ nhĩ kỳ - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! Tên của đấu thủ không được phép trùng lặp. Hãy chọn một tên khác! - + Settings Information Thông tin về thiết lập - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! Bạn vừa lựa chọn một thư mục cho phần Nhật Ký. Hãy khởi động lại chương trình để có thể áp dụng thay đổi này! - - + + Maintainer Name Tên người duy trì - - + + Maintainer EMail Địa chỉ email người duy trì - - + + Create Date Ngày tạo - + Windows Behaviour Cửa sổ hiển thị - + scaleable theo tỉ lệ - + fixed vừa chỉnh - + Minimum Size Kích thước nhỏ nhất - + Maximum Size Kích thước lớn nhất - + Fixed Size Kích cỡ vừa vặn - + State Trạng thái - + Please select your game table style Hãy chọn một kiểu trang trí cho bàn chơi bài - + PokerTH game table styles (*.xml) Định dạng dành cho kiểu trang trí bàn chơi bài (*.xml) - + Game Table Style Error Lỗi đối với định dạng bàn chơi bài - + Selected game table style file is already in the list. Please select another one to add! Kiểu đồ họa của bàn chơi bài vừa chọn đã có trong danh sách. Hãy lựa chọn một kiểu mới để thêm vào! - + Game Table Style File Error Lỗi với tập tin kiểu đồ họa bàn chơi bài - + Could not load game table style file correctly. Style will not be placed into list! Không thể tải được tập tin kiểu đồ họa bàn chơi bài. Kiểu này sẽ không được thêm vào danh sách! - + Please select your card deck style Hãy lựa chọn kiểu đồ họa dành cho lá bài - + PokerTH card deck styles (*.xml) Định dạng của kiểu đồ họa dành cho lá bài (*.xml) - + Card Deck Style Error Lỗi với kiểu đồ họa dành cho lá bài - + Selected card deck style file is already in the list. Please select another one to add! Tập tin của kiểu đồ họa dành cho lá bài đã có trong danh sách. Hãy lựa chọn một tập tin khác để thêm vào! - + Card Deck Style File Error Lỗi xảy ra với kiểu tập tin đồ họa lá bài - + Could not load card deck style file correctly. Style will not be placed into list! Không thể tải được tập tin với kiểu đồ họa lá bài được chọn. @@ -5472,12 +5541,12 @@ Kiểu này sẽ không được thêm vào danh sách! Định dạng nhật ký dạng SQL (*pdb) - + PokerTH - Settings Thiết lập chương trình - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? Chú ý: thao tác này sẽ xóa toàn bộ các thiết lập cá nhân và đóng lại chương trình! @@ -5543,12 +5612,12 @@ Bạn có thật sự muốn áp dụng các thiết lập của chương trình startNetworkGameDialogImpl - + Server Error Lỗi máy chủ - + You should not kick yourself from this game! Bạn không nên tự đuổi mình ra khỏi màn chơi! diff --git a/ts/pokerth_zhcn.ts b/ts/pokerth_zhcn.ts index f8884451..9604246b 100644 --- a/ts/pokerth_zhcn.ts +++ b/ts/pokerth_zhcn.ts @@ -305,106 +305,106 @@ Please select a game table style and try again! - + PokerTH - Delete log files - + Do you really want to delete the selected log files? - + Remove log file - + PokerTH cannot remove this log file, please verify that you have write access to this file! - + Export PokerTH log file to HTML - + PokerTH HTML log (*.html) - + Export PokerTH log file to plain text - + PokerTH plain text log (*.txt) - + Save PokerTH log file 保存 PokerTH 日志文件 - + PokerTH SQL log (*.pdb) PokerTH SQL 日志文件 (*.pdb) - + No file received. - + File rejected because of too many uploads. - + File rejected because of too many recent uploads. Please try again later. - + The file is too large. - + This file is not a valid and current PokerTH log file. - + Internal error. Please try again later. ID: - - + + Uploading log file - + Upload failed. Please check your internet connection! Uploading log files may fail if you are using an http proxy. - + Processing of the log file on the web server failed. Please verify that you are uploading a valid PokerTH log file. - - + + Failure reason: @@ -428,22 +428,60 @@ Please verify that you are uploading a valid PokerTH log file. + Unignore Player + + + + Report inappropriate avatar 举报不讲究的头像 - + + Server response times + + + + + Average: + + + + + + + ms + + + + + Minimum: + + + + + Maximum: + + + + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on ignore list? 你将不会再收到来自这名玩家的消息及游戏邀请.<br>你确定要将玩家 <b>%1</b> 置于无视名单之中吗? - - + + + PokerTH - Question PokerTH - 问题 - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Are you sure you want to report the avatar of "%1" as inappropriate? 你确定要举报 "%1" 的头像为不讲究的头像吗? @@ -712,127 +750,127 @@ p, li { white-space: pre-wrap; } aboutPokerthImpl - + PokerTH %1 for Android (API%2) - + PokerTH %1 PokerTH %1 - + About PokerTH %1 关于 PokerTH %1 - + - Wikimedia Commons: for different popular avatar picture resources - + - Benedikt, Erhard, Felix, Florian, Linus, Lothar, Steffi, Caro: for people avatar pictures - + - ZeiZei: for misc avatar pictures - + - kde-look.org: for different gpl licensed sounds - + - doc_dos: for self recorded chip sounds - + - thiger, dunkanx, BerndA, coldz, drull: for different patches - + - kraut: for internet-game-server hosting and administration - + - danuxi: for startwindow background gfx and danuxi1 table background - + - heyn: for moderating forum and organise bugtracker and feature requests - + - texas_outlaw: for new table sounds - + - Poker engine for the popular Texas Hold'em Poker - + - Singleplayer games with up to 9 computer-opponents - + - Multiplayer network games - + - Internet online games - + - Changeable gui with online style gallery - + - Online ranking website with result tables - + Project page: - + Authors: - + initial idea, basic architecture, gui implementation, gui graphics editing, linux package - + initial idea, basic architecture, engine development - + basic architecture, network development, windows package, MacOS package - + initial gui graphics design @@ -949,12 +987,12 @@ p, li { white-space: pre-wrap; } changeCompleteBlindsDialogImpl - + Manual Blinds Order 手动盲注顺序 - + You cannot set more than 30 manual blinds. 你不能设置超过 30 个手动盲注. @@ -988,48 +1026,48 @@ p, li { white-space: pre-wrap; } changeContentDialogImpl - + You cannot join Internet-Game-Lobby with "Human Player" as nickname. Please choose another one. 你不能以 "Human Player" 作为昵称进入因特网游戏大厅. 请另换一个. - - - + + + Nick name: 昵称: - + Your player name is already used by another player. Please choose a different name. 你的玩家名已被另一玩家使用. 请另换一个. - + The player name is too short, too long or invalid. Please choose another one. 玩家名太短, 太长或无效. 请另换一个. - + There is already a game with your chosen game name. Please choose another one! 你选取的游戏名与一个已存在的游戏重名了. 请另换一个! - + There is a forbidden word in your chosen game name. Please choose another one! 你选取的游戏名中包含禁用字眼. 请另换一个! - - + + Game name: 游戏名: @@ -1057,27 +1095,27 @@ Please choose another one! connectToServerDialogImpl - + Resolving address... 正在解析地址... - + Connecting to server... 正在连接到服务器... - + Starting session... 正在建立会话... - + Connection established! 连接已建立! - + Reading server list... 正在读取服务器列表… @@ -1224,7 +1262,7 @@ Please choose another one! <i>每过 %1 成手将盲注翻倍</i> - + %1's game %1 的游戏 @@ -1530,70 +1568,70 @@ p, li { white-space: pre-wrap; } gameLobbyDialogImpl - + Starting game. Please wait ... 正在开始游戏, 请稍候... - + Joining a private Game 加入一个私人游戏 - + You are about to join a private game. Please enter the password! 你正在加入一个私人游戏. 请输入密码! - + open 开放 - - - - + + + + Game Info 游戏信息 - + Spectate - - + + Game 游戏 - - + + Players 玩家 - - + + State 状态 - - + + P - - + + Available Players 在线的玩家 @@ -1609,39 +1647,44 @@ p, li { white-space: pre-wrap; } + Unignore player + + + + Player infos ... 玩家信息... - + Report inappropriate game name - - - + + + Standard 标准比赛 - - - + + + Registered players only 仅限已注册的玩家的比赛 - - - + + + Invited players only 仅限受邀玩家的比赛 - - - + + + Ranking game 排名赛 @@ -1651,22 +1694,22 @@ p, li { white-space: pre-wrap; } - - + + T - - - + + + sec (action) - - - + + + sec (hand delay) @@ -1675,32 +1718,32 @@ p, li { white-space: pre-wrap; } 已连接的玩家 - 人数上限 %1 - + running 进行中 - - + + running games: %1 进行中的游戏:%1 - - + + open games: %1 开放着的游戏: %1 - - + + Players (%1) - - - + + + Spectators (%1) @@ -1710,90 +1753,90 @@ p, li { white-space: pre-wrap; } 邀请 %1 - + Ignore %1 无视 %1 - + <span style='color:blue;'>%1 has been invited to %2 by %3.</span> <span style='color:blue;'>%3 邀请 %1 加入 %2.</span> - + <span style='color:red;'>%1 has rejected the invitation to %2.</span> <span style='color:red;'>%1 拒绝了加入 %2 的邀请.</span> - + <span style='color:red;'>%1 cannot join %2 because he is busy.</span> <span style='color:red;'>%1 正忙, 无法加入 %2.</span> - + The game will start in<br><b>%1</b> seconds. 游戏将于 <br><b>%1</b> 秒钟后开局. - + You have entered a game with type "invite-only". Feel free to invite other players by right-clicking on their nick in the available players list. 你已加入了一个 "仅限受邀者" 类型的游戏. 你可以按自己的意愿, 右击在线玩家列表中的玩家名以邀请其他玩家. - + You have been invited to the game <b>%1</b> by <b>%2</b>.<br>Would you like to join this game? <b>%2</b> 向你发出了加入游戏 <b>%1</b> 的邀请. 你想加入这个游戏吗? - + You will no longer receive chat messages or game invitations from this user.<br>Do you really want to put player <b>%1</b> on your ignore list? 你将不会再收到来自这名玩家的消息及游戏邀请.<br>你确定要将玩家 <b>%1</b> 置于无视名单之中吗? - - + + connected players: %1 已连接的玩家: %1 - + Waiting for the start of the next hand to rejoin the game ... - + Click here to view the online rankings - - + + Time - - + + Show player stats 显示玩家状态 - - + + Admin action ... - + Total kickban - + Close game @@ -1802,42 +1845,42 @@ Feel free to invite other players by right-clicking on their nick in the availab 已连接的玩家 - + hands 成手 - + minutes 分钟 - + double blinds 双倍盲注 - + manual blinds order 手动盲注顺序 - + Server Error 服务器出错 - + You should not kick yourself from this game! 你不能把自己踢出游戏! - + search for player ... 查找玩家... - + Chat is only available to registered players. 聊天功能仅供已注册玩家使用. @@ -1847,1263 +1890,1279 @@ Feel free to invite other players by right-clicking on their nick in the availab 邀请玩家... - + Ignore player ... 无视玩家... + + + Unignore %1 + + + Unignore player ... + + + + %1 is playing in "%2". %1 正在游戏 "%2" 中玩着. - + %1 is not playing at the moment. %1 目前没在玩. - - + + PokerTH - Info Message PokerTH - 信息提示 - - + + - + + PokerTH - Question PokerTH - 问题 - + + You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? + + + + Afghanistan 阿富汗 - + ALand Islands 奥兰群岛 - + Albania 阿尔巴尼亚 - + Algeria 阿尔及利亚 - + American Samoa 美属萨摩亚 - + Andorra 安道尔 - + Angola 安哥拉 - + Anguilla 安圭拉 - + Antarctica 南极洲 - + Antigua And Barbuda 安提瓜和巴布达 - + Argentina 阿根廷 - + Armenia 亚美尼亚 - + Aruba 阿鲁巴 - + Australia 澳大利亚 - + Austria 奥地利 - + Azerbaijan 阿塞拜疆 - + Bahamas 巴哈马 - + Bahrain 巴林 - + Bangladesh 孟加拉国 - + Barbados 巴巴多斯 - + Belarus 白俄罗斯 - + Belgium 比利时 - + Belize 伯利兹 - + Benin 贝宁 - + Bermuda 百慕大 - + Bhutan 不丹 - + Bolivia 玻利维亚 - + Bosnia And Herzegovina 波斯尼亚 - 黑塞哥维那 - + Botswana 博茨瓦纳 - + Bouvet Island 布维岛 - + Brazil 巴西 - + British Indian Ocean Territory 英属印度洋领地 - + Brunei Darussalam 文莱达鲁萨兰国 - + Bulgaria 保加利亚 - + Burkina Faso 布基纳法索 - + Burundi 布隆迪 - + Cambodia 柬埔寨 - + Cameroon 喀麦隆 - + Canada 加拿大 - + Cape Verde 佛得角 - + Cayman Islands 开曼群岛 - + Central African Republic 中非共和国 - + Chad 乍得 - + Chile 智利 - + China 中国 - + Christmas Island 圣诞岛 - + Cocos (Keeling) Islands 科科斯 (基林) 群岛 - + Colombia 哥伦比亚 - + Comoros 科摩罗 - + Congo 刚果 - + Congo, The Democratic Republic Of The 刚果民主共和国 - + Cook Islands 库克群岛 - + Costa Rica 哥斯达黎加 - + Cote D'Ivoire 科特迪瓦 - + Croatia 克罗地亚 - + Cuba 古巴 - + Cyprus 塞浦路斯 - + Czech Republic 捷克共和国 - + Denmark 丹麦 - + Djibouti 吉布提 - + Dominica 多米尼加 - + Dominican Republic 多米尼加共和国 - + Ecuador 厄瓜多尔 - + Egypt 埃及 - + El Salvador 萨尔瓦多 - + Equatorial Guinea 赤道几内亚 - + Eritrea 厄立特里亚 - + Estonia 爱沙尼亚 - + Ethiopia 埃塞俄比亚 - + Falkland Islands (Malvinas) 福克兰群岛 (马尔维纳斯) - + Faroe Islands 法罗群岛 - + Fiji 斐济 - + Finland 芬兰 - + France 法国 - + French Guiana 法属圭亚那 - + French Polynesia 法属波利尼西亚 - + French Southern Territories 法属南半球和南极领地 - + Gabon 加蓬 - + Gambia 冈比亚 - + Georgia 格鲁吉亚 - + Germany 德国 - + Ghana 加纳 - + Gibraltar 直布罗陀 - + Greece 希腊 - + Greenland 格陵兰 - + Grenada 格林纳达 - + Guadeloupe 瓜德罗普 - + Guam 关岛 - + Guatemala 危地马拉 - + Guernsey 根西岛 - + Guinea 几内亚 - + Guinea-Bissau 几内亚比绍 - + Guyana 圭亚那 - + Haiti 海地 - + Heard Island And Mcdonald Islands 赫德岛和麦克唐纳岛 - + Holy See (Vatican City State) 梵蒂冈 - + Honduras 洪都拉斯 - + Hong Kong 香港 - + Hungary 匈牙利 - + Iceland 冰岛 - + India 印度 - + Indonesia 印度尼西亚 - + Iran, Islamic Republic Of 伊朗伊斯兰共和国 - + Iraq 伊拉克 - + Ireland 爱尔兰 - + Isle Of Man 马恩岛 - + Israel 以色列 - + Italy 意大利 - + Jamaica 牙买加 - + Japan 日本 - + Jersey 泽西岛 - + Jordan 约旦 - + Kazakhstan 哈萨克斯坦 - + Kenya 肯尼亚 - + Kiribati 基里巴斯 - + Korea, Democratic People'S Republic Of 朝鲜民主主义人民共和国 - + Korea, Republic Of 大韩民国 - + Kuwait 科威特 - + Kyrgyzstan 吉尔吉斯斯坦 - + Lao People'S Democratic Republic 老挝人民民主共和国 - + Latvia 拉脱维亚 - + Lebanon 黎巴嫩 - + Lesotho 莱索托 - + Liberia 利比里亚 - + Libyan Arab Jamahiriya 阿拉伯利比亚民众国 - + Liechtenstein 列支敦士登 - + Lithuania 立陶宛 - + Luxembourg 卢森堡 - + Macao 澳门 - + Macedonia, The Former Yugoslav Republic Of 前南斯拉夫的马其顿共和国 - + Madagascar 马达加斯加 - + Malawi 马拉维 - + Malaysia 马来西亚 - + Maldives 马尔代夫 - + Mali 马里 - + Malta 马耳他 - + Marshall Islands 马绍尔群岛 - + Martinique 马提尼克 - + Mauritania 毛里塔尼亚 - + Mauritius 毛里求斯 - + Mayotte 马约特 - + Mexico 墨西哥 - + Micronesia, Federated States Of 密克罗尼西亚联邦 - + Moldova, Republic Of 摩尔多瓦共和国 - + Monaco 摩纳哥 - + Mongolia 蒙古 - + Montserrat 蒙特塞拉特 - + Morocco 摩洛哥 - + Mozambique 莫桑比克 - + Myanmar 缅甸 - + Namibia 纳米比亚 - + Nauru 瑙鲁 - + Nepal 尼泊尔 - + Netherlands 荷兰 - + Netherlands Antilles 荷属安的列斯 - + New Caledonia 新喀里多尼亚 - + New Zealand 新西兰 - + Nicaragua 尼加拉瓜 - + Niger 尼日尔 - + Nigeria 尼日利亚 - + Niue 纽埃 - + Norfolk Island 诺福克岛 - + Northern Mariana Islands 北马里亚纳 - + Norway 挪威 - + Oman 阿曼 - + Pakistan 巴基斯坦 - + Palau 帕劳 - + Palestinian Territory, Occupied 巴勒斯坦国 - + Panama 巴拿马 - + Papua New Guinea 巴布亚新几内亚 - + Paraguay 巴拉圭 - + Peru 秘鲁 - + Philippines 菲律宾 - + Pitcairn 皮特凯恩群岛 - + Poland 波兰 - + Portugal 葡萄牙 - + Puerto Rico 波多黎各 - + Qatar 卡塔尔 - + Reunion 留尼旺 - + Romania 罗马尼亚 - + Russian Federation 俄罗斯联邦 - + Rwanda 卢旺达 - + Saint Helena 圣赫勒拿 - + Saint Kitts And Nevis 圣基茨和尼维斯 - + Saint Lucia 圣卢西亚 - + Saint Pierre And Miquelon 圣皮埃尔和密克隆 - + Saint Vincent And The Grenadines 圣文森特和格林纳丁斯 - + Samoa 萨摩亚 - + San Marino 圣马力诺 - + Sao Tome And Principe 圣多美和普林西比 - + Saudi Arabia 沙特阿拉伯 - + Senegal 塞内加尔 - + Serbia And Montenegro 塞尔维亚和黑山 - + Seychelles 塞舌尔 - + Sierra Leone 塞拉利昂 - + Singapore 新加坡 - + Slovakia 斯洛伐克 - + Slovenia 斯洛文尼亚 - + Solomon Islands 所罗门群岛 - + Somalia 索马里 - + South Africa 南非 - + South Georgia And The South Sandwich Islands 南乔治亚岛和南桑德韦奇岛 - + Spain 西班牙 - + Sri Lanka 斯里兰卡 - + Sudan 苏丹 - + Suriname 苏里南 - + Svalbard And Jan Mayen 斯瓦尔巴岛和扬马延岛 - + Swaziland 斯威士兰 - + Sweden 瑞典 - + Switzerland 瑞士 - + Syrian Arab Republic 阿拉伯叙利亚共和国 - + Taiwan, Province Of China 台湾 - + Tajikistan 塔吉克斯坦 - + Tanzania, United Republic Of 坦桑尼亚联合共和国 - + Thailand 泰国 - + Timor-Leste 东帝汶 - + Togo 多哥 - + Tokelau 托克劳 - + Tonga 汤加 - + Trinidad And Tobago 特立尼达和多巴哥 - + Tunisia 突尼斯 - + Turkey 土耳其 - + Turkmenistan 土库曼斯坦 - + Turks And Caicos Islands 特克斯和凯科斯群岛 - + Tuvalu 图瓦卢 - + Uganda 乌干达 - + Ukraine 乌克兰 - + United Arab Emirates 阿拉伯联合酋长国 - + United Kingdom 大不列颠及北爱尔兰联合王国 - + United States 美利坚合众国 - + United States Minor Outlying Islands 美国本土外小岛屿 - + Uruguay 乌拉圭 - + Uzbekistan 乌兹别克斯坦 - + Vanuatu 瓦努阿图 - + Venezuela 委内瑞拉 - + Viet Nam 越南 - + Virgin Islands, British 英属维尔京群岛 - + Virgin Islands, U.S. 美属维尔京群岛 - + Wallis And Futuna 瓦利斯和富图纳 - + Western Sahara 西撒哈拉 - + Yemen 也门 - + Zambia 赞比亚 - + Zimbabwe 津巴布韦 - + Are you sure you want to report the game name: "%1" as inappropriate? - + Are you sure you want to close the game: "%1"? - + Are you sure you want to total kickban the player: "%1"? @@ -3394,99 +3453,99 @@ Feel free to invite other players by right-clicking on their nick in the availab gameTableImpl - - - - - - - - - - - - - + + + + + + + + + + + + + Stop 停止 - + PokerTH %1 PokerTH %1 - + PokerTH %1 - The Open-Source Texas Holdem Engine PokerTH %1 - 开源德州扑克引擎 - - - - - - - - + + + + + + + + Start 开始 - - - - - + + + + + Lobby 大厅 - - + + Chat 聊天 - + Closing PokerTH during network game 在网络游戏过程中关闭 PokerTH - + You are the hosting server. Do you want to close PokerTH anyway? 你现在是主机. 你还是希望关闭 PokerTH 么? - + Really want to exit? 真的想退出吗? - + PokerTH - Close Table? PokerTH - 关闭赌桌? - + PokerTH - Internet Game Message PokerTH - 因特网游戏消息 - + Attention! Do you really want to leave the current game and go back to the lobby? 注意! 你真的想离开当前的游戏 并返回大厅吗? + - Chat is only available to registered players. 聊天功能仅供已注册玩家使用. - + Spectators @@ -3505,51 +3564,51 @@ If you are temporarily away, you can use the "away" tools in the tool 如果你只是暂时离开, 可以使用右下角工具框提供的 "离开" 工具. - - + + Chance 几率 - - + + Kick 踢出 - - + + Do you want to kick <b>%1</b><br>from this game? 你希望把 <b>%1</b> 踢出这场游戏吗? - - - - + + + + <b>%1</b> secs left <b>%1</b> 秒剩余 - + vote 投票 - + votes 投票 - - + + Player <b>%1</b> has <b>%2</b> %3<br>against him. <b>%4</b> vote(s) needed to kick. "%3" = ( vote == 1 ) ? vote : votes; 已有 %2 票反对玩家 %1, 将其踢出游戏还需要 %4 票. - - + + You have <b>%1</b> %2 against you.<br><b>%3</b> vote(s) needed to kick. "%2" = ( vote == 1 ) ? vote : votes; 已有 %1 票反对你, 再有 %3 人投出反对票的话你就要被踢出游戏了. @@ -3626,7 +3685,7 @@ p, li { white-space: pre-wrap; } internetGameLoginDialogImpl - + Create new user account @@ -3767,10 +3826,10 @@ p, li { white-space: pre-wrap; } joinNetworkGameDialogImpl - - - - + + + + Load Server-Profile-File Error 读取服务器档案文件出错 @@ -3781,45 +3840,45 @@ p, li { white-space: pre-wrap; } - - - - + + + + Could not load server-profiles-file: %1 - + Save Server Profile Error 保存服务器档案出错 - + A profile with the name: %1 already exists. Would you like to overwrite ? 名为 %1 的档案已存在. 是否将其覆盖? - + Read Server-Profile List Error 读取服务器档案列表出错 - + Could not read server-profiles list 无法读取服务器档案列表 - - + + Save Server-Profile-File Error 保存服务器档案文件出错 - - + + Could not save server-profiles-file: %1 @@ -3891,12 +3950,12 @@ Would you like to overwrite ? manualBlindsOrderDialogImpl - + Manual Blinds Order 手动盲注顺序 - + You cannot set more than 30 manual blinds. 你不能设置超过 30 个手动盲注. @@ -4019,38 +4078,38 @@ Would you like to overwrite ? selectAvatarDialogImpl - - - + + + Avatar File Error 头像文件出错 - + Please select an avatar from the list! 请从列表中选择一个头像! - + The file size of the chosen picture is too big. (max. 30KB) Please choose a smaller picture! 选择的图片过大. (上限 30KB) 请另选一个小点的! - + The entered avatar picture doesn't exist. Please enter an valid picture! 输入的头像图片不存在. 请重新输入! - + Select external avatar picture 选择外部头像图片 - + Images (*.png *.jpg *.gif) 图片文件 (*.png *.jpg *.gif) @@ -4112,7 +4171,7 @@ Please enter an valid picture! 网络 / 因特网游戏 - + Switch keyboard focus to bet-input-field if it's your turn 在轮到你时将键盘焦点移至下注输入框 @@ -4120,14 +4179,14 @@ Please enter an valid picture! - + Sound 声音 - + Factory Settings @@ -4144,292 +4203,297 @@ Please enter an valid picture! 启动时不显示养眼画面 (splashscreen) - + Show country flag in the corner of avatar 在头像的一角显示国旗 - + Activate the "accidentally call after big raise" blocker - + Do not hide avatars of players which are on the ignore list - + Disable emoticons in the chat - - + + Show network state color on the avatar + + + + + Game Table 赌桌 - - - - + + + + Description 描述 - - - - + + + + Maintainer 维护人 - - - + + + State 状态 - - + + Card Deck 牌叠 - - + + Card Back 牌背 - - + + Use card back from card style 使用牌叠款式中的牌背 - - + + Use custom card back picture: 使用自选图片作为牌背: - - + + Play sound effects 播放音效 - - + + Sound Volume: 音量: - - + + 10 10 - - + + Sound Categories 声音类别 - - + + Play game actions sounds like "check", "call", "raise" 播放游戏操作提示音, 例如 "过牌", "跟进", "加注" - - + + Play lobby chat notifications 播放大厅聊天提示音 - - + + Play network/internet game notifications like "player joined the game" 播放网络 / 因特网游戏提示音, 例如 "玩家加入游戏" - - + + Server Password: - - + + Allow spectators to watch the game - + OK - + Local Game Settings 本地游戏设置 - - + + Number of players: 玩家数: - - - - + + + + Start Cash: 入场金额: - - - - - - - - + + + + + + + + $ - - - - + + + + First small blind: 首轮小盲注: - - - - + + + + Raise blinds: 加盲注: - - - - - - - - + + + + + + + + Every: 每: - - - - + + + + hands 成手 - - - - + + + + minutes 分钟 - - - - + + + + Raise mode: 加注模式: - - - - + + + + Always double blinds 总是将盲注翻倍 - - - - + + + + Manual blinds order: 手动盲注顺序: - - - - + + + + Edit ... 编辑... - - + + Game Speed: 游戏速度: - - + + Pause between hands (press "start" button to go on) 在两成手之间暂停 (按下 "开始" 按钮继续) - - + + Show game settings dialog on every new game 在每次开始新游戏前显示游戏设置对话框 - + Network Game Settings 网络游戏设置 - - + + Maximum number of players: 玩家数上限: - - + + Timeout for player action: 玩家操作超时: - - + + Reset all settings to default ... - - + + Note: You can not reset all settings to default during a running game! @@ -4454,66 +4518,71 @@ Please enter an valid picture! 日志文件 - - - - + + + + s - - + + Network Server Settings 网络服务器设置 - - - - + + + + Server Port: 服务器端口: - - - - - - Use SCTP - 使用 SCTP - - - - - - - Use IPv6 - 使用 IPv6 - - - - - - - <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> - <a href="http://en.wikipedia.org/wiki/Ipv6">这是什么?</a> - + Use SCTP + 使用 SCTP + + + + + + + Use IPv6 + 使用 IPv6 + + + + + + + <a href="http://en.wikipedia.org/wiki/Ipv6">What is this?</a> + <a href="http://en.wikipedia.org/wiki/Ipv6">这是什么?</a> + + + + + + <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">What is this?</a> <a href="http://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol">这是什么?</a> - + + Show network state color in the corner of the avatar + + + + Internet Game Settings 因特网游戏设置 - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal;"> @@ -4524,61 +4593,61 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">提示: 默认</span><span style=" font-weight:600; font-style:italic;">游戏设置</span><span style=" font-style:italic;"> (例如 "玩家数上限", "入场金额" 及 "小盲注") 将使用</span><span style=" font-weight:600; font-style:italic;">网络游戏的预设值.</span></p></body></html> - - + + Server Address: 服务器地址: - - + + Use password for private game: 为私人游戏使用密码: - - + + Computer Engine 电脑对手 - - + + Opponent 6: 对手 6: - - + + Opponent 5: 对手 5: - - + + Opponent 4: 对手 4: - - + + Opponent 3: 对手 3: - - + + Opponent 2: 对手 2: - - + + Opponent 1: 对手 1: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style="font-weight:400; font-style:normal; text-decoration:none;"> @@ -4589,8 +4658,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">提示: 最佳的头像图片宽高为: </span><span style=" font-weight:600; font-style:italic;">宽度 = 50, 高度 = 50</span></p></body></html> - - + + Enable/Disable Logging 启用 / 禁用日志 @@ -4599,44 +4668,44 @@ p, li { white-space: pre-wrap; } 日志保留天数: - - + + Log File Directory: 日志文件目录: - - + + Write log after every: 日志文件写入时机: - - + + action (high frequent disc access) 每次操作 (高频率磁盘读写) - - + + hand (medium disc access) 每成手 (中等频率磁盘读写) - - + + game (low disc access) 每场游戏 (低频率磁盘读写) - + Log Messages 日志消息 - + Player Nicks/Avatars 玩家昵称 / 头像 @@ -4651,53 +4720,53 @@ p, li { white-space: pre-wrap; } 显示左工具框 - - + + Play blind raise notification - - + + Automatic Server Configuration URL 自动服务器配置 URL - - + + Serverlist Address: 服务器列表地址: - - + + Manual Server Configuration 手动服务器配置 - + Human Player: - + (This nick will also be used for the online game login) - + Note: Best avatar quality with image ratio like width=50, height=50. - - + + Store log files for: - - + + Day(s) @@ -4732,20 +4801,20 @@ p, li { white-space: pre-wrap; } 显示几率监视工具框 - + Note: Best quality with image ratio like width=48, height=76. - - + + Avatar Server: 头像服务器: - + Style 款式 @@ -4755,33 +4824,33 @@ p, li { white-space: pre-wrap; } Don't translate poker strings like check, call, raise from game table style 扑克术语 (如 check, call, raise) 不采用赌桌款式中的翻译 - - - - - - Add ... - 添加... - + Add ... + 添加... + + + + + + Remove 移除 - - - - + + + + Preview - Information: 预览 - 信息 - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4794,8 +4863,8 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://gtstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">获取新款 PokerTH 赌桌...</span></a></p></body></html> - - + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4808,7 +4877,7 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://cdstyles.pokerth.net/"><span style=" text-decoration: underline; color:#0000ff;">获取新款 PokerTH 牌叠...</span></a></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4827,96 +4896,96 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-style:italic;">提示: 最佳的牌背图片宽高为: </span><span style=" font-weight:600; font-style:italic;">宽度 = 48, 高度 = 76.</span></p></td></tr></table></body></html> - - + + Delay between hands: 两成手之间的时间间隔: - - + + Server 服务器 - - + + Game 游戏 - + Note: Default Game Settings like "Maximum number of players", "Start Cash" and "Small Blind" will be used from Network Game Settings. - - + + Default game name: 默认游戏名: - - + + Default game type: 默认游戏类型: - - + + Standard 标准比赛 - - + + Registered players only 仅限已注册的玩家的比赛 - - + + Invited players only 仅限受邀玩家的比赛 - - + + Ranking game 排名赛 - + Show lobby chat 显示大厅聊天 - - + + Automatically leave the table after the game finished - - + + Ignored Players 无视的玩家 - - + + Player 玩家 - - + + Remove Player 移除玩家 - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -4929,20 +4998,20 @@ p, li { white-space: pre-wrap; } <p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">人类玩家:<br /><span style=" font-style:italic;">(此昵称也将用于在线游戏登录)</span></p></body></html> - - + + Opponent 7: 对手 7: - - + + Opponent 8: 对手 8: - - + + Opponent 9: 对手 9: @@ -4950,65 +5019,65 @@ p, li { white-space: pre-wrap; } settingsDialogImpl - - - - - + + + + + Settings Error 设置出错 - + The entered flipside picture doesn't exist. Please enter an valid picture! 输入的牌背图片不存在. 请重新输入! - - + + The log file directory doesn't exist. Please select an valid directory! 日志文件目录不存在. 请重新选择! - + Language Changed 语言已变更 - + You have changed application language to %1. Please restart PokerTH to load new language! 你已经将程序语言变更为 %1. 请重启 PokerTH 以载入新的语言! - + Select your flipside picture 选择牌背图片 - + Images (*.png *.jpg *.gif) 图片文件 (*.png *.jpg *.gif) - + Open Directory 打开目录 - - + + Blinds Error 盲注出错 - - + + The first element in your manual-blinds-list is smaller than current first-small-blind! This first-small-blind-value will be set to maximum allowed value. @@ -5016,290 +5085,290 @@ This first-small-blind-value will be set to maximum allowed value. 首轮小盲注的值将被自动设为所允许的最大值. - + The entered server list address is not a valid URL. Please enter a valid server list address! 输入的服务器列表地址不是一个有效的地址. 请另换一个有效的服务器列表地址! - + Afrikaans 南非语 - + Bulgarian 保加利亚语 - + Catalan 加泰罗尼亚语 - + Chinese 中文 - + Czech 捷克语 - + Danish 丹麦语 - + Dutch 荷兰语 - + English 英语 - + Finnish 芬兰语 - + French 法语 - + Galician - + German 德语 - + Greek 希腊语 - + Hungarian 匈牙利语 - + Italian 意大利语 - + Japanese 日语 - + Lithuania 立陶宛语 - + Norwegian 挪威语 - + Polish 波兰语 - + Portuguese-Brazilian 巴西葡萄牙语 - + Portuguese-Portuguese 葡萄牙语 - + Russian 俄语 - + Scottish Gaelic - + Slovak 斯洛伐克语 - + Spanish 西班牙语 - + Swedish 瑞典语 - + Tamil 泰米尔语 - + Turkish 土耳其语 - + Vietnamese - + The opponent names are not unique. Please choose different names for each Opponent! - + Settings Information - + You have changed the log file directory. Please restart PokerTH to use the new directory for the log files! - - + + Maintainer Name 维护人姓名 - - + + Maintainer EMail 维护人电子邮箱 - - + + Create Date 创建日期 - + Windows Behaviour 窗口能动性 - + scaleable 可缩放式 - + fixed 固定式 - + Minimum Size 最小尺寸 - + Maximum Size 最大尺寸 - + Fixed Size 固定尺寸 - + State 状态 - + Please select your game table style 请选择赌桌款式 - + PokerTH game table styles (*.xml) PokerTH 赌桌款式文件 (*.xml) - + Game Table Style Error 赌桌款式出错 - + Selected game table style file is already in the list. Please select another one to add! 选定的赌桌款式文件在列表里已经有了. 请另选一个! - + Game Table Style File Error 赌桌款式文件出错 - + Could not load game table style file correctly. Style will not be placed into list! 无法正确加载赌桌款式文件. 赌桌款式将不会被放入列表中! - + Please select your card deck style 请选择牌叠款式 - + PokerTH card deck styles (*.xml) PokerTH 牌叠款式文件 (*.xml) - + Card Deck Style Error 牌叠款式出错 - + Selected card deck style file is already in the list. Please select another one to add! 选定的牌叠款式文件在列表里已经有了. 请另选一个! - + Card Deck Style File Error 牌叠款式文件出错 - + Could not load card deck style file correctly. Style will not be placed into list! 无法正确加载牌叠款式文件. @@ -5322,12 +5391,12 @@ Style will not be placed into list! PokerTH SQL 日志文件 (*.pdb) - + PokerTH - Settings - + Attention: this will delete all your personal settings and close PokerTH! Do you really want to reset factory settings? @@ -5392,12 +5461,12 @@ Do you really want to reset factory settings? startNetworkGameDialogImpl - + Server Error 服务器出错 - + You should not kick yourself from this game! 你不能把自己踢出游戏! From 08b8ca76956628725614cd91ad722dd8475c766f Mon Sep 17 00:00:00 2001 From: Miguel Revilla Date: Thu, 19 Dec 2013 02:29:30 +0100 Subject: [PATCH 128/128] Updated Spanish translation to 1.1 final --- ts/pokerth_es.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ts/pokerth_es.ts b/ts/pokerth_es.ts index 57bb766d..d3d19492 100644 --- a/ts/pokerth_es.ts +++ b/ts/pokerth_es.ts @@ -574,7 +574,7 @@ Compruebe que está subiendo un archivo de registro válido. Unignore Player - + No ignorar jugador @@ -584,29 +584,29 @@ Compruebe que está subiendo un archivo de registro válido. Server response times - + Tiempos de respuesta del servidor Average: - + Media: ms - + ms Minimum: - + Mínimo: Maximum: - + Máximo: @@ -623,7 +623,7 @@ Compruebe que está subiendo un archivo de registro válido. You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? - + Volverá a recibir mensajes de charla e invitaciones de partidas de este jugador.<br>¿Seguro que desea eliminar al jugador <b>%1</b> de la lista de ignorados? @@ -3766,7 +3766,7 @@ p, li { white-space: pre-wrap; } Unignore player - + No ignorar jugador @@ -5161,7 +5161,7 @@ p, li { white-space: pre-wrap; } You will receive chat messages and game invitations from this user again!<br>Do you really want to remove player <b>%1</b> from your ignore list? - + Volverá a recibir mensajes de charla e invitaciones de partidas de este jugador.<br>¿Seguro que desea eliminar al jugador <b>%1</b> de la lista de ignorados? @@ -5232,12 +5232,12 @@ Puede invitar a otros jugadores pulsando con el botón derecho sobre su apodo en Unignore %1 - + No ignorar a %1 Unignore player ... - + No ignorar jugador... @@ -6791,7 +6791,7 @@ p, li { white-space: pre-wrap; } Show network state color in the corner of the avatar - + Mostrar color con el estado de la red en la esquina del avatar @@ -7479,7 +7479,7 @@ p, li { white-space: pre-wrap; } Show network state color on the avatar - + Mostrar color con el estado de la red en el avatar